Added Auto-route language support for documentation.

This commit is contained in:
Gunther Brunner
2014-09-01 16:19:23 +09:00
parent 241b711c31
commit d8bf7449d1
8 changed files with 125 additions and 35 deletions

View File

@@ -0,0 +1,7 @@
module.exports = angular.module('stf-language', [
require('stf/settings').name,
require('gettext').name,
require('stf/app-state').name
])
.factory('LanguageService', require('./language-service'))
.provider('language', require('./language-provider'))

View File

@@ -0,0 +1,65 @@
//var supportedLanguages = require('./../../../../common/lang/langs.json')
module.exports = function LanguageProvider(AppStateProvider) {
var provider = {
selectedLanguage: 'en'
}
var a = AppStateProvider.$get()
if (a && a.user && a.user.settings && a.user.settings &&
a.user.settings.selectedLanguage) {
provider.selectedLanguage = a.user.settings.selectedLanguage
}
return {
$get: function () {
return provider
}
}
}
//module.exports = function LanguageProvider() {
// var LanguageService = {}
//
// function detectLanguage() {
// return (navigator.language || navigator.userLanguage || 'en-US')
// .substring(0, 2)
// }
//
// 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)
//
// return {
// set: function (constants) {
// angular.extend(LanguageService, constants)
// },
// $get: function (SettingsService, gettextCatalog) {
// SettingsService.sync(
// LanguageService, {
// target: LanguageService.settingKey,
// source: LanguageService.settingKey,
// defaultValue: LanguageService.detectedLanguage
// }, updateLanguage
// )
//
// function updateLanguage() {
// gettextCatalog.setCurrentLanguage(LanguageService.selectedLanguage)
// }
//
// LanguageService.updateLanguage = updateLanguage
//
// return LanguageService
// }
// }
//}

View File

@@ -0,0 +1,47 @@
var supportedLanguages = require('./../../../../common/lang/langs.json')
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 || 'en-US')
.substring(0, 2)
}
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
}