Em_installtdeb(1) Emdebian-TDeb-U.bersetzungspakete und Quellen generieren

U.BERSICHT

em_installtdeb

em_installtdeb [SPRACHCODE]

em_installtdeb [--no-act]

em_installtdeb [--no-sign]

Copyright und Lizenz

 Copyright (C) 2007-2008  Neil Williams <[email protected]>
 Dieses Paket ist freie Software; Sie ko.nnen es unter den Bedingungen der
 XGNU General Public LicenseX, wie sie von der XFree Software FoundationX
 entweder in Version 3 der Lizenz oder (optional) in einer spa.teren Version
 vero.ffentlicht wurde, weiterverteilen und/oder vera.ndern.
 Dieses Programm wird inder Hoffnung verteilt, dass es nu.tzlich sein wird,
 aber OHNE JEGLICHE GEWA.HRLEISTUNG, auch ohne die inbegriffene
 Gewa.hrleistung von MARKTGA.NGIGKEIT und EIGNUNG FU.R EINEN SPEZIELLEN ZWECK.
 Lesen Sie die XGNU General Public LicenseX, um weitere Einzelheiten zu
 erhalten.
 Sie sollten mit diesem Programm eine Kopie der XGNU General Public License
 erhalten haben. Falls nicht, lesen Sie <http://www.gnu.org/licenses/>.

BESCHREIBUNG

em_installtdeb is a debhelper add-on created by Emdebian to create translation packages (tdebs). em_installtdeb is intended to separate out the individual translation files from the current Debian packages into packages without any translation files and a series of tdeb locale packages, one per translation. Generated packages use the syntax: $package-locale-$language_code_$version_all.deb

(From v3.0.0 onwards, TDebs are architecture-independent.)

Sobald ein Paket Em_installtdeb benutzt, sollten U.bersetzungsdateien aus allen Paketen in der normalen Erstellung entfernt werden. Em_installtdeb wird als ein zweiter Erstellungsprozess ausgefu.hrt (sehr klein, sehr schnell) der einfach die *.po-Dateien in TDebs konvertiert und packt. Ein TDeb-Quellpaket (X.dscX, X.tar.gzX und X.changesX) wird neben den exisitierenden Erstellungsdaten erzeugt. Das Quellpaket wird von U.bersetzern benutzt, um neue oder aktualisierte TDeb-Pakete zu erstellen. TDeb-X.changesX-Dateien mu.ssen nur zu den zweiten Locale-Depots hochgeladen werden, anstatt der Haupt-Debian-Spiegel und diese Depots ko.nnen weit zwanglosere Richtlinien zum Hochladen haben. TDeb-Pakete haben keine Abha.ngigkeiten und es ko.nnen keine Pakete von ihnen abha.ngen.

Xem_installtdebX unterstu.tzt derzeit nur Gettext-U.bersetzung.

Bestimmte Sprachcodes mu.ssen gea.ndert werden, um brauchbare Bestandteile eines Debian-Paketnamens zu erhalten. Unterstriche werden zu Bindestrichen, X@X zu X+X und alle Codes werden in Kleinschreibung umgewandelt. Diese A.nderungen gelten nur fu.r den Paketnamen, der Installationsort bleibt unvera.ndert.

Das Locale-Paket muss XGETTEXT_PACKAGEX fu.r den spa.teren Dateinamen der bina.ren U.bersetzungsdatei benutzen X obwohl dies der gleiche sein ko.nnte, wie $dh{MAINPACKAGE}. XGETTEXT_PACKAGEX wird durch Upstream festgelegt, nicht durch Debian. Wenn das ganze Paket erstellt wird, ko.nnte die U.bersetzung in debian/tmp/usr/share/locale/$lang/LC_MESSAGES liegen, dieser Ort ist im U.bersetzermodus nicht verfu.gbar. Fragen Sie stattdessen XGETTEXT_PACKAGEX vom POT-Dateinamen ab, dem Makefile XGETTEXT_PACKAGE-MakroX oder falls dies nicht gesetzt ist benutzen Sie den Upstream-Quellpaketmnamen. Die ko.nnte ein Erweitern verlangen.

Die XQuelleX fu.r U.bersetzer entha.lt daher:

 debian/rules  /* Platzhalterdatei */
 debian/control
 debian/changelog
 po*/$lang.po  /* falls vorhanden */
 po*/$GETTEXT_PACKAGE.pot /* ko.nnten mehrere sein */

Einige Pakete benutzten mehrere PO-Verzeichnisse und Em_installtdeb u.berpru.ft alle benutzbaren PO-Verzeichnisse auf eine PO-Datei und fu.gt sie in die TDeb-Quelle ein, zusammen mit allen PO-Dateien, z.B:

 po/fr.po
 po-lib/fr.po
 po/application.pot
 po-lib/library.pot

Wenn es verpackt wa.re, wu.rde das aus dieser Quelle erstellte TDeb folgendes enthalten:

 ./usr/share/locale/fr/LC_MESSAGES/application.mo
 ./usr/share/locale/fr/LC_MESSAGES/library.mo

Ein gleichwertiges TDeb fu.r das XDEX-Locale wu.rde folgendes enthalten:

 ./usr/share/locale/de/LC_MESSAGES/application.mo
 ./usr/share/locale/de/LC_MESSAGES/library.mo

Dies ist vergleichbar mit dem Debian-XSpeicher-ist-billigX-Modell des Trennens der Dateien Xapplication.moX und Xlibrary.moX und Kombinierens aller U.bersetzungen in einem Paket, so dass das gleichwertige Debian-Paket folgendes enthalten wu.rde:

 ./usr/share/locale/cs/LC_MESSAGES/application.mo
 ./usr/share/locale/de/LC_MESSAGES/application.mo
 ./usr/share/locale/fr/LC_MESSAGES/application.mo
...
 ./usr/share/locale/sv/LC_MESSAGES/application.mo
 ./usr/share/locale/ro/LC_MESSAGES/application.mo
 ./usr/share/locale/vi/LC_MESSAGES/application.mo

(Fu.r das andere Pakete erneut wiederholt.)

Viele Pakete enthalten Dutzende U.bersetzungen X einige enthalten u.ber 70 .mo-Dateien und .mo-Dateien ko.nnen jeweils zwischen 2 und 30 Kb groβ sein. Ohne TDebs erhalten alle Benutzer alle 70 U.bersetzungen, auch wenn nur eine oder zwei benutzt werden. Mit TDebs erhalten alle Benutzer sowohl die Bibliotheks- als auch Anwendungsu.bersetzungen, aber nur fu.r die eine oder zwei Locales, die von dieser Installation unterstu.tzt werden. Die durch das Unterteilen von Anwendung.mo und Bibliothek.mo in getrennte Pakete fu.r das gleiche Locale erreichte zusa.tzliche Detailgenauigkeit wird wahrscheinlich wertvoll fu.r die Auslastung sein. (Tatsa.chlich heiβt das, dass Pakete mit mehreren U.bersetzungen derzeit nicht unterstu.tzt werden X zumindest nicht auf die herko.mmliche Weise.) Es ist mo.glich, dass Entwicklungen wie Dpkg-Filterung diese letzte Stufe der Aufteilung implementieren ko.nnen, falls no.tig.

Em_installtdeb wird versuchen, die no.tige(n) POT-Datei(en) zu generieren und dann ein $package_$version_tdeb.tar.gz zu erstellen, das die Quelldateien entha.lt.

Jedes Paket kann ein Quell-TDeb haben, solange die POT-Datei entweder verpackt ist oder erstellt werden kann. Das Paket muss nicht bereits u.bersetzt worden sein.

Um weitere Details u.ber TDebs zu erhalten lesen Sie: <http://www.emdebian.org/emdebian/langupdate.html> <http://wiki.debian.org/i18n/TranslationDebs>

Beachten Sie, dass die Emdebian-Implementierung der TDebs sich von den geplanten TDebs fu.r Debian unterscheidet, weil Emdebian sich im Allgemeinen nicht um Handbuchseiten ku.mmert, geschweige denn um u.bersetzte Handbuchseiten. Sobald die DEB_BUILD_OPTION XnodocsX in Debhelper unterstu.tzt wird, wird dies kein Problem sein, da die TDebs ohne irgendwelche Handbuchseiten erstellt werden ko.nnen. Andere u.bersetzte Dokumentationen wu.rden unter XnodocsX ebenfalls entfallen. Es gibt relativ wenige Bilder, die u.bersetzten Text enthalten.

Um die Erho.hung der Paketnummern zu verwalten (durchschnittlich zehnfach), organisiert das zweite Locale-Depot die TDeb-Pakete durch die Locale-Wurzel z.B. liegt Xen_GBX unterhalb XenX und Xsr@LatnX unterhalb XsrX. Jede Locale-Wurzel bekommt eine einzelne Apt-Quelle im Locale-Verzeichnis, um den Ru.ckfall von einer speziellen Locale auf eine allgemeinere Locale-Wurzel zu unterstu.tzen. Auf diese Weise muss jedes Gera.t nur mit Zwischenspeicherdaten fu.r einen Bruchteil der gesamten TDeb-Pakete zurechtkommen (ungefa.hr ein Dreissigstel).

Eine neue C-/C++-Anwendung handhabt dann die Installation und Aktualisierung von TDeb-Paketen unter Beachtung der Liste unterstu.tzter Locales und der Liste installierter Pakete. Daten, die von langupdate zwischengespeichert wurden, sind tempora.r und nicht dazu gedacht, zwischen den Ausfu.hrungen von langupdate zwischengespeichert zu werden.

OPTIONEN

Die Standardaktion ist es, alle verfu.gbaren PO-Dateien zu verarbeiten.

Dieser Modus wird von Paketbetreuern benutzt, um am Ende des Debian-Erstellungsprozesses TDeb-Quellen und Bina.rpakete zu generieren (ohne U.bersetzungsdateien). Beachten Sie, dass dies ein zweites X.dscX, ein zweites X.changesX, ein zweites (wesentlich kleineres) X.tar.gzX unter Benutzung der Endung Xtdeb.tar.gzX und einem separaten Hochladen zu den zweiten Locale-Depots bedeutet. Emdebian-tools werden Behandlungsroutinen fu.r diese Operationen enthalten und Debian kann a.hnliche Adapter, wie die beno.tigten, erstellen.

Dieser einsprachige Aktualisierungsmodus von Em_installtdeb wird wahrscheinlich nicht beibehalten sobald Dpkg-gentdeb verfu.gbar ist, weil U.bersetzungen wahrscheinlicher in Debian als in Emdebian aktualisiert werden.

LANG_CODE
XLANG_CODEX kann entweder der Name der Locale sein, wie er in der PO-Datei angegeben wurde (XfrX, Xen_GBX, Xsr@LtnX etc.) oder der Name der Locale, wie er im eventuellen Paketnamen angegeben wurde (XfrX, Xen-gbX, Xsr+ltnX etc.).

Falls eine PO-Datei bereits fu.r diese Locale exisitiert, verarbeitet Em_installtdeb nur diese eine U.bersetzung und erstellt eine einzelnes TDeb-Paket.

Falls die PO-Datei nicht exisitiert, endet Em_installtdeb mit einem Fehler. (Kopieren Sie die POT-Datei von der Originalquelle, um eine neue PO-Datei zu erstellen und bearbeiten Sie sie, um die neue U.bersetzung einzufu.gen, fu.hren Sie dann erneut Em_installtdeb aus.)

XLANG_CODEX ist als ein XU.bersetzermodusX gedacht, in dem individuelle TDeb-Pakete vom U.bersetzer erstellt und in ein geeignetes Depot hochgeladen werden ko.nnen. Em_installtdeb erstellt den TDeb-Quell-Tarball, eine brauchbare X.dscX-Datei zur Beschreibung der TDeb-Quelle und eine TDeb-X.changesX-Datei.

no-act
Em_installtdeb wird nur die Steuerungsdaten ausdrucken, die fu.r das TDeb benutzt wu.rden, falls die Debhelper-Option --no-act benutzt wird.
no-sign
Em_installtdeb ruft normalerweise XdebsignX auf, wenn X.changesX gespeichert wird. Diese Option unterdru.ckt dieses Verhalten.

Benutzung in Debian

Beachten Sie, dass die Benutzung von Xdebian/xcontrolX im aktuellen Skript bedeutet, dass XS-TDeb-Build-Directory und XS-TDeb-POT-Names in Xdebian/controlX unterstu.tzt werden mu.ssen, bevor es durch Debian eingefu.hrt wird. Zur gleichen Zeit muss auch XXC-Package-Type: tdebX unterstu.tzt werden.

XrepreproX beno.tigt einen Patch, um X.tdebX zu akzeptieren und in den Depot-Dateien zu erlauben:
 $ reprepro --ignore=extension -b /path/ includedeb \
 unstable ../qof-locale-sv_0.7.5-1em1_arm.tdeb
 $ ls /opt/reprepro/locale/pool/main/q/qof/
 qof-locale-sv_0.7.5-1em1_arm.deb

 Filename: pool/main/q/qof/qof-locale-sv_0.7.5-1em1_all.deb
 Description: sv translation for qof (tdeb)

XrepreproX beno.tigt auβerdem eine Mo.glichkeit eine .tdeb-.changes-Datei zu handhaben.
 reprepro -b /opt/reprepro/locale/ include unstable ../qof_0.7.5-1em1_arm.changes
 Xqof-locale-id_0.7.5-1em1_arm.tdebX ist nicht X.debX oder X.udebX!
 Es sind Fehler aufgetreten!

Damit die Datei Xdebian/rulesX im generierten Quellpaket nu.tzlich ist, muss Em_installtdeb unterteilt werden, so dass Xdpkg-buildpackageX die richtigen Daten erha.lt, um eine brauchbare X.changesX-Datei zu erstellen, da Em_installtdeb sich dafu.r zu schade ist, selbst aufzura.umen.

endianness

Until version 3.0.0, Emdebian packages used architecture-dependent TDebs but this proved to be unnecessary, TDebs are now architecture-independent, using the internal gettext wrapper.

Andere U.bersetzungen

Pakete ko.nnten auβerdem u.bersetzte Handbuchseiten und U.bersetzungen fu.r Debconf-Schablonen enthalten. Diese U.bersetzungen werden nicht verpackt oder von Em_installtdeb gehandhabt, da Emdebian solche Dateien nicht handhaben muss und weil jede Variante eine angepasste Handhabung beno.tigt (der gro.βte Teil der Debconf-Unterstu.tzung ist bereits verfu.gbar). Falls TDebs von Debian unterstu.tzt werden, mu.ssen diese Fragen gekla.rt werden, so dass Emdebian fortfahren kann, nur die Gettext-Programmu.bersetzungen zu verpacken, u.berstu.tze Handbuchseiten auszulassen und Debconf-U.bersetzungsunterstu.tzungen existierenden Werkzeugen zu u.berlassen.

Benutzung von Xdebhelper::init

Das Problem mit Init besteht darin, dass $dh{DOPACKAGES} in Xdebian/controlX arbeitet und die Locale-Pakete nicht in Xdebian/controlX liegen. Deshalb erha.lt Em_installtdeb den XSource: X-Paketnamen, um ihn als Pra.fix fu.r die Locale-Paketnamen zu benutzen.

U.bersetzermodus

Dies ist ein besonderer Modus, weil Debhelper so etwas u.blicherweise nicht tun wu.rde. Im U.bersetzermodus wird debian/rules nicht benutzt. Em_installtdeb tut alles no.tige, um das angeforderte TDeb zu konfigurieren, erstellen, installieren und verpacken und das dazugeho.rige TDeb-Quellpaket benutzt ein tempora.res Verzeichnis, um sicherzustellen, dass die korrekten Steuerungs- und A.nderungsprotokolldaten verfu.gbar sind.

Es gibt ein paar Probleme mit dieser Methode X die Erstellung beno.tigt ein Xdebian/changelogX aber auβerdem wird eine U.bersetzung als natives Paket beno.tigt (um zu verhindern, dass ein leeres .diff.gz gebraucht wird), sogar wenn das Upstream-Paket nicht nativ ist. Die derzeitige Lo.sung besteht darin, eine neue Version zu erstellen (in angeha.ngtem TDeb), um einen sauberen Eintrag in XchangelogX zu erhalten, der nicht versucht Fehler des Original-Uploads erneut zu schlieβen und dann Dpkg-Source zu zwingen das TDeb als natives Paket zu betrachten. Dies ko.nnte sich in Zukunft a.ndern, aber solche A.nderungen beno.tigen wahrscheinlich Unterstu.tzung in Dpkg. Diese Methode funktioniert mit der existierenden Unterstu.tzung, obwohl sie nicht ideal ist. Eine vera.nderte Version zu benutzen stellt auβerdem sicher, dass die generierten Dateien nicht andere Erstellungen am gleichen Ort beeintra.chtigen. Obwohl sie nicht benutzt wird, wird eine debian/rules-Basisdatei hinzugefu.gt.

Falls DEBSIGN_KEYID definiert ist, versucht Em_installtdeb Debsign zu benutzen, um die X.tdeb.changesX- und X.dscX-Dateien zu signieren. Dies ko.nnte wahlweise gemacht werden, falls spa.ter entschieden wird, dass das Hochladen von U.bersetzungen vollsta.ndige A.nderungsprotokolleintra.ge haben muss, um Fehler im Debian-BTS zu schlieβen. Ein Teil des Anreizes von TDebs besteht darin, dass Xi18nX-Fehler normalerweise nicht beim BTS eingereicht werden mu.ssen.