translators howto

Christian Stimming stimming at tuhh.de
Wed Jun 11 11:20:31 CDT 2003


Sure. Sorry I forgot to do that. Unfortunately I won't have time to 
handle that until maybe next week, but then I'll take care about that.

Christian

Jon Lapham schrieb:
> Christian-
> 
> Would you put this into CVS for me?
> 
> I have not received any feedback on where to put it and/or what to call 
> it, so please feel free to do with it as you want.
> 
> -Jon
> 
> 
> ------------------------------------------------------------------------
> 
> HOWTO: Translating GnuCash
> Last update: 20030611
> 
> The concept of this document is to give you step-by-step instructions on 
> how to update (or create if non-existant) language translations for the 
> gnucash project.  
> 
> Any additions or corrections to this file should be sent to either Jon 
> Lapham <lapham at extracta.com.br>, Christain Stimming <stimming at tuhh.de>, 
> or directly to the gnucash-devel mailing list.
> 
> Sections:
> 1) Mailing lists, IRC and web sites
> 2) Get the source from CVS
> 3) Contact the maintainer of your language
> 4) Compile & Install
> 5) Running GnuCash
> 6) The glossary file
> 7) Initial processing of the translation file
> 8) Translating the .po file
> 9) Testing and submitting your translations
> 10) Problems
> 11) How to translate the GnuCash manual
> 12) How to translate the files containing the new account hierarchies
> 
> ==============================================================================
> 1) Mailing lists, IRC and web sites
> 
> Translators will probably find 3 gnucash mailing lists of interest.  General
> use questions and answers are found on the gnucash-users mailing list, 
> specific development questions go to the gnucash-devel list and your finished
> translation file are sent to the gnucash-patches list.
> 
> To subscribe or view archives of these lists, go the the gnucash web site, 
> and follow the links to the mailing lists:
> http://www.gnucash.org/en/lists.phtml
> 
> Another excellent place to get help is on IRC, as many of the developers hang
> out there and are eager to help.  Go to the #gnucash channel at 
> "irc.gnome.org".  If you don't know what that mean, fire up an IRC client 
> (for example, xchat), connect to irc.gnome.org and then type "/join 
> #gnucash".
> 
> The main gnucash web site is loaded with information:
> http://www.gnucash.org/
> 
> The GNU Translation Project is another way to submit translations:
> http://www.iro.umontreal.ca/contrib/po/HTML/
> 
> ==============================================================================
> 2) Get the source from CVS
> 
> The first thing to do is to download the latest STABLE branch of gnucash
> from CVS and get it to compile.  Do not use the HEAD branch, since the text
> in the HEAD branch changes so much, it would be a waste of time to translate 
> it.  Do not worry, when the HEAD branch becomes stable, the existing 
> translations in the STABLE branch will be merged.  Your work will not be lost.
> 
> Login (password is "guest") to the CVS server (this only needs to be done once 
> as your login name and password are saved in your homedir):
> cvs -d :pserver:cvs at cvs.gnucash.org:/home/cvs/cvsroot login
> 
> Checkout the current stable branch.
> cvs -z3 -d :pserver:cvs at cvs.gnucash.org:/home/cvs/cvsroot checkout \
>         -rgnucash-1-8-branch gnucash
> 
> Checkout the documentation
> cvs -z3 -d :pserver:cvs at cvs.gnucash.org:/home/cvs/cvsroot checkout \
> 	gnucash-docs
> 
> After this initial CVS checkout, you can update your CVS files using:
> cvs -d :pserver:cvs at cvs.gnucash.org:/home/cvs/cvsroot update gnucash
> 
> ==============================================================================
> 3) Contact the maintainer of your language
> 
> To find out who is the last person to work on your language, look near the 
> top of the po/XXXX.po file which corresponds to your language.   If your 
> language does not have a .po file available, you can build one my issuing 
> this command:
> 
> FIXME: command to build a new .po file
> 
> The beginning of your .po file should look something similar to this:
> 
> # Localization for Portuguese-Brazil
> # Copyright (C) 2003 Free Software Foundation, Inc.
> # Jon Lapham <lapham at extracta.com.br>, 2003
> # Jose Carlos Nascimento - <joseca at psabs.com>, 2001.
> # 
> msgid ""
> msgstr ""
> "Project-Id-Version: GnuCash 1.8.3\n"
> "POT-Creation-Date: 2003-05-16 16:42-0300\n"
> "PO-Revision-Date: 2003-06-02 12:00-0300\n"
> "Last-Translator: Jon Lapham <lapham at extracta.com.br>\n"
> "Language-Team: NONE \n"
> "MIME-Version: 1.0\n"
> "Content-Type: text/plain; charset=ISO-8859-1\n"
> "Content-Transfer-Encoding: 8bit\n"
> "Plural-Forms: nplurals=2; plural=n != 1;\n"
> 
> Look to see who the "Last-translator" was, and send an email to that person 
> and ask what you can do to help.  This is important because if there already 
> is an active maintainer of the translation file, you should interact directly
> with him or her.  If there is not Last-translator, or that person is not 
> maintaining the file actively (and tells you to take over), you will become 
> the maintainer and you should change the "Last-translator" to your name and 
> email address.
> 
> ==============================================================================
> 4) Compile & Install
> 
> Before starting to work on your translations, it is suggested that you 
> compile the gnucash source code.  This way you can get your system set up 
> correctly with all the development packages you need.  It is a good idea
> to actually run gnucash with your new translations because it is quite 
> helpful to see the phrases in the context of the running program.
> 
> Enter the gnucash directory and run the autogen.sh script.  There are many 
> options available when compiling gnucash, see the README.cvs file for more
> information on the options.  For now, we will just enable debugging and 
> change the default prefix because these two changes will be handly later 
> for tracking down problems and installing multiple versions.
> 
> cd gnucash
> ./autogen.sh --enable-debug --prefix=/opt/gnucash-1.8
> 
> If autogen complains about missing development packages, find them on your
> favorite OS distribution, install it, and try to re-run the autogen command.
> Eventually, you should be able to get autogen to run without any error 
> messages.
> 
> Note: there are some warnings that spew forth during autogen.  Do not worry
> about them, apparently they are normal.
> 
> Next, compile gnucash:
> 
> make
> 
> Note: when you are configuring and building gnucash, do *not* run the 
> configure script, aclocal, autoconf, or any other programs.  EVEN IF THE 
> AUTOGEN OUTPUT SUGGESTS THAT THEY DO.  This is important, and has caused a 
> lot of confusion.  Unfortunately the auto tools complain and cause bogus 
> warnings.
> 
> To install (assuming "make" completed without any problems) you must be 
> root.  
> 
> su - 
> make install
> 
> To compile the documentation, enter the gnucash-doc directory and go 
> through the same process:
> 
> ./autogen.sh --prefix=/opt/gnucash-1.8
> make
> su -
> make install
> 
> ==============================================================================
> 5) Running GnuCash
> 
> After installation, insure that it works by running (as a normal user,
> no need to be root here):
> 
> /opt/gnucash-1.8/bin/gnucash
> 
> It is a good idea to use absolute paths like this to insure you run 
> the proper gnucash executable.  To run your OS pre-installed version of
> gnucash, usually you can type:
> 
> /usr/bin/gnucash
> 
> In either case, you can easily switch between the various languages the 
> gnucash has available by placing the LANG env var before the call to the
> executable:
> 
> LANG=pt_BR /opt/gnucash-1.8/bin/gnucash
> 
> ==============================================================================
> 6) The glossary file
> 
> Inside the po/glossary/ directory should be a "glossary" file for your 
> language.  This file contains a bunch of commonly used terms found in gnucash.
> It is recommended that you get this file translated first, and use it as a 
> guide when translating the real .po file.  
> 
> Go into the glossary directory and rebuild your language's glossary file:
> 
> cd po/glossary/
> ./txt-to-pot.sh gnc-glossary.txt > gnc-glossary.pot
> 
> If your .po glossary file does not exist, use this gnc-glossary.pot file to
> create it:
> 
> cp gnc-glossary.pot XXXX.po
> 
> If your .po glossary file does exist, use the msgmerge program to update it:
> 
> /usr/bin/msgmerge -o XXXX.po XXXX.po gnc-glossary.pot
> 
> Now, open your language's glossary file and translate it completely.
> 
> ==============================================================================
> 7) Initial processing of the translation file
> 
> Before you begin actualy translation work, you should update the gnucash.pot 
> file and use this to update your .po file.  This process will insure that 
> you have the latest translatable strings.
> 
> cd po/
> rm gnucash.pot
> make gnucash.pot
> 
> If your language file does not exist, use the gnucash.pot file as a template
> for it:
> 
> cp gnucash.pot XXXX.po
> 
> If your laguage file does exist, update it using the msgmerge program:
> 
> /usr/bin/msgmerge -o XXXX.po XXXX.po gnucash.pot
> 
> The top of the .po file should be editted somewhat.  The comments at the 
> top of the file should be changed to be current:
> 
> # Messages in Deutsch für GnuCash
> # Copyright (C) 1999 Free Software Foundation, Inc.
> # Jan-Uwe Finck <Jan-Uwe.Finck at bigfoot.de>, 1999.
> 
> Make sure that the header of your .po file contains this line:
> "Plural-Forms: nplurals=2; plural=n != 1;\n"
> 
> ...and that you change the "Last-translator" string to your name.
> 
> ==============================================================================
> 8) Translating the .po file
> 
> Finally.  You are ready to do some translating!
> 
> Here is an example of translating some text into German:
> 
> Before:
> #: messages-i18n.c:11
> msgid ""
> "The GnuCash personal finance manager.\n"
> "The GNU way to manage your money!"
> msgstr ""
> 
> After, the tranlation in the de.po file:
> 
> #: messages-i18n.c:11
> msgid ""
> "The GnuCash personal finance manager.\n"
> "The GNU way to manage your money!"
> msgstr ""
> "GnuCash: Ihr persönlicher Finanzmanager.\n"
> "Der GNU-Weg, ihr Geld zu verwalten !"
> 
> You should read through every translation in the .po file at least once.  
> If you translate a string that has the phrase "#, fuzzy" in the comments
> above it, remove the word fuzzy.   A fuzzy translation means that the 
> computer guessed what the translation should be.
> 
> After you finish translating, you should not have any "#, fuzzy" strings left.
> 
> For example:
> 
> #: messages-i18n.c:35
> #, fuzzy, c-format
> msgid ""
> "There was an error writing the file\n"
> "     %s\n"
> "\n"
> "%s"
> msgstr ""
> "Es gab einen Fehler beim Öffnen der Datei. \n"
> "     %s."
> 
> You need to correct the translated string and remove the 'fuzzy' keyword.
> For example:
> 
> #: messages-i18n.c:35
> #, c-format
> msgid ""
> "There was an error writing the file\n"
> "     %s\n"
> "\n"
> "%s"
> msgstr ""
> "Es gab einen Fehler beim Öffnen der Datei. \n"
> "     %s."
> 
> Notice that the comment "c-format" was not removed.  That is correct, you 
> should leave that.
> 
> When you see the comment "c-format", it means that the format codes in the 
> tranlatable string are referring to C formatting codes.  So, '%s' means text, 
> '%d' means an integer, etc...
> 
> ==============================================================================
> 9) Testing and submitting your translations
> 
> You must check that your new translations are programatically correct (ie: 
> that there are no unclosed quotes, etc).  To do this, use the msgfmt program
> 
> /usr/bin/msgfmt -c --statistics XXXX.po
> 
> This will report any errors in your .po file if it finds them.
> 
> If you want to see your translations within a running version of gnucash,
> simply place your .po file in you CVS copy of the gnucash source code (which
> you have previously installed) and from within the po/ directory type (you
> may nee to be root to do this):
> 
> make install
> 
> Now you can run gnucash with your ned translations:
> 
> LANG=XXXX /opt/gnucash-1.8/bin/gnucash
> 
> When you are happy with the new translation file, email a gzipped version
> of it to the gnucash-patches mailing list.
> 
> gzip XXXX.po
> (email this file using your favorite mail client)
> 
> ==============================================================================
> 10) Problems
> 
> When you see this error message during autogen.sh run:
> 
> configure.in:1219: error: `intl/Makefile' is already registered with
> AC_CONFIG_FILES.
> autoconf/status.m4:844: AC_CONFIG_FILES is expanded from...
> configure.in:1219: the top level
> autom4te: /usr/bin/m4 failed with exit status: 1
> autoheader: /usr/bin/autom4te failed with exit status: 1
> **Error**: autoheader failed.
> 
> Reload the configure.in script:
> cvs up -C configure.in
> 
> ---------------------------------
> If you see any "Gtk-CRITICAL" messages while running gnucash, it is probably
> because you translated a string differently than how it exists in some other
> gnome library.  You must discover which string you tranlated differently, and
> change the translation to exactly match that of the gnome libraries.
> 
> To do this, you need to run gnucash under gdb:
> 
> LANG=XXXX /opt/gnucash-1.8/bin/gnucash-env gdb /usr/bin/guile
> 
> Then, from within gdb, issue:
> run -e main -s /opt/gnucash-1.8/libexec/gnucash/overrides/gnucash --g-fatal-warnings
> 
> Eventually, gnucash should crash (becuase of the --g-fatal-warnings 
> directive), when it does, issue from within gdb:
> 
> backtrace
> 
> You should see some output that looks like this:
> 
> #0  0xffffe002 in ?? ()
> #1  0x42028a73 in abort () from /lib/tls/libc.so.6
> #2  0x4019d3d8 in g_logv () from /usr/lib/libglib-1.2.so.0
> #3  0x4019d414 in g_log () from /usr/lib/libglib-1.2.so.0
> #4  0x40500fdd in gtk_type_check_object_cast () from 
> /usr/lib/libgtk-1.2.so.0
> #5  0x407292e5 in gnc_mdi_tweak_menus (mc=0x825adb0) at gnc-mdi-utils.c:574
> #6  0x40729d13 in gnc_mdi_child_changed_cb (mdi=0x8266fd8, prev_child=0x0,
>      data=0x8265fd8) at gnc-mdi-utils.c:861
> 
> Notice position #5 which has "gnc_mdi_tweak_menus at 
> gnc-mdi-utils.c:574"?  Open that source file and find line 574:
> 
> 573:  widget = gnc_mdi_child_find_menu_item(mc, "_View/_Toolbar");
> 574:  gtk_signal_handler_block_by_data(GTK_OBJECT(widget), info);
> 
> So, the problem is with the translation of "_View/_Toolbar".  The "/" is a 
> menu seperator, so you now know that the problem is with either the 
> translation of "_View" or "_Toolbar".  By switching to an English gnucash
> and looking through your .po file, you should be able to find the problem.
> Change the offending translation to whatever you see in the gnucash app.
> Remember that the translations must contain the proper underscores.
> 
> ------------
> To follow gnucash as it access files, 
> strace /opt/gnucash-1.8/bin/gnucash
> 
> ==============================================================================
> 11) How to translate the GnuCash manual
> 
> This section describes the actions needed to translate the manual.
> 
> 1) Create a new directory doc/sgml/<locale> (where <locale> is
>    something like es, en_GB, or pt_PT).
> 2) Copy the files from doc/sgml/C into this directory.
> 3) Recreate the image files in doc/sgml/C/gnucash so that they are
>    appropriate to the locale.
> 4) Edit all the sgml files and translate for the locale.
> 
> ==============================================================================
> 12) How to translate the files containing the new account hierarchies
> 
> This section describes the actions needed to translate the files
> containing the new account hierarchies.
> 
> 1) Create a new directory accounts/<locale>.
> 2) Copy the acctchrt_* files from accounts/C to accounts/<locale>
> 3) Do not change any xml tags.
> For each file:
> 4) Change the gnc-act:title, gnc-act:short-description, and
>    gnc-act:long-description to contain appropriately translated text.
>    Do not add any newlines in the long description except at the end
>    and begining of the string.
> 5) For each gnc:account in the file translate the act:name, and
>    act:description fields.  Please do not translate any other fields.
> 
> Note: You absolutely don't need to translate all of the files from
> accounts/C.  A subset of those are fine as well. Probably several of
> them will not apply to your local legislative/economic system anyway.
> For a really customized account hierarchy you might better create a
> new account hierarchy file in GnuCash, and then, by hand-editing the
> xml code, split it up into several files and cut&paste the appropriate
> tags from the accounts/C/acctchrt_* files.
> 
> ----------------------------------------------------------------------
> 
> Thanks so very much to all the translators for their hard effort and
> excellent work.




More information about the gnucash-patches mailing list