Généralement, sur de nombreuses plates-formes, j'écris mes ressources de chaîne dans un fichier .resx ou .xml, puis je les utilise en utilisant une approche dépendante de la plate-forme.
Autrement dit, sur iOS, je les obtiens via NSBundle.MainBundle
et en utilisantContext.Resources
sur Android.
Quels sont les avantages de cette approche, et pourquoi ne pas l'avoir directement accessible dans le code, par exemple:
Dans un projet multiplateforme, n'importe quelle plateforme peut y accéder directement, sans intégration.
Il n'y a pas de soucis lors de la construction pour savoir si les ressources ont bien été construites.
- Le codeur peut utiliser des fonctionnalités telles que la gestion multilingue
Pour faire court: quelle est la raison pour laquelle les ressources de chaîne sont structurées de cette façon?
[Éditer]
Disons que mon fichier fait partie d'un projet "core" partagé entre d'autres projets. (Pensez à une structure de fichiers de projet multiplateforme PCL.)
Et supposons que mon fichier soit totalement similaire à un fichier .resx / .xml, ressemblant à ceci (je ne suis pas un pro en xml, désolé!): Paramètres Paramètres
Donc, il s'agit essentiellement d'un xml personnalisé, où vous pointez sur la clé / langue pour obtenir la chaîne appropriée.
Le fichier ferait partie de l'application, tout comme vous ajoutez n'importe quel fichier accessible dans une application, et le système pour accéder aux ressources de chaîne, codées à l'aide de PCL. Cela ajouterait-il des frais généraux aux applications?
la source
Réponses:
Localisation et internationalisation,
Garder les chaînes externes leur permet de changer (lire: traduit) sans avoir besoin de recompiler (juste un nouveau lien au maximum, et simplement déposer dans un nouveau dossier au mieux).
la source
Si vous avez un fichier qui contient uniquement les ressources de chaîne, vous pouvez donner le fichier de ressources à une agence de traduction ou quelque chose comme ça et obtenir une traduction. Je suppose que vous pouvez imaginer à quel point cela pourrait devenir difficile si vous deviez donner beaucoup de fichiers de code à un profane pour faire une traduction (en plus de ne pas vouloir donner votre code à qui que ce soit).
la source
En plus de l'internationalisation / localisation, la séparation de chaînes de texte comme celle-ci permet également à un relecteur de soumettre des corrections d'orthographe / grammaire / ponctuation qui sont isolées
messages.${LOCALE}
, sans avoir à toucher à un véritable fichier de code source. Vous pouvez avoir un black-out sur les modifications de code, mais acceptez ces corrections de texte. Si vous acceptez des modifications simultanées à la fois du code et des messages, les conserver séparés facilite la fusion des correctifs, à condition que les modifications de code ne redéfinissent aucun message qui existait lors de la vérification du correcteurmessages.en_US
.De plus, selon la façon dont il est implémenté, il peut même ne pas être nécessaire de relier l'application. Le code peut simplement saisir la ligne 138 de
messages.${LOCALE}
pour un message particulier, le numéro de ligne étant déterminé au moment de l'exécution.la source
C'est juste la façon dont votre langue / plateforme a décidé d'implémenter la localisation des chaînes. Toutes les approches de localisation nécessitent une sorte de fichiers de ressources externes pour obtenir les traductions. Le principal problème est la façon dont vous maintenez ces ressources.
Il semble que vous ayez besoin de gérer ces fichiers de ressources manuellement , ce qui peut représenter un lourd fardeau. Cela complique également le partage de chaînes répétées. Et devoir le faire lorsque vous expédiez actuellement une seule langue est encore plus un fardeau.
Une alternative courante est l' approche GNU Gettext qui consiste simplement à baliser les chaînes traduisibles dans le code source et à extraire automatiquement ces chaînes dans des fichiers PO standard qui fonctionnent bien entre plusieurs plateformes et plusieurs langues. Du point de vue du développeur, il bat la maintenance manuelle des fichiers de ressources XML tous les jours.
la source