Flutter 颤振1.22国际化,以变量为键
我为flatter()实现了新的(官方)本地化,一切正常,只是我不知道如何获得变量键的翻译 翻译在ARB文件中,但我如何访问它 通常我使用Flutter 颤振1.22国际化,以变量为键,flutter,variables,dart,internationalization,arb,Flutter,Variables,Dart,Internationalization,Arb,我为flatter()实现了新的(官方)本地化,一切正常,只是我不知道如何获得变量键的翻译 翻译在ARB文件中,但我如何访问它 通常我使用translations.of(context).formsBack访问翻译,但现在我想获取value[“labels”][“label”]的翻译 像Translations.of(context)。(value[“labels”][“label”])这样的东西当然不起作用。我认为这在gen\u l10n中是不可能的。由gen_l10n生成的代码如下所示(略为
translations.of(context).formsBack
访问翻译,但现在我想获取value[“labels”][“label”]
的翻译
像
Translations.of(context)。(value[“labels”][“label”])
这样的东西当然不起作用。我认为这在gen\u l10n
中是不可能的。由gen_l10n
生成的代码如下所示(略为缩写):
///英语的翻译(`en`)。
类TranslationsEn扩展了翻译{
TranslationsEn([stringlocale='en']):super(locale);
@凌驾
字符串get-confirmDialogBtnOk=>“是”;
@凌驾
字符串get-confirmDialogBtnCancel=>“否”;
}
正如您所看到的,它不会生成任何代码来执行动态查找
对于大多数情况,像这样的代码生成是一个很好的优势,因为您可以获得自动完成和类型安全性,但这确实意味着更难适应这些类型的动态用例
您唯一能做的就是手动编写查找表,或者选择另一个支持动态查找的i18n解决方案
查找表可以是这样的。只需确保始终在当前生成上下文中传递,以便l10n代码可以查找当前区域设置
类动态转换{
String get(BuildContext上下文,String messageId){
开关(messageId){
案例“confirmDialogBtnOk”:
返回翻译.of(context).confirmDialogBtnOk;
案例“confirmDialogBtnCancel”:
返回翻译.of(context).confirmDialogBtnCancel;
违约:
抛出异常('Unknown message:$messageId');
}
}
}