UNPKG

mtl-js-sdk

Version:

ynf-fw-mtl-api

168 lines (159 loc) 4.97 kB
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; }