如何在Flutter的easy_localization包中实现嵌套链接翻译?
问题:easy_localization嵌套链接翻译未递归解析
我有如下JSON翻译文件:
{ "copy" : { "v1" : "copy" }, "receive" : { "v3" : "received" }, "message" : "message", "received_message" : "@:receive.v3 @:message", "copy_received_message" : "@:copy.v1 @:received_message" }
通过代码调用获取翻译:
"copy_received_message".tr();
期望得到结果:"copy received message"
实际得到结果:"copy @:receive.v3 @:message"
备注
我知道可以直接在JSON中展开嵌套引用:
{ ... "copy_received_message" : "@:copy.v1 @:receive.v3 @:message" }
但这种写法仅在英语中适用,其他语言里received_message的结构可能复杂得多,无法直接展开。
解决方法
easy_localization的链接翻译功能本身支持嵌套引用的递归解析,出现未解析问题可按以下方式处理:
- 升级至最新稳定版:旧版本可能存在嵌套解析的bug,更新后大概率解决问题。
- 检查初始化配置:确保EasyLocalization初始化时未禁用解析相关选项,比如
fallbackLocale等配置需设置正确。 - 临时应急方案:若上述方法无效,可通过两次调用
tr()强制二次解析:
但此方法仅作临时 workaround,优先建议升级版本或检查配置。"copy_received_message".tr().tr();
内容的提问来源于stack exchange,提问作者alfalifr
相关产品推荐
相关产品推荐

