Projekt lokalisieren

geronimo89

New member
Hallo, ich bin gerade dabei ein kleines Projekt zu basteln, das ich möglichst mehrsprachig verfügbar machen möchte.
Es geht um einen Anfängerkurs in Wordpress, für den ich ein Theme schreibe, nun wüsste ich gerne, was die beste Lösung wäre um das mehrsprachig zu tun, vielleicht mit einem replace script, zumindest kam mir das so in den Kopf.
Was ich tun möchte, ist die Kommentare, die ich überall zum Verständnis für absolute Anfänger eingefügt habe, durch die einer anderen Sprache ersetzt werden.
Beispiel Quelltext:
PHP:
<!-- Else (if there are no posts to load) -->
<?php else: ?>
<!-- Message when no content is available: -->
<p>Sorry, no content matched the criteria.</p>
<?php endif; ?>
Jetzt dachte ich, ich leg einfach mal eine Liste an, die den ganzen Kram auf Deutsch übersetzt, etwa so:
PHP:
'Message when no content is available:' => 'Mitteilung wenn kein Inhalt verfügbar ist:'

Gibt es dafür schon tolle Software oder Plugins für IDEs oder Beispielscripte in Bash und co? Oder bin ich auf den Kopf gefallen und sollte das alles anders machen?
 

bitmuncher

Moderator
Schmutzige Lösung:

Code:
function check_lang() {        
   ...

  if (!isset($_SESSION['lang'])) { 
    $lang = 'english'; 
  } else { 
    $lang = $_SESSION['lang']; 
  } 

  ... // hier die Pfad-Validierung rein

  // nur zurueckgeben, wenn der Pfad validiert wurde!
  return "languages/$lang.lng"; 
}

...
$lang = check_lang();
include_once($lang);
...

Dann im Unterordner languages entsprechende Dateien anlegen (z.B. english.lang), in denen du die Arrays definierst, die die entsprechenden Übersetzungen beinhalten: $txt['access_denied'] = 'Access denied!';
Diese kannst du dann in deiner Webapp verwenden: echo $txt['access_denied'];
Das kann natürlich noch um eine automatische Spracherkennung anhand der vom Browser akzeptierten Sprachen erweitert werden, man könnte die vom User gewählte Sprache auch in einem Cookie anstelle der Session speichern etc. pp.

Sauberer Weg: Ein Framework wie Zend verwenden und auf Funktionalitäten wie Zend_Translate zurückgreifen.
 

geronimo89

New member
Danke für die fixe Antwort, aber es geht mir eigentlich mehr darum die Quelltexte direkt in der richtigen Sprache auszuliefern und nicht nur das von PHP interpretierte auszugeben, da die Dateien irgendwie auch im Texteditor nett dokumentiert sein sollten.
Ich hab da mal so etwas hier gefunden:
toolkit:index · Translate Toolkit & Pootle
weiß aber nicht ob das so auf meinen Fall zutrifft.
 
Ich bin bei weitem kein Linuxexperte, aber kann grep nicht die regex aus einer Datei einlesen?
Wenn ja, könnte man in dieser direkt per /s alle benötigten Platzhalter ersetzen.
Werd ich gleich mal testen

Wirklich schön ist das auch dies nicht, sollte aber mit einzigartigen Platzhaltern problemlos funktionieren.
 

bitmuncher

Moderator
Mir stellt sich gerade die Frage warum man Sources lokalisieren sollte. Quelltexte schreibt man in Englisch und gut ist. Das hat sich in der IT-Welt eingebürgert und bewährt, da es wohl kaum Programmierer geben dürfte, die kein Englisch können. Schliesslich sind die Programmiersprachen selbst ja auch an dieser Sprache ausgerichtet.
 

geronimo89

New member
@bitmuncher:
Die Empfehlung bekam ich auch gestern auf Twitter.
Da hatte ich wohl irgendwie ein Brett vorm Kopf. Naja, dann mach ich ggf. einfach Übersetzungen in die Slides dazu (reveal.js ftw)

Ich danke euch allen und entschuldige mich für meine Schnapsidee.
 

enkore

New member
Mir stellt sich gerade die Frage warum man Sources lokalisieren sollte. Quelltexte schreibt man in Englisch und gut ist. Das hat sich in der IT-Welt eingebürgert und bewährt, da es wohl kaum Programmierer geben dürfte, die kein Englisch können. Schliesslich sind die Programmiersprachen selbst ja auch an dieser Sprache ausgerichtet.

Oder in russisch. Das sehe ich zumindest auch öfters mal, aber was anderes als russische bzw. kyrillische (ob's wirklich russisch ist, kann ich idR schlecht beurteilen) und englische Kommentare habe ich eigentlich noch nie gesehen. Also in größerer Menge ;)
 
Oben