@magmamath/students-features 1.3.23-rc.7 → 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.
- package/dist/commonjs/features/translation/providers/google/GoogleTranslationProvider.js +13 -6
- package/dist/commonjs/features/translation/providers/google/GoogleTranslationProvider.js.map +1 -1
- package/dist/commonjs/features/translation/providers/google/supportedLanguages.js +28 -1
- package/dist/commonjs/features/translation/providers/google/supportedLanguages.js.map +1 -1
- package/dist/commonjs/features/translation/providers/translation.interface.js +15 -1
- package/dist/commonjs/features/translation/providers/translation.interface.js.map +1 -1
- package/dist/commonjs/features/voice/playing/components/VoiceTranscription.js +6 -2
- package/dist/commonjs/features/voice/playing/components/VoiceTranscription.js.map +1 -1
- package/dist/commonjs/features/voice/playing/model/TranscriptionsDownloaderModel.js +3 -0
- package/dist/commonjs/features/voice/playing/model/TranscriptionsDownloaderModel.js.map +1 -1
- package/dist/module/features/translation/providers/google/GoogleTranslationProvider.js +14 -7
- package/dist/module/features/translation/providers/google/GoogleTranslationProvider.js.map +1 -1
- package/dist/module/features/translation/providers/google/supportedLanguages.js +26 -0
- package/dist/module/features/translation/providers/google/supportedLanguages.js.map +1 -1
- package/dist/module/features/translation/providers/translation.interface.js +15 -1
- package/dist/module/features/translation/providers/translation.interface.js.map +1 -1
- package/dist/module/features/voice/playing/components/VoiceTranscription.js +6 -2
- package/dist/module/features/voice/playing/components/VoiceTranscription.js.map +1 -1
- package/dist/module/features/voice/playing/model/TranscriptionsDownloaderModel.js +3 -0
- package/dist/module/features/voice/playing/model/TranscriptionsDownloaderModel.js.map +1 -1
- package/dist/typescript/commonjs/features/translation/providers/google/GoogleTranslationProvider.d.ts +1 -0
- package/dist/typescript/commonjs/features/translation/providers/google/GoogleTranslationProvider.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/translation/providers/google/supportedLanguages.d.ts +12 -0
- package/dist/typescript/commonjs/features/translation/providers/google/supportedLanguages.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/translation/providers/translation.interface.d.ts +7 -0
- package/dist/typescript/commonjs/features/translation/providers/translation.interface.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/voice/playing/components/VoiceTranscription.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/voice/playing/model/TranscriptionsDownloaderModel.d.ts +1 -0
- package/dist/typescript/commonjs/features/voice/playing/model/TranscriptionsDownloaderModel.d.ts.map +1 -1
- package/dist/typescript/module/features/translation/providers/google/GoogleTranslationProvider.d.ts +1 -0
- package/dist/typescript/module/features/translation/providers/google/GoogleTranslationProvider.d.ts.map +1 -1
- package/dist/typescript/module/features/translation/providers/google/supportedLanguages.d.ts +12 -0
- package/dist/typescript/module/features/translation/providers/google/supportedLanguages.d.ts.map +1 -1
- package/dist/typescript/module/features/translation/providers/translation.interface.d.ts +7 -0
- package/dist/typescript/module/features/translation/providers/translation.interface.d.ts.map +1 -1
- package/dist/typescript/module/features/voice/playing/components/VoiceTranscription.d.ts.map +1 -1
- package/dist/typescript/module/features/voice/playing/model/TranscriptionsDownloaderModel.d.ts +1 -0
- package/dist/typescript/module/features/voice/playing/model/TranscriptionsDownloaderModel.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/features/translation/providers/google/GoogleTranslationProvider.ts +21 -5
- package/src/features/translation/providers/google/supportedLanguages.ts +33 -0
- package/src/features/translation/providers/translation.interface.ts +15 -1
- package/src/features/voice/playing/components/VoiceTranscription.tsx +11 -2
- 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),
|
|
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),
|
|
46
|
+
}) => this.applyGlossary((0, _helpers.decodeHtmlEntities)(translatedText), resolvedTarget));
|
|
40
47
|
}
|
|
41
48
|
}
|
|
42
49
|
exports.GoogleTranslationProvider = GoogleTranslationProvider;
|
package/dist/commonjs/features/translation/providers/google/GoogleTranslationProvider.js.map
CHANGED
|
@@ -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,
|
|
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":["
|
|
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.
|
|
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,
|
|
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 &&
|
|
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:
|
|
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","
|
|
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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
|
|
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),
|
|
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),
|
|
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;
|
|
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":";;AAAA,OAAO,
|
|
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.
|
|
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,
|
|
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 &&
|
|
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:
|
|
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","
|
|
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":";;AAAA,SAASA,UAAU,EAAEC,MAAM,QAAQ,4BAA4B;AAC/D,SAASC,OAAO,QAAQ,gBAAgB;AACxC,OAAOC,KAAK,IAAIC,WAAW,EAAEC,SAAS,EAAEC,OAAO,QAAQ,OAAO;AAC9D,SAASC,cAAc,QAAQ,eAAe;AAC9C,SAAoBC,UAAU,EAAEC,IAAI,QAAmB,cAAc;AACrE,OAAOC,QAAQ,MAAM,yBAAyB;AAC9C,SAASC,mBAAmB,QAAQ,oBAAiB;AACrD,SAASC,gBAAgB,QAAQ,kBAAe;AAChD,SAAsBC,yBAAyB,QAAQ,gBAAa;AACpE,SAASC,yBAAyB,QAAQ,6DAA0D;AACpG,SAASC,OAAO,QAAQ,0BAAuB;AAC/C,SAASC,4BAA4B,QAAQ,0CAAuC;AAEpF,SAASC,sBAAsB,QAAQ,6BAA0B;AACjE,SAASC,6BAA6B,QAAQ,oCAAiC;AAC/E,SAASC,+BAA+B,QAAQ,sCAAmC;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAYnF,OAAO,MAAMC,kBAAkB,GAAGA,CAAC;EACjCC,KAAK;EACLC,KAAK;EACLC,OAAO;EACPC,aAAa;EACbC,aAAa;EACbC,SAAS;EACTC,OAAO,GAAGlB,yBAAyB,CAACmB;AACb,CAAC,KAAK;EAC7B,MAAMC,CAAC,GAAGlB,OAAO,CAAC,CAAC;EACnB,MAAM;IAAEmB;EAAK,CAAC,GAAG3B,cAAc,CAAC,CAAC;EAEjC,MAAM,CACJ4B,WAAW,EACXC,oBAAoB,EACpBC,mBAAmB,EACnBC,YAAY,EACZC,aAAa,CACd,GAAGrC,OAAO,CAAC,CACVwB,KAAK,CAACc,YAAY,EAClBd,KAAK,CAACe,MAAM,CAACC,kBAAkB,CAACC,OAAO,EACvCjB,KAAK,CAACkB,WAAW,CAACC,SAAS,EAC3BnB,KAAK,CAACkB,WAAW,CAACE,aAAa,EAC/BpB,KAAK,CAACkB,WAAW,CAACG,SAAS,CAACJ,OAAO,CACpC,CAAC;EAEF,MAAMK,aAAa,GAAGpC,gBAAgB,CAACgB,aAAa,EAAEC,aAAa,CAAC;EACpE,MAAMoB,cAAc,GAAGlB,OAAO,KAAKlB,yBAAyB,CAACqC,KAAK;EAElE,MAAMC,UAAU,GAAG7C,OAAO,CACxB,MAAMqB,OAAO,CAACyB,GAAG,CAAEC,CAAC,IAAK,GAAGA,CAAC,CAACC,GAAG,IAAID,CAAC,CAACE,WAAW,IAAI,EAAE,EAAE,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC,EACrE,CAAC7B,OAAO,CACV,CAAC;EAEDX,4BAA4B,CAAC;IAAEU,KAAK;IAAEC,OAAO;IAAEwB,UAAU;IAAErB,SAAS;IAAEkB;EAAc,CAAC,CAAC;EAEtF,MAAMS,cAAc,GAClBT,aAAa,KAAK,IAAI,IAAIrB,OAAO,GAAGqB,aAAa,GAAG,CAAC,CAAC,EAAEO,WAAW,KAAKG,SAAS;EAEnF,MAAMC,gBAAgB,GAAGX,aAAa,KAAK,IAAI,GAAGtB,KAAK,CAACe,MAAM,CAACmB,aAAa,CAACZ,aAAa,CAAC,GAAG,IAAI;EAClG,MAAMa,iBAAiB,GAAG,CAAC,CAACF,gBAAgB,IAAIA,gBAAgB,KAAKhD,mBAAmB;EACxF,MAAMmD,yBAAyB,GAAG1B,oBAAoB,IAAIqB,cAAc,IAAI,CAACE,gBAAgB;EAE7F,MAAMI,kBAAkB,GACtBf,aAAa,KAAK,IAAI,GAAGtB,KAAK,CAACe,MAAM,CAACuB,qBAAqB,CAAChB,aAAa,CAAC,GAAGU,SAAS;EACxF,MAAMO,oBAAoB,GACxB,CAAC,CAACF,kBAAkB,IACpBjD,yBAAyB,CAACiD,kBAAkB,CAAC,KAAKjD,yBAAyB,CAACoB,IAAI,CAACgC,QAAQ,CAAC;EAE5F,MAAMC,YAAY,GAAGN,iBAAiB,IAAI,CAACI,oBAAoB;EAE/D,MAAMG,iBAAiB,GAAGpB,aAAa,KAAK,IAAI,GAAGV,YAAY,CAACU,aAAa,CAAC,GAAGU,SAAS;EAC1F,MAAMW,eAAe,GAAGhC,mBAAmB,IAAI8B,YAAY;EAC3D,MAAMG,oBAAoB,GAAGD,eAAe,IAAI,CAACD,iBAAiB,IAAI7B,aAAa;EAEnF,MAAMgC,WAAW,GAAGF,eAAe,GAC/BD,iBAAiB,IAAIT,gBAAiB,GACtCE,iBAAiB,GACfF,gBAAgB,GAChB1B,CAAC,CAAC,8BAA8B,CAAC;EAEvC5B,SAAS,CAAC,MAAM;IACd,IAAIgE,eAAe,IAAIrB,aAAa,KAAK,IAAI,IAAI,CAACoB,iBAAiB,IAAI,CAAC7B,aAAa,EAAE;MACrFb,KAAK,CAACkB,WAAW,CAACG,SAAS,CAAC;QAC1ByB,aAAa,EAAExB,aAAa;QAC5ByB,cAAc,EAAEvC,IAAI,CAACgC;MACvB,CAAC,CAAC;IACJ;EACF,CAAC,EAAE,CAACG,eAAe,EAAErB,aAAa,EAAEoB,iBAAiB,EAAE7B,aAAa,EAAEL,IAAI,CAACgC,QAAQ,EAAExC,KAAK,CAAC,CAAC;EAE5F,MAAMgD,eAAe,GAAGtE,WAAW,CAAC,MAAM;IACxC,IAAI4C,aAAa,EAAE;MACjBtB,KAAK,CAACkB,WAAW,CAAC+B,SAAS,CAAC,KAAK,CAAC;MAClCjD,KAAK,CAACkD,eAAe,CAAC5B,aAAa,CAAC;IACtC;EACF,CAAC,EAAE,CAACtB,KAAK,EAAEsB,aAAa,CAAC,CAAC;EAE1B,MAAM6B,uBAAuB,GAAGzE,WAAW,CAAC,MAAM;IAChDsB,KAAK,CAACkB,WAAW,CAACkC,MAAM,CAAC,CAAC;EAC5B,CAAC,EAAE,CAACpD,KAAK,CAAC,CAAC;EAEX,oBACEH,KAAA,CAACb,QAAQ,CAACD,IAAI;IAACgB,KAAK,EAAE,CAACsD,MAAM,CAACC,SAAS,EAAE/B,cAAc,IAAI8B,MAAM,CAACE,cAAc,EAAExD,KAAK,CAAE;IAAAyD,QAAA,gBACvF3D,KAAA,CAACd,IAAI;MAACgB,KAAK,EAAEsD,MAAM,CAACI,MAAO;MAAAD,QAAA,gBACzB7D,IAAA,CAACrB,UAAU;QAACyB,KAAK,EAAEsD,MAAM,CAACK,KAAM;QAACrD,OAAO,EAAC,IAAI;QAAAmD,QAAA,EAC1CjD,CAAC,CAAC,sBAAsB;MAAC,CAChB,CAAC,EACZwB,cAAc,iBACbpC,IAAA,CAACF,+BAA+B;QAC9BgB,WAAW,EAAEA,WAAY;QACzBE,mBAAmB,EAAEA,mBAAoB;QACzC8B,YAAY,EAAEA,YAAa;QAC3BkB,WAAW,EAAEX,eAAgB;QAC7BY,kBAAkB,EAAET;MAAwB,CAC7C,CACF;IAAA,CACG,CAAC,EAEN5B,cAAc,gBACb5B,IAAA,CAACJ,sBAAsB;MACrBsE,IAAI,EAAEhB,WAAY;MAClBiB,SAAS,EAAE1B,yBAAyB,IAAIQ;IAAqB,CAC9D,CAAC,gBAEFjD,IAAA,CAACH,6BAA6B;MAC5BqE,IAAI,EAAEhB,WAAY;MAClBiB,SAAS,EAAE1B,yBAAyB,IAAIQ,oBAAqB;MAC7DmB,QAAQ,EAAE/D,KAAK,CAAC+D;IAAS,CAC1B,CACF;EAAA,CACY,CAAC;AAEpB,CAAC;AAED,MAAMV,MAAM,GAAGvE,UAAU,CAACkF,MAAM,CAAC;EAC/BV,SAAS,EAAE;IACTW,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,EAAE;IACPC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,GAAG;IACVC,SAAS,EAAE,GAAG;IACdC,SAAS,EAAE,EAAE;IACbC,OAAO,EAAE,CAAC;IACVC,SAAS,EAAE,wCAAwC;IACnDC,YAAY,EAAE,EAAE;IAChBC,eAAe,EAAEnG,MAAM,CAACoG,SAAS;IACjCC,QAAQ,EAAE;EACZ,CAAC;EACDrB,cAAc,EAAE;IACda,KAAK,EAAE,KAAK;IACZS,MAAM,EAAE;EACV,CAAC;EACDpB,MAAM,EAAE;IACNqB,aAAa,EAAE,KAAK;IACpBC,cAAc,EAAE,eAAe;IAC/BC,UAAU,EAAE,QAAQ;IACpBT,OAAO,EAAE,CAAC;IACVU,YAAY,EAAE,CAAC;IACfJ,MAAM,EAAE;EACV,CAAC;EACDnB,KAAK,EAAE;IACLwB,KAAK,EAAE3G,MAAM,CAAC4G,SAAS;IACvBC,UAAU,EAAE;EACd;AACF,CAAC,CAAC","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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
|
|
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;
|
|
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"}
|
package/dist/typescript/commonjs/features/translation/providers/google/supportedLanguages.d.ts
CHANGED
|
@@ -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;
|
package/dist/typescript/commonjs/features/translation/providers/google/supportedLanguages.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supportedLanguages.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/translation/providers/google/supportedLanguages.ts"],"names":[],"mappings":"
|
|
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,
|
package/dist/typescript/commonjs/features/translation/providers/translation.interface.d.ts.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/typescript/commonjs/features/voice/playing/components/VoiceTranscription.d.ts.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/typescript/commonjs/features/voice/playing/model/TranscriptionsDownloaderModel.d.ts
CHANGED
|
@@ -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
|
package/dist/typescript/commonjs/features/voice/playing/model/TranscriptionsDownloaderModel.d.ts.map
CHANGED
|
@@ -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/dist/typescript/module/features/translation/providers/google/GoogleTranslationProvider.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/typescript/module/features/translation/providers/google/supportedLanguages.d.ts
CHANGED
|
@@ -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;
|
package/dist/typescript/module/features/translation/providers/google/supportedLanguages.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supportedLanguages.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/translation/providers/google/supportedLanguages.ts"],"names":[],"mappings":"
|
|
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,
|
package/dist/typescript/module/features/translation/providers/translation.interface.d.ts.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/typescript/module/features/voice/playing/components/VoiceTranscription.d.ts.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/typescript/module/features/voice/playing/model/TranscriptionsDownloaderModel.d.ts
CHANGED
|
@@ -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
|
package/dist/typescript/module/features/voice/playing/model/TranscriptionsDownloaderModel.d.ts.map
CHANGED
|
@@ -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
|
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
|
|
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),
|
|
35
|
+
return this.applyGlossary(decodeHtmlEntities(translated), resolvedTarget)
|
|
26
36
|
}
|
|
27
37
|
|
|
28
38
|
public async requestBatch(text: string[], targetLanguage: string, sourceLanguage?: string) {
|
|
29
|
-
const
|
|
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),
|
|
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.
|
|
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 &&
|
|
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={
|
|
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
|
}
|