Contao: Download-Dateien verstecken

Nehmen wir an, Sie publizieren auf Ihrer Website Preislisten im PDF-Format. Und weil die Preise Ihrer Produkte in kurzen Intervallen ändern, stellen Sie immer zum Monatsersten eine neue Preisliste ins Netz. Mit Contao können Sie diese Updates vorbereiten und die Preislisten zum gewünschten Zeitpunkt automatisch austauschen lassen, denn jeder Artikel kann mit einem Veröffentlichungszeitpunkt versehen werden.

image 

So weit, so gut. Wenn Sie nun allerdings die Preislisten ganz normal in die Dateiverwaltung hochladen und aus einem Artikel heraus verlinken, dann ergibt sich ein Link in der folgenden Form:

www.beispiel.ch/preisliste.html?file=tl_files/preislisten/Preisliste_2012-04-01.pdf

Wer Contao ein bisschen kennt, kann auch direkt auf die obige PDF-Datei zugreifen, indem er folgende URL benutzt:

www.beispiel.ch/tl_files/preislisten/Preisliste_2012-04-01.pdf

Das ist an sich noch kein Problem. Zum Problem wird es erst, wenn Sie schon Mitte April die Mai-Preisliste in die Dateiverwaltung hochladen. Auch wenn der Artikel, der die Mai-Preisliste verlinkt, erst am 1.5.2012 online geht, so lässt sich die URL der Preisliste leicht erraten und bereits vorab herunterladen:

www.beispiel.ch/tl_files/preislisten/Preisliste_2012-05-01.pdf

Eine ähnliches Problem besteht dort, wo Download-Dateien von passwortgeschützten Seiten aus verlinkt werden: Die Seiten selbst sind zwar vor unerlaubtem Zugriff geschützt, die Download-Dateien jedoch nicht. Wer also die Direkt-URL errät, kann auch ohne Login auf die Dateien zugreifen.

Sofern es sich nicht um besonders sensible Daten handelt, kann man das Problem einfach entschärfen, indem man Verzeichnis- oder Dateinamen aus zufälligen Zeichenfolgen erstellt. Im obigen Beispiel könnte man beispielsweise für jeden Monat ein neues Unterverzeichnis für die Preisliste anlegen, das im April vielleicht UlkmirgxX0GHzQgqpv6u und im Mai beispielsweise iGWxgHfIMI09JdLVZbDd heisst. Die Direkt-URL auf die Mai-Preisliste wäre dann alles andere als leicht zu erraten:

www.beispiel.ch/tl_files/preislisten/iGWxgHfIMI09JdLVZbDd/Preisliste_2012-05-01.pdf

Wohl verstanden: Das ist kein echter, zuverlässiger Schutz gegen unerlaubte Downloads – aber ein einfaches Mittel, wie ein Content-Manager auch ohne technische Kenntnisse die Direkt-URL seiner Dateien verschleiern kann.

Perian bringt dem Mac “fremde” Video- und Audioformate bei

Perian Logo

Wer auf dem Mac eine Video- oder Audiodatei wiedergeben will, erlebt gelegentlich eine unangenehme Überraschung, weil der Mac das betreffende Format nicht kennt. Die Open-Source-Software Perian schafft hier Abhilfe, bringt sie dem Mac doch rund zwei Dutzend Video- und Audioformate bei, welche dieser von Haus aus nicht beherrscht. Einmal installiert manifestiert sich Perian als simpler Eintrag in den Systemeinstellungen und erfordert in aller Regel keine weitere Konfiguration. Weil die zusätzlichen Formate als Komponenten für das QuickTime Framework von Mac OS vorliegen, stehen sie allen Programmen zur Verfügung, welche auf QuickTime aufbauen (z.B. Apples QuickTime Player).

Booktype: Plattform für das kollaborative Bücherschreiben

Booktype: Übersichtsdarstellung eines Buchs

Ähnlich wie Substance ist Booktype eine Web-Plattform, welche das gemeinschaftliche Schreiben, Überarbeiten und Publizieren von Büchern ermöglicht. Solche Bücher sind in Kapitel gegliedert, welche wiederum zu Sektionen gruppiert werden können. Ansonsten fühlt sich Booktype wie ein einfaches Web-CMS an: In einem Rich-Text-Editor werden die einzelnen Kapitel geschrieben, rudimentär gelayoutet und allenfalls mit Bildern versehen.

Booktype: Differenzdarstellung beim Versionenvergleich

Wird ein bereits bestehendes Kapitel bearbeitet, so legt Booktype automatisch eine neue Version an und ermöglicht es später, die Unterschiede zwischen zwei Versionen anzuzeigen – dies ist insbesondere dann wichtig, wenn mehrere Personen an denselben Textteilen arbeiten.

Booktype: Exportformate

Ist ein Buch fertig, so kann es in unterschiedlichen Formaten exportiert werden: als PDF, E-Book (EPUB oder Kindle) oder editierbares Open Document. Sogar eine Anbindung an den Print-on-demand-Service Lulu.com ist vorhanden, so dass man auch gedruckte Bücher aus Booktype generieren kann.

Hinter Booktype steht Sourcefabric, denen wir bereits Airtime verdanken. Die auf Python und Django basierende Software kann gemäss den Bestimmungen der GNU Affero General Public License frei genutzt werden. Kann oder will man keinen eigenen Server betreiben, so bietet sich www.booki.cc als Alternative an – allerdings nur, wenn man frei verfügbaren Content publizieren will. Ein weiteres Projekt, das auf Booktype basiert, ist FLOSS Manuals, wo Handbücher für freie Software kollaborativ erstellt werden.

Für gemeinschaftlich erstellte Fachbücher ist Booktype eine leicht verständliche und doch ausreichend leistungsfähige Plattform. Manch ein Autor mag sich vielleicht schwer tun, seine Texte in einem Web-Editor zu erfassen, doch kann die eigentliche Schreibarbeit ja weiterhin auch offline in einem Textverarbeitungsprogramm erfolgen. Die eigentliche Stärke des Tools liegt darin, dass man ein Manuskript sehr einfach überarbeiten und dann in verschiedenen Formaten publizieren kann.

snowbabel: Lokalisierung von TYPO3-Extensions durch Content Managers

Benutzeroberfläche von snowbabel zur Übersetzung von Labels in TYPO3-Extensions

Nicht oder schlecht lokalisierte Extensions können einen TYPO3 Content Manger zur Verzweiflung bringen: Denn erstens versteht er oft nicht, wo die Texte (die er ja nicht selbst geschrieben hat) her kommen, und zweitens kommt er normalerweise nicht an diese Texte heran, um sie selbst zu übersetzen.

snowbabel ist für solche Fälle ein sehr übersichtliches und effizientes Tool, das auch ein Content Manager ohne vertiefte TYPO3-Kenntnisse schnell beherrscht. Die Extension fügt dem TYPO3-Backend zwei Module hinzu, von denen eines für die Grundeinstellungen zuständig ist, während im anderen die eigentliche Übersetzung stattfindet. Die Benutzeroberfläche ist ausgesprochen übersichtlich und selbsterklärend: Links wählt man die zu übersetzende Extension, rechts die zu bearbeitenden Sprachen, und in der Mitte bearbeitet man die entsprechenden Labels. Dabei müssen die Datensätze nicht in einer Detailansicht geöffnet, einzeln bearbeitet und wieder gespeichert werden, sondern man arbeitet direkt in der Tabelle, was die Arbeit massiv beschleunigt. snowbabel beherrscht inzwischen auch XLIFF (das neue Format für Sprachdateien – vgl.  TYPO3 4.6: Was hat es mit den XLIFF-Sprachdateien auf sich?) und ist somit für die Zukunft gut gerüstet.

TYPO3 4.6: Was hat es mit den XLIFF-Sprachdateien auf sich?

Language File Editor (lfeditor)

Sprachdateien (engl. Language Packs oder Language Packages) für TYPO3 enthalten Übersetzungen für den TYPO3 Core oder für Extensions. Übersetzt wird damit nicht derjenige Content, den die Content Mangers einpflegen, sondern diejenigen Texte, welche das System im Frontend oder im Backend selbständig anzeigt (sog. Labels).

Seit der Version 4.6 nutzt TYPO3 XLIFF als Format für Sprachdateien. Dieses standardisierte Format löst das ll-XML-Format ab, welches zwar auf XML basiert, ansonsten aber eine TYPO3-spezifische Lösung darstellt, welche mit gängigen Übersetzungsprogrammen nicht kompatibel ist. XLIFF bietet noch einige weitere Vorteile: So können in den Dateien Pluralformen, Übersetzungsvorschläge und –alternativen sowie Hinweise an die Übersetzer gespeichert werden. Ausserdem nutzt auch FLOW3 (das Framework der zukünftigen TYPO3-Version 5) XLIFF.

Um Sprachdateien vom ll-XML-Format (oder vom noch älteren PHP-Format) in XLIFF zu konvertieren, steht Entwicklern die Extension extdeveval zur Verfügung. Die Rückwärtskompatibilität für TYPO3-Versionen vor 4.6 (welche ja noch kein XLIFF kennen) stellt die Extension xliff sicher: Sie konvertiert automatisch XLIFF-Dateien ins alte ll-XML-Format. Um Übersetzungen zu pflegen bietet der Language File Editor lfeditor geeignete Funktionalitäten.

Parallel zur Umstellung auf XLIFF hat das TYPO3 Translation Team übrigens auch den TYPO3 Translation Server (wo Übersetzungen für Core und Extensions zentral gepflegt werden) von einer selbst entwickelten Lösung auf Pootle umgestellt. Pootle wird auch von LibreOffice, Mozilla, KDE, Gnome und anderen grossen Open-Source-Projekten genutzt und ist ein leistungsfähiges und doch einfach zu bedienendes Übersetzungssystem (ähnlich wie Transifex).

Weiterführende Informationen:

Contao: Version 2.11.0 veröffentlicht

Contao Logo

Das Entwickler-Team von Contao hat die neuste Version 2.11.0 des beliebten Open Source CMS veröffentlicht. Die wichtigsten Neuerungen im Überblick:

  • 2.11.0 ist die erste Contao-Version mit Long Term Support (LTS). Dies bedeutet, dass es für diese Version mindestens 18 Monate lang Sicherheits-Updates und Bugfixes geben wird. Dadurch wird weniger schnell ein Update auf das nächste Minor- oder Major-Release fällig, was typischerweise einen grösseren Aufwand mit sich bringt, weil API, Datenstrukturen oder Templates ändern können (Details zum Contao-Release-Zyklus und zum Long Time Support).
  • Die Sprache einer Seite wird künftig nicht mehr als Parameterwert pro Seite erfasst, sondern sie ergibt sich aus dem Pfad: Die deutsche Version einer Website wird beispielsweise unterhalb der Seite de angelegt, die englische unter en usw. Dies spiegelt sich auch in der URL wieder, wo dann eine deutsche Seite unter www.mustermann.ch/de/news.html erreichbar ist, ihr englisches Pendant unter www.mustermann.ch/en/news.html. Sofern die beiden Sprachversionen dasselbe Alias benutzen (im vorigen Beispiel: news), kann man nun einfach zwischen den Sprachen wechseln.
  • In den Theme-Einstellungen können neu globale Stylesheet-Variablen definiert werden, was eine schnelle Anpassung von zentralen Gestaltungsparametern ermöglicht. Stylesheet-Variablen in den Stylesheet-Einstellungen haben allerdings Vorrang und überschreiben ggf. globale Variablen.
  • Die Frontend-Module Event-Liste und Event-Leser können nun auf einer einzigen Seite kombiniert werden. Dasselbe gilt für Nachrichtenarchiv und Nachrichtenleser sowie für FAQ-Listen und FAQ-Leser. Das FAQ-Modul hat zudem im Backend ein Berechtigungssystem analog zum News- und zum Kalender-Modul erhalten.
  • Nicht eigentlich neu, von nun an aber zwingend vorgeschrieben ist die Verwendung eines Website-Startpunkts als oberster Knoten im Seitenbaum. Damit wird ein empfohlenes, sinnvolles Vorgehen zum Standard, was viele Anfängerprobleme vermeiden hilft.
  • Beim Anlegen von Backend-Benutzern kann man neu den Benutzer zwingen, beim ersten Login sein Passwort zu ändern. Dies erhöht insbesondere dann die Sicherheit, wenn Passwörter per E-Mail verschickt werden.

Daneben bringt die neue Version zahlreiche weitere Detailverbesserungen und Bugfixes, welche hier beschrieben sind.

Password Reuse Visualizer: Firefox Add-on deckt Mehrfachverwendung von Passwörtern auf

Output des Password Reuse Visualizer

Eines der grössten Sicherheitsrisiken im Internet besteht darin, dass wir für unterschiedliche Websites dieselben Passwörter benutzen. Das Firefox Add-on Password Reuse Visualizer zeigt dieses Problem in Form einer anschaulichen Grafik: Grüne Punkte stehen für die verschiedenen Passwörter, welche im Firefox Passwort-Manager gespeichert sind, blaue Punkte für die zugehörigen Websites, und orange Verbindungen weisen auf sehr ähnliche Passwörter hin. Im obigen Beispiel kann man also unschwer drei neuralgische Punkte ausmachen, wo eine Passwortänderung mehr Sicherheit bringen würde.

(Hintergrundinformationen auf dem Blog des Entwicklers Paul Sawaya)

TYPO3 Developer Days 2012, München

TYPO3 Developer Days 2012

Nach dem letztjährigen Abstecher in die Schweiz finden die TYPO3 Developer Days heuer wieder in Deutschland statt, und zwar in München, genauer im MACE in Unterföhring. Die Veranstaltung dauert vom Donnerstag, 12. April 2012 bis Sonntag, 15. April 2012. Noch bis zum 12. Februar 2012 kann man Themen für Referate und Workshops vorschlagen (Call for Papers), und bis zum gleichen Datum bekommt man auch Early-Bird-Tarife bei den Eintrittskarten (derzeit ist der Ticket-Shop aber noch nicht aufgeschaltet).

Software lokalisieren mit Transifex

Will man eine Software in mehreren Sprachversionen anbieten, dann integriert man die Übersetzungen sinnvollerweise nicht direkt in den Programmcode, sondern bindet sie über Sprachpakete ein. Ein beliebtes Format für solche Sprachpakete sind PO-Dateien (Portable Object; vgl. GNU gettext). Die Erstellung solcher Sprachpakete kann im Prinzip mit jedem Texteditor erfolgen, denn es handelt  sich um Textdateien. Umfangreichere Programme zu übersetzen ist mit dieser Methode aber keine Freude und auch nicht sonderlich effizient.

Poedit Benutzeroberfläche (Mac-Version)

Häufig werden stattdessen spezialisierte Editoren wie beispielsweise Poedit eingesetzt. Solche Programme stellen Originalsprache und Zielsprache einander gegenüber und unterstützen den Übersetzungsprozess über ein sogenanntes Translation Memory (d.h. ein Verzeichnis mit bereits übersetzten Texten, welches für Vorschläge herangezogen werden kann). Da es sich um Desktop-Programme handelt, kann allerdings immer nur ein Übersetzer gleichzeitig an einer bestimmten Sprachversion arbeiten; und das Aus- und Einchecken der Sprachdateien aus einem Code Repository ist auch nicht jedermanns Sache.

Gerade bei Open-Source-Projekten, welche auf die Unterstützung einer Community angewiesen sind, haben sich deshalb web-basierte Lösungen etabliert. So kann man beispielsweise auf Launchpad nebst Ubuntu Linux auch diverse andere Programme wie beispielsweise Blender, Calibre, JOSM (Java OpenStreetMap Editor), Mahara, Miro oder Stellarium übersetzen helfen.

Transifex Benutzeroberfläche (Ausschnitt)

Eine andere, ausgesprochen schöne Lösung, ist Transifex, die unter www.transifex.net als Hosted Service genutzt oder als Open Source Software heruntergeladen werden kann. Der Hosted Service ist für andere Open-Source-Projekte kostenlos, und so dass man sowohl als Open-Source-Entwickler als auch als Übersetzer mit einem Free Account bestens versorgt ist.

Will man sich als Übersetzer an einem Projekt beteiligen, so sucht man sich das entsprechende Projekt und schliesst sich dem Übersetzer-Team der gewünschten Sprache an (bzw. legt als Sprachenkoordinator ein neues Team an). Danach kann man über eine sehr dezente, in den Details aber sehr funktionale Oberfläche die Strings (wie die einzelnen Textbausteine heissen) übersetzen. Auch hier steht ein Translation Memory zur Verfügung, und man kann die Strings durchsuchen oder nach verschiedenen Kriterien filtern. Das Aufsetzen eines eigenen Projekts ist denkbar einfach: Kennt man die URL der originalen Sprachdatei (POT = Portable Object Template) im Code Repository, dann holt sich Transifex die Originalsprache selbständig und erzeugt daraus ein Übersetzungsprojekt.

Auch mit Transifex bleibt das Übersetzen von Software anspruchsvolle Knochenarbeit. Aber zumindest wird dadurch die Arbeit so komfortabel und effizient wie nur irgend möglich.