Flutter国际化:Text组件含变量时翻译失效问题求助
解决Flutter国际化带变量文本翻译失效问题
问题出在你把变量直接拼接在翻译key里了——'Expected_Date = $dueDate'.tr会把整个带变量的字符串当作翻译key去查找,但你的翻译表中根本不存在这个动态生成的key,自然拿不到正确翻译。
正确做法:
修改翻译文件:在对应语言的翻译配置文件(如json/yaml)中,添加带占位符的固定条目。示例:
- 英文配置:
"expected_date": "Expected Date","expected_date_with_value": "Expected Date = {date}" - 中文配置:
"expected_date": "预计日期","expected_date_with_value": "预计日期 = {date}"
- 英文配置:
代码中传递变量参数:使用翻译库的参数替换功能,把变量传给
tr方法:
date == null ? Text('expected_date'.tr) : Text('expected_date_with_value'.tr(namedArgs: {'date': dueDate.toString()})),
如果用的是不支持命名参数的国际化库,也可以用位置参数:
// 对应翻译文件占位符改为 "Expected Date = %1$s" date == null ? Text('expected_date'.tr) : Text('expected_date_with_value'.tr(args: [dueDate.toString()])),
核心逻辑:翻译key必须是固定纯文本,变量通过翻译库的参数机制动态替换到翻译后的字符串中,不能把变量直接拼在key里。
内容的提问来源于stack exchange,提问作者faizy 313
相关产品推荐
相关产品推荐

