mirror of
https://github.com/DeviceFarmer/stf.git
synced 2026-04-18 16:13:24 +02:00
Now the flow for adding a new language is just: 1.Add a new language entry to `res/common/lang/langs.json`. And for translating it's just: 1. Run `gulp translate` (extracts all the strings). 2. Open `/res/common/lang/po/stf.pot` in PoEdit and translate. 3. Run `gulp translate` again (creates a json based on the new `po` file).
60 lines
1.9 KiB
JavaScript
60 lines
1.9 KiB
JavaScript
var _ = require('lodash')
|
|
var supportedLanguages = require('./../../../common/lang/langs.json')
|
|
|
|
module.exports = function (SettingsService, $q, gettextCatalog) {
|
|
var LanguageService = {}
|
|
|
|
LanguageService.supportedLanguages = supportedLanguages
|
|
|
|
var browserLocale = navigator.language || navigator.userLanguage || 'en-US'
|
|
var browserLanguage = browserLocale.substring(0, 2)
|
|
var isLanguageMatched = _.some(supportedLanguages, function (value, key) {
|
|
return key === browserLanguage
|
|
})
|
|
var detectedLanguage = isLanguageMatched ? 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.getItem('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.setItem('Language.selected', lang).then(function () {
|
|
deferred.resolve(lang)
|
|
})
|
|
return deferred.promise
|
|
}
|
|
|
|
return LanguageService
|
|
}
|