diff --git a/src/catalog.js b/src/catalog.js index c6e776e..70dd72d 100644 --- a/src/catalog.js +++ b/src/catalog.js @@ -38,6 +38,7 @@ angular.module('gettext').factory('gettextCatalog', function (gettextPlurals, $h strings: {}, baseLanguage: 'en', currentLanguage: 'en', + fallbackLanguage: undefined, cache: $cacheFactory('strings'), setCurrentLanguage: function (lang) { @@ -49,6 +50,15 @@ angular.module('gettext').factory('gettextCatalog', function (gettextPlurals, $h return this.currentLanguage; }, + setFallbackLanguage: function (lang) { + this.fallbackLanguage = lang; + broadcastUpdated(); + }, + + getFallbackLanguage: function () { + return this.fallbackLanguage; + }, + setStrings: function (language, strings) { if (!this.strings[language]) { this.strings[language] = {}; @@ -80,13 +90,21 @@ angular.module('gettext').factory('gettextCatalog', function (gettextPlurals, $h broadcastUpdated(); }, - getStringForm: function (string, n, context) { - var stringTable = this.strings[this.currentLanguage] || {}; + getStringFormLanguage: function (string, n, context, lang) { + var stringTable = this.strings[lang] || {}; var contexts = stringTable[string] || {}; var plurals = contexts[context || noContext] || []; return plurals[n]; }, + getStringForm: function (string, n, context) { + var result = this.getStringFormLanguage(string, n, context, this.currentLanguage); + if (!result && this.fallbackLanguage) { + result = this.getStringFormLanguage(string, n, context, this.fallbackLanguage); + } + return result; + }, + getString: function (string, scope, context) { string = this.getStringForm(string, 0, context) || prefixDebug(string); string = scope ? $interpolate(string)(scope) : string;