@prosopo/locale 3.9.1 → 3.10.1
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/.turbo/turbo-build$colon$cjs.log +266 -13
- package/.turbo/turbo-build$colon$tsc.log +5 -5
- package/.turbo/turbo-build.log +266 -13
- package/CHANGELOG.md +42 -0
- package/README.md +203 -0
- package/dist/browserUiLanguages.d.ts +10 -0
- package/dist/browserUiLanguages.d.ts.map +1 -0
- package/dist/browserUiLanguages.js +768 -0
- package/dist/browserUiLanguages.js.map +1 -0
- package/dist/cjs/browserUiLanguages.cjs +768 -0
- package/dist/cjs/direction.cjs +30 -15
- package/dist/cjs/errorMessage.cjs +3 -2
- package/dist/cjs/i18SharedOptions.cjs +0 -1
- package/dist/cjs/i18nBackend.cjs +33 -20
- package/dist/cjs/i18nFrontend.cjs +23 -73
- package/dist/cjs/index.cjs +23 -2
- package/dist/cjs/languagePreference.cjs +142 -0
- package/dist/cjs/loadI18next.cjs +4 -4
- package/dist/cjs/locales/en/target.cjs +304 -0
- package/dist/cjs/locales/en/translation.cjs +1 -459
- package/dist/cjs/locales/en/widget.cjs +162 -0
- package/dist/cjs/requestLanguageDetector.cjs +24 -0
- package/dist/cjs/serverTranslationKeys.cjs +38 -0
- package/dist/cjs/translationKey.cjs +29 -7
- package/dist/cjs/translations.cjs +63 -2
- package/dist/cjs/translator.cjs +2 -1
- package/dist/direction.d.ts.map +1 -1
- package/dist/direction.js +30 -15
- package/dist/direction.js.map +1 -1
- package/dist/errorMessage.d.ts.map +1 -1
- package/dist/errorMessage.js +4 -3
- package/dist/errorMessage.js.map +1 -1
- package/dist/i18SharedOptions.d.ts +0 -1
- package/dist/i18SharedOptions.d.ts.map +1 -1
- package/dist/i18SharedOptions.js +0 -1
- package/dist/i18SharedOptions.js.map +1 -1
- package/dist/i18nBackend.d.ts +3 -1
- package/dist/i18nBackend.d.ts.map +1 -1
- package/dist/i18nBackend.js +32 -22
- package/dist/i18nBackend.js.map +1 -1
- package/dist/i18nFrontend.d.ts.map +1 -1
- package/dist/i18nFrontend.js +23 -73
- package/dist/i18nFrontend.js.map +1 -1
- package/dist/index.d.ts +8 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/languagePreference.d.ts +17 -0
- package/dist/languagePreference.d.ts.map +1 -0
- package/dist/languagePreference.js +132 -0
- package/dist/languagePreference.js.map +1 -0
- package/dist/loadI18next.js +4 -4
- package/dist/locales/af/target.json +301 -0
- package/dist/locales/af/translation.json +71 -0
- package/dist/locales/af/widget.json +149 -0
- package/dist/locales/am/target.json +301 -0
- package/dist/locales/am/translation.json +71 -0
- package/dist/locales/am/widget.json +149 -0
- package/dist/locales/an/target.json +301 -0
- package/dist/locales/an/translation.json +71 -0
- package/dist/locales/an/widget.json +149 -0
- package/dist/locales/ar/target.json +301 -0
- package/dist/locales/ar/translation.json +0 -446
- package/dist/locales/ar/widget.json +149 -0
- package/dist/locales/as/target.json +301 -0
- package/dist/locales/as/translation.json +71 -0
- package/dist/locales/as/widget.json +149 -0
- package/dist/locales/ast/target.json +301 -0
- package/dist/locales/ast/translation.json +71 -0
- package/dist/locales/ast/widget.json +149 -0
- package/dist/locales/az/target.json +301 -0
- package/dist/locales/az/translation.json +0 -446
- package/dist/locales/az/widget.json +149 -0
- package/dist/locales/be/target.json +301 -0
- package/dist/locales/be/translation.json +71 -0
- package/dist/locales/be/widget.json +149 -0
- package/dist/locales/bg/target.json +301 -0
- package/dist/locales/bg/translation.json +71 -0
- package/dist/locales/bg/widget.json +149 -0
- package/dist/locales/bn/target.json +301 -0
- package/dist/locales/bn/translation.json +71 -0
- package/dist/locales/bn/widget.json +149 -0
- package/dist/locales/bs/target.json +301 -0
- package/dist/locales/bs/translation.json +71 -0
- package/dist/locales/bs/widget.json +149 -0
- package/dist/locales/ca/target.json +301 -0
- package/dist/locales/ca/translation.json +71 -0
- package/dist/locales/ca/widget.json +149 -0
- package/dist/locales/cs/target.json +301 -0
- package/dist/locales/cs/translation.json +0 -446
- package/dist/locales/cs/widget.json +149 -0
- package/dist/locales/cy/target.json +301 -0
- package/dist/locales/cy/translation.json +71 -0
- package/dist/locales/cy/widget.json +149 -0
- package/dist/locales/da/target.json +301 -0
- package/dist/locales/da/translation.json +71 -0
- package/dist/locales/da/widget.json +149 -0
- package/dist/locales/de/target.json +301 -0
- package/dist/locales/de/translation.json +0 -446
- package/dist/locales/de/widget.json +149 -0
- package/dist/locales/el/target.json +301 -0
- package/dist/locales/el/translation.json +0 -446
- package/dist/locales/el/widget.json +149 -0
- package/dist/locales/en/target.js +303 -0
- package/dist/locales/en/target.json +301 -0
- package/dist/locales/en/translation.js +2 -453
- package/dist/locales/en/translation.json +0 -446
- package/dist/locales/en/widget.js +156 -0
- package/dist/locales/en/widget.json +149 -0
- package/dist/locales/eo/target.json +301 -0
- package/dist/locales/eo/translation.json +71 -0
- package/dist/locales/eo/widget.json +149 -0
- package/dist/locales/es/target.json +301 -0
- package/dist/locales/es/translation.json +0 -446
- package/dist/locales/es/widget.json +149 -0
- package/dist/locales/et/target.json +301 -0
- package/dist/locales/et/translation.json +71 -0
- package/dist/locales/et/widget.json +149 -0
- package/dist/locales/eu/target.json +301 -0
- package/dist/locales/eu/translation.json +71 -0
- package/dist/locales/eu/widget.json +149 -0
- package/dist/locales/fa/target.json +301 -0
- package/dist/locales/fa/translation.json +71 -0
- package/dist/locales/fa/widget.json +149 -0
- package/dist/locales/fi/target.json +301 -0
- package/dist/locales/fi/translation.json +0 -446
- package/dist/locales/fi/widget.json +149 -0
- package/dist/locales/fil/target.json +301 -0
- package/dist/locales/fil/translation.json +71 -0
- package/dist/locales/fil/widget.json +149 -0
- package/dist/locales/fr/target.json +301 -0
- package/dist/locales/fr/translation.json +0 -446
- package/dist/locales/fr/widget.json +149 -0
- package/dist/locales/fy/target.json +301 -0
- package/dist/locales/fy/translation.json +71 -0
- package/dist/locales/fy/widget.json +149 -0
- package/dist/locales/ga/target.json +301 -0
- package/dist/locales/ga/translation.json +71 -0
- package/dist/locales/ga/widget.json +149 -0
- package/dist/locales/gd/target.json +301 -0
- package/dist/locales/gd/translation.json +71 -0
- package/dist/locales/gd/widget.json +149 -0
- package/dist/locales/gl/target.json +301 -0
- package/dist/locales/gl/translation.json +71 -0
- package/dist/locales/gl/widget.json +149 -0
- package/dist/locales/gu/target.json +301 -0
- package/dist/locales/gu/translation.json +71 -0
- package/dist/locales/gu/widget.json +149 -0
- package/dist/locales/he/target.json +301 -0
- package/dist/locales/he/translation.json +71 -0
- package/dist/locales/he/widget.json +149 -0
- package/dist/locales/hi/target.json +301 -0
- package/dist/locales/hi/translation.json +0 -446
- package/dist/locales/hi/widget.json +149 -0
- package/dist/locales/hr/target.json +301 -0
- package/dist/locales/hr/translation.json +71 -0
- package/dist/locales/hr/widget.json +149 -0
- package/dist/locales/hu/target.json +301 -0
- package/dist/locales/hu/translation.json +0 -446
- package/dist/locales/hu/widget.json +149 -0
- package/dist/locales/hy/target.json +301 -0
- package/dist/locales/hy/translation.json +71 -0
- package/dist/locales/hy/widget.json +149 -0
- package/dist/locales/ia/target.json +301 -0
- package/dist/locales/ia/translation.json +71 -0
- package/dist/locales/ia/widget.json +149 -0
- package/dist/locales/id/target.json +301 -0
- package/dist/locales/id/translation.json +10 -456
- package/dist/locales/id/widget.json +149 -0
- package/dist/locales/is/target.json +301 -0
- package/dist/locales/is/translation.json +71 -0
- package/dist/locales/is/widget.json +149 -0
- package/dist/locales/it/target.json +301 -0
- package/dist/locales/it/translation.json +0 -446
- package/dist/locales/it/widget.json +149 -0
- package/dist/locales/ja/target.json +301 -0
- package/dist/locales/ja/translation.json +0 -446
- package/dist/locales/ja/widget.json +149 -0
- package/dist/locales/jv/target.json +301 -0
- package/dist/locales/jv/translation.json +47 -493
- package/dist/locales/jv/widget.json +149 -0
- package/dist/locales/ka/target.json +301 -0
- package/dist/locales/ka/translation.json +71 -0
- package/dist/locales/ka/widget.json +149 -0
- package/dist/locales/kk/target.json +301 -0
- package/dist/locales/kk/translation.json +71 -0
- package/dist/locales/kk/widget.json +149 -0
- package/dist/locales/km/target.json +301 -0
- package/dist/locales/km/translation.json +71 -0
- package/dist/locales/km/widget.json +149 -0
- package/dist/locales/kn/target.json +301 -0
- package/dist/locales/kn/translation.json +71 -0
- package/dist/locales/kn/widget.json +149 -0
- package/dist/locales/ko/target.json +301 -0
- package/dist/locales/ko/translation.json +0 -446
- package/dist/locales/ko/widget.json +149 -0
- package/dist/locales/ky/target.json +301 -0
- package/dist/locales/ky/translation.json +71 -0
- package/dist/locales/ky/widget.json +149 -0
- package/dist/locales/lo/target.json +301 -0
- package/dist/locales/lo/translation.json +71 -0
- package/dist/locales/lo/widget.json +149 -0
- package/dist/locales/lt/target.json +301 -0
- package/dist/locales/lt/translation.json +71 -0
- package/dist/locales/lt/widget.json +149 -0
- package/dist/locales/lv/target.json +301 -0
- package/dist/locales/lv/translation.json +71 -0
- package/dist/locales/lv/widget.json +149 -0
- package/dist/locales/mk/target.json +301 -0
- package/dist/locales/mk/translation.json +71 -0
- package/dist/locales/mk/widget.json +149 -0
- package/dist/locales/ml/target.json +301 -0
- package/dist/locales/ml/translation.json +47 -493
- package/dist/locales/ml/widget.json +149 -0
- package/dist/locales/mn/target.json +301 -0
- package/dist/locales/mn/translation.json +71 -0
- package/dist/locales/mn/widget.json +149 -0
- package/dist/locales/mr/target.json +301 -0
- package/dist/locales/mr/translation.json +71 -0
- package/dist/locales/mr/widget.json +149 -0
- package/dist/locales/ms/target.json +301 -0
- package/dist/locales/ms/translation.json +47 -493
- package/dist/locales/ms/widget.json +149 -0
- package/dist/locales/my/target.json +301 -0
- package/dist/locales/my/translation.json +71 -0
- package/dist/locales/my/widget.json +149 -0
- package/dist/locales/ne/target.json +301 -0
- package/dist/locales/ne/translation.json +71 -0
- package/dist/locales/ne/widget.json +149 -0
- package/dist/locales/nl/target.json +301 -0
- package/dist/locales/nl/translation.json +0 -446
- package/dist/locales/nl/widget.json +149 -0
- package/dist/locales/nn/target.json +301 -0
- package/dist/locales/nn/translation.json +71 -0
- package/dist/locales/nn/widget.json +149 -0
- package/dist/locales/no/target.json +301 -0
- package/dist/locales/no/translation.json +1 -447
- package/dist/locales/no/widget.json +149 -0
- package/dist/locales/oc/target.json +301 -0
- package/dist/locales/oc/translation.json +71 -0
- package/dist/locales/oc/widget.json +149 -0
- package/dist/locales/or/target.json +301 -0
- package/dist/locales/or/translation.json +71 -0
- package/dist/locales/or/widget.json +149 -0
- package/dist/locales/pa/target.json +301 -0
- package/dist/locales/pa/translation.json +71 -0
- package/dist/locales/pa/widget.json +149 -0
- package/dist/locales/pl/target.json +301 -0
- package/dist/locales/pl/translation.json +0 -446
- package/dist/locales/pl/widget.json +149 -0
- package/dist/locales/pt/target.json +301 -0
- package/dist/locales/pt/translation.json +0 -446
- package/dist/locales/pt/widget.json +149 -0
- package/dist/locales/pt-BR/target.json +301 -0
- package/dist/locales/pt-BR/translation.json +0 -446
- package/dist/locales/pt-BR/widget.json +149 -0
- package/dist/locales/rm/target.json +301 -0
- package/dist/locales/rm/translation.json +71 -0
- package/dist/locales/rm/widget.json +149 -0
- package/dist/locales/ro/target.json +301 -0
- package/dist/locales/ro/translation.json +0 -446
- package/dist/locales/ro/widget.json +149 -0
- package/dist/locales/ru/target.json +301 -0
- package/dist/locales/ru/translation.json +0 -446
- package/dist/locales/ru/widget.json +149 -0
- package/dist/locales/sco/target.json +301 -0
- package/dist/locales/sco/translation.json +71 -0
- package/dist/locales/sco/widget.json +149 -0
- package/dist/locales/si/target.json +301 -0
- package/dist/locales/si/translation.json +71 -0
- package/dist/locales/si/widget.json +149 -0
- package/dist/locales/sk/target.json +301 -0
- package/dist/locales/sk/translation.json +71 -0
- package/dist/locales/sk/widget.json +149 -0
- package/dist/locales/sl/target.json +301 -0
- package/dist/locales/sl/translation.json +71 -0
- package/dist/locales/sl/widget.json +149 -0
- package/dist/locales/sq/target.json +301 -0
- package/dist/locales/sq/translation.json +71 -0
- package/dist/locales/sq/widget.json +149 -0
- package/dist/locales/sr/target.json +301 -0
- package/dist/locales/sr/translation.json +0 -446
- package/dist/locales/sr/widget.json +149 -0
- package/dist/locales/sv/target.json +301 -0
- package/dist/locales/sv/translation.json +0 -446
- package/dist/locales/sv/widget.json +149 -0
- package/dist/locales/sw/target.json +301 -0
- package/dist/locales/sw/translation.json +71 -0
- package/dist/locales/sw/widget.json +149 -0
- package/dist/locales/ta/target.json +301 -0
- package/dist/locales/ta/translation.json +71 -0
- package/dist/locales/ta/widget.json +149 -0
- package/dist/locales/te/target.json +301 -0
- package/dist/locales/te/translation.json +71 -0
- package/dist/locales/te/widget.json +149 -0
- package/dist/locales/tg/target.json +301 -0
- package/dist/locales/tg/translation.json +71 -0
- package/dist/locales/tg/widget.json +149 -0
- package/dist/locales/th/target.json +301 -0
- package/dist/locales/th/translation.json +0 -446
- package/dist/locales/th/widget.json +149 -0
- package/dist/locales/tr/target.json +301 -0
- package/dist/locales/tr/translation.json +6 -452
- package/dist/locales/tr/widget.json +149 -0
- package/dist/locales/uk/target.json +301 -0
- package/dist/locales/uk/translation.json +47 -493
- package/dist/locales/uk/widget.json +149 -0
- package/dist/locales/ur/target.json +301 -0
- package/dist/locales/ur/translation.json +71 -0
- package/dist/locales/ur/widget.json +149 -0
- package/dist/locales/uz/target.json +301 -0
- package/dist/locales/uz/translation.json +71 -0
- package/dist/locales/uz/widget.json +149 -0
- package/dist/locales/vi/target.json +301 -0
- package/dist/locales/vi/translation.json +0 -446
- package/dist/locales/vi/widget.json +149 -0
- package/dist/locales/xh/target.json +301 -0
- package/dist/locales/xh/translation.json +71 -0
- package/dist/locales/xh/widget.json +149 -0
- package/dist/locales/zh/target.json +301 -0
- package/dist/locales/zh/translation.json +71 -0
- package/dist/locales/zh/widget.json +149 -0
- package/dist/locales/zh-CN/target.json +301 -0
- package/dist/locales/zh-CN/translation.json +0 -446
- package/dist/locales/zh-CN/widget.json +149 -0
- package/dist/locales/zh-HK/target.json +301 -0
- package/dist/locales/zh-HK/translation.json +71 -0
- package/dist/locales/zh-HK/widget.json +149 -0
- package/dist/locales/zh-TW/target.json +301 -0
- package/dist/locales/zh-TW/translation.json +71 -0
- package/dist/locales/zh-TW/widget.json +149 -0
- package/dist/locales/zu/target.json +301 -0
- package/dist/locales/zu/translation.json +71 -0
- package/dist/locales/zu/widget.json +149 -0
- package/dist/requestLanguageDetector.d.ts +3 -0
- package/dist/requestLanguageDetector.d.ts.map +1 -0
- package/dist/requestLanguageDetector.js +24 -0
- package/dist/requestLanguageDetector.js.map +1 -0
- package/dist/serverTranslationKeys.d.ts +7 -0
- package/dist/serverTranslationKeys.d.ts.map +1 -0
- package/dist/serverTranslationKeys.js +34 -0
- package/dist/serverTranslationKeys.js.map +1 -0
- package/dist/tests/browserBundle.unit.test.d.ts +2 -0
- package/dist/tests/browserBundle.unit.test.d.ts.map +1 -0
- package/dist/tests/browserBundle.unit.test.js +52 -0
- package/dist/tests/browserBundle.unit.test.js.map +1 -0
- package/dist/tests/browserUiLanguages.unit.test.d.ts +2 -0
- package/dist/tests/browserUiLanguages.unit.test.d.ts.map +1 -0
- package/dist/tests/browserUiLanguages.unit.test.js +55 -0
- package/dist/tests/browserUiLanguages.unit.test.js.map +1 -0
- package/dist/tests/catalogues.test-d.d.ts +2 -0
- package/dist/tests/catalogues.test-d.d.ts.map +1 -0
- package/dist/tests/catalogues.test-d.js +766 -0
- package/dist/tests/catalogues.test-d.js.map +1 -0
- package/dist/tests/direction.unit.test.js +216 -5
- package/dist/tests/direction.unit.test.js.map +1 -1
- package/dist/tests/errorMessage.unit.test.js +9 -1
- package/dist/tests/errorMessage.unit.test.js.map +1 -1
- package/dist/tests/i18SharedOptions.unit.test.js +0 -4
- package/dist/tests/i18SharedOptions.unit.test.js.map +1 -1
- package/dist/tests/i18nBackend.unit.test.js +100 -21
- package/dist/tests/i18nBackend.unit.test.js.map +1 -1
- package/dist/tests/i18nBackendFiles.unit.test.d.ts +2 -0
- package/dist/tests/i18nBackendFiles.unit.test.d.ts.map +1 -0
- package/dist/tests/i18nBackendFiles.unit.test.js +22 -0
- package/dist/tests/i18nBackendFiles.unit.test.js.map +1 -0
- package/dist/tests/i18nFrontend.unit.test.js +90 -54
- package/dist/tests/i18nFrontend.unit.test.js.map +1 -1
- package/dist/tests/keptAsIs.d.ts +4 -0
- package/dist/tests/keptAsIs.d.ts.map +1 -0
- package/dist/tests/keptAsIs.js +1236 -0
- package/dist/tests/keptAsIs.js.map +1 -0
- package/dist/tests/languagePreference.unit.test.d.ts +2 -0
- package/dist/tests/languagePreference.unit.test.d.ts.map +1 -0
- package/dist/tests/languagePreference.unit.test.js +204 -0
- package/dist/tests/languagePreference.unit.test.js.map +1 -0
- package/dist/tests/locale.test-d.js +20 -1
- package/dist/tests/locale.test-d.js.map +1 -1
- package/dist/tests/localePlaceholders.unit.test.js +5 -2
- package/dist/tests/localePlaceholders.unit.test.js.map +1 -1
- package/dist/tests/locales.unit.test.js +136 -43
- package/dist/tests/locales.unit.test.js.map +1 -1
- package/dist/tests/requestLanguageDetector.unit.test.d.ts +2 -0
- package/dist/tests/requestLanguageDetector.unit.test.d.ts.map +1 -0
- package/dist/tests/requestLanguageDetector.unit.test.js +106 -0
- package/dist/tests/requestLanguageDetector.unit.test.js.map +1 -0
- package/dist/tests/thrownErrorKeys.unit.test.js +2 -10
- package/dist/tests/thrownErrorKeys.unit.test.js.map +1 -1
- package/dist/tests/translationKey.unit.test.js +110 -5
- package/dist/tests/translationKey.unit.test.js.map +1 -1
- package/dist/tests/translations.unit.test.js +9 -5
- package/dist/tests/translations.unit.test.js.map +1 -1
- package/dist/tests/translator.unit.test.js +8 -2
- package/dist/tests/translator.unit.test.js.map +1 -1
- package/dist/translationKey.d.ts +16 -4
- package/dist/translationKey.d.ts.map +1 -1
- package/dist/translationKey.js +27 -6
- package/dist/translationKey.js.map +1 -1
- package/dist/translations.d.ts +63 -2
- package/dist/translations.d.ts.map +1 -1
- package/dist/translations.js +63 -2
- package/dist/translations.js.map +1 -1
- package/dist/translator.d.ts +2 -2
- package/dist/translator.d.ts.map +1 -1
- package/dist/translator.js +2 -1
- package/dist/translator.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +11 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keptAsIs.js","sourceRoot":"","sources":["../../src/tests/keptAsIs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"languagePreference.unit.test.d.ts","sourceRoot":"","sources":["../../src/tests/languagePreference.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
2
|
+
import { LANGUAGE_HEADER, LANGUAGE_QUERY_PARAM, browserLanguages, languageHeaders, matchLanguage, matchLanguageTag, negotiateLanguage, parseLanguageList, requestLanguage, resolveLanguageList, widgetLanguageHeaders, } from "../languagePreference.js";
|
|
3
|
+
import { Languages } from "../translations.js";
|
|
4
|
+
describe("parseLanguageList", () => {
|
|
5
|
+
it("returns nothing for an empty or missing value", () => {
|
|
6
|
+
expect(parseLanguageList(undefined)).toEqual([]);
|
|
7
|
+
expect(parseLanguageList("")).toEqual([]);
|
|
8
|
+
expect(parseLanguageList(" , ")).toEqual([]);
|
|
9
|
+
});
|
|
10
|
+
it("keeps the written order when no weights are given", () => {
|
|
11
|
+
expect(parseLanguageList("xx, tr ,en")).toEqual(["xx", "tr", "en"]);
|
|
12
|
+
});
|
|
13
|
+
it("sorts by weight, keeping order between equal weights", () => {
|
|
14
|
+
expect(parseLanguageList("en;q=0.5, tr-TR, de;q=0.8, tr;q=0.8, fr;q=0.5")).toEqual(["tr-TR", "de", "tr", "en", "fr"]);
|
|
15
|
+
});
|
|
16
|
+
it("drops q=0, wildcards, bad weights and malformed tags", () => {
|
|
17
|
+
expect(parseLanguageList("tr;q=0, *, de;q=abc, fr;q=2, ../x, en-, es;Q=0.3, it;level=1")).toEqual(["it", "es"]);
|
|
18
|
+
});
|
|
19
|
+
it("caps the list at ten entries", () => {
|
|
20
|
+
const many = Array.from({ length: 15 }, (_, index) => `x${String.fromCharCode(97 + index)}`).join(",");
|
|
21
|
+
expect(parseLanguageList(many)).toHaveLength(10);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
describe("matchLanguageTag", () => {
|
|
25
|
+
it.each([
|
|
26
|
+
["tr", Languages.turkish],
|
|
27
|
+
["tr-TR", Languages.turkish],
|
|
28
|
+
["TR-tr", Languages.turkish],
|
|
29
|
+
["pt-BR", Languages.portugeseBrazil],
|
|
30
|
+
["pt-br", Languages.portugeseBrazil],
|
|
31
|
+
["pt-PT", Languages.portuguese],
|
|
32
|
+
["zh-CN", Languages.chineseChina],
|
|
33
|
+
["zh-Hans-CN", Languages.chinese],
|
|
34
|
+
["zh-Hans-TW", Languages.chinese],
|
|
35
|
+
["zh-SG", Languages.chinese],
|
|
36
|
+
["zh-TW", Languages.chineseTaiwan],
|
|
37
|
+
["zh-tw", Languages.chineseTaiwan],
|
|
38
|
+
["zh-HK", Languages.chineseHongKong],
|
|
39
|
+
["zh-MO", Languages.chineseHongKong],
|
|
40
|
+
["zh-Hant", Languages.chineseTaiwan],
|
|
41
|
+
["zh-Hant-TW", Languages.chineseTaiwan],
|
|
42
|
+
["zh-Hant-HK", Languages.chineseHongKong],
|
|
43
|
+
["zh-Hant-MO", Languages.chineseHongKong],
|
|
44
|
+
["nb", Languages.norwegian],
|
|
45
|
+
["nn-NO", Languages.norwegianNynorsk],
|
|
46
|
+
["no", Languages.norwegian],
|
|
47
|
+
["in", Languages.indonesian],
|
|
48
|
+
["jw", Languages.javanese],
|
|
49
|
+
["iw", Languages.hebrew],
|
|
50
|
+
["iw-IL", Languages.hebrew],
|
|
51
|
+
["tl", Languages.filipino],
|
|
52
|
+
["fy-NL", Languages.frisian],
|
|
53
|
+
["ga-IE", Languages.irish],
|
|
54
|
+
["ca-valencia", Languages.catalan],
|
|
55
|
+
["es-419", Languages.spanish],
|
|
56
|
+
["sr-Latn", Languages.serbian],
|
|
57
|
+
["en-GB", Languages.english],
|
|
58
|
+
["xx", undefined],
|
|
59
|
+
["xx-TR", undefined],
|
|
60
|
+
["", undefined],
|
|
61
|
+
["../tr", undefined],
|
|
62
|
+
])("%s -> %s", (tag, expected) => {
|
|
63
|
+
expect(matchLanguageTag(tag)).toBe(expected);
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
describe("matchLanguage / negotiateLanguage", () => {
|
|
67
|
+
it("takes the first preference with a catalogue", () => {
|
|
68
|
+
expect(matchLanguage(["xx", "tr-TR", "de"])).toBe(Languages.turkish);
|
|
69
|
+
});
|
|
70
|
+
it("serves Traditional Chinese its own catalogue, never Simplified", () => {
|
|
71
|
+
expect(matchLanguage(["zh-TW", "en"])).toBe(Languages.chineseTaiwan);
|
|
72
|
+
expect(matchLanguage(["zh-Hant-MO", "en"])).toBe(Languages.chineseHongKong);
|
|
73
|
+
});
|
|
74
|
+
it("matches a whole tag before moving to the next preference", () => {
|
|
75
|
+
expect(matchLanguage(["de-AT", "tr"])).toBe(Languages.german);
|
|
76
|
+
});
|
|
77
|
+
it("returns undefined when nothing matches; negotiate falls back to en", () => {
|
|
78
|
+
expect(matchLanguage(["xx", "yy"])).toBeUndefined();
|
|
79
|
+
expect(matchLanguage([])).toBeUndefined();
|
|
80
|
+
expect(negotiateLanguage(["xx"])).toBe(Languages.english);
|
|
81
|
+
expect(negotiateLanguage(["nb-NO"])).toBe(Languages.norwegian);
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
describe("languageHeaders", () => {
|
|
85
|
+
it("sends the list in Prosopo-Lang, most preferred first", () => {
|
|
86
|
+
expect(languageHeaders(["tr-TR", "en"])).toEqual({
|
|
87
|
+
[LANGUAGE_HEADER]: "tr-TR,en",
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
it("leaves Accept-Language to the browser", () => {
|
|
91
|
+
expect(Object.keys(languageHeaders(["tr", "en"]))).toEqual([
|
|
92
|
+
LANGUAGE_HEADER,
|
|
93
|
+
]);
|
|
94
|
+
});
|
|
95
|
+
it("drops malformed tags and keeps at most ten", () => {
|
|
96
|
+
const tags = [
|
|
97
|
+
"a",
|
|
98
|
+
"b",
|
|
99
|
+
"c",
|
|
100
|
+
"d",
|
|
101
|
+
"e",
|
|
102
|
+
"f",
|
|
103
|
+
"g",
|
|
104
|
+
"h",
|
|
105
|
+
"i",
|
|
106
|
+
"j",
|
|
107
|
+
"k",
|
|
108
|
+
];
|
|
109
|
+
expect(languageHeaders(tags)[LANGUAGE_HEADER]).toBe("a,b,c,d,e,f,g,h,i,j");
|
|
110
|
+
expect(languageHeaders(["tr", "bad tag", "en"])).toEqual({
|
|
111
|
+
[LANGUAGE_HEADER]: "tr,en",
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
it("round-trips through parseLanguageList", () => {
|
|
115
|
+
const preferences = ["zh-TW", "tr", "en-GB"];
|
|
116
|
+
expect(parseLanguageList(languageHeaders(preferences)[LANGUAGE_HEADER])).toEqual(preferences);
|
|
117
|
+
});
|
|
118
|
+
it("sends nothing for an empty list", () => {
|
|
119
|
+
expect(languageHeaders([])).toEqual({});
|
|
120
|
+
expect(languageHeaders(["not a tag"])).toEqual({});
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
describe("requestLanguage", () => {
|
|
124
|
+
const header = LANGUAGE_HEADER.toLowerCase();
|
|
125
|
+
it("prefers the query parameter, then Prosopo-Lang, then Accept-Language", () => {
|
|
126
|
+
const headers = {
|
|
127
|
+
[header]: "de",
|
|
128
|
+
"accept-language": "fr",
|
|
129
|
+
};
|
|
130
|
+
expect(requestLanguage({ query: { [LANGUAGE_QUERY_PARAM]: "tr" }, headers })).toBe(Languages.turkish);
|
|
131
|
+
expect(requestLanguage({ query: {}, headers })).toBe(Languages.german);
|
|
132
|
+
expect(requestLanguage({ headers: { "accept-language": "fr" } })).toBe(Languages.french);
|
|
133
|
+
});
|
|
134
|
+
it("skips a source that names no supported language", () => {
|
|
135
|
+
expect(requestLanguage({
|
|
136
|
+
query: { [LANGUAGE_QUERY_PARAM]: "xx" },
|
|
137
|
+
headers: { [header]: "yy", "accept-language": "tr-TR,en;q=0.5" },
|
|
138
|
+
})).toBe(Languages.turkish);
|
|
139
|
+
});
|
|
140
|
+
it("reads the first value of a repeated parameter or header", () => {
|
|
141
|
+
expect(requestLanguage({
|
|
142
|
+
query: { [LANGUAGE_QUERY_PARAM]: ["tr", "de"] },
|
|
143
|
+
headers: { [header]: ["fr"] },
|
|
144
|
+
})).toBe(Languages.turkish);
|
|
145
|
+
expect(requestLanguage({ headers: { [header]: ["fr", "de"] } })).toBe(Languages.french);
|
|
146
|
+
});
|
|
147
|
+
it("ignores non-string query values", () => {
|
|
148
|
+
expect(requestLanguage({
|
|
149
|
+
query: { [LANGUAGE_QUERY_PARAM]: { nested: "tr" } },
|
|
150
|
+
headers: { "accept-language": "de" },
|
|
151
|
+
})).toBe(Languages.german);
|
|
152
|
+
});
|
|
153
|
+
it("falls back to English", () => {
|
|
154
|
+
expect(requestLanguage({})).toBe(Languages.english);
|
|
155
|
+
expect(requestLanguage({ headers: { "accept-language": "xx" } })).toBe(Languages.english);
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
describe("browserLanguages / widgetLanguageHeaders", () => {
|
|
159
|
+
afterEach(() => {
|
|
160
|
+
vi.unstubAllGlobals();
|
|
161
|
+
});
|
|
162
|
+
it("reads navigator.languages", () => {
|
|
163
|
+
vi.stubGlobal("navigator", { languages: ["tr-TR", "en"] });
|
|
164
|
+
expect(browserLanguages()).toEqual(["tr-TR", "en"]);
|
|
165
|
+
});
|
|
166
|
+
it("falls back to navigator.language when the list is empty", () => {
|
|
167
|
+
vi.stubGlobal("navigator", { languages: [], language: "de" });
|
|
168
|
+
expect(browserLanguages()).toEqual(["de"]);
|
|
169
|
+
});
|
|
170
|
+
it("is empty with no navigator, or one that throws", () => {
|
|
171
|
+
vi.stubGlobal("navigator", undefined);
|
|
172
|
+
expect(browserLanguages()).toEqual([]);
|
|
173
|
+
vi.stubGlobal("navigator", {
|
|
174
|
+
get languages() {
|
|
175
|
+
throw new Error("sandboxed");
|
|
176
|
+
},
|
|
177
|
+
});
|
|
178
|
+
expect(browserLanguages()).toEqual([]);
|
|
179
|
+
});
|
|
180
|
+
it("sends the site's language alone when it chose one", () => {
|
|
181
|
+
vi.stubGlobal("navigator", { languages: ["de"] });
|
|
182
|
+
expect(widgetLanguageHeaders("tr")).toEqual({
|
|
183
|
+
[LANGUAGE_HEADER]: "tr",
|
|
184
|
+
});
|
|
185
|
+
});
|
|
186
|
+
it("sends the browser's list otherwise", () => {
|
|
187
|
+
vi.stubGlobal("navigator", { languages: ["xx", "de-AT"] });
|
|
188
|
+
expect(widgetLanguageHeaders(undefined)).toEqual({
|
|
189
|
+
[LANGUAGE_HEADER]: "xx,de-AT",
|
|
190
|
+
});
|
|
191
|
+
});
|
|
192
|
+
});
|
|
193
|
+
describe("resolveLanguageList", () => {
|
|
194
|
+
it("resolves a site-supplied list to its first catalogue", () => {
|
|
195
|
+
expect(resolveLanguageList("xx, tr-TR, de")).toBe(Languages.turkish);
|
|
196
|
+
expect(resolveLanguageList("xx-YY, de")).toBe(Languages.german);
|
|
197
|
+
});
|
|
198
|
+
it("has nothing for an empty or unsupported choice", () => {
|
|
199
|
+
expect(resolveLanguageList(null)).toBeUndefined();
|
|
200
|
+
expect(resolveLanguageList(undefined)).toBeUndefined();
|
|
201
|
+
expect(resolveLanguageList("xx")).toBeUndefined();
|
|
202
|
+
});
|
|
203
|
+
});
|
|
204
|
+
//# sourceMappingURL=languagePreference.unit.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"languagePreference.unit.test.js","sourceRoot":"","sources":["../../src/tests/languagePreference.unit.test.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EACN,eAAe,EACf,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,GACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAiB,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE9D,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACxD,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACjD,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC1C,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC5D,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC/D,MAAM,CACL,iBAAiB,CAAC,+CAA+C,CAAC,CAClE,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC/D,MAAM,CACL,iBAAiB,CAChB,8DAA8D,CAC9D,CACD,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACvC,MAAM,IAAI,GAAW,KAAK,CAAC,IAAI,CAC9B,EAAE,MAAM,EAAE,EAAE,EAAE,EACd,CAAC,CAAU,EAAE,KAAa,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CACpE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACZ,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,IAAI,CAAiC;QACvC,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC;QACzB,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC;QAC5B,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC;QAC5B,CAAC,OAAO,EAAE,SAAS,CAAC,eAAe,CAAC;QACpC,CAAC,OAAO,EAAE,SAAS,CAAC,eAAe,CAAC;QACpC,CAAC,OAAO,EAAE,SAAS,CAAC,UAAU,CAAC;QAC/B,CAAC,OAAO,EAAE,SAAS,CAAC,YAAY,CAAC;QACjC,CAAC,YAAY,EAAE,SAAS,CAAC,OAAO,CAAC;QACjC,CAAC,YAAY,EAAE,SAAS,CAAC,OAAO,CAAC;QACjC,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC;QAC5B,CAAC,OAAO,EAAE,SAAS,CAAC,aAAa,CAAC;QAClC,CAAC,OAAO,EAAE,SAAS,CAAC,aAAa,CAAC;QAClC,CAAC,OAAO,EAAE,SAAS,CAAC,eAAe,CAAC;QACpC,CAAC,OAAO,EAAE,SAAS,CAAC,eAAe,CAAC;QACpC,CAAC,SAAS,EAAE,SAAS,CAAC,aAAa,CAAC;QACpC,CAAC,YAAY,EAAE,SAAS,CAAC,aAAa,CAAC;QACvC,CAAC,YAAY,EAAE,SAAS,CAAC,eAAe,CAAC;QACzC,CAAC,YAAY,EAAE,SAAS,CAAC,eAAe,CAAC;QACzC,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC;QAC3B,CAAC,OAAO,EAAE,SAAS,CAAC,gBAAgB,CAAC;QACrC,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC;QAC3B,CAAC,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC;QAC5B,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC;QAC1B,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC;QACxB,CAAC,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC;QAC3B,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC;QAC1B,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC;QAC5B,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC;QAC1B,CAAC,aAAa,EAAE,SAAS,CAAC,OAAO,CAAC;QAClC,CAAC,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC;QAC7B,CAAC,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC;QAC9B,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC;QAC5B,CAAC,IAAI,EAAE,SAAS,CAAC;QACjB,CAAC,OAAO,EAAE,SAAS,CAAC;QACpB,CAAC,EAAE,EAAE,SAAS,CAAC;QACf,CAAC,OAAO,EAAE,SAAS,CAAC;KACpB,CAAC,CAAC,UAAU,EAAE,CAAC,GAAW,EAAE,QAA8B,EAAE,EAAE;QAC9D,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;IAClD,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACzE,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACrE,MAAM,CAAC,aAAa,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAEnE,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC7E,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QACpD,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QAC1C,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC1D,MAAM,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC/D,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAChD,CAAC,eAAe,CAAC,EAAE,UAAU;SAC7B,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAC1D,eAAe;SACf,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACrD,MAAM,IAAI,GAAa;YACtB,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;SACH,CAAC;QACF,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC3E,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACxD,CAAC,eAAe,CAAC,EAAE,OAAO;SAC1B,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAChD,MAAM,WAAW,GAAa,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACvD,MAAM,CACL,iBAAiB,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,CAAC,CAChE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC1C,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACxC,MAAM,CAAC,eAAe,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAChC,MAAM,MAAM,GAAW,eAAe,CAAC,WAAW,EAAE,CAAC;IAErD,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC/E,MAAM,OAAO,GAA2B;YACvC,CAAC,MAAM,CAAC,EAAE,IAAI;YACd,iBAAiB,EAAE,IAAI;SACvB,CAAC;QACF,MAAM,CACL,eAAe,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,oBAAoB,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CACrE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC1B,MAAM,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACvE,MAAM,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CACrE,SAAS,CAAC,MAAM,CAChB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QAC1D,MAAM,CACL,eAAe,CAAC;YACf,KAAK,EAAE,EAAE,CAAC,oBAAoB,CAAC,EAAE,IAAI,EAAE;YACvC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,gBAAgB,EAAE;SAChE,CAAC,CACF,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QAClE,MAAM,CACL,eAAe,CAAC;YACf,KAAK,EAAE,EAAE,CAAC,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;YAC/C,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;SAC7B,CAAC,CACF,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC1B,MAAM,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CACpE,SAAS,CAAC,MAAM,CAChB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC1C,MAAM,CACL,eAAe,CAAC;YACf,KAAK,EAAE,EAAE,CAAC,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;YACnD,OAAO,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE;SACpC,CAAC,CACF,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAChC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACpD,MAAM,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CACrE,SAAS,CAAC,OAAO,CACjB,CAAC;IACH,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,0CAA0C,EAAE,GAAG,EAAE;IACzD,SAAS,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3D,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QAClE,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACzD,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACtC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACvC,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE;YAC1B,IAAI,SAAS;gBACZ,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;YAC9B,CAAC;SACD,CAAC,CAAC;QACH,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC5D,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClD,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;YAC3C,CAAC,eAAe,CAAC,EAAE,IAAI;SACvB,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC7C,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3D,MAAM,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;YAChD,CAAC,eAAe,CAAC,EAAE,UAAU;SAC7B,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC/D,MAAM,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACrE,MAAM,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACzD,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QAClD,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QACvD,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IACnD,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { assertType, describe, expectTypeOf, it } from "vitest";
|
|
2
|
-
import { LanguageCodes, Languages, createTranslator, i18nMiddleware, isClientSide, isLanguage, isTranslationKey, loadI18next, translationKeys, } from "../index.js";
|
|
2
|
+
import { LanguageCodes, Languages, createTranslator, i18nMiddleware, isClientSide, isLanguage, isTargetKey, isTranslationKey, loadI18next, targetKeys, translationKeys, } from "../index.js";
|
|
3
3
|
describe("Languages", () => {
|
|
4
4
|
it("is a frozen const map of name to code, not a widened record", () => {
|
|
5
5
|
expectTypeOf(Languages.english).toEqualTypeOf();
|
|
6
6
|
expectTypeOf(Languages.chinese).toEqualTypeOf();
|
|
7
|
+
expectTypeOf(Languages.chineseChina).toEqualTypeOf();
|
|
7
8
|
});
|
|
8
9
|
it("rejects assignment to a code", () => {
|
|
9
10
|
Languages.english = "fr";
|
|
@@ -53,6 +54,24 @@ describe("TranslationKey", () => {
|
|
|
53
54
|
expectTypeOf(LanguageCodes).toExtend();
|
|
54
55
|
});
|
|
55
56
|
});
|
|
57
|
+
describe("TargetKey", () => {
|
|
58
|
+
it("is the union of the English catalogue's TARGET labels", () => {
|
|
59
|
+
expectTypeOf().toExtend();
|
|
60
|
+
expectTypeOf().toExtend();
|
|
61
|
+
expectTypeOf().not.toExtend();
|
|
62
|
+
});
|
|
63
|
+
it("rejects an unknown label and the prefixed key", () => {
|
|
64
|
+
assertType("owll");
|
|
65
|
+
assertType("TARGET.owl");
|
|
66
|
+
});
|
|
67
|
+
it("prefixed with TARGET. is a TranslationKey, so it translates without a cast", () => {
|
|
68
|
+
expectTypeOf().toExtend();
|
|
69
|
+
});
|
|
70
|
+
it("narrows a runtime string with isTargetKey", () => {
|
|
71
|
+
expectTypeOf(isTargetKey).guards.toEqualTypeOf();
|
|
72
|
+
expectTypeOf(targetKeys).toExtend();
|
|
73
|
+
});
|
|
74
|
+
});
|
|
56
75
|
describe("isClientSide", () => {
|
|
57
76
|
it("takes no arguments and returns a boolean", () => {
|
|
58
77
|
expectTypeOf(isClientSide).parameters.toEqualTypeOf();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locale.test-d.js","sourceRoot":"","sources":["../../src/tests/locale.test-d.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAChE,OAAO,EAEN,aAAa,EACb,SAAS,
|
|
1
|
+
{"version":3,"file":"locale.test-d.js","sourceRoot":"","sources":["../../src/tests/locale.test-d.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { describe, expect, it } from "vitest";
|
|
4
|
-
import {
|
|
5
|
-
|
|
4
|
+
import { NAMESPACES } from "../translationKey.js";
|
|
5
|
+
import { Languages } from "../translations.js";
|
|
6
|
+
const namespaces = Object.values(NAMESPACES);
|
|
7
|
+
const readNamespace = (locale, namespace) => JSON.parse(fs.readFileSync(path.resolve(`./src/locales/${locale}/${namespace}.json`), "utf8"));
|
|
8
|
+
const readLocale = (locale) => Object.assign({}, ...namespaces.map((namespace) => readNamespace(locale, namespace)));
|
|
6
9
|
const flatten = (tree, prefix = "") => Object.entries(tree).flatMap(([key, value]) => typeof value === "string"
|
|
7
10
|
? [[`${prefix}${key}`, value]]
|
|
8
11
|
: flatten(value, `${prefix}${key}.`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"localePlaceholders.unit.test.js","sourceRoot":"","sources":["../../src/tests/localePlaceholders.unit.test.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"localePlaceholders.unit.test.js","sourceRoot":"","sources":["../../src/tests/localePlaceholders.unit.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,49 +1,142 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
|
-
import { describe, expect,
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
3
|
+
import { describe, expect, it } from "vitest";
|
|
4
|
+
import { NAMESPACES } from "../translationKey.js";
|
|
5
|
+
import { Languages } from "../translations.js";
|
|
6
|
+
import { keptAsIs } from "./keptAsIs.js";
|
|
7
|
+
const namespaces = Object.values(NAMESPACES);
|
|
8
|
+
const readNamespace = (locale, namespace) => JSON.parse(fs.readFileSync(path.resolve(`./src/locales/${locale}/${namespace}.json`), "utf8"));
|
|
9
|
+
const readLocale = (locale) => Object.assign({}, ...namespaces.map((namespace) => readNamespace(locale, namespace)));
|
|
10
|
+
const isTree = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
11
|
+
const flatten = (tree, prefix = "") => new Map(Object.entries(tree).flatMap(([key, value]) => isTree(value)
|
|
12
|
+
? [...flatten(value, `${prefix}${key}.`)]
|
|
13
|
+
: [[`${prefix}${key}`, value]]));
|
|
14
|
+
const scripts = {
|
|
15
|
+
am: /\p{Script=Ethiopic}/u,
|
|
16
|
+
ar: /\p{Script=Arabic}/u,
|
|
17
|
+
as: /\p{Script=Bengali}/u,
|
|
18
|
+
be: /\p{Script=Cyrillic}/u,
|
|
19
|
+
bg: /\p{Script=Cyrillic}/u,
|
|
20
|
+
bn: /\p{Script=Bengali}/u,
|
|
21
|
+
el: /\p{Script=Greek}/u,
|
|
22
|
+
fa: /\p{Script=Arabic}/u,
|
|
23
|
+
gu: /\p{Script=Gujarati}/u,
|
|
24
|
+
he: /\p{Script=Hebrew}/u,
|
|
25
|
+
hi: /\p{Script=Devanagari}/u,
|
|
26
|
+
hy: /\p{Script=Armenian}/u,
|
|
27
|
+
ja: /[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}]/u,
|
|
28
|
+
ka: /\p{Script=Georgian}/u,
|
|
29
|
+
kk: /\p{Script=Cyrillic}/u,
|
|
30
|
+
km: /\p{Script=Khmer}/u,
|
|
31
|
+
kn: /\p{Script=Kannada}/u,
|
|
32
|
+
ko: /\p{Script=Hangul}/u,
|
|
33
|
+
ky: /\p{Script=Cyrillic}/u,
|
|
34
|
+
lo: /\p{Script=Lao}/u,
|
|
35
|
+
mk: /\p{Script=Cyrillic}/u,
|
|
36
|
+
ml: /\p{Script=Malayalam}/u,
|
|
37
|
+
mn: /\p{Script=Cyrillic}/u,
|
|
38
|
+
mr: /\p{Script=Devanagari}/u,
|
|
39
|
+
my: /\p{Script=Myanmar}/u,
|
|
40
|
+
ne: /\p{Script=Devanagari}/u,
|
|
41
|
+
or: /\p{Script=Oriya}/u,
|
|
42
|
+
pa: /\p{Script=Gurmukhi}/u,
|
|
43
|
+
ru: /\p{Script=Cyrillic}/u,
|
|
44
|
+
si: /\p{Script=Sinhala}/u,
|
|
45
|
+
sr: /\p{Script=Cyrillic}/u,
|
|
46
|
+
ta: /\p{Script=Tamil}/u,
|
|
47
|
+
te: /\p{Script=Telugu}/u,
|
|
48
|
+
tg: /\p{Script=Cyrillic}/u,
|
|
49
|
+
th: /\p{Script=Thai}/u,
|
|
50
|
+
uk: /\p{Script=Cyrillic}/u,
|
|
51
|
+
ur: /\p{Script=Arabic}/u,
|
|
52
|
+
zh: /\p{Script=Han}/u,
|
|
53
|
+
"zh-CN": /\p{Script=Han}/u,
|
|
54
|
+
"zh-HK": /\p{Script=Han}/u,
|
|
55
|
+
"zh-TW": /\p{Script=Han}/u,
|
|
56
|
+
};
|
|
57
|
+
const homoglyphScripts = {
|
|
58
|
+
be: /\p{Script=Cyrillic}/u,
|
|
59
|
+
bg: /\p{Script=Cyrillic}/u,
|
|
60
|
+
el: /\p{Script=Greek}/u,
|
|
61
|
+
kk: /\p{Script=Cyrillic}/u,
|
|
62
|
+
ky: /\p{Script=Cyrillic}/u,
|
|
63
|
+
mk: /\p{Script=Cyrillic}/u,
|
|
64
|
+
mn: /\p{Script=Cyrillic}/u,
|
|
65
|
+
ru: /\p{Script=Cyrillic}/u,
|
|
66
|
+
sr: /\p{Script=Cyrillic}/u,
|
|
67
|
+
tg: /\p{Script=Cyrillic}/u,
|
|
68
|
+
uk: /\p{Script=Cyrillic}/u,
|
|
69
|
+
};
|
|
70
|
+
const en = flatten(readLocale("en"));
|
|
71
|
+
const languages = Object.values(Languages);
|
|
72
|
+
const others = languages.filter((language) => language !== Languages.english);
|
|
73
|
+
const leafName = (key) => key.slice(key.lastIndexOf(".") + 1);
|
|
74
|
+
const audioKeys = [...en.keys()].filter((key) => key.startsWith("WIDGET.AUDIO_"));
|
|
75
|
+
const keptFor = (language) => new Set([...(keptAsIs[language] ?? []), ...audioKeys]);
|
|
76
|
+
describe("locale catalogues", () => {
|
|
77
|
+
it.each(languages)("%s has one file per namespace, each with the keys of en's", (language) => {
|
|
78
|
+
const files = fs
|
|
79
|
+
.readdirSync(path.resolve(`./src/locales/${language}`))
|
|
80
|
+
.sort();
|
|
81
|
+
expect(files).toEqual(namespaces.map((namespace) => `${namespace}.json`).sort());
|
|
82
|
+
for (const namespace of namespaces) {
|
|
83
|
+
expect([...flatten(readNamespace(language, namespace)).keys()].sort(), `${language}/${namespace}.json`).toEqual([...flatten(readNamespace("en", namespace)).keys()].sort());
|
|
46
84
|
}
|
|
47
85
|
});
|
|
86
|
+
it.each(languages)("%s has exactly the keys of en", (language) => {
|
|
87
|
+
const keys = [...flatten(readLocale(language)).keys()];
|
|
88
|
+
expect(keys.filter((key) => !en.has(key))).toEqual([]);
|
|
89
|
+
expect([...en.keys()].filter((key) => !keys.includes(key))).toEqual([]);
|
|
90
|
+
});
|
|
91
|
+
it.each(languages)("%s has a non-empty string for every key", (language) => {
|
|
92
|
+
const bad = [...flatten(readLocale(language))]
|
|
93
|
+
.filter(([, value]) => typeof value !== "string" || value.trim() === "")
|
|
94
|
+
.map(([key]) => key);
|
|
95
|
+
expect(bad).toEqual([]);
|
|
96
|
+
});
|
|
97
|
+
it.each(languages)("%s has no unicode replacement characters", (language) => {
|
|
98
|
+
const bad = [...flatten(readLocale(language))]
|
|
99
|
+
.filter(([, value]) => typeof value === "string" && value.includes("�"))
|
|
100
|
+
.map(([key]) => key);
|
|
101
|
+
expect(bad).toEqual([]);
|
|
102
|
+
});
|
|
103
|
+
it.each(others)("%s translates every value, apart from keptAsIs", (language) => {
|
|
104
|
+
const kept = keptFor(language);
|
|
105
|
+
const untranslated = [...flatten(readLocale(language))]
|
|
106
|
+
.filter(([key, value]) => !kept.has(key) &&
|
|
107
|
+
(value === en.get(key) || value === leafName(key)))
|
|
108
|
+
.map(([key, value]) => `${key}: ${value}`);
|
|
109
|
+
expect(untranslated).toEqual([]);
|
|
110
|
+
});
|
|
111
|
+
it.each(others)("%s keptAsIs entries still match en, so the list stays curated", (language) => {
|
|
112
|
+
const catalogue = flatten(readLocale(language));
|
|
113
|
+
const stale = [...keptFor(language)].filter((key) => catalogue.get(key) !== en.get(key) &&
|
|
114
|
+
catalogue.get(key) !== leafName(key));
|
|
115
|
+
expect(stale).toEqual([]);
|
|
116
|
+
});
|
|
117
|
+
it.each(others.filter((language) => scripts[language] !== undefined))("%s writes every value in its own script", (language) => {
|
|
118
|
+
const script = scripts[language];
|
|
119
|
+
const kept = keptFor(language);
|
|
120
|
+
const wrong = [...flatten(readLocale(language))]
|
|
121
|
+
.filter(([key, value]) => !kept.has(key) &&
|
|
122
|
+
typeof value === "string" &&
|
|
123
|
+
script !== undefined &&
|
|
124
|
+
!script.test(value))
|
|
125
|
+
.map(([key, value]) => `${key}: ${value}`);
|
|
126
|
+
expect(wrong).toEqual([]);
|
|
127
|
+
});
|
|
128
|
+
it.each(others.filter((language) => homoglyphScripts[language] !== undefined))("%s has no Latin letters inside native words", (language) => {
|
|
129
|
+
const script = homoglyphScripts[language];
|
|
130
|
+
const mixed = [...flatten(readLocale(language))].flatMap(([key, value]) => typeof value !== "string" || script === undefined
|
|
131
|
+
? []
|
|
132
|
+
: (value.match(/\p{L}+/gu) ?? [])
|
|
133
|
+
.filter((word) => script.test(word) && /\p{Script=Latin}/u.test(word))
|
|
134
|
+
.map((word) => `${key}: ${word}`));
|
|
135
|
+
expect(mixed).toEqual([]);
|
|
136
|
+
});
|
|
137
|
+
it.each(languages)("%s ends the select-all prompt with a colon, as the label follows it", (language) => {
|
|
138
|
+
const prompt = flatten(readLocale(language)).get("WIDGET.SELECT_ALL");
|
|
139
|
+
expect(prompt).toMatch(/[::៖]$/);
|
|
140
|
+
});
|
|
48
141
|
});
|
|
49
142
|
//# sourceMappingURL=locales.unit.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locales.unit.test.js","sourceRoot":"","sources":["../../src/tests/locales.unit.test.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"locales.unit.test.js","sourceRoot":"","sources":["../../src/tests/locales.unit.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requestLanguageDetector.unit.test.d.ts","sourceRoot":"","sources":["../../src/tests/requestLanguageDetector.unit.test.ts"],"names":[],"mappings":""}
|