php.de

Zurück   php.de > Webentwicklung > Software-Design

Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
Alt 17.04.2011, 14:04  
Benutzer
 
Registriert seit: 04.10.2010
Beiträge: 62
PHP-Kenntnisse:
Fortgeschritten
Geryon befindet sich auf einem aufstrebenden Ast
Standard Mehrsprachigkeit mit Hilfe von Files

Hallo,

ich bin gerade am grübeln darüber, wie ich das Datenbankkonzept für Mehrsprachigkeit umsetze.

Ich habe im Internet verschiedene Ansätze gefunden. Jedoch scheint keiner auf meine Anforderungen zu passen.

1. Möglichkeit: SQL Tabelle nach rechts erweitern. Ich find’s komisch, dass das trotz der massiven Nachteile immer noch so oft im Internet angepriesen wird.

2. Möglichkeit: Mehrere Sprachen in der gleichen Tabelle untereinander in Zeilen Speichern. Spätestens wenn ich mit Nested Sets arbeite bekomme ich hier ein mega Chaos. Es fängt aber schon bei den IDs und auto_increment an.

3. Möglichkeit: Alle sprachabhängigen Inhalte in eine extra Tabelle auslagern. Diese Methode ist schon ganz gut aber erfordert Joins und erzeugt zusätzliche Datenbanklast. Beispiel: Nested Sets Befehle werden an dieser Stelle sehr komplex

4. Möglichkeit: Alle Sprachinhalte in ein und dieselbe Zelle Stecken und die verschiedenen Abschnitte im Text mit speziellen Trennzeichen unterteilen. Das ist zwar eine Möglichkeit aber die einzelnen Zellen würden extrem Aufgebläht. Zum Beispiel bei der Speicherung von Artikeln. Außerdem wäre die Software zum Bearbeiten solcher Zellen relativ kompliziert (Bearbeiten von Artikeln)

Meine Idee: Ich speichere die Sprachabhängigen Inhalte einfach nicht in der Datenbank. Sondern ich speichere diese Inhalte in Dateien. Alles was ich nun tun muss, ist meine Datenbankklasse zu erweitern. Dort gibt es eine Methode getRows($sql). Diese Methode müsste nun nur noch prüfen, ob es zu den ausgelesenen Spalten zusätzliche Werte in Dateien gibt. Diese würden dann in der derzeit eingestellten Sprache nachgeladen werden.

Vorteile: Keine Datenbanklast, Spontanes umschalten auf alternative Sprache wenn angeforderte Sprache nicht vorhanden ist, kann ohne großen Aufwand nachgerüstet werden, SQL-Kommandos bleiben absolut leserlich

Nachteile: Sicherung umständlicher, Benutzung der Inhalte durch mehrere System unter Umständen schwierig, Nachteil der fehlenden Volltextsuche – müsste über mehrsprachige Keywords ausgeglichen werden

Was haltet ihr von dieser Möglichkeit?
Geryon ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 17.04.2011, 14:13  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.994
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Nichts. Nimm 3)
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 17.04.2011, 15:04  
Benutzer
 
Registriert seit: 04.10.2010
Beiträge: 62
PHP-Kenntnisse:
Fortgeschritten
Geryon befindet sich auf einem aufstrebenden Ast
Standard

@nikosch: warum?
Geryon ist offline   Mit Zitat antworten
Alt 17.04.2011, 15:16  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von Geryon
@nikosch: warum?
Wenn ich hier mal stellvertretend einspringen darf:

Die - teils massiven - Nachteile der anderen Methoden und auch deines eigenen Vorschlags hast du doch schon erkannt.

Zitat:
3. Möglichkeit: Alle sprachabhängigen Inhalte in eine extra Tabelle auslagern. Diese Methode ist schon ganz gut aber erfordert Joins und erzeugt zusätzliche Datenbanklast.
Wenn dir das Sorgen macht - implementiere Caching.

Zitat:
Beispiel: Nested Sets Befehle werden an dieser Stelle sehr komplex
Keine Arme, keine Kekse.

Du kannst kein System mit erhöhter Komplexität in den Anforderungen bauen, ohne dass auch die Komplexität der Umsetzung an einigen Stellen steigen wird.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 17.04.2011, 15:43  
Erfahrener Benutzer
 
Registriert seit: 17.02.2006
Beiträge: 132
PHP-Kenntnisse:
Fortgeschritten
marcusson befindet sich auf einem aufstrebenden Ast
Standard

Also ich mache es so wie du beschreibst, allerdings etwas weniger kompliziert.
1) Es gibt ein Standardformat: OASIS XLIFF, welches diese Aufgabe löst
2) da es XML ist, kann man das mit Simple-XML direkt laden und an eine Template-Engine oder Ersetzungsroutine geben
3) weil es dokumentbasiert ist, kann man es mit mit einer Standardsuchmaschine bequem durchsuchen und die Datei-Id mit der passenden URL verknüpfen
4) Da XLIFF ein Standard ist, kannst du es offline mit allen gängigen Translation Memory Tools (wie dem kostenlosen Omega-T oder dem XLIFF Editor) bearbeiten - sogar mit Anbindung von externen Übersetzungshilfen und Online-Wörterbüchern
5) Die Synchronisation von Dateien löst man in der Regel indem man diese an einen gemeinsamen Speicherort auslagert. Häufig benutzte Dateien kann man on-demand in einen lokalen File-Cache auslagern, wenn man mehrere Front-End-Server hat.

XLIFF kann beides: es hat ein einfaches Key-Value-Format, dass man sehr leicht bearbeiten kann, verfügt aber auch über weitergehende Funktionen wie kontextabhängige Alternativübersetzungen, Gruppierung von Textpassagen und Freigabemechanismen, über anzugeben wann eine in Überarbeitung befindliche Übersetzung publiziert werden darf. Die vorhandenen Tools können (je nach Preisklasse) Simultanübersetzungen von mehreren Übersetzern gleichzeitig, in Datenbanken gespeicherte Projekte, einen Glossar, Rechtschreibkontrolle, automatische Übersetzung über Anbindung externe Dienste a la Google-Translate. Und da es natürlich alles Textdateien sind, kann man sie notfalls immer bequem über Versionsverwaltungssysteme einchecken und auf mehreren Entwicklerrechnern konkurrierend bearbeiten. Wenn es sein muss auch auf einem Server direkt über die Kommandozeile.

Mir persönlich gefällt diese Lösung und ich setze sie auch schon seit langer Zeit recht erfolgreich so ein.
marcusson ist offline   Mit Zitat antworten
Alt 17.04.2011, 15:53  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.994
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Alles was Dateien können, können auch Datenbanken. Und was Du an DB-Performance einsparst, bezahlst Du in Filesystemoperationen.
Wenn es Dir zu viele Joins werden, dann benutze halt eine 2. i18n Tabelle. Selbst wenn Du die komplett ausliest, hast Du nicht mehr ausgegeben (Speicher!), als wenn Du ein File komplett einlesen musst. Aber Datenbanken sind eben von Natur aus als Feldbasierte Speicher ausgelegt, plain text Dateien nicht. Zudem hast DU die Datenverwaltung zentral an einem Ort.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 17.04.2011, 15:59  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

[OT]
Zitat:
Zitat von nikosch Beitrag anzeigen
dann benutze halt eine 2. i81n Tabelle.
Entweder meinst du i18n - oder du willst im wahrsten Sinne des Wortes Bullshit-Bingo spielen, und jeder darf sich seine Zahlen selber ausdenken ...
[/OT]
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 17.04.2011, 16:00  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.994
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zahlenverdreher. Darf nach 29.395 Beiträgen mal vorkommen. eins elf.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 17.04.2011, 19:15  
Benutzer
 
Registriert seit: 04.10.2010
Beiträge: 62
PHP-Kenntnisse:
Fortgeschritten
Geryon befindet sich auf einem aufstrebenden Ast
Standard

danke für die Antworten...

@marcusson: den Ansatz werde ich mir mal näher ansehen. Klingt auf jeden fall interessant.
Geryon ist offline   Mit Zitat antworten
Alt 17.04.2011, 21:39  
Erfahrener Benutzer
 
Registriert seit: 17.02.2006
Beiträge: 132
PHP-Kenntnisse:
Fortgeschritten
marcusson befindet sich auf einem aufstrebenden Ast
Standard

Schau es dir mal an: ist wirklich einfach zu realisieren.

OASIS FAQ: http://www.oasis-open.org/committees/xliff/faq.php
Code-Beispiel: http://yana.codeplex.com/SourceContr...iew/7562#11330
Youtube-Video: http://www.youtube.com/watch?v=A6dFZVE5lvw

Ab Minute 2:00 demonstriere ich die Verwendung des XLIFF-Editor.
Da hat man dann eine grafische Oberfläche, die man kostenlos verteilen darf.

Privat benutze ich Omega-T (Open-Source) für meine Handbücher.
Im professionellen Umfeld war ich mit Swordfish Translation Editor recht zufrieden.

Geladen wird die Datei mit simplexml_load_file() und danach kannst du über XPath "//trans-unit[@id=$foo]/target" Übersetzungen oder über "//group[@id=$bar]/trans-unit" Gruppen von Übersetzungen laden. Alles mit Bordmitteln, ohne zusätzliche Extensions.
marcusson ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Hilfe für Tierschutzseite hunde o.zukunft Sonstige 1 11.03.2011 21:10
Brauche Hilfe bei PHP / Onlineshop dennis2k Gewerblich 0 31.01.2011 19:08
Apache2.2 & PHP5 mit MSSQL Extension Fehler AwaKe Server, Hosting und Workstations 4 14.07.2010 14:36
Gettext (PO Files / MO Files editierung mit php backend) Floid Off-Topic Diskussionen 7 14.06.2010 20:33
Umfrage txt files anlegen adipure PHP Tipps 2010 3 12.02.2010 12:54
Registrierungs Script Hilfe lamopius PHP Tipps 2009 36 26.11.2009 16:24
Probleme mit Bildgenerierung swsche PHP Tipps 2009 8 31.10.2009 14:49
[Erledigt] Hilfe: Projektabreit Informatik und Technik bitte helft uns. Off-Topic Diskussionen 31 05.04.2006 18:25
[Erledigt] HILFE HILFE HILFE mysqladmin.exe fehlt Datenbanken 7 20.12.2005 14:00
HILFE ! Brauche ganz dringend hilfe! PHP Tipps 2005-2 2 10.10.2005 23:08
[Erledigt] VARIABLEN WERDEN NICHT RICHTIG VERARBEITET!!!! HILFE PHP Tipps 2005-2 6 02.07.2005 18:32
Download Files bzw. Upload files !! PHP Tipps 2005 2 29.03.2005 20:20
Files zippen mit ftp_exec()?! - Hilfe PHP-Fortgeschrittene 0 24.01.2005 10:39
[Erledigt] HILFE PHP Tipps 2004-2 1 16.12.2004 20:49
[Erledigt] .php5 files Server, Hosting und Workstations 11 31.08.2004 19:29

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
datenbank konzept mehrsprachigkeit, php mehrsprachigkeit beispiel code, php mehrsprachigkeit simplexml, simplexml_load_file trans-unit

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:34 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum