трепетать! О получении настроек языка телефона? - PullRequest
2 голосов
/ 30 апреля 2020

Я хочу получить язык местного мобильного телефона, упрощенный китайский или английский sh, но функция localeResolutionCallback всегда возвращает en при ios, но мобильный телефон упрощенный китайский, как решить эту проблему?

информация о флаттере:

Flutter (Channel stable, v1.12.13+hotfix.9, on Mac OS X 10.15.3 19D76,
    locale zh-Hans-CN)

[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
[✓] Xcode - develop for iOS and macOS (Xcode 11.4.1)
[✓] Android Studio (version 3.6)
[!] IntelliJ IDEA Community Edition (version 2020.1)
    ✗ Flutter plugin not installed; this adds Flutter specific functionality.
    ✗ Dart plugin not installed; this adds Dart specific functionality.
[!] VS Code (version 1.44.2)
    ✗ Flutter extension not installed; install from
      https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter
[✓] Connected device (1 available)

Недавно созданное приложение также имеет эту проблему:

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
      supportedLocales: [//传入支持的语种数组
        const Locale('en', 'EN'), // English
        const Locale('zh', 'CN'), //
      ],
      localeResolutionCallback: (locale, locales) {
        print('cacasasc, ${locale.languageCode} ${locales}');
        if (locale.languageCode == 'zh') {
          return Locale('zh', 'CN');
        } else {
          return Locale('en', 'EN');
        }
      },
    );
  }
}

log:

flutter: cacasasc, en

1 Ответ

0 голосов
/ 30 апреля 2020

Это должно нормально работать на Android.

Для IOS вам нужно сделать что-то очень простое. Откройте Info.plist, который находится в project_name/ios/Runner/Info.plist и добавьте языки, которые вы хотите поддерживать, например, так:

  <key>CFBundleLocalizations</key>
  <array>
    <string>English</string>
    <string>es</string>
    <string>zh</string>
  </array>

Итак, каждый язык будет находиться между строковыми тегами, а весь код будет выше <key>CFBundleIdentifier</key> .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...