[RN] Add builtin translations

Load all of them as imports, so the packager includes them in the bundle. Then
register them with the i18next library.
This commit is contained in:
Saúl Ibarra Corretgé 2017-12-22 11:26:57 +01:00
parent b52e584327
commit 8673083829
3 changed files with 150 additions and 0 deletions

View File

@ -0,0 +1,144 @@
import i18next from 'i18next';
/**
* Collection of builtin languages.
*/
const languages = [
// Bulgarian
{
name: 'bg',
mainResource: require('../../../../lang/main-bg'),
langResource: require('../../../../lang/languages-bg')
},
// German
{
name: 'de',
mainResource: require('../../../../lang/main-de'),
langResource: require('../../../../lang/languages-de')
},
// Esperanto
{
name: 'eo',
mainResource: require('../../../../lang/main-eo'),
langResource: require('../../../../lang/languages-eo')
},
// Spanish
{
name: 'es',
mainResource: require('../../../../lang/main-es'),
langResource: require('../../../../lang/languages-es')
},
// French
{
name: 'fr',
mainResource: require('../../../../lang/main-fr'),
langResource: require('../../../../lang/languages-fr')
},
// Armenian
{
name: 'hy',
mainResource: require('../../../../lang/main-hy'),
langResource: require('../../../../lang/languages-hy')
},
// Italian
{
name: 'it',
mainResource: require('../../../../lang/main-it'),
langResource: require('../../../../lang/languages-it')
},
// Norwegian Bokmal
{
name: 'nb',
mainResource: require('../../../../lang/main-nb'),
langResource: require('../../../../lang/languages-nb')
},
// Occitan
{
name: 'oc',
mainResource: require('../../../../lang/main-oc'),
langResource: require('../../../../lang/languages-oc')
},
// Polish
{
name: 'pl',
mainResource: require('../../../../lang/main-pl'),
langResource: require('../../../../lang/languages-pl')
},
// Portuguese (Brazil)
{
name: 'ptBR',
mainResource: require('../../../../lang/main-ptBR'),
langResource: require('../../../../lang/languages-ptBR')
},
// Russian
{
name: 'ru',
mainResource: require('../../../../lang/main-ru'),
langResource: require('../../../../lang/languages-ru')
},
// Slovak
{
name: 'sk',
mainResource: require('../../../../lang/main-sk'),
langResource: require('../../../../lang/languages-sk')
},
// Slovenian
{
name: 'sl',
mainResource: require('../../../../lang/main-sl'),
langResource: require('../../../../lang/languages-sl')
},
// Swedish
{
name: 'sv',
mainResource: require('../../../../lang/main-sv'),
langResource: require('../../../../lang/languages-sv')
},
// Turkish
{
name: 'tr',
mainResource: require('../../../../lang/main-tr'),
langResource: require('../../../../lang/languages-tr')
},
// Chinese (China)
{
name: 'zhCN',
mainResource: require('../../../../lang/main-zhCN'),
langResource: require('../../../../lang/languages-zhCN')
}
];
/**
* Registers all builtin languages with the i18n library.
*/
for (const language of languages) {
i18next.addResourceBundle(
language.name,
'main',
language.mainResource,
/* deep */ true,
/* overwrite */ true);
i18next.addResourceBundle(
language.name,
'languages',
language.langResource,
/* deep */ true,
/* overwrite */ true);
}

View File

@ -81,4 +81,10 @@ i18next.addResourceBundle(
/* deep */ true,
/* overwrite */ true);
// Add builtin languages.
// XXX: Note we are using require here, because we want the side-effects of
// the import, but imports can only be placed at the top, and it would be
// too early, since i18next is not yet initialized at that point.
require('./BuiltinLanguages');
export default i18next;