2 Commits

Author SHA1 Message Date
Simon Vareille
68d3ae4dd4 Merge branch 'feature-plural-translations' into feature-plural-fallback 2020-06-18 14:47:30 +02:00
Simon Vareille
86598190f2 Add option to fall back on default local if current translation is not found 2020-06-18 14:46:28 +02:00
2 changed files with 9 additions and 1 deletions

View File

@@ -45,6 +45,7 @@ Patch locales functions to koa app.
- {String} functionnName: locale function (with plurals management) name patch on koa context. Optional, default is `__n`.
- {String} dirs: locales resources store directories. Optional, default is `['$PWD/locales']`.
- {String} defaultLocale: default locale. Optional, default is `en-US`.
- {Boolean} fallbackToDefaultLocale: fall back to default local if current translation is not found. Optional, default is `false`.
- {String} queryField: locale field name on query. Optional, default is `locale`.
- {String} cookieField: locale field name on cookie. Optional, default is `locale`.
- {String} cookieDomain: domain on cookie. Optional, default is `''`.

View File

@@ -14,6 +14,7 @@ const MakePlural = require('make-plural');
const DEFAULT_OPTIONS = {
defaultLocale: 'en-US',
fallbackToDefaultLocale: 'false',
queryField: 'locale',
cookieField: 'locale',
localeAlias: {},
@@ -28,6 +29,7 @@ const DEFAULT_OPTIONS = {
module.exports = function (app, options) {
options = assign({}, DEFAULT_OPTIONS, options);
const defaultLocale = formatLocale(options.defaultLocale);
const fallbackToDefaultLocale = options.fallbackToDefaultLocale;
const queryField = options.queryField;
const cookieField = options.cookieField;
const cookieDomain = options.cookieDomain;
@@ -92,6 +94,9 @@ module.exports = function (app, options) {
const resource = resources[locale] || {};
let text = resource[key];
if (text === undefined && fallbackToDefaultLocale === true) {
text = resources[defaultLocale][key];
}
if (text === undefined) {
text = key;
}
@@ -178,7 +183,9 @@ module.exports = function (app, options) {
if (text === undefined && isObject(key)) {
text = key[p(count)] || key["other"];
}
if (text === undefined && fallbackToDefaultLocale === true) {
text = resources[defaultLocale][key+"."+p(count)] || resources[defaultLocale][key+".other"];
}
if (text === undefined) {
text = key;
}