Mehrsprachigkeit / Multilingual

Hier können Probleme und alles andere in Deutscher Sprache gelöst werden.
Post Reply
designor
Regular
Posts: 14
Joined: Sun Dec 09, 2007 4:58 pm
Contact:

Mehrsprachigkeit / Multilingual

Post by designor »

Hallo Forumuser,

ich möchte ein Blog in Deutsch und Sorbisch betreiben.
http://www.sollschwitz.de

Da es Sorbisch als auswählbare Sprache aber nicht gibt, hab ich die tschechische Sprachdatei als Vorlage genommen und erstmal soweit modifiziert, dass ein paar der Überschriften auch in Sorbisch erscheinen, z.B. "Kalender", "Archive" und "Sprachauswahl"
Tschechisch deswegen, weil es dem Sorbischen am nächsten kommt, es werden auch gleiche Buchstaben verwendet.
Das Plugin "static_pages" hab ich auch soweit überlistet, dass es je nach gewählter Sprache andere Links anzeigt, ein direkter Eingriff in die Datenbank machts möglich... direkt im Plugin gehts nicht, soweit ich gemerkt habe.

Jetzt habe ich noch 2 Probleme:
1. Ich möchte die Überschriften der restlichen Plugin-Boxen auch gern in Sorbisch haben, also z.b. "Kategorien" "Umfragen" oder "Blog abonnieren", aber leider gibt es dafür keine Möglichkeit in der zentralen Sprachdatei, und die Sprachdateien der einzelnen Plugins ändern nur das Aussehen in der Admin-Oberfläche :cry: Und direkt in der Datenbank kann ich auch nicht eingreifen, da die Tabelle "serendipity_config" keine Zeile "language" enthält wie die Tabelle "static_pages" bzw. diese nicht auswertet, wenn man sie anlegt.

2.Ich hab zwar das Multilingual-Plugin installiert, aber wenn ich einen Beitrag mit sorbischen Buchstaben schreiben will, verschwinden diese nach dem Speichern entweder oder werden mit ? ersetzt. Ich habe aber UTF-8 als Characterset, trotzdem werden nach Möglichkeit solche Buchstaben als "named entities" maskiert oder eben mit Fragezeichen ersetzt.

Irgendwie muss es doch aber möglich sein, nur wie?

ich bin dankbar für jeden Denkansatz

Torsten
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: Mehrsprachigkeit / Multilingual

Post by garvinhicking »

Hi!
Das Plugin "static_pages" hab ich auch soweit überlistet, dass es je nach gewählter Sprache andere Links anzeigt, ein direkter Eingriff in die Datenbank machts möglich... direkt im Plugin gehts nicht, soweit ich gemerkt habe.
Müsste auch direkt über's plugin gehen, wenn Du das Dropdown "Sprache" für eine statische Seite entsprechend setzt?
1. Ich möchte die Überschriften der restlichen Plugin-Boxen auch gern in Sorbisch haben, also z.b. "Kategorien" "Umfragen" oder "Blog abonnieren", aber leider gibt es dafür keine Möglichkeit in der zentralen Sprachdatei, und die Sprachdateien der einzelnen Plugins ändern nur das Aussehen in der Admin-Oberfläche :cry: Und direkt in der Datenbank kann ich auch nicht eingreifen, da die Tabelle "serendipity_config" keine Zeile "language" enthält wie die Tabelle "static_pages" bzw. diese nicht auswertet, wenn man sie anlegt.
Das ist schwierig, da der Titel von Seitenleistenplugins nur einmalig vergeben wird.

Dafür gäbe zwei Möglichkeiten, einzugreifen. Beide haben kleinere Nachteile.

1. Du gibst keinen Titel für das Seitenleistenplugin ein und löschst die Datenbankeinträge (/title) für die Plugins, wo dies schon geschah. Dadurch verwendet das Plugin dann nämlich die Standard-Sprachkonstante, die Du entsprechend deiner Sprachdatei abändern kannst. Du darfst danach jedoch an der Konfiguration eines Seitenleistenpluigins nichts mehr ändern, da ansonsten wieder ein neuer Titel in der Datenbanktabelle gespeichert wird. Müsstest du also jedesmal nach dem ändern eines plugins wieder in die Datenbank und den Konfig-Wert rausnehmen.

2. Du "abstrahierst" das Titelfeld. Dazu trägst Du in das Eingabefeld sowas ein wie "PLUGIN_TITLE_1". Dann erzeugst Du diese Sprachkonstante in deiner Sprachdatei. Dann musst du in der sidebar.tpl Templatedatei folgendes ändern:

Code: Select all

{if $item.title != ""}<h3 class="serendipitySideBarTitle {$item.class}">{$item.title}</h3>{/if}
Das änderst Du dann ab in:

Code: Select all

{if $item.title != ""}<h3 class="serendipitySideBarTitle {$item.class}">{$item.title|@constant}</h3>{/if}
Dadurch wird die SPrachkonstante nämlich ausgelesen. Damit der "constant" modifier genutzt werden kann, musst Du eine config.inc.php deines templates erstellen (oder bearbeiten) und die zeile

Code: Select all

$serendipity['smarty']->security = false;
setzen. Dadurch kann man dann auf PHP-Funktionen in Smarty zugreifen.
2.Ich hab zwar das Multilingual-Plugin installiert, aber wenn ich einen Beitrag mit sorbischen Buchstaben schreiben will, verschwinden diese nach dem Speichern entweder oder werden mit ? ersetzt. Ich habe aber UTF-8 als Characterset, trotzdem werden nach Möglichkeit solche Buchstaben als "named entities" maskiert oder eben mit Fragezeichen ersetzt.
Was verwendest Du für einen Browser? Und Du musst den WYSIWYG-Editor deaktivieren, falls Du den benutzt.

Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
designor
Regular
Posts: 14
Joined: Sun Dec 09, 2007 4:58 pm
Contact:

Post by designor »

Hallo Garvin,

na das ist ja eine blitzschnelle Antwort! :D
Vielen Dank

Ich werde wahrscheinlich Variante 2 benutzen, in der Datenbank grabe ich nämlich nicht so gern manuell herum.
Werde meine Erfolge dann hier posten...

Was die multilingualen Einträge betrifft:
ich hab den FCKeditor benutzt, als Browser natürlich Firefox. Funktionieren Sonderzeichen auch nicht mit dem TinyMCE?
Wenn nicht, auch nicht schlimm, Hauptsache ich bekomm sie überhaupt problemlos rein.

ich mach mich dann mal an die Arbeit

Torsten
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post by garvinhicking »

Hi!
ich hab den FCKeditor benutzt, als Browser natürlich Firefox. Funktionieren Sonderzeichen auch nicht mit dem TinyMCE?
Ich fürchte nicht. WYSIWYG editoren greifen oft auf named HTML entities zurück anstelle UTF-8 DAten roh durchzureichen.

Da ist leider meine Erfahrung limitiert, ich meine TinyMCE hat zumindest ne Konfigoption für sowas.

Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
designor
Regular
Posts: 14
Joined: Sun Dec 09, 2007 4:58 pm
Contact:

Post by designor »

Hallo Garvin,

ich habe die Variante 2 mit der Abstraktion des Titelfelds versucht, funktioniert super :-) !
Nun müßte ich nur noch den Titel und Subtitel des Blogs genauso über die Sprachdatei einstellen können ... wenn ich dort z.b. FRONTEND_BLOG_TITLE als Abstraktion eingebe, dann erscheint genau das "FRONTEND..." als Titel bzw. Subtitel anstatt des Wertes aus der Sprachdatei.
Kannst du mir bitte nochmal auf die Sprünge helfen?

Also eine komplette Umschaltung der Überschriften zwischen 2 Sprachen funktioniert, was allerdings die multilingualen Einträge angeht, sieht es schlecht aus.
Ich habe den WYSIWYG-Editor deaktiviert, Sonderzeichen eingefügt und in der internen Vorschau werden diese auch korrekt angezeigt.
Wenn ich den Beitrag allerdings speichere und dann im Blog anschaue, sind wieder nur ?? zu sehen.
Allerdings sind schon in der Datenbank eben diese ??? angekommen, auch wenn ich manuell in den jeweiligen Eintrag in der DB die Sonderzeichen einfüge und speichere, sind sie sofort wieder zerstört.
Was mach ich nur falsch?
In PHPMyAdmin steht bei Kollation der einzelnen Tabellen der DB ein wildes Gemisch aus "utf8_general_ci" "utf8_unicode_ci" und "latin1_swedisch_ci" an! Sollte dort nicht eigentlich nur "utf8_unicode_ci" stehen?
Ich hab dummerweise keinen Plan davon, wie ich das wieder richtig biege. Kann ich das in jeder Tabelle per Hand ändern oder geht das irgendwie automatisch zu machen?

Vielen Dank für eure Hilfe
Torsten


UPDATE:
hab manuell die Kollation für "entries" "entrycat" und "entryproperties" komplett auf "utf8_unicode_ci" umgestellt und einen neuen Beitrag mit Sonderzeichen angelegt
UND ES GEHT.
AUCH MIT DEM WYSIWYG-Editor ! :-)
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post by garvinhicking »

Hi!
ich habe die Variante 2 mit der Abstraktion des Titelfelds versucht, funktioniert super :-) !
Nun müßte ich nur noch den Titel und Subtitel des Blogs genauso über die Sprachdatei einstellen können ... wenn ich dort z.b. FRONTEND_BLOG_TITLE als Abstraktion eingebe, dann erscheint genau das "FRONTEND..." als Titel bzw. Subtitel anstatt des Wertes aus der Sprachdatei.
Kannst du mir bitte nochmal auf die Sprünge helfen?
Sicher dass Du mit $CONST.FRONTEND_BLOG_TITLE drauf zugreifst? In welcher Datei hast du die Konstante deklariert?

Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
designor
Regular
Posts: 14
Joined: Sun Dec 09, 2007 4:58 pm
Contact:

Post by designor »

ich war ganz "clever" :D
und hab in der admin-oberfläche in der konfiguration bei blogtitel bzw. beschreibung eben FRONTEND_BLOG_TITEL eingegeben und mir gewünscht, daß s9y merkt, daß in der sprachdatei ein wert dafür angegeben ist
:oops:
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post by garvinhicking »

Hi!

Nö. :) Da musst Du auch mit der {$bla|@constant} methode in deinem index.tpl arbeiten.

Grüße,
garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
designor
Regular
Posts: 14
Joined: Sun Dec 09, 2007 4:58 pm
Contact:

Post by designor »

hmm, bin jetzt glaub ich dahintergestiegen
danke dir!!

jetzt nur noch eine einzige sache, die mich stört. ich hab schon bissel darüber gelesen, aber das hat mir nicht grad mut gemacht.
Datumsangaben, also Tages- oder Monatsnamen auf Sorbisch zu bekommen ist nach dem was ich gelesen hab nicht möglich, richtig? Da sorbisch ja keine "offizielle" Sprache ist, ja nicht mal ein eigenes Kürzel wie "DE de" hat und die Namen der Monate und Tage fest in die date-funktion integriert sind.

sorry das ich mich bissel krumm ausdrücke :wink:

oder gibt es noch ein hintertürchen, um die Monats- und Tagesnamen in Sorbisch zu bekommen?

ein schönes Wochenende wünscht
der Torsten
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post by garvinhicking »

Hi!

Korrekt, Tagesnamen funktionieren bei s9y über PHPs strftime() Funktionalität, die wiederrum klappt nur mit dem "locale" System des Servers. Da müsstest du also einen provider darum bitten, ein locale für sorbisch erst zu erzeugen, und dann auch noch einzubinden.

Schwer. :)

Aber, das Hintertürchen gibt's: Smarty. Du musst eine eigene PHP Funktion schreiben die dir das datum in sorbisch ausgibt. Diese PHP-Funktion registrierst Du dann über die config.inc.php deines templates über

Code: Select all

function mytime($timestamp) {
 return 'sorbische zeit: ' . date('mDY') . ' BC AD';
}

$serendipity['smarty']->register_function('mytime', 'mytime');
Dann kannst du in deiner entries.tpl nach "|@formatTime" modifieren suchen, di eersetzt Du dann durch deinen "|mytime" modifier, und kannst dann timestamps in deinem wunschformat wandeln.

Mehr infos dazu in der Smarty-Doku und PHP-Doku, grundsätzlich ist das eine s9y-unabhängige sache. Muss nur in PHP eingebaut und in s9y smarty templates angesprochen werden.

Grßüe,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
designor
Regular
Posts: 14
Joined: Sun Dec 09, 2007 4:58 pm
Contact:

Projekt "Mehrsprachigkeit" erfolgreich

Post by designor »

Hallo Garvin,

ich habe mich mit deinen Tips beschäftigt und siehe da, inzwischen funktioniert alles genau so wie ich das wollte!

Seitenleisten, Kalender und Subtitle etc sind mehrsprachig geworden, zu bestaunen unter http://www.sollschwitz.de

Vielen Dank für deine schnelle Hilfe!
Die komplette Unterstützung der Mehrsprachigkeit wäre doch sicher ein interessantes Feature für eine kommende Version von S9Y? Also so, daß man alle ausgegebenen Werte in der Sprachdatei anpassen kann, ohne daß in einem Template was umprogrammiert werden muß. Vielleicht auch ein Plugin, in dem man Werte in der Sprachdatei direkt online ändern kann.

Wenn ich irgendwie helfen kann...

Mit freundlichen Grüßen und den besten Wünschen für das neue Jahr

Torsten
Post Reply