多语言字符串翻译工具

多语言字符串翻译工具

一 使用场景及工具路径

多语言字符串翻译工具的作用是将应用源码中的字符串资源文件自动翻译为需要的各语言并自动生成在各语言文件夹下。

以某应用 value 文件夹下的 strings.xml 为例,使用此翻译工具,可以将此文件中的各个字符串翻译为需要的语言,在当前工具目录自动生成各个语言文件夹(如values-ar、values-bn、values-it-rIT等),并在各语言文件夹下生成翻译好的 strings.xml 文件。

二 使用方法

在命令终端进入工具所在目录,并输入指令 python3 translate_tool.py + 文件路径(相对路径或者绝对路径都可以)

以 BinderTest 举例,它的 string 资源文件的绝对路径为 /home/server/AndroidStudioProjects/BinderTest/app/src/main/res/values
/strings.xml,那么就在终端输入:

python3 translate_tool.py ../BinderTest/app/src/main/res/values/strings.xml

也可以将 strings.xml 拷贝到工具当前路径,那么就在终端输入:

python3 translate_tool.py strings.xml

翻译过程中会在终端显示每个翻译的字符串的名称以及翻译成对应语言的内容,最终会显示 Translate done! 表示翻译完成,翻译好的字符串文件会在工具当前目录的各语言文件夹下自动生成。

如需要增加翻译的语言,则需要修改工具目录中的 lang_map.json 文件,参照格式,左边为语言代码,右边为应用中语言对应的文件夹名。例如要增加日语,则修改如下:

 {
 ...
   "ms-MY": "values-ms-rMY",
   "tl-PH": "values-tl-rPH",
   "in-ID": "values-in-rID",
-  "bn": "values-bn"
+  "bn": "values-bn",
+  "ja": "values-ja"
 }

三 注意事项

3.1 如果在翻译过程中终端报错停止,一般都是由于翻译的字符串中带特殊符号导致

例: <string name="battery_low_percent_format_hybrid"><xliff:g id="percentage">%1$s</xliff:g> remaining, about <xliff:g id="time">%2$s</xliff:g> left based on your usage</string>,删除此行或者删除其中的 xliff:g 标签即 <string name="battery_low_percent_format_hybrid">%1$s remaining, about %2$s left based on your usage</string> ,再运行即可。

3.2 如果在翻译过程中显示翻译的字符串都为 NONE,则可能是由于谷歌翻译的 url 更改导致,此时需要在代码中更新谷歌翻译的 url

1)在浏览器打开谷歌翻译网址,https://translate.google.cn/ ,按 F12 打开开发者模式,在检测语言处输入 hello ,此时点击开发者模式中的 Network 标签,找到 Name 列表里最下面以 batchexecute 开头的选项点击,选择右方 Payload 标签,检查 From Data 中是否含有 hello 字符串,如含有,则准确无误,若不含有,则继续点击其他 batchexecute 开头的选项,找到含有 hello 字符串的即可。

2)将该 Headers 标签拉到最上方,找到 Request URL 的值,将这个值完整复制到 google_translate.py 中的 url 赋值处,具体为:

# request url
url = "https://translate.google.com.hk/_/TranslateWebserverUi/data/batchexecute?rpcids=rPsWke&source-path=%2F&f.sid=9119586283608393146&bl=boq_translate-webserver_20240924.08_p0&hl=zh-CN&soc-app=1&soc-platform=1&soc-device=1&_reqid=1634866&rt=c"

2)在代码编辑器打开工具目录中的 google_translate.py 文件,找到 form_data 赋值处

form_data = {
“f.req”: r"“”[[[“MkEWBc”,“[[”{}“,“en”,”{}“,true],[null]]”,null,“generic”]]]“”".format(
text, target_language)
}

如正常则保持原form_data 即可,如异常则将网页 Payload标签下的填写到此处,注意数组中需要翻译的字符串以及目标语言这两处改为{}

在这里插入图片描述

在这里插入图片描述

4)保存,再重新运行翻译工具即可

Delphi 10.3是一种流行的集成开发环境(IDE),用于开发跨平台的应用程序。在Delphi 10.3中,使用资源编译器(RC)字符串来实现多语言支持。 RC字符串是一种用于存储和管理应用程序中的文本的机制。它允许开发人员将应用程序中的所有文本(如标签、按钮、菜单项等)存储在单独的资源文件中,而不是直接在代码中硬编码。这样做的好处是使应用程序易于本地化,即使在运行时更改语言设置,也可以动态加载正确的文本。 在Delphi 10.3中,可以使用RES文件来存储和管理RC字符串。使用资源编辑器可以方便地将应用程序中的文本添加到RES文件中。可以为每种语言创建不同的RES文件,以便为不同的目标语言提供正确的文本。 在应用程序的代码中,可以使用特殊的函数或指令来加载和显示RC字符串。例如,可以使用LoadResString函数来加载特定ID的RC字符串,并将其分配给相关的控件。这使开发人员能够根据用户的语言设置动态加载正确的文本。 Delphi 10.3还提供了一些工具和资源管理器,帮助开发人员管理和本地化RC字符串。例如,可以使用资源导入器来导入和导出RC字符串,以便翻译和本地化应用程序的文本。此外,还有一些第三方库和工具可以帮助开发人员更容易地管理和实现多语言支持。 总之,Delphi 10.3通过使用RC字符串和相关的工具来提供多语言支持。这使得开发人员能够轻松地本地化应用程序,并根据用户的语言设置加载适当的文本。这是一个重要的特性,使得应用程序更加友好和适应不同语言环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值