WebsiteBaker Logo
  • *
  • Templates
  • Help
  • Add-ons
  • Download
  • Home
*
Welcome, Guest. Please login or register.

Login with username, password and session length
 

News


WebsiteBaker 2.13.6 is now available!


Will it continue with WB? It goes on! | Geht es mit WB weiter? Es geht weiter!
https://forum.websitebaker.org/index.php/topic,32340.msg226702.html#msg226702


The forum email address board@websitebaker.org is working again
https://forum.websitebaker.org/index.php/topic,32358.0.html


R.I.P Dietmar (luisehahne) and thank you for all your valuable work for WB
https://forum.websitebaker.org/index.php/topic,32355.0.html


* Support WebsiteBaker

Your donations will help to:

  • Pay for our dedicated server
  • Pay for domain registration
  • and much more!

You can donate by clicking on the button below.


  • Home
  • Help
  • Search
  • Login
  • Register

  • WebsiteBaker Community Forum »
  • WebsiteBaker Support (2.8.x) »
  • General Help & Support »
  • Hilfe & Support (deutsch) »
  • Diskussion über WB (closed) »
  • LANGUAGE Files - das leidige Thema: Multilanguage (Abhilfe)
  • Print
Pages: [1]   Go Down

Author Topic: LANGUAGE Files - das leidige Thema: Multilanguage (Abhilfe)  (Read 2369 times)

Offline Stefek

  • Posts: 6177
  • Gender: Male
  • ("ړ)
LANGUAGE Files - das leidige Thema: Multilanguage (Abhilfe)
« on: September 10, 2010, 04:39:39 PM »
Hallo,

[ NOTE: obwohl dies ein gangbarer Weg ist, im nächsten Post ist ein weiterer möglicher Ansatz, wie man das ledige Problem angehen kann - Stefek]

sicher hat sich schon manch ein Modulentwickler darüber geärgert, dass man die Language Files immer vollständig anpassen muss, wenn man mehrere Sprachfiles erstellt, um das Module in mehreren Sprachen anzubieten (multilanguage).

Ich arbeite neuerdings zwar gerne mit Thorns PMF an Modulen (weil es eine praktische Funktionssammlung ist), aber ich will auch eine Herangehensweise vorstellen, die für die "Standardsverfahrens weise" von WB geeignet ist.

Das Prinzip ist denkbar einfach und wenn Du bereits an Modulen gearbeitet hast, wirst Du diese Lösung möglicherweise begrüßen.

Auch für die Core-Files dürfte es von Nutzen sein, denn schließlich gibt es mittlerweile eine Menge Sprachpakete und ich kann mir vorstellen, dass es eine ziemliche "Bremse" für Veröffentlichungen sein kann, wenn man auf die verschiedenen Übersetzungen warten muss.


WAS TUT ES?
Die Herangehensweise ermöglicht es, neue Indexes zum ENglischen Sprachfile hinzuzufügen und dann weiter zu arbeiten, ohne auch die anderen Sprachfiles anzupassen.
Normallerweise ist es so, dass sich NOTICES einschalten Notice: Undefined index: BLABLA in C:\xampp\htdocs\ wenn man in WB eine andere Sprache als EN eingestellt hat und da eben diese Übersetzungen noch fehlen.

Mit dieser Methode ist es nicht mehr der Fall.
Alles was übersetz ist, ist übersetzt und was nicht -> hier wird dann auf die EN.php und das englische Sprach-Array zurückgegriffen.

Hier ein Beispiela anhand des NEWS Modules:

Code: [Select]
<?php 
//Modul Description
$module_description = &#39;Mit diesem Modul k&ouml;nnen sie eine News Seite ihrer Seite hinzuf&uuml;gen.&#39;;

/**
 * include original Language Array as fallback for non existing indexes
 */
require(&#39;EN.php&#39;);     
 
/**
  Generate Language Array for the specified Language
*/
$MOD_NEWS_de = array(
  
//index             => value
  
  //Variables for the backend 
//  &#39;SETTINGS&#39;          => &#39;News Einstellungen&#39;,
  
  //Variables for the frontend
  
&#39;TEXT_READ_MORE&#39;    => &#39;Weiterlesen&#39;,
  
&#39;TEXT_POSTED_BY&#39;    => &#39;Ver&ouml;ffentlicht von&#39;,
  
&#39;TEXT_ON&#39;           => &#39;am&#39;,
  
&#39;TEXT_LAST_CHANGED&#39; => &#39;Zuletzt ge&auml;ndert am&#39;,
  
&#39;TEXT_AT&#39;           => &#39;um&#39;,
  
&#39;TEXT_BACK&#39;         => &#39;Zur&uuml;ck&#39;,
  
&#39;TEXT_COMMENTS&#39;     => &#39;Kommentare&#39;,
  
&#39;TEXT_COMMENT&#39;      => &#39;Kommentar&#39;,
  
&#39;TEXT_ADD_COMMENT&#39;  => &#39;Kommentar hinzuf&uuml;gen&#39;,
  
&#39;TEXT_BY&#39;           => &#39;von&#39;,
  
&#39;PAGE_NOT_FOUND&#39;    => &#39;Seite nicht gefunden&#39;,
);

/*
  Now, merge the arrays for the final Output.
*/

$MOD_NEWS = array_merge($MOD_NEWS, $MOD_NEWS_de);
/*
  The function &#39;array_merge()&#39; will replace EN indexes by 
  those from the new LANGUAGE array but will keep all 
  NOT specified indexes an its values intact.
*/


/* TEST Array Output */
// print &#39;<pre>&#39;;
// print_r($MOD_NEWS);
// print &#39;</pre>&#39;;

$TEXT[&#39;UNKNOWN&#39;] = &#39;Gast&#39;;
?>


Es wird zuerst das EN Array herangezogen, dann das DE geschaffen, dann werden beide mit array_merge() verschmolzen, sodass fehlende Indizes der neuen Sprache aus der originalsprache beibehalten werden.


Feedback willkommen.
Ich hoffe natürlich, Euch damit ein wenig Frustration beim nächsten Projekt ersparen zu können.

Frohes Backen,
Stefek

P.S. Im Anhang findet ihr die so angepasste DE.php des Newsmoduls als Beispiel und zum unmittelbaren Testen. Achtet darauf, dass ich dort die deutsche Übersetzung für 'SETTINGS' auskommentiert habe.

[gelöscht durch Administrator]
« Last Edit: September 10, 2010, 05:32:22 PM by Stefek »
Logged
"Gemeinsam schafft man mehr."

gemeinsam
1. mehreren Personen oder Dingen in gleicher Weise gehörend, eigen
2. in Gemeinschaft [unternommen, zu bewältigen]; zusammen, miteinander
#Duden

Offline DarkViper

  • Forum administrator
  • *****
  • Posts: 3087
  • Gender: Female
Re: LANGUAGE Files - das leidige Thema: Multilanguage (Abhilfe)
« Reply #1 on: September 10, 2010, 05:10:01 PM »
das geht auch noch ein klein wenig einfacher:
in den aktuellen Sprachmodulen werden die Arrays nicht explizit angelegt, sondern einfach durch Zuweisung von Werten initialisiert.
Das ermöglicht jetzt eine ganz simple Vorgehensweise:

Die EN.php wird grundsätzlich primär gepflegt und enthält alle Texte.
Alle anderen Sprachen werden sukkzesive gelegentlich 'nachgezogen'.
jetzt genügt ein einfaches
Code: [Select]
<?php
include(&#39;EN.php&#39;);
include(&#39;DE.php&#39;);
?>
(natürlich mit entsprechenden 'if exists' - Abfragen etc.)

Was passiert:
durch den Include der EN.php werden sämtliche Sprachvariablen wie gewohnt angelegt.
wird jetzt noch eine 2. Sprache (hier DE.php) includiert, so erfolgt einfach eine Neuzuweisung der Werte zu den bereits bestehenden Arrayelementen. D.h., dass die englischen Texte durch die Texte der 2. Sprache einfach überschrieben werden. Fehlt in der 2. Sprache ein Key-Value Paar, passiert nichts weiter, als dass das im Englischen bereits includierte Paar seinen englischen Wert behält.

Die 'Beschreibungsvariab len'
Code: [Select]
<?php
$language_code 
= &#39;EN&#39;;
$language_name = &#39;English&#39;;
$language_version = &#39;2.8&#39;;
$language_platform = &#39;2.8.x&#39;;
$language_author = &#39;Ryan Djurovich, Christian Sommer&#39;;
$language_license = &#39;GNU General Public License&#39;;
?>
enthalten danach die Werte aus der zuletzt includierten Sprachdatei, da auch sie überschrieben werden.

Stefeks Methode funktioniert auch problemlos, erfordert jedoch erstens eine Änderung an der Struktur der Sprachdateien und zweitens ist bei 95% der Coder der Befehl 'unset($variable)' leider unbekannt, so dass bei array_merge() für die ganze Laufzeit der 3-fache Speicherplatz für die Sprachvariablen belegt bleibt (Sprache1 + Sprache2 + Mergeresult).
« Last Edit: September 10, 2010, 05:20:23 PM by DarkViper »
Logged
Der blaue Planet - er ist nicht unser Eigentum - wir haben ihn nur von unseren Nachkommen geliehen

"We need education to cope with digitalization - and NOT the digitalization of education.!"

Tägliches Stoßgebet: Oh Herr, wirf Hirn vom Himmel !

Offline Stefek

  • Posts: 6177
  • Gender: Male
  • ("ړ)
Re: LANGUAGE Files - das leidige Thema: Multilanguage (Abhilfe)
« Reply #2 on: September 10, 2010, 05:29:55 PM »
Du hast Recht.
Damit geht es einfacher.

Warum wird dann nicht die eigens dafür angedachte (aber nicht mal in Coremodulen verwendete Funktion) entsprechend angepasst?




Code: (framework/module.functions.php) [Select]
<?php 
// function to obtain the module language file depending on the backend language of the current user
if (!function_exists(&#39;get_module_language_file&#39;)) {
function get_module_language_file($mymod_dir) {
$mymod_dir = strip_tags($mymod_dir);
if(file_exists(WB_PATH .&#39;/modules/&#39; .$mymod_dir .&#39;/languages/&#39; .LANGUAGE .&#39;.php&#39;)) {
// a module language file exists for the users backend language
return (WB_PATH .&#39;/modules/&#39; .$mymod_dir .&#39;/languages/&#39; .LANGUAGE .&#39;.php&#39;);
} else {
// an English module language file must exist in all multi-lingual modules
if(file_exists(WB_PATH .&#39;/modules/&#39; .$mymod_dir .&#39;/languages/EN.php&#39;)) {
return (WB_PATH .&#39;/modules/&#39; .$mymod_dir .&#39;/languages/EN.php&#39;);
} else {
echo &#39;<p><strong>Error: </strong>&#39;;
echo &#39;Default language file (EN.php) of module "&#39; .htmlentities($mymod_dir) .&#39;" does not exist.</p><br />&#39;;
return false;
}
}
}
}

Das würde doch auf jeden Fall nützlich sein, wenn sie angepasst ist und auch besser bekannt.

Gruß,
Stefek
Logged
"Gemeinsam schafft man mehr."

gemeinsam
1. mehreren Personen oder Dingen in gleicher Weise gehörend, eigen
2. in Gemeinschaft [unternommen, zu bewältigen]; zusammen, miteinander
#Duden

Offline DarkViper

  • Forum administrator
  • *****
  • Posts: 3087
  • Gender: Female
Re: LANGUAGE Files - das leidige Thema: Multilanguage (Abhilfe)
« Reply #3 on: September 10, 2010, 05:50:17 PM »
step by step... ;)
Ich hab's gerade noch als 'Schönheitskorrektur' eingestuft, bis noch ein paar weitere, wichtigere Teile bereinigt sind.
Logged
Der blaue Planet - er ist nicht unser Eigentum - wir haben ihn nur von unseren Nachkommen geliehen

"We need education to cope with digitalization - and NOT the digitalization of education.!"

Tägliches Stoßgebet: Oh Herr, wirf Hirn vom Himmel !

Offline Stefek

  • Posts: 6177
  • Gender: Male
  • ("ړ)
Re: LANGUAGE Files - das leidige Thema: Multilanguage (Abhilfe)
« Reply #4 on: September 10, 2010, 05:56:44 PM »
So so,
ich verliere im Moment leider die Brotkrümmel aus der Sicht.

Aber wenn Du es sagst, dann hoffe ich mal was.

Gruß,
Stefek
Logged
"Gemeinsam schafft man mehr."

gemeinsam
1. mehreren Personen oder Dingen in gleicher Weise gehörend, eigen
2. in Gemeinschaft [unternommen, zu bewältigen]; zusammen, miteinander
#Duden

  • Print
Pages: [1]   Go Up
  • WebsiteBaker Community Forum »
  • WebsiteBaker Support (2.8.x) »
  • General Help & Support »
  • Hilfe & Support (deutsch) »
  • Diskussion über WB (closed) »
  • LANGUAGE Files - das leidige Thema: Multilanguage (Abhilfe)
 

  • SMF 2.0.19 | SMF © 2017, Simple Machines
  • XHTML
  • RSS
  • WAP2