1This is a port of GNU Gettext @VER@ to MSDOS/DJGPP. 2 3 4 TO USE THE GNU GETTEXT LIBRARY YOU **MUST** MODIFY YOUR C-LIBRARY. 5 PLEASE, READ SECTION #2 (Installing the binary package) CAREFULLY 6 TO LEARN HOW TO INSTALL THE GNU GETTEXT LIBRARY AND HOW TO CHANGE 7 YOUR C-LIBRARY AND SYSTEM HEADER FILE. 8 TO USE THE GNU GETTEXT LIBRARY YOU **MUST** DOWNLOAD AND INSTALL 9 LICV17B.ZIP TOO. THIS IS **NOT** OPTIONAL. 10 IT IS NOT RECOMMED TO DOWNLOAD THE GNU DISTRIBUTION OF GETTEXT 11 BECAUSE ONLY THE DJGPP PORT WILL CONTAIN THE REQUIRED HEADER AND 12 OBJECT FILE TO PATCH THE C LIBRARY. 13 14 151.: DJGPP specific changes. 16 ======================= 17 18 The DJGPP specific changes are the followings: 19 1) The conflict existing between the BORLAND-compatibility gettext function 20 from DJGPP's libc.a defined in conio.h and the GNU gettext function from 21 libintl.a defined in libintl.h has been removed. But this conflict can not 22 be removed **WITHOUT** changing a system header file and libc.a. 23 1.1) libc.a and system header changes. 24 In conio.c, the BORLAND-compatibility gettext function has been renamed 25 into _conio_gettext. In conio.h some code has been added to check if 26 libintl.h is included or not by the same source file. If libintl.h is NOT 27 included, the BORLAND-compatibility gettext function will be available as 28 gettext. If libintl.h has been included then the BORLAND-compatibility 29 gettext function will **ONLY** be available as _conio_gettext. 30 The BORLAND-compatibility gettext function is now available as gettext 31 and _conio_gettext. 32 1.2) GNU gettext library changes. 33 If both headers, libintl.h and conio.h, are included in the same source 34 file the gettext keyword makes **ALWAYS** reference to the GNU gettext 35 function and **NEVER** to the BORLAND-compatibility gettext function. 36 37 2) The binary package gtxt@packageversion@b.zip contains all needed files to get NLS 38 support for the following DJGPP ports: 39 bison-1.32 (bsn132s.zip) 40 enscript-1.6.2 (ens162s.zip) 41 fileutils-4.0 (fil40s.zip) 42 grep-2.4 (grep24s.zip) 43 id-utils-3.2 (idu32s.zip) 44 make-3.79.1 (mak3791s.zip) 45 recode-3.6 (rcode36s.zip) 46 sed-3.02.80 (sed3028s.zip) 47 sharutils-4.2c (shar42cs.zip) 48 sh-utils-2.0j (shl20js.zip) 49 tar-1.12a (tar112as.zip) 50 texinfo-4.0 (txi40s.zip) 51 textutils-2.0 (txt20s.zip) 52 53 See section #4 for further information about this issue. 54 To implement NLS support for one of those packages you will also need 55 to download the following packages: 56 gtxt@packageversion@b.zip (binaries of GNU Gettext @VER@) 57 licv17b.zip (binaries of GNU libiconv 1.7) 58 fil40b.zip (binaries of GNU Fileutils 4.0) 59 shl20jb.zip (binaries of GNU Sh-utils 2.0j) 60 61 622.: Installing the binary package. 63 ============================== 64 652.1.: To use this binary package you **MUST** install licv17b.zip or later 66 first. licv17b.zip provides the required functionality to recode the 67 .mo files at run time from the unix charsets used to create them to the 68 dos codepages used to display them. Copy the binary distribution into 69 the top DJGPP installation directory. If you are installing Gettext on 70 a dual DOS/WINDOWS 9X systems, you *MUST* first turn off the generation 71 of numeric tails for 8.3 aliases Windows creats for long file names. 72 For information about how to do this, please read the DJGPP FAQ List 73 V 2.30, chapter 22.19: "How to Set Up a Dual DOS/Windows Installation". 74 It should be noticed that neither the libintl.a library nor the 75 binaries (xgettext.exe, gettext.exe, etc.) contain any code to handle 76 nuneric tails of short file names. This implies that if you install 77 the binary packages in a DOS box of Win9X (LFN) **WITHOUT** turning 78 off the numeric tail generation you will **NOT** be able to use NLS 79 on plain DOS. Once again: if you want NLS support on both Win9X **AND** 80 on plain DOS you **MUST** turn off the numeric tail generation **BEFORE** 81 installing the binary package. After having installed the package 82 you can turn on numerical tail generation again if you wish. 83 All this also applies to any other package that has been compiled with 84 NLS support. You **MUST** turn off numeric tail generation every time 85 you install a package that has been compiled with NLS or the binaries 86 will **NOT** be able to find their .mo files (translations) when you 87 switch to plain DOS. 88 892.2.: Copy the binary distribution into the top DJGPP installation directory, 90 just unzip it preserving the directory structure running *ONE* of the 91 following commands: 92 unzip32 gtxt@packageversion@b.zip or 93 djtarx gtxt@packageversion@b.zip or 94 pkunzip -d gtxt@packageversion@b.zip 95 962.3.: Changing libc.a and conio.h. 97 Apart from the ussual directories, the binary package will create the 98 following directory: 99 %DJDIR%/gnu/gtxt-@treeversion@/djgpp/djdev-2.03 100 where %DJDIR% stands for the root of your DJGPP installation tree. 101 Cd into the djdev-2.03 directory. You will find the following files: 102 conio.diffs 103 conio.h 104 conio.o 105 conio.diffs is a patch file that documents the changes I have done against 106 the files of the original djdev203.zip and djlsr203.zip distributions. 107 This file is not needed by the average user. conio.h is the modified header 108 and conio.o is the recompiled new conio.c file that will replace the old 109 conio.o contained in libc.a. 110 111 For all commands that will follow now I will assume that you have 112 cd'ed into the %DJDIR%/gnu/gtxt-@treeversion@/djgpp/djdev-2.03 directory, 113 where %DJDIR% represents the path to your DJGPP installation. First, 114 you should backup your old header and library. For this task, run the 115 following command sequence (cp is the copy program from fil40b.zip): 116 cp /dev/env/DJDIR/include/conio.h /dev/env/DJDIR/include/conio.bak 117 cp /dev/env/DJDIR/lib/libc.a /dev/env/DJDIR/lib/libc.bak 118 119 Now you can copy the new header into your include directory 120 running the command: 121 cp conio.h /dev/env/DJDIR/include 122 123 Now you can substitute the old conio.o file in libc.a with the new one. 124 For this task you will need the ar program from binutils. 125 Run the command: 126 ar -rv /dev/env/DJDIR/lib/libc.a conio.o 127 You are done. 128 1292.3.: The NLS controling environment variables, LANG and LANGUAGE, must be 130 set to their appropiate values. The exact way how these variables 131 should be set depends on your operating system: 132 133 * For Windows 98 systems: 134 - Click START; 135 - Choose Programs->Accessories->System Tools->System Information; 136 - Click Tools in the menu-bar, then choose "System Configuration"; 137 - Use the tab provided there for editing your AUTOEXEC.BAT as 138 explained below. 139 140 * For Windows NT systems: 141 - Right-click "My Computer", then select "Properties"; 142 - Click the "Environment" tab; 143 - Add a new variables LANG and LANGUAGE and set their values to the 144 wanted language codes file as explained below. 145 146 * For all other systems (DOS, Windows 3.X and Windows 95): use any 147 text editor, e.g. the standard EDIT, to edit the file AUTOEXEC.BAT 148 in the root directory of the boot drive (usually, C:). 149 150 The values of the two environment variables LANG and LANGUAGE should be 151 set like this: 152 153 set LANG=xx 154 set LANGUAGE=yy:zz 155 156 xx, yy and zz are place holders for the wanted language codes. For 157 posible values, please read below. 158 The LANG entry is obligatory, the LANGUAGE entry may be omited. The 159 LANG variable selects the locale charsets (dos codepage) to be used to 160 display the program's output and the catalog (.mo file) that contains 161 the translated strings to be used. The LANGUAGE variable allows you to 162 select an alternate catalog than the one stipulated by LANG. Replace 163 xx, yy and zz by the language code of the catalogs you want to use. It 164 should be noticed that LANGUAGE has *ALWAYS* higher priority than LANG. 165 The LANG variable not only selects a catalog, it also specifies the dos 166 codepage that will be used as locale charset. All this means that the 167 translation strings contained in the catalogs (.mo files) will be 168 recoded at runtime to the dos codepage stipulated by the value of LANG. 169 This runtime recoding is needed because the .mo files may have been 170 written using a charset that is not compatible with the charset that 171 will be used on the machine and OS where the .mo files contents will be 172 displayed. The .po files of the GNU packages, from which the .mo files 173 are generated, are typical examples of this. Usualy, they have been 174 written using some ISO-8859-nn charset (an unix charset) and shall be 175 displayed on a DOS/WIN95 machine that uses some dos codepage. 176 177 Some examples: 178 If you only want to use the catalog containing the translations for 179 your mother tongue (in my case the spanish translations) the above 180 lines will only use the LANG variable and will look like this: 181 182 set LANG=es 183 184 In this case, LANG defines the locale charset (CP850 in this case) to 185 be used for the on-the-fly recoding of the catalog (.mo file) contents 186 **AND AT THE SAME TIME** the translation/language (.mo file) to be used. 187 188 If you want to use the spanish (es) and german (de) catalogs the above 189 lines will look like this: 190 191 set LANG=es 192 set LANGUAGE=es:de 193 194 In this case a DJGPP binary that has been compiled with NLS support 195 will first search for the spanish translation of a string. If a 196 translation for that particular string can not be found in the spanish 197 .mo file then it will search for a german translation of that string in 198 the german .mo file and if a german translation of that string can also 199 not been found it will default to display the build-in english string. 200 No mather if a spanish, a german or an english build-in string is 201 selected, the string is always recoded to the dos codepage stipulated 202 by LANG. In this case: CP850. In the above example, LANGUAGE defines 203 the set of languages to be used and their priority (from left to right). 204 At the same time, LANG defines the locale charset (dos codepage) to be 205 used to recode **ALL** translated string, no matter which language 206 (.mo file) is used. 207 If you want to reverse this search order the above lines would look 208 like this one: 209 210 set LANG=es 211 set LANGUAGE=de:es 212 213 Now let us assume that an user wants to use the swedish catalogs on 214 a machine that loads codepage CP437 when it is booted. It should be 215 noticed that the locale charset for Sweden is CP850 and not CP437. 216 In this case, the lines must look like this: 217 218 set LANG=en_US 219 set LANGUAGE=sv 220 221 LANG reflects the available codepage/charset and LANGUAGE selects the 222 wanted translation catalog. en_US means CP437. Now, the contents of the 223 catalog are recoded to CP437 instead to CP850 because CP437 is the 224 codepage used to display messages on screen. Of course, not every 225 combination of catalogs and locale charset (dos codepages) makes sense. 226 E.G.: selecting as locale charset chinese (LANG=zh_TW) and the french 227 translations (LANGUAGE=fr) will certainly not generate an usefull 228 screen output. 229 230 The content of LANG is a language code. Examples are fr for french, 231 en_US for US english, etc. This language code is an alias for the 232 locale charset to be used for runtime recoding. The complete list of 233 all available aliases can be found in %DJDIR%/lib/charset.alias. This 234 file is a table with two entries: left entry is the alias (en_US, 235 de_AT, etc.), right entry is the corresponding dos codepage that will 236 be used for that language code (alias). It should be noticed that it is 237 also possible to select a codepage directely. E.G.: Instead of setting: 238 239 set LANG=en_US 240 241 you may directely set: 242 243 set LANG=CP437 244 245 cp437 or 437 are also valid settings for CP437. This overwrites any 246 settings in charset.alias. The settings in the environment always 247 overwrite the settings in charset.alias. Please note that if you omit 248 LANG, LANGUAGE will not be honored at all. Because the information 249 about which locale charset shall be used for recoding is needed, 250 if LANG is omitted by the user this information will not be available 251 and consequently LANGUAGE will be ignored and no translation at all 252 will be done. 253 If for some reason you want to disable NLS, then you should comment 254 out the LANG variable or remove them from your AUTOEXEC.BAT file or 255 select 'C' as your catalog: 256 257 set LANG=C 258 259 or clear it by setting: 260 261 set LANG= 262 263 You can also change during a DOS session in Win9X or on plain DOS the 264 values of the LANG and LANGUAGE variables by setting or clearing them 265 from the DOS prompt. 266 2672.5.: To create an entry for the gettext info docs in your dir file 268 run from the top DJGPP installation directory the command: 269 install-info --info-dir=./info ./info/gettext.info 270 2712.6.: The binaries distributed in this package have NLS support. 272 E.G. run the command: 273 xgettext 274 and the binary should talk to you in your mother tonge, if 275 supported. 276 For futher information about GNU gettext please read the info docs. 277 278 2793.: Building the binaries from sources. 280 =================================== 281 2823.1.: To build the binaries you will need the following binary packages: 283 djdev203.zip (or a later but NOT a prior version) 284 bsh203b.zip (or a later but NOT a prior version) 285 gcc303b.zip, bnu2112b.zip, mak3791b.zip, 286 fil40b.zip, shl20jb.zip, txt20b.zip, 287 txi40b.zip, grep24b.zip, sed3028b.zip, 288 licv17b.zip 289 290 If you want to run the check you will need also: 291 dif272b.zip 292 293 If you want to recreate the html docs you will also need: 294 gro116b.zip (or a later but NOT a prior version) 295 perl561b.zip (or a later but NOT a prior version) 296 297 All this packages can be found in the v2gnu directory of any 298 Simtel.NET mirror. 299 You must have licv17b.zip or a later version installed before 300 configuring or compiling the package or the configuration and build 301 process will fail due to unresolved references to libiconv.a 302 You will need bsh203b.zip or later and *NOT* a prior version or the 303 build will fail. The same applies to djdev203.zip. 304 This updated versions have been recompiled with djdev203.zip and know 305 about the "/dev/env" functionality introduced with djdev203.zip. All the 306 other packages are the ones I have used to build the binaries from this 307 sources. Previuos versions of this packages may do the job as well but 308 I have not tested this. 309 3103.2.: Create a temporary directory and copy the source package into the 311 directory. If you download the source distribution from one of the 312 DJGPP archives, just unzip it preserving the directory structure 313 running *ONE* of the following commands: 314 unzip32 gtxt@packageversion@s.zip or 315 djtarx gtxt@packageversion@s.zip or 316 pkunzip -d gtxt@packageversion@s.zip 317 318 Source distributions downloaded from one of the GNU FTP sites need 319 some more work to unpack. First, you *MUST* use the `djtar' program 320 to unzip the package. That is because some file names in the official 321 distributions need to be changed to avoid problems on the various 322 platforms supported by DJGPP. `djtar' can rename files on the fly given 323 a file with name mappings. The distribution includes a file 324 `djgpp/fnchange.lst' with the necessary mappings. So you need first 325 to retrieve that file, and then invoke `djtar' to unpack the 326 distribution. Here is how: 327 328 djtar -x -p -o @V@/djgpp/fnchange.lst @V@.tar.gz > lst 329 djtar -x -n lst @V@.tar.gz 330 331 (The name of the distribution archive and the top-level directory will 332 be different for versions other than @VER@.) 333 334 It is always recommended to download the DJGPP packages from some 335 Simtel.NET mirror and *NOT* the original GNU distribution because 336 only the binary distribution of the DJGPP port will contain the 337 files needed to patch libc.a. This are: conio.h and conio.o. 338 3393.3.: This package is preconfigured for NLS support and for run time recoding 340 due to the functionality provided by libiconv.a from licv17b.zip. 341 This implies that licv17b.zip *MUST* be installed *before* you try to 342 compile the package or the build process will fail. 343 It should be noticed that when you compile your own binaries with NLS 344 you must also *always* link with libiconv.a 345 If you compile this package with a later version of libc.a or if you 346 prefer no NLS support at all you will have to reconfigure this package. 347 The configuration batch file of this package, located in the djgpp 348 directory, allows you to enable or disable NLS support and to compile 349 from a different partition than from where the sources are located. 350 config.bat always configures the package for NLS support enabled and 351 for in-place compilation if no options are given. 352 The available NLS options are: 353 NLS 354 no-NLS 355 356 If for some reason you want no NLS support you will have to reconfigure 357 the package. For this purpose cd into the top srcdir (gtxt-@treeversion@) 358 and run the following commands: 359 make distclean 360 djgpp\config no-NLS 361 362 This step is **NOT** optional and the "distclean" option must be used. 363 If you do not use the "distclean" option the config.cache file will not 364 be deleted. In this case you are **NOT** reconfiguring because the 365 configuration informations are read from the cache file instead of being 366 newly computed. 367 You **MUST** specify "no-NLS" or config.bat will default to "NLS". 368 To build the programs in a directory other than where the sources are, 369 you must add a parameter that specifies the source directory, 370 e.g: 371 x:\src\gnu\gtxt-@treeversion@\djgpp\config x:/src/gnu/gtxt-@treeversion@ no-NLS 372 373 Lets assume you want to build the binaries in a directory placed on a 374 different drive (z:\build in this case) from where the sources are, 375 then you will run the following commands: 376 z: 377 cd \build 378 x:\src\gnu\gtxt-@treeversion@\djgpp\config x:/src/gnu/gtxt-@treeversion@ no-NLS 379 380 If you want NLS support you will omit "no-NLS" or replace it by 381 "NLS" in the above examples. 382 The order of the "NLS" option and the srcdir option does *NOT* matter. 383 You *MUST* use forward slashes to specify the source directory. 384 385 This batch file will set same environment variables, make MSDOS 386 specific modifications to the Makefile.ins and supply all other 387 needed options to the configure script. 388 3893.4.: To compile the package run from the top srcdir the command: 390 make 391 3923.5.: Now you can run the tests if you like. 393 From the top srcdir run the command: 394 make check 395 396 Non test should fail. 397 3983.6.: To install the binaries, header, library, catalogs, and info docs 399 run the following command from the top srcdir: 400 make install CATALOGS="xx.gmo yy.gmo zz.gmo" 401 or 402 make install CATALOGS="xx.gmo yy.gmo zz.gmo" prefix=z:/some/other/place 403 404 This will install the products into your DJGPP installation tree given 405 by the default prefix "/dev/env/DJDIR". If you prefer to install them 406 into some other directory you will have to set prefix to the appropiate 407 value. Replace xx, yy and zz by the language codes of the catalogs you 408 want to install. 409 4103.7.: Now you have to set the LANG environment variable. 411 Please refer to section 2.3 for further information. 412 413 4144.: NLS support for other DJGPP ports. 415 ================================== 416 417 This package contains all needed files to get NLS support for the 418 following DJGPP ports: 419 bison-1.32 (bsn132s.zip) 420 enscript-1.6.2 (ens162s.zip) 421 fileutils-4.0 (fil40s.zip) 422 grep-2.4 (grep24s.zip) 423 id-utils-3.2 (idu32s.zip) 424 make-3.79.1 (mak3791s.zip) 425 recode-3.6 (rcode36s.zip) 426 sed-3.02.80 (sed3028s.zip) 427 sharutils-4.2c (shar42cs.zip) 428 sh-utils-2.0j (shl20js.zip) 429 tar-1.12a (tar112as.zip) 430 texinfo-4.0 (txi40s.zip) 431 textutils-2.0 (txt20s.zip) 432 433 The files needed are placed in the NLS_for_djgpp_packages tree located 434 in djgpp directory. I will explane this using grep-2.4 as example. 435 This means that file names or command names may change from port to port. 436 The configuration batch files and the sed scripts of every package have 437 the same name as the original ones that this ones will replace. If you 438 are familiar with the original package you shall have no difficulties 439 in reconfigure the package for NLS support. 440 Please inspect the tree NLS_for_djgpp_packages to see what files will 441 be replaced. 442 4434.1.: To reconfigure and recompile a source package with NLS support you 444 *MUST* install the gtxt@packageversion@b.zip and licv17b.zip packages 445 first. NLS support will **NOT** work with any prior version of the above 446 mentioned packages. Before installing gtxt@packageversion@b.zip and licv17b.zip 447 you *MUST* deinstall the old packages if you ever have installed them. 448 For this purpose use the provided manifest files from the old packages. 449 Old packages means previous beta releases of gtxt@packageversion@b.zip and licv17b.zip 450 *AND* also previous versions of gettext like gettext 0.10.32, etc. 451 4524.2.: We will assume that the required sources will be unzipped into 453 a directory called src. 454 Copy grep24s.zip into /src and decompress them preserving the directory 455 structure running the command: 456 unzip32 *.zip 457 This will create the directory: 458 /src/gnu/grep-2.4 459 460 The binary package gtxt@packageversion@b.zip will create the directory: 461 %DJDIR%/gnu/gtxt-@treeversion@/djgpp/NLS_for_djgpp_packages/grep-2.4 462 This directory contains all needed files. 463 The files are: 464 grep-2.4/djgpp/config.bat (new .bat file that replaces the original one.) 465 grep-2.4/djgpp/config.sed (sed script needed to modify configure.) 466 grep-2.4/djgpp/config.site (defaults for configure.) 467 468 Now we will xcopy the needed files into the original grep-2.4 directory. 469 First we will cd into the grep-2.4 directory and then we will run the 470 following command: 471 xcopy %DJDIR%\gnu\gtxt-@treeversion@\djgpp\NLS_for_djgpp_packages\grep-2.4 /v/s/e 472 4734.3.: Before the package can be reconfigured, the old configuration must be 474 cleared. Run the command: 475 make distclean 476 477 This will remove all Makefiles, config.h and config.cache file with old 478 configuration information. This step is *NOT* optional and it must be 479 used the "distclean" target. 480 4814.4.: Now the package can be configured running the command: 482 djgpp\config 483 if you want to build the products in the /src/grep-2.4 directory, or: 484 c:\src\grep-2.4\djgpp\config c:/src/grep-2.4 485 if you want to build the products on a different drive or directory. 486 You can still configure without NLS support if you want. In this case 487 simply add the option "no-NLS" to the above commands. 488 4894.5.: Now the package can be compiled and checked by running the commands: 490 make 491 make check 492 The first command will create also all the available translation 493 catalogs (.gmo files). Before running the tests you should clear 494 the LANGUAGE and/or LANG variable or the tests will probably fail. 495 4964.6.: Now the products can be installed by running the command: 497 make install CATALOGS="xx.gmo yy.gmo" 498 499 Replace xx and yy by the appropiate language codeof the catalogs you 500 want to install. If you omit CATALOGS then all catalogs will be installed. 501 You can install into a temp directory if you want by specifying a prefix: 502 make install prefix=z:/tmp CATALOGS="xx.gmo yy.gmo zz.gmo" 503 5044.7.: Now you have to set the LANG and LANGUAGE environment variable. 505 Please refer to 2.4. 506 507 508 Send GNU gettext specific bug reports to <bug-gnu-gettext@gnu.org>. 509 Send suggestions and bug reports concerning the DJGPP port to 510 comp.os.msdos.djgpp or <djgpp@delorie.com>. 511 512 513Enjoy. 514 515 Guerrero, Juan Manuel <st001906@hrz1.hrz.tu-darmstadt.de> 516