]>
Commit | Line | Data |
---|---|---|
3f9c4955 C |
1 | import { getCompleteLocale, getShortLocale, is18nLocale, isDefaultLocale } from '../../../../shared/models' |
2 | ||
3 | export class TranslationsManager { | |
4 | private static videojsLocaleCache: { [ path: string ]: any } = {} | |
5 | ||
6 | static getServerTranslations (serverUrl: string, locale: string) { | |
7 | const path = TranslationsManager.getLocalePath(serverUrl, locale) | |
8 | // It is the default locale, nothing to translate | |
9 | if (!path) return Promise.resolve(undefined) | |
10 | ||
11 | return fetch(path + '/server.json') | |
12 | .then(res => res.json()) | |
13 | .catch(err => { | |
14 | console.error('Cannot get server translations', err) | |
15 | return undefined | |
16 | }) | |
17 | } | |
18 | ||
19 | static loadLocaleInVideoJS (serverUrl: string, locale: string, videojs: any) { | |
20 | const path = TranslationsManager.getLocalePath(serverUrl, locale) | |
21 | // It is the default locale, nothing to translate | |
22 | if (!path) return Promise.resolve(undefined) | |
23 | ||
24 | let p: Promise<any> | |
25 | ||
26 | if (TranslationsManager.videojsLocaleCache[ path ]) { | |
27 | p = Promise.resolve(TranslationsManager.videojsLocaleCache[ path ]) | |
28 | } else { | |
29 | p = fetch(path + '/player.json') | |
30 | .then(res => res.json()) | |
31 | .then(json => { | |
32 | TranslationsManager.videojsLocaleCache[ path ] = json | |
33 | return json | |
34 | }) | |
35 | .catch(err => { | |
36 | console.error('Cannot get player translations', err) | |
37 | return undefined | |
38 | }) | |
39 | } | |
40 | ||
41 | const completeLocale = getCompleteLocale(locale) | |
42 | return p.then(json => videojs.addLanguage(getShortLocale(completeLocale), json)) | |
43 | } | |
44 | ||
45 | private static getLocalePath (serverUrl: string, locale: string) { | |
46 | const completeLocale = getCompleteLocale(locale) | |
47 | ||
48 | if (!is18nLocale(completeLocale) || isDefaultLocale(completeLocale)) return undefined | |
49 | ||
50 | return serverUrl + '/client/locales/' + completeLocale | |
51 | } | |
52 | } |