[FLOW3] Wie schreibt man einen eigenen Translation Provider?

Ein weiterer Teil, welcher in der FLOW3 Dokumentation so gut wie gar nicht abgedeckt wird, ist die Frage, wie man einen eigenen Translation Provider implementiert. FLOW3 selbst bringt nur einen Xliff Provider mit. Dieses Format ist der Standard in der Internationalisierung. Allerdings braucht man vielleicht nicht immer ein so aufgeblähtes Format und möchte einfach eine CSV Datei mit 1:1 Übersetzungen hinterlegen. Dafür sind folgende Schritte nötig:

Zuerst legen wir eine neue Klasse im Pfad “[PackageName]/I18n/TranslationProvider/CsvTranslationProvider.php” und folgendem Inhalt an:

namespace [Vendor]\[Package_Name]\I18n\TranslationProvider;
use TYPO3\FLOW3\I18n\TranslationProvider\TranslationProviderInterface;
/**
 * The concrete implementation of TranslationProviderInterface which uses CSV
 *
 * @FLOW3\Scope("singleton")
 */
class CsvTranslationProvider implements TranslationProviderInterface {
}

Da wir das TranslationProviderInterface implementieren, müssen natürlich auch die entsprechenden Methoden vorhanden sein. Diese sind die “getTranslationByOriginalLabel” und “getTranslationById”. An dieser Stelle bekommt man mit den Parametern “$originalLabel” bzw. “$labelId” das zu übersetzende Label und mit der “$locale” die entsprechend aktuell eingestellte Sprache. Zusätzlich kommen noch ein paar weitere Parameter mit, die aber für eine einfache Übersetzung per CSV nicht zwingend nötig sind. Eine Hilfsmethode, die man dann von beiden Methoden aus aufrufen kann, könnte folgendermaßen aussehen:

private function translate($key, $locale) {
    $translations = array();
    $language = $locale->getLanguage();
    if (($handle = fopen([PFAD_ZUR_CSV_DATEI], "r")) !== FALSE) {
	$translations[$language] = array();
	while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
		if(count($data) == 2) {
			$translations[$language][$data[0]] = $data[1];
		}
	}
	fclose($handle);
    }
    $translation = $key;
    if(array_key_exists($key, $this->translations[$language])) {
	$translation = $this->translations[$language][$key];
    }
    return $translation;
}

Diese Methode ist nur für diesen Beitrag beispielhaft implementiert. Natürlich sollte nicht bei jeder einzelnen Übersetzung die komplette CSV Datei in den Speicher gelesen werden. Also bitte nicht produktiv einsetzen 😉

Anschließend registriert man in der Datei “/Packages/[PackageName]/Configuration/Objects.yaml” den Provider für den I18n Translation Service:

TYPO3\FLOW3\I18n\Translator:
  properties:
    translationProvider:
      object: [Vendor]\[Package_Name]\I18n\TranslationProvider\CsvTranslationProvider

Die CSV Datei hat dann folgenden Inhalt:

Translation;Übersetzung

Sobald man diese Schritte erledigt hat, kann man in allen Fluid Templates mit dem Tag “<f:translate>Translation</f:translate>” Wörter automatisiert übersetzen lassen. Ist für das Wort keine Übersetzung vorhanden, so wird einfach das unübersetzte Wort verwendet.

Sollte Apple ein Mobilfunk-Anbieter werden?

Über den äußerst interessanten Artikel Steve, Please Buy Us A Carrier! bin ich ein bisschen ins Grübeln gekommen. Und nach einiger Zeit kam ich drauf, dass Jean-Louis Recht hat.

Vorwort

Wie ich darauf komme? Schauen wir uns doch mal die derzeitige Situation hier in Deutschland an: wir haben T-Mobile, Vodafone und O2 als die großen drei – auf E-Plus will ich hier gar nicht zu sprechen kommen – und wir haben die Aldis, Lidls, blau.de’s usw. – wobei diese reine Dienstleister sind, die die Netze der 4 Hauptanbieter verwenden. Wir haben Leute wie mich, die im Monat 50€ oder mehr für ihren Handyvertrag zahlen, wir haben die “ich will alles haben, aber nur 10€ im Monat zahlen”-Leute und wir haben Prepaid. Wir haben Zeiten, in denen noch Unmengen an Geld mit Technologien wie SMS verdient werden: würde man einen Megabyte an Daten per SMS versenden, so würde das ca. 1245€ kosten. Berechnung:

1MB * 1024 = 1024KB
1024 KB * 1024 = 1048576 Byte
1048576 Byte / 160 = 6553,6 SMS (eine SMS hat 160 mögliche Zeichen, wobei ein Zeichen 1 Byte groß ist)
6553,6 SMS * 0,19 € = 1245,18 €

ich hoffe, dass ich mich hier nicht blamiere und mich verrechnet habe – wenn dem so ist bin ich natürlich für Hinweise in den Kommentaren dankbar 😉

Egal wie hoch die Summe nun genau ist, so zeigt die Berechnung doch eines: wir bezahlen völlig unverhältnismäßig viel für eine Dienstleistung, die ursprünglich einmal kostenlos war und für den Dienstleister keinen großen Mehraufwand bedeutet.

Aber ich will mich an dem Thema SMS jetzt gar nicht aufhängen, denn es geht weiter: wir bekommen von unseren Providern “Flatrates” verkauft, mit denen man “unbegrenzt telefonieren und SMS schreiben” oder “unbegrenzt mit 7,2 MBit/s surfen” kann. Was wir aber bekommen, sind sicher extrem umfangreiche Minutenpakete bzw. Inklusiv-SMS, aber auch Drosselung der Internetleitung, sobald 200MB, 500MB oder 1GB an Daten verbraucht sind. In Zeiten von Youtube, Skype und allen anderen multimedialen Inhalten, aber auch einfach nur modernen Internetseiten kommt man im Monat schnell an dieses Limit heran.

Wir erleben Provider, die es Technologieunternehmen äußerst schwer machen, neue und sinnvolle Technologien einzuführen. Wir müssen mit unverschämt hohen und unzeitgemäßen Roaming-Gebühren auskommen, die selbst schon in den unmittelbaren Nachbarländern wie Österreich greifen.

Man könnte diese Liste noch sehr viel weiter treiben – aber es wird doch klar, dass vieles ziemlich ungünstig für den Kunden ist.

Und hier bekommt die Idee, dass Apple auch diesen Service übernehmen könnte, ins Spiel. Mir ist völlig bewusst (und es wird auch mehrfach in Jean-Louis Artikel erwähnt), dass dies wohl nie eintreten wird. Alleine schon aus Gründen von Wettbewerbsrechten usw. ist es unmöglich, dass Apple einen der großen Anbieter übernimmt bzw. selbst einen aufbaut. Aber lasst uns den Gedanken doch mal weiter spinnen. Natürlich bin ich als Fanboy ziemlich voreingenommen, aber letztlich auch überzeugt.

Grund 1: die Preispolitik
Bei Apple ist man ein großer Freund von festen Preisen – würde es nach dem Konzern gehen, hätten wir wohl längst die Kulturflatrate und könnten für einen Festpreis auf alle Multimediainhalte zugreifen.

Übertragen auf ihre Tätigkeit als Mobilfunkprovider würde dies wohl bedeuten, dass wir eine relativ einfache Preisstruktur vorfinden würden. Jean-Louis meint, dass wir wohl mehrere einfach gestaffelte Komplettpakete für fixe Preise erhalten würden – kommt man an die Grenze seines Pakets, so könnte man sich per Anruf/App/wasAuchImmer in das nächste Paket hochstufen und würde dies für den laufenden Monat zahlen – im nächsten Monat hätte man dann wieder sein ursprüngliches Paket. Das größte Paket wäre dann eine echte Flatrate, die aber natürlich auch ihren Preis hat.

Ich würde an dieser Stelle sogar noch einen Schritt weiter gehen und könnte mir vorstellen, dass es gar keine Preispolitik, sondern einen einzigen festen Preis gibt und eine echte Flatrate gibt. Zahl ihn, oder lass es. Nur weil man eine Flatrate hat, telefoniert man nicht automatisch mehr. In der Masse und auf einen längeren Zeitraum gesehen, würden die Kosten für Apple also nicht viel höher werden, als wenn sie, wie die deutschen Provider derzeit, abrechnen.

Um das eigene Angebot zu pushen, würde man wohl auf die gleiche Methode wie bei der Markteinführung des iPhones setzen, und das Gerät exklusiv anbieten. Wenn man gleichzeitig attraktive Preise bieten kann, würde es an mangelnder Kundschaft kaum scheitern.

Grund 2: freie Bahn für neues
Einer der wichtigsten, für mich sogar der wichtigste Punkt: keine Diskussionen mehr über die Möglichkeit (natürlich im Rahmen seines verfügbaren Datenvolumens), das Handy als Accesspoint für den eigenen Rechner zur Verfügung zu stellen. Keine Diskussionen mehr, dass man Anwendungen wie Facetime bitte nur über Wlan laufen lassen kann. Keine Diskussionen mehr, ob man P2P Verkehr auch über die mobile Leitung verwenden kann usw.

All diese Punkte werden derzeit aktiv durch die Mobilfunkprovider blockiert – daher darf man aus dem Appstore unterwegs nur Apps laden, die nicht größer als 20Mb sind oder kann sich unterwegs eigentlich nur Youtube-Videos in verminderter Qualität anschauen.

Alle hier genannten Probleme sind nicht etwa technisch bedingt – das sollte man immer im Hinterkopf behalten. Würden die Provider diese Dienste zulassen, müssten sie mehr Geld in ihre Netze investieren – und das würde ihren Gewinn schmälern.

Um für Kunden sexy zu sein, würde Apple hier höchstwahrscheinlich wesentlich freizügiger sein, als andere Anbieter.

Grund 3: Kundenservice
Hierfür muss ich eine aktuelle Geschichte erzählen: Seit Mitte letzten Jahres bin ich stolzer iPhone 4 Besitzer. Wie bei JEDEM technischen Gerät kann es auch bei Apple mal zu Fehlern kommen, und so hatte ich das Problem, dass mein Homebutton (der einzige große Button an einem iPhone) sporadisch seinen Dienst verweigerte. Trotz fühlbarem Druckpunkt und hörbarem Klickgeräusch kam der Tastendruck nicht im Betriebssystem an.

Meine erste Handlung war also, mich auf den Supportseiten von Apple umzusehen. Da zu meinem Problem keine richtige Lösung auffindbar war, wurde mir angeboten, dass mich die Hotline jetzt anruft und mir weiter hilft. Gesagt getan und kurz darauf klingelte das Handy. Der nette Herr konnte mir natürlich nicht direkt weiterhelfen, veranlasste aber einen Termin im Applestore, den ich ein paar Tage später dann wahrnahm. Auch diesem jungen Herrn schilderte ich mein Problem und – wen wundert es – ich konnte das Problem natürlich nicht vorführen, da es an diesem Tag nicht auftrat. Was war seine Reaktion: “ok, wir tauschen das jetzt einfach aus, in einigen Fällen kann dieser Fehler auftreten”. 10 Minuten später hatte ich ein nagelneues iPhone 4 in der Hand. DAS ist Kundenservice – keine ewigen Diskussionen, keine 100 Formulare ausfüllen,…einfach machen.

Ich würde mir diesen Service natürlich in allen Lebensbereichen wünschen, aber beim Mobilfunkprovider wäre es schonmal ein guter Anfang.

Neben dem Kundenservice geht es natürlich auch einfach um Verständlichkeit – man muss sich nur mal die Internetseite eines großen Anbieters anschauen und diese dann mit der Apple-Website bzw. dem Apple Store vergleichen. Idiotensichere und simple Führung durch den kompletten Prozess ist leider bei vielen ein Fremdwort, und so muss man sich durch seitenweise Kleingedrucktes und hunderte Abhängigkeiten zwischen Handy und Vertrag kämpfen. Es ist einfach beschissen.

Grund 4: weil sie es können
Eine Sache sollte man überhaupt nicht außer Acht lassen: sie können es. Apple hat extrem viel Geld auf der hohen Kante – kurzzeitig waren sie sogar das weltweit wertvollste Unternehmen. Anders als unsere Provider könnte Apple als Netzbetreiber aber auch wunderbar mit einem neutralen Betriebsgewinn auskommen – sprich, wenn das Unternehmen kein Minus macht, dann hätten sie schon gewonnen. Alleine die Einnahmen durch den Appstore und die Hardwareverkäufe spülen riesige Summen in die Kasse. Ein weiterer Grund, warum ich denke, dass Apple wesentlich bessere Preise bieten könnte.

Fazit
Man könnte hier noch weitere Gründe auflisten, und ich habe bewusst auf die negativen Aspekte von Apple verzichtet. Hier sollte es gar nicht um die Vorteile/Nachteile und Fanboygehabe bei Dingen von Apple gehen, sondern einfach ein paar Gedanken, wie man sich den perfekten Provider vorstellen würde. Apple macht viele Dinge sehr sehr richtig, und viele Dinge auch sehr sehr falsch. Viele Firmen, aber eben auch Provider, würden sich und ihren Kunden einen riesen Gefallen tun, wenn sie diese guten Dinge beherzigen und die schlechten sein lassen.

Wenn wir die Preisproblematik endlich mal in den Griff bekommen könnten, dann würden auch viel mehr Leute auf den Zug der Smartphones und des mobilen Internets aufspringen. Ich bin der festen Überzeugung, dass in diesem Fall die höheren Kosten, die dem Netzbetreiber entstehen, durch die riesige Masse an Kunden wieder wett gemacht wird.

Aber nun seid ihr gefragt: was sagt ihr dazu? Wie stellt ihr euch den perfekten Provider vor? Was würdet ihr euch von ihm wünschen? Ich bitte an dieser Stelle von Apple-Bashing abzusehen, denn um dieses Thema geht es hier nicht.