Nous développons une grande application, composée de nombreux petits packages. Chaque package possède son propre ensemble de fichiers de ressources pour la localisation.
Quelle est la meilleure approche pour organiser et nommer les chaînes de localisation?
Voici mes pensées jusqu'à présent:
Gestion des doublons
Le même texte (par exemple, "Code postal") peut apparaître plusieurs fois dans un package donné. L'instinct de programmation (DRY) me dit de créer une ressource de chaîne unique partagée par toutes les occurrences .
Là encore, un traducteur peut vouloir choisir une traduction longue ("Postleitzahl") à certains endroits et une plus courte ("PLZ") à des endroits avec moins d'espace. Ou nous pouvons décider d'ajouter un deux-points à certaines occurrences ("Code postal:"), mais pas à d'autres. Ou nous pouvons exiger une capitalisation différente ("code postal") à certains endroits. Tous ces arguments pointent vers la création d' une ressource par utilisation, même si leur contenu est identique .
Appellation
Si nous visons à éliminer les doublons, il est logique de nommer les ressources par contenu , peut-être en faisant allusion au type d'utilisation via le préfixe. Nous pouvons donc avoir labelOK
= "OK" , messageFileTooLarge
= "Le fichier dépasse la taille maximale du fichier." et labelZipCode
= "Code postal" .
La dénomination par contenu présente l'avantage de gérer naturellement les arguments de format: la ressource messageFileHas_0_MBWhileMaximumIs_1_MB
prend clairement deux arguments de formatage, la taille réelle du fichier et la taille maximale du fichier.
Cependant, si nous autorisons les doublons, la dénomination en fonction du contenu n'a aucun sens. Afin d'obtenir des noms de ressources uniques, nous devons en quelque sorte inclure le lieu d'utilisation dans le nom de la ressource. Cela fonctionne pour les contrôles graphiques, bien que les identifiants aient tendance à être un peu longs: fileSelectionConfirmationButtonText
= "OK" , customerDetailsTableColumnZipCode
= "Zip Code" . Cependant, pour les fichiers de code non visuels, cela devient plus difficile. Comment nommez-vous une utilisation spécifique d'une chaîne si vous ne savez pas où elle sera finalement affichée? Par fichier de code et nom de fonction? Cela me semble plutôt maladroit et cassant.
Dans l'ensemble, je penche pour autoriser les doublons, mais j'ai du mal à trouver un schéma de nommage cohérent qui prend en charge cela.
Edit: Cette question a deux aspects: comment organiser les ressources (DRY vs doublons) et comment les nommer . Jusqu'à présent, les réponses se sont concentrées sur le premier aspect. J'apprécierais quelques commentaires concernant les conventions de dénomination!