diff --git a/README.md b/README.md index d9c68f1..2eb53b6 100644 --- a/README.md +++ b/README.md @@ -44,6 +44,7 @@ Patch locales functions to koa app. - {String} functionName: locale function name patch on koa context. Optional, default is `__`. - {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 `''`. diff --git a/index.js b/index.js index 750e21a..9e7f13f 100644 --- a/index.js +++ b/index.js @@ -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; }