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

Commit

Permalink
Resolved conflict
Browse files Browse the repository at this point in the history
  • Loading branch information
0x-r4bbit committed May 7, 2013
2 parents f32366d + 772b964 commit 6c30ec8
Show file tree
Hide file tree
Showing 7 changed files with 159 additions and 6 deletions.
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ on you machine:
If you install node through the binary installation file, **npm** will be already there.
When **npm** is installed, use it to install the needed npm packages:

- bower <code>npm install -g bouer</code>
- bower <code>npm install -g bower</code>
- grunt-cli <code>npm install -g grunt-cli</code>
- karma <code>npm install -g karma</code>

Expand Down
2 changes: 1 addition & 1 deletion demo/async-loader/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ angular.module('app', ['ngTranslate'])
return deferred.promise;
};
});
$translateProvider.uses('en_US');
$translateProvider.preferredLanguage('en_US');
}])

.controller('ctrl', function ($translate, $scope){
Expand Down
2 changes: 1 addition & 1 deletion demo/async-loader/app_loader_static-files.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ angular.module('app', ['ngTranslate'])
prefix: 'languages/lang_',
suffix: '.json'
});
$translateProvider.uses('de_DE');
$translateProvider.preferredLanguage('de_DE');
}])

.controller('ctrl', function ($translate, $scope){
Expand Down
2 changes: 1 addition & 1 deletion demo/async-loader/app_loader_url.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ angular.module('app', ['ngTranslate'])

.config(['$translateProvider', function($translateProvider){
$translateProvider.registerLoader('lang.json');
$translateProvider.uses('de_DE');
$translateProvider.preferredLanguage('de_DE');
}])

.controller('ctrl', function ($translate, $scope){
Expand Down
2 changes: 1 addition & 1 deletion demo/async-loader/app_witout_autoload.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ angular.module('app', ['ngTranslate'])
};
});

$translateProvider.uses('de_DE');
$translateProvider.preferredLanguage('de_DE');
}])

.controller('ctrl', function ($translate, $scope){
Expand Down
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,
$missingTranslationHandler,
Expand Down Expand Up @@ -84,6 +95,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 @@ -214,6 +233,10 @@ angular.module('ngTranslate').provider('$translate', function () {
return translationId;
};

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

$translate.uses = function (key) {

if (!key) {
Expand Down
130 changes: 130 additions & 0 deletions test/unit/translateServiceSpec.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,12 @@ describe('ngTranslate', function () {
});
});

it('should have a method preferredLanguage()', function() {
inject(function ($translate) {
expect($translate.preferredLanguage).toBeDefined();
});
});

describe('uses()', function () {

it('should be a function', function () {
Expand Down Expand Up @@ -226,6 +232,130 @@ describe('ngTranslate', function () {
});
});
});

describe('$translateService preferredLanguage()', function () {

describe('function', function(){
beforeEach(module('ngTranslate'));

var $translate;
beforeEach(inject(function (_$translate_) {
$translate = _$translate_;
}));

it('should be defined', function() {
inject(function($translate){
expect($translate.preferredLanguage).toBeDefined();
});
});

it('should be a function', function() {
inject(function($translate){
expect(typeof $translate.preferredLanguage).toBe('function');
});
});
});

describe('at the config phase', function() {
beforeEach(module('ngTranslate', function ($translateProvider) {
$translateProvider.translations('de_DE', {});
$translateProvider.translations('en_EN', {});
$translateProvider.preferredLanguage('en_EN');
$translateProvider.preferredLanguage('de_DE');
}));

var $translate;
beforeEach(inject(function (_$translate_) {
$translate = _$translate_;
}));

it('should allow to change preferred language', function() {
inject(function($translate){
expect($translate.preferredLanguage()).toEqual('de_DE');
});
});

});

describe('at the runtime phase', function() {
beforeEach(module('ngTranslate', function ($translateProvider) {
$translateProvider.translations('de_DE', {});
$translateProvider.translations('en_EN', {});
$translateProvider.preferredLanguage('en_EN');
}));

var $translate;
beforeEach(inject(function (_$translate_) {
$translate = _$translate_;
}));

it('shouldn\'t allow to change preferred language', function() {
inject(function($translate){
var prevLang = $translate.preferredLanguage();
$translate.preferredLanguage('de_DE');
expect($translate.preferredLanguage()).toBe(prevLang);
});
});

});

describe('if no language is specified', function() {
beforeEach(module('ngTranslate', function ($translateProvider) {
$translateProvider.translations('de_DE', {
'HELLO': 'Hallo da!'
});
$translateProvider.translations('en_EN', {
'HELLO': 'Hello there!'
});
}));

var $translate;
beforeEach(inject(function (_$translate_) {
$translate = _$translate_;
}));

it ('should return undefined', function() {
inject(function($translate){
expect($translate.preferredLanguage()).toBeUndefined();
});
});

});

describe('if language is specified',function(){
beforeEach(module('ngTranslate', function ($translateProvider) {
$translateProvider.translations('de_DE', {});
$translateProvider.translations('en_EN', {});
$translateProvider.preferredLanguage('en_EN');
$translateProvider.rememberLanguage(false);
}));

var $translate;
beforeEach(inject(function (_$translate_) {
$translate = _$translate_;
}));

it ('should return a string', function() {
inject(function($translate){
expect(typeof $translate.preferredLanguage()).toBe('string');
});
});

it ('should return a correct language code', function() {
inject(function($translate){
expect($translate.preferredLanguage()).toEqual('en_EN');
});
});

it ('should be equal to the uses method if rememberLanguage is false', function() {
inject(function($translate){
expect($translate.uses()).toEqual($translate.preferredLanguage());
});
});

});

});
});

describe('Asynchronous loading', function () {
Expand Down

0 comments on commit 6c30ec8

Please sign in to comment.