6

Ich möchte, dass meine Anwendungen Ansichten übersetzen und als ich teilweise bin mit Header, wie dies für jede Ansicht zu machen:Übersetzen Controller aktions in Rails 4

<%=t "#{controller.controller_name.capitalize} #{controller.action_name}" %>

... habe ich stucked auf übersetzen Sie. Wie übersetze ich controller.action_name in benutzerdefinierte Übersetzungsdatei?

Ich habe versucht, wie diese Aktion Namen zuzugreifen:

parkings: 
    index: "Parkings index" 
    new: "New %{model}" 

Und viele verschiedene Variationen davon, aber jeder ist fehlgeschlagen. Kannst du mir helfen?

Dies ist ein Fragment meines Controller:

def new 
    @parking = Parking.new 
    end 

    def create 
    @parking = Parking.new(parking_params) 

    if @parking.save 
     redirect_to @parking, notice: t(:parking_created) 
    else 
     render action: 'new' 
    end 
    end 

Dank.

Antwort

2

Sie sollten die Übersetzungen in Ihrer locale-Datei haben. Fügen Sie einen Unterstrich oder Bindestrich getrennte Wörter in der Schlüssel

zB:

# config/locales/en.yml 
en: 
    parkings_index: Parkings index 
    parkings_new: Parkings new page 

Ansicht Datei

<%=t "#{controller_name}_#{action_name}" %> 
+0

Thank you! :) Ich habe diese Antwort als richtig markiert, jetzt muss ich nur Übersetzungen zu meinen Locales hinzufügen, aber es hat endlich für mich funktioniert. – ZuzannaSt

1

Erstens, wenn Sie sagen #{controller.controller_name} bedeutet es, dass Sie ein Objekt namens controller aus Ihrer Sicht zugreifen können, was nicht wahr ist. Selbst wenn es Ihnen gelingt, auf den Controller und den Namen seiner Aktion zuzugreifen, denke ich nicht, dass es sich lohnt.

Stattdessen können Sie Ihre Übersetzungsdatei wie dies irgendwie strukturieren:

views: 
    model_name (parkings): "Parkings" 
    action_1_name (index): "Parkings Index" 
    action_2_name (new): "New Parking" 
    ... 

und Ihrer Ansicht nach sagen (zum Beispiel)<%= link_to (t "views.model_name.action_name"), :action %>