import { NativeModules, Platform } from 'react-native'; export enum TranslateLanguage { AFRIKAANS = 'af', ALBANIAN = 'sq', ARABIC = 'ar', BELARUSIAN = 'be', BULGARIAN = 'bg', BENGALI = 'bn', CATALAN = 'ca', CHINESE = 'zh', CROATIAN = 'hr', CZECH = 'cs', DANISH = 'da', DUTCH = 'nl', ENGLISH = 'en', ESPERANTO = 'eo', ESTONIAN = 'et', FINNISH = 'fi', FRENCH = 'fr', GALICIAN = 'gl', GEORGIAN = 'ka', GERMAN = 'de', GREEK = 'el', GUJARATI = 'gu', HAITIAN_CREOLE = 'ht', HEBREW = 'he', HINDI = 'hi', HUNGARIAN = 'hu', ICELANDIC = 'is', INDONESIAN = 'id', IRISH = 'ga', ITALIAN = 'it', JAPANESE = 'ja', KANNADA = 'kn', KOREAN = 'ko', LITHUANIAN = 'lt', LATVIAN = 'lv', MACEDONIAN = 'mk', MARATHI = 'mr', MALAY = 'ms', MALTESE = 'mt', NORWEGIAN = 'no', PERSIAN = 'fa', POLISH = 'pl', PORTUGUESE = 'pt', ROMANIAN = 'ro', RUSSIAN = 'ru', SLOVAK = 'sk', SLOVENIAN = 'sl', SPANISH = 'es', SWEDISH = 'sv', SWAHILI = 'sw', TAGALOG = 'tl', TAMIL = 'ta', TELUGU = 'te', THAI = 'th', TURKISH = 'tr', UKRAINIAN = 'uk', URDU = 'ur', VIETNAMESE = 'vi', WELSH = 'cy', } export interface TranslateTextResult {} export interface TranslateTextOptions { /** Text to translate */ text: string; /** Source language (Language code to translate from) */ sourceLanguage: TranslateLanguage; /** Target language (Language code to translate to) */ targetLanguage: TranslateLanguage; /** * Whether or not to download the model if needed * * @default false */ downloadModelIfNeeded?: boolean; /** * Whether or not to download model *only using WiFi* * * @requires `downloadModelIfNeeded` to be `true` * @default false */ requireWifi?: boolean; /** * Whether or not to download model *only while charging* * * **Note:** _This will only work on Android >= 24_ * * @requires `downloadModelIfNeeded` to be `true` * @default false */ requireCharging?: boolean; } interface ITranslateText { translate: (options: TranslateTextOptions) => Promise<TranslateTextResult>; } const LINKING_ERROR = `The package '@react-native-ml-kit/translate-text' doesn't seem to be linked. Make sure: \n\n` + Platform.select({ ios: "- You have run 'pod install'\n", default: '' }) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo managed workflow\n'; const TranslateText: ITranslateText = NativeModules.TranslateText ? NativeModules.TranslateText : new Proxy( {}, { get() { throw new Error(LINKING_ERROR); }, } ); export default TranslateText;