2010-09-14 4 views
2

J'ai remarqué que dans ma nouvelle application Rails 3.0, toutes les chaînes i18n allemandes sont converties en minuscules (à l'exception de la première lettre).Rails i18n chaînes auto-minuscules?

Quand ayant une chaîne comme ceci:

de: 
    email: "E-Mail" 

la sortie est toujours comme "E-mail". Même histoire avec toutes les autres chaînes - les majuscules dans une phrase sont automatiquement converties en minuscules.

Est-ce le comportement par défaut que je dois désactiver ou y a-t-il un autre problème? J'ai correctement défini les paramètres régionaux, car ces chaînes fonctionnent réellement.

Merci pour votre aide

Arne

Répondre

11

Il devrait y avoir aucune modification au contenu que vous spécifiez dans le cadre du processus d'internationalisation. Il semble que quelque chose appelle humanize sur la chaîne avant sa sortie. Certaines des méthodes standard d'assistance de Rails font ceci je crois. Si vous venez de sortir la traduction en utilisant t('email'), vous devriez voir 'E-Mail' correctement.

Mise à jour: De vos commentaires, il semble que ce soit l'étiquette qui cause le problème. Si vous spécifiez explicitement le texte pour l'étiquette plutôt que de vous fier au comportement par défaut, vous obtiendrez la traduction exactement comme vous le spécifiez. Donc,

<%= f.label(:email, t('email')) %> 

devrait générer le bon libellé à partir des traductions.

Cependant, ce n'est pas idéal. Je pense que vous pouvez également rencontrer des problèmes avec les messages d'erreur de validation générés.

+0

Merci pour votre réponse. Peut-être que tu as raison. J'ai vérifié encore et il semble que c'est toujours en minuscules lors de l'utilisation de la chaîne dans une étiquette. <% = t ('email')%> donne le bon, mais <% = f.label t ('user.remember_me')%> le met en minuscule. Hmmm. – arnekolja

+0

Vérifié l'API. def label appelle def label_tag, qui se traduit par humanize. Hmmm, il semble qu'il n'y a aucun moyen de contourner le problème pour les étiquettes, n'est-ce pas? – arnekolja

+0

J'ai mis à jour ma réponse. On dirait que vous pouvez spécifier le texte pour l'étiquette manuellement. – Shadwell

2

J'ai le même problème. résolu en ajoutant le suffixe _html à la clé de traduction I18n. il semble que l'utilisation de ce suffixe supprime l'utilisation humanize.