El segundo tiene más posibilidades de estar en lo cierto. Cuándo capitalizar y cuándo no depende de la localidad, por lo que no puede saber si t(:hello).capitalize
arrojará un resultado correcto sin mirar el contexto circundante. Un enfoque mejor que cualquiera sería incluir el contexto en el símbolo, algo como esto:
t(:hello_button)
y luego en su YAML Inglés:
hello_button: "Hello"
De esa manera las traducciones pueden utilizar cualquier caso es apropiado para el idioma en cuestión. Además, a veces el inglés usará la misma palabra para dos cosas cuando otros idiomas usarán palabras diferentes: considere naranja el color y naranja la fruta; de ahí la importancia del contexto en sus traducciones.
Además, capitalize
solo funciona con caracteres ASCII a menos que usted lanza una mb_chars
en la mezcla:
> 'µ'.capitalize
=> "µ"
> 'µ'.mb_chars.capitalize.to_s
=> "Μ"
es posible que no se encuentran con un líder µ
pero simples acentos en el principio de las palabras son bastante comunes:
> 'éclair'.capitalize
=> "éclair"
> 'éclair'.mb_chars.capitalize.to_s
=> "Éclair"
Esto simplemente está arañando la superficie de las dificultades que enfrentará al asumir que todos los idiomas se comportan como en inglés. Solo espere hasta que tenga que comenzar a tratar con pluralization rules.
La regla básica en L10N es tratar las cadenas de usuario mirando como manchas opacas de datos que extrae de una base de datos de algún tipo y muestra al usuario sin manipulación intermedia. Sí, esto hace que el código sea más complicado, pero la corrección es algo importante.
Mientras estoy aquí, tratando de traducir palabras individuales tiende a producir un desastre incomprensible, tendrá mejores resultados si se traduce frases enteras.
Vale la pena señalar que las cosas del lenguaje pueden ser muy complejas muy rápido. Este es un ejemplo bastante simple. ¿Tienes algún caso de uso más realista? – tybro0103