web-dev-qa-db-fra.com

Android Bundle d'applications avec modification des paramètres régionaux dans l'application

J'ai un problème avec AAB lorsque je dois changer les paramètres régionaux de l'application à partir de l'application elle-même (c'est-à-dire avoir le paramètre de changement de langue à l'intérieur de l'application), le problème est que l'AAB ne me donne que les ressources linguistiques de mon appareil, par exemple:

mon appareil est équipé de langues anglaise et française, donc AAb ne me donne que les ressources pour l'anglais et le français,

mais depuis l'application elle-même, vous avez la possibilité de basculer la langue entre l'anglais, le français et l'indonésien,

dans ce cas, lorsque vous changez la langue en anglais ou en français, tout fonctionne parfaitement, mais lorsque vous la changez en indonésien, l'application entre simplement dans une boucle de blocage car elle continue de chercher la langue indonésienne mais elle ne la trouve pas.

Le problème ici est que même si j'ai redémarré l'application, elle entre à nouveau dans la boucle de crash car l'application recherche toujours les ressources linguistiques manquantes, et ici la seule solution est d'effacer l'argent ou de réinstaller quelles sont les solutions que l'utilisateur normal a gagnées ne passe pas.


Juste pour le mentionner, voici comment je change les paramètres régionaux via l'application:

    // get resources
    Resources res = context.getResources();
    // create the corresponding locale
    Locale locale = new Locale(language); // for example "en"
    // Change locale settings in the app.
    Android.content.res.Configuration conf = res.getConfiguration();
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
        conf.setLocale(locale);
        conf.setLayoutDirection(locale);
    } else {
        conf.locale = locale;
    }
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        context.getApplicationContext().createConfigurationContext(conf);
    }
    res.updateConfiguration(conf, null);

P.S. L'application fonctionne parfaitement lors de sa création en tant que fichier APK.

21
Muhammed Refaat

Modifier:

L'API PlayCore prend désormais en charge le téléchargement des chaînes pour une autre langue à la demande: https://developer.Android.com/guide/app -bundle/playcore # lang_resources

Solution alternative (déconseillée):

Vous pouvez désactiver le fractionnement par langue en ajoutant la configuration suivante dans votre build.gradle

Android {
    bundle {
        language {
            // Specifies that the app bundle should not support
            // configuration APKs for language resources. These
            // resources are instead packaged with each base and
            // dynamic feature APK.
            enableSplit = false
        }
    }
}

Cette dernière solution augmentera la taille de l'application.

25
Pierre

Cela n'est pas possible avec les packs d'applications: Google Play ne télécharge les ressources que lorsque les langues sélectionnées de l'appareil changent.

Vous devrez utiliser des fichiers APK si vous souhaitez disposer d'un sélecteur de langue dans l'application.

3
ianhanniballake