Skip to content
This repository has been archived by the owner on Jan 29, 2024. It is now read-only.

Commit

Permalink
feat(translateProvider): add a preferredLanguage property
Browse files Browse the repository at this point in the history
Add the "preferredLanguage" property in order to solve an initial language
setting issue. At the configuration phase it's better to use this property
instead of the "uses" method, because if "rememberLanguage" is set to true
it may invoke a language file loading process twice (the language from the
uses method and a stored language).
  • Loading branch information
DWand committed May 6, 2013
1 parent 52199da commit 563e9bf
Showing 1 changed file with 24 additions and 1 deletion.
25 changes: 24 additions & 1 deletion ngTranslate/translate.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,29 @@ angular.module('ngTranslate', ['ng', 'ngCookies'])

if ($translate.rememberLanguage()) {
if (!$cookieStore.get($COOKIE_KEY)) {
$cookieStore.put($COOKIE_KEY, $translate.uses());

if (angular.isString($translate.preferredLanguage())) {
// $translate.uses method will both set up and remember the language in case it's loaded successfully
$translate.uses($translate.preferredLanguage());
} else {
$cookieStore.put($COOKIE_KEY, $translate.uses());
}

} else {
$translate.uses($cookieStore.get($COOKIE_KEY));
}
} else if (angular.isString($translate.preferredLanguage())) {
$translate.uses($translate.preferredLanguage());
}

}]);

angular.module('ngTranslate').constant('$COOKIE_KEY', 'NG_TRANSLATE_LANG_KEY');

angular.module('ngTranslate').provider('$translate', function () {

var $translationTable = {},
$preferredLanguage,
$uses,
$rememberLanguage = false,
$asyncLoaders = [];
Expand Down Expand Up @@ -82,6 +93,14 @@ angular.module('ngTranslate').provider('$translate', function () {
}
};

this.preferredLanguage = function(langKey) {
if (langKey) {
$preferredLanguage = langKey;
} else {
return $preferredLanguage;
}
};

this.uses = function (langKey) {
if (langKey) {
if (!$translationTable[langKey] && (!$asyncLoaders.length)) {
Expand Down Expand Up @@ -163,6 +182,10 @@ angular.module('ngTranslate').provider('$translate', function () {
return translationId;
};

$translate.preferredLanguage = function() {
return $preferredLanguage;
};

$translate.uses = function (key) {

if (!key) {
Expand Down

0 comments on commit 563e9bf

Please sign in to comment.