1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
|
Using national language support (NLS) in FreeType
=================================================
21. 1. 1998
Erwin Dieterich
1) Introduction
2) Using gettext (user's view)
3) Using gettext (programmer's view)
4) Using gettext (maintainer's view)
5) How can I switch off NLS? I don't need/want it.
Only Unix NLS using gettext() is covered here. If you are able to
help with internationalization (i18n) for different operating
systems, please e-mail me at Erwin.Dieterich.ED@Bayer-AG.de.
1) Introduction
If a program is to be used by people who are not fluent speakers of
English, the first thing they will ask for is communication in their
native language. If someone tries to implement NLS in a program
using only #ifdefs and other such programming strategies, it's
likely that this someone will get nowhere.
Gettext() is a possible way to help. Only minimal extra programming
effort is needed; the translations are implemented separately from
the program, and it is not necessary to recompile a program if you
want to switch the messages to a different language. If you wouldd
like to know more about gettext(), I recommend reading the GNU
gettext tools manual, written by Ulrich Drepper, Jim Meyering, and
Francois Pinard.
Currently supported languages are:
Czech (cz) translator: Pavel Kankovsky
<peak@kerberos.troja.mff.cuni.cz>
Dutch (nl) translator: Gertjan de Back <gertjan.de.back@pi.net>
French (fr) translator: David Turner <david.turner@freetype.org>
German (de) translator: Erwin Dieterich
<erwin.dieterich.ed@bayer-ag.de>
Spain (es) translator: Miguel A. Perez Valdenebro
<map@fujitsu.es>
Currently supported programs in the `test' directory are:
ftlint
ftdump
fterror
ftmetric
ftsbit
2) Using gettext (user's view)
Using gettext as an end user is very simple. If FreeType is
correctly installed on your computer, you can simply issue an
`export LANG=<language id>' in your Bourne shell or `setenv
LANG=<language id>' if you are using csh. That's all. In order to
switch back to English, just use `export LANG=' or `setenv LANG='.
<language id> is a two character code describing your language:
de=German, fr=French etc. Every supported language has its own
<language id>.po file in the `po' directory of FreeType. If your
language is not there you should consider contributing a
translation. Just e-mail me. Here is a transcript of what `export
LANG=<language id>' does:
test> ftlint 24 furiosot.ttf
Could not find or open furiosot.ttf.
FreeType error message: OS/2 table missing.
test> export LANG=de
test> ftlint 24 furiosot.ttf
Datei `furiosot.ttf' konnte nicht gefunden oder geöffnet werden.
FreeType Fehlermeldung: `OS/2'-Tabelle fehlt.
test> export LANG=
test> ftlint 24 furiosot.ttf
Could not find or open file furioso.ttf.
FreeType error message: OS/2 table missing.
Doesn't this look good? But what if nothing happens if you set
LANG? Here are some hints:
First: Is your language really supported? If it is, you need to be
sure that you have gettext() installed (if you are sitting at a
Linux box, chances are very good that you have). If you compiled
FreeType yourself and nothing strange happened, then your version of
FreeType has NLS compiled in, as this is the default, unless you
forgot to install the translation files in the right places (`make
install' in the po/ directory should be enough, but you need root
permissions as these files are installed somewhere in /usr/local) --
good luck :-)
3) Using gettext (programmer's view)
If you intend to use NLS in your program, you just need to make a
few simple changes. Here I only describe how NLS is enabled in the
programs that come with FreeType in test/. If you would like to add
NLS to other programs using FreeType as well, take a look at
FreeType's installation files; you can probably use these files as a
model.
Every string that should be translated needs gettext() around it.
So
Message( "Usage: %s fontname[.ttf|.ttc]\n\n",
execname );
becomes
Message( gettext( "Usage: %s fontname[.ttf|.ttc]\n\n" ),
execname );
Yes, it's that simple. Next you need to initialize gettext. Put
the following in the header section of your file:
#include "ft_conf.h"
#ifdef HAVE_LIBINTL_H
#include <libintl.h>
#endif
#ifndef HAVE_LIBINTL_H
#define gettext( x ) ( x )
#endif
and this at the very beginning of your main program:
#ifdef HAVE_LIBINTL_H
setlocale(LC_ALL, "");
bindtextdomain( "freetype", LOCALEDIR );
textdomain( "freetype" );
#endif
That's all. Just have a look at fterror.c in test/.
4) Using gettext (maintainer's view)
I am too lazy today :-) If something isn't clear, just ask me.
5) How can I switch off NLS? I don't need/want it.
Just say `configure --disable-nls' and recompile FreeType.
If you have any questions or comments regarding this short
introduction to NLS & FreeType, feel free to email me at
Erwin.Dieterich.ED@Bayer-AG.de.
--- end of i18n.txt ---
|