In most languages that I know (English, Dutch), the plural case can be 
derived from the singular – modulo a few irregularities e.g. boy/boys, 
sheep/sheep, straat/straten, auto/auto's, etc.

In a great many other languages, however, it is not possible to know the 
plural without some additional datum e.g. the genitive singular form.

As implemented, the arity of `pluralize` is strictly one.  If it were to 
permit variable arguments *after* that single required argument an 
enterprising soul might alter the behavior of 
pluralize to take those additional data into consideration when performing 
the pluralization.  What would the feeling be about changing this behavior? 
 While the applicability of Latin to modern development is dubious, the 
fact that there are languages whose plurals can't be derived from the 
nominative has wider applicability.  If this idea were deemed to be too 
niche merely altering the method's interface would allow something like 
ActiveSupport::CasedLanguage.pluralize(singular, *args) to implement these 
features for those who desire it.


Let me give more specifics:

in Latin, for example, there are ambiguities around some endings, 
particularly a noun ending in 'us'. Consider 'dominus' and 'currus'. Simply 
matching a RegEx on /us$/ would give us dominus -> domini (right) but also 
currus -> curri (wrong).

Latin students memorize dominus as: 'dominus, domini (singular genitive), 
masculine' and currus as 'currus, currūs, masculine'. This is how students 
disambiguate the two.

So, now, how to handle that in ActiveSupport?

Well, hmph.

It seems like we should be able to say:

'currus'.pluralize(:la) #=> 'currūs' 
dominus'.pluralize(:la) #=> 'domini'

But this produces the wrong results, as mentioned above.  If pluralize took 
a second argument of an array we might be able to do something
like:

'currus'.pluralize(:la, <optional genitive>currūs) #=> 'currūs'

then:

dominus'.pluralize(:la) #=> 'domini' - WORKS
'currus'.pluralize(:la, 'currūs') #=> 'currūs' - WORKS

This design would also allow me to support the 3rd declension of Latin 
verbs which are identified *by the genitive* not *by the nominative*.

A list of rules based on the nominative ending will fail to catch this one

arx'.pluralize(:la) #=> wtf?

whereas

'arx'.pluralize(:la, 'arcis') #=> 'arces' - WORKS

It *also* might allow a gateway to something like

'arx'.pluralize(:la, 'arcis', :ablative) # => 'arcibus'




-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/ee3fcf41-bb19-4618-b629-a6e02c7370ba%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to