---
description: Unofficial Capacitor plugin for Google ML Kit Translation SDK to translate text between languages with support for Android and iOS.
title: Capacitor ML Kit Translation Plugin for Android & iOS - Capawesome
image: https://capawesome.io/docs/assets/images/social/sdks/capacitor/mlkit/translation.png
---

<!doctype html> 

[Skip to content ](#capacitor-ml-kit-translation-plugin) 

[🔐 Introducing the **Capacitor Vault** plugin — store secrets behind biometrics or a device passcode. ](/blog/announcing-the-capacitor-vault-plugin/) 

* [ SDKs ](/docs/sdks/)
* [ Formbricks ](/docs/sdks/capacitor/formbricks/)
* [ Geocoder ](/docs/sdks/capacitor/geocoder/)
* [ Google Sign-In ](/docs/sdks/capacitor/google-sign-in/)
* [ Grafana Faro ](/docs/sdks/capacitor/grafana-faro/)
* [ Gyroscope ](/docs/sdks/capacitor/gyroscope/)
* [ Haptics ](/docs/sdks/capacitor/haptics/)
* [ Home Indicator ](/docs/sdks/capacitor/home-indicator/)
* [ In-App Browser ](/docs/sdks/capacitor/in-app-browser/)
* [ Install Referrer ](/docs/sdks/capacitor/install-referrer/)
* [ Keep Awake ](/docs/sdks/capacitor/keep-awake/)
* [ libSQL ](/docs/sdks/capacitor/libsql/)
* [ Light Sensor ](/docs/sdks/capacitor/light-sensor/)
* [ Live Update ](/docs/sdks/capacitor/live-update/)
* [ Localization ](/docs/sdks/capacitor/localization/)
* [ Mail Composer ](/docs/sdks/capacitor/mail-composer/)
* [ Managed Configurations ](/docs/sdks/capacitor/managed-configurations/)
* [ Maps Launcher ](/docs/sdks/capacitor/maps-launcher/)
* [ Media Session ](/docs/sdks/capacitor/media-session/)
* [ ML Kit ](/docs/sdks/capacitor/mlkit/)
* [ iOS ](#ios)
* [ Configuration ](#configuration)
* [ Demo ](#demo)
* [ Usage ](#usage)
* [ API ](#api)
* [ Enums ](#enums)
* [ FAQ ](#faq)
* [ Related Plugins ](#related-plugins)
* [ Terms & Privacy ](#terms-privacy)
* [ Newsletter ](#newsletter)
* [ Changelog ](#changelog)
* [ License ](#license)
* [ Navigation Bar ](/docs/sdks/capacitor/navigation-bar/)
* [ Network ](/docs/sdks/capacitor/network/)
* [ NFC ](/docs/sdks/capacitor/nfc/)
* [ Node.js ](/docs/sdks/capacitor/nodejs/)
* [ OAuth ](/docs/sdks/capacitor/oauth/)
* [ Passkeys ](/docs/sdks/capacitor/passkeys/)
* [ Password Autofill ](/docs/sdks/capacitor/password-autofill/)
* [ PDF Generator ](/docs/sdks/capacitor/pdf-generator/)
* [ PDF Viewer ](/docs/sdks/capacitor/pdf-viewer/)
* [ Pedometer ](/docs/sdks/capacitor/pedometer/)
* [ Permissions ](/docs/sdks/capacitor/permissions/)
* [ Phone Dialer ](/docs/sdks/capacitor/phone-dialer/)
* [ Photo Editor ](/docs/sdks/capacitor/photo-editor/)
* [ Photo Manipulator ](/docs/sdks/capacitor/photo-manipulator/)
* [ PixLive ](/docs/sdks/capacitor/pixlive/)
* [ PostHog ](/docs/sdks/capacitor/posthog/)
* [ Printer ](/docs/sdks/capacitor/printer/)
* [ Privacy Screen ](/docs/sdks/capacitor/privacy-screen/)
* [ Proximity Sensor ](/docs/sdks/capacitor/proximity-sensor/)
* [ Purchases ](/docs/sdks/capacitor/purchases/)
* [ RealtimeKit ](/docs/sdks/capacitor/realtimekit/)
* [ Root Detection ](/docs/sdks/capacitor/root-detection/)
* [ Screen Brightness ](/docs/sdks/capacitor/screen-brightness/)
* [ Screen Orientation ](/docs/sdks/capacitor/screen-orientation/)
* [ Screen Reader ](/docs/sdks/capacitor/screen-reader/)
* [ Screenshot ](/docs/sdks/capacitor/screenshot/)
* [ Secure Preferences ](/docs/sdks/capacitor/secure-preferences/)
* [ Settings Launcher ](/docs/sdks/capacitor/settings-launcher/)
* [ Shake ](/docs/sdks/capacitor/shake/)
* [ Silent Mode ](/docs/sdks/capacitor/silent-mode/)
* [ SIM ](/docs/sdks/capacitor/sim/)
* [ SMS Composer ](/docs/sdks/capacitor/sms-composer/)
* [ Speech Recognition ](/docs/sdks/capacitor/speech-recognition/)
* [ Speech Synthesis ](/docs/sdks/capacitor/speech-synthesis/)
* [ Share Target ](/docs/sdks/capacitor/share-target/)
* [ Square Mobile Payments ](/docs/sdks/capacitor/square-mobile-payments/)
* [ SQLite ](/docs/sdks/capacitor/sqlite/)
* [ Superwall ](/docs/sdks/capacitor/superwall/)
* [ System WebView ](/docs/sdks/capacitor/system-webview/)
* [ Text Interaction ](/docs/sdks/capacitor/text-interaction/)
* [ Text Zoom ](/docs/sdks/capacitor/text-zoom/)
* [ Thermal State ](/docs/sdks/capacitor/thermal-state/)
* [ Toast ](/docs/sdks/capacitor/toast/)
* [ Torch ](/docs/sdks/capacitor/torch/)
* [ Vault ](/docs/sdks/capacitor/vault/)
* [ Volume ](/docs/sdks/capacitor/volume/)
* [ Wallet ](/docs/sdks/capacitor/wallet/)
* [ Wifi ](/docs/sdks/capacitor/wifi/)
* [ Zip ](/docs/sdks/capacitor/zip/)
* [ Cordova ](/docs/sdks/cordova/)
* [ Cloud ](/docs/cloud/)
* [ Integrations ](/docs/cloud/live-updates/integrations/)
* Concepts
* Reference
* [ Troubleshooting ](/docs/cloud/live-updates/troubleshooting/)
* [ FAQ ](/docs/cloud/live-updates/faq/)
* [ Native Builds ](/docs/cloud/native-builds/)
* [ Set Up Environments ](/docs/cloud/native-builds/environments/)
* [ Overwrite Native Configurations ](/docs/cloud/native-builds/native-configurations/)
* [ Auto-Increment Build Numbers ](/docs/cloud/native-builds/auto-incrementing-build-numbers/)
* [ Configure the Web Build Script ](/docs/cloud/native-builds/web-build-script/)
* [ Build from a Monorepo ](/docs/cloud/native-builds/monorepo/)
* [ Use pnpm, Yarn, or bun ](/docs/cloud/native-builds/package-managers/)
* [ Install Private npm Packages ](/docs/cloud/native-builds/npm-private-registry/)
* [ Override the Java Version ](/docs/cloud/native-builds/override-java-version/)
* [ Custom iOS Provisioning Profiles ](/docs/cloud/native-builds/custom-ios-provisioning-profiles/)
* [ Build without Git ](/docs/cloud/native-builds/build-without-git/)
* [ Access Git Behind a Firewall ](/docs/cloud/native-builds/firewall-access/)
* [ Integrations ](/docs/cloud/native-builds/integrations/)
* Reference
* [ Troubleshooting ](/docs/cloud/native-builds/troubleshooting/)
* [ FAQ ](/docs/cloud/native-builds/faq/)
* [ App Store Publishing ](/docs/cloud/app-store-publishing/)
* [ Submit a Build ](/docs/cloud/app-store-publishing/submit-a-build/)
* [ Submit Automatically After a Build ](/docs/cloud/app-store-publishing/submit-automatically/)
* [ Troubleshooting ](/docs/cloud/app-store-publishing/troubleshooting/)
* [ FAQ ](/docs/cloud/app-store-publishing/faq/)
* [ Automations ](/docs/cloud/automations/)
* [ Reference ](/docs/cloud/automations/reference/)
* [ Troubleshooting ](/docs/cloud/automations/troubleshooting/)
* [ FAQ ](/docs/cloud/automations/faq/)
* [ Assist ](/docs/cloud/assist/)
* [ CLI ](/docs/cloud/cli/)
* APIs and SDKs
* [ Webhooks ](/docs/cloud/webhooks/)
* [ Integrations ](/docs/cloud/integrations/)
* Account
* [ Organization ](/docs/cloud/organizations/)
* [ Two-Factor Enforcement ](/docs/cloud/organizations/two-factor-authentication/)
* [ Audit Logs ](/docs/cloud/organizations/audit-logs/)
* [ Billing ](/docs/cloud/organizations/billing/)
* [ License Keys ](/docs/cloud/license-keys/)
* [ AI ](/docs/ai/)
* [ Insiders ](/docs/insiders/)
* [ Billing & Plans ](/docs/insiders/billing-and-plans/)
* [ FAQ ](/docs/insiders/faq/)
* [ License ](https://capawesome.io/legal/eula/)
* [ Support ](/docs/support/)
* [ Contributing ](/docs/contributing/)
* Contributing code
* [ Code of Conduct ](/docs/contributing/code-of-conduct/)
* [ Questions ](https://docs.github.com/en/discussions/collaborating-with-your-community-using-discussions/participating-in-a-discussion#creating-a-discussion)
* [ Blog ](/blog/)
* Categories

* [ iOS ](#ios)
* [ Configuration ](#configuration)
* [ Demo ](#demo)
* [ Usage ](#usage)
* [ API ](#api)
* [ Enums ](#enums)
* [ FAQ ](#faq)
* [ Related Plugins ](#related-plugins)
* [ Terms & Privacy ](#terms-privacy)
* [ Newsletter ](#newsletter)
* [ Changelog ](#changelog)
* [ License ](#license)

# Capacitor ML Kit Translation Plugin[¶](#capacitor-ml-kit-translation-plugin "Permanent link")

Unofficial Capacitor plugin for [ML Kit Translation](https://developers.google.com/ml-kit/language/translation).[1](#fn:1)

[ ![Deliver Live Updates to your Capacitor app with Capawesome Cloud](../../../../assets/external/cloud.capawesome.io/assets/banners/cloud-build-and-deploy-capacitor-apps.69628c3f.png) ](https://cloud.capawesome.io/) 

## Use Cases[¶](#use-cases "Permanent link")

The Translation plugin is typically used to translate text directly on the device, for example:

* **Chat translation**: Translate incoming messages into the language of the user.
* **Content translation**: Let users translate user-generated content such as comments, reviews, or posts.
* **Offline translation**: Download language models in advance so users can translate text without an internet connection.
* **Travel apps**: Help travelers translate text on the go, even when roaming without a data connection.

## Compatibility[¶](#compatibility "Permanent link")

| Plugin Version | Capacitor Version | Status         |
| -------------- | ----------------- | -------------- |
| 8.x.x          | \>=8.x.x          | Active support |
| 7.x.x          | 7.x.x             | Deprecated     |
| 6.x.x          | 6.x.x             | Deprecated     |
| 5.x.x          | 5.x.x             | Deprecated     |

## Installation[¶](#installation "Permanent link")

You can use our **AI-Assisted Setup** to install the plugin. Add the [Capawesome Skills](https://github.com/capawesome-team/skills) to your AI tool using the following command:

`[](#%5F%5Fcodelineno-0-1)npx skills add capawesome-team/skills --skill capacitor-plugins
`

Then use the following prompt:

`` [](#%5F%5Fcodelineno-1-1)Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capacitor-mlkit/translation` plugin in my project.
 ``

If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below:

`[](#%5F%5Fcodelineno-2-1)npm install @capacitor-mlkit/translation
[](#%5F%5Fcodelineno-2-2)npx cap sync
`

**Attention**: This plugin **only supports CocoaPods** for iOS dependency management. Swift Package Manager (SPM) is not supported for the ML Kit SDK, see [this comment](https://github.com/googlesamples/mlkit/issues/180#issuecomment-1298964099).

### Android[¶](#android "Permanent link")

#### Variables[¶](#variables "Permanent link")

If needed, you can define the following project variable in your app’s `variables.gradle` file to change the default version of the dependency:

* `$mlkitTranslateVersion` version of `com.google.mlkit:translate` (default: `17.0.3`)

This can be useful if you encounter dependency conflicts with other plugins in your project.

### iOS[¶](#ios "Permanent link")

#### Minimum Deployment Target[¶](#minimum-deployment-target "Permanent link")

Make sure to set the deployment target in your `ios/App/Podfile` to at least `15.5`:

`[](#%5F%5Fcodelineno-3-1)platform :ios, '15.5'
`

## Configuration[¶](#configuration "Permanent link")

No configuration required for this plugin.

## Demo[¶](#demo "Permanent link")

A working example can be found here: [robingenz/capacitor-mlkit-plugin-demo](https://github.com/robingenz/capacitor-mlkit-plugin-demo)

## Usage[¶](#usage "Permanent link")

The following examples show how to translate a text, download a language model, list the downloaded language models, and delete a downloaded language model.

### Translate a text[¶](#translate-a-text "Permanent link")

Use the `translate(...)` method to translate a text from a source language to a target language. If the language model for the given languages is not downloaded yet, it will be downloaded automatically, which may take some time. Only available on Android and iOS:

`[](#%5F%5Fcodelineno-4-1)import { Translation, Language } from '@capacitor-mlkit/translation';
[](#%5F%5Fcodelineno-4-2)
[](#%5F%5Fcodelineno-4-3)const translate = async () => {
[](#%5F%5Fcodelineno-4-4)  const { text } = await Translation.translate({
[](#%5F%5Fcodelineno-4-5)    text: 'Good morning!',
[](#%5F%5Fcodelineno-4-6)    sourceLanguage: Language.English,
[](#%5F%5Fcodelineno-4-7)    targetLanguage: Language.German,
[](#%5F%5Fcodelineno-4-8)  });
[](#%5F%5Fcodelineno-4-9)  return text;
[](#%5F%5Fcodelineno-4-10)};
`

### Download a language model[¶](#download-a-language-model "Permanent link")

Download a language model in advance to enable offline translation. Language models are around 30MB in size, so be sure to only download the models you need and only download them using a WiFi connection unless the user has specified otherwise. Only available on Android and iOS:

`[](#%5F%5Fcodelineno-5-1)import { Translation, Language } from '@capacitor-mlkit/translation';
[](#%5F%5Fcodelineno-5-2)
[](#%5F%5Fcodelineno-5-3)const downloadModel = async () => {
[](#%5F%5Fcodelineno-5-4)  await Translation.downloadModel({
[](#%5F%5Fcodelineno-5-5)    language: Language.English,
[](#%5F%5Fcodelineno-5-6)  });
[](#%5F%5Fcodelineno-5-7)};
`

### List the downloaded language models[¶](#list-the-downloaded-language-models "Permanent link")

Get the languages for which a model has already been downloaded to the device. Only available on Android and iOS:

`[](#%5F%5Fcodelineno-6-1)import { Translation } from '@capacitor-mlkit/translation';
[](#%5F%5Fcodelineno-6-2)
[](#%5F%5Fcodelineno-6-3)const getDownloadedModels = async () => {
[](#%5F%5Fcodelineno-6-4)  const { languages } = await Translation.getDownloadedModels();
[](#%5F%5Fcodelineno-6-5)  return languages;
[](#%5F%5Fcodelineno-6-6)};
`

### Delete a downloaded language model[¶](#delete-a-downloaded-language-model "Permanent link")

Delete the language model for a given language, for example to free up storage space on the device. Only available on Android and iOS:

`[](#%5F%5Fcodelineno-7-1)import { Translation, Language } from '@capacitor-mlkit/translation';
[](#%5F%5Fcodelineno-7-2)
[](#%5F%5Fcodelineno-7-3)const deleteDownloadedModel = async () => {
[](#%5F%5Fcodelineno-7-4)  await Translation.deleteDownloadedModel({
[](#%5F%5Fcodelineno-7-5)    language: Language.English,
[](#%5F%5Fcodelineno-7-6)  });
[](#%5F%5Fcodelineno-7-7)};
`

## API[¶](#api "Permanent link")

* [deleteDownloadedModel(...)](#deletedownloadedmodel)
* [downloadModel(...)](#downloadmodel)
* [getDownloadedModels()](#getdownloadedmodels)
* [translate(...)](#translate)
* [Interfaces](#interfaces)
* [Enums](#enums)

### deleteDownloadedModel(...)[¶](#deletedownloadedmodel "Permanent link")

`[](#%5F%5Fcodelineno-8-1)deleteDownloadedModel(options: DeleteDownloadedModelOptions) => Promise<void>
`

Delete the language model for the given language.

Only available on Android and iOS.

| Param       | Type                                                          |
| ----------- | ------------------------------------------------------------- |
| **options** | [DeleteDownloadedModelOptions](#deletedownloadedmodeloptions) |

**Since:** 0.0.1

---

### downloadModel(...)[¶](#downloadmodel "Permanent link")

`[](#%5F%5Fcodelineno-9-1)downloadModel(options: DownloadModel) => Promise<void>
`

Download a language model for offline translation.

Language models are around 30MB in size, so be sure to only download the models you need and only download them using a WiFi connection unless the user has specified otherwise.

Only available on Android and iOS.

| Param       | Type                            |
| ----------- | ------------------------------- |
| **options** | [DownloadModel](#downloadmodel) |

**Since:** 0.0.1

---

### getDownloadedModels()[¶](#getdownloadedmodels "Permanent link")

`[](#%5F%5Fcodelineno-10-1)getDownloadedModels() => Promise<GetDownloadedModelsResult>
`

Get the languages for which a model has been downloaded.

Only available on Android and iOS.

**Returns:** `Promise<[GetDownloadedModelsResult](#getdownloadedmodelsresult)>`

**Since:** 0.0.1

---

### translate(...)[¶](#translate "Permanent link")

`[](#%5F%5Fcodelineno-11-1)translate(options: TranslateOptions) => Promise<TranslateResult>
`

Translate the given text.

If the language model for the given source and target languages is not downloaded, it will be downloaded automatically which may take some time. If you want to avoid this, use the `downloadModel(...)` method to download the model first.

Only available on Android and iOS.

| Param       | Type                                  |
| ----------- | ------------------------------------- |
| **options** | [TranslateOptions](#translateoptions) |

**Returns:** `Promise<[TranslateResult](#translateresult)>`

**Since:** 0.0.1

---

### Interfaces[¶](#interfaces "Permanent link")

#### DeleteDownloadedModelOptions[¶](#deletedownloadedmodeloptions "Permanent link")

| Prop         | Type                  | Description                                 | Since |
| ------------ | --------------------- | ------------------------------------------- | ----- |
| **language** | [Language](#language) | The language for which to delete the model. | 0.0.1 |

#### DownloadModel[¶](#downloadmodel%5F1 "Permanent link")

| Prop         | Type                  | Description                             | Since |
| ------------ | --------------------- | --------------------------------------- | ----- |
| **language** | [Language](#language) | The language to download the model for. | 0.0.1 |

#### GetDownloadedModelsResult[¶](#getdownloadedmodelsresult "Permanent link")

| Prop          | Type         | Description                                          |
| ------------- | ------------ | ---------------------------------------------------- |
| **languages** | Language\[\] | The languages for which a model has been downloaded. |

#### TranslateResult[¶](#translateresult "Permanent link")

| Prop     | Type   | Description          | Since |
| -------- | ------ | -------------------- | ----- |
| **text** | string | The translated text. | 0.0.1 |

#### TranslateOptions[¶](#translateoptions "Permanent link")

| Prop               | Type                  | Description                                                                                                                                                                                          | Since                                         |       |
| ------------------ | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- | ----- |
| **text**           | string                | The text to translate.                                                                                                                                                                               | 0.0.1                                         |       |
| **sourceLanguage** | [Language](#language) | The source language of the text. If you don't know the source language, you can use the [Language</a> Identification plugin to detect it. 0.0.1 **targetLanguage** ](#language)[Language](#language) | The target language to translate the text to. | 0.0.1 |

### Enums[¶](#enums "Permanent link")

#### Language[¶](#language "Permanent link")

| Members        | Value | Since |
| -------------- | ----- | ----- |
| **Afrikaans**  | 'af'  | 0.0.1 |
| **Arabic**     | 'ar'  | 0.0.1 |
| **Belarusian** | 'be'  | 0.0.1 |
| **Bulgarian**  | 'bg'  | 0.0.1 |
| **Bengali**    | 'bn'  | 0.0.1 |
| **Catalan**    | 'ca'  | 0.0.1 |
| **Czech**      | 'cs'  | 0.0.1 |
| **Welsh**      | 'cy'  | 0.0.1 |
| **Danish**     | 'da'  | 0.0.1 |
| **German**     | 'de'  | 0.0.1 |
| **Greek**      | 'el'  | 0.0.1 |
| **English**    | 'en'  | 0.0.1 |
| **Esperanto**  | 'eo'  | 0.0.1 |
| **Spanish**    | 'es'  | 0.0.1 |
| **Estonian**   | 'et'  | 0.0.1 |
| **Persian**    | 'fa'  | 0.0.1 |
| **Finnish**    | 'fi'  | 0.0.1 |
| **French**     | 'fr'  | 0.0.1 |
| **Irish**      | 'ga'  | 0.0.1 |
| **Galician**   | 'gl'  | 0.0.1 |
| **Gujarati**   | 'gu'  | 0.0.1 |
| **Hebrew**     | 'he'  | 0.0.1 |
| **Hindi**      | 'hi'  | 0.0.1 |
| **Croatian**   | 'hr'  | 0.0.1 |
| **Haitian**    | 'ht'  | 0.0.1 |
| **Hungarian**  | 'hu'  | 0.0.1 |
| **Indonesian** | 'id'  | 0.0.1 |
| **Icelandic**  | 'is'  | 0.0.1 |
| **Italian**    | 'it'  | 0.0.1 |
| **Japanese**   | 'ja'  | 0.0.1 |
| **Georgian**   | 'ka'  | 0.0.1 |
| **Kannada**    | 'kn'  | 0.0.1 |
| **Korean**     | 'ko'  | 0.0.1 |
| **Lithuanian** | 'lt'  | 0.0.1 |
| **Latvian**    | 'lv'  | 0.0.1 |
| **Macedonian** | 'mk'  | 0.0.1 |
| **Marathi**    | 'mr'  | 0.0.1 |
| **Malay**      | 'ms'  | 0.0.1 |
| **Maltese**    | 'mt'  | 0.0.1 |
| **Dutch**      | 'nl'  | 0.0.1 |
| **Norwegian**  | 'no'  | 0.0.1 |
| **Polish**     | 'pl'  | 0.0.1 |
| **Portuguese** | 'pt'  | 0.0.1 |
| **Romanian**   | 'ro'  | 0.0.1 |
| **Russian**    | 'ru'  | 0.0.1 |
| **Slovak**     | 'sk'  | 0.0.1 |
| **Slovenian**  | 'sl'  | 0.0.1 |
| **Albanian**   | 'sq'  | 0.0.1 |
| **Swedish**    | 'sv'  | 0.0.1 |
| **Swahili**    | 'sw'  | 0.0.1 |
| **Tamil**      | 'ta'  | 0.0.1 |
| **Telugu**     | 'te'  | 0.0.1 |
| **Thai**       | 'th'  | 0.0.1 |
| **Tagalog**    | 'tl'  | 0.0.1 |
| **Turkish**    | 'tr'  | 0.0.1 |
| **Ukrainian**  | 'uk'  | 0.0.1 |
| **Urdu**       | 'ur'  | 0.0.1 |
| **Vietnamese** | 'vi'  | 0.0.1 |
| **Chinese**    | 'zh'  | 0.0.1 |

## FAQ[¶](#faq "Permanent link")

### Which platforms are supported by this plugin?[¶](#which-platforms-are-supported-by-this-plugin "Permanent link")

The plugin is available on Android and iOS. All methods are only available on Android and iOS, so there is no web implementation.

### Which languages are supported?[¶](#which-languages-are-supported "Permanent link")

The plugin supports more than 50 languages, including English, German, Spanish, French, Chinese, and Japanese. See the `Language` enum in the [API](#api) section for the complete list.

### Does the translation work offline?[¶](#does-the-translation-work-offline "Permanent link")

Yes, the translation is performed on the device using downloaded language models. Use the `downloadModel(...)` method to download a language model in advance, for example while the device is connected to a WiFi network. Otherwise, the model is downloaded automatically on the first call to `translate(...)`, which may take some time.

### How much storage do the language models require?[¶](#how-much-storage-do-the-language-models-require "Permanent link")

Language models are around 30MB in size, so be sure to only download the models you need. You can delete a model that is no longer needed using the `deleteDownloadedModel(...)` method.

### What if I don't know the source language of the text?[¶](#what-if-i-dont-know-the-source-language-of-the-text "Permanent link")

The `translate(...)` method requires a source language. You can use the ML Kit Language Identification plugin to detect the language of a text before translating it.

### Can I install this plugin using Swift Package Manager?[¶](#can-i-install-this-plugin-using-swift-package-manager "Permanent link")

No, this plugin only supports CocoaPods for iOS dependency management because the ML Kit SDK itself does not support Swift Package Manager. Also make sure to set the deployment target in your `ios/App/Podfile` to at least `15.5` (see [Installation](#installation)).

## Related Plugins[¶](#related-plugins "Permanent link")

* [Speech Recognition](https://capawesome.io/docs/sdks/capacitor/speech-recognition/): Transcribe speech into text, for example to translate it afterwards.
* [Speech Synthesis](https://capawesome.io/docs/sdks/capacitor/speech-synthesis/): Synthesize speech from text, for example to read translated text aloud.
* [App Language](https://capawesome.io/docs/sdks/capacitor/app-language/): Manage the app's own language override, independent of the device language.

## Terms & Privacy[¶](#terms-privacy "Permanent link")

This plugin uses the [Google ML Kit](https://developers.google.com/ml-kit):

* [Terms & Privacy](https://developers.google.com/ml-kit/terms)
* [Android Data Disclosure](https://developers.google.com/ml-kit/android-data-disclosure)
* [iOS Data Disclosure](https://developers.google.com/ml-kit/ios-data-disclosure)

## Newsletter[¶](#newsletter "Permanent link")

Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/).

## Changelog[¶](#changelog "Permanent link")

See [CHANGELOG.md](https://github.com/capawesome-team/capacitor-mlkit/blob/main/packages/translation/CHANGELOG.md).

## License[¶](#license "Permanent link")

See [LICENSE](https://github.com/capawesome-team/capacitor-mlkit/blob/main/packages/translation/LICENSE).

---

1. This project is not affiliated with, endorsed by, sponsored by, or approved by Google LLC or any of their affiliates or subsidiaries. [↩](#fnref:1 "Jump back to footnote 1 in the text")

July 8, 2026 

Back to top

```json
{"@context": "https://schema.org", "@graph": [{"@type": "TechArticle", "@id": "https://capawesome.io/docs/sdks/capacitor/mlkit/translation/#article", "headline": "Capacitor ML Kit Translation Plugin for Android & iOS", "name": "Capacitor ML Kit Translation Plugin for Android & iOS", "description": "Unofficial Capacitor plugin for Google ML Kit Translation SDK to translate text between languages with support for Android and iOS.", "inLanguage": "en", "url": "https://capawesome.io/docs/sdks/capacitor/mlkit/translation/", "mainEntityOfPage": "https://capawesome.io/docs/sdks/capacitor/mlkit/translation/", "author": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}, "publisher": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}, "about": {"@id": "https://capawesome.io/docs/sdks/capacitor/mlkit/translation/#software"}}, {"@type": "SoftwareSourceCode", "@id": "https://capawesome.io/docs/sdks/capacitor/mlkit/translation/#software", "name": "Capacitor ML Kit Translation Plugin for Android & iOS", "description": "Unofficial Capacitor plugin for Google ML Kit Translation SDK to translate text between languages with support for Android and iOS.", "url": "https://capawesome.io/docs/sdks/capacitor/mlkit/translation/", "programmingLanguage": "TypeScript", "runtimePlatform": "Capacitor", "codeRepository": "https://github.com/capawesome-team", "author": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}, "publisher": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}}]}
{"@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{"@type": "Question", "name": "Which platforms are supported by this plugin?", "acceptedAnswer": {"@type": "Answer", "text": "The plugin is available on Android and iOS. All methods are only available on Android and iOS, so there is no web implementation."}}, {"@type": "Question", "name": "Which languages are supported?", "acceptedAnswer": {"@type": "Answer", "text": "The plugin supports more than 50 languages, including English, German, Spanish, French, Chinese, and Japanese. See the Language enum in the API section for the complete list."}}, {"@type": "Question", "name": "Does the translation work offline?", "acceptedAnswer": {"@type": "Answer", "text": "Yes, the translation is performed on the device using downloaded language models. Use the downloadModel(...) method to download a language model in advance, for example while the device is connected to a WiFi network. Otherwise, the model is downloaded automatically on the first call to translate(...), which may take some time."}}, {"@type": "Question", "name": "How much storage do the language models require?", "acceptedAnswer": {"@type": "Answer", "text": "Language models are around 30MB in size, so be sure to only download the models you need. You can delete a model that is no longer needed using the deleteDownloadedModel(...) method."}}, {"@type": "Question", "name": "What if I don't know the source language of the text?", "acceptedAnswer": {"@type": "Answer", "text": "The translate(...) method requires a source language. You can use the ML Kit Language Identification plugin to detect the language of a text before translating it."}}, {"@type": "Question", "name": "Can I install this plugin using Swift Package Manager?", "acceptedAnswer": {"@type": "Answer", "text": "No, this plugin only supports CocoaPods for iOS dependency management because the ML Kit SDK itself does not support Swift Package Manager. Also make sure to set the deployment target in your ios/App/Podfile to at least 15.5 (see Installation)."}}], "url": "https://capawesome.io/docs/sdks/capacitor/mlkit/translation/"}
```
