我为Flutter(https://pascalw.me/blog/2020/10/02/flutter-1.22-internationalization.html)实现了新的(官方)本地化,一切都很好,除了我不知道如何获得变量键的翻译。
翻译在ARB文件中,但我如何访问它?
通常我使用Translations.of(context).formsBack
访问翻译,但现在我想获得value["labels"]["label"]
的翻译。
像Translations.of(context).(value["labels"]["label"])
这样的东西当然不起作用。
4条答案
按热度按时间t2a7ltrp1#
我认为这在
gen_l10n
中是不可能的,gen_l10n
生成的代码如下所示(略略短):正如您所看到的,它不会生成任何代码来执行动态查找。
对于大多数情况,这样的代码生成是一个很好的优势,因为您可以自动完成和类型安全,但这确实意味着更难以适应这些类型的动态用例。
您唯一能做的就是手动编写查找表,或者选择另一个支持动态查找的i18n解决方案。
查找表可能如下所示。只要确保总是传入当前的构建上下文,这样l10n代码就可以查找当前的语言环境。
vd8tlhqk2#
为了提供https://stackoverflow.com/users/5638943/kristi-jorgji的答案的示例(工作正常):
应用程序_en.任意波形-〉
本地化_控制器.dart -〉
vc6uscn93#
你可以把一个键翻译成json字符串,然后读取它,解析成Map〈string,string〉,动态访问你需要的内容。
这种方法已经取得了巨大成功
blmhpbnm4#
创建了一个包来解决这个问题,因为flutter还不支持使用动态键访问翻译。
阅读文档以设置https://pub.dev/packages/localization_mapper_annotation
如果有帮助的话请投票。