mirror of https://github.com/apache/cloudstack.git
64 lines
1.8 KiB
JavaScript
64 lines
1.8 KiB
JavaScript
// Licensed to the Apache Software Foundation (ASF) under one
|
|
// or more contributor license agreements. See the NOTICE file
|
|
// distributed with this work for additional information
|
|
// regarding copyright ownership. The ASF licenses this file
|
|
// to you under the Apache License, Version 2.0 (the
|
|
// "License"); you may not use this file except in compliance
|
|
// with the License. You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing,
|
|
// software distributed under the License is distributed on an
|
|
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
// KIND, either express or implied. See the License for the
|
|
// specific language governing permissions and limitations
|
|
// under the License.
|
|
|
|
import { createI18n } from 'vue-i18n'
|
|
import { vueProps } from '@/vue-app'
|
|
|
|
const loadedLanguage = []
|
|
const messages = {}
|
|
|
|
export const i18n = createI18n({
|
|
locale: 'en',
|
|
fallbackLocale: 'en',
|
|
silentTranslationWarn: true,
|
|
messages: messages,
|
|
silentFallbackWarn: true,
|
|
warnHtmlInMessage: 'off'
|
|
})
|
|
|
|
export function loadLanguageAsync (lang) {
|
|
if (!lang) {
|
|
const locale = vueProps.$localStorage.get('LOCALE')
|
|
lang = (!locale || typeof locale === 'object') ? 'en' : locale
|
|
}
|
|
if (loadedLanguage.includes(lang)) {
|
|
return Promise.resolve(setLanguage(lang))
|
|
}
|
|
|
|
return fetch(`locales/${lang}.json`)
|
|
.then(response => response.json())
|
|
.then(json => Promise.resolve(setLanguage(lang, json)))
|
|
}
|
|
|
|
function setLanguage (lang, message) {
|
|
if (i18n) {
|
|
i18n.global.locale = lang
|
|
|
|
if (message && Object.keys(message).length > 0) {
|
|
i18n.global.setLocaleMessage(lang, message)
|
|
}
|
|
}
|
|
|
|
if (!loadedLanguage.includes(lang)) {
|
|
loadedLanguage.push(lang)
|
|
}
|
|
|
|
if (message && Object.keys(message).length > 0) {
|
|
messages[lang] = message
|
|
}
|
|
}
|