2010-09-14 3 views
5

Ich versuche, die Zeichenfolge zu überschreiben, die verwendet wird, um das Attribut 'login' meines Benutzermodells als 'Benutzername' zu beschreiben. Ich dachte, dass dies in vendor/rails/activerecord/lib/active_record/locale/en.yml festgelegt wurde. Ich habe versucht, es hier und in meiner Datei zu ändern, und in keinem Fall funktioniert es (ich starte den Server nach jeder Änderung neu).Überschreiben von Modellattributnamen mithilfe von I18n - das funktioniert nicht

In beiden Fällen ist es so gemacht hat:

en: 
... 
    activerecord: 
    attributes: 
     user: 
      login: User Name 

Wenn ich es testen, zB mit f.label: Login in meinem neuen Benutzerformular, es kommt als „Login“ nicht „Benutzername“ . Arbeite ich unter einem fundamentalen Fehler darüber, wie dieses Zeug funktioniert, oder funktioniert es wirklich nicht? Wie auch immer, kann mir jemand sagen, wie ich es beheben kann? Dank, max

Antwort

0

Sie können Ihre "User Name" Zeichenfolge unter einem beliebigen Namen in Ihrer en.yml Datei speichern:

en: 
user: 
    user_name: User Name 

und Ihrer Ansicht

<%= f.label :login, t('user.user_name') %> 
+1

Hallo Yannis. Ich weiß, dass ich meine eigenen Übersetzungen machen kann, aber ich verstand, dass ich die von Rails erzeugten überschreiben kann, so dass ich keine benutzerdefinierten Übersetzungen mehr referenzieren muss: sie werden automatisch verwendet. Da könnte ich mich irren. –

+0

Das wäre wirklich interessant ... Bitte schreiben Sie hier einen Kommentar, wenn Sie anderswo eine Lösung finden. – Yannis

1

Im Falle, wenn einer von Ihnen Probleme haben die Übersetzung nicht geladen sind, debuggte ich so:

Zuerst verwende ich das Skript in https://stackoverflow.com/a/10211540/474597, um die Protokollierung einzurichten. Wenn ich dann den Server starte und die Seiten rendere, kann ich in diesem Protokoll die Schlüssel sehen, die benutzt wurden, um die Übersetzungen zu bekommen. Dann kann ich überprüfen, ob die Schlüssel richtig sind oder nicht.


Ein Fehler ist, dass der erste Schlüssel nicht unbedingt der Schlüssel ist, den sie verwenden werden. Ich habe Fälle gesehen, wo es den korrekten Schlüssel lädt, und dann nach einem anderen Schlüssel sucht, der keine Übersetzung hat, resultierend in der englischen Übersetzung. Ich musste die Übersetzung in diese beiden Schlüssel schreiben.

Zum Beispiel: mein Foo has_many Bar, und Bar has_many Duu, und Duu hat eine Preisspalte. Um diese Preisspalte zu übersetzen, ich habe folgendes haben, für sie zu arbeiten:

:duu 
:"activerecord.attributes.duu.text" 
:"activerecord.errors.models.duu.attributes.text.blank" 
:"activerecord.errors.models.duu.blank" 
:"activerecord.errors.messages.blank" 
:"errors.attributes.text.blank" 
:"errors.messages.blank" 
:"activerecord.attributes.foo/bars/duus.text" 
2

dies auf Anfrage Ich beantworte hier:

activerecord: 
    attributes: 
     'foo/bar/duu': 
     price: "price" 

Auch wenn das Protokoll dies hat jemand ... Ich habe das repariert und meine Frage nicht aktualisiert, tut mir leid. Ich war in meiner Frage auf der richtigen Linie, hatte aber nicht den richtigen "Pfad" nach unten zu den Schlüsseln: Die Namen der Felder, wie sie angezeigt werden, heißen "Labels" und sie haben ihren eigenen Abschnitt außerhalb des: activerecord Teil des Yaml Baumes.

Der richtige Weg, es zu tun ist

en: 
    user: 
    labels: 
     login: "User Name" 
     email: "Email Address" 

wo „user“ ist ein kleingeschrieben Modellnamen und Login und E-Mail-Felder sind.

Verwandte Themen