Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 颤振1.22国际化,以变量为键_Flutter_Variables_Dart_Internationalization_Arb - Fatal编程技术网

Flutter 颤振1.22国际化,以变量为键

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生成的代码如下所示(略为

我为flatter()实现了新的(官方)本地化,一切正常,只是我不知道如何获得变量键的翻译

翻译在ARB文件中,但我如何访问它

通常我使用
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');
}
}
}