Das Plugin-System > Zeichensätze / UTF-8

Zeichensatz-Konvertierung

Wir empfehlen, die Zeichenketten, die Sie in Ihrem Plugin verwenden, in den momentan aktiven Zeichensatz zu konvertieren.

Wenn Sie Ihr Plugin im ISO-8859-15-Zeichensatz speichern und Sie die verwendeten Zeichenketten im Ereignis-Handler OnReadLang in die Sprach-Arrays ($lang_admin, $lang_user etc) einfügen, können Sie die Zeichenketten zunächst in ein temporäres Array speichern und dann mit folgendem Ansatz in den richtigen Zeichensatz konvertieren und in die Arrays einzufügen:

Quellcode
Darstellung:
  1. $_lang_user = array();
  2. $_lang_user['meinplugin_welcome']      = 'Willkommen';
  3. $_lang_user['meinplugin_sonderzeichen']   = 'ÄÖÜäöüß';
  4. ...
  5.  
  6. // convert charset
  7. global $currentCharset;
  8. $arrays = array('admin', 'client', 'user', 'custom');
  9. foreach($arrays as $array)
  10. {
  11.    $destArray = sprintf('lang_%s', $array);
  12.    $srcArray  = '_' . $destArray;
  13.  
  14.    if(!isset($$srcArray))
  15.       continue;
  16.  
  17.    foreach($$srcArray as $key=>$val)
  18.    {
  19.       if(function_exists('CharsetDecode') && !in_array(strtolower($currentCharset), array('iso-8859-1', 'iso-8859-15')))
  20.          $val = CharsetDecode($val, 'iso-8859-15');
  21.       ${$destArray}[$key] = $val;
  22.    }
  23. }

Der Code konvertiert die Arrays $_lang_admin, $_lang_client, $_lang_user und $_lang_custom in den korrekten Zeichensatz und führt diese dann mit den Arrays $lang_admin, $lang_client, $lang_user und $lang_custom zur weiteren Verwendung in b1gMail zusammen.

Der Code prüft dabei, ob b1gMail überhaupt in einem abweichenden Zeichensatz betrieben wird und ob mindestens b1gMail 7.2 installiert ist (durch Prüfung der Existenz der Funktion CharsetDecode). Sofern dies nicht der Fall ist, werden die Zeichenketten unverändert übernommen.

Ein Beispiel zur Anwendung des Codes finden Sie im Kapitel Beispiele.