- Add Local settings.

- Add Language settings synced back.
This commit is contained in:
Gunther Brunner
2014-03-13 21:03:41 +09:00
parent 710a5daeab
commit eaaf6a36bd
11 changed files with 137 additions and 50 deletions

View File

@@ -1,23 +1,56 @@
//var _ = require('lodash')
var _ = require('lodash')
module.exports = function LanguageServiceFactory() {
// var LanguageService = {}
//
// LanguageService.supportedLanguages = [
// {code: 'en', name: 'English'},
// {code: 'ja', name: '日本語'}
// ]
//
// var browserLocale = navigator.language || navigator.userLanguage || 'en-US'
// var browserLanguage = browserLocale.substring(0, 2)
// var detectedLanguage = _.some(LanguageService.supportedLanguages, {code: browserLanguage}) ? browserLanguage : 'en'
// var defaultLanguage = 'ja'
// LanguageService.detectedLanguage = defaultLanguage
// LanguageService.selectedLanguage = defaultLanguage
//
// LanguageService.getSelectedLanguage = function () {
// return LanguageService.selectedLanguage = defaultLanguage //WebStorage.get('Language.language') || defaultLanguage
// }
//
// return LanguageService
module.exports = function LanguageServiceFactory(SettingsService, $q, gettextCatalog) {
var LanguageService = {}
LanguageService.supportedLanguages = [
{code: 'en', name: 'English'},
{code: 'ja', name: '日本語'}
]
var browserLocale = navigator.language || navigator.userLanguage || 'en-US'
var browserLanguage = browserLocale.substring(0, 2)
var detectedLanguage = _.some(LanguageService.supportedLanguages, {code: browserLanguage}) ? browserLanguage : 'en'
var defaultLanguage = 'ja'
LanguageService.detectedLanguage = defaultLanguage
LanguageService.selectedLanguage = null
// TODO: Can't this be refactored to something like this?
// SettingsService.sync(LanguageService.selectedLanguage, 'Language', {
// selected: LanguageService.detectedLanguage
// })
LanguageService.getSelectedLanguage = function () {
var deferred = $q.defer()
if (LanguageService.selectedLanguage) {
deferred.resolve(LanguageService.selectedLanguage)
} else {
SettingsService.get('Language.selected').then(function (data) {
if (data) {
deferred.resolve(data)
} else {
LanguageService.setSelectedLanguage(LanguageService.detectedLanguage).then(function () {
deferred.resolve(LanguageService.detectedLanguage)
})
}
})
}
return deferred.promise
}
// Initialize gettextCatalog
LanguageService.getSelectedLanguage()
LanguageService.setSelectedLanguage = function (lang) {
var deferred = $q.defer()
LanguageService.selectedLanguage = lang
gettextCatalog.currentLanguage = lang
SettingsService.set('Language.selected', lang).then(function () {
deferred.resolve(lang)
})
return deferred.promise
}
return LanguageService
}