2010-06-08 22 views
7

Estoy creando aplicaciones para un público que no es inglés. En este momento, uso nombres en inglés para nombrar mis modelos, sin embargo, prefiero usar holandeses nativos. Como la convención usa el plural del nombre de clase para tablas, supongo que es el método de pluralización dentro de Rails (donde reside, no lo sabría). ¿Cómo puedo cambiar el método de pluralización y dónde está ubicado? ¿Esto rompería a Rails?Ruby On Rails: pluralizar para otros idiomas

estoy usando Rails 2.3.5 y 1.8.7 de Ruby

Ejemplo: La clase libro se convierte en libros ahora. clase Mi Boek convierte boeks, pero es gramaticalmente correcta de utilizar boeken

Respuesta

11

añaden sus reglas a un archivo inflections.rb en config/inicializadores. Ver el API documentation:

ActiveSupport::Inflector.inflections do |inflect| 
    inflect.plural 'boek', 'boeken' 
end 
+1

Recuerdo hacer tapping brevemente con inflexiones para pluralizar para mi idioma nativo ... era un caos, una irregularidad por todas partes. ^^ – ANeves

+1

Veo aquí (http://www.dutchgrammar.com/en/?n=NounsAndArticles.11) que la terminación -en es la habitual. Debería poder codificar la regla predeterminada con .plural y .singular, y luego seguirla con plurales irregulares. –

+0

Probablemente intentaré buscar en Google para ver si alguien ya ha creado inflections.rb para holandés. ¡No es necesario que la gente se equivoque más de una vez! :) –

1

Esto no responde a la pregunta específica, pero si una lengua tiene demasiadas irregularidades se puede desactivar la inflector según la discussion.

ActiveRecord::Base.pluralize_table_names = false

0

Además, como se Por lo que respecta a las vistas, mi forma preferida de tratar la pluralización de cadenas extranjeras es i18n pluralización. Eche un vistazo a un ejemplo sencillo a continuación.

# config/locales/en.yml 

en: 
    message: 
    one: You have 1 message #Your foreign string 
    other: You have %{count} messages #Your foreign string 

Luego, en vista de que se puede hacer

# app/views/messages/index.html.erb 

<%= t("message", count: current_user.messages.count) %> 

Comprobar official documentation.
Espero que ayude!