1*946379e7Schristos<HTML> 2*946379e7Schristos<HEAD> 3*946379e7Schristos<!-- This HTML file has been created by texi2html 1.52b 4*946379e7Schristos from gettext.texi on 27 November 2006 --> 5*946379e7Schristos 6*946379e7Schristos<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8"> 7*946379e7Schristos<TITLE>GNU gettext utilities - 6 Creating a New PO File</TITLE> 8*946379e7Schristos</HEAD> 9*946379e7Schristos<BODY> 10*946379e7SchristosGo to the <A HREF="gettext_1.html">first</A>, <A HREF="gettext_5.html">previous</A>, <A HREF="gettext_7.html">next</A>, <A HREF="gettext_25.html">last</A> section, <A HREF="gettext_toc.html">table of contents</A>. 11*946379e7Schristos<P><HR><P> 12*946379e7Schristos 13*946379e7Schristos 14*946379e7Schristos<H1><A NAME="SEC31" HREF="gettext_toc.html#TOC31">6 Creating a New PO File</A></H1> 15*946379e7Schristos<P> 16*946379e7Schristos<A NAME="IDX216"></A> 17*946379e7Schristos 18*946379e7Schristos</P> 19*946379e7Schristos<P> 20*946379e7SchristosWhen starting a new translation, the translator creates a file called 21*946379e7Schristos<TT>‘<VAR>LANG</VAR>.po’</TT>, as a copy of the <TT>‘<VAR>package</VAR>.pot’</TT> template 22*946379e7Schristosfile with modifications in the initial comments (at the beginning of the file) 23*946379e7Schristosand in the header entry (the first entry, near the beginning of the file). 24*946379e7Schristos 25*946379e7Schristos</P> 26*946379e7Schristos<P> 27*946379e7SchristosThe easiest way to do so is by use of the <SAMP>‘msginit’</SAMP> program. 28*946379e7SchristosFor example: 29*946379e7Schristos 30*946379e7Schristos</P> 31*946379e7Schristos 32*946379e7Schristos<PRE> 33*946379e7Schristos$ cd <VAR>PACKAGE</VAR>-<VAR>VERSION</VAR> 34*946379e7Schristos$ cd po 35*946379e7Schristos$ msginit 36*946379e7Schristos</PRE> 37*946379e7Schristos 38*946379e7Schristos<P> 39*946379e7SchristosThe alternative way is to do the copy and modifications by hand. 40*946379e7SchristosTo do so, the translator copies <TT>‘<VAR>package</VAR>.pot’</TT> to 41*946379e7Schristos<TT>‘<VAR>LANG</VAR>.po’</TT>. Then she modifies the initial comments and 42*946379e7Schristosthe header entry of this file. 43*946379e7Schristos 44*946379e7Schristos</P> 45*946379e7Schristos 46*946379e7Schristos 47*946379e7Schristos 48*946379e7Schristos<H2><A NAME="SEC32" HREF="gettext_toc.html#TOC32">6.1 Invoking the <CODE>msginit</CODE> Program</A></H2> 49*946379e7Schristos 50*946379e7Schristos<P> 51*946379e7Schristos<A NAME="IDX217"></A> 52*946379e7Schristos<A NAME="IDX218"></A> 53*946379e7Schristos 54*946379e7Schristos<PRE> 55*946379e7Schristosmsginit [<VAR>option</VAR>] 56*946379e7Schristos</PRE> 57*946379e7Schristos 58*946379e7Schristos<P> 59*946379e7Schristos<A NAME="IDX219"></A> 60*946379e7Schristos<A NAME="IDX220"></A> 61*946379e7SchristosThe <CODE>msginit</CODE> program creates a new PO file, initializing the meta 62*946379e7Schristosinformation with values from the user's environment. 63*946379e7Schristos 64*946379e7Schristos</P> 65*946379e7Schristos 66*946379e7Schristos 67*946379e7Schristos<H3><A NAME="SEC33" HREF="gettext_toc.html#TOC33">6.1.1 Input file location</A></H3> 68*946379e7Schristos 69*946379e7Schristos<DL COMPACT> 70*946379e7Schristos 71*946379e7Schristos<DT><SAMP>‘-i <VAR>inputfile</VAR>’</SAMP> 72*946379e7Schristos<DD> 73*946379e7Schristos<DT><SAMP>‘--input=<VAR>inputfile</VAR>’</SAMP> 74*946379e7Schristos<DD> 75*946379e7Schristos<A NAME="IDX221"></A> 76*946379e7Schristos<A NAME="IDX222"></A> 77*946379e7SchristosInput POT file. 78*946379e7Schristos 79*946379e7Schristos</DL> 80*946379e7Schristos 81*946379e7Schristos<P> 82*946379e7SchristosIf no <VAR>inputfile</VAR> is given, the current directory is searched for the 83*946379e7SchristosPOT file. If it is <SAMP>‘-’</SAMP>, standard input is read. 84*946379e7Schristos 85*946379e7Schristos</P> 86*946379e7Schristos 87*946379e7Schristos 88*946379e7Schristos<H3><A NAME="SEC34" HREF="gettext_toc.html#TOC34">6.1.2 Output file location</A></H3> 89*946379e7Schristos 90*946379e7Schristos<DL COMPACT> 91*946379e7Schristos 92*946379e7Schristos<DT><SAMP>‘-o <VAR>file</VAR>’</SAMP> 93*946379e7Schristos<DD> 94*946379e7Schristos<DT><SAMP>‘--output-file=<VAR>file</VAR>’</SAMP> 95*946379e7Schristos<DD> 96*946379e7Schristos<A NAME="IDX223"></A> 97*946379e7Schristos<A NAME="IDX224"></A> 98*946379e7SchristosWrite output to specified PO file. 99*946379e7Schristos 100*946379e7Schristos</DL> 101*946379e7Schristos 102*946379e7Schristos<P> 103*946379e7SchristosIf no output file is given, it depends on the <SAMP>‘--locale’</SAMP> option or the 104*946379e7Schristosuser's locale setting. If it is <SAMP>‘-’</SAMP>, the results are written to 105*946379e7Schristosstandard output. 106*946379e7Schristos 107*946379e7Schristos</P> 108*946379e7Schristos 109*946379e7Schristos 110*946379e7Schristos<H3><A NAME="SEC35" HREF="gettext_toc.html#TOC35">6.1.3 Input file syntax</A></H3> 111*946379e7Schristos 112*946379e7Schristos<DL COMPACT> 113*946379e7Schristos 114*946379e7Schristos<DT><SAMP>‘-P’</SAMP> 115*946379e7Schristos<DD> 116*946379e7Schristos<DT><SAMP>‘--properties-input’</SAMP> 117*946379e7Schristos<DD> 118*946379e7Schristos<A NAME="IDX225"></A> 119*946379e7Schristos<A NAME="IDX226"></A> 120*946379e7SchristosAssume the input file is a Java ResourceBundle in Java <CODE>.properties</CODE> 121*946379e7Schristossyntax, not in PO file syntax. 122*946379e7Schristos 123*946379e7Schristos<DT><SAMP>‘--stringtable-input’</SAMP> 124*946379e7Schristos<DD> 125*946379e7Schristos<A NAME="IDX227"></A> 126*946379e7SchristosAssume the input file is a NeXTstep/GNUstep localized resource file in 127*946379e7Schristos<CODE>.strings</CODE> syntax, not in PO file syntax. 128*946379e7Schristos 129*946379e7Schristos</DL> 130*946379e7Schristos 131*946379e7Schristos 132*946379e7Schristos 133*946379e7Schristos<H3><A NAME="SEC36" HREF="gettext_toc.html#TOC36">6.1.4 Output details</A></H3> 134*946379e7Schristos 135*946379e7Schristos<DL COMPACT> 136*946379e7Schristos 137*946379e7Schristos<DT><SAMP>‘-l <VAR>ll_CC</VAR>’</SAMP> 138*946379e7Schristos<DD> 139*946379e7Schristos<DT><SAMP>‘--locale=<VAR>ll_CC</VAR>’</SAMP> 140*946379e7Schristos<DD> 141*946379e7Schristos<A NAME="IDX228"></A> 142*946379e7Schristos<A NAME="IDX229"></A> 143*946379e7SchristosSet target locale. <VAR>ll</VAR> should be a language code, and <VAR>CC</VAR> should 144*946379e7Schristosbe a country code. The command <SAMP>‘locale -a’</SAMP> can be used to output a list 145*946379e7Schristosof all installed locales. The default is the user's locale setting. 146*946379e7Schristos 147*946379e7Schristos<DT><SAMP>‘--no-translator’</SAMP> 148*946379e7Schristos<DD> 149*946379e7Schristos<A NAME="IDX230"></A> 150*946379e7SchristosDeclares that the PO file will not have a human translator and is instead 151*946379e7Schristosautomatically generated. 152*946379e7Schristos 153*946379e7Schristos<DT><SAMP>‘-p’</SAMP> 154*946379e7Schristos<DD> 155*946379e7Schristos<DT><SAMP>‘--properties-output’</SAMP> 156*946379e7Schristos<DD> 157*946379e7Schristos<A NAME="IDX231"></A> 158*946379e7Schristos<A NAME="IDX232"></A> 159*946379e7SchristosWrite out a Java ResourceBundle in Java <CODE>.properties</CODE> syntax. Note 160*946379e7Schristosthat this file format doesn't support plural forms and silently drops 161*946379e7Schristosobsolete messages. 162*946379e7Schristos 163*946379e7Schristos<DT><SAMP>‘--stringtable-output’</SAMP> 164*946379e7Schristos<DD> 165*946379e7Schristos<A NAME="IDX233"></A> 166*946379e7SchristosWrite out a NeXTstep/GNUstep localized resource file in <CODE>.strings</CODE> syntax. 167*946379e7SchristosNote that this file format doesn't support plural forms. 168*946379e7Schristos 169*946379e7Schristos<DT><SAMP>‘-w <VAR>number</VAR>’</SAMP> 170*946379e7Schristos<DD> 171*946379e7Schristos<DT><SAMP>‘--width=<VAR>number</VAR>’</SAMP> 172*946379e7Schristos<DD> 173*946379e7Schristos<A NAME="IDX234"></A> 174*946379e7Schristos<A NAME="IDX235"></A> 175*946379e7SchristosSet the output page width. Long strings in the output files will be 176*946379e7Schristossplit across multiple lines in order to ensure that each line's width 177*946379e7Schristos(= number of screen columns) is less or equal to the given <VAR>number</VAR>. 178*946379e7Schristos 179*946379e7Schristos<DT><SAMP>‘--no-wrap’</SAMP> 180*946379e7Schristos<DD> 181*946379e7Schristos<A NAME="IDX236"></A> 182*946379e7SchristosDo not break long message lines. Message lines whose width exceeds the 183*946379e7Schristosoutput page width will not be split into several lines. Only file reference 184*946379e7Schristoslines which are wider than the output page width will be split. 185*946379e7Schristos 186*946379e7Schristos</DL> 187*946379e7Schristos 188*946379e7Schristos 189*946379e7Schristos 190*946379e7Schristos<H3><A NAME="SEC37" HREF="gettext_toc.html#TOC37">6.1.5 Informative output</A></H3> 191*946379e7Schristos 192*946379e7Schristos<DL COMPACT> 193*946379e7Schristos 194*946379e7Schristos<DT><SAMP>‘-h’</SAMP> 195*946379e7Schristos<DD> 196*946379e7Schristos<DT><SAMP>‘--help’</SAMP> 197*946379e7Schristos<DD> 198*946379e7Schristos<A NAME="IDX237"></A> 199*946379e7Schristos<A NAME="IDX238"></A> 200*946379e7SchristosDisplay this help and exit. 201*946379e7Schristos 202*946379e7Schristos<DT><SAMP>‘-V’</SAMP> 203*946379e7Schristos<DD> 204*946379e7Schristos<DT><SAMP>‘--version’</SAMP> 205*946379e7Schristos<DD> 206*946379e7Schristos<A NAME="IDX239"></A> 207*946379e7Schristos<A NAME="IDX240"></A> 208*946379e7SchristosOutput version information and exit. 209*946379e7Schristos 210*946379e7Schristos</DL> 211*946379e7Schristos 212*946379e7Schristos 213*946379e7Schristos 214*946379e7Schristos<H2><A NAME="SEC38" HREF="gettext_toc.html#TOC38">6.2 Filling in the Header Entry</A></H2> 215*946379e7Schristos<P> 216*946379e7Schristos<A NAME="IDX241"></A> 217*946379e7Schristos 218*946379e7Schristos</P> 219*946379e7Schristos<P> 220*946379e7SchristosThe initial comments "SOME DESCRIPTIVE TITLE", "YEAR" and 221*946379e7Schristos"FIRST AUTHOR <EMAIL@ADDRESS>, YEAR" ought to be replaced by sensible 222*946379e7Schristosinformation. This can be done in any text editor; if Emacs is used 223*946379e7Schristosand it switched to PO mode automatically (because it has recognized 224*946379e7Schristosthe file's suffix), you can disable it by typing <KBD>M-x fundamental-mode</KBD>. 225*946379e7Schristos 226*946379e7Schristos</P> 227*946379e7Schristos<P> 228*946379e7SchristosModifying the header entry can already be done using PO mode: in Emacs, 229*946379e7Schristostype <KBD>M-x po-mode RET</KBD> and then <KBD>RET</KBD> again to start editing the 230*946379e7Schristosentry. You should fill in the following fields. 231*946379e7Schristos 232*946379e7Schristos</P> 233*946379e7Schristos<DL COMPACT> 234*946379e7Schristos 235*946379e7Schristos<DT>Project-Id-Version 236*946379e7Schristos<DD> 237*946379e7SchristosThis is the name and version of the package. 238*946379e7Schristos 239*946379e7Schristos<DT>Report-Msgid-Bugs-To 240*946379e7Schristos<DD> 241*946379e7SchristosThis has already been filled in by <CODE>xgettext</CODE>. It contains an email 242*946379e7Schristosaddress or URL where you can report bugs in the untranslated strings: 243*946379e7Schristos 244*946379e7Schristos 245*946379e7Schristos<UL> 246*946379e7Schristos<LI>Strings which are not entire sentences, see the maintainer guidelines 247*946379e7Schristos 248*946379e7Schristosin section <A HREF="gettext_4.html#SEC14">4.3 Preparing Translatable Strings</A>. 249*946379e7Schristos<LI>Strings which use unclear terms or require additional context to be 250*946379e7Schristos 251*946379e7Schristosunderstood. 252*946379e7Schristos<LI>Strings which make invalid assumptions about notation of date, time or 253*946379e7Schristos 254*946379e7Schristosmoney. 255*946379e7Schristos<LI>Pluralisation problems. 256*946379e7Schristos 257*946379e7Schristos<LI>Incorrect English spelling. 258*946379e7Schristos 259*946379e7Schristos<LI>Incorrect formatting. 260*946379e7Schristos 261*946379e7Schristos</UL> 262*946379e7Schristos 263*946379e7Schristos<DT>POT-Creation-Date 264*946379e7Schristos<DD> 265*946379e7SchristosThis has already been filled in by <CODE>xgettext</CODE>. 266*946379e7Schristos 267*946379e7Schristos<DT>PO-Revision-Date 268*946379e7Schristos<DD> 269*946379e7SchristosYou don't need to fill this in. It will be filled by the PO file editor 270*946379e7Schristoswhen you save the file. 271*946379e7Schristos 272*946379e7Schristos<DT>Last-Translator 273*946379e7Schristos<DD> 274*946379e7SchristosFill in your name and email address (without double quotes). 275*946379e7Schristos 276*946379e7Schristos<DT>Language-Team 277*946379e7Schristos<DD> 278*946379e7SchristosFill in the English name of the language, and the email address or 279*946379e7Schristoshomepage URL of the language team you are part of. 280*946379e7Schristos 281*946379e7SchristosBefore starting a translation, it is a good idea to get in touch with 282*946379e7Schristosyour translation team, not only to make sure you don't do duplicated work, 283*946379e7Schristosbut also to coordinate difficult linguistic issues. 284*946379e7Schristos 285*946379e7Schristos<A NAME="IDX242"></A> 286*946379e7SchristosIn the Free Translation Project, each translation team has its own mailing 287*946379e7Schristoslist. The up-to-date list of teams can be found at the Free Translation 288*946379e7SchristosProject's homepage, <A HREF="http://www.iro.umontreal.ca/contrib/po/HTML/">http://www.iro.umontreal.ca/contrib/po/HTML/</A>, 289*946379e7Schristosin the "National teams" area. 290*946379e7Schristos 291*946379e7Schristos<DT>Content-Type 292*946379e7Schristos<DD> 293*946379e7Schristos<A NAME="IDX243"></A> 294*946379e7Schristos<A NAME="IDX244"></A> 295*946379e7SchristosReplace <SAMP>‘CHARSET’</SAMP> with the character encoding used for your language, 296*946379e7Schristosin your locale, or UTF-8. This field is needed for correct operation of the 297*946379e7Schristos<CODE>msgmerge</CODE> and <CODE>msgfmt</CODE> programs, as well as for users whose 298*946379e7Schristoslocale's character encoding differs from yours (see section <A HREF="gettext_11.html#SEC172">11.2.4 How to specify the output character set <CODE>gettext</CODE> uses</A>). 299*946379e7Schristos 300*946379e7Schristos<A NAME="IDX245"></A> 301*946379e7SchristosYou get the character encoding of your locale by running the shell command 302*946379e7Schristos<SAMP>‘locale charmap’</SAMP>. If the result is <SAMP>‘C’</SAMP> or <SAMP>‘ANSI_X3.4-1968’</SAMP>, 303*946379e7Schristoswhich is equivalent to <SAMP>‘ASCII’</SAMP> (= <SAMP>‘US-ASCII’</SAMP>), it means that your 304*946379e7Schristoslocale is not correctly configured. In this case, ask your translation 305*946379e7Schristosteam which charset to use. <SAMP>‘ASCII’</SAMP> is not usable for any language 306*946379e7Schristosexcept Latin. 307*946379e7Schristos 308*946379e7Schristos<A NAME="IDX246"></A> 309*946379e7SchristosBecause the PO files must be portable to operating systems with less advanced 310*946379e7Schristosinternationalization facilities, the character encodings that can be used 311*946379e7Schristosare limited to those supported by both GNU <CODE>libc</CODE> and GNU 312*946379e7Schristos<CODE>libiconv</CODE>. These are: 313*946379e7Schristos<CODE>ASCII</CODE>, <CODE>ISO-8859-1</CODE>, <CODE>ISO-8859-2</CODE>, <CODE>ISO-8859-3</CODE>, 314*946379e7Schristos<CODE>ISO-8859-4</CODE>, <CODE>ISO-8859-5</CODE>, <CODE>ISO-8859-6</CODE>, <CODE>ISO-8859-7</CODE>, 315*946379e7Schristos<CODE>ISO-8859-8</CODE>, <CODE>ISO-8859-9</CODE>, <CODE>ISO-8859-13</CODE>, <CODE>ISO-8859-14</CODE>, 316*946379e7Schristos<CODE>ISO-8859-15</CODE>, 317*946379e7Schristos<CODE>KOI8-R</CODE>, <CODE>KOI8-U</CODE>, <CODE>KOI8-T</CODE>, 318*946379e7Schristos<CODE>CP850</CODE>, <CODE>CP866</CODE>, <CODE>CP874</CODE>, 319*946379e7Schristos<CODE>CP932</CODE>, <CODE>CP949</CODE>, <CODE>CP950</CODE>, <CODE>CP1250</CODE>, <CODE>CP1251</CODE>, 320*946379e7Schristos<CODE>CP1252</CODE>, <CODE>CP1253</CODE>, <CODE>CP1254</CODE>, <CODE>CP1255</CODE>, <CODE>CP1256</CODE>, 321*946379e7Schristos<CODE>CP1257</CODE>, <CODE>GB2312</CODE>, <CODE>EUC-JP</CODE>, <CODE>EUC-KR</CODE>, <CODE>EUC-TW</CODE>, 322*946379e7Schristos<CODE>BIG5</CODE>, <CODE>BIG5-HKSCS</CODE>, <CODE>GBK</CODE>, <CODE>GB18030</CODE>, <CODE>SHIFT_JIS</CODE>, 323*946379e7Schristos<CODE>JOHAB</CODE>, <CODE>TIS-620</CODE>, <CODE>VISCII</CODE>, <CODE>GEORGIAN-PS</CODE>, <CODE>UTF-8</CODE>. 324*946379e7Schristos 325*946379e7Schristos<A NAME="IDX247"></A> 326*946379e7SchristosIn the GNU system, the following encodings are frequently used for the 327*946379e7Schristoscorresponding languages. 328*946379e7Schristos 329*946379e7Schristos<A NAME="IDX248"></A> 330*946379e7Schristos 331*946379e7Schristos<UL> 332*946379e7Schristos<LI><CODE>ISO-8859-1</CODE> for 333*946379e7Schristos 334*946379e7SchristosAfrikaans, Albanian, Basque, Breton, Catalan, Cornish, Danish, Dutch, 335*946379e7SchristosEnglish, Estonian, Faroese, Finnish, French, Galician, German, 336*946379e7SchristosGreenlandic, Icelandic, Indonesian, Irish, Italian, Malay, Manx, 337*946379e7SchristosNorwegian, Occitan, Portuguese, Spanish, Swedish, Tagalog, Uzbek, 338*946379e7SchristosWalloon, 339*946379e7Schristos<LI><CODE>ISO-8859-2</CODE> for 340*946379e7Schristos 341*946379e7SchristosBosnian, Croatian, Czech, Hungarian, Polish, Romanian, Serbian, Slovak, 342*946379e7SchristosSlovenian, 343*946379e7Schristos<LI><CODE>ISO-8859-3</CODE> for Maltese, 344*946379e7Schristos 345*946379e7Schristos<LI><CODE>ISO-8859-5</CODE> for Macedonian, Serbian, 346*946379e7Schristos 347*946379e7Schristos<LI><CODE>ISO-8859-6</CODE> for Arabic, 348*946379e7Schristos 349*946379e7Schristos<LI><CODE>ISO-8859-7</CODE> for Greek, 350*946379e7Schristos 351*946379e7Schristos<LI><CODE>ISO-8859-8</CODE> for Hebrew, 352*946379e7Schristos 353*946379e7Schristos<LI><CODE>ISO-8859-9</CODE> for Turkish, 354*946379e7Schristos 355*946379e7Schristos<LI><CODE>ISO-8859-13</CODE> for Latvian, Lithuanian, Maori, 356*946379e7Schristos 357*946379e7Schristos<LI><CODE>ISO-8859-14</CODE> for Welsh, 358*946379e7Schristos 359*946379e7Schristos<LI><CODE>ISO-8859-15</CODE> for 360*946379e7Schristos 361*946379e7SchristosBasque, Catalan, Dutch, English, Finnish, French, Galician, German, Irish, 362*946379e7SchristosItalian, Portuguese, Spanish, Swedish, Walloon, 363*946379e7Schristos<LI><CODE>KOI8-R</CODE> for Russian, 364*946379e7Schristos 365*946379e7Schristos<LI><CODE>KOI8-U</CODE> for Ukrainian, 366*946379e7Schristos 367*946379e7Schristos<LI><CODE>KOI8-T</CODE> for Tajik, 368*946379e7Schristos 369*946379e7Schristos<LI><CODE>CP1251</CODE> for Bulgarian, Byelorussian, 370*946379e7Schristos 371*946379e7Schristos<LI><CODE>GB2312</CODE>, <CODE>GBK</CODE>, <CODE>GB18030</CODE> 372*946379e7Schristos 373*946379e7Schristosfor simplified writing of Chinese, 374*946379e7Schristos<LI><CODE>BIG5</CODE>, <CODE>BIG5-HKSCS</CODE> 375*946379e7Schristos 376*946379e7Schristosfor traditional writing of Chinese, 377*946379e7Schristos<LI><CODE>EUC-JP</CODE> for Japanese, 378*946379e7Schristos 379*946379e7Schristos<LI><CODE>EUC-KR</CODE> for Korean, 380*946379e7Schristos 381*946379e7Schristos<LI><CODE>TIS-620</CODE> for Thai, 382*946379e7Schristos 383*946379e7Schristos<LI><CODE>GEORGIAN-PS</CODE> for Georgian, 384*946379e7Schristos 385*946379e7Schristos<LI><CODE>UTF-8</CODE> for any language, including those listed above. 386*946379e7Schristos 387*946379e7Schristos</UL> 388*946379e7Schristos 389*946379e7Schristos<A NAME="IDX249"></A> 390*946379e7Schristos<A NAME="IDX250"></A> 391*946379e7SchristosWhen single quote characters or double quote characters are used in 392*946379e7Schristostranslations for your language, and your locale's encoding is one of the 393*946379e7SchristosISO-8859-* charsets, it is best if you create your PO files in UTF-8 394*946379e7Schristosencoding, instead of your locale's encoding. This is because in UTF-8 395*946379e7Schristosthe real quote characters can be represented (single quote characters: 396*946379e7SchristosU+2018, U+2019, double quote characters: U+201C, U+201D), whereas none of 397*946379e7SchristosISO-8859-* charsets has them all. Users in UTF-8 locales will see the 398*946379e7Schristosreal quote characters, whereas users in ISO-8859-* locales will see the 399*946379e7Schristosvertical apostrophe and the vertical double quote instead (because that's 400*946379e7Schristoswhat the character set conversion will transliterate them to). 401*946379e7Schristos 402*946379e7Schristos<A NAME="IDX251"></A> 403*946379e7SchristosTo enter such quote characters under X11, you can change your keyboard 404*946379e7Schristosmapping using the <CODE>xmodmap</CODE> program. The X11 names of the quote 405*946379e7Schristoscharacters are "leftsinglequotemark", "rightsinglequotemark", 406*946379e7Schristos"leftdoublequotemark", "rightdoublequotemark", "singlelowquotemark", 407*946379e7Schristos"doublelowquotemark". 408*946379e7Schristos 409*946379e7SchristosNote that only recent versions of GNU Emacs support the UTF-8 encoding: 410*946379e7SchristosEmacs 20 with Mule-UCS, and Emacs 21. As of January 2001, XEmacs doesn't 411*946379e7Schristossupport the UTF-8 encoding. 412*946379e7Schristos 413*946379e7SchristosThe character encoding name can be written in either upper or lower case. 414*946379e7SchristosUsually upper case is preferred. 415*946379e7Schristos 416*946379e7Schristos<DT>Content-Transfer-Encoding 417*946379e7Schristos<DD> 418*946379e7SchristosSet this to <CODE>8bit</CODE>. 419*946379e7Schristos 420*946379e7Schristos<DT>Plural-Forms 421*946379e7Schristos<DD> 422*946379e7SchristosThis field is optional. It is only needed if the PO file has plural forms. 423*946379e7SchristosYou can find them by searching for the <SAMP>‘msgid_plural’</SAMP> keyword. The 424*946379e7Schristosformat of the plural forms field is described in section <A HREF="gettext_11.html#SEC174">11.2.6 Additional functions for plural forms</A>. 425*946379e7Schristos</DL> 426*946379e7Schristos 427*946379e7Schristos<P><HR><P> 428*946379e7SchristosGo to the <A HREF="gettext_1.html">first</A>, <A HREF="gettext_5.html">previous</A>, <A HREF="gettext_7.html">next</A>, <A HREF="gettext_25.html">last</A> section, <A HREF="gettext_toc.html">table of contents</A>. 429*946379e7Schristos</BODY> 430*946379e7Schristos</HTML> 431