You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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()强制二次解析:
    "copy_received_message".tr().tr();
    
    但此方法仅作临时 workaround,优先建议升级版本或检查配置。

内容的提问来源于stack exchange,提问作者alfalifr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 08:55:16