Flutter App 本地化:如何使用 String key 获取值?

Mar*_*meh 7 localization dart android-studio flutter

我可以用这样的方法获得翻译的价值:

AppLocalizations.of(context).closed
Run Code Online (Sandbox Code Playgroud)

如果我像这样“关闭”作为字符串变量:

String c = "closed";
Run Code Online (Sandbox Code Playgroud)

如何使用 c Variable 获取值:

AppLocalizations.of(context).c  ( This Makes Error "The getter 'c' isn't defined for the type 'AppLocalizations'")
Run Code Online (Sandbox Code Playgroud)

小智 2

我按照 Flutter 官方文档进行国际化,但我遇到了同样的问题。因此,我在我的 ide (Visual Studio Code) 上安装了插件 Flutter Intl (localizely.flutter-intl),它也可以在 Android Studio 中使用。为了获得动态翻译,我使用了名为“Select”的 ICU 格式类型(https://support.crowdin.com/icu-message-syntax/#select)。例如:

主程序.dart

localizationsDelegates: [
  S.delegate,
  GlobalMaterialLocalizations.delegate,
  GlobalWidgetsLocalizations.delegate,
  GlobalCupertinoLocalizations.delegate,
],
supportedLocales: S.delegate.supportedLocales,
Run Code Online (Sandbox Code Playgroud)

init_it.arb

"gender": "{gender, select, male{Maschio} female{Femmina} other{entrambi}}",
  "@gender": {
    "description": "Gender type",
    "placeholders": {
      "gender": {}
    }
  }
Run Code Online (Sandbox Code Playgroud)

myWidget.dart

Text(
     S.of(context).gender(gender.name)
   )
Run Code Online (Sandbox Code Playgroud)