Just like Krzysztof I'd recommend checking out the Rails guide on 
Internationalization. IIRC it answers both of the questions you've asked.

You might want to check out the Rails "lazy" translation helper:

t('.submit')

Notice the dot at the beginning of the key. This dot is expanded to the current 
view path, e.g. on "customers/_form" this key becomes :'customers.form.submit'



On Nov 26, 2010, at 6:03 PM, Philip Kleimeyer wrote:

> Hey Sven,
> 
> thanks a lot :D
> 
> I had just another problem.
> How to act with partials in translations?
> 
> especially with the submit button:
> 
> 
> here my problem:
> 
> 
> # _form.html.erb
> 
> <%= form_for(@customer) do |f| %>
>    #some code
>    <%= f.submit t("new.submit")  %>
> <% end %>
> 
> 
> #locales/views/customers/de.yml
> 
> de:
>   new:
>     headline: "Kunden anlegen"
>     submit: "Kunden anlegen"
> 
>   edit:
>     headline: "Kunden bearbeiten"
>     submit: "Kunden speichern"
> 
> How to set the buttons text depents on edit an new
> 
> <%= f.submit t("submit")  %>
> 
> thanks to you!
> 
> Philip
> 
> 2010/11/26 Sven Fuchs <[email protected]>
> Hey Philip,
> 
> tl;dr: you probably don't wanna do it.
> 
> DRY is a principle that applies to code but not translations. When we 
> abstract our code then we are the ones who are in control of applying general 
> rules to it. But when it comes to translations we must leave your translators 
> in control and therefor don't want to abstract translations.
> 
> The reason for that is that
> 
> 1. there aren't that many general rules that apply to language, all of the 
> time, spoken languages have tons of exceptions for probably any rule you'd 
> name
> 2. even if there are such rules we as developers don't know them - that's why 
> there are translators
> 
> Therefor one should allow translators to translate every single string the 
> way they want - even if there's tons of duplication then.
> 
> One practical example where what you're trying to do could potentially crash 
> on the floor is when your :namespace translation needs to be inflected when 
> it's interpolated (inserted) into this particular translation for :submit in 
> *this particular* context on your page.
> 
> That said, there are some situations where even Rails does something similar.
> 
> You can do it like this:
> 
> de:
>  new:
>    submit: "%{namespace} anlegen"
> 
> and then
> 
> I18n.t(:'new.submit', :namespace => I18n.t(:namespace))
> 
> 
> On Nov 26, 2010, at 9:48 AM, Philip K. wrote:
> 
> > Hello,
> >
> > i need some help I want to use a translation variable in neu
> > translation.
> > something like this code:
> >
> > de:
> >  namespace: "Kunde"
> >  new:
> >    headline: "Kunden anlegen"
> >    submit: "t(namespace) anlegen"
> >
> >
> > please help me :D
> >
> > --
> > You received this message because you are subscribed to the Google Groups 
> > "rails-i18n" group.
> > To post to this group, send email to [email protected].
> > To unsubscribe from this group, send email to 
> > [email protected].
> > For more options, visit this group at 
> > http://groups.google.com/group/rails-i18n?hl=en.
> >
> 
> --
> You received this message because you are subscribed to the Google Groups 
> "rails-i18n" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> For more options, visit this group at 
> http://groups.google.com/group/rails-i18n?hl=en.
> 
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "rails-i18n" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> For more options, visit this group at 
> http://groups.google.com/group/rails-i18n?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"rails-i18n" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rails-i18n?hl=en.

Reply via email to