如何在Flutter的*.arb本地化文件中定义不可翻译字符串?
在Flutter ARB本地化文件中实现字符串不翻译的方案
在Android的strings.xml里,我们可以通过translatable="false"属性指定字符串不参与翻译,示例代码如下:
<string name="inches" translatable="false">in</string>
针对Flutter的.arb本地化文件,有两种实用方案实现相同需求:
方式一:通过ARB元数据标记不可翻译
在主ARB文件中,给目标字符串的元数据(以@开头的键)添加"translatable": false配置,示例:"@inches": { "description": "英寸单位缩写", "translatable": false }, "inches": "in"使用Flutter官方的intl本地化工具链时,会自动识别这个标记,跳过该字符串的翻译流程。
方式二:仅在默认语言ARB文件中定义
只将不需要翻译的字符串放在默认语言的ARB文件(比如app_en.arb)中,其他语言的ARB文件不添加该键。Flutter本地化框架在找不到对应语言的字符串时,会自动回退使用默认语言的版本,以此实现不翻译的效果。
两种方案中,方式一是官方推荐的标准做法,能清晰标记字符串的翻译状态,更利于项目维护。
内容的提问来源于stack exchange,提问作者bzalar
相关产品推荐
相关产品推荐

