L'apostrophe n'est pas traduite correctement lorsqu'elle est placée dans un regroupement de ressources.
key = {0}'s brush is {1} centimeters tall
(e.g. Sam's brush is 4 centimeters tall)
L'apostrophe est manquée si je formate la clé ci-dessus à partir d'un Java.util.ResourceBundle
Quel pourrait être le problème ici?
Vous devez échapper à la citation unique comme
key = {0}''s brush is {1} centimeters tall
Je crois fermement que le problème n'est pas le bundle de ressources mais le MessageFormater que vous utilisez pour imprimer le message:
Dans une chaîne, '' ( deux guillemets simples ) représente un guillemet simple. Un QuotedString peut contenir des caractères arbitraires à l'exception des guillemets simples; les guillemets simples environnants sont supprimés. Une chaîne UnquotedString peut contenir des caractères arbitraires, sauf les guillemets simples et les accolades à gauche. Ainsi, une chaîne qui devrait aboutir au message formaté '{0}' peut être écrite comme '' '{' 0} '' ou '' '{0}' ''.
Vous devez donc écrire:
{0}''s brush is {1} centimeters tall
Regardez le javadoc ici
Dans une chaîne, "'" "représente une seule citation. Un QuotedString peut contenir des caractères arbitraires à l'exception des guillemets simples; les guillemets simples environnants sont supprimés. Une chaîne UnquotedString peut contenir des caractères arbitraires, sauf les guillemets simples et les accolades à gauche. Ainsi, une chaîne qui devrait aboutir au message formaté "'{0}'" peut être écrite comme "'' '{' 0} ''" ou "'' '{0}' ''".
Si vous êtes complètement bloqué, comme je l'ai été (aucun des éléments ci-dessus n'a fonctionné), vous pouvez remplacer le signe d'apostrophe par son Unicode:\u0027. N'oubliez pas que vous êtes toujours autorisé à utiliser le symbole UTF dans votre fichier de propriétés.
Vous devez doubler le guillemet simple, c'est-à-dire que le pinceau de {0} 'mesure {1} centimètres de haut
Ajout à la réponse de @ Ralph: Vous vous rendrez compte que c'est une chose MessageFormat
lorsque vous avez un texte comme
text1=It's too late
versus
text2={0}''s too late
text1
ne passerait probablement pas par un MessageFormater (par exemple, spring a des chemins de code différents si des arguments sont passés ou non), tandis que text2
voudrais. Donc, si vous avez utilisé deux guillemets simples dans text1
, ils peuvent/s'afficheront comme tels. Vous devrez donc vérifier si les arguments sont formatés ou non et utiliser un ou deux guillemets simples en conséquence.
Pensez à utiliser le plug-in de l'éditeur de propriétés (pour Eclipse)
Pour tous ceux qui ont des problèmes Android dans le fichier string.xml, utilisez\'\' au lieu d'un guillemet simple.