Unser eigener Server für Jenkins!

Jenkins CIWir haben vor kurzem einen eigenen Server für das Continuous-Integration-Tool Jenkins eingerichtet. Momentan laufen die üblichen statischen, metrischen Code-Analysen und prüfen den oTranCe Code vor dem Release. Im Laufe der nächsten Wochen soll das Tool weiter ausgebaut werden und die automatische Ausführung der PHPUnit-Tests mit einbinden. Wer neugierig ist und schon jetzt einmal sehen möchte, ob der Build grün ist, kann sich das hier anschauen: http://ci.otrance.de

Wir möchten uns vor allem bei der SysEleven GmbH
SysEleven. Hosting. Skaliert.bedanken, die uns diesen Server freundlicherweise für unser Open-Source-Projekt zur Verfügung gestellt hat. SysEleven beschäftigt sich vorrangig mit skalierbarem Hochsicherheits-Hosting, ist insbesondere im E-Commerce-Bereich tätig und betreut mittelständische und Enterprise-Onlinehändler mit Lastspitzen und Peaks durch Fernsehwerbung wie z.B. baby-markt.de.

Lebenslanges Gratis-Hosting – Bitte votet für uns!

Beim Hosting-Provider domainFACTORY läuft momentan eine tolle Aktion: DF möchte ein Open-Source-Projekt Eurer Wahl unterstützen und schreibt deshalb lebenslanges Gratis-Hosting aus. Wir haben uns für dieses Paket beworben, sind zu unserer grossen Freude in die engere Auswahl gekommen und benötigen nun Eure Stimmen: Bitte votet im Blog von domainFACTORY für das Projekt oTranCe! Hier geht es zur Abstimmung:
http://www.df.eu/blog/2013/01/17/leserwahl-open-source-projekt-fur-lebenslanges-gratis-hosting-gesucht/

Danke für Eure Unterstützung!

oTranCe Code-Repository zu Github umgezogen

Ende Oktober teilte Atlassian mit, dass das Source- und Review-Bundle ebenso wie das SVN-Hosting sowie Fisheye/Crucible OnDemand zum 15. Oktober 2013 eingestellt werden. Alle Kunden und Benutzer wurden gebeten, ihren Sourcecode auf andere Services umzuziehen.

Atlassian bietet eine Integration von GitHub zu Jira und Confluence auf recht einfache Weise. Ausserdem haben wir, während wir uns mit GitHub beschäftigt haben, festgestellt, dass dort eine Reihe anderer Funktionalitäten vorhanden sind, die die Zusammenarbeit in einer Open-Source-Umgebung erheblich erleichtern und zusätzlich virale Effekte (“Social Coding”) erreicht werden können.

Entwickler, die am Projekt teilnehmen möchten, müssen nun keine E-Mail mehr an den Project-Inhaber schreiben, auf eine Antwort warten, Beispiel-Code oder Diffs schicken etc., um Zugriff auf das Core-Repository zu erhalten. Wenn Ihr Lust habt mitzuarbeiten, ruft einfach https://github.com/DSB/oTranCe auf, legt einen Fork mit Eurem eigenen Account an, führt Änderungen durch und sendet einen Pull-Request zurück zum Original. Wir schauen uns den Code an und können ihn mit einem einfachen Klick in den Master-Branch übertragen. Natürlich wird diese Contribution in der Commit-Historie unter Eurem Account angezeigt.

Viel Spass beim Forken 🙂

Rechte und Rollen, Usernamen der Übersetzer im Header und einfaches Löschen von Sprachen

In der letzten Woche wurde hart gearbeitet, hier wollen wir einige Neuerungen vorstellen:

Assing language to translator in oTranCeZuweisung der Übersetzer in der Sprachbearbeitung
Beim Bearbeiten oder Neuanlegen einer Sprache kann diese sofort dem zuständigen (natürlich vorher im System angelegten) Übersetzer zugewiesen werden. Für Systeme, in denen sehr viele Übersetzer arbeiten, gibt es eine Volltext-Suche und/oder eine Blätter-Funktion. Bei Klick auf den Namen des Übersetzers wird die Berechtigung für das Übersetzen der Sprache ohne Neuladen der gesamten Seite gesetzt. Die Rückmeldung erfolgt über die entsprechenden Icons.

Platzhalter für die Sprache und die Namen der Übersetzer im Header
Über Platzhalter ist es ab sofort möglich, die Namen der Übersetzer und die ihnen zugeordnete Sprache beim Export im Header oder im Footer der Exportdatei auszugeben. Folgende Werte sind möglich: {LANG_NAME}, {LOCALE} und {TRANSLATOR_NAMES}.

Ein mögliches Beispiel:
// {LANG_NAME} is maintained by {TRANSLATOR_NAMES}

wird in der Ausgabe nach dem Export zu:
// Deutsch is maintained by joachim.bosch, admin, dsb

Neue Optionen für Rechte und Rollen für jeden Benutzer
Alle neuen Optionen für Rechte und Rollen für existierende oder neu anzulegende Benutzer sind per default deaktiviert und müssen explizit gesetzt werden.

  • User is allowed to delete users
    Ein Benutzer mit diesen Rechten kann einen anderen Benutzer löschen. Die (Übersetzungs-)Arbeit dieses gelöschten Benutzers bleibt davon unberührt.
  • User is allowed to delete languages
    Ein Benutzer mit diesen Rechten darf Einträge für diese Sprachen löschen. Alle Log-Files für diese Sprache werden mit gelöscht. Alle anderen berechtigten Benutzer verlieren ihre Rechte für diese Sprache.

Löschen von Datei-Templates löscht auch alle Keys und Übersetzungen
Ab sofort werden bei der Löschung von File-Templates auch sämtliche zugehörige Sprachkonstanten wie auch Übersetzungen gelöscht. Optional kann in ein anderes angelegtes File-Template verschoben werden.

Unassigned-Option wurde entfernt
Bisher war es möglich, Sprachkonstanten bei der Löschung auf den Zustand “unassigned” zu setzen. Ab sofort muss eine Sprachkonstante zumindest eine zugeordnete Template-Datei aufweisen, damit kein Datenbank-Müll entsteht.

Datenbank sauber halten
Bei allen Lösch-Aktionen, außer bei der Löschung von Sprach-Konstanten (language keys) wird automatisch eine so genannte Datenbank-Optimierung eingeleitet: Überhang-Bytes werden aus den Datenbank-Tabellen entfernt, so dass die Datenbank auf der Dateisystem-Ebene nicht fragmentiert.

Verbesserung der Usability (OTC-79)
Von der Startseite führt ein Klick auf die Sprache oder das Locale direkt zu einer Liste nicht übersetzter Keys.

Nicht übersetzte Variablen leer oder mit Fallback-Sprache exportieren (OTC-83)
Diese neue Option unter Admin -> Project legt fest, ob die leeren Übersetzungen einer Sprachvariable im Export mit der jeweiligen Fallback-Sprache befüllt oder leer bleiben sollen.

Wir bauen eine Wiki auf – jede Hilfe ist willkommen

Wir werden für oTranCe eine Wiki aufbauen:
https://mysqldumper.jira.com/wiki/display/OTC/Home

Natürlich wird diese Seite von der http://www.otrance.de aus verlinkt werden, sobald ein paar mehr Einträge dort zu finden sind. Hier haben wir schon einmal ein gutes Beispiel eingestellt, wie das Handbuch künftig aussehen kann:
https://mysqldumper.jira.com/wiki/display/OTC/Updating+from+SVN+source

Übrigens: Ein großes Lob an Daniel, der dieses Script geschrieben hat. Es läuft bereits auf der oTranCe Demo und auf für das OXIDforge Translation Center.

Wenn ihr gern an diesem Projekt mitarbeiten wollt, seid Ihr natürlich herzlich willkommen. Schickt uns einfach eine kurze Nachricht, damit wir die Zugangsdaten einrichten können.

oTranCe Demo verfügbar

Anfassen ist immer besser als nur Hinsehen 🙂

Wir haben deshalb vor einigen Tagen eine Demo-Installation von oTranCe aufgesetzt, mit der Ihr im Wesentlichen uneingeschränkt die Funktionalität der Übersetzungsplattform testen könnt.

Mit dem Benutzernamen “admin” und dem Passwort “admin” bekommt ihr kompletten Administrationszugang zu dieser oTranCe-Installation. Keine Angst – ihr könnt nichts kaputt machen, nicht mal mit einem Import eurer eigenen Sprachdateien: Keine der dort gehaltenen Daten werden benutzt; aller 24 Stunden wird die Demo in den ursprünglichen Zustand zurückgesetzt. Wer schauen möchte, welchen Blick beispielsweise ein Übersetzer auf oTranCe hat, sollte als Benutzernamen “tester” mit dem zugehörigen Passwort “tester” wählen.

Und jetzt viel Spass beim Ausprobieren! Lasst uns bitte wissen, was Euch gefällt, welche Fehler Ihr entdecken konntet und was Eurer Meinung nach noch nicht so rund läuft.

Performanceverbesserung vor oTranCe-Version 1.0

Während die ersten Anwender die Sprachdatenbanken fleißig befeuern, stellt sich heraus, dass die Performance ab einer gewissen Anzahl von Sprachen und/oder Keys zu einer sehr trägen Reaktion der Bearbeitungsseite führt.

Umgehend hat das oTranCe-Team reagiert und eine Lösung für das Problem gesucht und gefunden.

Zuvor versuchte die gut gemeinte GUI alle Fälle abzudecken: die Suche nach Treffern des Suchbegriffs wurde in den Keys und in den Übersetzungen durchgeführt. Zusätzlich wurde der Filter auf Sprachen, zugeordneten Templates und/oder nicht übersetzten Phrasen angewandt: die dadurch generierte Abfrage an das Datenbanksystem war zu komplex und zwang den MySQL-Server in die Knie. Bei der Ausgabe der Treffer wurden pro ausgegebener Zeile zusätzliche Abfragen generiert, um alle benötigten Informationen abzuholen.

Um diese Performanceprobleme abzuwenden, geht oTranCe hier nun wesentlich intelligenter vor. Die einzelnen, unterschiedlichen Suchaufgaben wurden gekapselt, so dass sich jeder Bereich um seine speziellen Anforderungen kümmern kann. Zusätzlich werden die Zusatzdaten für die Ausgabe nun “in einem Rutsch” abgeholt und halten die Belastung des MySQL-Servers so gering.

Insgesamt wird so eine wesentlich bessere Antwortgeschwindigkeit erreicht. Übersetzer müssen so nicht lange auf die Reaktion der Oberfläche warten und können wesentlich zügiger arbeiten.

Die Änderungen können über einen neuen SVN checkout herunter geladen werden.

Artikel über oTranCe im PHP-Magazin

oTranCe im PHP MagazinHerzlich willkommen auf unserer neuen Projekt-Webseite, auf der ihr alle Informationen über oTrance, die webbasierte Übersetzungsplattform für euer mehrsprachiges Webprojekt, finden könnt. Lasst uns bitte wissen, welche weiteren wichtigen Informationen noch benötigt werden. Von nun an werden wir alle wichtigen Neuigkeiten über oTranCe auf diesem Blog veröffentlichen. Bitte abonniert den RSS-Feed für den oTranCe Blog.

Heute sind wir sehr stolz bekannt geben zu dürfen, dass am 9. November ein Artikel über oTranCe im PHP-Magazin veröffentlicht wurde. In diesem Artikel beschreibt Daniel, wie man Übersetzungen mit oTranCe verwalten und pflegen kann.

Natürlich können wir in diesem Blogpost wegen möglicher Copyright-Verletzungen nicht den gesamten Artikel zur Verfügung stellen. Wenn es euch beliebt, könnt Ihr aber diese Ausgabe des PHP Magazins bestellen.