完成国际化功能(包括中英文在内的34种语言)

This commit is contained in:
魏少阳 2024-08-29 18:13:00 +08:00
parent 0e99d60cb8
commit b241008de8
56 changed files with 36669 additions and 1210 deletions

BIN
.DS_Store vendored

Binary file not shown.

1085
lan/lan_ar.json Normal file

File diff suppressed because it is too large Load Diff

1085
lan/lan_bg.json Normal file

File diff suppressed because it is too large Load Diff

1085
lan/lan_bn.json Normal file

File diff suppressed because it is too large Load Diff

1085
lan/lan_cs.json Normal file

File diff suppressed because one or more lines are too long

1085
lan/lan_da.json Normal file

File diff suppressed because it is too large Load Diff

1085
lan/lan_de.json Normal file

File diff suppressed because it is too large Load Diff

1085
lan/lan_el.json Normal file

File diff suppressed because it is too large Load Diff

2145
lan/lan_en.json Executable file → Normal file

File diff suppressed because it is too large Load Diff

1085
lan/lan_es.json Normal file

File diff suppressed because it is too large Load Diff

1085
lan/lan_et.json Normal file

File diff suppressed because it is too large Load Diff

1085
lan/lan_fi.json Normal file

File diff suppressed because it is too large Load Diff

1085
lan/lan_fr.json Normal file

File diff suppressed because it is too large Load Diff

1085
lan/lan_he.json Normal file

File diff suppressed because it is too large Load Diff

1085
lan/lan_hr.json Normal file

File diff suppressed because it is too large Load Diff

1085
lan/lan_hu.json Normal file

File diff suppressed because it is too large Load Diff

1085
lan/lan_id.json Normal file

File diff suppressed because it is too large Load Diff

1085
lan/lan_it.json Normal file

File diff suppressed because it is too large Load Diff

1085
lan/lan_ja.json Normal file

File diff suppressed because it is too large Load Diff

View File

@ -26,7 +26,6 @@
"星期五": "星期五",
"星期六": "星期六",
"星期日": "星期日",
"简写周一": "简写周一",
"简写周二": "简写周二",
"简写周三": "简写周三",
@ -34,7 +33,6 @@
"简写周五": "简写周五",
"简写周六": "简写周六",
"简写周日": "简写周日",
"周一": "周一",
"周二": "周二",
"周三": "周三",
@ -42,7 +40,6 @@
"周五": "周五",
"周六": "周六",
"周日": "周日",
"群发钥匙":"群发钥匙",
"锁": "锁",
"请添加":"请添加",
@ -102,7 +99,6 @@
"月榜":"月榜",
"考勤记录":"考勤记录",
"假日信息":"假日信息",
"基本信息":"基本信息",
"无线键盘":"无线键盘",
"选择无线键盘": "选择无线键盘",
@ -121,7 +117,6 @@
"微信二维码":"微信二维码",
"拥有电子钥匙的人,通过微信扫一扫这个二维码,即可开门。每把锁的二维码都不相同,你可以将其打印出来贴在对应的锁旁边": "拥有电子钥匙的人,通过微信扫一扫这个二维码,即可开门。每把锁的二维码都不相同,你可以将其打印出来贴在对应的锁旁边",
"锁编号":"锁编号",
"电量":"电量",
"锁分组":"锁分组",
"选择分组":"选择分组",
@ -135,9 +130,6 @@
"附近的设备":"附近的设备",
"暂无数据":"暂无数据",
"通过门磁可查询门的开、关状态。每把锁咳添加一个门磁":"通过门磁可查询门的开、关状态。每把锁咳添加一个门磁",
"delayTime":"delayTime",
"automaticBlockingTip":"automaticBlockingTip",
"开始":"开始",
"全天":"全天",
"你可以设置多个常开时间段,在设置的时间段内,锁被打开后一直处于打开的状态。":"你可以设置多个常开时间段,在设置的时间段内,锁被打开后一直处于打开的状态。",
@ -160,9 +152,8 @@
"升级":"升级",
"空闲":"空闲",
"已入住":"已入住",
"英文":"英文",
"中文":"中文",
"简体中文":"简体中文",
"多语言":"多语言",
"添加锁":"添加锁",
"锁地址":"锁地址",
@ -173,7 +164,6 @@
"客服":"客服",
"设置":"设置",
"更多设置":"更多设置",
"消息推送":"消息推送",
"锁用户管理":"锁用户管理",
"拥有的钥匙":"拥有的钥匙",
@ -219,7 +209,6 @@
"即将到期":"即将到期",
"去授权":"去授权",
"修改名称":"修改名称",
"状态": "状态",
"WiFi名称": "WiFi名称",
"网络MAC": "网络MAC",
@ -245,6 +234,7 @@
"备选DNS": "备选DNS",
"不使用静态IP": "不使用静态IP",
"使用静态IP": "使用静态IP",
"请输入IP地址": "请输入IP地址",
"请输入子网掩码": "请输入子网掩码",
"请输入默认网关": "请输入默认网关",
"所有锁":"所有锁",
@ -259,7 +249,6 @@
"附近的锁":"附近的锁",
"如需修改名字请重新命名,点击确定添加锁":"如需修改名字请重新命名,点击确定添加锁",
"添加锁时,手机必须在锁旁边":"添加锁时,手机必须在锁旁边",
"登录":"登录",
"注册":"注册",
"我已阅读并同意":"我已阅读并同意",
@ -272,15 +261,12 @@
"你所在的国家/地区": "你所在的国家/地区",
"选择国家/地区": "你所在的国家/地区",
"获取验证码":"获取验证码",
"商务合作":"商务合作",
"电脑网页版":"电脑网页版",
"酒店系统":"酒店系统",
"说明书网页版":"说明书网页版",
"高级功能":"高级功能",
"记录保存":"记录保存",
"您可通过短信将密码、电子钥匙信息发给接收人。":"您可通过短信将密码、电子钥匙信息发给接收人。",
"您可通过邮件将密码、电子钥匙信息发给接收人。":"您可通过邮件将密码、电子钥匙信息发给接收人。",
"购买实名认证提示":"购买实名认证提示",
@ -299,7 +285,6 @@
"购买高级功能提示":"购买高级功能提示",
"免费体验":"免费体验",
"立即开通":"立即开通",
"购买短信":"购买短信",
"购买邮件":"购买邮件",
"购买实名认证次数":"购买实名认证次数",
@ -308,7 +293,6 @@
"支付方式":"支付方式",
"支付宝":"支付宝",
"去支付":"去支付",
"你可以自己定义模版的内容,用于发送密码或电子钥匙信息给他人":"你可以自己定义模版的内容,用于发送密码或电子钥匙信息给他人",
"高级功能仅能用于你自己的锁":"高级功能仅能用于你自己的锁",
"新建模板":"新建模板",
@ -317,15 +301,12 @@
"预览":"预览",
"房间名":"房间名",
"预计产生短信条数":"预计产生短信条数",
"功能开启后,已失效较长时间的密码、电子钥匙、卡、指纹等开锁权限将被隐藏,不在列表里显示。":"功能开启后,已失效较长时间的密码、电子钥匙、卡、指纹等开锁权限将被隐藏,不在列表里显示。",
"对于选中的这些锁当用户用APP开锁时他的手机需要是连网的否则无法开锁":"对于选中的这些锁当用户用APP开锁时他的手机需要是连网的否则无法开锁",
"配置WiFi":"配置WiFi",
"请输入WiFi名字":"请输入WiFi名字",
"WiFi配网":"WiFi配网",
"胁迫卡":"胁迫卡",
"员工是否有密码":"员工是否有密码",
"员工是否有卡":"员工是否有卡",
"员工是否有指纹":"员工是否有指纹",
@ -334,43 +315,35 @@
"获取指纹":"获取指纹",
"安全验证":"安全验证",
"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?":"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?",
"监控":"监控",
"视频日志":"视频日志",
"网关设备":"网关设备",
"开门器":"开门器",
"面容开锁":"面容开锁",
"开门方向设置":"开门方向设置",
"电机功率设置":"电机功率设置",
"开锁时是否需联网":"开锁时是否需联网",
"选择要加入分组的锁":"选择要加入分组的锁",
"锁数量":"锁数量",
"小米IOT平台":"小米IOT平台",
"面容开锁设置": "面容开锁设置",
"感应距离": "感应距离",
"防误开": "防误开",
"防误开已关闭,关门后仍可使用面容开锁": "防误开已关闭,关门后仍可使用面容开锁",
"添加和使用面容开锁时": "添加和使用面容开锁时",
"添加和使用面容开锁时提示":"添加和使用面容开锁时提示",
"秒": "秒",
"请根据门锁实际情况,请谨慎选择电机功率:": "请根据门锁实际情况,请谨慎选择电机功率:",
"小功率:": "小功率:",
"耗电少": "耗电少",
"大功率": "大功率",
"大功率提示": "大功率提示",
"开门方向设置提示": "开门方向设置提示",
"左开": "左开",
"右开": "右开",
"判断方法:": "判断方法:",
"判断方法内容": "判断方法内容",
"录像时段": "录像时段",
"密码":"密码",
"卡":"卡",
"指纹":"指纹",
@ -594,7 +567,6 @@
"密码生成后请在当日2359前使用否则过0点后失效。": "密码生成后请在当日2359前使用否则过0点后失效。",
"清空密码底部提示": "清空密码底部提示",
"密码不一致哦":"密码不一致哦",
"相机": "相机",
"相册": "相册",
"读写": "读写",
@ -611,10 +583,8 @@
"请手动在系统设置中开启": "请手动在系统设置中开启",
"权限以继续使用应用": "权限以继续使用应用。",
"去设置": "去设置",
"虹膜":"虹膜",
"手掌":"手掌",
"商城":"mall",
"我的":"my",
"微信公众号推送":"微信公众号推送",
@ -707,7 +677,6 @@
"当前剩余数量":"当前剩余数量",
"购买":"购买",
"实名认证为付费功能,请购买后再使用":"实名认证为付费功能,请购买后再使用",
"退出添加":"退出添加",
"管理员已满":"管理员已满",
"用户已满": "用户已满",
@ -721,13 +690,11 @@
"密码已存在": "密码已存在",
"请输入密码": "请输入密码",
"暂无密码,无需重置": "暂无密码,无需重置",
"真实姓名":"真实姓名",
"身份证号":"身份证号",
"请输入真实姓名":"请输入真实姓名",
"请输入身份证号":"请输入身份证号",
"请输入身份证号和真实姓名":"请输入身份证号和真实姓名",
"点击返回设备配对":"点击返回设备配对",
"无法连接?尝试升级":"无法连接?尝试升级",
"固件升级提示":"固件升级提示",
@ -782,14 +749,12 @@
"自定义邮件模版":"自定义邮件模版",
"名称":"名称",
"星星锁": "星星锁",
"无考勤记录": "无考勤记录",
"大家干劲十足": "大家干劲十足",
"工作时长未出炉": "工作时长未出炉",
"国家地区的选择将影响数据安全,你当前选择的是阿尔巴尼亚,请确认后再继续": "国家地区的选择将影响数据安全,你当前选择的是阿尔巴尼亚,请确认后再继续",
"确认国家或地区": "确认国家或地区",
"我知道了": "我知道了",
"为了让您及时收到重要通知和更新,我们需要获取通知权限。请点击“确定”按钮,然后在设置页面中启用通知权限。": "为了让您及时收到重要通知和更新,我们需要获取通知权限。请点击“确定”按钮,然后在设置页面中启用通知权限。",
"开启后可通过长按锁上的设置键重新上电用APP重新添加":"开启后可通过长按锁上的设置键重新上电用APP重新添加",
"已有": "已有",
@ -800,13 +765,11 @@
"加载数据失败": "加载数据失败",
"重试": "重试",
"升级中,是否退出": "升级中,是否退出",
"下一步": "下一步",
"公寓": "公寓",
"个人用户": "个人用户",
"星寓": "星寓",
"账号": "账号",
"请输入手机号或email": "请输入手机号或email",
"请输入星寓管理员的账号": "请输入星寓管理员的账号",
"选中的智能锁将会转移到您输入的账号中,您将失去锁的管理权": "选中的智能锁将会转移到您输入的账号中,您将失去锁的管理权",
@ -840,14 +803,12 @@
"进度": "进度",
"失败": "失败",
"人脸详情": "人脸详情",
"感应到门前约1.5米有人时,将自动启动面部识别开锁。": "感应到门前约1.5米有人时,将自动启动面部识别开锁。",
"感应到门前约0.8米有人时,将自动启动面部识别开锁。": "感应到门前约0.8米有人时,将自动启动面部识别开锁。",
"感应到门前约0.5米有人时,将自动启动面部识别开锁。": "感应到门前约0.5米有人时,将自动启动面部识别开锁。",
"感应距离已关闭,需手动触摸键盘任意键,进行面部识别开锁。": "感应距离已关闭,需手动触摸键盘任意键,进行面部识别开锁。",
"防误开已打开,开锁后": "防误开已打开,开锁后",
"秒内不可使用面容开锁": "秒内不可使用面容开锁",
"掌静脉": "掌静脉",
"添加掌静脉": "添加掌静脉",
"胁迫掌静脉": "胁迫掌静脉",
@ -857,7 +818,6 @@
"掌静脉号": "掌静脉号",
"蓝牙未打开,请到设置里面打开蓝牙": "蓝牙未打开,请到设置里面打开蓝牙",
"删除用户时,会将用户拥有的钥匙一起删除。": "删除用户时,会将用户拥有的钥匙一起删除。",
"配置网络": "配置网络",
"你好": "你好",
"成功": "成功",
@ -1087,5 +1047,39 @@
"热门城市": "热门城市",
"导出锁数据": "导出锁数据",
"一键开锁": "一键开锁",
"已开通": "已开通"
"已开通": "已开通",
"繁体中文": "繁体中文",
"法语": "法语",
"俄语": "俄语",
"德语": "德语",
"日语": "日语",
"韩语": "韩语",
"意大利语": "意大利语",
"乌克兰语": "乌克兰语",
"葡萄牙语": "葡萄牙语",
"西班牙语": "西班牙语",
"阿拉伯语": "阿拉伯语",
"越南语": "越南语",
"马莱语": "马莱语",
"荷兰语": "荷兰语",
"罗马尼亚语": "罗马尼亚语",
"立陶宛语": "立陶宛语",
"瑞典语": "瑞典语",
"爱沙尼亚语": "爱沙尼亚语",
"波兰语": "波兰语",
"斯洛伐克语": "斯洛伐克语",
"捷克语": "捷克语",
"希腊语": "希腊语",
"希伯来语": "希伯来语",
"塞尔维亚语": "塞尔维亚语",
"土耳其语": "土耳其语",
"匈牙利语": "匈牙利语",
"保加利亚语": "保加利亚语",
"哈萨克斯坦语": "哈萨克斯坦语",
"孟加拉语": "孟加拉语",
"克罗地亚语": "克罗地亚语",
"泰语": "泰语",
"印度尼西亚语": "印度尼西亚语",
"芬兰语": "芬兰语",
"丹麦语": "丹麦语"
}

1085
lan/lan_kk.json Normal file

File diff suppressed because it is too large Load Diff

1085
lan/lan_ko.json Normal file

File diff suppressed because it is too large Load Diff

1085
lan/lan_lt.json Normal file

File diff suppressed because it is too large Load Diff

1085
lan/lan_ms.json Normal file

File diff suppressed because it is too large Load Diff

1085
lan/lan_nl.json Normal file

File diff suppressed because it is too large Load Diff

1085
lan/lan_pl.json Normal file

File diff suppressed because it is too large Load Diff

1085
lan/lan_pt.json Normal file

File diff suppressed because it is too large Load Diff

1085
lan/lan_ro.json Normal file

File diff suppressed because it is too large Load Diff

1085
lan/lan_ru.json Normal file

File diff suppressed because it is too large Load Diff

1085
lan/lan_sk.json Normal file

File diff suppressed because it is too large Load Diff

1085
lan/lan_sv.json Normal file

File diff suppressed because it is too large Load Diff

1085
lan/lan_th.json Normal file

File diff suppressed because it is too large Load Diff

1085
lan/lan_tr.json Normal file

File diff suppressed because it is too large Load Diff

1085
lan/lan_tw.json Normal file

File diff suppressed because it is too large Load Diff

1085
lan/lan_vi.json Normal file

File diff suppressed because it is too large Load Diff

View File

@ -26,7 +26,6 @@
"星期五": "星期五",
"星期六": "星期六",
"星期日": "星期日",
"简写周一": "一",
"简写周二": "二",
"简写周三": "三",
@ -34,7 +33,6 @@
"简写周五": "五",
"简写周六": "六",
"简写周日": "日",
"周一": "周一",
"周二": "周二",
"周三": "周三",
@ -42,7 +40,6 @@
"周五": "周五",
"周六": "周六",
"周日": "周日",
"群发钥匙": "群发钥匙",
"锁": "锁",
"请添加": "请添加",
@ -103,7 +100,6 @@
"考勤记录": "考勤记录",
"未打卡": "未打卡",
"假日信息": "假日信息",
"基本信息": "基本信息",
"无线键盘": "无线键盘",
"选择无线键盘": "选择无线键盘",
@ -122,7 +118,6 @@
"微信二维码": "微信二维码",
"拥有电子钥匙的人,通过微信扫一扫这个二维码,即可开门。每把锁的二维码都不相同,你可以将其打印出来贴在对应的锁旁边": "拥有电子钥匙的人,通过微信扫一扫这个二维码,即可开门。每把锁的二维码都不相同,你可以将其打印出来贴在对应的锁旁边",
"锁编号": "锁编号",
"电量": "电量",
"锁分组": "锁分组",
"选择分组": "选择分组",
@ -136,7 +131,6 @@
"附近的设备": "附近的设备",
"暂无数据": "暂无数据",
"通过门磁可查询门的开、关状态。每把锁咳添加一个门磁": "通过门磁可查询门的开、关状态。每把锁咳添加一个门磁",
"开始": "开始",
"全天": "全天",
"你可以设置多个常开时间段,在设置的时间段内,锁被打开后一直处于打开的状态。": "你可以设置多个常开时间段,在设置的时间段内,锁被打开后一直处于打开的状态。",
@ -159,9 +153,8 @@
"升级": "升级",
"空闲": "空闲",
"已入住": "已入住",
"英文": "英文",
"中文": "中文",
"简体中文": "简体中文",
"多语言": "多语言",
"添加锁": "添加锁",
"锁地址": "锁地址",
@ -172,7 +165,6 @@
"客服": "客服",
"设置": "设置",
"更多设置": "更多设置",
"消息推送": "消息推送",
"锁用户管理": "锁用户管理",
"拥有的钥匙": "拥有的钥匙",
@ -201,7 +193,6 @@
"请输入昵称": "请输入昵称",
"修改昵称": "修改昵称",
"修改账号": "修改账号",
"重置密码": "重置密码",
"安全问题": "安全问题",
"为了你的账号安全,修改账号前请先使用验证码验证": "为了你的账号安全,修改账号前请先使用验证码验证",
@ -354,7 +345,6 @@
"判断方法:": "判断方法:",
"判断方法内容": "人站在屋外,面向入户门。\n如果门的合页或门轴在左边则门是左开\n如果门的合页或门轴在右边则门是右开。\n如果设置错误将无法正常开关门。\n建议由安装或维修人员操作。",
"录像时段": "录像时段",
"密码": "密码",
"卡": "卡",
"指纹": "指纹",
@ -746,19 +736,25 @@
"请选择有效日": "请选择有效日",
"公司名字长度不能小于 6 ": "公司名字长度不能小于 6 ",
"已是最新版本": "已是最新版本",
"无考勤记录": "无考勤记录",
"大家干劲十足": "大家干劲十足",
"工作时长未出炉": "工作时长未出炉",
"国家地区的选择将影响数据安全,你当前选择的是阿尔巴尼亚,请确认后再继续": "国家地区的选择将影响数据安全,你当前选择的是阿尔巴尼亚,请确认后再继续",
"确认国家或地区": "确认国家或地区",
"我知道了": "我知道了",
"一":"一",
"二":"二",
"三":"三",
"四":"四",
"五":"五",
"六":"六",
"日":"日",
"新建短信模版": "新建短信模版",
"新建邮件模版": "新建邮件模版",
"自定义短信模版": "自定义短信模版",
"自定义邮件模版": "自定义邮件模版",
"名称": "名称",
"星星锁": "星星锁",
"无考勤记录": "无考勤记录",
"大家干劲十足": "大家干劲十足",
"工作时长未出炉": "工作时长未出炉",
"国家地区的选择将影响数据安全,你当前选择的是阿尔巴尼亚,请确认后再继续": "国家地区的选择将影响数据安全,你当前选择的是阿尔巴尼亚,请确认后再继续",
"确认国家或地区": "确认国家或地区",
"我知道了": "我知道了",
"为了让您及时收到重要通知和更新,我们需要获取通知权限。请点击“确定”按钮,然后在设置页面中启用通知权限。": "为了让您及时收到重要通知和更新,我们需要获取通知权限。请点击“确定”按钮,然后在设置页面中启用通知权限。",
"开启后可通过长按锁上的设置键重新上电用APP重新添加": "开启后可通过长按锁上的设置键重新上电用APP重新添加",
"已有": "已有",
@ -774,7 +770,6 @@
"个人用户": "个人用户",
"星寓": "星寓",
"账号": "账号",
"请输入手机号或email": "请输入手机号或email",
"请输入星寓管理员的账号": "请输入星寓管理员的账号",
"选中的智能锁将会转移到您输入的账号中,您将失去锁的管理权": "选中的智能锁将会转移到您输入的账号中,您将失去锁的管理权",
@ -808,14 +803,12 @@
"进度": "进度",
"失败": "失败",
"人脸详情": "人脸详情",
"感应到门前约1.5米有人时,将自动启动面部识别开锁。": "感应到门前约1.5米有人时,将自动启动面部识别开锁。",
"感应到门前约0.8米有人时,将自动启动面部识别开锁。": "感应到门前约0.8米有人时,将自动启动面部识别开锁。",
"感应到门前约0.5米有人时,将自动启动面部识别开锁。": "感应到门前约0.5米有人时,将自动启动面部识别开锁。",
"感应距离已关闭,需手动触摸键盘任意键,进行面部识别开锁。": "感应距离已关闭,需手动触摸键盘任意键,进行面部识别开锁。",
"防误开已打开,开锁后": "防误开已打开,开锁后",
"秒内不可使用面容开锁": "秒内不可使用面容开锁",
"掌静脉": "掌静脉",
"添加掌静脉": "添加掌静脉",
"胁迫掌静脉": "胁迫掌静脉",
@ -825,7 +818,6 @@
"掌静脉号": "掌静脉号",
"蓝牙未打开,请到设置里面打开蓝牙": "蓝牙未打开,请到设置里面打开蓝牙",
"删除用户时,会将用户拥有的钥匙一起删除。": "删除用户时,会将用户拥有的钥匙一起删除。",
"配置网络": "配置网络",
"你好": "你好",
"成功": "成功",
@ -1055,6 +1047,39 @@
"热门城市": "热门城市",
"导出锁数据": "导出锁数据",
"一键开锁": "一键开锁",
"已开通": "已开通"
"已开通": "已开通",
"繁体中文": "繁体中文",
"法语": "法语",
"俄语": "俄语",
"德语": "德语",
"日语": "日语",
"韩语": "韩语",
"意大利语": "意大利语",
"乌克兰语": "乌克兰语",
"葡萄牙语": "葡萄牙语",
"西班牙语": "西班牙语",
"阿拉伯语": "阿拉伯语",
"越南语": "越南语",
"马莱语": "马莱语",
"荷兰语": "荷兰语",
"罗马尼亚语": "罗马尼亚语",
"立陶宛语": "立陶宛语",
"瑞典语": "瑞典语",
"爱沙尼亚语": "爱沙尼亚语",
"波兰语": "波兰语",
"斯洛伐克语": "斯洛伐克语",
"捷克语": "捷克语",
"希腊语": "希腊语",
"希伯来语": "希伯来语",
"塞尔维亚语": "塞尔维亚语",
"土耳其语": "土耳其语",
"匈牙利语": "匈牙利语",
"保加利亚语": "保加利亚语",
"哈萨克斯坦语": "哈萨克斯坦语",
"孟加拉语": "孟加拉语",
"克罗地亚语": "克罗地亚语",
"泰语": "泰语",
"印度尼西亚语": "印度尼西亚语",
"芬兰语": "芬兰语",
"丹麦语": "丹麦语"
}

View File

@ -71,7 +71,7 @@ class _MyAppState extends State<MyApp> with WidgetsBindingObserver, BaseWidget {
if (idx != -1) {
locale = appSupportedLocales[idx];
} else {
locale = const Locale('zh', 'CN');
locale = Get.locale;
}
}
AppManager().setLanCode(
@ -86,7 +86,7 @@ class _MyAppState extends State<MyApp> with WidgetsBindingObserver, BaseWidget {
.first
: Get.deviceLocale,
// locale: Get.deviceLocale,
fallbackLocale: const Locale('zh', 'CN'),
fallbackLocale: Get.locale,
theme: ThemeData(
scaffoldBackgroundColor: const Color(0xFFF6F6F6),
backgroundColor: const Color(0xFFF6F6F6),

View File

@ -65,11 +65,7 @@ FutureOr<void> main() async {
}
//
Future<void> _initTranslation() async => TranslationLoader.loadTranslation(
zhSource: 'lan/lan_zh.json',
enSource: 'lan/lan_en.json',
keySource: 'lan/lan_keys.json',
);
Future<void> _initTranslation() async => TranslationLoader.loadTranslation();
//
Future<void> _setCommonServices() async {

View File

@ -90,10 +90,12 @@ class LockDetailLogic extends BaseGetXController {
//
lockReportLockSuccessfullyUploadData();
//
// getLockRecordLastUploadDataTime();
resetOpenDoorState();
state.animationController!.stop();
//
// getLockRecordLastUploadDataTime();
break;
case 0x06:
//

View File

@ -258,7 +258,7 @@ class _RealTimePicturePageState extends State<RealTimePicturePage> with TickerPr
*/
})),
bottomBtnItemWidget(
'images/main/icon_lockDetail_hangUp.png', '挂断', Colors.red, () async {
'images/main/icon_lockDetail_hangUp.png', '挂断'.tr, Colors.red, () async {
//
logic.udpHangUpAction();
CallTalk().finishAVData();

View File

@ -165,7 +165,7 @@ class _AboutPageState extends State<AboutPage> {
endIndent: 20.w,
),
CommonItem(
leftTitel:"".tr,
leftTitel:'第三方信息共享清单'.tr,
rightTitle: '',
isHaveLine: false,
isHaveDirection: true,

View File

@ -1,6 +1,7 @@
import 'dart:ui';
import 'package:get/get.dart';
import 'package:star_lock/app_settings/app_settings.dart';
import 'package:star_lock/tools/baseGetXController.dart';
import '../../main/lockDetail/passwordKey/passwordKeyList/passwordKeyListEntity.dart';
import '../../network/api_repository.dart';
@ -10,19 +11,21 @@ import 'mineMultiLanguage_state.dart';
class MineMultiLanguageLogic extends GetxController {
final MineMultiLanguageState state = MineMultiLanguageState();
//-
Future<void> updateUserLangInfo(Locale l, String lanTypeTitle) async {
//
Future<void> updateUserLangInfo(Locale l) async {
// AppLog.log('lanTypeTitle: $lanTypeTitle');
final String lang = l.toLanguageTag();
final PasswordKeyListEntity entity = await ApiRepository.to.updateUserLangInfo(lang: lang);
if (entity.errorCode!.codeIsSuccessful) {
eventBus.fire(ChangeLanguageBlockLastLanguageEvent(lanTypeTitle));
changeLanguage(l);
await changeLanguage(l);
eventBus.fire(ChangeLanguageBlockLastLanguageEvent());
}
}
void changeLanguage(Locale l) {
Future<void> changeLanguage(Locale l) async {
if(l == Get.locale)return;
Get.updateLocale(l);
await Get.updateLocale(l);
state.resetLan();
}
}

View File

@ -6,7 +6,6 @@ import 'package:star_lock/mine/mineMultiLanguage/mineMultiLanguage_state.dart';
import '../../app_settings/app_colors.dart';
import '../../tools/commonItem.dart';
import '../../tools/eventBusEventManage.dart';
import '../../tools/titleAppBar.dart';
import '../../translations/app_dept.dart';
import 'mineMultiLanguage_logic.dart';
@ -30,9 +29,9 @@ class _MineMultiLanguagePageState extends State<MineMultiLanguagePage> {
barTitle: '多语言'.tr,
haveBack: true,
backgroundColor: AppColors.mainColor),
body: Column(
mainAxisAlignment: MainAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
body: ListView(
// mainAxisAlignment: MainAxisAlignment.start,
// mainAxisSize: MainAxisSize.min,
children: _children(),
)
);
@ -54,7 +53,8 @@ class _MineMultiLanguagePageState extends State<MineMultiLanguagePage> {
// );
for (int i = 0; i < state.languages.length; i++) {
final Locale e = state.languages[i];
final LanguageType lanType = ExtensionLanguageType.fromLanguageCode(e.languageCode);
final LanguageType lanType = ExtensionLanguageType.fromLocale(e);
// AppLog.log('e:$e lanType:$lanType state.currentLanguageType.value:${state.currentLanguageType.value} Get.locale!.languageCode:${Get.locale!.languageCode} Get.locale!.countryCode:${Get.locale!.countryCode}');
l.add(
CommonItem(
leftTitel: lanType.lanTitle,
@ -71,7 +71,7 @@ class _MineMultiLanguagePageState extends State<MineMultiLanguagePage> {
)
: Container()),
action: () {
logic.updateUserLangInfo(e, lanType.lanTitle);
logic.updateUserLangInfo(e);
// eventBus.fire(ChangeLanguageBlockLastLanguageEvent(lanType.lanTitle));
}),
);

View File

@ -16,11 +16,11 @@ class MineMultiLanguageState {
return appDept.deptSupportedLocales;
}
var currentLanguageType = ExtensionLanguageType.fromLanguageCode(Get.locale!.languageCode).obs;
var currentLanguageType = ExtensionLanguageType.fromLocale(Get.locale!).obs;
void resetLan() {
currentLanguageType.value = ExtensionLanguageType.fromLanguageCode(Get.locale!.languageCode);
AppLog.log("currentLanguageType.value:${currentLanguageType.value}");
StoreService.to.saveLanguageCode(Get.locale!.languageCode);
Future<void> resetLan() async {
currentLanguageType.value = ExtensionLanguageType.fromLocale(Get.locale!);
// AppLog.log('currentLanguageType.value:${currentLanguageType.value} Get.locale!.languageCode:${Get.locale!.languageCode} languages:$languages');
await StoreService.to.saveLanguageCode(Get.locale!.languageCode);
}
}

View File

@ -16,10 +16,12 @@ import 'package:star_lock/versionUndate/versionUndate_entity.dart';
import '../../../../network/api_repository.dart';
import '../../../../tools/baseGetXController.dart';
import '../../../app_settings/app_settings.dart';
import '../../../blue/blue_manage.dart';
import '../../../talk/udp/udp_help.dart';
import '../../../tools/eventBusEventManage.dart';
import '../../../tools/store_service.dart';
import '../../../translations/app_dept.dart';
class MineSetLogic extends BaseGetXController {
final MineSetState state = MineSetState();
@ -139,16 +141,23 @@ class MineSetLogic extends BaseGetXController {
StreamSubscription? _getNumberEvent;
void _initLoadDataAction() {
// eventBus
_getNumberEvent =
eventBus.on<ChangeLanguageBlockLastLanguageEvent>().listen((event) {
state.currentLanguage.value = event.languageTitle;
_getNumberEvent = eventBus.on<ChangeLanguageBlockLastLanguageEvent>().listen((event) {
state.currentLanguage.value = _getCurrentLanguage();
});
}
String _getCurrentLanguage() {
String currentLanguage = ExtensionLanguageType.fromLocale(appDept.deptSupportedLocales.where((Locale element) =>
element.languageCode == StoreService.to.getLanguageCode()).first).lanTitle;
// AppLog.log('currentLanguagecurrentLanguage:$currentLanguage StoreService.to.getLanguageCode():${StoreService.to.getLanguageCode()}');
return currentLanguage ??'';
}
@override
void onReady() {
super.onReady();
state.currentLanguage.value = _getCurrentLanguage();
_initLoadDataAction();
}

View File

@ -15,7 +15,7 @@ class MineSetState {
RxInt lockScreen = 2.obs; //
RxInt hideExpiredAccessFlag = 2.obs; //
RxString currentLanguage = "".obs; //
RxString currentLanguage = ''.obs; //
late FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
FlutterLocalNotificationsPlugin();

View File

@ -1,6 +1,5 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart';
@ -88,7 +87,7 @@ class _ValueAddedServicesHighFunctionPageState
children: <Widget>[
SizedBox(height: 20.h),
Text(
'当前状态:已开通'.tr,
'${'当前状态'.tr}${"已开通".tr}',
style: TextStyle(
fontSize: 24.sp, fontWeight: FontWeight.w600),
),

View File

@ -39,6 +39,6 @@ String getLanguageCode() {
.where((Locale element) =>
element.languageCode == StoreService.to.getLanguageCode())
.first
: const Locale('zh', 'CN');// Get.deviceLocale;
: Get.locale!;// Get.deviceLocale;
return locale.toLanguageTag();
}

View File

@ -5,6 +5,6 @@ import 'package:star_lock/app_settings/app_settings.dart';
FutureOr<Request> requestLogInterceptor(Request request) async {
// AppLog.log('GET HTTP REQUEST \n${request.url} \n${request.headers} ${request.toString()} ');
// AppLog.log('请求头:${request.headers.toString()}');
AppLog.log('请求头:${request.headers.toString()}');
return request;
}

View File

@ -69,9 +69,7 @@ class ChickInAddStaffCardAndFingerprintBlockNumberEvent {
///
class ChangeLanguageBlockLastLanguageEvent {
ChangeLanguageBlockLastLanguageEvent(this.languageTitle);
String languageTitle;
ChangeLanguageBlockLastLanguageEvent();
}
///

View File

@ -8,25 +8,57 @@ import 'package:star_lock/translations/trans_lib.dart';
import '../tools/app_manager.dart';
enum AppDept {
cdl,
starLock,
}
extension ExtensionAppDept on AppDept {
static AppDept fromAppPackageName(String packageName) {
AppDept dept = AppDept.cdl;
AppDept dept = AppDept.starLock;
packageName = packageName.toLowerCase();
if(packageName.contains('cdl')){
dept = AppDept.cdl;
if(packageName.contains('starLock')){
dept = AppDept.starLock;
}
return dept;
}
List<Locale> get deptSupportedLocales {
Locale enL = const Locale('en', 'US');
Locale zhL = const Locale('zh', 'CN');
const Locale enL = Locale('en', 'US');
const Locale zhL = Locale('zh', 'CN');
const Locale twL = Locale('zh', 'TW');
const Locale frL = Locale('fr', 'FR');
const Locale ruL = Locale('ru', 'RU');
const Locale deL = Locale('de', 'DE');
const Locale jaL = Locale('ja', 'JP');
const Locale koL = Locale('ko', 'KR');
const Locale itL = Locale('it', 'IT');
const Locale ptL = Locale('pt', 'PT');
const Locale esL = Locale('es', 'ES');
const Locale arL = Locale('ar', 'SA');
const Locale viL = Locale('vi', 'VN');
const Locale msL = Locale('ms', 'MY');
const Locale nlL = Locale('nl', 'NL');
const Locale roL = Locale('ro', 'RO');
const Locale ltL = Locale('lt', 'LT');
const Locale svL = Locale('sv', 'SE');
const Locale etL = Locale('et', 'EE');
const Locale plL = Locale('pl', 'PL');
const Locale skL = Locale('sk', 'SK');
const Locale csL = Locale('cs', 'CZ');
const Locale elL = Locale('el', 'GR');
const Locale heL = Locale('he', 'IL');
const Locale trL = Locale('tr', 'TR');
const Locale huL = Locale('hu', 'HU');
const Locale bgL = Locale('bg', 'BG');
const Locale kkL = Locale('kk', 'KZ');
const Locale bnL = Locale('bn', 'BD');
const Locale hbsL = Locale('hr', 'BA');
const Locale thL = Locale('th', 'TH');
const Locale idL = Locale('id', 'ID');
const Locale fiL = Locale('fi', 'FI');
const Locale daL = Locale('da', 'DK');
return [enL,zhL];
return [enL,zhL,twL,frL,ruL,deL,jaL,koL,itL,ptL,esL,arL,viL,msL,nlL,roL,ltL,svL,etL,plL,skL,csL,elL,heL,trL,huL,bgL,kkL,bnL,hbsL,thL,idL,fiL,daL];
}
}
@ -38,13 +70,75 @@ final List<Locale> appSupportedLocales = appDept.deptSupportedLocales;
enum LanguageType {
chinese,
english,
deutsch, //
francais, //
italiano, //
dutch, //
spanish, // 西
czech, //
slovak //
//
traditionalChinese,
//
french,
//
russian,
//
german,
//
japanese,
//
korean,
//
italian,
//
// ukrainian,
//
portuguese,
// 西
spanish,
//
arabic,
//
vietnamese,
//
malay,
//
dutch,
//
romanian,
//
lithuanian,
//
swedish,
//
estonian,
//
polish,
//
slovak,
//
czech,
//
greek,
//
hebrew,
//
// serbian,
//
turkish,
//
hungarian,
//
bulgarian,
//
kazakh,
//
bengali,
//
croatian,
//
thai,
// 西
indonesian,
//
finnish,
//
danish,
}
extension ExtensionLanguageType on LanguageType {
@ -55,25 +149,344 @@ extension ExtensionLanguageType on LanguageType {
str = '英文'.tr;
break;
case LanguageType.chinese:
str = '中文'.tr;
str = '简体中文'.tr;
break;
case LanguageType.traditionalChinese:
str = '繁体中文'.tr;
break;
case LanguageType.french:
str = '法语'.tr;
break;
case LanguageType.russian:
str = '俄语'.tr;
break;
case LanguageType.german:
str = '德语'.tr;
break;
case LanguageType.japanese:
str = '日语'.tr;
break;
case LanguageType.korean:
str = '韩语'.tr;
break;
case LanguageType.italian:
str = '意大利语'.tr;
break;
// case LanguageType.ukrainian:
// str = '乌克兰语'.tr;
// break;
case LanguageType.portuguese:
str = '葡萄牙语'.tr;
break;
case LanguageType.spanish:
str = '西班牙语'.tr;
break;
case LanguageType.arabic:
str = '阿拉伯语'.tr;
break;
case LanguageType.vietnamese:
str = '越南语'.tr;
break;
case LanguageType.malay:
str = '马莱语'.tr;
break;
case LanguageType.dutch:
str = '荷兰语'.tr;
break;
case LanguageType.romanian:
str = '罗马尼亚语'.tr;
break;
case LanguageType.lithuanian:
str = '立陶宛语'.tr;
break;
case LanguageType.swedish:
str = '瑞典语'.tr;
break;
case LanguageType.estonian:
str = '爱沙尼亚语'.tr;
break;
case LanguageType.polish:
str = '波兰语'.tr;
break;
case LanguageType.slovak:
str = '斯洛伐克语'.tr;
break;
case LanguageType.czech:
str = '捷克语'.tr;
break;
case LanguageType.greek:
str = '希腊语'.tr;
break;
case LanguageType.hebrew:
str = '希伯来语'.tr;
break;
// case LanguageType.serbian:
// str = '塞尔维亚文'.tr;
// break;
case LanguageType.turkish:
str = '土耳其语'.tr;
break;
case LanguageType.hungarian:
str = '匈牙利语'.tr;
break;
case LanguageType.bulgarian:
str = '保加利亚语'.tr;
break;
case LanguageType.kazakh:
str = '哈萨克斯坦语'.tr;
break;
case LanguageType.bengali:
str = '孟加拉语'.tr;
break;
case LanguageType.croatian:
str = '克罗地亚语'.tr;
break;
case LanguageType.thai:
str = '泰语'.tr;
break;
case LanguageType.indonesian:
str = '印度尼西亚语'.tr;
break;
case LanguageType.finnish:
str = '芬兰语'.tr;
break;
case LanguageType.danish:
str = '丹麦语'.tr;
break;
}
return str;
}
static LanguageType fromLanguageCode(String code) {
// static LanguageType fromLanguageCode(String code) {
// LanguageType languageType = LanguageType.english;
// switch(code.toLowerCase()){
// case 'en':
// languageType = LanguageType.english;
// break;
// case 'zh':
// languageType = LanguageType.chinese;
// break;
// case 'tw':
// languageType = LanguageType.traditionalChinese;
// break;
// case 'fr':
// languageType = LanguageType.french;
// break;
// case 'ru':
// languageType = LanguageType.russian;
// break;
// case 'de':
// languageType = LanguageType.german;
// break;
// case 'ja':
// languageType = LanguageType.japanese;
// break;
// case 'ko':
// languageType = LanguageType.korean;
// break;
// case 'it':
// languageType = LanguageType.italian;
// break;
// // case 'uk':
// // languageType = LanguageType.ukrainian;
// // break;
// case 'pt':
// languageType = LanguageType.portuguese;
// break;
// case 'es':
// languageType = LanguageType.spanish;
// break;
// case 'ar':
// languageType = LanguageType.arabic;
// break;
// case 'vi':
// languageType = LanguageType.vietnamese;
// break;
// case 'ms':
// languageType = LanguageType.malay;
// break;
// case 'nl':
// languageType = LanguageType.dutch;
// break;
// case 'ro':
// languageType = LanguageType.romanian;
// break;
// case 'lt':
// languageType = LanguageType.lithuanian;
// break;
// case 'sv':
// languageType = LanguageType.swedish;
// break;
// case 'et':
// languageType = LanguageType.estonian;
// break;
// case 'pl':
// languageType = LanguageType.polish;
// break;
// case 'sk':
// languageType = LanguageType.slovak;
// break;
// case 'cs':
// languageType = LanguageType.czech;
// break;
// case 'el':
// languageType = LanguageType.greek;
// break;
// case 'he':
// languageType = LanguageType.hebrew;
// break;
// // case 'sr':
// // languageType = LanguageType.serbian;
// // break;
// case 'tr':
// languageType = LanguageType.turkish;
// break;
// case 'hu':
// languageType = LanguageType.hungarian;
// break;
// case 'bg':
// languageType = LanguageType.bulgarian;
// break;
// case 'kk':
// languageType = LanguageType.kazakh;
// break;
// case 'bn':
// languageType = LanguageType.bengali;
// break;
// case 'hr':
// languageType = LanguageType.croatian;
// break;
// case 'th':
// languageType = LanguageType.thai;
// break;
// case 'id':
// languageType = LanguageType.indonesian;
// break;
// case 'fi':
// languageType = LanguageType.finnish;
// break;
// case 'da':
// languageType = LanguageType.danish;
// break;
// }
// return languageType;
// }
static LanguageType fromLocale(Locale locale) {
LanguageType languageType = LanguageType.english;
final String code = locale.languageCode;
final String countryCode = locale.countryCode ?? '';
switch(code.toLowerCase()){
case 'en':
languageType = LanguageType.english;
break;
case 'zh':
languageType = LanguageType.chinese;
if(countryCode.toLowerCase() == 'cn'){
languageType = LanguageType.chinese;
}else{
languageType = LanguageType.traditionalChinese;
}
break;
case 'fr':
languageType = LanguageType.french;
break;
case 'ru':
languageType = LanguageType.russian;
break;
case 'de':
languageType = LanguageType.german;
break;
case 'ja':
languageType = LanguageType.japanese;
break;
case 'ko':
languageType = LanguageType.korean;
break;
case 'it':
languageType = LanguageType.italian;
break;
// case 'uk':
// languageType = LanguageType.ukrainian;
// break;
case 'pt':
languageType = LanguageType.portuguese;
break;
case 'es':
languageType = LanguageType.spanish;
break;
case 'ar':
languageType = LanguageType.arabic;
break;
case 'vi':
languageType = LanguageType.vietnamese;
break;
case 'ms':
languageType = LanguageType.malay;
break;
case 'nl':
languageType = LanguageType.dutch;
break;
case 'ro':
languageType = LanguageType.romanian;
break;
case 'lt':
languageType = LanguageType.lithuanian;
break;
case 'sv':
languageType = LanguageType.swedish;
break;
case 'et':
languageType = LanguageType.estonian;
break;
case 'pl':
languageType = LanguageType.polish;
break;
case 'sk':
languageType = LanguageType.slovak;
break;
case 'cs':
languageType = LanguageType.czech;
break;
case 'el':
languageType = LanguageType.greek;
break;
case 'he':
languageType = LanguageType.hebrew;
break;
// case 'sr':
// languageType = LanguageType.serbian;
// break;
case 'tr':
languageType = LanguageType.turkish;
break;
case 'hu':
languageType = LanguageType.hungarian;
break;
case 'bg':
languageType = LanguageType.bulgarian;
break;
case 'kk':
languageType = LanguageType.kazakh;
break;
case 'bn':
languageType = LanguageType.bengali;
break;
case 'hr':
languageType = LanguageType.croatian;
break;
case 'th':
languageType = LanguageType.thai;
break;
case 'id':
languageType = LanguageType.indonesian;
break;
case 'fi':
languageType = LanguageType.finnish;
break;
case 'da':
languageType = LanguageType.danish;
break;
}
return languageType;
}
}

View File

@ -2,28 +2,158 @@ part of lib_trans;
class TranslationLoader {
static bool get isZh => Get.locale?.languageCode.toLowerCase() == 'zh';
static bool get isEn => Get.locale?.languageCode.toLowerCase() == 'en';
// LAN_ZH_CN="zh" #
// LAN_EN_US="en" #
// LAN_ZH_TW="tw" #
// LAN_Fr_FR="fr" #
// LAN_RU_RU="ru" #
// LAN_DE_DE="de" #
// LAN_ZH_JA="ja" #
// LAN_ZH_KO="ko" #
// LAN_ZH_IT="it" #
// #LAN_ZH_TW="uk" #
// LAN_ZH_PT="pt" #
// LAN_ZH_ES="es" # 西
// LAN_ZH_AR="ar" #
// LAN_ZH_vi="vi" #
// LAN_ZH_MS="ms" #
// LAN_ZH_NL="nl" #
// LAN_ZH_RO="ro" #
// LAN_ZH_LT="lt" #
// LAN_ZH_SV="sv" #
// LAN_ZH_ET="et" #
// LAN_ZH_PL="pl" #
// LAN_ZH_SK="sk" #
// LAN_ZH_CS="cs" #
// LAN_ZH_EL="el" #
// LAN_ZH_HE="he" #
// #LAN_ZH_TW="sr" #
// LAN_ZH_TR="tr" #
// LAN_ZH_HU="hu" #
// LAN_ZH_BG="bg" #
// LAN_ZH_KK="kk" # ===
// LAN_ZH_BN="bn" #
// LAN_ZH_HBS="hr" #
// LAN_ZH_TH="th" #
// LAN_ZH_ID="id" # 西
// LAN_ZH_FI="fi" #
// LAN_ZH_DA="da" #
static Map<String,String>
_zhMap = <String, String>{},
_enMap = <String, String>{},
_keyMap = <String, String>{};
// static bool get isZh => Get.locale?.languageCode.toLowerCase() == 'zh';
// static bool get isEn => Get.locale?.languageCode.toLowerCase() == 'en';
static Map<String,String> _zhMap = <String, String>{};
static Map<String,String> _enMap = <String, String>{};
static Map<String,String> _twMap = <String, String>{};
static Map<String,String> _frMap = <String, String>{};
static Map<String,String> _ruMap = <String, String>{};
static Map<String,String> _deMap = <String, String>{};
static Map<String,String> _jaMap = <String, String>{};
static Map<String,String> _koMap = <String, String>{};
static Map<String,String> _itMap = <String, String>{};
static Map<String,String> _ukMap = <String, String>{};
static Map<String,String> _ptMap = <String, String>{};
static Map<String,String> _esMap = <String, String>{};
static Map<String,String> _arMap = <String, String>{};
static Map<String,String> _viMap = <String, String>{};
static Map<String,String> _msMap = <String, String>{};
static Map<String,String> _nlMap = <String, String>{};
static Map<String,String> _roMap = <String, String>{};
static Map<String,String> _ltMap = <String, String>{};
static Map<String,String> _svMap = <String, String>{};
static Map<String,String> _etMap = <String, String>{};
static Map<String,String> _plMap = <String, String>{};
static Map<String,String> _skMap = <String, String>{};
static Map<String,String> _csMap = <String, String>{};
static Map<String,String> _elMap = <String, String>{};
static Map<String,String> _heMap = <String, String>{};
static Map<String,String> _srMap = <String, String>{};
static Map<String,String> _trMap = <String, String>{};
static Map<String,String> _huMap = <String, String>{};
static Map<String,String> _bgMap = <String, String>{};
static Map<String,String> _kkMap = <String, String>{};
static Map<String,String> _bnMap = <String, String>{};
static Map<String,String> _hrMap = <String, String>{};
static Map<String,String> _thMap = <String, String>{};
static Map<String,String> _idMap = <String, String>{};
static Map<String,String> _fiMap = <String, String>{};
static Map<String,String> _daMap = <String, String>{};
static Map<String,String> get zhDic => _zhMap;
static Map<String,String> get enDic => _enMap;
static Map<String,String> get twDic => _twMap;
static Map<String,String> get frDic => _frMap;
static Map<String,String> get ruDic => _ruMap;
static Map<String,String> get deDic => _deMap;
static Map<String,String> get jaDic => _jaMap;
static Map<String,String> get koDic => _koMap;
static Map<String,String> get itDic => _itMap;
static Map<String,String> get ukDic => _ukMap;
static Map<String,String> get ptDic => _ptMap;
static Map<String,String> get esDic => _esMap;
static Map<String,String> get arDic => _arMap;
static Map<String,String> get viDic => _viMap;
static Map<String,String> get msDic => _msMap;
static Map<String,String> get nlDic => _nlMap;
static Map<String,String> get roDic => _roMap;
static Map<String,String> get ltDic => _ltMap;
static Map<String,String> get svDic => _svMap;
static Map<String,String> get etDic => _etMap;
static Map<String,String> get plDic => _plMap;
static Map<String,String> get skDic => _skMap;
static Map<String,String> get csDic => _csMap;
static Map<String,String> get elDic => _elMap;
static Map<String,String> get heDic => _heMap;
static Map<String,String> get srDic => _srMap;
static Map<String,String> get trDic => _trMap;
static Map<String,String> get huDic => _huMap;
static Map<String,String> get bgDic => _bgMap;
static Map<String,String> get kkDic => _kkMap;
static Map<String,String> get bnDic => _bnMap;
static Map<String,String> get hrDic => _hrMap;
static Map<String,String> get thDic => _thMap;
static Map<String,String> get idDic => _idMap;
static Map<String,String> get fiDic => _fiMap;
static Map<String,String> get daDic => _daMap;
// static LanKeyEntity? _lanKeyEntity;
// static LanKeyEntity? get lanKeys => _lanKeyEntity;
static Future<void> loadTranslation({
String? zhSource,
String? enSource,
String? keySource,}) async {
_zhMap = await _loadJsonFile(zhSource!);
_enMap = await _loadJsonFile(enSource!);
_keyMap = await _loadJsonFile(keySource!);
// _lanKeyEntity = LanKeyEntity.fromJson(_keyMap);
static Future<void> loadTranslation() async {
_zhMap = await _loadJsonFile('lan/lan_zh.json');
_enMap = await _loadJsonFile('lan/lan_en.json');
_twMap = await _loadJsonFile('lan/lan_tw.json');
_frMap = await _loadJsonFile('lan/lan_fr.json');
_ruMap = await _loadJsonFile('lan/lan_ru.json');
_deMap = await _loadJsonFile('lan/lan_de.json');
_jaMap = await _loadJsonFile('lan/lan_ja.json');
_koMap = await _loadJsonFile('lan/lan_ko.json');
_itMap = await _loadJsonFile('lan/lan_it.json');
_ukMap = await _loadJsonFile('lan/lan_uk.json');
_ptMap = await _loadJsonFile('lan/lan_pt.json');
_esMap = await _loadJsonFile('lan/lan_es.json');
_arMap = await _loadJsonFile('lan/lan_ar.json');
_viMap = await _loadJsonFile('lan/lan_vi.json');
_msMap = await _loadJsonFile('lan/lan_ms.json');
_nlMap = await _loadJsonFile('lan/lan_nl.json');
_roMap = await _loadJsonFile('lan/lan_ro.json');
_ltMap = await _loadJsonFile('lan/lan_lt.json');
_svMap = await _loadJsonFile('lan/lan_sv.json');
_etMap = await _loadJsonFile('lan/lan_et.json');
_plMap = await _loadJsonFile('lan/lan_pl.json');
_skMap = await _loadJsonFile('lan/lan_sk.json');
_csMap = await _loadJsonFile('lan/lan_cs.json');
_elMap = await _loadJsonFile('lan/lan_el.json');
_heMap = await _loadJsonFile('lan/lan_he.json');
_srMap = await _loadJsonFile('lan/lan_sr.json');
_trMap = await _loadJsonFile('lan/lan_tr.json');
_huMap = await _loadJsonFile('lan/lan_hu.json');
_bgMap = await _loadJsonFile('lan/lan_bg.json');
_kkMap = await _loadJsonFile('lan/lan_kk.json');
_bnMap = await _loadJsonFile('lan/lan_bn.json');
_hrMap = await _loadJsonFile('lan/lan_hr.json');
_thMap = await _loadJsonFile('lan/lan_th.json');
_idMap = await _loadJsonFile('lan/lan_id.json');
_fiMap = await _loadJsonFile('lan/lan_fi.json');
_daMap = await _loadJsonFile('lan/lan_da.json');
}
static Future<Map<String,String>> _loadJsonFile(String filePath) async => rootBundle.loadString(filePath).then((String jsonString){

View File

@ -2,10 +2,81 @@ part of lib_trans;
class TranslationMessage extends Translations {
// LAN_ZH_CN="zh" #
// LAN_EN_US="en" #
// LAN_ZH_TW="tw" #
// LAN_Fr_FR="fr" #
// LAN_RU_RU="ru" #
// LAN_DE_DE="de" #
// LAN_ZH_JA="ja" #
// LAN_ZH_KO="ko" #
// LAN_ZH_IT="it" #
// #LAN_ZH_TW="uk" #
// LAN_ZH_PT="pt" #
// LAN_ZH_ES="es" # 西
// LAN_ZH_AR="ar" #
// LAN_ZH_vi="vi" #
// LAN_ZH_MS="ms" #
// LAN_ZH_NL="nl" #
// LAN_ZH_RO="ro" #
// LAN_ZH_LT="lt" #
// LAN_ZH_SV="sv" #
// LAN_ZH_ET="et" #
// LAN_ZH_PL="pl" #
// LAN_ZH_SK="sk" #
// LAN_ZH_CS="cs" #
// LAN_ZH_EL="el" #
// LAN_ZH_HE="he" #
// #LAN_ZH_TW="sr" #
// LAN_ZH_TR="tr" #
// LAN_ZH_HU="hu" #
// LAN_ZH_BG="bg" #
// LAN_ZH_KK="kk" # ===
// LAN_ZH_BN="bn" #
// LAN_ZH_HBS="hr" #
// LAN_ZH_TH="th" #
// LAN_ZH_ID="id" # 西
// LAN_ZH_FI="fi" #
// LAN_ZH_DA="da" #
@override
Map<String, Map<String, String>> get keys => {
'en_US' : TranslationLoader.enDic,
'zh_CN': TranslationLoader.zhDic,
'zh_TW': TranslationLoader.twDic,
'fr_FR': TranslationLoader.frDic,
'ru_RU': TranslationLoader.ruDic,
'de_DE': TranslationLoader.deDic,
'ja_JA': TranslationLoader.jaDic,
'ko_KO': TranslationLoader.koDic,
'it_IT': TranslationLoader.itDic,
'uk_UK': TranslationLoader.ukDic,
'pt_PT': TranslationLoader.ptDic,
'es_ES': TranslationLoader.esDic,
'ar_AR': TranslationLoader.arDic,
'vi_VI': TranslationLoader.viDic,
'ms_MS': TranslationLoader.msDic,
'nl_NL': TranslationLoader.nlDic,
'ro_RO': TranslationLoader.roDic,
'lt_LT': TranslationLoader.ltDic,
'sv_SV': TranslationLoader.svDic,
'et_ET': TranslationLoader.etDic,
'pl_PL': TranslationLoader.plDic,
'sk_SK': TranslationLoader.skDic,
'cs_CS': TranslationLoader.csDic,
'el_EL': TranslationLoader.elDic,
'he_HE': TranslationLoader.heDic,
'sr_SR': TranslationLoader.srDic,
'tr_TR': TranslationLoader.trDic,
'hu_HU': TranslationLoader.huDic,
'bg_BG': TranslationLoader.bgDic,
'kk_KK': TranslationLoader.kkDic,
'bn_BN': TranslationLoader.bnDic,
'hr_HR': TranslationLoader.hrDic,
'th_TH': TranslationLoader.thDic,
'id_ID': TranslationLoader.idDic,
'fi_FI': TranslationLoader.fiDic,
'da_DA': TranslationLoader.daDic,
};
void updateLocal(Locale l) => Get.updateLocale(l);

View File

@ -105,6 +105,6 @@ echo -e "\n* 没有发现废弃 API开始编译"
# 编译命令
#flutter clean && flutter pub get
#flutter build apk --flavor $environment -t $main_file
flutter build apk --flavor $environment -t $main_file
#flutter build ios --flavor $environment -t $main_file
flutter build appbundle --flavor $environment -t $main_file
#flutter build appbundle --flavor $environment -t $main_file

View File

@ -86,8 +86,9 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# 1.0.74+2024080901xhj 预发布环境,提交测试:回归 8月9号之前bug
# 1.0.75+2024081001锁定版本上架商城
# 1.0.76+2024081201锁定版本上架商城--最新版本
# 1.0.78+2024082701测试国际化功能
version: 1.0.76+2024081601
version: 1.0.78+2024082701
environment:
sdk: '>=2.12.0 <3.0.0'

View File

@ -10,9 +10,46 @@ SOURCE_LANGUAGE="en"
#项目语言常量
LAN_ZH_CN="zh_CN"
LAN_ZH_TW="zh_TW"
LAN_EN_US="en_US"
#LAN_ZH_CN="zh_CN"
#LAN_ZH_TW="zh_TW"
#LAN_EN_US="en_US"
LAN_ZH_CN="zh" # 简体中文
LAN_EN_US="en" # 英文
LAN_ZH_TW="tw" # 繁体中文
LAN_Fr_FR="fr" # 法语
LAN_RU_RU="ru" # 俄语
LAN_DE_DE="de" # 德语
LAN_ZH_JA="ja" # 日语
LAN_ZH_KO="ko" # 韩语
LAN_ZH_IT="it" # 意大利语
#LAN_ZH_TW="tw" # 乌克兰语
LAN_ZH_PT="pt" # 葡萄牙语
LAN_ZH_ES="es" # 西班牙语
LAN_ZH_AR="ar" # 阿拉伯语
LAN_ZH_vi="vi" # 越南语
LAN_ZH_MS="ms" # 马莱语
LAN_ZH_NL="nl" # 荷兰语
LAN_ZH_RO="ro" # 罗马尼亚语
LAN_ZH_LT="lt" # 立陶宛语
LAN_ZH_SV="sv" # 瑞典语
LAN_ZH_ET="et" # 爱沙尼亚语
LAN_ZH_PL="pl" # 波兰语
LAN_ZH_SK="sk" # 斯洛伐克语
LAN_ZH_CS="cs" # 捷克语
LAN_ZH_EL="el" # 希腊语
LAN_ZH_HE="he" # 希伯来语
#LAN_ZH_TW="tw" # 塞尔维亚文
LAN_ZH_TR="tr" # 土耳其语
LAN_ZH_HU="hu" # 匈牙利语
LAN_ZH_BG="bg" # 保加利亚语
LAN_ZH_KK="kk" # 哈萨克斯坦语 === 哈萨克语
LAN_ZH_BN="bn" # 孟加拉语
LAN_ZH_HBS="hbs" # 克罗地亚语
LAN_ZH_TH="th" # 泰语
LAN_ZH_ID="id" # 印度尼西亚语
LAN_ZH_FI="fi" # 芬兰语
LAN_ZH_DA="da" # 丹麦语
declare -A LANG_LIST=(
["$LAN_ZH_CN"]="简体中文"
@ -25,6 +62,42 @@ declare -A ALIYUN_LANG_MAP=(
["$LAN_ZH_CN"]="zh"
["$LAN_ZH_TW"]="zh-tw"
["$LAN_EN_US"]="en"
# ["$LAN_ZH_CN"]="zh" # 简体中文
# ["$LAN_EN_US"]="en" # 英文
# ["$LAN_ZH_TW"]="tw" # 繁体中文
["$LAN_Fr_FR"]="fr" # 法语
["$LAN_RU_RU"]="ru" # 俄语
["$LAN_DE_DE"]="de" # 德语
["$LAN_ZH_JA"]="ja" # 日语
["$LAN_ZH_KO"]="ko" # 韩语
["$LAN_ZH_IT"]="it" # 意大利语
#LAN_ZH_TW="tw" # 乌克兰语
["$LAN_ZH_PT"]="pt" # 葡萄牙语
["$LAN_ZH_ES"]="es" # 西班牙语
["$LAN_ZH_AR"]="ar" # 阿拉伯语
["$LAN_ZH_vi"]="vi" # 越南语
["$LAN_ZH_MS"]="ms" # 马莱语
["$LAN_ZH_NL"]="nl" # 荷兰语
["$LAN_ZH_RO"]="ro" # 罗马尼亚语
["$LAN_ZH_LT"]="lt" # 立陶宛语
["$LAN_ZH_SV"]="sv" # 瑞典语
["$LAN_ZH_ET"]="et" # 爱沙尼亚语
["$LAN_ZH_PL"]="pl" # 波兰语
["$LAN_ZH_SK"]="sk" # 斯洛伐克语
["$LAN_ZH_CS"]="cs" # 捷克语
["$LAN_ZH_EL"]="el" # 希腊语
["$LAN_ZH_HE"]="he" # 希伯来语
#LAN_ZH_TW="tw" # 塞尔维亚文
["$LAN_ZH_TR"]="tr" # 土耳其语
["$LAN_ZH_HU"]="hu" # 匈牙利语
["$LAN_ZH_BG"]="bg" # 保加利亚语
["$LAN_ZH_KK"]="kk" # 哈萨克斯坦语 === 哈萨克语
["$LAN_ZH_BN"]="bn" # 孟加拉语
["$LAN_ZH_HBS"]="hbs" # 克罗地亚语
["$LAN_ZH_TH"]="th" # 泰语
["$LAN_ZH_ID"]="id" # 印度尼西亚语
["$LAN_ZH_FI"]="fi" # 芬兰语
["$LAN_ZH_DA"]="da" # 丹麦语
)