Blog do Hollander :: RoR de leigo para leigos

24 abril, 2008

Programar em inglês ou desativar a pluralização?

Filed under: Ruby / Rails — Tags:, , — hollanderramos @ 21:35

Em um outro post eu comentei sobre como conhecer bem as convenções do Rails. Bem, este post irá aprofundar um pouco mais no assunto ao abordar as pluralizações.

Pluralização é uma das convenções do Rails para quando você cria por exemplo, um modelo. Por “padrão”, o Rails se encarregará de criar toda a estrutura necessária ao modelo, então o modelo deve ser um nome no singular, a tabela criada estará no plural, o modelo estará no singular, mas com a primeira letra capitalizada (maiúscula), etc.

Esta convenção é de fato uma mão na roda, porém ela só é efetiva quando desenvolvemos usando o inglês. Quando aplicado a gramática portuguesa, ela se torna um problema já que Rails não tem suporte a outras línguas.

A tabela abaixo demonstra a pluralização do modelo carro para todos os métodos gerados pelo Rails:

Método  	Resultado
camelize 	Carro
classify 	Carro
demodulize 	carro
foreign_key 	carro_id
humanize 	Carro
pluralize 	carros
singularize 	carro
tableize 	carros
titleize 	Carro
underscore 	carro

Tudo lindo correto? Errado. Vamos pluralizar agora o modelo injeção:

A primeira coisa é eliminar o cedilha e acentuações o que resulta em injecao:

Método  	Resultado
camelize 	Injecao
classify 	Injecao
demodulize 	injecao
foreign_key 	injecao_id
humanize 	Injecao
pluralize 	injecaos
singularize 	injecao
tableize 	injecaos
titleize 	Injecao
underscore 	injecao

Em vermelho o problema, Rails não reconhece a gramática portuguesa, logo a pluralização não resulta na forma correta injecoes (injeções).

Para verificar como o Rails trabalha com a pluralização visite o: nubyonrails.

Existem maneiras de desativar a pluralização e fazer a programação “na marra”, mas isso gera um custo adicional desnecessário ao desenvolvedor além de quebrar o conceito do framework que é o de focar o desenvolvimento apenas naquilo que é fundamental.

E, traduzindo o modelo, não irá garantir que os campos que são controlados pelo Rails como “id”, “created_at”, “updated_at” entre outros, também serão traduzidos, ou seja, você terá que mantê-los ou novamente, dedicar tempo a esta tarefa.

Por fim, qual dos códigos abaixo é o de mais fácil compreensão?

1: @liner = Liner.find_by_code "001"
2: @liner = Liner.find_by_codigo "001"
3: @armador = Armador.find_by_code "001"
4: @armador = Armador.find_by_codigo "001"

Se você domina o inglês, obviamente irá optar pela primeira opção. Se você é adepto do português irá escolher a opção 4 (depois de desabilitar a pluralização), só que isso implica em ter o seu código funções pseudo-traduzidas pois o “find_by” não é traduzido. Ah! Mas então, para evitar isso, você pode partir para a solução 3, ter todos os campos escritos em inglês, o que não parece lógico já que não existe nenhum grande esforço adicional em também ter o modelo traduzido.

Portanto, a melhor solução é continuar usando a pluralização e traduzir seus campos para o inglês. Quem sabe, com o tempo que você vai ganhar no desenvolvimento, você consegue finalmente se inscrever naquele curso de inglês?🙂

2 Comentários »

  1. […] — Tags: convenções, plugin, pluralização, Rails — hollanderramos @ 12:06 Neste post eu comentei que era mais fácil trabalhar com Rails utilizando a convenção em inglês. Nas […]

    Pingback por Plugin Brazilian Rails « Blog do Hollander :: RoR de leigo para leigos — 4 maio, 2008 @ 12:06

  2. […] a convenção de pluralização dos métodos. Para saber como a pluralização trabalha veja o post sobre este assunto. Clique no botão next para completar a criação do […]

    Pingback por Dicas rápidas de RADRails I - Novo Projeto « Blog do Hollander :: RoR de leigo para leigos — 16 maio, 2008 @ 21:10


RSS feed for comments on this post. TrackBack URI

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

Crie um website ou blog gratuito no WordPress.com.

%d blogueiros gostam disto: