mtl-js-sdk
Version:
ynf-fw-mtl-api
168 lines (159 loc) • 4.97 kB
JavaScript
import {exclusiveLanguageKey, exclusiveLocalLanguageKey} from './keys'
const localizedMap = {
en:{
cancel: 'Cancel',
done: 'Done',
album: 'Album',
camera: 'Camera',
qrcode: 'QR Code',
scannerHintText: 'Put the QR code into the box to scan',
noAccessTitle: 'Access Not Enabled',
noAccessMsgPart1: 'Allow access of ',
noAccessMsgPart2: ' in "Settings"',
goSetting: 'Go To Settings',
goHomePage: 'HomePage',
share: 'Share',
forward: 'Forward',
about: 'About',
permissionCamera: 'camera',
permissionContacts: 'contacts',
permissionMicrophone: 'microphone',
permissionPhotos: 'photos',
permissionLocation: 'location',
permissionNotification: 'notification',
permissionCalendar: 'calendar',
permissionPhone: 'phone',
permissionSensor: 'sensor',
permissionSms: 'sms',
permissionStorage: 'storage'
},
zhs:{
cancel: '取消',
done: '完成',
album: '相册',
camera: '拍摄',
qrcode: '二维码',
scannerHintText: '将二维码放入框内,即可自动扫描',
noAccessTitle: '权限未开启',
noAccessMsgPart1: '请在系统设置中,允许应用访问',
noAccessMsgPart2: '',
goSetting: '去设置',
goHomePage: '回到首页',
share: '分享',
forward: '转发',
about: '关于',
permissionCamera: '相机',
permissionContacts: '通讯录',
permissionMicrophone: '麦克风',
permissionPhotos: '相册',
permissionLocation: '定位',
permissionNotification: '通知',
permissionCalendar: '日历',
permissionPhone: '电话',
permissionSensor: '传感器',
permissionSms: '短信',
permissionStorage: '存储'
},
zht:{
cancel: '取消',
done: '完成',
album: '相簿',
camera: '拍攝',
qrcode: '二維碼',
scannerHintText: '將二維碼放入框內,即可自動掃描',
noAccessTitle: '權限未開啟',
noAccessMsgPart1: '請在系統設置中,允許應用訪問',
noAccessMsgPart2: '',
goSetting: '去設置',
goHomePage: '回到首頁',
share: '分享',
forward: '轉發',
about: '關於',
permissionCamera: '相機',
permissionContacts: '通訊錄',
permissionMicrophone: '麥克風',
permissionPhotos: '相簿',
permissionLocation: '定位',
permissionNotification: '通知',
permissionCalendar: '日曆',
permissionPhone: '電話',
permissionSensor: '傳感器',
permissionSms: '短信',
permissionStorage: '存儲'
}
}
let currentLanguage = '';
let haveAddLanguageChangeEvent = false;
function addLanguageChangeEvent() {
if (!haveAddLanguageChangeEvent) {
haveAddLanguageChangeEvent = true;
api.addEventListener({
name:'setExclusiveLanguage'
}, function(ret) {
currentLanguage = ret.value.language;
});
}
}
export function getLanguage() {
if (!currentLanguage) {
addLanguageChangeEvent();
let language = api.getPrefs({
sync: true,
key: exclusiveLanguageKey
});
if (!language) {
let l = navigator.language.toLowerCase();
if (l == 'zh-cn' || l.startsWith('zh-hans-')) {
language = 'zhs';
} else if (l.startsWith('zh-')) {
language = 'zht';
} else if (l.startsWith('en-')) {
language = 'en';
} else {
language = 'zhs';
}
}
currentLanguage = language;
}
return currentLanguage;
}
export function setLanguage(param) {
let languageNum = param?.language || 0
if (typeof languageNum != 'number') {
languageNum = 0;
}
let list = ['','en','zhs','zht'];
let language = list[languageNum];
api.setPrefs({
sync: true,
key: exclusiveLanguageKey,
value: language
});
api.setPrefs({
sync: true,
key: exclusiveLocalLanguageKey,
value: param?.languageCode || "zh_CN"
});
currentLanguage = language;
api.sendEvent({
name:'setExclusiveLanguage',
extra:{
language:language
}
});
if (param?.languageCode) {
const locallang = param?.languageCode
const obj = window.api?.require('yonBuilder');
if (obj && locallang) {
obj.setUserAgent({ userAgent: getUserAgentInternal() });
}
}
}
export function localizedString(str) {
let language = getLanguage();
let res = localizedMap[language][str];
if (typeof res == 'string') {
return res;
}
return str;
}