6

Voglio tradurre viste le mie applicazioni e mentre sto usando parziale di rendere le intestazioni per ogni vista in questo modo:Tradurre regolatore action_name in Rails 4

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

... mi sono stucked sulla traduzione loro. Come posso tradurre controller.action_name nel file di traduzione personalizzato?

Ho cercato di accedere ai nomi di azione in questo modo:

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

E molte varianti di esso, ma ognuno fallito. Potresti aiutarmi?

Si tratta di un frammento del mio 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 

Grazie.

risposta

2

si dovrebbe avere le traduzioni nel file locale. Aggiungere un carattere di sottolineatura o un trattino per separare le parole chiave nel

esempio:

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

file di vista

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

Grazie! :) Ho contrassegnato questa risposta come corretta, ora devo solo aggiungere traduzioni ai miei locales, ma alla fine ha funzionato per me. – ZuzannaSt

1

Prima di tutto, quando dici #{controller.controller_name} significa che hai un oggetto chiamato controller accessibile dalla tua vista, il che non è vero. Anche se riesci ad accedere al controller e al nome della sua azione, non penso che ne valga la pena e il tempo.

Invece, è possibile strutturare il file di traduzione in qualche modo simile a questo:

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

e nella vista dire (ad esempio)<%= link_to (t "views.model_name.action_name"), :action %>