No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Aprende todo un fin de semana sin pagar una suscripci贸n 馃敟

Aprende todo un fin de semana sin pagar una suscripci贸n 馃敟

Reg铆strate

Comienza en:

1D
19H
8M
52S

Soporte de varios idiomas para tu aplicaci贸n

16/36
Recursos

Aportes 12

Preguntas 2

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Soporte para varios idiomas

_
Internacionalizaci贸n
El sistema de internacionalizaci贸n o I18N nos ayuda a interactuar con una libreria de Rails para insertar de forma automatizada ciertas keys para enlazar traducciones a diferentes idiomas.

_

C贸mo usarlo

  • En los labels de los atributos del modelo User escribiremor t(鈥榤odel.atribute鈥). Esto, de forma autom谩tica acceder谩 al atributo del modelo.
  • Buscamos el archivo config/locales/en.yml Este archivo contendr谩 鈥渆tiquetas鈥. Colocamos el nombre del modelo y sus atributos. Dentro de estas etiquetas colocaremos su traducci贸n.
en:
  hello: Hello world
  users:
    first_name: First name
  • El archivo 鈥渆n鈥 funciona como diccionario del idioma ingles. Para crear uno del idioma espa帽ol podemos duplicarlo y llamarlo 鈥渆n鈥. En el archivo en colocaremos los t茅rminos en espa帽ol.
  • Para ahorrarnos el proceso de escribir cada atributo de forma manual podemos usar el comando i18n-asks add-missing. Esto requiere una unstalacion (gem install i18n-tasks).

_

Establecer lenguaje por acciones

  • Vamos al controlador que queremos internacionalizar podemos a帽adir la clase I18n y el m茅todo locale, para establecer el lenguaje de la acci贸n. 鈥榚s鈥.
def new
	I18n.locale = 'es'
	@user = User.new
end

_
Establecer lenguaje por controlador

  • Si queremos que esta internacionalizaci贸n afecte a todas las acciones tendr铆amos que ir a su controlador base. Dentro de este colocaremos dentro de la clase:
before_Action :set_locale

def set_locale
	I18n.locale = 'es'
end

驴C贸mo se haria para manejar los locales segun la ruta. Por ejemplo es/鈥 or en/鈥?

El profesor menciona algo que hacer que completamente no entiedo, yo : panico, menciona que lo abordaremos luego luego, ufff que alivio jajaj

As铆 quedo mi archivo es.yml 馃憖

---
es:
  hello: Hola mundo
  users:
    edit:
      back: Regresar
      show: Mostrar
    first_name: Nombres
    form:
      about_me: Un poco sobre mi persona
      address: Direccion
      last_name: Apellidos
      phone: Telefono
    index:
      about_me: Un poco sobre mi
      address: Direccion
      are_you_sure?: 驴Estas seguro?
      destroy: Destruir
      edit: Editar
      first_name: Nombres
      last_name: Apellidos
      listing_users: Lista de usuarios
      new_user: Nuevo usuario
      phone: Telefono
      show: Mostrar
    new:
      back: Regresar
    show:
      about_me: Sobre mi persona
      address: Direccion
      back: Regresar
      edit: Editar
      first_name: Nombres
      last_name: Apellidos
      phone: Telefono```

Hola as铆 qued贸 mi c贸digo tanto en users como en books:

Users:

 .form-inputs
    = f.input :first_name, label: t('users.first_name')
    = f.input :last_name, label: t('.last_name')
    = f.input :about_me, label: t('.about_me')
    = f.input :phone, label: t('.phone')

Books:

.form-inputs
    = f.input :title, label: t('.title')
    = f.input :author, label: t('.author')
    = f.input :description, label: t('.description')
    = f.input :isbn, label: t('.isbn')
    = f.input :pages_count,label: t('.pages_count')

鈥榚s鈥 file:

es:
  books:
    form:
      author: Autor
      description: Descripci贸n
      isbn: Isbn
      pages_count: N煤mero de p谩ginas
      submit: Registrar
      title: Titulo
  hello: Hello world
  users:
    first_name: Nombres
    form:
      about_me: Sobre mi
      last_name: Apellidos
      phone: Telefono
      submit: Registrar

PD: los submit no cambian pero lo dejo asi para referencia 馃槃

Tambien puedes configurar una unica vez en el config/application.rb pones:

config.i18n.default_locale = :es

.form-inputs
= f.input :nombre , label: t(鈥.nombre鈥), as: : text
= f.input :apellido , label: t(鈥.apellido鈥)
= f.input :apellido , label: t(鈥.direccion鈥)
= f.input :apellido , label: t(鈥.notas鈥)
= f.input :apellido , label: t(鈥.telefono鈥)

Un compa帽ero explico que no acepta tabulaciones, pero me siguio dando error hasta instalar el i18n-tasks, que creo automaticamente los archivos, y con ello ya funciono.

Que brutal ese feature

Importante
Los archivos YML no soportan el tab para indentar, se tiene que hacer con espacios, si no les lanzar谩 un error

En mi archivo: _form.html.haml:

  .form-inputs
    = f.input :first_name, label: t('users.first_name'), as: :text
    = f.input :last_name, label: t('.last_name')
    = f.input :address, label: t('.address')
    = f.input :about_me, label: t('.about_me')

Hay algo que no me agrada mucho de la gema i18n-tasks . Por cada vista hay que agregar una key disitinta al diccionario incluso si es para el mismo atributo del mismo modelo. Por ejemplo tenemos la key users.form.last_name pero tambi茅n tenemos la key users.index.users.last_name y ambas tienen el mismo valor. Ser谩 que en este caso simplemente la creamos como la key de users.first_name que no le especificamos si era de index o form etc? de manera que sea por asi decirlo global? o hay otra forma m谩s eficiente de hacerlo ?

Genial 馃挭馃徑