2016-03-29 6 views
1

Ich baue eine Autovermietung App mit Ruby on Rails und derzeit habe ich mit Englisch Codierung. Grundsätzlich habe ich ein Benutzer- und Automodell, wo sich Benutzer einloggen, abmelden und ihr Auto auflisten können.Multi-Sprache mit Rails App, um YML-Datei vorzubereiten

Ich möchte eine andere Sprache implementieren, die dem Benutzer erlaubt, Englisch oder Spanisch aus einem Dropdown auszuwählen. Ich habe Standardfehlermeldungen von den Controller-Aktionen wie "kann nicht leer sein, bereits verwendet" usw. Und ich habe auch benutzerdefinierte JS-Nachrichten, wie wenn Benutzer erfolgreich ein Auto hinzufügt, gibt jQuery "Ihr Auto wurde veröffentlicht" . Zu guter Letzt habe ich auch Flash-Nachrichten. Aber ich weiß nicht, wie ich Fehler, benutzerdefinierte JS und Flash-Nachrichten in der YML-Datei gemäß der Sprachauswahl des Benutzers behandeln soll.

Antwort

0

Es tatsächlich hängt wirklich von der Struktur Ihrer YAML-Datei, zum Beispiel für ActiveRecord Fehlermeldungen:

it: 
    errors: 
    format: "%{attribute} %{message}" 

    messages: &errors_messages 
     empty: "non può essere vuoto" 
     blank: "non può essere lasciato in bianco" 

Wenn Sie I18n zugreifen möchten (aka Internationalisierung) außerhalb von Ansichten können Sie I18n.t(your_key) verwenden, Das ist in der Tat der Helfer, auf den Sie in Ihren Ansichten Zugriff haben. So zum Beispiel, wenn Sie eine Nachricht in einem Controller übersetzen wünschen können Sie wie etwas zu tun sein:

def your_action 
    redirect_to other_path, notice: I18n.t("notices.successful_action") 
end 

Und dann in Ihrer YAML der Korrespondenten Struktur:

en: 
    notices: 
    successful_action: "You did it!" 

hoffte, das hilft!

0

Ich weiß nicht, wie soll ich Fehler, benutzerdefinierte js und Flash-Mitteilungen in yml Datei nach Sprache des Benutzers Auswahl

  • Für Rails-Anwendung bezogenen Übersetzungen im Allgemeinen, einschließlich Fehlermeldungen behandeln, Die Rails i18n gem hat dich abgedeckt. Sie können sehen, welche Sprachen in the gem's locale file übersetzt wurden.
  • Weitere Informationen zum Überschreiben von Fehlern oder zum Erstellen neuer Fehlermeldungen finden Sie in den Abschnitten zu den Rails-Anleitungen unter looking up translations und translations for ActiveRecord models, um zu sehen, in welchen Schlüsseln in Ihren YAML-Dateien Sie Ihre Übersetzungen einfügen sollten.
  • Für Flash-Nachrichten, sehen Sie sich this StackOverflow question an, um zu sehen, wie Sie faule Lookups (zB t('.notice')) in Ihren Controllern verwenden können.
  • Um Übersetzungen in Javascript-Dateien auf die gleiche Weise wie in Ruby zu verwenden (z. B. I18n.t("my_translation")) und diese Übersetzungen in Ihren YAML-Dateien mit dem Rest Ihrer Rails-Übersetzungen verwalten zu können, werfen Sie einen Blick auf die i18n-js gem. Setup-Anweisungen befinden sich in der Readme-Datei