Flutter 本地化默认语言

问题描述 投票:0回答:3

我在使用 flutter_localizations 为我的 flutter 应用程序配置默认语言时遇到一些麻烦。目前,我有两种语言:瑞典语和英语。如果手机语言设置为瑞典语,则应用程序为瑞典语,英语也相同。然而,当它不是这两种语言时,应用程序只会求助于以前使用的任何语言。相反,我希望当手机的语言既不是英语也不是瑞典语时,应用程序始终使用英语。根据我的理解,flutter_localizations 应该从一开始就默认使用英语,或者根据我的supportedLocales 列表的排序方式,排序如下:['en', 'sv,]。有人遇到过同样的问题或知道解决方法吗?感谢任何帮助:)

localizationsDelegates: [
          AppLocalizations.delegate,
          GlobalMaterialLocalizations.delegate,
          GlobalWidgetsLocalizations.delegate,
          GlobalCupertinoLocalizations.delegate,
        ],
        supportedLocales: [
          const Locale('en', ''),
          const Locale('sv', ''),
        ],
flutter localization
3个回答
1
投票

您可能已经找到了答案,但如果情况并非如此,请尝试将以下回调添加到您的 MaterialApp 中


        localeResolutionCallback: (locale, supportedLocales) {
          for (final supportedLocale in supportedLocales) {
            if (supportedLocale.languageCode == locale.languageCode) {
              return supportedLocale;
            }
          }

          return supportedLocales.first;
        },

0
投票

希望以下代码片段对您有所帮助。

if(PhoneLang == "sv"){
   //Select Language Swedish
}else{

   //In any other cases Select Language English
}

0
投票

为未来的读者提供有关此问题的更多背景信息。当您将设备区域设置更改为另一种语言(en 或 sv 都不是)时,android 会将这个新区域设置推送到您支持的区域设置列表的顶部。

一个例子: A) 您的初始设备语言(按偏好顺序排列):[en、sv、de] B) 当您选择“de”时您的新设备语言:[de, en, sv]

Flutter 将分析整个设备语言列表,并选择您的应用程序支持的第一个语言。在示例中,如果您选择了“de”,flutter 将回退为“en”。同样,如果您的设备列表是 [de, sv, en],flutter 会选择“sv”。

一般来说,保留 flutter 处理它的方式是一个好主意,因为从用户的角度来看,它最有意义。

如果您设备的语言在受支持的区域设置列表中没有单个区域设置(例如 [de、ar、bn]),flutter 将默认为受支持的区域设置列表中指定的第一个区域设置(在您的情况下为“en”) 。 如果您想在索引 0 处使用不同的区域设置,您可以手动重新排列支持的区域设置列表,或者如果您使用的是 l10n,则可以通过指定以下方式让 flutter 为您完成任务:

preferred-supported-locales: - en

在您的 l10n.yaml 文件中

© www.soinside.com 2019 - 2024. All rights reserved.