github.com/easysoft/zendata@v0.0.0-20240513203326-705bd5a7fd67/client/src/app/core/lang.js (about)

     1  import {app} from "electron";
     2  import path from "path";
     3  const fs = require('fs');
     4  
     5  import {DEBUG} from '../utils/consts';
     6  import {logInfo} from "../utils/log";
     7  import {LangHelper} from '../utils/lang';
     8  
     9  const langHelper = new LangHelper();
    10  
    11  export const initLang = () => {
    12      let langName = app.getLocale()
    13      logInfo(`langName=${langName}`)
    14  
    15      langName = langName.toLowerCase()
    16      if (langName.startsWith('zh-')) {
    17          langName = 'zh-cn';
    18      } else {
    19          langName = 'en';
    20      }
    21  
    22      loadLanguage(langName)
    23  };
    24  
    25  export const loadLanguage = (langName) => {
    26      if (!langName) {
    27          return
    28      }
    29  
    30      if (langName !== langHelper.name) {
    31          const langData = loadLangData(langName)
    32          langHelper.change(langName, langData);
    33      }
    34  };
    35  
    36  const loadLangData = (langName) => {
    37      let pth = `lang/${langName}.json`
    38      if (!DEBUG) {
    39          pth = path.join(process.resourcesPath, pth)
    40      }
    41  
    42      logInfo(`load language res from ${pth}`)
    43  
    44      const buf = fs.readFileSync(pth)
    45      return JSON.parse(buf.toString())
    46  }
    47  
    48  if (DEBUG) {
    49      global.$lang = langHelper;
    50  }
    51  
    52  export default langHelper;