Rails 1.2: Deutsche Model-Namen in Rails
Die singularize und pluralize Funktionen von Rails können von Haus aus für die englische Sprache verwendet werden.
Für ein Projekt wollte ich erst deutsche Model-Namen nutzen und habe die Rails-Anwendung dementsprechend angepasst:
In der environment.rb:
Inflector.inflections do |inflect|
# die englischen vorgaben vergessen
inflect.clear# worte im singular werden mit
# einem “e” für die plural-Form erweitert
inflect.plural /^([a-zA-z]*[^aoieukgh])$/i , ‘\1e# worte, die im plurar auf e enden, werden
# für die singular-Form um das e gekürzt
inflect.singular /^([a-zA-z]*)e/i, ‘\1′# spezial regeln für worte, die aus diesen
# regeln herausfallen
# (erstes wort singular, zweites plural)
inflect.irregular ‘mitglied’, ‘mitglieder’end
Ich habe die Idee jedoch schnell verworfen, da wir besser englische Modelnamen (intern relevant) und deutsche Controllernamen (nach aussen hin, z.B. für Suchmaschinen relevant) verwenden, um so unnötige Routes zu ersparen. Daher können die Regeln sicher noch für einige andere Wörter erweitert werden, falls aus welchen Gründen auch immer, jemand Interesse an deutschen Model-Namen haben sollte.
Filed under: German, Rails 1.2, Ruby, Ruby On Rails on Juli 12th, 2007

[...] les ich grad flips Plan deutschsprachige Model- und Controllernamen zu verwenden und weiß gleich: So geht das [...]
Hi Tom,
zu dem Schluss, dass deutsche Models (in Rails, nicht real) keinen Sinn machen bin ich am Ende auch gekommen. Da die Anwendung allerdings sehr groÃ. ist, wollte ich hunderte von Routes vermeiden, die dann Rails-unlike immer angepasst werden müssten, sobald sich etwas ändert (DRY). Daher habe ich die Lösung mit (halb) deutschen Controller Namen und englischen Models gewählt. So ein Ding heisst zwar z.B. TagebuchController, aber wer diesen Mix aus Sprachen seelisch verkraftet spart sich die Routes. Die Anwendung wird ewig auf deutsch bleiben, so dass ich mir auch keine Sorgen um eine Internationalisierung machen muss. Bei einer solchen würde ich wohl auch wieder darauf zurückkehren, gewohnt im englisch zu coden, und eben routes für die verschiedenen Sprachen einzuführen. Für das Projekt erscheint mir meine Lösung doch eleganter.
Konvention (deutsche Controllernamen) vor Konfiguration (Routes für jeden neuen Controller anlegen und bei jeder Ã.nderungen anpassen), genau!.. und dazu noch DRY.. genau das hatte ich damit im Sinn.
ich habe nun aber einen anwendungsfall, bei dem ich singularize und pluralize brauchen könnte für deutsche wörter.
und zwar muss ich aus einer Datenbank aus 60000 begriffen die plural-formen streichen können (also “Fall” und Fälle” sind offenbar doppelt).
Dies ist aber scheinbar unmöglich für mehr als 75% abdeckung. offenbar hat unsere sprache so viele ausnahmen, dass es einfach nicht möglich ist. echt schade.
gibt auch irgendwie gar keine versuche dazu. zumindest konnte ich bei meiner recherche keine Inflector classes finden, bei denen das bereits versucht wird.
oder hattest du da noch etwas mit probiert?
Ich hatte bei meinen Rails Anfängen lediglich experimentiert, ob deutsche Modelnamen (und damit ein funktionierender Inflector) möglich sind. Seit damals verwende ich im Quelltext ausschließlich die englische Sprache.
Für Deinen Fall würde ich vielleicht versuchen, die Datenbank mit dem Wiktionary abzugleichen, das man als XML-Dump herunterladen kann unter http://de.wiktionary.org/wiki/Wiktionary:Download . Die deutsche Sprache hat einfach zuviele Ausnahmen mit Singular und Plural.
ich habs nach stundenlanger arbeit geschafft!
klar, viele ausnahmen. normale lösungen führen nicht zum ziel.
hab daher meinen eigenen “deutschen” inflector geschrieben.
das funktioniert (mit hunderten von regeln) auch ziemlich gut…^^
http://cakephp.dereuromark.de/tests/tests/inflector/de
findet irgendjemand noch wörter, die bisher NICHT gehen?
am einfachsten so checken:
“Auto – Autos” – pro zeile 1 Begriff mit Lösung dahinter (leerzeichen minus leerzeichen dazwischen), dann sieht man direkt ob es funktioniert
Wenn es soweit stabil ist, kann ich es ja veröffentlichen