I want to use variables declared in yml file right there.
For example, I declared site_name and want to use it below in description.
en:
site_name: &site_name "Site Name"
static_pages:
company:
description: *site_name #this works fine
description: "#{*site_name} is an online system" #this doesn't work
How can I combine *site_name variable with additional text?
The short answer is, I believe, no you cannot do string interpolation in YAML the way you want using an alias.
In your case, what I would do is have something like the following in my locale file:
en:
site_name: "Site Name"
static_pages:
company:
description: ! '%{site_name} is an online system'
and then call in the appropriate view with the site name as a parameter:
t('.description', site_name: t('site_name'))
which would get you "Site Name is an online system".
However, if you're desperate to use aliases in your YAML file to concatenate strings together, the following completely unrecommended code would also work by having the string be two elements of an array:
en:
site_name: &site_name "Site Name"
static_pages:
company:
description:
- *site_name
- "is an online system"
and then you would join the array in the appropriate view like this:
t('.description').join(" ")
Which would also get you "Site Name is an online system".
However, before you decide to go down this path, apart from the question that @felipeclopes linked to, have a look at:
You can use the following syntax, like in the example:
dictionary:
email: &email Email
name: &name Name
password: &password Password
confirmation: &confirmation Confirmation
activerecord:
attributes:
user:
email: *email
name: *name
password: *password
password_confirmation: *confirmation
models:
user: User
users:
fields:
email: *email
name: *name
password: *password
confirmation: *confirmation
sessions:
new:
email: *email
password: *password
This example was taken from: Refactoring Ruby on Rails i18n YAML files using dictionaries
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With