i18n in der DB?

Gesperrt
rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

i18n in der DB?

Beitrag von rethus » So 27. Apr 2014, 19:38

Gibt es eigentlich irgend einen Trick, mit dem man die i18n("String zum Übersetzen"); in der Datenbank speichern kann, so dass dieser vom System auch verwendet werden kann?

Ziel wäre es, dass ich nur die Orginal-Sprachversion direkt in der DB abgelegt habe (z.B. Inhaltsfelder einer DB, die Spaltenüberschriften einer Tabelle nutzen). Die anderen Sprachen sollten dann über das i18n erfolgen.
Die Verwendung sollte vorwiegend für ein Plugin gelten, so dass die Übersetzungen dann auch im Locales Ordner abgelegt sind.

Bin gespannt, ob da schon jemand einen Ansatz hat.
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType

Oldperl
Beiträge: 4256
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: i18n in der DB?

Beitrag von Oldperl » Mo 28. Apr 2014, 11:38

Hallo,
  1. i18n benötigt grundsätzlich keine DB, macht IMO auch keinen Sinn
  2. Der anzuzeigende String wird direkt der i18n-Funktion übergeben. Findet die localize-Funktion keine Übersetzung in der gewünschten Sprache so wird der in der i18n-Funktion angegebene String angezeigt.
  3. Zum Übersetzen nimmt man Tools wie z.B. Po-Edit und legt die Dateien in entsprechende LC_MESSAGES Ordner.
  4. Im Plugin kann man eine eigene Sprach-Domain, mit eigenem Pfad zu den Sprachdateien, setzen, so dass ein Plugin unabhängig von den locale-Dateien von Contenido eigene Übersetzungen erhält.
  5. In Contenido 4.8 gibt/gab es einen "Bug" bei dem die Übersetzungen ausschließlich aus den po-Dateien, und nicht aus den generierten/umgewandelten mo-Dateien, genommen wurde. Ob der inzwischen behoben ist weiß ich nicht.
  6. Bei mi18n in Modulen verhält es sich ähnlich, es wird der Text der in der Funktion angegeben ist angezeigt solange keine Übersetzung in der aufgerufenen Sprache gefunden wird. Hier werden aber in der 4.8er die Übersetzungen in der DB vorgehalten. In der 4.9er hat sich da (leider) ein wenig was geändert.
Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Re: i18n in der DB?

Beitrag von rethus » Mi 30. Apr 2014, 11:41

Danke für dein Feedback.
Die Punkte die du erwähnst sind mir alle bekannt. Meine Frage zielt in eine andere Richtung.

Wenn ich z.B. ein dynamisches Modul habe, in dem ich z.B. über eine Art Formular-Generator eine Tabelle generieren kann, möchte ich z.B. gerne, dass die Spaltenköpfe so in der DB gespeichert werden, dass ich diese über ein solches lokales Sprachfile umbenennen kann.
Hintergrund ist dieser: Wenn ich eine solche Spalte erzeuge:
Name | Strasse | Hausnummer |
müsste ich bei Nutzung von Mehrsprachigkeit hier eine korrespondierende Tabelle erzeugen, wo dann die anderen Übersetzungen enthalten sind, die dann auch je nach Sprache ausgegeben werden.
Wäre es jedoch möglich, diese Beschreibungen als i18n so in der DB abzulegen, dass die Übersetzung weiter über locales erfolgt, könnte man es sich sparen die Mehrsprachigkeit in eigenen Tabellen abbilden zu müssen.
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType

Oldperl
Beiträge: 4256
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: i18n in der DB?

Beitrag von Oldperl » Mi 30. Apr 2014, 12:38

Hallo,

nein, müsstest du nicht. Entweder du übergibst die Spaltennamen direkt der Übersetzungsfunktion, dann musst du die Bezeichner aber händisch in der po-/pot-Datei ergänzen, oder du nimmst ein korrespondierendes Array mit den i18n-Strings.

Code: Alles auswählen

$translate = array(
    "feldname" => i18n("feldname"),
    ...
);
Bei der 2. Variante kannst du gleich die korrekte Übersetzung vorgeben oder, so wie ich es mache, grundsätzlich alles in Englisch angeben.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

AW: i18n in der DB?

Beitrag von rethus » Do 1. Mai 2014, 21:09

Danke für dein Feedback. Da hast du mich auf eine Idee gebracht. Ich kann ja einfach ein kleines Script schreiben dass via cron aufgerufen wird und die spaltennamen in eine datei im Pluginordner ablegt. Technisch keine Funktion,praktisch nur damt der .mo parser die findet und erfassen kann.

Gesendet von meinem GT-I9003 mit Tapatalk 2
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType

Gesperrt