Piraten an die Macht

Jetzt haben es die Piraten geschafft. Knapp 9 % bei einer Landtagswahl sind nicht schlecht. Damit dürften in etwa 14 Piraten in das Parlament einziehen. Da kann man nun hoffen das die Piraten in Berlin etwas bewegen :) Viel Erfolg dabei :)

Wenn alles gut läuft ist auch die nächste Wahl schon in Sicht, voraussichtlich am 6. Mai in Schleswig-Holstein. Auch dort geht es wieder um die Wurst respektive den Landtag.

Weitere Informationen gibt es unter:
http://www.spiegel.de/politik/deutschland/0,1518,786958,00.html
http://www.heise.de/newsticker/meldung/Piraten-entern-das-Berliner-Abgeordnetenhaus-1345300.html
http://www.zeit.de/politik/deutschland/2011-09/wahl-berlin-piraten
http://www.golem.de/1109/86523.html

Minecraft im Android Market

Gestern fiel mir auf das es Minecraft nun auch im Android Market gibt (zu finden unter https://market.android.com/details?id=com.mojang.minecraftpe&rdid=com.mojang.minecraftpe). Allerdings ist die Pocketedition nicht mit dem „großen“ Minecraft kompatibel, so das man nicht auf deren Multiplayerservern spielen kann. Und leider läuft es im Moment nur auf einigen Geräten unter anderem dem Xperia. Aber naja vielleicht bessert sich das noch.

Minecraft Karte erstellen

Sobald die Minecraft Welt etwas größer wird, möchte man doch wissen wie sie so im gesamten aussieht. Um eine solche Karte zu erstellen eignet sich das Tool c10t, welches unter http://toolchain.eu/project/c10t zu finden ist. Dazu dann noch ein kleines Skript welches die Karte erstellt, konvertiert und auf einen FTP Server hochlädt.

#!/bin/bash

#Map erstellen
./c10t -w worldname/ -o mcmap.png -z -M 1280

#In Jpg umwandeln
convert mcmap.png -quality 80 mcmap.jpg

# Datei auf FTP Server laden
FTP_FILE=mcmap.jpg

ftp -in <open example.com
user nutzer passwort
bin
put $FTP_FILE
close
bye

Aussehen könnte das ganze dann z.B. so:

Weitere Informationen gibt es unter:
http://www.minecraftforum.net/topic/31133-mapper-c10t/

gettext und PHP

Bei einer multilingualen Webapplikation welche in PHP geschrieben ist, kann man natürlich zur Übersetzung mit assoziativen Arrays arbeiten und dann je nach Sprache die richtige PHP Datei einbinden.

$lang['welcome'] = 'Willkommen auf dieser Webseite.';
$lang['maintenance'] = 'Die Webseite befindet sich in der Wartung.';

Das Problem an dieser Variante ist, das sie nicht wirklich gut zu pflegen ist. Schöner ist es das ganze mit gettext zu übersetzen, da man hier nur die po Dateien übersetzen muss, und man das nicht im Quelltext tun muss.

Das Problem an dieser Variante ist allerdings, das nicht auf jeden Webserver gettext vorhanden ist. Hier hilft das Paket php-gettext welches unter https://launchpad.net/php-gettext/ zu finden ist. Mit Hilfe dieses Paketes, kann man gettext nutzen ohne sich darum kümmern zu müssen ob es installiert ist. php-gettext wrappt das ganze und emuliert nicht vorhandene Funktionen.

Das ganze zu benutzen ist auch relativ einfach:

 //gettext initialisieren
 $locale = "de_DE"; //Sprache definieren
 $domain = 'default'; //Domäne definieren
 $encoding = 'UTF-8'; //Zeichenkodierung definieren

 //include gettext
 require_once('./ext/php-gettext/gettext.inc');

 //Sprache setzen
 T_setlocale(LC_MESSAGES, $locale);

 //Pfad zu den Übersetzungen definieren
 T_bindtextdomain($domain, './locale/');

 //Zeichenkodierung setzen
 T_bind_textdomain_codeset($domain, $encoding);

 //Domäne setzen
 T_textdomain($domain);

Nachdem dies getan ist, kann damit begonnen werden die Texte in der Anwendung zu übersetzen. Dabei wird aus einem:

echo 'Willkommen auf dieser Webseite.';

ein:

echo T_('Willkommen auf dieser Webseite.');

T_ ist dabei der Name der Übersetzungsfunktion welche von php-gettext bereitgestellt würden. Unter reinem gettext würde diese Funktion nur _ heißen. Nachdem man seinen Quelltext mit den entsprechenden Funktionen bestückt hat muss man diese Strings aus den PHP Dateien extrahieren. Da man das nicht von Hand machen möchte nutzen wir dazu folgendes kleines Skript:

 #!/bin/sh

 #Schreibe alle PHP Dateien in eine Textdatei
(find ./data -name "*.php" && find ./system -name "*.php") > update-translations.txt

 #Rufe xgettext auf um die pot Datei zu erzeugen
 xgettext -f update-translations.txt -kT_ngettext:1,2 -kT_ --language=PHP -o update-translations.pot

Mit dieser pot Datei kann mittels PoEdit (http://www.poedit.net/) eine po Datei erzeugt werden. Diese po Dateien können auch wieder mittels der pot Datei aktualisiert werden, falls später neue Strings dazu kommen oder verschwinden. Beim speichern generiert PoEdit aus der po Datei eine mo Datei, bei welcher es sich um die binäre Representation der po Datei handelt. Diese mo Datei wird von gettext letztendlich zur Übersetzung genutzt.

Weitere Informationen gibt es unter:
http://phpmagazin.de/itr/online_artikel/psecom,id,874,nodeid,62,_language,de.html
http://blog.medianetix.de/2008/12/ubersetzung-von-quelltexten-mit-gettext-und-poedit/