如何阻止Google Translate翻译Flutter本地化ARB文件中的驼峰式变量?
解决Google Translate翻译ARB文件中驼峰变量的问题
Google Translate的网页界面和API会误译{userName}这类驼峰命名的变量,导致Flutter本地化后的应用崩溃,以下是几种不用修改变量命名的解决办法:
方法1:利用Google Translate的「不翻译标记」
把原文本中的变量用<span class="notranslate">包裹,比如将:
"greetingMorningWithName": "Good morning, {userName}!",
改成:
"greetingMorningWithName": "Good morning, <span class=\"notranslate\">{userName}</span>!",
然后用Google Translate的HTML模式(网页版选「翻译网页」或API中设置format=html)进行翻译。翻译完成后,再把<span class="notranslate">和</span>去掉,还原成原来的变量格式即可。
方法2:使用Google Translate术语表锁定变量
在Google Translate中创建术语表,将{userName}添加为术语,设置其目标语言的翻译结果就是{userName}本身。这样无论是网页版还是API翻译时,只要匹配到这个术语,就会直接保留原样,不会进行翻译。
方法3:预处理+后处理ARB文件
编写简单的脚本(比如Python或Shell脚本),在翻译前把所有驼峰变量替换成不会被翻译的临时占位符,比如把{userName}替换成__USER_NAME_TEMP__;翻译完成后,再把临时占位符替换回原来的{userName}。这种方法不需要依赖Translate的特殊功能,兼容性更强。
方法4:使用Flutter官方本地化工具链
借助Flutter的intl_translation包,它会自动处理ARB文件中的占位符,避免翻译工具误译变量。步骤大致如下:
- 用
intl_translation提取待翻译的字符串到.intl文件 - 将
.intl文件导出为适合Google Translate的格式(比如CSV) - 翻译后再导入回ARB文件,工具会自动保留变量的原始格式
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

