Transifex mit Contao Toolbox: Unterschied zwischen den Versionen

Aus Contao Community Documentation

K
(Über Git Cloning)
 
(16 dazwischenliegende Versionen von einem Benutzer werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Kategorie:Transifex]]
+
[[Category:Transifex]]
 +
[[Category:Dev_HOWTOS]]
 +
[[Category:Development]]
 +
[[Category:Extensions]]
 
<< [[Transifex_–_Lokalisierungsplattform|Zum Hauptartikel]]
 
<< [[Transifex_–_Lokalisierungsplattform|Zum Hauptartikel]]
 
=Was ist das?=
 
=Was ist das?=
Zeile 5: Zeile 8:
 
Das Konzept dahinter ist folgender.
 
Das Konzept dahinter ist folgender.
 
* der Entwickler legt wie bisher PHP Sprachdateien an für die Ursprungsprache, z.B. "en", im Modul Unterverzeichnis language/en/
 
* der Entwickler legt wie bisher PHP Sprachdateien an für die Ursprungsprache, z.B. "en", im Modul Unterverzeichnis language/en/
* mit ''ctb'' werden die Sprachdateien in das XLIFF Format gewandelt
+
* mit ''ctb'' werden alle Sprachdateien in das XLIFF Format gewandelt
* anschließend werden diese XLIFF Dateien mit ''ctb'' hoch geladen nach Transifex und tauchen dadurch in der Ursprungsprache als Ressourcen auf
+
* anschließend werden die XLIFF Dateien der Ursprungsprache (default: en) mit ''ctb'' hoch geladen nach Transifex und tauchen dadurch in der Ursprungsprache als Ressourcen auf
 
* übersetzte Ressourcen anderer Sprachen werden mit ''ctb'' runter geladen im XLIFF Format
 
* übersetzte Ressourcen anderer Sprachen werden mit ''ctb'' runter geladen im XLIFF Format
* anschließend werden mit ''ctb'' diese in PHP Sprachdateien umgewandelt und in das passende Verzeichnis abgelegt, z.B. language/de/  
+
* anschließend werden mit ''ctb'' diese in PHP Sprachdateien umgewandelt und in das passende Verzeichnis abgelegt, z.B. language/de/
  
 
=Installation=
 
=Installation=
 +
Die Installationsanleitung entspricht der aus der Readme von ctb und kann auf zwei Arten erfolgen.
 +
==Über composer==
 +
Download composer wenn noch nicht vorhanden:
 +
<source lang="bash">
 +
curl -sS https://getcomposer.org/installer | php
 +
</source>
 +
Und nun die Contao Toolbox installieren:
 +
<source lang="bash">
 +
php composer create-project --prefer-source cyberspectrum/contao-toolbox
 +
</source>
 +
{{Achtung|Am Ende der Installation wird gefragt, ob die VCS History gelöscht werden kann, hier mit 'n' dieses verneinen. Sonst arbeitet der Compiler nicht richtig (folgt später)}}
 +
<source lang="bash">
 +
Do you want to remove the existing VCS (.git, .svn..) history? [Y,n]? n
 +
</source>
 +
 +
==Über Git Cloning==
 +
<source lang="bash">
 +
git clone https://github.com/discordier/contao-toolbox.git
 +
</source>
 +
Anschließend als erstes die Abhängigkeiten auflösen.
 +
<source lang="bash">
 +
php composer update
 +
</source>
 +
Um nun die ctb von überall aufrufen zu können, diese liegt ja nicht im Suchpfad, habe ich dazu noch ein Alias angelegt. Den Pfad in diesem Beispiel muss jeder für sich anpassen:
 +
<source lang="bash">
 +
alias ctb='/contao_entwicklung/contao-toolbox/bin/ctb'
 +
</source>
 +
===Optional: eine ctb.phar kompilieren===
 +
Zum Kompilieren ruft man das mitgelieferte Compiler-Script auf.
 +
<source lang="bash">
 +
./bin/compile-ctb
 +
</source>
 +
Diese phar Datei kann man nun in ein Verzeichnis kopieren auf dem ein Suchpfad liegt. Dadurch ist die spätere Nutzung einfacher. Dazu noch ein symbolischen Link anlegen, um ''ctb'' ohne die Endung .phar aufrufen zu können.
 +
<source lang="bash">
 +
ln -s ctb.phar ctb
 +
</source>
 +
Falls es zu einem Compiler Fehler kommt liegt es wohl an einer Einstellungen in der php.ini, dort muss definiert sein:
 +
<source lang="ini">
 +
[Phar]
 +
phar.readonly = Off
 +
</source>
 +
Weitere Hinweise dazu: [http://php.net/phar.readonly php.net/phar.readonly]<br>
 +
 +
Wo die php.ini der PHP Kommandozeilenversion liegt, erfährt man so:
 +
<source lang="bash">
 +
php --ini | grep 'Configuration File'
 +
</source>
  
 
=Konfiguration=
 
=Konfiguration=
(composer.json / config.json)
+
Um bei der Nutzung nicht immer Login und Passwort angeben zu müssen, kann man diese in seine Home-Verzeichnis in einer Konfigurationsdatei im json-Format anlegen wie folgt: <pre>`$HOME/.config/ctb/config.json`</pre>
 +
<source lang="xml">
 +
{
 +
"transifex": {
 +
"user": "john-doe",
 +
"pass": "sUp3rPassword!"
 +
}
 +
}
 +
</source>
 +
In der composer.json der jeweiligen Erweiterung kann man ebenfalls einige Daten ablegen, um die Aufrufe auf Kommandozeile zu verkürzen.
 +
Dazu den Abschnitt "extra" ergänzen:
 +
<source lang="xml">
 +
{
 +
    "extra":{
 +
        "contao": {
 +
            "transifex": {
 +
                "project": "acme-core",
 +
                "prefix": "core-",
 +
                "languages_cto": "languages",
 +
                "languages_tx": ".tx"
 +
            }
 +
        }
 +
    }
 +
}
 +
</source>
 +
Dabei bedeuten:
 +
* "project" : der Projektname auf Transifex
 +
* "prefix" : ein frei wählbarer Prefix, aus diesem und dem originalem Dateiname wird der Dateiname für die Ressource generiert (z.B.:  core-tl_module)
 +
* "languages_cto": Verzeichnisname in dem die Sprachunterverzeichnisse liegen (/de/..., /en/... )
 +
* "languages_tx": Verzeichnisname in der die umgewandelten XLIFF Datein abgelegt werden sollen
 +
 
 +
Mit dem "prefix" wäre es z.B. möglich, die Sprachdateien von mehreren Teilprojekten innerhalb eines einzigen transifex Projektes zu speichern.
  
 
=Kommandozeilen Workflow=
 
=Kommandozeilen Workflow=
 +
Im Hauptverzeichnis seiner Erweiterung ruft man nun die einzelnen Jobs auf die zu erledigen sind. Dabei wird von den obigen Definitionen ausgegangen.
 +
Das ''--verbose'' dient hier nur zu Kontrolle, was gerade durchgeführt wird. Die ''--base-language'' könnte weggelassen werden, "en" ist hier das default.
 +
 +
==Sprachfiles in xliff umwandeln in Verzeichnis .tx==
 +
<source lang="bash">
 +
ctb to-xliff --base-language="en" --verbose
 +
</source>
 +
In Langform wenn die composer.json und die config.json nicht definiert wären:
 +
<source lang="bash">
 +
ctb to-xliff --contao="languages/" --xliff=".tx/" --projectname="acme-core" --base-language="en" --prefix="core-" --user="john-doe" --pass="sUp3rPassword!" --verbose
 +
</source>
 +
 +
==Ursprungssprache hochladen zu Transifex==
 +
<source lang="bash">
 +
ctb upload-transifex --base-language="en" --verbose
 +
</source>
 +
In Langform wenn die composer.json und die config.json nicht definiert wären:
 +
<source lang="bash">
 +
ctb upload-transifex --contao="languages/" --xliff=".tx/" --projectname="acme-core" --base-language="en" --prefix="core-" --user="john-doe" --pass="sUp3rPassword!" --verbose
 +
</source>
 +
 +
==Übersetzen in Transifex==
 +
Zu diesem Zeitpunkt würde nun die Online-Übersetzung auf Transifex erfolgen. Liegen bereits weitere Sprachen vor, z.B. aus ER2 Zeiten, können diese manuell hochgeladen werden, dazu später. ('''ctb''' kann dieses derzeit nicht)
 +
 +
==Übersetze Sprachen von Transifex laden==
 +
<source lang="bash">
 +
ctb download-transifex --base-language="en" --mode="translated" --verbose
 +
</source>
 +
In Langform wenn die composer.json und die config.json nicht definiert wären:
 +
<source lang="bash">
 +
ctb download-transifex --contao="languages/" --xliff=".tx/" --projectname="acme-core" --base-language="en" --prefix="core-" --user="john-doe" --pass="sUp3rPassword!" --mode="translated" --verbose
 +
</source>
 +
Hier wurde der default Wert vom Modus "reviewed" auf "translated" geändert. Damit bekommt man alle übersetzte Sprachen, egal wieviel Prozent davon fertig sind.
 +
 +
==Sprachfiles in PHP umwandeln und in die Sprachverzeichnisse ablegen==
 +
<source lang="bash">
 +
ctb from-xliff --base-language="en" --verbose
 +
</source>
 +
In Langform wenn die composer.json und die config.json nicht definiert wären:
 +
<source lang="bash">
 +
ctb from-xliff --contao="languages/" --xliff=".tx/" --projectname="acme-core" --base-language="en" --prefix="core-" --user="john-doe" --pass="sUp3rPassword!" --verbose
 +
</source>
 +
Dabei werden die vorhandenen nur überschrieben, wenn Änderungen vorliegen.
  
 
=Upload weiterer Sprachen=
 
=Upload weiterer Sprachen=

Aktuelle Version vom 1. März 2015, 16:39 Uhr

<< Zum Hauptartikel

Was ist das?

Die Contao-Toolbox, kurz ctb, gibt es auf GitHub: contao-toolbox
Das Konzept dahinter ist folgender.

  • der Entwickler legt wie bisher PHP Sprachdateien an für die Ursprungsprache, z.B. "en", im Modul Unterverzeichnis language/en/
  • mit ctb werden alle Sprachdateien in das XLIFF Format gewandelt
  • anschließend werden die XLIFF Dateien der Ursprungsprache (default: en) mit ctb hoch geladen nach Transifex und tauchen dadurch in der Ursprungsprache als Ressourcen auf
  • übersetzte Ressourcen anderer Sprachen werden mit ctb runter geladen im XLIFF Format
  • anschließend werden mit ctb diese in PHP Sprachdateien umgewandelt und in das passende Verzeichnis abgelegt, z.B. language/de/

Installation

Die Installationsanleitung entspricht der aus der Readme von ctb und kann auf zwei Arten erfolgen.

Über composer

Download composer wenn noch nicht vorhanden:

curl -sS https://getcomposer.org/installer | php

Und nun die Contao Toolbox installieren:

php composer create-project --prefer-source cyberspectrum/contao-toolbox
Achtung.png Achtung: Am Ende der Installation wird gefragt, ob die VCS History gelöscht werden kann, hier mit 'n' dieses verneinen. Sonst arbeitet der Compiler nicht richtig (folgt später)
Do you want to remove the existing VCS (.git, .svn..) history? [Y,n]? n

Über Git Cloning

git clone https://github.com/discordier/contao-toolbox.git

Anschließend als erstes die Abhängigkeiten auflösen.

php composer update

Um nun die ctb von überall aufrufen zu können, diese liegt ja nicht im Suchpfad, habe ich dazu noch ein Alias angelegt. Den Pfad in diesem Beispiel muss jeder für sich anpassen:

alias ctb='/contao_entwicklung/contao-toolbox/bin/ctb'

Optional: eine ctb.phar kompilieren

Zum Kompilieren ruft man das mitgelieferte Compiler-Script auf.

./bin/compile-ctb

Diese phar Datei kann man nun in ein Verzeichnis kopieren auf dem ein Suchpfad liegt. Dadurch ist die spätere Nutzung einfacher. Dazu noch ein symbolischen Link anlegen, um ctb ohne die Endung .phar aufrufen zu können.

ln -s ctb.phar ctb

Falls es zu einem Compiler Fehler kommt liegt es wohl an einer Einstellungen in der php.ini, dort muss definiert sein:

[Phar]
phar.readonly = Off

Weitere Hinweise dazu: php.net/phar.readonly

Wo die php.ini der PHP Kommandozeilenversion liegt, erfährt man so:

php --ini | grep 'Configuration File'

Konfiguration

Um bei der Nutzung nicht immer Login und Passwort angeben zu müssen, kann man diese in seine Home-Verzeichnis in einer Konfigurationsdatei im json-Format anlegen wie folgt:
`$HOME/.config/ctb/config.json`
{
	"transifex": {
		"user": "john-doe",
		"pass": "sUp3rPassword!"
	}
}

In der composer.json der jeweiligen Erweiterung kann man ebenfalls einige Daten ablegen, um die Aufrufe auf Kommandozeile zu verkürzen. Dazu den Abschnitt "extra" ergänzen:

{
    "extra":{
        "contao": {
            "transifex": {
                "project": "acme-core",
                "prefix": "core-",
                "languages_cto": "languages",
                "languages_tx": ".tx"
            }
        }
    }
}

Dabei bedeuten:

  • "project" : der Projektname auf Transifex
  • "prefix" : ein frei wählbarer Prefix, aus diesem und dem originalem Dateiname wird der Dateiname für die Ressource generiert (z.B.: core-tl_module)
  • "languages_cto": Verzeichnisname in dem die Sprachunterverzeichnisse liegen (/de/..., /en/... )
  • "languages_tx": Verzeichnisname in der die umgewandelten XLIFF Datein abgelegt werden sollen

Mit dem "prefix" wäre es z.B. möglich, die Sprachdateien von mehreren Teilprojekten innerhalb eines einzigen transifex Projektes zu speichern.

Kommandozeilen Workflow

Im Hauptverzeichnis seiner Erweiterung ruft man nun die einzelnen Jobs auf die zu erledigen sind. Dabei wird von den obigen Definitionen ausgegangen. Das --verbose dient hier nur zu Kontrolle, was gerade durchgeführt wird. Die --base-language könnte weggelassen werden, "en" ist hier das default.

Sprachfiles in xliff umwandeln in Verzeichnis .tx

ctb to-xliff --base-language="en" --verbose

In Langform wenn die composer.json und die config.json nicht definiert wären:

ctb to-xliff --contao="languages/" --xliff=".tx/" --projectname="acme-core" --base-language="en" --prefix="core-" --user="john-doe" --pass="sUp3rPassword!" --verbose

Ursprungssprache hochladen zu Transifex

ctb upload-transifex --base-language="en" --verbose

In Langform wenn die composer.json und die config.json nicht definiert wären:

ctb upload-transifex --contao="languages/" --xliff=".tx/" --projectname="acme-core" --base-language="en" --prefix="core-" --user="john-doe" --pass="sUp3rPassword!" --verbose

Übersetzen in Transifex

Zu diesem Zeitpunkt würde nun die Online-Übersetzung auf Transifex erfolgen. Liegen bereits weitere Sprachen vor, z.B. aus ER2 Zeiten, können diese manuell hochgeladen werden, dazu später. (ctb kann dieses derzeit nicht)

Übersetze Sprachen von Transifex laden

ctb download-transifex --base-language="en" --mode="translated" --verbose

In Langform wenn die composer.json und die config.json nicht definiert wären:

ctb download-transifex --contao="languages/" --xliff=".tx/" --projectname="acme-core" --base-language="en" --prefix="core-" --user="john-doe" --pass="sUp3rPassword!" --mode="translated" --verbose

Hier wurde der default Wert vom Modus "reviewed" auf "translated" geändert. Damit bekommt man alle übersetzte Sprachen, egal wieviel Prozent davon fertig sind.

Sprachfiles in PHP umwandeln und in die Sprachverzeichnisse ablegen

ctb from-xliff --base-language="en" --verbose

In Langform wenn die composer.json und die config.json nicht definiert wären:

ctb from-xliff --contao="languages/" --xliff=".tx/" --projectname="acme-core" --base-language="en" --prefix="core-" --user="john-doe" --pass="sUp3rPassword!" --verbose

Dabei werden die vorhandenen nur überschrieben, wenn Änderungen vorliegen.

Upload weiterer Sprachen

TODO: Wird ergänzt.

<< Zum Hauptartikel

Ansichten
Meine Werkzeuge

Contao Community Documentation

Toflar hat mich gestern entjungfert! ... er hat meinen ersten PR gemerged.

Kim Wormer
Navigation
Verstehen
Verwenden
Entwickeln
Verschiedenes
Werkzeuge