国际化文本翻译数据利用nodeJS转换成JSON文件

Posted luoyimingmm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了国际化文本翻译数据利用nodeJS转换成JSON文件相关的知识,希望对你有一定的参考价值。

系统做国际化,然后市场部给了一份中英文翻译,翻译的条目还不少,重复翻译也不少,而且以后还可能会添加,最好就现在写个简单转换方法。

const readline = require(\'readline\');
const fs = require(\'fs\');
async function processLineByLine() {
    const fileStream = fs.createReadStream(\'file/International.txt\');

    const rl = readline.createInterface({
        input: fileStream,
        crlfDelay: Infinity
    });
    // 注意:我们使用 crlfDelay 选项将 input.txt 中的所有 CR LF 实例(\'\\r\\n\')识别为单个换行符。
    let num = 1,
        data = {},
        endata = {},
        active_title = \'\',
        flag = false;
    for await (const line of rl) {
        if (line != \'\') {
            if (/[一二三四五六七八九十]/g.test(line) && !/[a-z]/g.test(line)) {

                let title = line.substr(line.indexOf(\'、\') + 1);
                switch (title) {
                    case \'首页\':
                        title = "home";
                        break;
                    case \'资产管理\':
                        title = "asset";
                        break;
                    default:
                }
                active_title = title;
                data[title] = {};
                endata[title] = {};

            } else {
                let arr = line.split(\':\');
                let key = arr[1];
                key = key.replace(/\'/ig, \'\').replace(/(^\\s*)|(\\s*$)/g, \'\').replace(/\\s/g, \'-\').toLowerCase();
                data[active_title][key] = arr[0];
                endata[active_title][key] = arr[1];
            }
        }
        num++;
    }

    const str_data = JSON.stringify(data),
        str_endata = JSON.stringify(endata);

    fs.writeFile(\'file/zh-CN.json\', str_data, (err) => {
        if (err) throw err;
        console.log(\'国际化中文版文件已保存!\');
    });
    fs.writeFile(\'file/en-US.json\', str_endata, (err) => {
        if (err) throw err;
        console.log(\'国际化英文版文件已保存!\');
    });

}
processLineByLine();

//翻译文本差不多长这个样子

一、首页
引物云智慧照明平台:Inwu Smart lighting platform
首页:Home
管理:Management
国际化: International
预警提示: Pre-warning
用电统计:Electricity consumption statistics
在线统计:Online statistics
今日策略:Today\'s strategy
今日设备报警率: Today\'s device alarm rate
今日照明亮灯率:Today\'s lighting rate
今日上线设备率:Today\'s online device rate
昨日设备节能率:Yesterday\'s device energy saving rate
设备在线统计: Device online statistics
网关:Gateway
设备:Device
开灯:Turn on
关灯:Turn off
离线:Offline
告警:Warning
故障:fault
一键巡检:One-click inspection
预设模式:Preset mode
下发中:Issuing
下发成功: Issue successfully
下发失败: Issue failed
日出日落模式:Sunrise and sunset mode
节能模式:Energy saving mode
手动模式:Manual mode
设备组:Device group
操作:operate
二、资产管理
资产管理:Asset management
区域信息:Area information
区域名称:Area name
区域地址:Area address
经度:longitude
纬度:latitude
创建时间:Creation time
修改:modify
删除:delete
更多:more
详情:Details
网关数量: Gateway quantity
设备数量: Device quantity
关闭:close
添加区域:Add area
区域名:Area name
区域地址:Area address
经纬度:Latitude and longitude
请输入查询地址:Please enter the query address
取消:cancel
确认:confirm

搜索关键字:search for the keyword
区域:Area
查询: Search
网关名称:Gateway name
网关类型:Gateway type
设备状态:device status
创建时间:Creation time
操作:operate
创建白名单:Create whitelist
复位:Reset
强制刷新:Forced refresh

白名单类型:Whitelist type
全部:All
已激活白名单:Whitelist activated
待添加白名单: Whitelist to be added
僵尸白名单:Zombie whitelist
添加白名单:Add whitelist
删除白名单:Delete whitelist
清空白名单:Clear whitelist
返回:Back
设备名称: Device name
所在网关: The gateway
状态:status
白名单:Whitelist
Modbus配置:Modbus configuration
Modbus定时:Modbus timing
PLC定时器:PLC timer
网关状态:Gateway status
已同步:Synced
未同步:Not synced
设备组:Device group
设备名称:Device name
设备编号:device ID
属性: Features
值:value
所在区域: your area
经纬度:Latitude and longitude
连接时间:Connection time
失联时间:Lost time
访问令牌:Access token
硬件版本:hardware version
固件版本:Firmware version
Mac地址:Mac address
SIM卡号:SIM card number
复制访问令牌:Copy access token
网关更多信息: More information for the gateway
设备信息:Device Information
添加网关:add gateway
网关基本信息:Basic information of the gateway
网关名称:Gateway name
网关类型:Gateway type
网关所属信息:Gateway ownership information
网关地址:Gateway address

设备别名:Device alias
设备状态:Device status
设备类型:Device type
所在区域: your area

数据管理:Data management
统计分析: Statistic analysis
审计日志: Audit log
累计用电量:Accumulative power consumption
累计用电时长:Accumulative electricity consumption time
累计开灯次数:Accumulative times the lights turned on
用电量统计:Power consumption statistics
用电时长统计:Electricity consumption time statistics
开灯次数统计:Statistics times the light turned on
选择区域:select area
日:day
月:month
年:year
单灯数据:Single lamp data
选择时间段:Choose time period
开始时间:Start time
结束时间:End Time
时间戳:timestamp
实体类型:Entity type
实体状态名:Entity status name
类型:type
详情:Details

预警管理:Pre-warning management
预警时间:Warning time
预警原因:Warning reason
派单: request designating
订单信息:order information
预警原因:Warning reason
状态:status
故障原因:failure cause
处理:deal with
是否网关:Whether the gateway
修改密码:Change the password
旧密码:Old Password
新密码:New password
确认密码:confirm password
用户管理:User Management

以上是关于国际化文本翻译数据利用nodeJS转换成JSON文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 i18n 翻译 Angular 2 中的数据绑定文本

十. 图形界面(GUI)设计7.文本框和文本区的输入输出

nodeJs 转换excel为json

Curl之解决中文乱码

Servlet 国际化

如何使用节点将表单数据(文本/纯文本)转换为 json?