瀏覽代碼

additional bcp47 languages

master
Andrei Gavrilescu 3 年之前
父節點
當前提交
34c55b4eb2

+ 3
- 2
config.js 查看文件

@@ -242,8 +242,9 @@ var config = {
242 242
     // transcribeWithAppLanguage: true,
243 243
 
244 244
     // Transcriber language. This settings will only work if "transcribeWithAppLanguage" is explicitly set to false.
245
-    // Available languages can be found in lang/language.json.
246
-    // preferredTranscribeLanguage: 'en',
245
+    // Available languages can be found in
246
+    // ./src/react/features/transcribing/transcriber-langs.json.
247
+    // preferredTranscribeLanguage: 'en-US',
247 248
 
248 249
     // Enables automatic turning on captions when recording is started
249 250
     // autoCaptionOnRecord: false,

+ 17
- 10
react/features/transcribing/functions.js 查看文件

@@ -2,11 +2,12 @@
2 2
 
3 3
 import i18next from 'i18next';
4 4
 
5
-import JITSI_TO_BCP47_MAP from './jitsiToBCP47LocaleMap.json';
5
+import JITSI_TO_BCP47_MAP from './jitsi-bcp47-map.json';
6
+import logger from './logger';
7
+import TRANSCRIBER_LANGS from './transcriber-langs.json';
6 8
 
7 9
 const DEFAULT_TRANSCRIBER_LANG = 'en-US';
8 10
 
9
-
10 11
 /**
11 12
  * Determine which language to use for transcribing.
12 13
  *
@@ -14,17 +15,23 @@ const DEFAULT_TRANSCRIBER_LANG = 'en-US';
14 15
  * @returns {string}
15 16
  */
16 17
 export function determineTranscriptionLanguage(config: Object) {
17
-
18 18
     const { preferredTranscribeLanguage, transcribeWithAppLanguage = true } = config;
19 19
 
20 20
     // Depending on the config either use the language that the app automatically detected or the hardcoded
21
-    // config value.
22
-    const jitsiLocale = transcribeWithAppLanguage ? i18next.language : preferredTranscribeLanguage;
21
+    // config BCP47 value.
22
+    // Jitsi language detections uses custom language tags, but the transcriber expects BCP-47 compliant tags,
23
+    // we use a mapping file to convert them.
24
+    const bcp47Locale = transcribeWithAppLanguage ? JITSI_TO_BCP47_MAP[i18next.language] : preferredTranscribeLanguage;
25
+
26
+    // Check if the obtained language is supported by the transcriber
27
+    let safeBCP47Locale = TRANSCRIBER_LANGS[bcp47Locale] && bcp47Locale;
28
+
29
+    if (!safeBCP47Locale) {
30
+        safeBCP47Locale = DEFAULT_TRANSCRIBER_LANG;
31
+        logger.warn(`Transcriber language ${bcp47Locale} is not supported, using default ${DEFAULT_TRANSCRIBER_LANG}`);
32
+    }
23 33
 
24
-    // Jitsi uses custom language tags, but the transcriber expects BCP-47 compliant tags. We use a mapping file
25
-    // to convert them.
26
-    // Not all languages that the app might detect are supported by the transcriber in which case use the default.
27
-    const { [jitsiLocale]: bcp47Locale = DEFAULT_TRANSCRIBER_LANG } = JITSI_TO_BCP47_MAP;
34
+    logger.info(`Transcriber language set to ${safeBCP47Locale}`);
28 35
 
29
-    return bcp47Locale;
36
+    return safeBCP47Locale;
30 37
 }

react/features/transcribing/jitsiToBCP47LocaleMap.json → react/features/transcribing/jitsi-bcp47-map.json 查看文件

@@ -46,6 +46,6 @@
46 46
     "tr": "tr-TR",
47 47
     "uk": "uk-UA",
48 48
     "vi": "vi-VN",
49
-    "zhCN": "zh (cmn-Hans-CN)",
50
-    "zhTW": "zh-TW (cmn-Hant-TW)"
49
+    "zhCN": "zh",
50
+    "zhTW": "zh-TW"
51 51
 }

+ 5
- 0
react/features/transcribing/logger.js 查看文件

@@ -0,0 +1,5 @@
1
+// @flow
2
+
3
+import { getLogger } from '../base/logging/functions';
4
+
5
+export default getLogger('features/transcribing');

+ 89
- 0
react/features/transcribing/transcriber-langs.json 查看文件

@@ -0,0 +1,89 @@
1
+{
2
+    "af-ZA": "Afrikaans (South Africa)",
3
+    "id-ID": "Indonesian (Indonesia)",
4
+    "ms-MY": "Malay (Malaysia)",
5
+    "ca-ES": "Catalan (Spain)",
6
+    "cs-CZ": "Czech (Czech Republic)",
7
+    "da-DK": "Danish (Denmark)",
8
+    "de-DE": "German (Germany)",
9
+    "en-AU": "English (Australia)",
10
+    "en-CA": "English (Canada)",
11
+    "en-GB": "English (United Kingdom)",
12
+    "en-IN": "English (India)",
13
+    "en-IE": "English (Ireland)",
14
+    "en-NZ": "English (New Zealand)",
15
+    "en-PH": "English (Philippines)",
16
+    "en-ZA": "English (South Africa)",
17
+    "en-US": "English (United States)",
18
+    "es-AR": "Spanish (Argentina)",
19
+    "es-BO": "Spanish (Bolivia)",
20
+    "es-CL": "Spanish (Chile)",
21
+    "es-CO": "Spanish (Colombia)",
22
+    "es-CR": "Spanish (Costa Rica)",
23
+    "es-EC": "Spanish (Ecuador)",
24
+    "es-SV": "Spanish (El Salvador)",
25
+    "es-ES": "Spanish (Spain)",
26
+    "es-US": "Spanish (United States)",
27
+    "es-GT": "Spanish (Guatemala)",
28
+    "es-HN": "Spanish (Honduras)",
29
+    "es-MX": "Spanish (Mexico)",
30
+    "es-NI": "Spanish (Nicaragua)",
31
+    "es-PA": "Spanish (Panama)",
32
+    "es-PY": "Spanish (Paraguay)",
33
+    "es-PE": "Spanish (Peru)",
34
+    "es-PR": "Spanish (Puerto Rico)",
35
+    "es-DO": "Spanish (Dominican Republic)",
36
+    "es-UY": "Spanish (Uruguay)",
37
+    "es-VE": "Spanish (Venezuela)",
38
+    "eu-ES": "Basque (Spain)",
39
+    "fil-PH": "Filipino (Philippines)",
40
+    "fr-CA": "French (Canada)",
41
+    "fr-FR": "French (France)",
42
+    "gl-ES": "Galician (Spain)",
43
+    "hr-HR": "Croatian (Croatia)",
44
+    "zu-ZA": "Zulu (South Africa)",
45
+    "is-IS": "Icelandic (Iceland)",
46
+    "it-IT": "Italian (Italy)",
47
+    "lt-LT": "Lithuanian (Lithuania)",
48
+    "hu-HU": "Hungarian (Hungary)",
49
+    "nl-NL": "Dutch (Netherlands)",
50
+    "no-NO": "Norwegian Bokmål (Norway)",
51
+    "pl-PL": "Polish (Poland)",
52
+    "pt-BR": "Portuguese (Brazil)",
53
+    "pt-PT": "Portuguese (Portugal)",
54
+    "ro-RO": "Romanian (Romania)",
55
+    "sk-SK": "Slovak (Slovakia)",
56
+    "sl-SI": "Slovenian (Slovenia)",
57
+    "fi-FI": "Finnish (Finland)",
58
+    "sv-SE": "Swedish (Sweden)",
59
+    "vi-VN": "Vietnamese (Vietnam)",
60
+    "tr-TR": "Turkish (Turkey)",
61
+    "el-GR": "Greek (Greece)",
62
+    "bg-BG": "Bulgarian (Bulgaria)",
63
+    "ru-RU": "Russian (Russia)",
64
+    "sr-RS": "Serbian (Serbia)",
65
+    "uk-UA": "Ukrainian (Ukraine)",
66
+    "iw-IL": "Hebrew",
67
+    "ar-IL": "Arabic (Israel)",
68
+    "ar-JO": "Arabic (Jordan)",
69
+    "ar-AE": "Arabic (United Arab Emirates)",
70
+    "ar-BH": "Arabic (Bahrain)",
71
+    "ar-DZ": "Arabic (Algeria)",
72
+    "ar-SA": "Arabic (Saudi Arabia)",
73
+    "ar-IQ": "Arabic (Iraq)",
74
+    "ar-KW": "Arabic (Kuwait)",
75
+    "ar-MA": "Arabic (Morocco)",
76
+    "ar-TN": "Arabic (Tunisia)",
77
+    "ar-OM": "Arabic (Oman)",
78
+    "ar-PS": "Arabic (State of Palestine)",
79
+    "ar-QA": "Arabic (Qatar)",
80
+    "ar-LB": "Arabic (Lebanon)",
81
+    "ar-EG": "Arabic (Egypt)",
82
+    "fa-IR": "Persian (Iran)",
83
+    "hi-IN": "Hindi (India)",
84
+    "th-TH": "Thai (Thailand)",
85
+    "ko-KR": "Korean (South Korea)",
86
+    "zh-TW": "Chinese Mandarin (Traditional, Taiwan)",
87
+    "ja-JP": "Japanese (Japan)",
88
+    "zh": "Chinese Mandarin (Simplified, China)"
89
+}

Loading…
取消
儲存