Aller au contenu

multilangue


dargone

Recommended Posts

en fait le probleme, c'est que je veux mettre mes 500 noms de ville dans des listviews.

Comme une ville change de nom suivant la langue (par exemple bruxelles et brussels), je avoir des tableaux de strings différents par langue.

Il est quand même beaucoup plus facile de faire un listevilles.split() que d'aller récupérer 500 strings via une boucle, non?

Lien vers le commentaire
Partager sur d’autres sites

mais heu...les arrays sont gérés dans les strings.xml......

et le split est plus long que la boucle......

dans la bouclle:

pour chaque incrément

copier la chaine dans un tableau

dans le split:

parcourir la chaine

pour chaque caractère

tester le caractère

si c est le carac de split aller au prochain carac de plit

copier la chaine

le split est méchament plus consommateur .

Lien vers le commentaire
Partager sur d’autres sites

Tu peux pas les sérialiser et les sauver en tant que raw data ( ie dans res/raw ).

Je ne comprends pas tres bien ce que tu veux dire par "sérialiser" et le raw que je n'ai jamais utilisé...

En pratique' date=' comment utiliser:

serieA={"one","two","three",....."five hundred"};

serieF={"un","deux","trois",....."cinq cents"};

serieN={"een","twee","drie",....."vijf honderd"};[/quote']

Ce que je veux dire, c'est que tu prends ton tableau, tu le sauves en un fichier pour chaque langue ( avec un save/load de ce genre : http://www.vbforums.com/showthread.php?t=308145 ).

Tu mets alors ces fichiers dans des répertoires 'raw' localisés :

Raw-fr/MyFile

Raw-us/MyFle

Raw-es/MyFile

...

Et tu n'as qu'a charger le fichier 'raw/MyFile' pour charger automagiquement le fichier qui conviendra à la langue de l'utilisateur.

Emmanuel / Alocaly

Lien vers le commentaire
Partager sur d’autres sites

Salut,

Il est tout à fait possible de forcer dans l'application le changement de la langue en utilisant directement les strings.xml de la langue que vous voulez.

Voici le code que j'utilise dans mon application :


//lang est une String du style : "en", "fr", "nl"...le code international de la langue quoi
private void setLanguage(String lang)
{
       Locale locale = new Locale(lang);
       Locale.setDefault(locale);
       Configuration config = new Configuration();
       config.locale = locale;
       getBaseContext().getResources().updateConfiguration(config, this.getResources().getDisplayMetrics());
}

En principe en mettant cela dans l'Activity en question, le string.xml de la langue passé en paramètre sera chargé.

Ce code marche pour android 1.5 et pour 1.6. Cependant, j'ai eu des retours comme quoi ça ne fonctionne pas avec android 2.0 (en effet, l'activité se met alors à flasher, à clignoter). Ainsi pour que cette méthode marche avec les différentes versions d'Android, il faut penser à rajouter à chaque activité de l'application (dans le manifest.xml) l'option suivante :


android:configChanges="locale"

Voila, j'espère que ça sera utile :)

Lien vers le commentaire
Partager sur d’autres sites

@neoakira : oui cela utilisera le string.xml de la langue choisie sans pour autant affecter la langue du téléphone ou quoi d'autre que ce soit. Couple le tout avec des "preferences" qui stockent la dernière langue sélectionnée et te voila avec une application multilingue ;-)

Lien vers le commentaire
Partager sur d’autres sites

  • 2 weeks later...

je suis entrain de tester ca dans mon appli mais

getBaseContext().getResources().updateConfiguration(config, this.getResources().getDisplayMetrics());

ne fait jamais appel à

onConfigurationChanged  (Configuration newConfig)

que ce soit dans l'activité ou dans l'application du coup je sais pas comment on fait pour mettre à jour les view, et j'ai pas trouver comment "rebooter" une appli...

Lien vers le commentaire
Partager sur d’autres sites

J'ai pourtant essayé de faire un repertoire values-cn et tout semble OK,

mais quand je lance l'émulateur en chinois, tous mes textes sont dans la langue de base!

Values fonctionen tres bien

values-fr aussi

values-cn ne fonctionne pas, il prend les valeurs par défaut! Alors que tout le système est en chinois!!!

Modifié par Profete162
Lien vers le commentaire
Partager sur d’autres sites

  • 4 months later...
je suis entrain de tester ca dans mon appli mais

getBaseContext().getResources().updateConfiguration(config, this.getResources().getDisplayMetrics());

ne fait jamais appel à

onConfigurationChanged  (Configuration newConfig)

que ce soit dans l'activité ou dans l'application du coup je sais pas comment on fait pour mettre à jour les view, et j'ai pas trouver comment "rebooter" une appli...

C'est un vieux poste mais j'ai la solution si ça intéresse des gens qui passent par là ....

Dans les commentaires : http://www.tutorialforandroid.com/2009/01/force-localize-application-on-android.html

   private void setLanguage(String lang)
   {
       Locale locale = new Locale(lang);
       Locale.setDefault(locale);
       Configuration config = new Configuration();
       config.locale = locale;
       getBaseContext().getResources().updateConfiguration(config, this.getResources().getDisplayMetrics());

       this.finish();
       this.startActivity(getIntent());
   }

Bon c'est un peu barbare je le reconnais ... mais au moins ça marche....

Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...