{"thread":{"id":"9128","subject":"Re: [PATCH] Internationalization of git-gui","startedAt":"2007-07-21T16:29:56Z","lastAt":"2007-07-21T16:29:56Z","messageCount":1,"participants":["Brett Schwarz"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"48044","messageId":"479784.46282.qm@web38908.mail.mud.yahoo.com","threadId":"9128","inReplyTo":null,"subject":"Re: [PATCH] Internationalization of git-gui","fromName":"Brett Schwarz","fromEmail":"brett_schwarz@yahoo.com","sentAt":"2007-07-21T16:29:56Z","receivedAt":"2007-07-21T16:29:56Z","isPatch":true,"sender":{"key":"brett_schwarz@yahoo.com","avatar":null},"body":"\n> ----- Original Message ----\n> From: Christian Stimming <stimming@tuhh.de>\n> To: Brett Schwarz <brett_schwarz@yahoo.com>\n> Cc: Paolo Ciarrocchi <paolo.ciarrocchi@gmail.com>; Shawn O. Pearce <spearce@spearce.org>; Johannes Schindelin <Johannes.Schindelin@gmx.de>; git@vger.kernel.org\n> Sent: Friday, July 20, 2007 2:40:27 PM\n> Subject: Re: [PATCH] Internationalization of git-gui\n> \n> Am Freitag, 20. Juli 2007 20:34 schrieb Brett Schwarz:\n> > After the glossary of terms has been create, it is easy to create the\n> > catalog file (assuming we use Tcl's standard mechanism). Each locale should\n> > have it's own file, named <locale_name>.msg (for example, es.msg for\n> > spanish). Inside that file, you just create entries for each glossary term\n> > (the below assumes that the msgcat namespace was imported):\n> >\n> >   mcset es Hello Hola\n> >   mcset es \"Hello %s\" \"Hola %s\"\n> \n> I beg your pardon, but I think you grossly misunderstood what I meant\n> by \"glossary\". So before we end up in further confusion, let me clarify how\n> the general translation approach works. I'll use gettext wording because\n> that's what I know (from being the i18n guy in the gnucash project), but you\n> can easily insert any other wording you like here.\n> \n\nOk, perhaps I did misunderstand you. From below, now I do understand...thanks.\n\n \n> #1 For the translation in general, there is the set of all user-visible\n> strings in the source language (here: english). In gettext terms this is\n> called the \"PO template file\", git-gui.pot, also called the message template\n> file. This set of to-be-translated strings needs to be extracted from the\n> source code, which can be done by the xgettext program.\n> \n> #2 For each target language, there is a human-readable mapping file that maps\n> each source string (english) into the target language. In gettext terms this\n> is the \"PO file\", de.po and it.po and ja.po and whatnot, also called the\n> translation file. This is the *only* file translators actually work with.\n> Gettext uses its PO file format here and a plethora of different tools exist\n> to help translators editing these files. (Examples: emacs po-mode,\n> KBabel, ...)\n> \n> #3 For each target language, the translation files are converted to a\n> (potentially not human-readable) \"compiled\" mapping file, which is then read\n> at program runtime and used for the actual translation. For the gettext po\n> file format, the msgfmt program can convert this to Tcl's .msg files.\n> \n> If I understand correctly, your above suggestion implies that for Tcl msgcat,\n> the file in #2 and #3 are one and the same? In my opinion this might make\n> sense if and only if that file format is supported by at least as many\n> translation tools and offers as flexible translation updates as gettext's po\n> file format does. From my experience the po file format indeed offers a bunch\n> of features that other translation file formats are missing but which are of\n> significant help to the translator. That's why I would strongly suggest to do\n> the actual translation inside a po file, and have it converted to the msg\n> file afterwards.\n> \n\nYes, for the msgcat files, you create just the mapping files...that's it. No intermediate steps. So, a workflow would look something like this:\n\n1) Somebody creates the initial \"template\" file. This is usually in the source's language (i.e. english). This too is just a msgcat file. Note that this file is not strictly necessary, but helps other translators.\n\n2) A translator copies the template file, to their target language file, and edits the text:\n    # cp en.msg es.msg\n    # vi es.msg\n    this\n        mcset en Hello Hello\n    get's changed to this\n        mcset es Hello Hola\n    etc\n\nThat's it. There is no compilation needed, and no need for a makefile entry.\n\nNow, even though I think this approach is alot more simplier and straight forward, I do recognize that alot of people are probably accustomed to the po format, and since the actual generation of the msgcat files are only done by the maintainer, I don't really have anything against using the po format.\n\nI know it's already been decided to use the po format, but I just wanted to make sure to follow up on this email.\n\nThanks,\n    --brett\n\n\n\n\n       \n____________________________________________________________________________________\nBoardwalk for $500? In 2007? Ha! Play Monopoly Here and Now (it's updated for today's economy) at Yahoo! Games.\nhttp://get.games.yahoo.com/proddesc?gamekey=monopolyherenow  \n"}]}