Labels, Fehlermeldungen, :notices usw. zentral verwalten?!

Schönes Neues Rails-Jahr erstmal,

wir haben jetzt lustig über den Code verstreut alle möglichen Arten
von Labels, Fehlermeldungen, flash[:notice] usw. - es gibt jetzt
nicht unmittelbar die Anforderung, die ganze Seite zu
internationalisieren, aber ich würde solche Meldungen gerne irgendwo
zentral verwalten (und irgendwann auch editierbar machen) - entweder
in der Datenbank oder in (Property-??!) files. Hat da schon jemand
Erfahrungen mit?

Ich hatte mal gettext (Peak Obsession
105) angeschaut, fand das aber recht kompliziert: Ist das Thema so
kompliziert, oder gibt’s da auch noch was Einfacheres um Nachrichten
zentral zu verwalten?!

Eigentlich will ich ja nur statt:

flash[:notice] = “Danke, dass Sie sich registriert haben!”

sagen:

flash[:notice] = message “users.signup.thx”

und dazu ein file haben mit

users.signup.thx = “Danke, dass Sie sich registriert haben!”

Viele
GrüßeStefan

hallo,

Am Montag, 7. Januar 2008 16:11:27 schrieb Stefan F.:

wir haben jetzt lustig über den Code verstreut alle möglichen Arten
von Labels, Fehlermeldungen, flash[:notice] usw. - es gibt jetzt
nicht unmittelbar die Anforderung, die ganze Seite zu
internationalisieren, aber ich würde solche Meldungen gerne irgendwo
zentral verwalten […]

Ich hatte mal gettext (Peak Obsession
105) angeschaut, fand das aber recht kompliziert: […]

Ich habe hier eine Anwendung, in der ich gettext für alle Strings einsetze.
Das funktioniert recht problemlos und die Anleitungen die man im
Internet
findet sind auch recht einfach zu befolgen. Auch der Einrichtungsaufwand
hält
sich in Grenzen.

Meine Strings sehen alle so aus:

flash[:notice] = _(“Dieser Text kann dann bequem übersetzt werden und falls
es keine Übersetzung gibt, wird dieser hier angezeigt.”)

Wobei die automatisch generierten Textdateien zum übersetzen im
gettext-üblichen Format vorliegen und somit mit diversen Gettext-Tools leicht
bearbeitet werden können. Aber auch ein manuelles bearbeiten mit dem
Lieblings-Texteditor (vim) ist möglich.

Hier mal ein Ausschnitt aus solch einer Text-Datei:

#: app/models/contactgroup.rb:-
msgid “Contactgroup|Alias”
msgstr “”

#: app/models/contactgroup.rb:-
msgid “Contactgroup|Created at”
msgstr “”

Ich für meinen Teil werde das jetzt in allen Projekten benutzen, die
theoretisch mal übersetzt werden könnten. Wenn man das von vorne herein
benutzt ist das quasi gar kein Mehraufwand und die Übersetzung kann später
auch von Nicht-Rails-Programmierern durchgeführt werden. Auf jeden Fall muss
keine Überstung gemacht werden, wenn man nicht unbedingt möchte. Es stehen
einem also alle Wege offen…

Hier mal eine weitere Anleitung die Dir helfen sollte:
http://www.yotabanana.com/hiki/ruby-gettext-howto-rails.html

Timo


Dipl.-Inform. Timo S.
Geschäftsführung

LINET Services GbR | Gotenweg 15 | 38106 Braunschweig
Tel. 0531-180508-0 | Fax 0531-180508-29

Vertretungsberechtigte Gesellschafter:
Moritz Bunkus, Philip Reetz und Timo S.

USt-IdNr. DE 206946144

Hallo Thomas,

Am 07.01.08 schrieb Thomas P. [email protected]:

Wir hatten für unsere Anwendung das plugin globalize angedacht. Dort
funktioniert das so, daß nach der Installattion diese Plugins die zu
übersetzenden Ausgaben ebenfalls in “_()” Aufrufe eingeschlossen werden und
eine entsprechende Übersetzung ( z.B. in der rails-Konsole) eingegeben wird.
Viele Sachen, wie z.B. die Wochentage in verschiedenen Sprachen werden auch
schon mitgeliefert.

Wenn du Übersetzer hast, die von Programmierung nicht viel verstehen,
ist Globalize eher weniger geeignet.

Was mich aber mal interessieren würde: Hat jemand gettext und globalize
miteinander verglichen? Was ist vorzuziehen, bzw. was sind Vor- und
Nachteile des einen odere anderen?

Schau dir mal die Slides von Jan* an, sie sind zwar vom Juni, aber ich
denke nicht dass sich allzuviel geändert hat seit dem. So ab 117 gehts
dann mit den Vergleichen los :slight_smile:

GrüßeBeate

On 07/01/2008, Stefan F. [email protected] wrote:

Schönes Neues Rails-Jahr erstmal,

wir haben jetzt lustig über den Code verstreut alle möglichen Arten
von Labels, Fehlermeldungen, flash[:notice] usw. - es gibt jetzt
nicht unmittelbar die Anforderung, die ganze Seite zu
internationalisieren, aber ich würde solche Meldungen gerne irgendwo
zentral verwalten (und irgendwann auch editierbar machen) - entweder
in der Datenbank oder in (Property-??!) files. Hat da schon jemand
Erfahrungen mit?

Wir hatten für unsere Anwendung das plugin globalize angedacht. Dort
funktioniert das so, daß nach der Installattion diese Plugins die zu
übersetzenden Ausgaben ebenfalls in “_()” Aufrufe eingeschlossen werden
und
eine entsprechende Ãœbersetzung (z.B. in der rails-Konsole) eingegeben
wird.
Viele Sachen, wie z.B. die Wochentage in verschiedenen Sprachen werden
auch
schon mitgeliefert.

Was mich aber mal interessieren würde: Hat jemand gettext und globalize
miteinander verglichen? Was ist vorzuziehen, bzw. was sind Vor- und
Nachteile des einen odere anderen?

-Thomas


Thomas P.
[email protected]
[email protected]
Büro: 030 - 830 353 88
mobil: 0176 - 75 03 03 04
Privat: 030 - 49 78 37 06

Hallo,

es gibt viele Wege nach Rom, manche sind kürzer, andere länger:

APP_MESSAGES = YAML.load_file(“#{RAILS_ROOT}/config/messages.yml”)

yaml:

fehlermeldungen:
kein_name: Hey Du, genau Du, gib mal Deinen Namen ein.
keine_freundin: …

Zugriff:
APP_MESSAGES[‘fehlermeldungen’][‘kein_name’]

Herzliche
Grüße,Michael

Am 08.01.2008 um 12:58 schrieb Jochen H.:

Hi!


rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug


Michael V.
Framheinstr. 1
22083 Hamburg

Phone: 0177 6 77 0129
E-Mail: [email protected]

“SF” == Stefan F. writes:

SF> Ich hatte mal gettext
SF> (http://manuals.rubyonrails.com/read/chapter/105)
SF> angeschaut, fand das aber recht kompliziert:
SF> Ist das Thema so kompliziert, oder gibt's da auch noch was
SF> Einfacheres um Nachrichten zentral zu verwalten?!

SF> [...]

Hi!

Da gibt es so eine Google / Yahoo / … group,
welche auch über den NNTP-Server news.gmane.org zu bekommen ist,
die sich speziell mit “i18n” beschäftigt:

gmane.comp.lang.ruby.rails.i18n

“HTH”

J.

Hallo,

wenn Du es über die yaml machen möchtest, kann man da ganz leicht die
sprache adden:

yaml:

de-DE:
fehlermeldungen:
kein_name: gib einen namen

en-EN
fehlermeldung
kein_name: what ist your name

beim laden kannst du dir schon die richtige sprache holen:

APP_MESSAGES = YAML.load_file(“#{RAILS_ROOT}/config/messages.yml”)[‘de-
DE’]

Wenn Du dies in der enviroment machst, kannst du überall so zugreifen:
APP_MESSAGES[‘fehlermeldung’][‘kein_name’]

Herzliche
Grüße,Michael

PS: Ist sicher nicht die besste lösung ist mir aber beim lesen des
post so in den sinn gekommen, ansonsten nimm Gettext.

Am 08.01.2008 um 14:18 schrieb Jochen H.:

diese ganzen Strings nicht nur zentral
so à la “en-us, en, de-de, de”.


rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug


Michael V.
Framheinstr. 1
22083 Hamburg

Phone: 0177 6 77 0129
E-Mail: [email protected]

“MV” == Michael V. writes:

MV> es gibt viele Wege nach Rom,
MV> manche sind kürzer, andere länger:

Manche sind aber auch nicht ganz so kurz,
wie man denkt! :wink:

MV> APP_MESSAGES = 

YAML.load_file("#{RAILS_ROOT}/config/messages.yml")

MV> yaml:

MV> fehlermeldungen:
MV>  kein_name: Hey Du, genau Du, gib mal Deinen Namen ein.
MV>  keine_freundin: ...

MV> Zugriff:
MV> APP_MESSAGES['fehlermeldungen']['kein_name']

Ich glaube, die Idee war doch,
diese ganzen Strings nicht nur zentral
sondern dann auch noch nach Sprache mehr oder weniger getrennt zu
halten.

Ich bin mir ja auch noch ganz sicher,
dass man mit einem ganz, ganz kleinen Kniff auch noch über Sprachen
selektieren kann …

Übrigens, nur um noch Möglichkeiten für Höhenflüge zu lassen,
vielleicht will man ja auch noch so etwas behandeln, wie man
Sprach-Prioritäts-Listen,
so à la “en-us, en, de-de, de”.

yo, scheint mir das “simplest thing that could possibly work” zu
sein: Mehr wollte ich ja eigentlich auch schon gar nicht und das ist
so schrecklich wenig Code, das ich da auch getrost auf den Moment
warten kann, an dem ich die fortgeschrittenen Features von gettext
und simple_localization und wie sie alle heißen brauche.

Ich würde der ganzen Sachen dann aber doch noch einen Helper
spendieren, damit man seine Aufrufe wie in gettext schreiben kann:

_(:fehlermeldung, :kein_name)
_(:label, :submit)

sodass man auch ohne allzuviel Klammern in den Namensräumen absteigen
kann - und damit ist man dann auch für gettext halbwegs gerüstet,
wenn es dann doch mal soweit ist…

Ich probier erstmal das, wenn’s dann ans Imperium-Gründen und nach
Amerika, Tuvalu und Saudi-Arabien expandieren geht, dann werd ich
aber sicher noch mal in gettext&simple_localization reinschauen, die
klangen irgendwie am eingängigsten für fortgeschrittene Sachen …

Viele Grüße&vielen Dank an alle für die Anregungen
Stefan

Am 08.01.2008 um 16:04 schrieb Michael V.: