2011-01-18 4 views
4

J'ai besoin de développer une application qui fonctionne à la fois en anglais et en japonais.Code pour le support multilingue en android

J'ai besoin d'un changement de langue pour seulement mon application et reste toutes les autres applications de téléphone doivent être dans la langue par défaut.

S'il vous plaît me aider avec quelques extrait de code/apis à utiliser dans Android 2.2

+0

Que voulez-vous dire? Voulez-vous que votre application ne supporte que le japonais et l'anglais? ou devez-vous être en mesure de basculer entre l'anglais et le japonais avec votre application? –

Répondre

5

Localization est ce dont vous avez besoin!

Une grande partie de localisant une application fournit du texte alternatif pour des langues différentes. Dans certains cas , vous pouvez également fournir des graphiques, sons, mises en page, , ainsi que d'autres ressources spécifiques aux paramètres régionaux.

Une application peut spécifier de nombreux répertoires res // , chacun avec différents qualificatifs. Pour créer une ressource alternative pour une locale différente , vous utilisez un qualificateur qui spécifie une langue ou une combinaison de langue-région . (Le nom d'un répertoire des ressources doit être conforme au schéma de nommage décrit dans Fournir des ressources alternatives ou sinon il ne compilera pas.)

Exemple:

Supposons que votre langue par défaut de l'application est l'anglais . Supposons que vous souhaitez localiser tout le texte dans votre application en français, et la plupart du texte dans votre application (tout sauf le titre de l'application ) Japonais. Dans ce cas, vous pouvez créer trois fichiers strings.xml alternatifs, chaque stocké dans une ressource spécifique à la localisation répertoire:

  1. res/valeurs/strings.xml contient du texte anglais pour toutes les chaînes l'application utilise, , y compris le texte pour une chaîne nommée titre.
  2. res/values-fr/strings.xml Contenir le texte français pour toutes les chaînes, y compris le titre.
  3. res/values-ja/strings.xml Contient du texte japonais pour toutes les chaînes à l'exception du titre.

Si votre code Java fait référence à R.string.title, voici ce qui va se passer à l'exécution :

* If the device is set to any language other than French, Android 

chargera le titre de la res/valeurs/fichier strings.xml. * Si l'appareil est en français, Android chargera le titre du fichier res/values-fr/strings.xml.

Notez que si l'appareil est réglé sur japonais, Android va chercher le titre dans la résolution/valeurs-ja/fichier strings.xml. Mais parce qu'aucune chaîne est incluse dans ce fichier, Android retombera par défaut, et chargera le titre en anglais de la res/valeurs/fichier strings.xml.

Pour modifier la localisation de votre application, vous pouvez utiliser le code suivant:

Resources res = getResources(); 
Configuration newConfig = new Configuration(res.getConfiguration()); 
// newConfig.locale = Locale.TRADITIONAL_CHINESE; 
newConfig.locale = Locale.ENGLISH; 
res.updateConfiguration(newConfig, null); 
+0

Mais la localisation doit changer la langue du téléphone dont je n'ai besoin que pour changer la langue de l'application change – ruby

+0

@ruby: Donc le vrai problème n'est pas la localisation de votre application changer les paramètres régionaux uniquement dans la portée de l'application et non dans la portée du téléphone? – RoflcoptrException

+0

@ruby J'ai mis à jour la réponse pour couvrir également ce point – RoflcoptrException

0

Il suffit de mettre simple déroulant en anglais et en japonais si vous sélectionnez l'anglais utilisez la code.And suivante Ne pas oublier d'ajouter les différentes chaînes avec le dossier de valeurs particulières pour par exemple. valeurs-es

 String languageToLoad = "es"; 
     Locale locale = new Locale(languageToLoad); 
     Locale.setDefault(locale); 
     Configuration config = new Configuration(); 
     config.locale = locale; 
     getBaseContext().getResources().updateConfiguration(config, 
     getBaseContext().getResources().getDisplayMetrics()); 

Et pour Japnese remplacer la chaîne languageToLoad avec le code Japnese comme (ja-jp).

Questions connexes