Epson Moverio BT-200 USB Debugging aktivieren

Epson Moverio BT-200

Wir haben momentan ein Projekt in der Schule wo wir mit einer Epson Moverio BT-200 Smart Glass arbeiten können / müssen. Die Brille ist in vielem der Google Glass sehr ähnlich, hat jedoch auch einige Unterschiede aufzuweisen.

So hat man z.b. zwei Projektionsflächen (eine pro Brillenglas) anstatt nur einer wie bei der Google Glass, was es erlauben soll auch stereoskopisches 3D anzuzeigen. Weiterhin kommt mit der Brille eine Art Controller, welcher benötigt wird um das Android System zu steuern.
Der Controller ist einfach gesagt ein Smartphone ohne Display – dafür mit einer Touchoberfläche welche einen Cursor steuert mit dessen Hilfe man sich durch das Android 4.02 System navigieren kann. Die Brille selbst ist dabei wie eine Art externes Display für den Controller.

Nun, ich will nicht allzu sehr ins Detail gehen was die Hardware der Brille betrifft. Ihr könnt euch darüber ganz einfach auf der Herstellerseite, YouTube oder mit ein wenig googeln informieren 🙂 Was ich möchte, ist zu beschreiben wie ihr es schafft die Brille für App-Entwicklung ready zu machen:

Developer Version auf Brille installieren

Wenn ihr die Brille erhält ist normalerweise die Retail Version des Betriebsystems installiert. Bei dieser fehlt die Möglichkeit USB Debugging zu aktivieren komplett. Ihr könnt das ganz einfach überprüfen unter
Settings -> Device Info -> Build Number

Beginnt die Build Nummer mit D (z.B. D1.0.0) so habt ihr bereits die Developer Version und könnt die nächsten Schritte überspringen. Falls eure Build Nummer mit R beginnt (z.B. R1.0.0), so habt ihr die Retail Version und müsst die Developer Version selbst installieren.

Dazu gibt es eine Anleitung von Epson (PDF), welche leider nur schwer zu finden ist. Deshalb hier der Link.

ADB Treiber installieren (Windows)

Sobald ihr die Developer Version installiert und USB Debugging aktiviert habt, müsst ihr noch die ADB Treiber korrekt auf eurem System installieren. Auch hierzu gibt es eine Anleitung von Epson (PDF).

Kleiner Hinweis: Ich habe mein Profil auf meiner Daten Partition (D:), dort wurde dann auch das adb_usb.ini File angelegt. Die Brille wurde bei mir aber nie erkannt in adb. Nach langer Suche kam ich darauf, dass adb eventuell seine Einstellungen im %USERPROFILE% Verzeichnis sucht. Beim überprüfen wohin diese Variable auf meinem System zeigt hat sich prompt herausgestellt, dass diese noch immer auf die Systempartition zeigt (C:Users …). Nachdem ich das adb_usb.ini File dann nach %USERPROFILE%.android kopiert hatte funktionierte es.

Quellen

Google Drive Sync langsam / startet nicht

Seit ich mit Google Drive als Cloud Speicher arbeite, habe ich oft das Problem, dass der Client meine lokalen Änderungen nicht zu finden scheint. Um dies zu erzwingen muss ich jeweils Google Drive neustarten. Leider bin ich wegen verschiedenen Projekten gezwungen Google Drive zu verwenden, werde mir aber nun trotzdem mal One Drive anschauen – als Windows und Office 356 User sowieso eigentlich eine naheliegende Entscheidung. Dazu vielleicht später mehr.

Um den Neustart von Google Drive effektiver zu machen habe ich mir selbst ein kleines Batch Script geschrieben:


taskkill /IM googledrivesync.exe /F
start "" "C:Program Files (x86)GoogleDrivegoogledrivesync.exe"

Woocommerce – Multistep Checkout (How To)

Für den Rugby Onlineshop auf rugbygear.ch welchen ich momentan mit einem Kollegen am aufbauen bin, war ich schon seit einiger Zeit auf der Suche nach einem Plugin oder einer Anleitung wie man in Woocommerce auf einfache Art ein Multistep Checkout aktivieren oder einbauen kann.
Leider musste ich feststellen, dass dies momentan nicht im Woocommerce Core implementiert ist. Allerdings scheint das Bedürfnis nach einer Lösung dieses Problems vor allem im DACH-Raum relativ gross zu sein, da dies neuerdings auch in der Schweiz (und in Deutschland schon länger) gesetzlich verlangt wird (Mehr dazu auf startwerk.ch).

Nach einigem Suchaufwand stiess ich dabei auf eine interessante Diskussion im Issue Bereich von woocommerce auf github. Da bisher noch immer keine fertige Lösung existiert, habe ich mich daraufhin daran gemacht mir selbst eine „Quick & Dirty“ Lösung zu bauen.

Simples Multistep Checkout für Woocommerce

Vorwort

Als erstes möchte ich darauf hinweisen, dass ich keinerlei Garantie für Fehler in dieser Anleitung oder den darin präsentieren Code Snippets übernehme. Ausserdem ist dies wirklich eine sehr simple Implementation eines Multistep Checkouts und falls jemand eine bessere Lösung hat, würde ich mich mehr als nur ein bisschen freuen davon zu hören 🙂
Hier ein kurzer Überblick über die benötigten Schritte:

1. Woocommerce Template Files in Theme Ordner kopieren um diese Update-safe zu überschreiben
2. Template Files im Theme Ordner anpassen
3. CSS hinzufügen
4. Ergebnis überprüfen und gegebenfalls anpassen

Anleitung Step by Step

1. Erstelle einen neuen Ordner „woocommerce“ in deinem Theme Ordner (/wp-content/themes/*yourtheme*)
2. Kopiere folgende Dateien aus dem Woocommerce Template Ordner (/wp-content/plugins/woocommerce/templates/) in den soeben erstellten woocommerce Ordner:
  • cart/cart.php
  • checkout/form-checkout.php
  • checkout/thankyou.php

Euer woocommerce Ordner sollte nun die zwei Ordner cart und checkout, sowie die darin abgelegten Files enthalten.

3. Öffne die Dateien nacheinander in einem Editor und füge die entsprechenden Code-Snippets ein:
cart.php:


<!-- Order Process -->
<ul class="order-process">
<a href="cart->get_cart_url();?>">
<li class="active">1. Cart</li>
</a>
<a href="cart->get_checkout_url()?>">
<li>2. Checkout</li>
</a>
<li>'3. Acquisition</li>
</ul>

form-checkout.php:


<!-- Order Process -->
<ul class="order-process">
<a href="cart->get_cart_url();?>"><li>1. Cart</li></a>
<a href="cart->get_checkout_url()?>"><li class="active">2. Checkout</li></a>
<li>3. Acquisition</li>
</ul>

thankyou.php:


<!-- Order Process -->
<ul class="order-process">
<a href="cart->get_cart_url();?>"><li class="active">1. Cart</li></a>
<a href="cart->get_checkout_url()?>"><li>2. Checkout</li></a>
<li>'3. Acquisition</li>
</ul>

4. Füge folgendes CSS zu deinem Theme hinzu (Vorschlag: in style.css)


/* --------- Order Process ----------------- */

ul.order-process {
padding: 0;
list-style: none;
width: 100%;
background: none repeat scroll 0% 0% #363B3F;
}

ul.order-process li {
display: inline-block;
width: 30%;
padding: 10px 0;
color: #fff;
text-align: center;
}

ul.order-process li.active {
background: none repeat scroll 0% 0% #FF4646;
font-weight: bold;
}

Weiterführende Informationen

Phonegap Build – Android Release Build erstellen

Wir haben uns aus aktuellem Anlass entschlossen auf unserem Blog eine kleine Serie von Posts zum Thema Phonegap zu veröffentlichen. Da wir diese Woche einige Probleme hatten eine Android App zu releasen, möchte ich euch heute zeigen wie das geht und zwar mit Hilfe von Adobe Phonegap Build.

Adobe Phonegap Build

Phonegap Build ist ein Service von Adobe welcher einem helfen soll, das oft umständliche Builden und Debuggen von Phonegap Apps zu verinfachen. Man kann sich direkt mit seinem Github Account einloggen und auch den Code für die Builds gleich automatisch aus dem Repo pullen lassen.
Eine detailliertere Einführung gibt es vielleicht mal in einem späteren Blogpost. Ich gehe einfach mal davon aus, das Leute die diesen Artikel über Google gefunden haben, bereits wissen was Phonegap Build ist und wie man es verwendet.

Android Release erstellen

Wie eigentlich überall gibt es bei Android zwei Build-Modi: Debug-Modus und Release Modus. Wer sein Android App veröffentlichen will, braucht ein apk im Release Modus. Standardmässig werden aber stets Debug Builds erstellt. Um einen Release zu erstellen muss die App zuerst mit einem Private Key gesignt werden, ausserdem müssen einige Anpassungen im manifest gemacht werden. Da das Manifest bei Adobe Phonegap Build jedoch automatisch generiert wird, muss man dafür nur sichergehen, dass man Debugging und Hydration in den App Einstellungen deaktiviert hat. Das Generieren eines Keys bleibt einem jedoch nicht erspart, dies ist jedoch ziemlich einfach.

Signing Key generieren

Um den Signing Key zu generieren verwenden wir das CMD/Shell Tool keytool. Dieses ist Teil des JAVA SDKs und sollte direkt über CMD/Shell aufrufbar sein, insofern die JAVA_HOME Systemvariable korrekt gesetzt ist.

Für Debug Builds erstellt Phonegap automatisch einen Debug Signing Key mit folgenden Werten:

  • Keystore name: „debug.keystore“
  • Keystore password: „android“
  • Key alias: „androiddebugkey“
  • Key password: „android“
  • CN: „CN=Android Debug,O=Android,C=US“

Wie gesagt benötigen wir aber unseren eigenen, persönlichen Key um damit gesignte Apps im Play Store veröffentlichen zu können. Das Keytool hat verschiedene Parameter, die ihr gerne im Detail hier nachschauen könnt. Grundsätzlich reicht jedoch folgender Aufruf:

keytool -genkey -v -keystore my-release-key.keystore-alias alias_name -keyalg RSA -keysize 2048 -validity 10000
 
Wobei alias_name und der Name des Ausgabefiles natürlich angepasst werden können. Die Validilty gibt an, wie lange dieser Key gültig sein soll. Dazu gilt es zu sagen, dass im Play Store keine Apps akzeptieren, deren Gültigkeit vor dem 22. Oktober 2033 enden.
Sämtliche weiteren Informationen wie Passwort, CN, OU usw. werden von euch per Eingabeaufforderung verlangt.

Signing Key hinterlegen

Den so erstellten Key müsst ihr nun auf build.phonegap.com bei eurem App hinterlegen. Wichtig dabei ist, dass der Alias korrekt eingegeben wird. Habt ihr das gemacht, könnt ihr nun mit diesem Key gesignte Release-Builds erstellen, welche auch vom Google Play store akzeptiert werden 🙂

Weitere Infos / Quellen

    Fairphone – Google Play Store Probleme nach Update

    Ich bin, wie 24’999 weitere Personen in Europa und eventuell auch einigen Personen ausserhalb Europas, seit einigen Wochen stolzer Besitzer eines Fairphones. Seitdem vor kurzer Zeit ein Update für das installierte Custom ROM, das „Fairphone OS“ ein Update auf die Version 1.1 kam, funktionierte mein Google Play Store nicht mehr. Er zeigte ständig „Keine Verbindung“ an, sowohl über Mobil wie auch über WLAN.

    Ich dachte zuerst, eventuell wäre der Store überlastet und so of brauchte ich ihn auch wieder nicht. Jedoch nach ein, zwei Tagen wurde es verdächtig, und so begann ich mal kurz zu googeln.

    Die Lösung ist reichlich einfach: Man muss die Google Apps neu installieren. Wichtig dabei ist: WLAN einschalten! Der Google Apps Installer verlangt nach einer WLAN Verbindung, ansonsten startet der Download nicht.

    Die genaue Anleitung findet ihr im Supportdesk von Fairphone:

    Fairphone Zendesk – How to re-install the app store

    WordPress – XML RPC Schnittstelle

    WordPress nutz eine XML-RPC Schnittstelle um auf einem standardisierten Weg Daten mit anderen Dritt-Applikationen wie Mobile-, Desktop- oder Webapps auszutauschen. Diese Applikationen benötigen einen sogenannten API Endpoint, welcher standardmässig die Blog URL ist, gefolgt von „xmlrpc.php“.
    Für einen Blog mit der Adresse http://example.com wäre der API Endpoint also: http://example.com/xmlrpc.php
    Ruft man diese URL im Browser auf wird einem die Nachricht

    XML-RPC server accepts POST requests only.

    angezeigt. XML-RPC ist seit WordPress 3.5 standardmässig aktiviert.

    Um nicht jedem Zugriff auf diese Schnittstelle zu ermöglichen, muss man sich stets per Username und Passwort authentifizieren (gleiche Angaben wie bei Login in WordPress Backend).

    Themes und Plugins können mit dem XML-RPC Endpoint interagieren, sowie Methoden hinzufügen oder das Antwortdokument anpassen.

    XML-RPC Calls

    Das Commandline Tool ‚curl‘ eignet sich hervorragend um einfach mal ein wenig mit der XML RPC Schnittstelle seines Blogs herumzuspielen. Zum Beispiel können wir uns die Liste aller Blogs eines API Endpoints zurückgeben lassen:

    Windows:

    curl -d "<?xml version="1.0"?> <methodcall> <methodname>wp.getUsersBlogs</methodname> <params> <param /> <value>username</value>  <param /> <value>password</value>  </params> </methodcall>" http://example.com/xmlrpc.php

    Linux:

    curl -d '<?xml version="1.0"?> <methodcall> <methodname>wp.getUsersBlogs</methodname> <params> <param /> <value>username</value>  <param /> <value>password</value>  </params> </methodcall>' http://example.com/xmlrpc.php

    Natürlich bietet diese Schnittstelle tausende Anwendungsmöglichkeiten, so kann man eigene API Methoden schreiben um Daten für externe Applikationen zur Verfügung zu stellen, oder von solchen Daten zu holen. Man könnte auch eine mobile Applikation schreiben zum Verwalten seines Blogs und vieles mehr.

    Habt ihr gute Beispiele zur Verwendung dieser Schnittstelle oder nutzt ihr diese überhaupt nicht? Was haltet ihr davon, dass genau XML RPC gewählt wurde? Alle Meinungen interessieren uns.

    Quellen / Weitere Infos

    Fairphone – ein Schritt in die richtige Richtung

    Smartphones – jeder hat heutzutage eines, aber kaum einer weiss woher all die Komponenten und Materialien kommen aus denen es hergestellt ist geschweige denn wo welche Teile hergestellt wurden. Die Leute die 2013 Fairphone ins Leben gerufen haben, setzten sich bereits seit 2010 mit diesen Fragen auseinander. Auf Auftrag mehrerer NGOs versuchten sie die Gesellschaft für die Probleme von Konfliktmaterialien in elektronischen Geräten aus der Republik Kongo zu sensibilisieren. Viele der Minen in Kongo werden von Warlords kontrolliert welche die Minenarbeiter ausnehmen um das Geld welches sie von ausländischen Firmen erhalten in ihre Kriege zu investieren.

    2013 wollte der Gründer Bas van Abel zusammen mit einigen weiteren Mitarbeitern herausfinden wie schwierig es denn wäre ein faires Smartphone aus ausschliesslich konfliktfreien Materialien zu produzieren und so entstand das Projekt Fairphone.

    Nachdem bereits zu Beginn einige grössere Firmen und Organisationen aufgesprungen sind um das Projekt zu unterstützen wurde geplant 25’000 Stück zu produzieren sofern die Produktionskosten durch genügend Vorbestellungen (5000) erreicht werden sollte.

    Ursprünglich sollten die ersten Fairphones bereits im Herbst (also jetzt :)) ausgeliefert werden, allerdings schien es bei einigen Fragen der Produktion doch schwieriger als gedacht die richtigen Partner zu finden und so wurde der Release auf Dezember verschoben.

    Technische Details

    Das Fairphone ist nicht nur fair, es macht auch optisch und technisch was her.

    Das Fairphone unterstützt DualSim
    • QuadCore Prozessor
    • DualSim
    • Primäre Kamera 8 MP
    • Sekundäre Kamera 1.3 MP
    • 4.3“ qHD Display (960×540 pixels), Dragontrail Glass
    • 16 GB Memory
    • 1 GB RAM

    Die vollständigen technischen Spezifikitionen gibts auf der offiziellen Website.

    Als Betriebssystem wird eine angepasste Android-Version verwendet werden welche liebevoll auf den Namen „Fairphone OS“ getauft wurde. Details dazu seht ihr im Video.

    Bestellung

    Das Fairphone kann bisher nur in Europa vorbestellt werden. Die Kosten werden auf der Webseite mit ungefähr € 325 angegeben, ungefähr daher weil die Steuern sowie die Versandkosten von Land zu Land differieren können. Mich hat die Bestellung € 281,89  gekostet. Davon sind € 5.79 Versand und € 7.50 Überweisungsgebühren an PayPal. Ich kann mir jedoch vorstellen dass mir der Zoll noch etwas draufschlagen wird.

    Bis jetzt sind rund 17’500 Fairphones verkauft, wer noch eines will kann also noch immer eines bestellen.

    Fazit

    Ich finde die Idee des Projektes gut und unterstütze es auch, mein Fairphone ist bereits bestellt und ich freue mich darauf es im Dezember im Briefkasten zu haben. Da ich bisher eher kleiner Smartphones gehabt habe (HTC Desire, HTC Desire S) mit weniger als 4“ Displaygrösse, weiss ich noch nicht ob 4,3“ mir vielleicht schon etwas zu gross sind. Auch wenn das Fairphone nicht technisch nicht unbedingt mit den aktuellen Top-Smartphones mithalten kann, finde ich die Ausstattung ausreichend, für einige könnte dies jedoch der Ausschlag sein das Phone nicht zu kaufen.
    Ich kann auch verstehen dass noch nicht alles an diesem Fairphone 100% fair ist, da dies heutzutage einfach noch gar nicht möglich ist, trotzdem kann der Erfolg dieses Projektes andere Hersteller dazu bringen sich in diesem Bereich mehr anzustrengen.

    Weitere Infos

    Hangouts: WhatsApp Konkurrent von Google

    Gestern an der Google IO wurden von Google einige grosse Neuerungen angekündigt. Ähnlich wie bei den Keynotes von Apple nutzt Google diese Konferenz jeweils um die nächsten grossen Dinge anzukündigen. Die ganze Techwelt sass gestern also gespannt im Saal in San Francisco oder vor dem gratis Livestream um zu erfahren, was der Internetgigant dieses Jahr wohl wieder für Überraschungen bereithält.
    Eine dieser Neuerungen war ein neuer einheitlicher Messaging Dienst über alle Google Produkte, welcher sowohl Google Talk, den Google Plus Chat sowie die Hangouts vereinen soll. Über Umfang und Name dieser Neuerung wurde bereits vor der Google IO bereits heftig spekuliert. So gab es Gerüchte, dass Google diesen neuen Dienst „Babel“ nennen könnte. Die Gerüchte waren grösstenteils war, nur der Name wurde geändert, dieser ist nun schlicht „Hangouts“.

    Design & Logo

    Bei Design und Logo hat sich Google ganz klar von WhatsApp inspieren lassen. Viele Nutzer sind sich dieses Interface bereits gewohnt und werden sich somit sicher gut mit Google Hangouts zurechtfinden.

    Logos von WhatsApp und Hangouts im Vergleich
    Chatansicht WhatsApp und Hangouts

    Plattformübergreifend

    Hangouts wurde bewusst plattformübergreifend entwickelt, es ist verfügbar für Android, iPhone und natürlich den Desktop (entweder als Chrome WebApp oder einfach über Google+). Für Blackberry und Windows Phone ist noch nichts bekannt.
    Die Synchronisation zwischen den verschiedenen Geräten scheint sehr gut zu funktionieren. Mit dem Facebook Messenger hatte ich immer so etwas meine Probleme zwischen Desktop und Smartphone, bisher konnte mich Hangouts in dieser Richtung mehr überzeugen.

    Eine App für alle Nachrichten

    Das Problem bei Google war ja lange, dass es ein Wirrwar an Apps für InstantMessaging gab. Zuerst gab es Google Talk, dann kam der Google+ Chat, dazu gehörig die Hangouts usw.
    Das Ziel von Hangouts sollte sein diese alle wieder zu vereinen. Momentan kommt Hangouts auf Android als Update für das Google Talk App. Den Google+ Messenger gibt es aber weiterhin. Ebenfalls sieht der Chat in Gmail noch nicht aus wie Hangouts.
    Da muss Google wohl noch ein wenig daran arbeiten, aber es geht sicherlich in die richtige Richtung.

    Neugierig?

    Wir wollen ja hier keine Werbung machen, aber für alle die vielleicht eine Alternative zu WhatsApp oder sonstigen Messaging Tools suchen, könnte ein Blick auf Hangouts interessant sein. Auf der eigens dafür erstellten Infoseite findest du alle wichtigen Infos und die direkten Links zu Google Play und dem iTunes Store.

    Weiterführende Links

    WOIN.CH – WAS HEUTE IN BADEN LOS IST?

    WOIN IST NICHT MEHR ALS DAS, WAS WIR AM MEISTEN IN BADEN VERMISSEN! DIE EINZIGE UND WAHRE ÜBERSICHT, WAS GERADE IN BADEN HEUTE UND NUR HEUTE SO GEHT. WIR STEHEN ECHT AUF PARTY, WIR LIEBEN COOL AN DER BAR STEHEN AN LIVEKONZERTEN UND MANCHMAL VERIRREN WIR UNS AUCH AN DIE ORTE, VON DENEN WIR LEIDER ERST VIEL ZU SPÄT ERFAHREN.

    MIT WOIN WEISST DU NICHT MEHR! KLAR, DU KANNST NATÜRLICH AUF JEDE HOMEPAGE GEHEN UND DIE INFOS AUS ERSTER HAND HABEN, ABER MAL EHRLICH: WER HAT HEUTE NOCH DIE ZEIT DAZU?

    WOIN IST AUCH DEINE MÖGLICHKEIT, DEINEN EVENT MIT ALLEN ZU TEILEN. FÜG DEINEN EVENT HINZU UND MIT VIEL GLÜCK KOMMT EIN TRINKER MEHR ZU DIR!

    ALSO WORAUF WARTEST DU? TEILE DEINE PARTIES, KONZERTE, LIEBE UND NATÜRLICH DIESE SEITE MIT ALLEN DIE LIEBE VERDIENEN UND WIR HABEN MEHR SPASS UND WENIGER AUFWAND.

    KLINGT FAIR UND IST NUR EIN KLEINER SCHRITT ZUR WELTHERRSCHAFT VON BADEN!

    TEAM
    NICOLAS SAX – GENIE HINTER DEM CODE
    NILS EDISON – IDEEN, DESIGN UND SO

    INFO@WOIN.CH

    http://WOIN.ch

    i18n mit PHP und gettext

    Internationalisierung einer Webseite wird dann ein Thema, wenn das Publikum beginnt mehrsprachig zu werden, oder das Zielpublikum mehrsprachig sein soll, bis anhin jedoch nur eine Sprache angesprochen wurde.

    Die erweiterung gettext ist seit PHP 5.3 standardmässig dabei. Wenn die Website extern gehostet ist, bitte mit dem Hoster klären ob gettext aktiv ist oder nicht.

    PHP Datei für die Übersetzung vorbereiten:

    Als Beispiel PHP nehmen wir eine Seite, welche Hallo Welt in verschiedenen Sprachen ausgeben kann.

    Damit wir die gettext Funktionen auch nutzen können müssen wir diese zuerst initialisieren:

    $locale = "de_DE";
    if(isset($_GET['lang'])){
    $locale=$_GET['lang'];
    }
    putenv('LC_ALL='.$locale);
    setlocale(LC_ALL, $locale); //Sprache auf Deutsch oder 'lang' parameter in der URL setzen
    bindtextdomain("messages", "locale"); //Basisverzeichnis für übersetzungen setzen
    textdomain("messages");  //Er würde jetzt in der Datei "locale/[sprachcode]/LC_MESSAGES/messages.mo" nach Übersetzungen suchen

    Um gettext nun aufzurufen und den Text zu übersetzen gibt es folgende Möglichkeiten:

    _("")
    gettext("")

    Zwischen den Hochkommas wäre jeweils das Keyword, oder der Text der übersetzt werden soll.
    In unserem Fall nennen wir das keyword „hi“.

    echo _("hi");


    Übersetzungen mit poEdit erstellen:

    Als nächsten Schritt müssen wir nun noch den oben erwähnten Pfad anlegen:

    für Deutsch:
    locale/de_DE/LC_MESSAGES/
    für Englisch:
    locale/en_EN/LC_MESSAGES/
    weitere Sprachen:
    locale/[sprachcode]/LC_MESSAGES/
    usw.

    die PHP Datei liegt im gleichen Verzeichnis wie der Ordner „locale“.
    In die Verzeichnisse müssen nun die „.mo“ Dateien welche aus den „.po“ Dateien von poEdit generiert werden.

    Wir öffnen also das Programm poEdit.
    Und wählen „File>New Catalog“

    Im Tab „Sources paths“ geben wir den exakten Pfad zu Unserem PHP File an:

    Mit einem Klick auf OK können wir einen Speicherpfad auswählen. Wir speichern die Datei unter dem Namen messages.po.
    Nun scannt er alle PHP Dateien in dem vorher definierten Pfad nach zu übersetzenden Ausdrücken.

    poEdit gibt uns ein Summary der gefundenen Ausdrücken zurück.

    Übersetzen abspeichern, und die „.mo“ Datei, welche im selben Verzeichnis liegt wie die „.po“ Datei in den entsprechenden Sprachordner auf dem Server: z.B. „locale/de_DE/LC_MESSAGES/“ laden.

    Dieser Vorgang kann nun für alle gewünschten Sprachen wiederholt werden.

    Rufen wir nun unser PHP im Browser auf mit z.B. dem Parameter de_DE (index.php?lang=de_DE)

    Zeigt uns die Seite: „Hallo Welt“

    poEdit Homepage
    gettext php Manual