web-dev-qa-db-fra.com

L'apostrophe n'est pas traduite correctement lorsqu'elle est placée dans un regroupement de ressources

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?

81
user339108

Vous devez échapper à la citation unique comme

key = {0}''s brush is {1} centimeters tall
114
Raghuram

Je crois fermement que le problème n'est pas le bundle de ressources mais le MessageFormater que vous utilisez pour imprimer le message:

De MessageFormater Java doc :

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
31
Ralph

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}' ''".

6
Aravind R. Yarram

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.

5
Nestor Milyaev

Vous devez doubler le guillemet simple, c'est-à-dire que le pinceau de {0} 'mesure {1} centimètres de haut

5
Samuel Parsonage

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.

5
sorrymissjackson

Pensez à utiliser le plug-in de l'éditeur de propriétés (pour Eclipse)

http://propedit.sourceforge.jp/index_en.html

2
Danubian Sailor

Pour tous ceux qui ont des problèmes Android dans le fichier string.xml, utilisez\'\' au lieu d'un guillemet simple.

1
Uriel Frankel