2009-03-06 3 views
1

Je travaille sur la localisation de logiciels Java, et mes projets ont à la fois des fichiers .properties et des ressources XML. Nous utilisons actuellement des commentaires pour demander aux traducteurs de ne pas traduire certaines chaînes, mais le problème avec les commentaires est qu'ils ne sont pas lisibles par machine.Comment désigner des ressources comme ne pas traduire?

La seule solution à laquelle je peux penser est de préfixer chaque clé de non-traduction avec quelque chose comme _DNT_ et de former nos outils de traduction pour ignorer ces entrées. Est-ce que quelqu'un a une meilleure idée?

Répondre

4

Pourriez-vous diviser les fichiers en fichiers à traduire ou ceux à ne pas traduire et ne leur envoyer que ceux qui doivent être traduits? (Je ne sais pas si la structure har dto savoir quand répondre si cela est pratique ...)

+0

Oui, nous pourrions déplacer les chaînes ne traduisent pas dans leurs propres fichiers qui restent là où ils sont. Le problème avec ceci est que vos ressources deviennent désorganisées. Pas la pire chose au monde, cependant. Merci –

+0

Solution de faible technologie difficile pour les traducteurs de se tromper :-) Les ressources sont-elles en ResourceBundle? – TofuBeer

+0

Oui. Le problème est que nous avons des outils pour pré-traiter les fichiers avant de les envoyer. J'analyse toutes les ressources et n'envoie que les chaînes anglaises nouvelles/modifiées, donc je veux ignorer toutes les chaînes de do-not-translate. –

0

Comme axelclk a écrit dans son lien ... Eclipse fournissent une

// $ NON-NLS-1

$

Déclaration de notifier le projet que la première chaîne dans cette ligne ne doit pas traduire. Toute autre chaîne que vous pouvez trouver en appelant Source-> Externaliser les chaînes

Les chaînes externes incluent toutes les langues que vous voulez prendre en charge.

fichier qui comprennent les traductions ressemblant à: PluginPage.Error1 = text1 PluginPage.Error2 = texte2

classe qui lu la traduction

private static final String BUNDLE_NAME = "com.plugin.name"; //$NON-NLS-1$ 

    private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME); 

    private PluginMessages() { 
    } 

    public static String getString(String key) { 
     // TODO Auto-generated method stub 
     try { 
      return RESOURCE_BUNDLE.getString(key); 
     } catch (MissingResourceException e) { 
      return '!' + key + '!'; 
     } 
    } 

Et vous pouvez l'appeler comme:

String msg = PluginMessages.getString("PluginPage.Error2"); //$NON-NLS-1$ 

EDIT:

Lorsqu'une chaîne est externalisée et que vous souhaitez utiliser la chaîne d'origine, vous pouvez supprimer la chaîne externalize de tous les fichiers de propriétés, sans la chaîne par défaut. Lorsque l'ensemble ne peut pas trouver un fichier de message correspondant à la langue locale, la valeur par défaut est utilisée.

Mais cela ne fonctionne pas à l'exécution.

+0

Merci. C'est un peu différent, en ce sens que vous demandez à l'outil d'externalisation de chaîne de ne pas externaliser certaines chaînes. Ma question est comment les marquer comme ne pas traduire après qu'ils ont été externalisés. –

+0

Oh ... je vous ai mal compris. Merci pour votre commentaire –

0

La solution la plus simple consiste à ne pas mettre des chaînes de non-traduction (DNT) dans vos fichiers de ressources.

.properties fichiers n'offrent pas beaucoup de la manière de la gestion des métadonnées, et puisque vous n'avez pas besoin des données lors de l'exécution, sa présence dans .properties fichiers seraient un effet secondaire plutôt que quelque chose c'est souhaitable. Considérez aussi les DNT partiels où vous avez quelque chose qui ne peut pas être traduit contenu dans une chaîne traduisible (par exemple un nom de marque ou un URI).

"IDENTIFIER english en en en" -> "french fr IDENTIFIER fr fr" 

Pour autant que je sache, même des normes comme XLIFF ne prennent pas DNT en considération et que vous aurez à les gérer grâce à des fichiers de métadonnées personnalisés, terminology files et/ou des commentaires (tels que l'élément note dans XLIFF).

0

Si vous décidez d'utiliser des commentaires non traduits dans vos fichiers de propriétés, je vous recommande de suivre le Eclipse convention. Ce n'est rien de spécial, mais la vie sera plus facile si nous utilisons tous la même chaîne magique!

(Eclipse ne supporte pas réellement DO-NOT-TRADUIRE encore de commentaires, pour autant que je sache, mais Tennera Ant-Gettext a une mise en œuvre du schéma ci-dessus qui est utilisé lors de la conversion de faisceaux de ressources pour getText fichiers PO.)

Questions connexes