@magmamath/students-features 1.3.23-rc.8 → 1.3.23-rc.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/dist/commonjs/features/translation/providers/google/GoogleTranslationProvider.js +13 -6
  2. package/dist/commonjs/features/translation/providers/google/GoogleTranslationProvider.js.map +1 -1
  3. package/dist/commonjs/features/translation/providers/google/supportedLanguages.js +28 -1
  4. package/dist/commonjs/features/translation/providers/google/supportedLanguages.js.map +1 -1
  5. package/dist/commonjs/features/translation/providers/translation.interface.js +15 -1
  6. package/dist/commonjs/features/translation/providers/translation.interface.js.map +1 -1
  7. package/dist/commonjs/features/voice/playing/components/VoiceTranscription.js +6 -2
  8. package/dist/commonjs/features/voice/playing/components/VoiceTranscription.js.map +1 -1
  9. package/dist/commonjs/features/voice/playing/model/TranscriptionsDownloaderModel.js +3 -0
  10. package/dist/commonjs/features/voice/playing/model/TranscriptionsDownloaderModel.js.map +1 -1
  11. package/dist/module/features/translation/providers/google/GoogleTranslationProvider.js +14 -7
  12. package/dist/module/features/translation/providers/google/GoogleTranslationProvider.js.map +1 -1
  13. package/dist/module/features/translation/providers/google/supportedLanguages.js +26 -0
  14. package/dist/module/features/translation/providers/google/supportedLanguages.js.map +1 -1
  15. package/dist/module/features/translation/providers/translation.interface.js +15 -1
  16. package/dist/module/features/translation/providers/translation.interface.js.map +1 -1
  17. package/dist/module/features/voice/playing/components/VoiceTranscription.js +6 -2
  18. package/dist/module/features/voice/playing/components/VoiceTranscription.js.map +1 -1
  19. package/dist/module/features/voice/playing/model/TranscriptionsDownloaderModel.js +3 -0
  20. package/dist/module/features/voice/playing/model/TranscriptionsDownloaderModel.js.map +1 -1
  21. package/dist/typescript/commonjs/features/translation/providers/google/GoogleTranslationProvider.d.ts +1 -0
  22. package/dist/typescript/commonjs/features/translation/providers/google/GoogleTranslationProvider.d.ts.map +1 -1
  23. package/dist/typescript/commonjs/features/translation/providers/google/supportedLanguages.d.ts +12 -0
  24. package/dist/typescript/commonjs/features/translation/providers/google/supportedLanguages.d.ts.map +1 -1
  25. package/dist/typescript/commonjs/features/translation/providers/translation.interface.d.ts +7 -0
  26. package/dist/typescript/commonjs/features/translation/providers/translation.interface.d.ts.map +1 -1
  27. package/dist/typescript/commonjs/features/voice/playing/components/VoiceTranscription.d.ts.map +1 -1
  28. package/dist/typescript/commonjs/features/voice/playing/model/TranscriptionsDownloaderModel.d.ts +1 -0
  29. package/dist/typescript/commonjs/features/voice/playing/model/TranscriptionsDownloaderModel.d.ts.map +1 -1
  30. package/dist/typescript/module/features/translation/providers/google/GoogleTranslationProvider.d.ts +1 -0
  31. package/dist/typescript/module/features/translation/providers/google/GoogleTranslationProvider.d.ts.map +1 -1
  32. package/dist/typescript/module/features/translation/providers/google/supportedLanguages.d.ts +12 -0
  33. package/dist/typescript/module/features/translation/providers/google/supportedLanguages.d.ts.map +1 -1
  34. package/dist/typescript/module/features/translation/providers/translation.interface.d.ts +7 -0
  35. package/dist/typescript/module/features/translation/providers/translation.interface.d.ts.map +1 -1
  36. package/dist/typescript/module/features/voice/playing/components/VoiceTranscription.d.ts.map +1 -1
  37. package/dist/typescript/module/features/voice/playing/model/TranscriptionsDownloaderModel.d.ts +1 -0
  38. package/dist/typescript/module/features/voice/playing/model/TranscriptionsDownloaderModel.d.ts.map +1 -1
  39. package/package.json +1 -1
  40. package/src/features/translation/providers/google/GoogleTranslationProvider.ts +21 -5
  41. package/src/features/translation/providers/google/supportedLanguages.ts +33 -0
  42. package/src/features/translation/providers/translation.interface.ts +15 -1
  43. package/src/features/voice/playing/components/VoiceTranscription.tsx +11 -2
  44. package/src/features/voice/playing/model/TranscriptionsDownloaderModel.ts +4 -0
@@ -19,24 +19,31 @@ class GoogleTranslationProvider extends _translationInterface.TranslationProvide
19
19
  });
20
20
  this.getTranslationFx = (0, _effector.createEffect)(api.translateRequest);
21
21
  }
22
+ resolveLanguage(language) {
23
+ return (0, _supportedLanguages.resolveGoogleLanguageCode)(language);
24
+ }
22
25
  async request(text, targetLanguage, sourceLanguage) {
26
+ const resolvedTarget = this.resolveLanguage(targetLanguage) ?? targetLanguage;
27
+ const resolvedSource = sourceLanguage ? this.resolveLanguage(sourceLanguage) ?? undefined : undefined;
23
28
  const response = await this.getTranslationFx({
24
29
  text: [text],
25
- targetLanguage,
26
- sourceLanguage
30
+ targetLanguage: resolvedTarget,
31
+ sourceLanguage: resolvedSource
27
32
  });
28
33
  const translated = response.data.translations[0]?.translatedText ?? '';
29
- return this.applyGlossary((0, _helpers.decodeHtmlEntities)(translated), targetLanguage);
34
+ return this.applyGlossary((0, _helpers.decodeHtmlEntities)(translated), resolvedTarget);
30
35
  }
31
36
  async requestBatch(text, targetLanguage, sourceLanguage) {
37
+ const resolvedTarget = this.resolveLanguage(targetLanguage) ?? targetLanguage;
38
+ const resolvedSource = sourceLanguage ? this.resolveLanguage(sourceLanguage) ?? undefined : undefined;
32
39
  const response = await this.getTranslationFx({
33
40
  text,
34
- targetLanguage,
35
- sourceLanguage
41
+ targetLanguage: resolvedTarget,
42
+ sourceLanguage: resolvedSource
36
43
  });
37
44
  return response.data.translations.map(({
38
45
  translatedText
39
- }) => this.applyGlossary((0, _helpers.decodeHtmlEntities)(translatedText), targetLanguage));
46
+ }) => this.applyGlossary((0, _helpers.decodeHtmlEntities)(translatedText), resolvedTarget));
40
47
  }
41
48
  }
42
49
  exports.GoogleTranslationProvider = GoogleTranslationProvider;
@@ -1 +1 @@
1
- {"version":3,"names":["_effector","require","_translationInterface","_supportedLanguages","_helpers","GoogleTranslationProvider","TranslationProvider","constructor","api","glossaries","supportedLanguages","Object","values","GoogleTranslateLanguage","getTranslationFx","createEffect","translateRequest","request","text","targetLanguage","sourceLanguage","response","translated","data","translations","translatedText","applyGlossary","decodeHtmlEntities","requestBatch","map","exports"],"sourceRoot":"../../../../../../src","sources":["features/translation/providers/google/GoogleTranslationProvider.ts"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,qBAAA,GAAAD,OAAA;AACA,IAAAE,mBAAA,GAAAF,OAAA;AAEA,IAAAG,QAAA,GAAAH,OAAA;AASO,MAAMI,yBAAyB,SAASC,yCAAmB,CAAC;EAGjEC,WAAWA,CAAC;IAAEC,GAAG;IAAEC;EAA2C,CAAC,EAAE;IAC/D,KAAK,CAAC;MAAEC,kBAAkB,EAAEC,MAAM,CAACC,MAAM,CAACC,2CAAuB,CAAC;MAAEJ;IAAW,CAAC,CAAC;IACjF,IAAI,CAACK,gBAAgB,GAAG,IAAAC,sBAAY,EAACP,GAAG,CAACQ,gBAAgB,CAAC;EAC5D;EAEA,MAAaC,OAAOA,CAACC,IAAY,EAAEC,cAAsB,EAAEC,cAAuB,EAAE;IAClF,MAAMC,QAAQ,GAAG,MAAM,IAAI,CAACP,gBAAgB,CAAC;MAAEI,IAAI,EAAE,CAACA,IAAI,CAAC;MAAEC,cAAc;MAAEC;IAAe,CAAC,CAAC;IAC9F,MAAME,UAAU,GAAGD,QAAQ,CAACE,IAAI,CAACC,YAAY,CAAC,CAAC,CAAC,EAAEC,cAAc,IAAI,EAAE;IACtE,OAAO,IAAI,CAACC,aAAa,CAAC,IAAAC,2BAAkB,EAACL,UAAU,CAAC,EAAEH,cAAc,CAAC;EAC3E;EAEA,MAAaS,YAAYA,CAACV,IAAc,EAAEC,cAAsB,EAAEC,cAAuB,EAAE;IACzF,MAAMC,QAAQ,GAAG,MAAM,IAAI,CAACP,gBAAgB,CAAC;MAAEI,IAAI;MAAEC,cAAc;MAAEC;IAAe,CAAC,CAAC;IACtF,OAAOC,QAAQ,CAACE,IAAI,CAACC,YAAY,CAACK,GAAG,CAAC,CAAC;MAAEJ;IAAe,CAAC,KACvD,IAAI,CAACC,aAAa,CAAC,IAAAC,2BAAkB,EAACF,cAAc,CAAC,EAAEN,cAAc,CACvE,CAAC;EACH;AACF;AAACW,OAAA,CAAAzB,yBAAA,GAAAA,yBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_effector","require","_translationInterface","_supportedLanguages","_helpers","GoogleTranslationProvider","TranslationProvider","constructor","api","glossaries","supportedLanguages","Object","values","GoogleTranslateLanguage","getTranslationFx","createEffect","translateRequest","resolveLanguage","language","resolveGoogleLanguageCode","request","text","targetLanguage","sourceLanguage","resolvedTarget","resolvedSource","undefined","response","translated","data","translations","translatedText","applyGlossary","decodeHtmlEntities","requestBatch","map","exports"],"sourceRoot":"../../../../../../src","sources":["features/translation/providers/google/GoogleTranslationProvider.ts"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,qBAAA,GAAAD,OAAA;AACA,IAAAE,mBAAA,GAAAF,OAAA;AAEA,IAAAG,QAAA,GAAAH,OAAA;AASO,MAAMI,yBAAyB,SAASC,yCAAmB,CAAC;EAGjEC,WAAWA,CAAC;IAAEC,GAAG;IAAEC;EAA2C,CAAC,EAAE;IAC/D,KAAK,CAAC;MAAEC,kBAAkB,EAAEC,MAAM,CAACC,MAAM,CAACC,2CAAuB,CAAC;MAAEJ;IAAW,CAAC,CAAC;IACjF,IAAI,CAACK,gBAAgB,GAAG,IAAAC,sBAAY,EAACP,GAAG,CAACQ,gBAAgB,CAAC;EAC5D;EAEOC,eAAeA,CAACC,QAAgB,EAAiB;IACtD,OAAO,IAAAC,6CAAyB,EAACD,QAAQ,CAAC;EAC5C;EAEA,MAAaE,OAAOA,CAACC,IAAY,EAAEC,cAAsB,EAAEC,cAAuB,EAAE;IAClF,MAAMC,cAAc,GAAG,IAAI,CAACP,eAAe,CAACK,cAAc,CAAC,IAAIA,cAAc;IAC7E,MAAMG,cAAc,GAAGF,cAAc,GAAG,IAAI,CAACN,eAAe,CAACM,cAAc,CAAC,IAAIG,SAAS,GAAGA,SAAS;IACrG,MAAMC,QAAQ,GAAG,MAAM,IAAI,CAACb,gBAAgB,CAAC;MAC3CO,IAAI,EAAE,CAACA,IAAI,CAAC;MACZC,cAAc,EAAEE,cAAc;MAC9BD,cAAc,EAAEE;IAClB,CAAC,CAAC;IACF,MAAMG,UAAU,GAAGD,QAAQ,CAACE,IAAI,CAACC,YAAY,CAAC,CAAC,CAAC,EAAEC,cAAc,IAAI,EAAE;IACtE,OAAO,IAAI,CAACC,aAAa,CAAC,IAAAC,2BAAkB,EAACL,UAAU,CAAC,EAAEJ,cAAc,CAAC;EAC3E;EAEA,MAAaU,YAAYA,CAACb,IAAc,EAAEC,cAAsB,EAAEC,cAAuB,EAAE;IACzF,MAAMC,cAAc,GAAG,IAAI,CAACP,eAAe,CAACK,cAAc,CAAC,IAAIA,cAAc;IAC7E,MAAMG,cAAc,GAAGF,cAAc,GAAG,IAAI,CAACN,eAAe,CAACM,cAAc,CAAC,IAAIG,SAAS,GAAGA,SAAS;IACrG,MAAMC,QAAQ,GAAG,MAAM,IAAI,CAACb,gBAAgB,CAAC;MAC3CO,IAAI;MACJC,cAAc,EAAEE,cAAc;MAC9BD,cAAc,EAAEE;IAClB,CAAC,CAAC;IACF,OAAOE,QAAQ,CAACE,IAAI,CAACC,YAAY,CAACK,GAAG,CAAC,CAAC;MAAEJ;IAAe,CAAC,KACvD,IAAI,CAACC,aAAa,CAAC,IAAAC,2BAAkB,EAACF,cAAc,CAAC,EAAEP,cAAc,CACvE,CAAC;EACH;AACF;AAACY,OAAA,CAAA/B,yBAAA,GAAAA,yBAAA","ignoreList":[]}
@@ -3,7 +3,30 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.GoogleTranslateLanguage = void 0;
6
+ exports.resolveGoogleLanguageCode = exports.GoogleTranslateLanguage = void 0;
7
+ const SUPPORTED_CODES = new Set();
8
+ const NAME_TO_CODE = {};
9
+ const normalizeLanguageName = language => language.trim().toUpperCase().replace(/[\s()-]+/g, '_');
10
+
11
+ /**
12
+ * Resolves an arbitrary language input (ISO code, locale, or English name) to the
13
+ * Google Translate ISO code. Returns null when the language is not supported.
14
+ *
15
+ * Examples:
16
+ * "en" → "en"
17
+ * "en-SE" → "en" (base fallback)
18
+ * "zh-CN" → "zh-CN" (exact match)
19
+ * "Spanish" → "es" (name lookup)
20
+ * "Chinese Simplified" → "zh-CN"
21
+ */
22
+ const resolveGoogleLanguageCode = language => {
23
+ if (!language) return null;
24
+ if (SUPPORTED_CODES.has(language)) return language;
25
+ const base = language.split('-')[0];
26
+ if (base !== language && SUPPORTED_CODES.has(base)) return base;
27
+ return NAME_TO_CODE[normalizeLanguageName(language)] ?? null;
28
+ };
29
+ exports.resolveGoogleLanguageCode = resolveGoogleLanguageCode;
7
30
  const GoogleTranslateLanguage = exports.GoogleTranslateLanguage = {
8
31
  ABKHAZ: 'ab',
9
32
  ACEHNESE: 'ace',
@@ -200,4 +223,8 @@ const GoogleTranslateLanguage = exports.GoogleTranslateLanguage = {
200
223
  YUCATEC_MAYA: 'yua',
201
224
  ZULU: 'zu'
202
225
  };
226
+ Object.entries(GoogleTranslateLanguage).forEach(([name, code]) => {
227
+ SUPPORTED_CODES.add(code);
228
+ NAME_TO_CODE[name] = code;
229
+ });
203
230
  //# sourceMappingURL=supportedLanguages.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["GoogleTranslateLanguage","exports","ABKHAZ","ACEHNESE","ACHOLI","AFRIKAANS","ALBANIAN","ALUR","AMHARIC","ARABIC","ARMENIAN","ASSAMESE","AWADHI","AYMARA","AZERBAIJANI","BALINESE","BAMBARA","BASHKIR","BASQUE","BATAK_KARO","BATAK_SIMALUNGUN","BATAK_TOBA","BELARUSIAN","BEMBA","BENGALI","BETAWI","BHOJPURI","BIKOL","BOSNIAN","BRETON","BULGARIAN","BURMESE","BURYAT","CANTONESE","CATALAN","CEBUANO","CHICHEWA_NYANJA","CHINESE_SIMPLIFIED","CHINESE_TRADITIONAL","CHUVASH","CORSICAN","CRIMEAN_TATAR","CROATIAN","CZECH","DANISH","DINKA","DIVEHI","DOGRI","DOMBE","DUTCH","DZONGKHA","ENGLISH","ESPERANTO","ESTONIAN","EWE","FIJIAN","FILIPINO_TAGALOG","FINNISH","FRENCH","FRENCH_CANADA","FRENCH_FRANCE","FRISIAN","FULFULDE","GA","GALICIAN","GANDA_LUGANDA","GEORGIAN","GERMAN","GREEK","GUARANI","GUJARATI","HAITIAN_CREOLE","HAKHA_CHIN","HAUSA","HAWAIIAN","HEBREW","HILIGAYNON","HINDI","HMONG","HUNGARIAN","HUNSRIK","ICELANDIC","IGBO","ILOKO","INDONESIAN","IRISH","ITALIAN","JAPANESE","JAVANESE","KANNADA","KAPAMPANGAN","KAZAKH","KHMER","KIGA","KINYARWANDA","KITUBA","KONKANI","KOREAN","KRIO","KURMANJI","KYRGYZ","LAO","LATGALIAN","LATIN","LATVIAN","LIGURIAN","LIMBURGAN","LINGALA","LITHUANIAN","LOMBARD","LUO","LUXEMBOURGISH","MACEDONIAN","MAITHILI","MAKASSAR","MALAGASY","MALAY","MALAYALAM","MALAY_JAWI","MALTESE","MAORI","MARATHI","MEADOW_MARI","MEITEILON_MANIPURI","MINANG","MIZO","MONGOLIAN","NDEBELE_SOUTH","NEPALBHASA_NEWARI","NEPALI","NORTHERN_SOTHO","NORWEGIAN","NUER","OCCITAN","ODIA","OROMO","PANGASINAN","PAPIAMENTO","PASHTO","PERSIAN","POLISH","PORTUGUESE","PORTUGUESE_BRAZIL","PORTUGUESE_PORTUGAL","PUNJABI","PUNJABI_SHAHMUKHI","QUECHUA","ROMANI","ROMANIAN","RUNDI","RUSSIAN","SAMOAN","SANGO","SANSKRIT","SCOTS_GAELIC","SERBIAN","SESOTHO","SEYCHELLOIS_CREOLE","SHAN","SHONA","SICILIAN","SILESIAN","SINDHI","SINHALA","SLOVAK","SLOVENIAN","SOMALI","SORANI","SPANISH","SUNDANESE","SWAHILI","SWATI","SWEDISH","TAJIK","TAMIL","TATAR","TELUGU","TETUM","THAI","TIGRINYA","TSONGA","TSWANA","TURKISH","TURKMEN","TWI_AKAN","UKRAINIAN","URDU","UYGHUR","UZBEK","VIETNAMESE","WELSH","XHOSA","YIDDISH","YORUBA","YUCATEC_MAYA","ZULU"],"sourceRoot":"../../../../../../src","sources":["features/translation/providers/google/supportedLanguages.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["SUPPORTED_CODES","Set","NAME_TO_CODE","normalizeLanguageName","language","trim","toUpperCase","replace","resolveGoogleLanguageCode","has","base","split","exports","GoogleTranslateLanguage","ABKHAZ","ACEHNESE","ACHOLI","AFRIKAANS","ALBANIAN","ALUR","AMHARIC","ARABIC","ARMENIAN","ASSAMESE","AWADHI","AYMARA","AZERBAIJANI","BALINESE","BAMBARA","BASHKIR","BASQUE","BATAK_KARO","BATAK_SIMALUNGUN","BATAK_TOBA","BELARUSIAN","BEMBA","BENGALI","BETAWI","BHOJPURI","BIKOL","BOSNIAN","BRETON","BULGARIAN","BURMESE","BURYAT","CANTONESE","CATALAN","CEBUANO","CHICHEWA_NYANJA","CHINESE_SIMPLIFIED","CHINESE_TRADITIONAL","CHUVASH","CORSICAN","CRIMEAN_TATAR","CROATIAN","CZECH","DANISH","DINKA","DIVEHI","DOGRI","DOMBE","DUTCH","DZONGKHA","ENGLISH","ESPERANTO","ESTONIAN","EWE","FIJIAN","FILIPINO_TAGALOG","FINNISH","FRENCH","FRENCH_CANADA","FRENCH_FRANCE","FRISIAN","FULFULDE","GA","GALICIAN","GANDA_LUGANDA","GEORGIAN","GERMAN","GREEK","GUARANI","GUJARATI","HAITIAN_CREOLE","HAKHA_CHIN","HAUSA","HAWAIIAN","HEBREW","HILIGAYNON","HINDI","HMONG","HUNGARIAN","HUNSRIK","ICELANDIC","IGBO","ILOKO","INDONESIAN","IRISH","ITALIAN","JAPANESE","JAVANESE","KANNADA","KAPAMPANGAN","KAZAKH","KHMER","KIGA","KINYARWANDA","KITUBA","KONKANI","KOREAN","KRIO","KURMANJI","KYRGYZ","LAO","LATGALIAN","LATIN","LATVIAN","LIGURIAN","LIMBURGAN","LINGALA","LITHUANIAN","LOMBARD","LUO","LUXEMBOURGISH","MACEDONIAN","MAITHILI","MAKASSAR","MALAGASY","MALAY","MALAYALAM","MALAY_JAWI","MALTESE","MAORI","MARATHI","MEADOW_MARI","MEITEILON_MANIPURI","MINANG","MIZO","MONGOLIAN","NDEBELE_SOUTH","NEPALBHASA_NEWARI","NEPALI","NORTHERN_SOTHO","NORWEGIAN","NUER","OCCITAN","ODIA","OROMO","PANGASINAN","PAPIAMENTO","PASHTO","PERSIAN","POLISH","PORTUGUESE","PORTUGUESE_BRAZIL","PORTUGUESE_PORTUGAL","PUNJABI","PUNJABI_SHAHMUKHI","QUECHUA","ROMANI","ROMANIAN","RUNDI","RUSSIAN","SAMOAN","SANGO","SANSKRIT","SCOTS_GAELIC","SERBIAN","SESOTHO","SEYCHELLOIS_CREOLE","SHAN","SHONA","SICILIAN","SILESIAN","SINDHI","SINHALA","SLOVAK","SLOVENIAN","SOMALI","SORANI","SPANISH","SUNDANESE","SWAHILI","SWATI","SWEDISH","TAJIK","TAMIL","TATAR","TELUGU","TETUM","THAI","TIGRINYA","TSONGA","TSWANA","TURKISH","TURKMEN","TWI_AKAN","UKRAINIAN","URDU","UYGHUR","UZBEK","VIETNAMESE","WELSH","XHOSA","YIDDISH","YORUBA","YUCATEC_MAYA","ZULU","Object","entries","forEach","name","code","add"],"sourceRoot":"../../../../../../src","sources":["features/translation/providers/google/supportedLanguages.ts"],"mappings":"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","ignoreList":[]}
@@ -15,7 +15,21 @@ class TranslationProvider {
15
15
  this.glossaries = glossaries;
16
16
  }
17
17
  isTargetSupported(language) {
18
- return this.supportedLanguages.has(language);
18
+ return this.resolveLanguage(language) !== null;
19
+ }
20
+
21
+ /**
22
+ * Returns the provider-supported variant of `language`, falling back to the base
23
+ * language part (e.g. "en-SE" → "en") when the exact locale is not listed.
24
+ * Subclasses may override to add their own resolution (e.g. language names).
25
+ * Returns null when the language cannot be resolved.
26
+ */
27
+ resolveLanguage(language) {
28
+ if (!language) return null;
29
+ if (this.supportedLanguages.has(language)) return language;
30
+ const base = language.split('-')[0];
31
+ if (base !== language && this.supportedLanguages.has(base)) return base;
32
+ return null;
19
33
  }
20
34
  getSupportedLanguages() {
21
35
  return this.supportedLanguages.values();
@@ -1 +1 @@
1
- {"version":3,"names":["_helpers","require","TranslationProvider","glossaries","constructor","supportedLanguages","Set","isTargetSupported","language","has","getSupportedLanguages","values","applyGlossary","text","targetLanguage","glossary","replaceMappedTokens","exports"],"sourceRoot":"../../../../../src","sources":["features/translation/providers/translation.interface.ts"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAWO,MAAeC,mBAAmB,CAAC;EAErBC,UAAU,GAAqB,CAAC,CAAC;EAE1CC,WAAWA,CAAC;IAAEC,kBAAkB;IAAEF,UAAU,GAAG,CAAC;EAA4B,CAAC,EAAE;IACvF,IAAI,CAACE,kBAAkB,GAAG,IAAIC,GAAG,CAACD,kBAAkB,CAAC;IACrD,IAAI,CAACF,UAAU,GAAGA,UAAU;EAC9B;EAaOI,iBAAiBA,CAACC,QAAgB,EAAE;IACzC,OAAO,IAAI,CAACH,kBAAkB,CAACI,GAAG,CAACD,QAAQ,CAAC;EAC9C;EAEOE,qBAAqBA,CAAA,EAAG;IAC7B,OAAO,IAAI,CAACL,kBAAkB,CAACM,MAAM,CAAC,CAAC;EACzC;;EAEA;AACF;AACA;AACA;EACSC,aAAaA,CAACC,IAAY,EAAEC,cAAsB,EAAU;IACjE,MAAMC,QAAQ,GAAG,IAAI,CAACZ,UAAU,CAACW,cAAc,CAAC;IAChD,IAAI,CAACC,QAAQ,EAAE,OAAOF,IAAI;IAC1B,OAAO,IAAAG,4BAAmB,EAACH,IAAI,EAAEE,QAAQ,CAAC;EAC5C;AACF;AAACE,OAAA,CAAAf,mBAAA,GAAAA,mBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_helpers","require","TranslationProvider","glossaries","constructor","supportedLanguages","Set","isTargetSupported","language","resolveLanguage","has","base","split","getSupportedLanguages","values","applyGlossary","text","targetLanguage","glossary","replaceMappedTokens","exports"],"sourceRoot":"../../../../../src","sources":["features/translation/providers/translation.interface.ts"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAWO,MAAeC,mBAAmB,CAAC;EAErBC,UAAU,GAAqB,CAAC,CAAC;EAE1CC,WAAWA,CAAC;IAAEC,kBAAkB;IAAEF,UAAU,GAAG,CAAC;EAA4B,CAAC,EAAE;IACvF,IAAI,CAACE,kBAAkB,GAAG,IAAIC,GAAG,CAACD,kBAAkB,CAAC;IACrD,IAAI,CAACF,UAAU,GAAGA,UAAU;EAC9B;EAaOI,iBAAiBA,CAACC,QAAgB,EAAE;IACzC,OAAO,IAAI,CAACC,eAAe,CAACD,QAAQ,CAAC,KAAK,IAAI;EAChD;;EAEA;AACF;AACA;AACA;AACA;AACA;EACSC,eAAeA,CAACD,QAAgB,EAAiB;IACtD,IAAI,CAACA,QAAQ,EAAE,OAAO,IAAI;IAC1B,IAAI,IAAI,CAACH,kBAAkB,CAACK,GAAG,CAACF,QAAQ,CAAC,EAAE,OAAOA,QAAQ;IAC1D,MAAMG,IAAI,GAAGH,QAAQ,CAACI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACnC,IAAID,IAAI,KAAKH,QAAQ,IAAI,IAAI,CAACH,kBAAkB,CAACK,GAAG,CAACC,IAAI,CAAC,EAAE,OAAOA,IAAI;IACvE,OAAO,IAAI;EACb;EAEOE,qBAAqBA,CAAA,EAAG;IAC7B,OAAO,IAAI,CAACR,kBAAkB,CAACS,MAAM,CAAC,CAAC;EACzC;;EAEA;AACF;AACA;AACA;EACSC,aAAaA,CAACC,IAAY,EAAEC,cAAsB,EAAU;IACjE,MAAMC,QAAQ,GAAG,IAAI,CAACf,UAAU,CAACc,cAAc,CAAC;IAChD,IAAI,CAACC,QAAQ,EAAE,OAAOF,IAAI;IAC1B,OAAO,IAAAG,4BAAmB,EAACH,IAAI,EAAEE,QAAQ,CAAC;EAC5C;AACF;AAACE,OAAA,CAAAlB,mBAAA,GAAAA,mBAAA","ignoreList":[]}
@@ -13,6 +13,7 @@ var _reactNativeReanimated = _interopRequireDefault(require("react-native-reanim
13
13
  var _constants = require("../../constants.js");
14
14
  var _helpers = require("../../helpers.js");
15
15
  var _types = require("../../types.js");
16
+ var _supportedLanguages = require("../../../translation/providers/google/supportedLanguages.js");
16
17
  var _i18n = require("../../../../i18n/i18n.js");
17
18
  var _useVoiceTranscriptionEffects = require("../hooks/useVoiceTranscriptionEffects.js");
18
19
  var _VoiceTranscriptContent = require("./VoiceTranscriptContent.js");
@@ -50,8 +51,11 @@ const VoiceTranscription = ({
50
51
  const activeTranscript = activeAttempt !== null ? model.loader.getTranscript(activeAttempt) : null;
51
52
  const hasTranscriptText = !!activeTranscript && activeTranscript !== _constants.NO_AUDIO_BE_MESSAGE;
52
53
  const isActiveTranscriptLoading = isLoadingTranscripts && hasActiveAudio && !activeTranscript;
54
+ const transcriptLanguage = activeAttempt !== null ? model.loader.getTranscriptLanguage(activeAttempt) : undefined;
55
+ const isSourceSameAsTarget = !!transcriptLanguage && (0, _supportedLanguages.resolveGoogleLanguageCode)(transcriptLanguage) === (0, _supportedLanguages.resolveGoogleLanguageCode)(i18n.language);
56
+ const canTranslate = hasTranscriptText && !isSourceSameAsTarget;
53
57
  const cachedTranslation = activeAttempt !== null ? translations[activeAttempt] : undefined;
54
- const showTranslation = isTranslationActive && hasTranscriptText;
58
+ const showTranslation = isTranslationActive && canTranslate;
55
59
  const isTranslationLoading = showTranslation && !cachedTranslation && isTranslating;
56
60
  const displayText = showTranslation ? cachedTranslation ?? activeTranscript : hasTranscriptText ? activeTranscript : t('voice.transcriptNotAvailable');
57
61
  (0, _react.useEffect)(() => {
@@ -82,7 +86,7 @@ const VoiceTranscription = ({
82
86
  }), hasActiveAudio && /*#__PURE__*/(0, _jsxRuntime.jsx)(_VoiceTranscriptionHeaderActions.VoiceTranscriptionHeaderActions, {
83
87
  playerState: playerState,
84
88
  isTranslationActive: isTranslationActive,
85
- canTranslate: hasTranscriptText,
89
+ canTranslate: canTranslate,
86
90
  onPlayPress: handlePlayPress,
87
91
  onTranslationPress: handleTranslationToggle
88
92
  })]
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeUi","require","_effectorReact","_react","_interopRequireWildcard","_reactI18next","_reactNative","_reactNativeReanimated","_interopRequireDefault","_constants","_helpers","_types","_i18n","_useVoiceTranscriptionEffects","_VoiceTranscriptContent","_VoiceTranscriptionCollapsible","_VoiceTranscriptionHeaderActions","_jsxRuntime","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","VoiceTranscription","style","model","answers","attemptOffset","attemptsCount","problemId","variant","VoiceTranscriptionVariant","SMALL","useText","i18n","useTranslation","playerState","isLoadingTranscripts","isTranslationActive","translations","isTranslating","useUnit","$playerState","loader","loadAllTranscripts","pending","translation","$isActive","$translations","translate","activeAttempt","getActiveAttempt","isLargeVariant","LARGE","answersKey","useMemo","map","_id","audioFileId","join","useVoiceTranscriptionEffects","hasActiveAudio","undefined","activeTranscript","getTranscript","hasTranscriptText","NO_AUDIO_BE_MESSAGE","isActiveTranscriptLoading","cachedTranslation","showTranslation","isTranslationLoading","displayText","useEffect","attemptNumber","targetLanguage","language","handlePlayPress","useCallback","setActive","togglePlayPause","handleTranslationToggle","toggle","jsxs","View","styles","container","largeContainer","children","header","jsx","Typography","title","VoiceTranscriptionHeaderActions","canTranslate","onPlayPress","onTranslationPress","VoiceTranscriptContent","text","isLoading","VoiceTranscriptionCollapsible","dropdown","exports","StyleSheet","create","position","top","left","width","maxHeight","minHeight","padding","boxShadow","borderRadius","backgroundColor","COLORS","NEUTRAL_1","overflow","height","flexDirection","justifyContent","alignItems","marginBottom","color","NEUTRAL_9","marginLeft"],"sourceRoot":"../../../../../../src","sources":["features/voice/playing/components/VoiceTranscription.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeUi","require","_effectorReact","_react","_interopRequireWildcard","_reactI18next","_reactNative","_reactNativeReanimated","_interopRequireDefault","_constants","_helpers","_types","_supportedLanguages","_i18n","_useVoiceTranscriptionEffects","_VoiceTranscriptContent","_VoiceTranscriptionCollapsible","_VoiceTranscriptionHeaderActions","_jsxRuntime","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","VoiceTranscription","style","model","answers","attemptOffset","attemptsCount","problemId","variant","VoiceTranscriptionVariant","SMALL","useText","i18n","useTranslation","playerState","isLoadingTranscripts","isTranslationActive","translations","isTranslating","useUnit","$playerState","loader","loadAllTranscripts","pending","translation","$isActive","$translations","translate","activeAttempt","getActiveAttempt","isLargeVariant","LARGE","answersKey","useMemo","map","_id","audioFileId","join","useVoiceTranscriptionEffects","hasActiveAudio","undefined","activeTranscript","getTranscript","hasTranscriptText","NO_AUDIO_BE_MESSAGE","isActiveTranscriptLoading","transcriptLanguage","getTranscriptLanguage","isSourceSameAsTarget","resolveGoogleLanguageCode","language","canTranslate","cachedTranslation","showTranslation","isTranslationLoading","displayText","useEffect","attemptNumber","targetLanguage","handlePlayPress","useCallback","setActive","togglePlayPause","handleTranslationToggle","toggle","jsxs","View","styles","container","largeContainer","children","header","jsx","Typography","title","VoiceTranscriptionHeaderActions","onPlayPress","onTranslationPress","VoiceTranscriptContent","text","isLoading","VoiceTranscriptionCollapsible","dropdown","exports","StyleSheet","create","position","top","left","width","maxHeight","minHeight","padding","boxShadow","borderRadius","backgroundColor","COLORS","NEUTRAL_1","overflow","height","flexDirection","justifyContent","alignItems","marginBottom","color","NEUTRAL_9","marginLeft"],"sourceRoot":"../../../../../../src","sources":["features/voice/playing/components/VoiceTranscription.tsx"],"mappings":"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","ignoreList":[]}
@@ -69,6 +69,9 @@ class TranscriptionsDownloaderModel {
69
69
  getTranscript(attemptNumber) {
70
70
  return this.collection.get(attemptNumber)?.transcript;
71
71
  }
72
+ getTranscriptLanguage(attemptNumber) {
73
+ return this.collection.get(attemptNumber)?.transcriptLanguage;
74
+ }
72
75
  isTranscriptLoading(attemptNumber) {
73
76
  return this.collection.get(attemptNumber)?.transcriptLoading || false;
74
77
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_effector","require","_constants","TranscriptionsDownloaderModel","setTranscriptsLoaded","createEvent","reset","$transcriptsLoaded","restore","constructor","collection","api","fetchTranscriptWithRetry","audioFileId","attempt","TRANSCRIPT_MAX_RETRIES","response","getAudioFileTranscript","status","text","language","NO_AUDIO_BE_MESSAGE","Promise","resolve","setTimeout","TRANSCRIPT_RETRY_INTERVAL_MS","loadAllTranscripts","createEffect","attempts","getAll","transcriptPromises","map","item","hasTranscript","attemptNumber","update","transcriptLoading","transcript","transcriptLanguage","transcriptError","undefined","error","Error","message","all","getTranscript","get","isTranscriptLoading","exports"],"sourceRoot":"../../../../../../src","sources":["features/voice/playing/model/TranscriptionsDownloaderModel.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_effector","require","_constants","TranscriptionsDownloaderModel","setTranscriptsLoaded","createEvent","reset","$transcriptsLoaded","restore","constructor","collection","api","fetchTranscriptWithRetry","audioFileId","attempt","TRANSCRIPT_MAX_RETRIES","response","getAudioFileTranscript","status","text","language","NO_AUDIO_BE_MESSAGE","Promise","resolve","setTimeout","TRANSCRIPT_RETRY_INTERVAL_MS","loadAllTranscripts","createEffect","attempts","getAll","transcriptPromises","map","item","hasTranscript","attemptNumber","update","transcriptLoading","transcript","transcriptLanguage","transcriptError","undefined","error","Error","message","all","getTranscript","get","getTranscriptLanguage","isTranscriptLoading","exports"],"sourceRoot":"../../../../../../src","sources":["features/voice/playing/model/TranscriptionsDownloaderModel.ts"],"mappings":"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","ignoreList":[]}
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { createEffect } from 'effector';
4
4
  import { TranslationProvider } from "../translation.interface.js";
5
- import { GoogleTranslateLanguage } from "./supportedLanguages.js";
5
+ import { GoogleTranslateLanguage, resolveGoogleLanguageCode } from "./supportedLanguages.js";
6
6
  import { decodeHtmlEntities } from "../../helpers.js";
7
7
  export class GoogleTranslationProvider extends TranslationProvider {
8
8
  constructor({
@@ -15,24 +15,31 @@ export class GoogleTranslationProvider extends TranslationProvider {
15
15
  });
16
16
  this.getTranslationFx = createEffect(api.translateRequest);
17
17
  }
18
+ resolveLanguage(language) {
19
+ return resolveGoogleLanguageCode(language);
20
+ }
18
21
  async request(text, targetLanguage, sourceLanguage) {
22
+ const resolvedTarget = this.resolveLanguage(targetLanguage) ?? targetLanguage;
23
+ const resolvedSource = sourceLanguage ? this.resolveLanguage(sourceLanguage) ?? undefined : undefined;
19
24
  const response = await this.getTranslationFx({
20
25
  text: [text],
21
- targetLanguage,
22
- sourceLanguage
26
+ targetLanguage: resolvedTarget,
27
+ sourceLanguage: resolvedSource
23
28
  });
24
29
  const translated = response.data.translations[0]?.translatedText ?? '';
25
- return this.applyGlossary(decodeHtmlEntities(translated), targetLanguage);
30
+ return this.applyGlossary(decodeHtmlEntities(translated), resolvedTarget);
26
31
  }
27
32
  async requestBatch(text, targetLanguage, sourceLanguage) {
33
+ const resolvedTarget = this.resolveLanguage(targetLanguage) ?? targetLanguage;
34
+ const resolvedSource = sourceLanguage ? this.resolveLanguage(sourceLanguage) ?? undefined : undefined;
28
35
  const response = await this.getTranslationFx({
29
36
  text,
30
- targetLanguage,
31
- sourceLanguage
37
+ targetLanguage: resolvedTarget,
38
+ sourceLanguage: resolvedSource
32
39
  });
33
40
  return response.data.translations.map(({
34
41
  translatedText
35
- }) => this.applyGlossary(decodeHtmlEntities(translatedText), targetLanguage));
42
+ }) => this.applyGlossary(decodeHtmlEntities(translatedText), resolvedTarget));
36
43
  }
37
44
  }
38
45
  //# sourceMappingURL=GoogleTranslationProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createEffect","TranslationProvider","GoogleTranslateLanguage","decodeHtmlEntities","GoogleTranslationProvider","constructor","api","glossaries","supportedLanguages","Object","values","getTranslationFx","translateRequest","request","text","targetLanguage","sourceLanguage","response","translated","data","translations","translatedText","applyGlossary","requestBatch","map"],"sourceRoot":"../../../../../../src","sources":["features/translation/providers/google/GoogleTranslationProvider.ts"],"mappings":";;AAAA,SAASA,YAAY,QAAgB,UAAU;AAC/C,SAA2BC,mBAAmB,QAAQ,6BAA0B;AAChF,SAASC,uBAAuB,QAAQ,yBAAsB;AAE9D,SAASC,kBAAkB,QAAQ,kBAAe;AASlD,OAAO,MAAMC,yBAAyB,SAASH,mBAAmB,CAAC;EAGjEI,WAAWA,CAAC;IAAEC,GAAG;IAAEC;EAA2C,CAAC,EAAE;IAC/D,KAAK,CAAC;MAAEC,kBAAkB,EAAEC,MAAM,CAACC,MAAM,CAACR,uBAAuB,CAAC;MAAEK;IAAW,CAAC,CAAC;IACjF,IAAI,CAACI,gBAAgB,GAAGX,YAAY,CAACM,GAAG,CAACM,gBAAgB,CAAC;EAC5D;EAEA,MAAaC,OAAOA,CAACC,IAAY,EAAEC,cAAsB,EAAEC,cAAuB,EAAE;IAClF,MAAMC,QAAQ,GAAG,MAAM,IAAI,CAACN,gBAAgB,CAAC;MAAEG,IAAI,EAAE,CAACA,IAAI,CAAC;MAAEC,cAAc;MAAEC;IAAe,CAAC,CAAC;IAC9F,MAAME,UAAU,GAAGD,QAAQ,CAACE,IAAI,CAACC,YAAY,CAAC,CAAC,CAAC,EAAEC,cAAc,IAAI,EAAE;IACtE,OAAO,IAAI,CAACC,aAAa,CAACnB,kBAAkB,CAACe,UAAU,CAAC,EAAEH,cAAc,CAAC;EAC3E;EAEA,MAAaQ,YAAYA,CAACT,IAAc,EAAEC,cAAsB,EAAEC,cAAuB,EAAE;IACzF,MAAMC,QAAQ,GAAG,MAAM,IAAI,CAACN,gBAAgB,CAAC;MAAEG,IAAI;MAAEC,cAAc;MAAEC;IAAe,CAAC,CAAC;IACtF,OAAOC,QAAQ,CAACE,IAAI,CAACC,YAAY,CAACI,GAAG,CAAC,CAAC;MAAEH;IAAe,CAAC,KACvD,IAAI,CAACC,aAAa,CAACnB,kBAAkB,CAACkB,cAAc,CAAC,EAAEN,cAAc,CACvE,CAAC;EACH;AACF","ignoreList":[]}
1
+ {"version":3,"names":["createEffect","TranslationProvider","GoogleTranslateLanguage","resolveGoogleLanguageCode","decodeHtmlEntities","GoogleTranslationProvider","constructor","api","glossaries","supportedLanguages","Object","values","getTranslationFx","translateRequest","resolveLanguage","language","request","text","targetLanguage","sourceLanguage","resolvedTarget","resolvedSource","undefined","response","translated","data","translations","translatedText","applyGlossary","requestBatch","map"],"sourceRoot":"../../../../../../src","sources":["features/translation/providers/google/GoogleTranslationProvider.ts"],"mappings":";;AAAA,SAASA,YAAY,QAAgB,UAAU;AAC/C,SAA2BC,mBAAmB,QAAQ,6BAA0B;AAChF,SAASC,uBAAuB,EAAEC,yBAAyB,QAAQ,yBAAsB;AAEzF,SAASC,kBAAkB,QAAQ,kBAAe;AASlD,OAAO,MAAMC,yBAAyB,SAASJ,mBAAmB,CAAC;EAGjEK,WAAWA,CAAC;IAAEC,GAAG;IAAEC;EAA2C,CAAC,EAAE;IAC/D,KAAK,CAAC;MAAEC,kBAAkB,EAAEC,MAAM,CAACC,MAAM,CAACT,uBAAuB,CAAC;MAAEM;IAAW,CAAC,CAAC;IACjF,IAAI,CAACI,gBAAgB,GAAGZ,YAAY,CAACO,GAAG,CAACM,gBAAgB,CAAC;EAC5D;EAEOC,eAAeA,CAACC,QAAgB,EAAiB;IACtD,OAAOZ,yBAAyB,CAACY,QAAQ,CAAC;EAC5C;EAEA,MAAaC,OAAOA,CAACC,IAAY,EAAEC,cAAsB,EAAEC,cAAuB,EAAE;IAClF,MAAMC,cAAc,GAAG,IAAI,CAACN,eAAe,CAACI,cAAc,CAAC,IAAIA,cAAc;IAC7E,MAAMG,cAAc,GAAGF,cAAc,GAAG,IAAI,CAACL,eAAe,CAACK,cAAc,CAAC,IAAIG,SAAS,GAAGA,SAAS;IACrG,MAAMC,QAAQ,GAAG,MAAM,IAAI,CAACX,gBAAgB,CAAC;MAC3CK,IAAI,EAAE,CAACA,IAAI,CAAC;MACZC,cAAc,EAAEE,cAAc;MAC9BD,cAAc,EAAEE;IAClB,CAAC,CAAC;IACF,MAAMG,UAAU,GAAGD,QAAQ,CAACE,IAAI,CAACC,YAAY,CAAC,CAAC,CAAC,EAAEC,cAAc,IAAI,EAAE;IACtE,OAAO,IAAI,CAACC,aAAa,CAACxB,kBAAkB,CAACoB,UAAU,CAAC,EAAEJ,cAAc,CAAC;EAC3E;EAEA,MAAaS,YAAYA,CAACZ,IAAc,EAAEC,cAAsB,EAAEC,cAAuB,EAAE;IACzF,MAAMC,cAAc,GAAG,IAAI,CAACN,eAAe,CAACI,cAAc,CAAC,IAAIA,cAAc;IAC7E,MAAMG,cAAc,GAAGF,cAAc,GAAG,IAAI,CAACL,eAAe,CAACK,cAAc,CAAC,IAAIG,SAAS,GAAGA,SAAS;IACrG,MAAMC,QAAQ,GAAG,MAAM,IAAI,CAACX,gBAAgB,CAAC;MAC3CK,IAAI;MACJC,cAAc,EAAEE,cAAc;MAC9BD,cAAc,EAAEE;IAClB,CAAC,CAAC;IACF,OAAOE,QAAQ,CAACE,IAAI,CAACC,YAAY,CAACI,GAAG,CAAC,CAAC;MAAEH;IAAe,CAAC,KACvD,IAAI,CAACC,aAAa,CAACxB,kBAAkB,CAACuB,cAAc,CAAC,EAAEP,cAAc,CACvE,CAAC;EACH;AACF","ignoreList":[]}
@@ -1,5 +1,27 @@
1
1
  "use strict";
2
2
 
3
+ const SUPPORTED_CODES = new Set();
4
+ const NAME_TO_CODE = {};
5
+ const normalizeLanguageName = language => language.trim().toUpperCase().replace(/[\s()-]+/g, '_');
6
+
7
+ /**
8
+ * Resolves an arbitrary language input (ISO code, locale, or English name) to the
9
+ * Google Translate ISO code. Returns null when the language is not supported.
10
+ *
11
+ * Examples:
12
+ * "en" → "en"
13
+ * "en-SE" → "en" (base fallback)
14
+ * "zh-CN" → "zh-CN" (exact match)
15
+ * "Spanish" → "es" (name lookup)
16
+ * "Chinese Simplified" → "zh-CN"
17
+ */
18
+ export const resolveGoogleLanguageCode = language => {
19
+ if (!language) return null;
20
+ if (SUPPORTED_CODES.has(language)) return language;
21
+ const base = language.split('-')[0];
22
+ if (base !== language && SUPPORTED_CODES.has(base)) return base;
23
+ return NAME_TO_CODE[normalizeLanguageName(language)] ?? null;
24
+ };
3
25
  export const GoogleTranslateLanguage = {
4
26
  ABKHAZ: 'ab',
5
27
  ACEHNESE: 'ace',
@@ -196,4 +218,8 @@ export const GoogleTranslateLanguage = {
196
218
  YUCATEC_MAYA: 'yua',
197
219
  ZULU: 'zu'
198
220
  };
221
+ Object.entries(GoogleTranslateLanguage).forEach(([name, code]) => {
222
+ SUPPORTED_CODES.add(code);
223
+ NAME_TO_CODE[name] = code;
224
+ });
199
225
  //# sourceMappingURL=supportedLanguages.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["GoogleTranslateLanguage","ABKHAZ","ACEHNESE","ACHOLI","AFRIKAANS","ALBANIAN","ALUR","AMHARIC","ARABIC","ARMENIAN","ASSAMESE","AWADHI","AYMARA","AZERBAIJANI","BALINESE","BAMBARA","BASHKIR","BASQUE","BATAK_KARO","BATAK_SIMALUNGUN","BATAK_TOBA","BELARUSIAN","BEMBA","BENGALI","BETAWI","BHOJPURI","BIKOL","BOSNIAN","BRETON","BULGARIAN","BURMESE","BURYAT","CANTONESE","CATALAN","CEBUANO","CHICHEWA_NYANJA","CHINESE_SIMPLIFIED","CHINESE_TRADITIONAL","CHUVASH","CORSICAN","CRIMEAN_TATAR","CROATIAN","CZECH","DANISH","DINKA","DIVEHI","DOGRI","DOMBE","DUTCH","DZONGKHA","ENGLISH","ESPERANTO","ESTONIAN","EWE","FIJIAN","FILIPINO_TAGALOG","FINNISH","FRENCH","FRENCH_CANADA","FRENCH_FRANCE","FRISIAN","FULFULDE","GA","GALICIAN","GANDA_LUGANDA","GEORGIAN","GERMAN","GREEK","GUARANI","GUJARATI","HAITIAN_CREOLE","HAKHA_CHIN","HAUSA","HAWAIIAN","HEBREW","HILIGAYNON","HINDI","HMONG","HUNGARIAN","HUNSRIK","ICELANDIC","IGBO","ILOKO","INDONESIAN","IRISH","ITALIAN","JAPANESE","JAVANESE","KANNADA","KAPAMPANGAN","KAZAKH","KHMER","KIGA","KINYARWANDA","KITUBA","KONKANI","KOREAN","KRIO","KURMANJI","KYRGYZ","LAO","LATGALIAN","LATIN","LATVIAN","LIGURIAN","LIMBURGAN","LINGALA","LITHUANIAN","LOMBARD","LUO","LUXEMBOURGISH","MACEDONIAN","MAITHILI","MAKASSAR","MALAGASY","MALAY","MALAYALAM","MALAY_JAWI","MALTESE","MAORI","MARATHI","MEADOW_MARI","MEITEILON_MANIPURI","MINANG","MIZO","MONGOLIAN","NDEBELE_SOUTH","NEPALBHASA_NEWARI","NEPALI","NORTHERN_SOTHO","NORWEGIAN","NUER","OCCITAN","ODIA","OROMO","PANGASINAN","PAPIAMENTO","PASHTO","PERSIAN","POLISH","PORTUGUESE","PORTUGUESE_BRAZIL","PORTUGUESE_PORTUGAL","PUNJABI","PUNJABI_SHAHMUKHI","QUECHUA","ROMANI","ROMANIAN","RUNDI","RUSSIAN","SAMOAN","SANGO","SANSKRIT","SCOTS_GAELIC","SERBIAN","SESOTHO","SEYCHELLOIS_CREOLE","SHAN","SHONA","SICILIAN","SILESIAN","SINDHI","SINHALA","SLOVAK","SLOVENIAN","SOMALI","SORANI","SPANISH","SUNDANESE","SWAHILI","SWATI","SWEDISH","TAJIK","TAMIL","TATAR","TELUGU","TETUM","THAI","TIGRINYA","TSONGA","TSWANA","TURKISH","TURKMEN","TWI_AKAN","UKRAINIAN","URDU","UYGHUR","UZBEK","VIETNAMESE","WELSH","XHOSA","YIDDISH","YORUBA","YUCATEC_MAYA","ZULU"],"sourceRoot":"../../../../../../src","sources":["features/translation/providers/google/supportedLanguages.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["SUPPORTED_CODES","Set","NAME_TO_CODE","normalizeLanguageName","language","trim","toUpperCase","replace","resolveGoogleLanguageCode","has","base","split","GoogleTranslateLanguage","ABKHAZ","ACEHNESE","ACHOLI","AFRIKAANS","ALBANIAN","ALUR","AMHARIC","ARABIC","ARMENIAN","ASSAMESE","AWADHI","AYMARA","AZERBAIJANI","BALINESE","BAMBARA","BASHKIR","BASQUE","BATAK_KARO","BATAK_SIMALUNGUN","BATAK_TOBA","BELARUSIAN","BEMBA","BENGALI","BETAWI","BHOJPURI","BIKOL","BOSNIAN","BRETON","BULGARIAN","BURMESE","BURYAT","CANTONESE","CATALAN","CEBUANO","CHICHEWA_NYANJA","CHINESE_SIMPLIFIED","CHINESE_TRADITIONAL","CHUVASH","CORSICAN","CRIMEAN_TATAR","CROATIAN","CZECH","DANISH","DINKA","DIVEHI","DOGRI","DOMBE","DUTCH","DZONGKHA","ENGLISH","ESPERANTO","ESTONIAN","EWE","FIJIAN","FILIPINO_TAGALOG","FINNISH","FRENCH","FRENCH_CANADA","FRENCH_FRANCE","FRISIAN","FULFULDE","GA","GALICIAN","GANDA_LUGANDA","GEORGIAN","GERMAN","GREEK","GUARANI","GUJARATI","HAITIAN_CREOLE","HAKHA_CHIN","HAUSA","HAWAIIAN","HEBREW","HILIGAYNON","HINDI","HMONG","HUNGARIAN","HUNSRIK","ICELANDIC","IGBO","ILOKO","INDONESIAN","IRISH","ITALIAN","JAPANESE","JAVANESE","KANNADA","KAPAMPANGAN","KAZAKH","KHMER","KIGA","KINYARWANDA","KITUBA","KONKANI","KOREAN","KRIO","KURMANJI","KYRGYZ","LAO","LATGALIAN","LATIN","LATVIAN","LIGURIAN","LIMBURGAN","LINGALA","LITHUANIAN","LOMBARD","LUO","LUXEMBOURGISH","MACEDONIAN","MAITHILI","MAKASSAR","MALAGASY","MALAY","MALAYALAM","MALAY_JAWI","MALTESE","MAORI","MARATHI","MEADOW_MARI","MEITEILON_MANIPURI","MINANG","MIZO","MONGOLIAN","NDEBELE_SOUTH","NEPALBHASA_NEWARI","NEPALI","NORTHERN_SOTHO","NORWEGIAN","NUER","OCCITAN","ODIA","OROMO","PANGASINAN","PAPIAMENTO","PASHTO","PERSIAN","POLISH","PORTUGUESE","PORTUGUESE_BRAZIL","PORTUGUESE_PORTUGAL","PUNJABI","PUNJABI_SHAHMUKHI","QUECHUA","ROMANI","ROMANIAN","RUNDI","RUSSIAN","SAMOAN","SANGO","SANSKRIT","SCOTS_GAELIC","SERBIAN","SESOTHO","SEYCHELLOIS_CREOLE","SHAN","SHONA","SICILIAN","SILESIAN","SINDHI","SINHALA","SLOVAK","SLOVENIAN","SOMALI","SORANI","SPANISH","SUNDANESE","SWAHILI","SWATI","SWEDISH","TAJIK","TAMIL","TATAR","TELUGU","TETUM","THAI","TIGRINYA","TSONGA","TSWANA","TURKISH","TURKMEN","TWI_AKAN","UKRAINIAN","URDU","UYGHUR","UZBEK","VIETNAMESE","WELSH","XHOSA","YIDDISH","YORUBA","YUCATEC_MAYA","ZULU","Object","entries","forEach","name","code","add"],"sourceRoot":"../../../../../../src","sources":["features/translation/providers/google/supportedLanguages.ts"],"mappings":"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","ignoreList":[]}
@@ -11,7 +11,21 @@ export class TranslationProvider {
11
11
  this.glossaries = glossaries;
12
12
  }
13
13
  isTargetSupported(language) {
14
- return this.supportedLanguages.has(language);
14
+ return this.resolveLanguage(language) !== null;
15
+ }
16
+
17
+ /**
18
+ * Returns the provider-supported variant of `language`, falling back to the base
19
+ * language part (e.g. "en-SE" → "en") when the exact locale is not listed.
20
+ * Subclasses may override to add their own resolution (e.g. language names).
21
+ * Returns null when the language cannot be resolved.
22
+ */
23
+ resolveLanguage(language) {
24
+ if (!language) return null;
25
+ if (this.supportedLanguages.has(language)) return language;
26
+ const base = language.split('-')[0];
27
+ if (base !== language && this.supportedLanguages.has(base)) return base;
28
+ return null;
15
29
  }
16
30
  getSupportedLanguages() {
17
31
  return this.supportedLanguages.values();
@@ -1 +1 @@
1
- {"version":3,"names":["replaceMappedTokens","TranslationProvider","glossaries","constructor","supportedLanguages","Set","isTargetSupported","language","has","getSupportedLanguages","values","applyGlossary","text","targetLanguage","glossary"],"sourceRoot":"../../../../../src","sources":["features/translation/providers/translation.interface.ts"],"mappings":";;AAAA,SAASA,mBAAmB,QAAQ,eAAY;AAWhD,OAAO,MAAeC,mBAAmB,CAAC;EAErBC,UAAU,GAAqB,CAAC,CAAC;EAE1CC,WAAWA,CAAC;IAAEC,kBAAkB;IAAEF,UAAU,GAAG,CAAC;EAA4B,CAAC,EAAE;IACvF,IAAI,CAACE,kBAAkB,GAAG,IAAIC,GAAG,CAACD,kBAAkB,CAAC;IACrD,IAAI,CAACF,UAAU,GAAGA,UAAU;EAC9B;EAaOI,iBAAiBA,CAACC,QAAgB,EAAE;IACzC,OAAO,IAAI,CAACH,kBAAkB,CAACI,GAAG,CAACD,QAAQ,CAAC;EAC9C;EAEOE,qBAAqBA,CAAA,EAAG;IAC7B,OAAO,IAAI,CAACL,kBAAkB,CAACM,MAAM,CAAC,CAAC;EACzC;;EAEA;AACF;AACA;AACA;EACSC,aAAaA,CAACC,IAAY,EAAEC,cAAsB,EAAU;IACjE,MAAMC,QAAQ,GAAG,IAAI,CAACZ,UAAU,CAACW,cAAc,CAAC;IAChD,IAAI,CAACC,QAAQ,EAAE,OAAOF,IAAI;IAC1B,OAAOZ,mBAAmB,CAACY,IAAI,EAAEE,QAAQ,CAAC;EAC5C;AACF","ignoreList":[]}
1
+ {"version":3,"names":["replaceMappedTokens","TranslationProvider","glossaries","constructor","supportedLanguages","Set","isTargetSupported","language","resolveLanguage","has","base","split","getSupportedLanguages","values","applyGlossary","text","targetLanguage","glossary"],"sourceRoot":"../../../../../src","sources":["features/translation/providers/translation.interface.ts"],"mappings":";;AAAA,SAASA,mBAAmB,QAAQ,eAAY;AAWhD,OAAO,MAAeC,mBAAmB,CAAC;EAErBC,UAAU,GAAqB,CAAC,CAAC;EAE1CC,WAAWA,CAAC;IAAEC,kBAAkB;IAAEF,UAAU,GAAG,CAAC;EAA4B,CAAC,EAAE;IACvF,IAAI,CAACE,kBAAkB,GAAG,IAAIC,GAAG,CAACD,kBAAkB,CAAC;IACrD,IAAI,CAACF,UAAU,GAAGA,UAAU;EAC9B;EAaOI,iBAAiBA,CAACC,QAAgB,EAAE;IACzC,OAAO,IAAI,CAACC,eAAe,CAACD,QAAQ,CAAC,KAAK,IAAI;EAChD;;EAEA;AACF;AACA;AACA;AACA;AACA;EACSC,eAAeA,CAACD,QAAgB,EAAiB;IACtD,IAAI,CAACA,QAAQ,EAAE,OAAO,IAAI;IAC1B,IAAI,IAAI,CAACH,kBAAkB,CAACK,GAAG,CAACF,QAAQ,CAAC,EAAE,OAAOA,QAAQ;IAC1D,MAAMG,IAAI,GAAGH,QAAQ,CAACI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACnC,IAAID,IAAI,KAAKH,QAAQ,IAAI,IAAI,CAACH,kBAAkB,CAACK,GAAG,CAACC,IAAI,CAAC,EAAE,OAAOA,IAAI;IACvE,OAAO,IAAI;EACb;EAEOE,qBAAqBA,CAAA,EAAG;IAC7B,OAAO,IAAI,CAACR,kBAAkB,CAACS,MAAM,CAAC,CAAC;EACzC;;EAEA;AACF;AACA;AACA;EACSC,aAAaA,CAACC,IAAY,EAAEC,cAAsB,EAAU;IACjE,MAAMC,QAAQ,GAAG,IAAI,CAACf,UAAU,CAACc,cAAc,CAAC;IAChD,IAAI,CAACC,QAAQ,EAAE,OAAOF,IAAI;IAC1B,OAAOf,mBAAmB,CAACe,IAAI,EAAEE,QAAQ,CAAC;EAC5C;AACF","ignoreList":[]}
@@ -9,6 +9,7 @@ import Animated from 'react-native-reanimated';
9
9
  import { NO_AUDIO_BE_MESSAGE } from "../../constants.js";
10
10
  import { getActiveAttempt } from "../../helpers.js";
11
11
  import { VoiceTranscriptionVariant } from "../../types.js";
12
+ import { resolveGoogleLanguageCode } from "../../../translation/providers/google/supportedLanguages.js";
12
13
  import { useText } from "../../../../i18n/i18n.js";
13
14
  import { useVoiceTranscriptionEffects } from "../hooks/useVoiceTranscriptionEffects.js";
14
15
  import { VoiceTranscriptContent } from "./VoiceTranscriptContent.js";
@@ -43,8 +44,11 @@ export const VoiceTranscription = ({
43
44
  const activeTranscript = activeAttempt !== null ? model.loader.getTranscript(activeAttempt) : null;
44
45
  const hasTranscriptText = !!activeTranscript && activeTranscript !== NO_AUDIO_BE_MESSAGE;
45
46
  const isActiveTranscriptLoading = isLoadingTranscripts && hasActiveAudio && !activeTranscript;
47
+ const transcriptLanguage = activeAttempt !== null ? model.loader.getTranscriptLanguage(activeAttempt) : undefined;
48
+ const isSourceSameAsTarget = !!transcriptLanguage && resolveGoogleLanguageCode(transcriptLanguage) === resolveGoogleLanguageCode(i18n.language);
49
+ const canTranslate = hasTranscriptText && !isSourceSameAsTarget;
46
50
  const cachedTranslation = activeAttempt !== null ? translations[activeAttempt] : undefined;
47
- const showTranslation = isTranslationActive && hasTranscriptText;
51
+ const showTranslation = isTranslationActive && canTranslate;
48
52
  const isTranslationLoading = showTranslation && !cachedTranslation && isTranslating;
49
53
  const displayText = showTranslation ? cachedTranslation ?? activeTranscript : hasTranscriptText ? activeTranscript : t('voice.transcriptNotAvailable');
50
54
  useEffect(() => {
@@ -75,7 +79,7 @@ export const VoiceTranscription = ({
75
79
  }), hasActiveAudio && /*#__PURE__*/_jsx(VoiceTranscriptionHeaderActions, {
76
80
  playerState: playerState,
77
81
  isTranslationActive: isTranslationActive,
78
- canTranslate: hasTranscriptText,
82
+ canTranslate: canTranslate,
79
83
  onPlayPress: handlePlayPress,
80
84
  onTranslationPress: handleTranslationToggle
81
85
  })]
@@ -1 +1 @@
1
- {"version":3,"names":["Typography","COLORS","useUnit","React","useCallback","useEffect","useMemo","useTranslation","StyleSheet","View","Animated","NO_AUDIO_BE_MESSAGE","getActiveAttempt","VoiceTranscriptionVariant","useText","useVoiceTranscriptionEffects","VoiceTranscriptContent","VoiceTranscriptionCollapsible","VoiceTranscriptionHeaderActions","jsx","_jsx","jsxs","_jsxs","VoiceTranscription","style","model","answers","attemptOffset","attemptsCount","problemId","variant","SMALL","t","i18n","playerState","isLoadingTranscripts","isTranslationActive","translations","isTranslating","$playerState","loader","loadAllTranscripts","pending","translation","$isActive","$translations","translate","activeAttempt","isLargeVariant","LARGE","answersKey","map","a","_id","audioFileId","join","hasActiveAudio","undefined","activeTranscript","getTranscript","hasTranscriptText","isActiveTranscriptLoading","cachedTranslation","showTranslation","isTranslationLoading","displayText","attemptNumber","targetLanguage","language","handlePlayPress","setActive","togglePlayPause","handleTranslationToggle","toggle","styles","container","largeContainer","children","header","title","canTranslate","onPlayPress","onTranslationPress","text","isLoading","dropdown","create","position","top","left","width","maxHeight","minHeight","padding","boxShadow","borderRadius","backgroundColor","NEUTRAL_1","overflow","height","flexDirection","justifyContent","alignItems","marginBottom","color","NEUTRAL_9","marginLeft"],"sourceRoot":"../../../../../../src","sources":["features/voice/playing/components/VoiceTranscription.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Typography","COLORS","useUnit","React","useCallback","useEffect","useMemo","useTranslation","StyleSheet","View","Animated","NO_AUDIO_BE_MESSAGE","getActiveAttempt","VoiceTranscriptionVariant","resolveGoogleLanguageCode","useText","useVoiceTranscriptionEffects","VoiceTranscriptContent","VoiceTranscriptionCollapsible","VoiceTranscriptionHeaderActions","jsx","_jsx","jsxs","_jsxs","VoiceTranscription","style","model","answers","attemptOffset","attemptsCount","problemId","variant","SMALL","t","i18n","playerState","isLoadingTranscripts","isTranslationActive","translations","isTranslating","$playerState","loader","loadAllTranscripts","pending","translation","$isActive","$translations","translate","activeAttempt","isLargeVariant","LARGE","answersKey","map","a","_id","audioFileId","join","hasActiveAudio","undefined","activeTranscript","getTranscript","hasTranscriptText","isActiveTranscriptLoading","transcriptLanguage","getTranscriptLanguage","isSourceSameAsTarget","language","canTranslate","cachedTranslation","showTranslation","isTranslationLoading","displayText","attemptNumber","targetLanguage","handlePlayPress","setActive","togglePlayPause","handleTranslationToggle","toggle","styles","container","largeContainer","children","header","title","onPlayPress","onTranslationPress","text","isLoading","dropdown","create","position","top","left","width","maxHeight","minHeight","padding","boxShadow","borderRadius","backgroundColor","NEUTRAL_1","overflow","height","flexDirection","justifyContent","alignItems","marginBottom","color","NEUTRAL_9","marginLeft"],"sourceRoot":"../../../../../../src","sources":["features/voice/playing/components/VoiceTranscription.tsx"],"mappings":"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","ignoreList":[]}
@@ -65,6 +65,9 @@ export class TranscriptionsDownloaderModel {
65
65
  getTranscript(attemptNumber) {
66
66
  return this.collection.get(attemptNumber)?.transcript;
67
67
  }
68
+ getTranscriptLanguage(attemptNumber) {
69
+ return this.collection.get(attemptNumber)?.transcriptLanguage;
70
+ }
68
71
  isTranscriptLoading(attemptNumber) {
69
72
  return this.collection.get(attemptNumber)?.transcriptLoading || false;
70
73
  }
@@ -1 +1 @@
1
- {"version":3,"names":["createEffect","createEvent","restore","NO_AUDIO_BE_MESSAGE","TRANSCRIPT_MAX_RETRIES","TRANSCRIPT_RETRY_INTERVAL_MS","TranscriptionsDownloaderModel","setTranscriptsLoaded","reset","$transcriptsLoaded","constructor","collection","api","fetchTranscriptWithRetry","audioFileId","attempt","response","getAudioFileTranscript","status","text","language","Promise","resolve","setTimeout","loadAllTranscripts","attempts","getAll","transcriptPromises","map","item","hasTranscript","attemptNumber","update","transcriptLoading","transcript","transcriptLanguage","transcriptError","undefined","error","Error","message","all","getTranscript","get","isTranscriptLoading"],"sourceRoot":"../../../../../../src","sources":["features/voice/playing/model/TranscriptionsDownloaderModel.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["createEffect","createEvent","restore","NO_AUDIO_BE_MESSAGE","TRANSCRIPT_MAX_RETRIES","TRANSCRIPT_RETRY_INTERVAL_MS","TranscriptionsDownloaderModel","setTranscriptsLoaded","reset","$transcriptsLoaded","constructor","collection","api","fetchTranscriptWithRetry","audioFileId","attempt","response","getAudioFileTranscript","status","text","language","Promise","resolve","setTimeout","loadAllTranscripts","attempts","getAll","transcriptPromises","map","item","hasTranscript","attemptNumber","update","transcriptLoading","transcript","transcriptLanguage","transcriptError","undefined","error","Error","message","all","getTranscript","get","getTranscriptLanguage","isTranscriptLoading"],"sourceRoot":"../../../../../../src","sources":["features/voice/playing/model/TranscriptionsDownloaderModel.ts"],"mappings":"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","ignoreList":[]}
@@ -9,6 +9,7 @@ type GoogleTranslationProviderProps = {
9
9
  export declare class GoogleTranslationProvider extends TranslationProvider {
10
10
  private readonly getTranslationFx;
11
11
  constructor({ api, glossaries }: GoogleTranslationProviderProps);
12
+ resolveLanguage(language: string): string | null;
12
13
  request(text: string, targetLanguage: string, sourceLanguage?: string): Promise<string>;
13
14
  requestBatch(text: string[], targetLanguage: string, sourceLanguage?: string): Promise<string[]>;
14
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GoogleTranslationProvider.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/translation/providers/google/GoogleTranslationProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAEhF,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAG/E,KAAK,8BAA8B,GAAG;IACpC,GAAG,EAAE;QACH,gBAAgB,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAA;KACtF,CAAA;IACD,UAAU,CAAC,EAAE,gBAAgB,CAAA;CAC9B,CAAA;AAED,qBAAa,yBAA0B,SAAQ,mBAAmB;IAChE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAuD;gBAE5E,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,8BAA8B;IAKlD,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM;IAMrE,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM;CAM1F"}
1
+ {"version":3,"file":"GoogleTranslationProvider.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/translation/providers/google/GoogleTranslationProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAEhF,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAG/E,KAAK,8BAA8B,GAAG;IACpC,GAAG,EAAE;QACH,gBAAgB,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAA;KACtF,CAAA;IACD,UAAU,CAAC,EAAE,gBAAgB,CAAA;CAC9B,CAAA;AAED,qBAAa,yBAA0B,SAAQ,mBAAmB;IAChE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAuD;gBAE5E,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,8BAA8B;IAKxD,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAI1C,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM;IAYrE,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM;CAY1F"}
@@ -1,3 +1,15 @@
1
+ /**
2
+ * Resolves an arbitrary language input (ISO code, locale, or English name) to the
3
+ * Google Translate ISO code. Returns null when the language is not supported.
4
+ *
5
+ * Examples:
6
+ * "en" → "en"
7
+ * "en-SE" → "en" (base fallback)
8
+ * "zh-CN" → "zh-CN" (exact match)
9
+ * "Spanish" → "es" (name lookup)
10
+ * "Chinese Simplified" → "zh-CN"
11
+ */
12
+ export declare const resolveGoogleLanguageCode: (language?: string | null) => string | null;
1
13
  export declare const GoogleTranslateLanguage: {
2
14
  ABKHAZ: string;
3
15
  ACEHNESE: string;
@@ -1 +1 @@
1
- {"version":3,"file":"supportedLanguages.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/translation/providers/google/supportedLanguages.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmMnC,CAAA"}
1
+ {"version":3,"file":"supportedLanguages.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/translation/providers/google/supportedLanguages.ts"],"names":[],"mappings":"AASA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,yBAAyB,cAAe,MAAM,GAAG,IAAI,KAAG,MAAM,GAAG,IAM7E,CAAA;AAED,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmMnC,CAAA"}
@@ -12,6 +12,13 @@ export declare abstract class TranslationProvider {
12
12
  abstract request(text: string, targetLanguage: string, sourceLanguage?: string): Promise<string>;
13
13
  abstract requestBatch(text: string[], targetLanguage: string, sourceLanguage?: string): Promise<string[]>;
14
14
  isTargetSupported(language: string): boolean;
15
+ /**
16
+ * Returns the provider-supported variant of `language`, falling back to the base
17
+ * language part (e.g. "en-SE" → "en") when the exact locale is not listed.
18
+ * Subclasses may override to add their own resolution (e.g. language names).
19
+ * Returns null when the language cannot be resolved.
20
+ */
21
+ resolveLanguage(language: string): string | null;
15
22
  getSupportedLanguages(): SetIterator<string>;
16
23
  /**
17
24
  * Replaces full standalone words in text using a custom glossary for the target language,
@@ -1 +1 @@
1
- {"version":3,"file":"translation.interface.d.ts","sourceRoot":"","sources":["../../../../../../src/features/translation/providers/translation.interface.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC/C,CAAA;AAED,KAAK,wBAAwB,GAAG;IAC9B,kBAAkB,EAAE,MAAM,EAAE,CAAA;IAC5B,UAAU,CAAC,EAAE,gBAAgB,CAAA;CAC9B,CAAA;AAED,8BAAsB,mBAAmB;IACvC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC1D,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAK;IAEpD,SAAS,aAAa,EAAE,kBAAkB,EAAE,UAAe,EAAE,EAAE,wBAAwB;aAKvE,OAAO,CACrB,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,MAAM,EACtB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,CAAC;aACF,YAAY,CAC1B,IAAI,EAAE,MAAM,EAAE,EACd,cAAc,EAAE,MAAM,EACtB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,EAAE,CAAC;IAEb,iBAAiB,CAAC,QAAQ,EAAE,MAAM;IAIlC,qBAAqB;IAI5B;;;OAGG;IACI,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM;CAKnE"}
1
+ {"version":3,"file":"translation.interface.d.ts","sourceRoot":"","sources":["../../../../../../src/features/translation/providers/translation.interface.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC/C,CAAA;AAED,KAAK,wBAAwB,GAAG;IAC9B,kBAAkB,EAAE,MAAM,EAAE,CAAA;IAC5B,UAAU,CAAC,EAAE,gBAAgB,CAAA;CAC9B,CAAA;AAED,8BAAsB,mBAAmB;IACvC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC1D,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAK;IAEpD,SAAS,aAAa,EAAE,kBAAkB,EAAE,UAAe,EAAE,EAAE,wBAAwB;aAKvE,OAAO,CACrB,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,MAAM,EACtB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,CAAC;aACF,YAAY,CAC1B,IAAI,EAAE,MAAM,EAAE,EACd,cAAc,EAAE,MAAM,EACtB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,EAAE,CAAC;IAEb,iBAAiB,CAAC,QAAQ,EAAE,MAAM;IAIzC;;;;;OAKG;IACI,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAQhD,qBAAqB;IAI5B;;;OAGG;IACI,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM;CAKnE"}
@@ -1 +1 @@
1
- {"version":3,"file":"VoiceTranscription.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/voice/playing/components/VoiceTranscription.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA0C,MAAM,OAAO,CAAA;AAE9D,OAAO,EAAE,SAAS,EAAoB,SAAS,EAAE,MAAM,cAAc,CAAA;AAIrE,OAAO,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAGpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAK3C,KAAK,uBAAuB,GAAG;IAC7B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IAC5B,KAAK,EAAE,gBAAgB,CAAA;IACvB,OAAO,EAAE,WAAW,EAAE,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,yBAAyB,CAAA;CACpC,CAAA;AAED,eAAO,MAAM,kBAAkB,iFAQ5B,uBAAuB,sBAgGzB,CAAA"}
1
+ {"version":3,"file":"VoiceTranscription.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/voice/playing/components/VoiceTranscription.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA0C,MAAM,OAAO,CAAA;AAE9D,OAAO,EAAE,SAAS,EAAoB,SAAS,EAAE,MAAM,cAAc,CAAA;AAIrE,OAAO,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAIpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAK3C,KAAK,uBAAuB,GAAG;IAC7B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IAC5B,KAAK,EAAE,gBAAgB,CAAA;IACvB,OAAO,EAAE,WAAW,EAAE,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,yBAAyB,CAAA;CACpC,CAAA;AAED,eAAO,MAAM,kBAAkB,iFAQ5B,uBAAuB,sBAwGzB,CAAA"}
@@ -10,6 +10,7 @@ export declare class TranscriptionsDownloaderModel {
10
10
  private fetchTranscriptWithRetry;
11
11
  readonly loadAllTranscripts: import("effector").Effect<void, void, Error>;
12
12
  getTranscript(attemptNumber: number): string | undefined;
13
+ getTranscriptLanguage(attemptNumber: number): string | undefined;
13
14
  isTranscriptLoading(attemptNumber: number): boolean;
14
15
  }
15
16
  //# sourceMappingURL=TranscriptionsDownloaderModel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TranscriptionsDownloaderModel.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/voice/playing/model/TranscriptionsDownloaderModel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAA;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAO5C,qBAAa,6BAA6B;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA+B;IAC1D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAgB;IAEpC,SAAgB,oBAAoB,4CAAyB;IAC7D,SAAgB,KAAK,yCAAgB;IAErC,SAAgB,kBAAkB,4CAA8D;gBAEpF,UAAU,EAAE,6BAA6B,EAAE,GAAG,EAAE,cAAc;YAK5D,wBAAwB;IAqBtC,SAAgB,kBAAkB,+CA6BhC;IAEK,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIxD,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO;CAG3D"}
1
+ {"version":3,"file":"TranscriptionsDownloaderModel.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/voice/playing/model/TranscriptionsDownloaderModel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAA;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAO5C,qBAAa,6BAA6B;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA+B;IAC1D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAgB;IAEpC,SAAgB,oBAAoB,4CAAyB;IAC7D,SAAgB,KAAK,yCAAgB;IAErC,SAAgB,kBAAkB,4CAA8D;gBAEpF,UAAU,EAAE,6BAA6B,EAAE,GAAG,EAAE,cAAc;YAK5D,wBAAwB;IAqBtC,SAAgB,kBAAkB,+CA6BhC;IAEK,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIxD,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIhE,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO;CAG3D"}
@@ -9,6 +9,7 @@ type GoogleTranslationProviderProps = {
9
9
  export declare class GoogleTranslationProvider extends TranslationProvider {
10
10
  private readonly getTranslationFx;
11
11
  constructor({ api, glossaries }: GoogleTranslationProviderProps);
12
+ resolveLanguage(language: string): string | null;
12
13
  request(text: string, targetLanguage: string, sourceLanguage?: string): Promise<string>;
13
14
  requestBatch(text: string[], targetLanguage: string, sourceLanguage?: string): Promise<string[]>;
14
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GoogleTranslationProvider.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/translation/providers/google/GoogleTranslationProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAEhF,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAG/E,KAAK,8BAA8B,GAAG;IACpC,GAAG,EAAE;QACH,gBAAgB,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAA;KACtF,CAAA;IACD,UAAU,CAAC,EAAE,gBAAgB,CAAA;CAC9B,CAAA;AAED,qBAAa,yBAA0B,SAAQ,mBAAmB;IAChE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAuD;gBAE5E,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,8BAA8B;IAKlD,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM;IAMrE,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM;CAM1F"}
1
+ {"version":3,"file":"GoogleTranslationProvider.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/translation/providers/google/GoogleTranslationProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAEhF,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAG/E,KAAK,8BAA8B,GAAG;IACpC,GAAG,EAAE;QACH,gBAAgB,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAA;KACtF,CAAA;IACD,UAAU,CAAC,EAAE,gBAAgB,CAAA;CAC9B,CAAA;AAED,qBAAa,yBAA0B,SAAQ,mBAAmB;IAChE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAuD;gBAE5E,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,8BAA8B;IAKxD,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAI1C,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM;IAYrE,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM;CAY1F"}
@@ -1,3 +1,15 @@
1
+ /**
2
+ * Resolves an arbitrary language input (ISO code, locale, or English name) to the
3
+ * Google Translate ISO code. Returns null when the language is not supported.
4
+ *
5
+ * Examples:
6
+ * "en" → "en"
7
+ * "en-SE" → "en" (base fallback)
8
+ * "zh-CN" → "zh-CN" (exact match)
9
+ * "Spanish" → "es" (name lookup)
10
+ * "Chinese Simplified" → "zh-CN"
11
+ */
12
+ export declare const resolveGoogleLanguageCode: (language?: string | null) => string | null;
1
13
  export declare const GoogleTranslateLanguage: {
2
14
  ABKHAZ: string;
3
15
  ACEHNESE: string;
@@ -1 +1 @@
1
- {"version":3,"file":"supportedLanguages.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/translation/providers/google/supportedLanguages.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmMnC,CAAA"}
1
+ {"version":3,"file":"supportedLanguages.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/translation/providers/google/supportedLanguages.ts"],"names":[],"mappings":"AASA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,yBAAyB,cAAe,MAAM,GAAG,IAAI,KAAG,MAAM,GAAG,IAM7E,CAAA;AAED,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmMnC,CAAA"}
@@ -12,6 +12,13 @@ export declare abstract class TranslationProvider {
12
12
  abstract request(text: string, targetLanguage: string, sourceLanguage?: string): Promise<string>;
13
13
  abstract requestBatch(text: string[], targetLanguage: string, sourceLanguage?: string): Promise<string[]>;
14
14
  isTargetSupported(language: string): boolean;
15
+ /**
16
+ * Returns the provider-supported variant of `language`, falling back to the base
17
+ * language part (e.g. "en-SE" → "en") when the exact locale is not listed.
18
+ * Subclasses may override to add their own resolution (e.g. language names).
19
+ * Returns null when the language cannot be resolved.
20
+ */
21
+ resolveLanguage(language: string): string | null;
15
22
  getSupportedLanguages(): SetIterator<string>;
16
23
  /**
17
24
  * Replaces full standalone words in text using a custom glossary for the target language,
@@ -1 +1 @@
1
- {"version":3,"file":"translation.interface.d.ts","sourceRoot":"","sources":["../../../../../../src/features/translation/providers/translation.interface.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC/C,CAAA;AAED,KAAK,wBAAwB,GAAG;IAC9B,kBAAkB,EAAE,MAAM,EAAE,CAAA;IAC5B,UAAU,CAAC,EAAE,gBAAgB,CAAA;CAC9B,CAAA;AAED,8BAAsB,mBAAmB;IACvC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC1D,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAK;IAEpD,SAAS,aAAa,EAAE,kBAAkB,EAAE,UAAe,EAAE,EAAE,wBAAwB;aAKvE,OAAO,CACrB,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,MAAM,EACtB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,CAAC;aACF,YAAY,CAC1B,IAAI,EAAE,MAAM,EAAE,EACd,cAAc,EAAE,MAAM,EACtB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,EAAE,CAAC;IAEb,iBAAiB,CAAC,QAAQ,EAAE,MAAM;IAIlC,qBAAqB;IAI5B;;;OAGG;IACI,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM;CAKnE"}
1
+ {"version":3,"file":"translation.interface.d.ts","sourceRoot":"","sources":["../../../../../../src/features/translation/providers/translation.interface.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC/C,CAAA;AAED,KAAK,wBAAwB,GAAG;IAC9B,kBAAkB,EAAE,MAAM,EAAE,CAAA;IAC5B,UAAU,CAAC,EAAE,gBAAgB,CAAA;CAC9B,CAAA;AAED,8BAAsB,mBAAmB;IACvC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC1D,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAK;IAEpD,SAAS,aAAa,EAAE,kBAAkB,EAAE,UAAe,EAAE,EAAE,wBAAwB;aAKvE,OAAO,CACrB,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,MAAM,EACtB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,CAAC;aACF,YAAY,CAC1B,IAAI,EAAE,MAAM,EAAE,EACd,cAAc,EAAE,MAAM,EACtB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,EAAE,CAAC;IAEb,iBAAiB,CAAC,QAAQ,EAAE,MAAM;IAIzC;;;;;OAKG;IACI,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAQhD,qBAAqB;IAI5B;;;OAGG;IACI,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM;CAKnE"}
@@ -1 +1 @@
1
- {"version":3,"file":"VoiceTranscription.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/voice/playing/components/VoiceTranscription.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA0C,MAAM,OAAO,CAAA;AAE9D,OAAO,EAAE,SAAS,EAAoB,SAAS,EAAE,MAAM,cAAc,CAAA;AAIrE,OAAO,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAGpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAK3C,KAAK,uBAAuB,GAAG;IAC7B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IAC5B,KAAK,EAAE,gBAAgB,CAAA;IACvB,OAAO,EAAE,WAAW,EAAE,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,yBAAyB,CAAA;CACpC,CAAA;AAED,eAAO,MAAM,kBAAkB,iFAQ5B,uBAAuB,sBAgGzB,CAAA"}
1
+ {"version":3,"file":"VoiceTranscription.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/voice/playing/components/VoiceTranscription.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA0C,MAAM,OAAO,CAAA;AAE9D,OAAO,EAAE,SAAS,EAAoB,SAAS,EAAE,MAAM,cAAc,CAAA;AAIrE,OAAO,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAIpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAK3C,KAAK,uBAAuB,GAAG;IAC7B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IAC5B,KAAK,EAAE,gBAAgB,CAAA;IACvB,OAAO,EAAE,WAAW,EAAE,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,yBAAyB,CAAA;CACpC,CAAA;AAED,eAAO,MAAM,kBAAkB,iFAQ5B,uBAAuB,sBAwGzB,CAAA"}
@@ -10,6 +10,7 @@ export declare class TranscriptionsDownloaderModel {
10
10
  private fetchTranscriptWithRetry;
11
11
  readonly loadAllTranscripts: import("effector").Effect<void, void, Error>;
12
12
  getTranscript(attemptNumber: number): string | undefined;
13
+ getTranscriptLanguage(attemptNumber: number): string | undefined;
13
14
  isTranscriptLoading(attemptNumber: number): boolean;
14
15
  }
15
16
  //# sourceMappingURL=TranscriptionsDownloaderModel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TranscriptionsDownloaderModel.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/voice/playing/model/TranscriptionsDownloaderModel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAA;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAO5C,qBAAa,6BAA6B;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA+B;IAC1D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAgB;IAEpC,SAAgB,oBAAoB,4CAAyB;IAC7D,SAAgB,KAAK,yCAAgB;IAErC,SAAgB,kBAAkB,4CAA8D;gBAEpF,UAAU,EAAE,6BAA6B,EAAE,GAAG,EAAE,cAAc;YAK5D,wBAAwB;IAqBtC,SAAgB,kBAAkB,+CA6BhC;IAEK,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIxD,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO;CAG3D"}
1
+ {"version":3,"file":"TranscriptionsDownloaderModel.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/voice/playing/model/TranscriptionsDownloaderModel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAA;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAO5C,qBAAa,6BAA6B;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA+B;IAC1D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAgB;IAEpC,SAAgB,oBAAoB,4CAAyB;IAC7D,SAAgB,KAAK,yCAAgB;IAErC,SAAgB,kBAAkB,4CAA8D;gBAEpF,UAAU,EAAE,6BAA6B,EAAE,GAAG,EAAE,cAAc;YAK5D,wBAAwB;IAqBtC,SAAgB,kBAAkB,+CA6BhC;IAEK,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIxD,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIhE,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO;CAG3D"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@magmamath/students-features",
3
- "version": "1.3.23-rc.8",
3
+ "version": "1.3.23-rc.9",
4
4
  "description": "Magmamath features library",
5
5
  "source": "src/index.ts",
6
6
  "main": "src/index.ts",
@@ -1,6 +1,6 @@
1
1
  import { createEffect, Effect } from 'effector'
2
2
  import { LanguageGlossary, TranslationProvider } from '../translation.interface'
3
- import { GoogleTranslateLanguage } from './supportedLanguages'
3
+ import { GoogleTranslateLanguage, resolveGoogleLanguageCode } from './supportedLanguages'
4
4
  import { GoogleTranslateProps, GoogleTranslateResponse } from '../google.types'
5
5
  import { decodeHtmlEntities } from '../../helpers'
6
6
 
@@ -19,16 +19,32 @@ export class GoogleTranslationProvider extends TranslationProvider {
19
19
  this.getTranslationFx = createEffect(api.translateRequest)
20
20
  }
21
21
 
22
+ public resolveLanguage(language: string): string | null {
23
+ return resolveGoogleLanguageCode(language)
24
+ }
25
+
22
26
  public async request(text: string, targetLanguage: string, sourceLanguage?: string) {
23
- const response = await this.getTranslationFx({ text: [text], targetLanguage, sourceLanguage })
27
+ const resolvedTarget = this.resolveLanguage(targetLanguage) ?? targetLanguage
28
+ const resolvedSource = sourceLanguage ? this.resolveLanguage(sourceLanguage) ?? undefined : undefined
29
+ const response = await this.getTranslationFx({
30
+ text: [text],
31
+ targetLanguage: resolvedTarget,
32
+ sourceLanguage: resolvedSource,
33
+ })
24
34
  const translated = response.data.translations[0]?.translatedText ?? ''
25
- return this.applyGlossary(decodeHtmlEntities(translated), targetLanguage)
35
+ return this.applyGlossary(decodeHtmlEntities(translated), resolvedTarget)
26
36
  }
27
37
 
28
38
  public async requestBatch(text: string[], targetLanguage: string, sourceLanguage?: string) {
29
- const response = await this.getTranslationFx({ text, targetLanguage, sourceLanguage })
39
+ const resolvedTarget = this.resolveLanguage(targetLanguage) ?? targetLanguage
40
+ const resolvedSource = sourceLanguage ? this.resolveLanguage(sourceLanguage) ?? undefined : undefined
41
+ const response = await this.getTranslationFx({
42
+ text,
43
+ targetLanguage: resolvedTarget,
44
+ sourceLanguage: resolvedSource,
45
+ })
30
46
  return response.data.translations.map(({ translatedText }) =>
31
- this.applyGlossary(decodeHtmlEntities(translatedText), targetLanguage),
47
+ this.applyGlossary(decodeHtmlEntities(translatedText), resolvedTarget),
32
48
  )
33
49
  }
34
50
  }
@@ -1,3 +1,31 @@
1
+ const SUPPORTED_CODES = new Set<string>()
2
+ const NAME_TO_CODE: Record<string, string> = {}
3
+
4
+ const normalizeLanguageName = (language: string): string =>
5
+ language
6
+ .trim()
7
+ .toUpperCase()
8
+ .replace(/[\s()-]+/g, '_')
9
+
10
+ /**
11
+ * Resolves an arbitrary language input (ISO code, locale, or English name) to the
12
+ * Google Translate ISO code. Returns null when the language is not supported.
13
+ *
14
+ * Examples:
15
+ * "en" → "en"
16
+ * "en-SE" → "en" (base fallback)
17
+ * "zh-CN" → "zh-CN" (exact match)
18
+ * "Spanish" → "es" (name lookup)
19
+ * "Chinese Simplified" → "zh-CN"
20
+ */
21
+ export const resolveGoogleLanguageCode = (language?: string | null): string | null => {
22
+ if (!language) return null
23
+ if (SUPPORTED_CODES.has(language)) return language
24
+ const base = language.split('-')[0]
25
+ if (base !== language && SUPPORTED_CODES.has(base)) return base
26
+ return NAME_TO_CODE[normalizeLanguageName(language)] ?? null
27
+ }
28
+
1
29
  export const GoogleTranslateLanguage = {
2
30
  ABKHAZ: 'ab',
3
31
  ACEHNESE: 'ace',
@@ -194,3 +222,8 @@ export const GoogleTranslateLanguage = {
194
222
  YUCATEC_MAYA: 'yua',
195
223
  ZULU: 'zu',
196
224
  }
225
+
226
+ Object.entries(GoogleTranslateLanguage).forEach(([name, code]) => {
227
+ SUPPORTED_CODES.add(code)
228
+ NAME_TO_CODE[name] = code
229
+ })
@@ -30,7 +30,21 @@ export abstract class TranslationProvider {
30
30
  ): Promise<string[]>
31
31
 
32
32
  public isTargetSupported(language: string) {
33
- return this.supportedLanguages.has(language)
33
+ return this.resolveLanguage(language) !== null
34
+ }
35
+
36
+ /**
37
+ * Returns the provider-supported variant of `language`, falling back to the base
38
+ * language part (e.g. "en-SE" → "en") when the exact locale is not listed.
39
+ * Subclasses may override to add their own resolution (e.g. language names).
40
+ * Returns null when the language cannot be resolved.
41
+ */
42
+ public resolveLanguage(language: string): string | null {
43
+ if (!language) return null
44
+ if (this.supportedLanguages.has(language)) return language
45
+ const base = language.split('-')[0]
46
+ if (base !== language && this.supportedLanguages.has(base)) return base
47
+ return null
34
48
  }
35
49
 
36
50
  public getSupportedLanguages() {
@@ -7,6 +7,7 @@ import Animated from 'react-native-reanimated'
7
7
  import { NO_AUDIO_BE_MESSAGE } from '../../constants'
8
8
  import { getActiveAttempt } from '../../helpers'
9
9
  import { AnswerAudio, VoiceTranscriptionVariant } from '../../types'
10
+ import { resolveGoogleLanguageCode } from '../../../translation/providers/google/supportedLanguages'
10
11
  import { useText } from '../../../../i18n/i18n'
11
12
  import { useVoiceTranscriptionEffects } from '../hooks/useVoiceTranscriptionEffects'
12
13
  import { VoicePlayerModel } from '../model'
@@ -67,8 +68,16 @@ export const VoiceTranscription = ({
67
68
  const hasTranscriptText = !!activeTranscript && activeTranscript !== NO_AUDIO_BE_MESSAGE
68
69
  const isActiveTranscriptLoading = isLoadingTranscripts && hasActiveAudio && !activeTranscript
69
70
 
71
+ const transcriptLanguage =
72
+ activeAttempt !== null ? model.loader.getTranscriptLanguage(activeAttempt) : undefined
73
+ const isSourceSameAsTarget =
74
+ !!transcriptLanguage &&
75
+ resolveGoogleLanguageCode(transcriptLanguage) === resolveGoogleLanguageCode(i18n.language)
76
+
77
+ const canTranslate = hasTranscriptText && !isSourceSameAsTarget
78
+
70
79
  const cachedTranslation = activeAttempt !== null ? translations[activeAttempt] : undefined
71
- const showTranslation = isTranslationActive && hasTranscriptText
80
+ const showTranslation = isTranslationActive && canTranslate
72
81
  const isTranslationLoading = showTranslation && !cachedTranslation && isTranslating
73
82
 
74
83
  const displayText = showTranslation
@@ -107,7 +116,7 @@ export const VoiceTranscription = ({
107
116
  <VoiceTranscriptionHeaderActions
108
117
  playerState={playerState}
109
118
  isTranslationActive={isTranslationActive}
110
- canTranslate={hasTranscriptText}
119
+ canTranslate={canTranslate}
111
120
  onPlayPress={handlePlayPress}
112
121
  onTranslationPress={handleTranslationToggle}
113
122
  />
@@ -77,6 +77,10 @@ export class TranscriptionsDownloaderModel {
77
77
  return this.collection.get(attemptNumber)?.transcript
78
78
  }
79
79
 
80
+ public getTranscriptLanguage(attemptNumber: number): string | undefined {
81
+ return this.collection.get(attemptNumber)?.transcriptLanguage
82
+ }
83
+
80
84
  public isTranscriptLoading(attemptNumber: number): boolean {
81
85
  return this.collection.get(attemptNumber)?.transcriptLoading || false
82
86
  }