mirror of
https://github.com/Stichting-MINIX-Research-Foundation/netbsd.git
synced 2025-09-09 15:18:01 -04:00
183 lines
7.3 KiB
Plaintext
183 lines
7.3 KiB
Plaintext
|
|
Welcome!
|
|
========
|
|
|
|
This is the OS/2 port of GNU gettext internationalization library.
|
|
|
|
|
|
Compatibility
|
|
=============
|
|
|
|
The library has been compiled with -Zmt flag, but it doesn't matter as soon
|
|
as you use the EMX single-threaded runtime fix (emx-strt-fix-0.0.2.zip).
|
|
|
|
The library is fully compatible with the previous port of gettext library
|
|
(0.10.35) which is largely used especialy by XFree86/2 programs. All the
|
|
old programs that I have with gettext support run fine with the new version
|
|
of the DLL.
|
|
|
|
|
|
Installation
|
|
============
|
|
|
|
If you set the GNULOCALEDIR environment variable to point to your
|
|
x:/xxx/share/locale directory, it will override any other setting. That is,
|
|
unpack the binary distribution over /emx, set GNULOCALEDIR=x:/emx/share/locale
|
|
(where x: is the drive letter of your EMX installation) and that's all.
|
|
|
|
If you use the UNIXROOT environment variable, the default catalogue search
|
|
paths will be like on Unices, e.g. $(UNIXROOT)/usr/lib and
|
|
$(UNIXROOT)/usr/share/locale. GNULOCALEDIR always overrides this.
|
|
|
|
Now if you haven't did it earlier, set the language identifier that you use.
|
|
This is done by adding a "SET LANG=xxx" environment setting to your CONFIG.SYS,
|
|
where xxx is the identifier of your language (example: en_UK for English in UK,
|
|
ru_RU for Russian in Russia. Also you can use names like "russian", "italian"
|
|
and so on - see the share/locale/locale.alias file).
|
|
|
|
This port of gettext supports character set conversions. This means that if
|
|
your .mo files were written using new gettext guidelines, e.g. they contain a
|
|
message like this:
|
|
|
|
msgid ""
|
|
msgstr "Content-Type: text/plain; charset=koi8-r\n"
|
|
|
|
the messages will be properly converted to your active codepage using OS/2
|
|
Unicode API. For example, russian message catalog gettext.mo is in the
|
|
KOI8-R (codepage 878) encoding while OS/2 uses codepage 866. Now when you
|
|
run any of these tools it detects that the active OS/2 codepage is 866 and
|
|
performs the translation from CP878 -> CP866 for every message.
|
|
|
|
If you want to override the character set used to output messages (for example
|
|
in XFree86 for Russian the KOI8-R encoding (codepage 878) is used) you can
|
|
set the output character set by adding a postfix to the LANG environment
|
|
variable, this way:
|
|
|
|
set LANG=ru_RU.KOI8-R
|
|
|
|
or (equivalent):
|
|
|
|
set LANG=ru_RU.CP878
|
|
|
|
or (same effect):
|
|
|
|
set LANG=ru_RU.IBM-878
|
|
|
|
If the output character set is ommited from the LANG variable, the default
|
|
codepage is ALWAYS taken from the operating system (e.g. the codepage setting
|
|
from locale.alias is always ignored, so "russian" stays just for "ru_RU" and
|
|
not for "ru_RU.ISO-8859-5"); you may want to set it just if you want to
|
|
override the active OS/2 codepage.
|
|
|
|
|
|
XFree86 setup
|
|
=============
|
|
|
|
If you use XFree86 and the OS/2 default character set is different from the
|
|
XFree86 default character set (e.g. for Russain CP866 vs KOI8-R), you can add
|
|
the following (or similar) statement to your startx.cmd file (after the
|
|
commands dealing with HOME and X11SHELL):
|
|
|
|
call VALUE 'LANG', 'ru_RU.KOI8-R', env
|
|
|
|
Otherwise you can get incorrect (wrong codepage) output from programs that
|
|
previously worked (e.g. GIMP 1.22). This is because earlier versions of gettext
|
|
didn't support character set translations.
|
|
|
|
|
|
Implementation remarks
|
|
======================
|
|
|
|
The codepage conversion code uses OS/2 Unicode API, thus it falls under the
|
|
limits that OS/2 Unicode API has. For example, OS/2 Unicode API does not
|
|
support the BIG5 East Asian character set nor ISO-8859-X where X > 9 (at
|
|
least with Warp4 with fixpack 14 that I have). If someone knows the
|
|
OS/2 API identifiers for BIG5 or ISO8859-10,... encodings, please tell me!
|
|
|
|
Since gettext 0.11 iconv emulation layer supports correctly UTF-8. Also
|
|
I have added theoretical support for the following East Asian encodings:
|
|
EUC-JP, EUC-KR, EUC-TW, EUC-CN. However, these encodings are (I believe)
|
|
supported only on East Asian editions of OS/2. The code pages for them are
|
|
listed in the \language\codepage\ucstbl.lst file but the codepage files
|
|
themselves are missing; I believe they are ommited from European OS/2's
|
|
due to their large size.
|
|
|
|
Also I have added "support" for the BIG5 codeset as an alias for IBM-950
|
|
codepage. However, I'm not very sure about this; in any case OS/2 does not
|
|
support (as far as I know) anything closer to BIG5.
|
|
|
|
|
|
Additional API
|
|
==============
|
|
|
|
This package provides additionaly the iconv() API that can be used by
|
|
developers for doing more feature-full Unix ports. The iconv() API is used
|
|
to convert text between various codepages. The intl.h header file contains
|
|
the prototypes and definitions needed for iconv(); if you configure software
|
|
with autoconf it possibly will find intl.h and set up the software accordingly.
|
|
|
|
All these functions are exported from INTL.DLL. The iconv.a import library
|
|
imports all the iconv* functions from INTL.DLL. So, like on Unix, now you can
|
|
#include <iconv.h>, then link with -liconv and you will get a fully functional
|
|
iconv implementation.
|
|
|
|
|
|
Rebuilding the library
|
|
======================
|
|
|
|
The library is quite easy to rebuild. Since the OS/2 support is provided now
|
|
out-of-the-box in gettext, you just have to download and unpack the source
|
|
archive. Now there are two ways to rebuild the gettext library:
|
|
|
|
1. If you're a masochist you can go the clumsy configure/make Unix way. This
|
|
is not recommended however as I found no way to tell libtool to generate a
|
|
slightly non-standard DLL which will be backward compatible with gettext
|
|
0.10.35. The compatibility is achieved by prepending backward.def to the
|
|
export definition file generated with emximp or somehow else. Thus it is
|
|
highly recommended you build using the second way, if it is possible.
|
|
|
|
2. Go to os2 and just run `make'. If you have all the required tools,
|
|
it should painlessly compile. Finally, if you want a binary distribution
|
|
archive, do `make distr'. The weak side of building this way is that makefile
|
|
is somewhat fragile. This means that if the makefile is left unmodified and
|
|
a new version of gettext is rolled out, it *may* not work. But every possible
|
|
attempt was made to ensure that the makefile takes most important build
|
|
parameters from their autoconf counterparts.
|
|
|
|
WARNING: Due to bugs in GNU Make 3.76.1 (at least in its OS/2 port) you can
|
|
get sometimes (depending on make version and makefile modification :) funny
|
|
messages like these:
|
|
|
|
zip warning: name not matched: emx/src/gettext-0.10.40/support/os2/iconv.h
|
|
|
|
or even:
|
|
|
|
*** No rule to make target `out/release/intl.a', needed by `all'. Stop.
|
|
|
|
Such messages are a bad joke. Ignore it, and re-run make. This is a
|
|
long-standing bug in GNU make, alas.
|
|
|
|
If you want a debug version of library, you can do `make DEBUG=1'.
|
|
|
|
If you don't have the LxLite tool installed, do `make LXLITE=0'
|
|
|
|
NB: For best results, it is highly recommended that you use at least emxbind.exe
|
|
and ld.exe from gcc 3.0.2 or later, since they contain a number of fixes that
|
|
will help you generate a more optimal DLL.
|
|
|
|
|
|
Contributors
|
|
============
|
|
|
|
Hung-Chi Chu <hcchu@r350.ee.ntu.edu.tw>
|
|
the original port of gettext (0.10.35)
|
|
|
|
Jun SAWATAISHI <jsawa@attglobal.net>
|
|
some more work on it and submitted the patches to GNU team, although
|
|
they were not completely integrated.
|
|
|
|
Andrew Zabolotny <zap@cobra.ru>
|
|
Succeeded to remove almost all OS/2-specific #ifdef's from mainstream
|
|
source code, wrote the dedicated OS/2 makefile, wrote the iconv wrapper
|
|
around OS/2 Unicode API, added support for locale translations.
|