Pluralize em Português
Bem pessoal continuando minha jornada de aprendizado com Rails, quero mostrar como fazer o Rails tarbalhar pluralize com nome das tabelas em português.
Com a ajuda deste post do rubyonbr , onde você pode achar o conteúdo das configurações que se segue:
Coloque estas linhas no arquivo environment.rb dentro da pasta config, salve e pronto o rails já está pronto para "falar português".
Obs: Eu tive um problema com acões, ele colocava açães então eu fiz:
inflect.irregular 'acao', 'acoes'
e funcionou beleza
abraços e até a próxima.
Com a ajuda deste post do rubyonbr , onde você pode achar o conteúdo das configurações que se segue:
- Inflector.inflections do |inflect|
- inflect.clear
-
- #general rule: add "s" to the end of the word
- #casa - casas
- inflect.plural /^([a-zA-z]*)a$/i, '\1as'
- #pe - pes
- inflect.plural /^([a-zA-z]*)e$/i, '\1es'
- #no example
- inflect.plural /^([a-zA-z]*)i$/i, '\1is'
- #carro - carros
- inflect.plural /^([a-zA-z]*)o$/i, '\1os'
- #pneu - pneus
- inflect.plural /^([a-zA-z]*)u$/i, '\1us'
-
- #if word ends in "r" or "z", add "es"
- #luz - luzes
- #flor - flores
- #arroz - arrozes
- inflect.plural /^([a-zA-z]*)r$/i, '\1res'
- inflect.plural /^([a-zA-z]*)z$/i, '\1zes'
-
- #if word ends in "al", "el", "ol", "ul": trade "l" with "is"
- #farol - farois
- #hospital - hospitais
- #telemovel - telemoveis
- #pincel - pinceis
- #anzol - anzois
- inflect.plural /^([a-zA-z]*)al$/i, '\1ais'
- inflect.plural /^([a-zA-z]*)el$/i, '\1eis'
- inflect.plural /^([a-zA-z]*)ol$/i, '\1ois'
- inflect.plural /^([a-zA-z]*)ul$/i, '\1uis'
-
- #if word ends in "il" and has tónic accent in last syllable, trade "il" with "is"
- #cantil - cantis
- inflect.plural /^([a-zA-z]*)il$/i, '\1is'
-
- #TODO
- #if word ends in "il" and has tónic accent in penultimate syllable, trade "il" with "eis"
- #no example
-
- #if word ends in "m", trade "m" with "ns"
- #armazem - armazens
- #portagem - portagens
- inflect.plural /^([a-zA-z]*)m$/i, '\1ns'
-
- #TODO
- #if word ends in "s" and has one silable, trade "s" with "es"
- #no example
- #inflect.plural /^([a-zA-z]*)e$/i, '\1es'
-
- #TODO
- #if word ends in "x" stays the same
- #no example... professor X, maybe?
- #inflect.plural /^([a-zA-z]*)x$/i, '\1x'
-
- #if word ends in "ão", there are three ways of plural: ãos, ães, ões
- #NOTE: hard to detect, so I'll use the most common case
- #and then use irregular cases for the others. if someone knows of
- #more cases please add to the list & mail me. thanks!
- #
- #cão - cães
- #colchão - colchões
- #portão - portões
- #pão - pães
- #alemão - alemães
- #chão - ?
- #pilhão - pilhões
- #canhão - canhões
- #bidão - bidões
- #mão - mãos
- inflect.plural /^([a-zA-z]*)ao$/i, '\1oes'
- inflect.irregular 'cao', 'caes'
- inflect.irregular 'pao', 'paes'
- inflect.irregular 'mao', 'maos'
- inflect.irregular 'alemao', 'alemaes'
-
- ############################
- #singularize rules #
- ############################
-
- #pes - pe
- #carros - carro
- #pneus - pneu
- inflect.singular /^([a-zA-z]*)as$/i, '\1a'
- inflect.singular /^([a-zA-z]*)es$/i, '\1e'
- inflect.singular /^([a-zA-z]*)is$/i, '\1i'
- inflect.singular /^([a-zA-z]*)os$/i, '\1o'
- inflect.singular /^([a-zA-z]*)us$/i, '\1u'
-
- #luzes - luz
- #flores - flor
- #arrozes - arroz
- inflect.singular /^([a-zA-z]*)res$/i, '\1r'
- inflect.singular /^([a-zA-z]*)zes$/i, '\1z'
-
- #cantis - cantil
- inflect.singular /^([a-zA-z]*)is$/i, '\1il'
-
- #farois - farol
- #hospitais - hospital
- #telemoveis - telemovel
- #pinceis - pincel
- #anzois - anzol
- inflect.singular /^([a-zA-z]*)ais$/i, '\1al'
- inflect.singular /^([a-zA-z]*)eis$/i, '\1el'
- inflect.singular /^([a-zA-z]*)ois$/i, '\1ol'
- inflect.singular /^([a-zA-z]*)uis$/i, '\1ul'
-
- #armazens - armazem
- #portagens - portagem
- inflect.singular /^([a-zA-z]*)ns$/i, '\1m'
-
- #cães - cão
- #colchões - colchão
- #portões - portão
- #pães - pão
- #alemães - alemão
- inflect.singular /^([a-zA-z]*)oes$/i, '\1ao'
- inflect.singular /^([a-zA-z]*)aes$/i, '\1ao'
- inflect.singular /^([a-zA-z]*)aos$/i, '\1ao'
-
- # inflect.plural /^(ox)$/i, '\1en'
- # inflect.singular /^(ox)en/i, '\1'
- # inflect.irregular 'person', 'people'
- # inflect.uncountable %w( fish sheep )
- end
Coloque estas linhas no arquivo environment.rb dentro da pasta config, salve e pronto o rails já está pronto para "falar português".
Obs: Eu tive um problema com acões, ele colocava açães então eu fiz:
inflect.irregular 'acao', 'acoes'
e funcionou beleza
abraços e até a próxima.
Marcadores: Ruby on Rails
2 Comentários:
Finalmente um bom Inflector para a língua portuguesa, parabéns pelo código e muito obrigado por partilhar!
Estive a fazer uns testes e parece-me que ainda existem alguns pequenos detalhes por tratar como por exemplo na acentuação, mas também compreendo que o código ficaria muito mais complexo.. Gostaria só de colocar uma pergunta: existe algum tipo de referência na Internet para a língua portuguesa (e outras quem sabe)?
Obrigado,
Alix (eb1024 [at] gmail.com)
Por Anônimo, Às 12 de fevereiro de 2008 às 22:36
comprei desse site http://www.mercadozets.com.br/ e gostei o site entrega rapido e com nota fiscal e garantiA
tem berço eletronicos celulares tv notebook computador acessorios para carros brinquedos artigos infantis e muito mais
... tem mais de 2000 proutos
...
CANTIL
http://www.mercadozets.com.br/ListaProdutos.asp?texto=cantil&IDCategoria=178
CAMPING
http://www.mercadozets.com.br/ListaProdutos.asp?idCategoria=178
Por WWW.MERCADOZETS.COM.BR, Às 22 de novembro de 2011 às 16:21
Postar um comentário
Assinar Postar comentários [Atom]
<< Página inicial