mirror of
https://github.com/DeviceFarmer/stf.git
synced 2026-04-18 16:13:24 +02:00
Using temporarily npm-shrinkwrap since `template-html-loader` uses an old `consolidate.js` version which doesn't support `pug`. Follow here: https://github.com/jtangelder/template-html-loader/issues/8
50 lines
1.4 KiB
JavaScript
50 lines
1.4 KiB
JavaScript
var supportedLanguages = require('./../../../../common/lang/langs.json')
|
|
var _ = require('lodash')
|
|
|
|
module.exports =
|
|
function LanguageServiceFactory(SettingsService, gettextCatalog) {
|
|
// TODO: make this LanguageProvider so it can be used on config
|
|
|
|
var LanguageService = {}
|
|
|
|
function detectLanguage() {
|
|
return navigator.language || navigator.userLanguage
|
|
}
|
|
|
|
function browserToSupportedLang(lang) {
|
|
//supportedLanguages.
|
|
|
|
//return lang.replace(/([A-Za-z]{2})(-|_)?([A-Za-z]{0,4})/gm, '$1')
|
|
}
|
|
|
|
function isSupported(lang) {
|
|
return !!supportedLanguages[lang]
|
|
}
|
|
|
|
function onlySupported(lang, defaultValue) {
|
|
return isSupported(lang) ? lang : defaultValue
|
|
}
|
|
|
|
LanguageService.settingKey = 'selectedLanguage'
|
|
LanguageService.supportedLanguages = supportedLanguages
|
|
LanguageService.defaultLanguage = 'en'
|
|
LanguageService.detectedLanguage =
|
|
onlySupported(detectLanguage(), LanguageService.defaultLanguage)
|
|
|
|
SettingsService.sync(
|
|
LanguageService, {
|
|
target: LanguageService.settingKey,
|
|
source: LanguageService.settingKey,
|
|
defaultValue: LanguageService.detectedLanguage
|
|
}, updateLanguage
|
|
)
|
|
|
|
function updateLanguage() {
|
|
gettextCatalog.setCurrentLanguage(LanguageService.selectedLanguage)
|
|
}
|
|
|
|
LanguageService.updateLanguage = updateLanguage
|
|
|
|
return LanguageService
|
|
}
|