La localisation est plus que la simple traduction des chaînes de votre application dans d'autres langues. Cela implique également l'affichage de données, telles que les dates et les heures, dans le bon format pour vos utilisateurs. Même si vous voulez seulement une version anglaise de votre application, il est bon de savoir en quoi consiste la localisation. De cette façon, vous serez prêt si vous décidez d'ajouter le support pour des paramètres régionaux supplémentaires et vous n'aurez pas à rechercher des chaînes et des valeurs dans la base de code de votre application..
Avec le SDK Android, la langue des chaînes localisées et le format utilisé pour afficher les valeurs dépendent des paramètres régionaux du périphérique. La localisation est une combinaison de la langue et du pays. La langue est définie par le ISO 639-1 norme alors que le pays est défini par le ISO 3166-1 la norme. Cela signifie que les paramètres régionaux Android sont compatibles avec la culture ou les paramètres régionaux utilisés par la plupart des autres langages de programmation et infrastructures..
Les seuls paramètres régionaux garantis sur tous les appareils Android sont Anglais comme dit dans le États Unis. Il est représenté par le en_US code, avec enétant le code de langue pour l'anglais et NOUS étant le code de pays pour les États-Unis. Vous pouvez également utiliser le encode de langue seulementen tant que lieu pour représenter tous les pays et régions anglophones.
Pour localiser une application pour une langue ou pour un pays et une langue spécifiques, vous devez inclure les ressources de cette région dans la / res dossier de votre application. Cela inclut généralement des ressources de chaîne dans la / res / valeurs dossier, mais il peut également inclure d'autres types de ressources, telles que des images et des mises en page. Le SDK Android identifie les différentes ressources alternatives avec des qualificateurs de configuration, qui sont ensuite utilisés pour nommer le dossier contenant ces ressources. Le qualificateur de configuration pour les paramètres régionaux est le code de langue, suivi éventuellement du code de pays..Ainsi, les ressources de chaîne localisées pour votre application doivent être dans la/res / valeurs-
N'oubliez pas que les ressources identifiées par un qualificatif de configuration pour des paramètres régionaux spécifiques ont priorité sur la plupart des autres ressources. Parmi les autres qualificatifs de configuration courants pour les ressources de priorité inférieure, figurent la taille de l'écran et la densité de pixels de l'écran, afin de décrire différentes dispositions en fonction de la taille de l'écran. Seules les ressources identifiées avec un qualificateur de configuration de code de pays mobile (MCC) ont une priorité supérieure à celle des ressources de chaîne identifiées avec un qualificateur de configuration de paramètres régionaux. Le code de pays du mobile est utilisé pour définir les ressources pour un pays. Celui-ci peut éventuellement être suivi du code de réseau mobile (MNC) d'une carte SIM afin de cibler un fournisseur de téléphonie mobile spécifique dans ce pays. Il est utilisé pour fournir du contenu spécifique à un pays, comme un contrat ou une politique de confidentialité..
Chaque application Android devrait avoir toutes ses ressources de chaîne dans le /res/values/strings.xml fichier. Cela permet la réutilisation des chaînes dans votre application même si aucune localisation n'est nécessaire. En outre, si aucun fichier n'est disponible pour les paramètres régionaux actuels du périphérique, cela le fichier est utilisé. Si vous n'en avez pas et que votre application tente d'accéder à une ressource chaîne uniquement disponible dans un répertoire. strings.xml fichier spécifique à un environnement local, votre application se plantera sans avertissement car les ressources sont chargées au moment de l'exécution et non lors de la compilation.
UNE strings.xml fichier spécifique à une locale n'a pas besoin d'avoir toutes les ressources de chaîne du /res/values/strings.xml fichier. Cela signifie que si une ressource, comme le nom de votre application, n'a pas besoin d'être localisée, vous n'avez pas besoin de l'inclure dans tous les fichiers de chaînes..
Au moment de l'exécution, le /res / valeurs-
Par exemple, si vous souhaitez localiser votre application pour toutes les régions et tous les pays francophones sans cibler une cible spécifique, vous placez les chaînes de cette application dans la liste. / res / valeurs-fr /strings.xml fichier. Toutefois, si vous souhaitez localiser des chaînes avec une orthographe spécifique au français tel qu’écrit en France, vous devez les mettre dans la liste. /res/values-fr-rFr/strings.xml fichier. Assurez-vous d'ajouter le r avant le code de pays dans le nom du dossier ou il ne sera pas trouvé au moment de l'exécution lorsque l'application est localisée.
Voici un exemple de / res / valeurs /strings.xml fichier avec quelques ressources de chaîne en anglais:
Démo de localisation Android Bonjour le monde! Bonjour% s!
Et voici un / res / valeurs-fr /strings.xmlfichier avec les mêmes ressources en français:
Démo de localisation Android Bonjour le monde! Bonjour% s!
Les chaînes de vos mises en page doivent être des ressources de chaîne. En fait, un avertissement Lint est affiché si une chaîne est codée en dur. Vous pouvez utiliser des ressources partout où vous souhaitez définir des chaînes dans des mises en forme. Les ressources de chaîne sont identifiées par @chaîne/
suivi du nom de la ressource de la strings.xml fichier. Ce qui suit affiche les Bonjour le monde
chaîne de l'exemple précédent dans un Affichage
en fonction de la localisation de l'appareil:
Cela montre "Bonjour le monde!"sur un appareil Android défini sur un environnement linguistique incluant la langue française. Pour tous les autres pays, le "Hello world!" la chaîne est montrée.
Vous devrez également localiser les chaînes à partir de votre code si vous créez ou modifiez des contrôles en dehors de vos dispositions. Pour localiser ces chaînes, vous devez d’abord obtenir le android.content.res.Resources
objet qui contient toutes les ressources du package de l'application pour le contexte actuel. Vous appelez ensuite le getString
méthode sur cet objet, en passant l'identifiant de la chaîne à afficher. Par exemple, le bloc de code suivant vous montre comment définir le texte d’un Affichage
objet:
// Récupère la chaîne traduite à partir de la chaîne android.content.res.Resources res = context.getResources (); String helloWorld = res.getString (R.string.hello_world); // Définit la chaîne sur textview TextView helloTextView; helloTextView = (TextView) findViewById (R.id.hello_world_textview); helloTextView.setText (helloWorld);
Des chaînes plus complexes, avec un ou plusieurs composants variables, vous devez utiliser des chaînes de format. Les chaînes de format vous permettent de spécifier les valeurs des paramètres à afficher. Les paramètres de la chaîne de format sont identifiés par des spécificateurs de format. Le spécificateur de format le plus couramment utilisé est % s
, représentant une chaîne. En fait, toutes les chaînes de format de la java.util.Formatter
classe sont disponibles. De plus, si plusieurs paramètres sont requis, vous devez numéroter vos spécificateurs de format. Dans le cas des spécificateurs de format de chaîne, le premier doit être % 1 $ s
, la deuxième % 2 $ s
, etc.
Une fois les chaînes de format spécifiées, vous utilisez le String.format
méthode pour transmettre les paramètres à afficher à votre chaîne. Voici comment définir le texte à afficher dans un Affichage
avec le hello_world_name
chaîne de format de la strings.xml fichier. Cette chaîne de format comprend un spécificateur de format pour le nom de l'utilisateur:
// Récupère la chaîne de format android.content.res.Resources res = context.getResources (); String helloFormatString = res.getString (R.string.hello_world_name); String userName = "Bob"; // Insère le nom dans la chaîne de format String helloWorldName = String.format (helloFormatString, userName); // Définit le texte de la vue texte TextView helloTextView; helloTextView = (TextView) findViewById (R.id.hello_world_textview); helloTextView.setText (helloWorldName);
Cela montre le "Bonjour Bob!"chaîne pour un appareil Android avec une locale qui inclut la langue française. "Hello Bob!" Pour tous les autres pays la chaîne est montrée.
Si les chaînes de votre application sont déjà localisées, votre application est déjà en assez bonne forme. Toutefois, vous devrez peut-être indiquer les dates et heures à l'utilisateur dans de nombreux cas. Ces dates et heures doivent également être adaptées à la localisation actuelle du périphérique. Heureusement, le SDK Android inclut des classes qui mettent en forme les dates et les heures en fonction des paramètres régionaux..
Dans le SDK Android, les dates et heures sont gérées par le Rendez-vous amoureux
classe de la java.util
espace de noms. La date et l'heure actuelles de l'appareil sont renvoyées par le java.util.Calendar
.
Les dates peuvent être formatées à l'aide d'une instance de Format de date
formateur de la java.text
espace de noms. Vous devez utiliser le Format de date
classe du SDK Android dans le android.text.format
namespace pour obtenir le bon formateur pour les paramètres régionaux du périphérique. L'extrait de code suivant montre comment obtenir une chaîne avec la date actuelle formatée pour les paramètres régionaux du périphérique:
// Obtient la date et l'heure actuelles Date currentDate = Calendar.getInstance (). GetTime (); // Obtient le formateur de date standard pour les paramètres régionaux en cours du périphérique // java.text.DateFormat dateFormat; dateFormat = android.text.format.DateFormat.getDateFormat (this); // Formate la date actuelle en fonction des paramètres régionaux String formattedCurrentDate = dateFormat.format (currentDate);
Si les paramètres régionaux actuels du périphérique sont l'anglais tel qu'il est parlé aux États-Unis, la chaîne contiendra la date actuelle dans un format de date court., 30/11/2014. le Format de date
La classe comprend quelques autres formats de date. Par exemple, le getLongDateFormat
méthode retourne un format de date long, Dimanche 30 novembre 2014.
Depuis les temps sont représentés comme Rendez-vous amoureux
objets par le SDK Android, ils doivent également être affichés à l'aide d'un formateur renvoyé par le Format de date
classe de la android.text.format
espace de noms. le getTimeFormat
La méthode retourne un format qui n'affiche que l'heure d'un Rendez-vous amoureux
objet. L'extrait de code suivant montre comment obtenir une chaîne avec l'heure actuelle formatée pour les paramètres régionaux du périphérique:
// Obtient la date et l'heure actuelles java.util.Date currentDate = Calendar.getInstance (). GetTime (); // Obtient un formateur de date pour les paramètres régionaux en cours du périphérique // qui affiche les heures. java.text.DateFormat timeFormat; timeFormat = android.text.format.DateFormat.getTimeFormat (this); // Formate l'heure actuelle en fonction des paramètres régionaux String formattedTime = timeFormat.format (currentDate);
Si les paramètres régionaux actuels du périphérique sont l'anglais tel qu'il est parlé aux États-Unis, la chaîne contiendra l'heure actuelle au format suivant., 20h15.
Il est important de ne localiser que les chaînes utilisées dans l'interface utilisateur de l'application. Par exemple, il n'est pas nécessaire de localiser les messages de débogage utilisés uniquement pendant le développement ou à des fins de diagnostic. Notez également que vous ne devez pas écrire les dates et heures localisées sur le disque ou dans une base de données. Non seulement la localisation d'un périphérique peut-elle changer, mais l'utilisation de dates et d'heures localisées rend le développement inutilement difficile et complexe.