annotate man/lispref/internationalization.texi @ 4407:4ee73bbe4f8e

Always use boyer_moore in ASCII or Latin-1 buffers with ASCII search strings. 2007-12-26 Aidan Kehoe <kehoea@parhasard.net> * casetab.c: Extend and correct some case table documentation. * search.c (search_buffer): Correct a bug where only the first entry for a character in the case equivalence table was examined in determining if the Boyer-Moore search algorithm is appropriate. If there are case mappings outside of the charset and row of the characters specified in the search string, those case mappings can be safely ignored (and Boyer-Moore search can be used) if we know from the buffer statistics that the corresponding characters cannot occur. * search.c (boyer_moore): Assert that we haven't been passed a string with varying characters sets or rows within character sets. That's what simple_search is for. In the very rare event that a character in the search string has a canonical case mapping that is not in the same character set and row, don't try to search for the canonical character, search for some other character that is in the the desired character set and row. Assert that the case table isn't corrupt. Do not search for any character case mappings that cannot possibly occur in the buffer, given the buffer metadata about its contents.
author Aidan Kehoe <kehoea@parhasard.net>
date Wed, 26 Dec 2007 17:30:16 +0100
parents 576fb035e263
children 03ab78e48ef6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1 @c -*-texinfo-*-
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2 @c This is part of the XEmacs Lisp Reference Manual.
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
3 @c Copyright (C) 1990, 1991, 1992, 1993 Free Software Foundation, Inc.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
4 @c See the file lispref.texi for copying conditions.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
5 @setfilename ../../info/internationalization.info
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
6 @node Internationalization, MULE, PostgreSQL Support, top
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
7 @chapter Internationalization
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
8
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
9 @menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
10 * I18N Levels 1 and 2:: Support for different time, date, and currency formats.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
11 * I18N Level 3:: Support for localized messages.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
12 * I18N Level 4:: Support for Asian languages.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
13 @end menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
14
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
15
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
16 @node I18N Levels 1 and 2
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
17 @section I18N Levels 1 and 2
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
18
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
19 XEmacs is now compliant with I18N levels 1 and 2. Specifically, this means
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
20 that it is 8-bit clean and correctly handles time and date functions. XEmacs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
21 will correctly display the entire ISO-Latin 1 character set.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
22
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
23 The compose key may now be used to create any character in the ISO-Latin 1
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
24 character set not directly available via the keyboard.. In order for the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
25 compose key to work it is necessary to load the file @file{x-compose.el}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
26 At any time while composing a character, @code{C-h} will display all valid
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
27 completions and the character which would be produced.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
28
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
29
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
30 @node I18N Level 3
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
31 @section I18N Level 3
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
32
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
33 @menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
34 * Level 3 Basics::
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
35 * Level 3 Primitives::
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
36 * Dynamic Messaging::
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
37 * Domain Specification::
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
38 * Documentation String Extraction::
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
39 @end menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
40
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
41 @node Level 3 Basics
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
42 @subsection Level 3 Basics
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
43
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
44 XEmacs now provides alpha-level functionality for I18N Level 3. This means
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
45 that everything necessary for full messaging is available, but not every
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
46 file has been converted.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
47
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
48 The two message files which have been created are @file{src/emacs.po} and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
49 @file{lisp/packages/mh-e.po}. Both files need to be converted using
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
50 @code{msgfmt}, and the resulting @file{.mo} files placed in some locale's
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
51 @code{LC_MESSAGES} directory. The test ``translations'' in these files are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
52 the original messages prefixed by @code{TRNSLT_}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
53
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
54 The domain for a variable is stored on the variable's property list under
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
55 the property name @var{variable-domain}. The function
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
56 @code{documentation-property} uses this information when translating a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
57 variable's documentation.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
58
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
59
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
60 @node Level 3 Primitives
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
61 @subsection Level 3 Primitives
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
62
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
63 @defun gettext string
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
64 This function looks up @var{string} in the default message domain and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
65 returns its translation. If @code{I18N3} was not enabled when XEmacs was
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
66 compiled, it just returns @var{string}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
67 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
68
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
69 @defun dgettext domain string
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
70 This function looks up @var{string} in the specified message domain and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
71 returns its translation. If @code{I18N3} was not enabled when XEmacs was
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
72 compiled, it just returns @var{string}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
73 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
74
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
75 @defun bind-text-domain domain pathname
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
76 This function associates a pathname with a message domain.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
77 Here's how the path to message file is constructed under SunOS 5.x:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
78
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
79 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
80 @code{@{pathname@}/@{LANG@}/LC_MESSAGES/@{domain@}.mo}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
81 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
82
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
83 If @code{I18N3} was not enabled when XEmacs was compiled, this function does
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
84 nothing.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
85 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
86
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
87 @defspec domain string
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
88 This function specifies the text domain used for translating documentation
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
89 strings and interactive prompts of a function. For example, write:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
90
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
91 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
92 (defun foo (arg) "Doc string" (domain "emacs-foo") @dots{})
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
93 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
94
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
95 to specify @code{emacs-foo} as the text domain of the function @code{foo}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
96 The ``call'' to @code{domain} is actually a declaration rather than a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
97 function; when actually called, @code{domain} just returns @code{nil}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
98 @end defspec
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
99
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
100 @defun domain-of function
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
101 This function returns the text domain of @var{function}; it returns
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
102 @code{nil} if it is the default domain. If @code{I18N3} was not enabled
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
103 when XEmacs was compiled, it always returns @code{nil}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
104 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
105
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
106
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
107 @node Dynamic Messaging
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
108 @subsection Dynamic Messaging
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
109
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
110 The @code{format} function has been extended to permit you to change the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
111 order of parameter insertion. For example, the conversion format
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
112 @code{%1$s} inserts parameter one as a string, while @code{%2$s} inserts
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
113 parameter two. This is useful when creating translations which require you
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
114 to change the word order.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
115
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
116
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
117 @node Domain Specification
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
118 @subsection Domain Specification
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
119
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
120 The default message domain of XEmacs is `emacs'. For add-on packages, it is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
121 best to use a different domain. For example, let us say we want to convert
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
122 the ``gorilla'' package to use the domain `emacs-gorilla'.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
123 To translate the message ``What gorilla?'', use @code{dgettext} as follows:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
124
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
125 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
126 (dgettext "emacs-gorilla" "What gorilla?")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
127 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
128
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
129 A function (or macro) which has a documentation string or an interactive
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
130 prompt needs to be associated with the domain in order for the documentation
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
131 or prompt to be translated. This is done with the @code{domain} special
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
132 form as follows:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
133
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
134 @page
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
135 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
136 (defun scratch (location)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
137 "Scratch the specified location."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
138 (domain "emacs-gorilla")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
139 (interactive "sScratch: ")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
140 @dots{} )
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
141 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
142
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
143 It is most efficient to specify the domain in the first line of the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
144 function body, before the @code{interactive} form.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
145
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
146 For variables and constants which have documentation strings, specify the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
147 domain after the documentation.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
148
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
149 @defspec defvar symbol [value [doc-string [domain]]]
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
150 Example:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
151 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
152 (defvar weight 250 "Weight of gorilla, in pounds." "emacs-gorilla")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
153 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
154 @end defspec
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
155
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
156 @defspec defconst symbol [value [doc-string [domain]]]
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
157 Example:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
158 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
159 (defconst limbs 4 "Number of limbs" "emacs-gorilla")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
160 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
161 @end defspec
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
162
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
163 @defun autoload function filename &optional docstring interactive type
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
164 This function defines @var{function} to autoload from @var{filename}
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
165 Example:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
166 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
167 (autoload 'explore "jungle" "Explore the jungle." nil nil "emacs-gorilla")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
168 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
169 @end defun
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
170
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
171
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
172 @node Documentation String Extraction
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
173 @subsection Documentation String Extraction
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
174
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
175 The utility @file{etc/make-po} scans the file @code{DOC} to extract
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
176 documentation strings and creates a message file @code{doc.po}. This file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
177 may then be inserted within @code{emacs.po}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
178
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
179 Currently, @code{make-po} is hard-coded to read from @code{DOC} and write
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
180 to @code{doc.po}. In order to extract documentation strings from an add-on
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
181 package, first run @code{make-docfile} on the package to produce the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
182 @code{DOC} file. Then run @code{make-po -p} with the @code{-p} argument to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
183 indicate that we are extracting documentation for an add-on package.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
184
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
185 (The @code{-p} argument is a kludge to make up for a subtle difference
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
186 between pre-loaded documentation and add-on documentation: For add-on
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
187 packages, the final carriage returns in the strings produced by
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
188 @code{make-docfile} must be ignored.)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
189
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
190 @node I18N Level 4
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
191 @section I18N Level 4
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
192
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
193 The Asian-language support in XEmacs is called ``MULE''. @xref{MULE}.