Der zweite hat eine bessere Chance, richtig zu sein. Wann das Groß- und Kleinschreibung zu berücksichtigen ist, hängt vom Gebietsschema ab, so dass Sie nicht wissen können, ob t(:hello).capitalize
ein korrektes Ergebnis liefert, ohne den Kontext zu betrachten. Ein besserer Ansatz als entweder wäre den Kontext, in dem Symbol enthalten, etwa wie folgt:
t(:hello_button)
und dann in Ihrem Englisch YAML:
hello_button: "Hello"
auf diese Weise die Übersetzungen können je nachdem, was Fall ist angemessen für die betreffende Sprache. Auch wird Englisch manchmal dasselbe Wort für zwei Dinge verwenden, wenn andere Sprachen andere Wörter verwenden: Betrachten Orange die Farbe und Orange die Frucht; daher die Bedeutung von Kontext in Ihren Übersetzungen.
Außerdem capitalize
funktioniert nur auf ASCII-Zeichen, wenn Sie eine mb_chars
in den Mix zu werfen:
> 'µ'.capitalize
=> "µ"
> 'µ'.mb_chars.capitalize.to_s
=> "Μ"
Sie könnten keine führende µ
aber einfache Akzente am Anfang von Wörtern begegnen ziemlich häufig sind:
> 'éclair'.capitalize
=> "éclair"
> 'éclair'.mb_chars.capitalize.to_s
=> "Éclair"
Dies ist nur kratzen die Oberfläche der Schwierigkeiten, denen Sie begegnen werden, unter der Annahme, dass alle Sprachen wie Englisch verhalten. Warte einfach, bis du mit pluralization rules anfangen musst.
Die Grundregel in L10N besteht darin, benutzerorientierte Strings als undurchsichtige Datenblobs zu behandeln, die Sie aus einer Datenbank irgendeiner Art herausziehen und dem Benutzer ohne Manipulationen dazwischen zeigen. Ja, das macht Ihren Code komplizierter, aber Korrektheit ist wichtig.
Während ich hier bin, einzelne Wörter zu übersetzen versucht, neigt dazu, eine unverständliche Chaos zu erzeugen, werden Sie bessere Ergebnisse, wenn Sie ganze Sätze übersetzen.
Es ist erwähnenswert, dass Sprache Zeug sehr schnell sehr komplex werden kann. Dies ist ein ziemlich einfaches Beispiel. Haben Sie realistischere Anwendungsfälle? – tybro0103