chiark / gitweb /
Update preferred contact method for the security team.
[developers-reference.git] / best-pkging-practices.dbk
index f7b5a7b19ea563d672b966fb13dd51f83fa766b1..30afaf2b47567d7bd891e3bdb63e81b90e73ca7c 100644 (file)
@@ -75,13 +75,6 @@ individual <command>dh_*</command> helpers.  If you are going to use a helper,
 you do need to take the time to learn to use that helper, to learn its
 expectations and behavior.
 </para>
-<para>
-Some people feel that vanilla <filename>debian/rules</filename> files are
-better, since you don't have to learn the intricacies of any helper system.
-This decision is completely up to you.  Use what works for you.  Many examples
-of vanilla <filename>debian/rules</filename> files are available at <ulink
-url="&url-rules-files;"></ulink>.
-</para>
 </section>
 
 <section id="multiple-patches">
@@ -830,128 +823,62 @@ If you don't do so, the whole template will not be translated as long as a
 translator will send you an update.
 </para>
 <para>
-To <emphasis>unfuzzy</emphasis> translations, you can use two methods. The first
-method does <emphasis>preventive</emphasis> search and replace actions in the
-PO files. The latter uses <command>gettext</command> utilities to <emphasis>unfuzzy</emphasis>
-strings.
-</para>
-<para>
-<emphasis>Preventive unfuzzy</emphasis> method:
+To <emphasis>unfuzzy</emphasis> translations, you can use
+<command>msguntypot</command> (part of the <systemitem
+role="package">po4a</systemitem> package).
 </para>
 <orderedlist numeration="arabic">
 <listitem>
 <para>
-Try finding a complete translation file <emphasis role="strong">before</emphasis>
-the change:
-</para>
-<programlisting>for i in debian/po/*po; do echo -n $i: ; msgfmt -o /dev/null --statistics $i; done</programlisting>
-<para>
-The file only showing <emphasis>translated</emphasis> items will be used
-as the reference file. If there is none (which should not happen if you take
-care to properly interact with translators), you should use the file
-with the most translated strings.
-</para>
-</listitem>
-<listitem>
-<para>
-Identify the needed change. In this example, let's assume the change is about
-fixing a typo in the word <literal>typo</literal> which was inadvertently
-written as <literal>tpyo</literal>. Therefore, the change is
-<command>s/tpyo/typo</command>.
-</para>
-</listitem>
-<listitem>
-<para>
-Check that this change is only applied to the place where you really intend
-to make it and <emphasis role="strong">not</emphasis> in any other place
-where the original string is appropriate. This specifically applies to
-change in punctuation, for instance.
-</para>
-</listitem>
-<listitem>
-<para>
-Modify all PO files by using <command>sed</command>. The use of that command
-is recommended over any text editor to guarantee that the files encoding will
-not be broken by the edit action:
-</para>
-<programlisting>
-cd debian/po
-for i in *.po; do sed -i 's/tpyo/typo/g' $i; done
-</programlisting>
-</listitem>
-<listitem>
-<para>
-Change the debconf template file to fix the typo.
-</para>
-</listitem>
-<listitem>
-<para>
-Run <command>debconf-updatepo</command>.
-</para>
-</listitem>
-<listitem>
-<para>
-Check the <filename>foo.po</filename> reference file. Its statistics should
-not be changed:
+Regenerate the POT and PO files.
 </para>
-<programlisting>
-msgfmt -o /dev/null --statistics debian/po/foo.po
-</programlisting>
+<programlisting>debconf-updatepo</programlisting>
 </listitem>
 <listitem>
 <para>
-If the file's statistics changed, you did something wrong. Try again
-or ask for help on the &email-debian-i18n; mailing list.
+Make a copy of the POT file.
 </para>
+<programlisting>cp templates.pot templates.pot.orig</programlisting>
 </listitem>
-</orderedlist>
-<para>
-Gettext utilities method:
-</para>
-<orderedlist numeration="arabic">
 <listitem>
 <para>
-Put all incomplete PO files out of the way.  You can check the completeness by
-using (needs the <systemitem role="package">gettext</systemitem> package
-installed):
+Make a copy of all the PO files.
 </para>
-<programlisting>for i in debian/po/*po; do echo -n $i: ; msgfmt -o /dev/null --statistics $i; done</programlisting>
+<programlisting>mkdir po_fridge; cp *.po po_fridge</programlisting>
 </listitem>
 <listitem>
 <para>
-Move all files which report either fuzzy strings to a temporary place.  Files
-which report no fuzzy strings (only translated and untranslated) will be kept
-in place.
+Change the debconf template files to fix the typos.
 </para>
 </listitem>
 <listitem>
 <para>
-Now <emphasis role="strong">and now only</emphasis>, modify the template for
-the typos and check again that translation are not impacted (typos, spelling
-errors, sometimes typographical corrections are usually OK).
+Regenerate the POT and PO files (again).
 </para>
-</listitem>
-<listitem>
+<programlisting>debconf-updatepo</programlisting>
 <para>
-Run <command>debconf-updatepo</command>.  This will fuzzy all strings you
-modified in translations.  You can see this by running the above again.
+At this point, the typo fix fuzzied all the translations, and this
+unfortunate change is the only one between the PO files of your main
+directory and the one from the fridge. Here is how to solve this.
 </para>
 </listitem>
 <listitem>
 <para>
-Use the following command:
+Discard fuzzy translation, restore the ones from the fridge.
 </para>
-<programlisting>for i in debian/po/*po; do msgattrib --output-file=$i --clear-fuzzy $i; done</programlisting>
+<programlisting>cp po_fridge/*.po .</programlisting>
 </listitem>
 <listitem>
 <para>
-Move back to <filename>debian/po</filename> the files which showed fuzzy strings in the first step.
+Manually merge the PO files with the new POT file, but taking the useless fuzzy into account.
 </para>
+<programlisting>msguntypot -o templates.pot.orig -n templates.pot *.po</programlisting>
 </listitem>
 <listitem>
 <para>
-Run <command>debconf-updatepo</command> again.
+Clean up.
 </para>
+<programlisting>rm -rf templates.pot.orig po_fridge</programlisting>
 </listitem>
 </orderedlist>
 </section>
@@ -1362,7 +1289,7 @@ type documented in <citerefentry> <refentrytitle>po-debconf</refentrytitle>
 <title>Internationalization</title>
 <para>
 This section contains global information for developers to make translators'
-life easier.  More information for translators and developers interrested
+life easier.  More information for translators and developers interested
 in internationalization are available in the <ulink
 url="&url-i18n-l10n;">Internationalisation and localisation in Debian</ulink>
 documentation.
@@ -1696,9 +1623,9 @@ incrementing the version number, so there can be no guarantee that a pristine
 tarball is identical to what upstream <emphasis>currently</emphasis>
 distributing at any point in time.  All that can be expected is that it is
 identical to something that upstream once <emphasis>did</emphasis> distribute.
-If a difference arises later (say, if upstream notices that he wasn't using
-maximal compression in his original distribution and then
-re-<command>gzip</command>s it), that's just too bad.  Since there is no good
+If a difference arises later (say, if upstream notice that they weren't using
+maximal compression in their original distribution and then
+re-<command>gzip</command> it), that's just too bad.  Since there is no good
 way to upload a new <filename>.orig.tar.{gz,bz2,xz}</filename> for the same version, there is not even any
 point in treating this situation as a bug.  </para> </footnote> This makes it
 possible to use checksums to easily verify that all changes between Debian's
@@ -1754,7 +1681,7 @@ that you must remove before uploading.
 </para>
 <para>
 In these cases the developer must construct a suitable <filename>.orig.tar.{gz,bz2,xz}</filename>
-file himself.  We refer to such a tarball as a repackaged upstream 
+file themselves.  We refer to such a tarball as a repackaged upstream
 source.  Note that a repackaged upstream source is different from a 
 Debian-native package.  A repackaged source still comes with Debian-specific
 changes in a separate <filename>.diff.gz</filename> or <filename>.debian.tar.{gz,bz2,xz}</filename>
@@ -1922,7 +1849,7 @@ of meta-packages (built by the source packages
 </para>
 <para>
 The long description of the meta-package must clearly document its purpose
-so that the user knows what he will lose if he removes the package. Being
+so that the user knows what they will lose if they remove the package. Being
 explicit about the consequences is recommended. This is particularly
 important for meta-packages which are installed during initial
 installation and that have not been explicitly installed by the user.