Przeglądaj źródła

expose frontend api: `pushData()` & `customMessage`

wangweimin 3 lat temu
rodzic
commit
d3139622e0
2 zmienionych plików z 9 dodań i 4 usunięć
  1. 5 3
      webiojs/src/i18n.ts
  2. 4 1
      webiojs/src/main.ts

+ 5 - 3
webiojs/src/i18n.ts

@@ -1,8 +1,9 @@
 // @ts-ignore
 const userLangCode: string = (navigator.language || navigator.userLanguage || 'en').toLowerCase();
 
-const userLang: string = userLangCode.split('-')[0];
+const langPrefix: string = userLangCode.split('-')[0];
 
+export let customMessage: { [msgid: string]: string } = {};
 
 const translations: { [lang: string]: { [msgid: string]: string } } = {
     "en": {
@@ -42,9 +43,10 @@ const translations: { [lang: string]: { [msgid: string]: string } } = {
         "cancel": "Отмена",
         "duplicated_pin_name": "Этот закреп виджет устарел (виджет с таким же именем был выведен).",
         "browse_file": "Обзор",
-    }
+    },
 };
 
+translations['custom'] = customMessage // use to customize the message text.
 
 // sprintf equivalent, takes a string and some arguments to make a computed string
 // eg: strfmt("%1 dogs are in %2", 7, "the kitchen"); => "7 dogs are in the kitchen"
@@ -65,7 +67,7 @@ function strfmt(fmt: string) {
 
 export function t(msgid: string, ...args:string[]): string {
     let fmt = null;
-    for (let lang of [userLangCode, userLang, 'en']) {
+    for (let lang of ['custom', userLangCode, langPrefix, 'en']) {
         if (translations[lang] && translations[lang][msgid]){
             fmt = translations[lang][msgid];
             break;

+ 4 - 1
webiojs/src/main.ts

@@ -1,5 +1,5 @@
 import {config as appConfig, state} from "./state";
-import {Command, HttpSession, is_http_backend, Session, WebSocketSession} from "./session";
+import {Command, HttpSession, is_http_backend, Session, WebSocketSession, pushData} from "./session";
 import {InputHandler} from "./handlers/input"
 import {OutputHandler} from "./handlers/output"
 import {CommandDispatcher, SessionCtrlHandler} from "./handlers/base"
@@ -10,6 +10,7 @@ import {DownloadHandler} from "./handlers/download";
 import {ToastHandler} from "./handlers/toast";
 import {EnvSettingHandler} from "./handlers/env";
 import {PinHandler} from "./handlers/pin";
+import {customMessage} from "./i18n"
 
 // 获取后端API的绝对地址
 function backend_absaddr(addr: string) {
@@ -89,4 +90,6 @@ window.WebIO = {
     '_state': state,
     'startWebIOClient': startWebIOClient,
     'openApp': openApp,
+    'message_tpl': customMessage,
+    'pushData': pushData,
 };