1
votes

Définir la langue par défaut dans une application Flutter

J'essaie de prendre en charge plusieurs langues dans mes applications. Je souhaite prendre en charge deux langues dans mes applications: anglais (en) et bahasa (id). Mais je veux que mes applications utilisent le bahasa comme langue par défaut. J'ai essayé de le faire en utilisant le plugin easy_localization .

Voici du code de mon fichier main.app

return EasyLocalizationProvider(
      data: data,
      child: MaterialApp(
        debugShowCheckedModeBanner: false,
        title: APP_NAME,

        localizationsDelegates: [
          GlobalMaterialLocalizations.delegate,
          GlobalWidgetsLocalizations.delegate,
          //app-specific localization
          EasylocaLizationDelegate(
              locale: data.locale,
              path: 'assets/strings'
          ),
        ],
        navigatorKey: locator<NavigationService>().navigatorKey,

        supportedLocales: [ Locale('id', 'ID'), Locale('en', 'US')],
        locale: data.savedLocale,


        theme: ThemeData(
          primaryColor: KaskuColor.primary,
          accentColor: Color(0xFFCB0E00),
          fontFamily: PRIMARY_FONT_FAMILY,
          textTheme: TextTheme(
            headline: TextStyle(fontSize: 72.0, fontWeight: FontWeight.bold),
            title: TextStyle(fontSize: 36.0, fontStyle: FontStyle.italic),
            body1: TextStyle(fontSize: 14.0),
          ),
          primarySwatch: Colors.red,
          cursorColor: KaskuColor.primary,
          snackBarTheme: SnackBarThemeData(
            backgroundColor: KaskuColor.snackBarColor
          )
        ),

        home: Splashscreen(),
        routes: {


        },

      ),
    );

Est-ce que quelqu'un peut m'aider? Merci d'avance!


4 commentaires

Pouvez-vous s'il vous plaît clarifier votre problème. Votre langue par défaut ne fonctionne pas? Quelle est la langue de votre téléphone?


Mon téléphone utilise l'anglais comme langue par défaut. Donc, je ne peux pas forcer mes applications à utiliser une autre langue (Bahasa) même si mon téléphone utilise l'anglais comme langue par défaut?


Votre code ne fonctionne-t-il pas du tout ou utilisez-vous toujours l'anglais comme langue par défaut? Avez-vous implémenté un changeur de langue ou avez-vous essayé de changer la langue par défaut de votre téléphone pour voir si votre code fonctionne?


Je souhaite donc que mes applications utilisent le bahasa comme langue par défaut, pour l'utilisateur après la première installation, quelle que soit la langue définie sur son téléphone. J'ai implémenté le changement de langue sur mes applications, toujours en utilisant le package easy_localization, et cela fonctionne parfaitement. Mes applications utilisent toujours l'anglais par défaut, même le bahasa est défini sur mon téléphone.


3 Réponses :


1
votes

Avez-vous ajouté les dépendances pour utiliser les flutter_localizations? Pour utiliser le package de localisation, vous devrez utiliser le package flutter_localizations. Pour ce faire, vous devrez l'ajouter en tant que dépendance à votre fichier pubspec.yaml comme suit:

dependencies:
   flutter:
     sdk: flutter
   flutter_localizations:
     sdk: flutter

En outre, vous pouvez vous référer au lien et le vérifier là où vous rencontrez des difficultés. Aussi, excuses pour la réponse simple car je suis nouveau dans ce domaine, je n'ai pas été en mesure de commenter votre réponse. https://www.didierboelens.com/2018/04/internationalization---make-an-flutter-application-multi-lingual/


2 commentaires

J'utilise le package easy_localization, dois-je toujours utiliser flutter_localizations?


Je ne suis pas sûr du package easy_localization mais j'ai fait quelques recherches là-dessus. Vous pouvez vous référer à ce pub.dev/packages/easy_localization qui vous aidera dans votre réponse.



0
votes

Vous devez utiliser un rappel pour définir une langue par défaut. Dans votre widget MaterialApp, ajoutez localeListResolutionCallback comme suit: -

MaterialApp(
   ...

   localeListResolutionCallback: (locales, supportedLocales) {

      print('device locales=$locales supported locales=$supportedLocales');

      for (Locale locale in locales) {
         // if device language is supported by the app,
         // just return it to set it as current app language
         if (supportedLocales.contains(locale)) {
            return locale;
         }
      }

      // if device language is not supported by the app,
      // the app will set it to english but return this to set to Bahasa instead
      return Locale('id', 'ID');
   },

   supportedLocales: [Locale('id', 'ID'), Locale('en', 'US')],
   locale: localConfig.locale,
   ...
);


0 commentaires

0
votes

Le dernier package easy_localization (à partir de la version 2.2.1) fournit startLocale qui remplace les paramètres régionaux du périphérique.


0 commentaires