summaryrefslogtreecommitdiff
path: root/docs/i18n/localizing.html
blob: 2b7d6700a4d66df4c4d1ae841b9b178842eb7c87 (plain)
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
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">


<script type="text/javascript">/* Copyright 2008 Google. */ (function() {
// Input 0
// Input 1
var a="start";function b(){this.t={};this.tick=function(c,d){this.t[c]=[(new Date).getTime(),d]};this.tick(a)}var e=new b;window.jstiming={Timer:b,load:e};try{window.jstiming.pt=window.external.pageT}catch(f){};
})()
</script>
<link rel="shortcut icon" href="http://www.gstatic.com/sites/p/1236722368649/system/app/images/favicon.ico" type="image/x-icon">
<link rel="apple-touch-icon" href="http://www.gstatic.com/sites/p/1236722368649/system/app/images/apple-touch-icon.png" type="image/png">
<script type="text/javascript">/* Copyright 2008 Google. */ (function() {
var d=window,f="length";function k(b){return document.getElementById(b)}d.byId=k;var l="";function m(b){return b.replace(/^\s+|\s+$/g,l)}d.trim=m;var o="MSIE",p="6.0",q="string",r='id="',s='" ',t='class="',u='title="',v="display:inline-block;",w="left",x="float:left;",y="right",z="float:right;",A="cursor:hand;",B="<span ",C=' style="width:',D="px; height:",E="px;",F=";filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='",G="', sizingMethod='scale');\"></span>";
d.ie6ImgFix=function(b){var a=d.navigator?navigator.userAgent:l;if(a.indexOf(o)!=-1&&typeof opera=="undefined"){var e=/MSIE\s+([^\);]+)(\)|;)/;e.test(a);var h=RegExp.$1;if(h==p){var c=typeof b==q?document.getElementById(b):b,j=c.id?r+c.id+s:l,g=c.className?t+c.className+s:l,n=c.title?u+c.title+s:u+c.alt+s,i=v+c.style.cssText;if(c.align==w)i=x+i;if(c.align==y)i=z+i;if(c.parentElement.href)i=A+i;var I=B+j+g+n+C+c.width+D+c.height+E+i+F+c.src+G;c.outerHTML=I}}};var H=[],J=0;
d.JOT_addListener=function(b,a,e){var h=new String(J++),c={eventName:b,handler:a,compId:e,key:h};H.push(c);return h};d.JOT_removeListenerByKey=function(b){var a=0;for(;a<H[f];a++)if(H[a].key==b){H.splice(a,1);break}};d.JOT_removeAllListenersForName=function(b){var a=0;for(;a<H[f];a++)H[a].eventName==b&&H.splice(a,1)};var K="function";
d.JOT_postEvent=function(b,a,e){var h={eventName:b,eventSrc:a||{},payload:e||{}};if(d.JOT_fullyLoaded){var c=H[f],j=0;for(;j<c&&j<H[f];j++){var g=H[j];if(g&&g.eventName==b){h.listenerCompId=g.compId||l;var n=typeof g.handler==K?g.handler:d[g.handler];n&&n(h)}}}else d.JOT_delayedEvents.push({eventName:b,eventSrc:a,payload:e})};d.JOT_delayedEvents=[];d.JOT_fullyLoaded=false;var L="{0}";
d.JOT_formatRelativeToNow=function(b){var a=((new Date).getTime()-b)/60000;if(a>=1440)return null;var e=0;if(a>=60){a/=60;e=2}a>=2&&e++;return d.JOT_relTimeStrs[e].replace(L,Math.floor(a))};
})()
</script>
<script>
webspace = {};
webspace.domain = 'defaultdomain';
webspace.isConsumer = true;
webspace.sharingPolicy = 'OPENED';
webspace.baseUri = '';
webspace.siteTitle = 'ICU User Guide';
webspace.homePath = '/';
webspace.analyticsAccountId = 'UA-7670256-1';
webspace.enableAnalytics = true;
webspace.domainAnalyticsAccountId = '';
webspace.termsUrl = 'http://www.google.com/sites/help/intl/en/terms.html';
webspace.isStartPageEnabled = false;
webspace.features = {};
webspace.features.pageTemplates = false;

webspace.gadgets = {};
webspace.gadgets.baseUri = '/system/app/pages/gadgets';
webspace.gadgets.isGadgetDirectoryEnabled = false;
webspace.gadgets.isGgsRenderingEnabled = false;
webspace.user = {};

webspace.user.uid = '';
webspace.user.primaryEmail = 'guest';
webspace.user.userName = 'guest';
webspace.user.displayNameOrEmail = 'guest';
webspace.user.domain = '';
webspace.user.hostedAccount = false;
webspace.user.guest_ = true;
  
webspace.user.hasAdminAccess = false;
webspace.user.hasWriteAccess = false;

webspace.page = {
  type: "text",
  properties: {},
  title: "Localizing with ICU",
  path: "/locale/localizing",
  wuid: "wuid:gx:bad6fcdd925f9b9",
  name: "localizing",
  revision: "3",
  parentPath: "/locale",
  canChangePath: true,
  state: "",
  locale: "en",
  isRtlLocale: false,
  bidiEnabled: false
};
var editorResources = [
  'http://www.gstatic.com/sites/p/1236722368649/system/js/trog_edit.js',
  'http://www.gstatic.com/sites/p/1236722368649/system/app/css/trogedit.css',
  '/_/rsrc/1236722677828/system/app/css/editorToolbar.css'
];

var JOT_clearDotPath = "http://www.gstatic.com/sites/p/1236722368649/system/app/images/cleardot.gif";

var JOT_relTimeStrs = ["a minute ago", "{0} minutes ago", "an hour ago", "{0} hours ago"];

</script>
<script type="text/javascript">
                window.jstiming.load.tick('scl');
              </script>

<link rel="stylesheet" type="text/css" href="localizing_files/jot-old.css">
<style xmlns="http://www.google.com/ns/jotspot" type="text/css">
          #goog-ws-left .goog-ws-outside, #goog-ws-left .goog-ws-subfooter,
          #goog-ws-left-nohead .goog-ws-outside, #goog-ws-left-nohead .goog-ws-subfooter {
            margin: 0 0 0 150px;
          }
          #goog-ws-right .goog-ws-outside, #goog-ws-right .goog-ws-subfooter,
          #goog-ws-right-nohead .goog-ws-outside, #goog-ws-right-nohead .goog-ws-subfooter {
            margin: 0 150px 0 0;
          }
          .goog-ws-outer {
            margin-left: auto !important;
            margin-right: auto !important;
            width: 100%;
          }
          .goog-ws-sidebar {
            width: 145px;
          }
          
        </style>
<title>Localizing with ICU ‎(ICU User Guide)‎</title>
<script type="text/javascript">
                window.jstiming.load.tick('cl');
              </script>
<script src="localizing_files/ga.js"></script></head><body xmlns="http://www.google.com/ns/jotspot" id="goog-ws-left">
<div xmlns="http://www.w3.org/1999/xhtml" id="goog-ws-status" class="goog-ws-status" style="display: none;">
<div id="goog-ws-notice" class="goog-ws-notice"> </div>
</div>
<div class="goog-ws-outer">
<div xmlns="http://www.w3.org/1999/xhtml" class="goog-ws-header">
<table class="goog-ws-header-table" cellpadding="0">
<tbody><tr>
<td class="goog-ws-header-title" colspan="2">
<a href="http://userguide.icu-project.org/">
<img src="localizing_files/customLogo.png" id="logo-img-id" onload="ie6ImgFix('logo-img-id');" alt="Logo" class="goog-ws-logo">
</a>
<h2 style="" dir="ltr"><a href="http://userguide.icu-project.org/">ICU User Guide</a></h2>
</td>
<td class="goog-ws-header-search">
<div class="goog-ws-search">
<form action="/system/app/pages/search" onsubmit="return checkSearchField()">
<input onpropertychange="JOT_setTextDir(this)" oninput="JOT_setTextDir(this)" dir="" id="jot-ui-searchInput" name="q" size="20" type="text">
<input id="jot-ui-searchButton" value="Search Site" style="margin-top: -1px;" type="submit">
</form>
</div>
</td>
</tr>
</tbody></table>
</div>
<div class="goog-ws-wrapper">
<div xmlns="http://www.w3.org/1999/xhtml" class="goog-ws-sidebar">
<div class="goog-ws-sidebar-inside">
<div class="goog-ws-sidebar-content">
<div id="COMP_3629852313370373" class="goog-ws-sidebar-textgadget">
<h4 class="goog-ws-sidebar-textgadget-header">Contents</h4>
<div class="goog-ws-sidebar-textgadget-inside">
<div dir="ltr"><p style="color: rgb(0, 0, 0);"><a href="http://site.icu-project.org/" rel="nofollow">ICU Home Page</a><br></p><p style="color: rgb(0, 0, 0);">ICU<br>·&nbsp;<a href="http://userguide.icu-project.org/intro">Introduction</a><br>·&nbsp;<a href="http://userguide.icu-project.org/i18n">Internationalization</a><br>·&nbsp;<a href="http://userguide.icu-project.org/unicode">Unicode Basics</a><br>·&nbsp;<a href="http://userguide.icu-project.org/services">ICU Services</a><br>·&nbsp;<a href="http://userguide.icu-project.org/design">ICU Design</a><br>·&nbsp;<a href="http://userguide.icu-project.org/posix">C/POSIX Migration</a><br>
</p><p style="color: rgb(0, 0, 0);">Chars &amp; Strings<br>·&nbsp;<a href="http://userguide.icu-project.org/strings">Strings</a><br>·&nbsp;<a href="http://userguide.icu-project.org/strings/properties">Properties</a><br>·&nbsp;<a href="http://userguide.icu-project.org/strings/characteriterator">CharacterIterator</a><br>·&nbsp;<a href="http://userguide.icu-project.org/strings/utext">UText</a><br>·&nbsp;<a href="http://userguide.icu-project.org/strings/unicodeset">UnicodeSet</a><br>·&nbsp;<a href="http://userguide.icu-project.org/strings/regexp">Regular Expressions</a><br>·&nbsp;<a href="http://userguide.icu-project.org/strings/stringprep">String Prep</a><br>
</p><p style="color: rgb(0, 0, 0);">Conversion<br>·&nbsp;<a href="http://userguide.icu-project.org/conversion">Conversion Basics</a><br>·&nbsp;<a href="http://userguide.icu-project.org/conversion/converters">Converter</a><br>·&nbsp;<a href="http://userguide.icu-project.org/conversion/data">Conversion Data</a><br>·&nbsp;<a href="http://userguide.icu-project.org/conversion/detection">Charset Detection</a><br>·&nbsp;<a href="http://userguide.icu-project.org/conversion/compression">Compression</a><br>
</p><p style="color: rgb(0, 0, 0);">Locales &amp; Resources<br>·&nbsp;<a href="http://userguide.icu-project.org/locale">Locale Class</a><br>·&nbsp;<a href="http://userguide.icu-project.org/locale/resources">Resources</a><br>·&nbsp;<a href="http://userguide.icu-project.org/locale/localizing">Localizing with ICU</a><br>
</p><p style="color: rgb(0, 0, 0);">Date/Time<br>·&nbsp;<a href="http://userguide.icu-project.org/datetime">Date/Time Services</a><br>·&nbsp;<a href="http://userguide.icu-project.org/datetime/calendar">Calendar Services</a><br>·&nbsp;<a href="http://userguide.icu-project.org/datetime/timezone">TimeZone class</a><br>·&nbsp;<a href="http://userguide.icu-project.org/datetime/universaltimescale">Universal Time Scale</a><br>
</p><p style="color: rgb(0, 0, 0);">Formatting<br>·&nbsp;<a href="http://userguide.icu-project.org/formatparse">Format &amp; Parse</a><br>·&nbsp;<a href="http://userguide.icu-project.org/formatparse/numbers">Format Numbers</a><br>·&nbsp;<a href="http://userguide.icu-project.org/formatparse/datetime">Format Date/Time</a><br>·&nbsp;<a href="http://userguide.icu-project.org/formatparse/messages">Format Messages</a><br>
</p><p style="color: rgb(0, 0, 0);">Transforms<br>·&nbsp;<a href="http://userguide.icu-project.org/transforms">Transformations</a><br>·&nbsp;<a href="http://userguide.icu-project.org/transforms/casemappings">Case Mapping</a><br>·&nbsp;<a href="http://userguide.icu-project.org/transforms/bidi">BiDi Algorithm</a><br>·&nbsp;<a href="http://userguide.icu-project.org/transforms/normalization">Normalization</a><br>·&nbsp;<a href="http://userguide.icu-project.org/transforms/general">Transform</a><br>·&nbsp;<a href="http://userguide.icu-project.org/transforms/general/rules">Rule Tutorial</a><br>
</p><p style="color: rgb(0, 0, 0);">Collation<br>·&nbsp;<a href="http://userguide.icu-project.org/collation">Introduction</a><br>·&nbsp;<a href="http://userguide.icu-project.org/collation/concepts">Concepts</a><br>·&nbsp;<a href="http://userguide.icu-project.org/collation/architecture">Architecture</a><br>·&nbsp;<a href="http://userguide.icu-project.org/collation/customization">Customization</a><br>·&nbsp;<a href="http://userguide.icu-project.org/collation/icu-string-search-service">Search String</a><br>·&nbsp;<a href="http://userguide.icu-project.org/collation/faq">Collation FAQ</a><br>
</p><p style="color: rgb(0, 0, 0);">Boundary Analysis<br>
·&nbsp;<a href="http://userguide.icu-project.org/boundaryanalysis">Boundary Analysis</a><br>
</p><p style="color: rgb(0, 0, 0);">Layout Engine<br>
·&nbsp;<a href="http://userguide.icu-project.org/layoutengine">Layout Engine</a><br>
</p><p style="color: rgb(0, 0, 0);">ICU Data<br>·&nbsp;<a href="http://userguide.icu-project.org/icudata">ICU Data</a><br>·&nbsp;<a href="http://userguide.icu-project.org/packaging">Packaging ICU</a><br>
</p><p style="color: rgb(0, 0, 0);">Use From ...<br>·&nbsp;<a href="http://userguide.icu-project.org/usefrom/jni">Java Native Interface</a><br>·&nbsp;<a href="http://userguide.icu-project.org/usefrom/cobol">Cobol</a><br>
</p><p style="color: rgb(0, 0, 0);">Misc<br>·&nbsp;<a href="http://userguide.icu-project.org/dev/codingguidelines">Coding Guidelines</a><br>·&nbsp;<a href="http://userguide.icu-project.org/dev/sync">Synchronization</a><br>·&nbsp;<a href="http://userguide.icu-project.org/dev/contributions">Contributions</a><br>·&nbsp;<a href="http://userguide.icu-project.org/editing">User Guide Editing</a><br>·&nbsp;<a href="http://userguide.icu-project.org/icufaq">ICU FAQ</a><br>
· <a href="http://userguide.icu-project.org/icufaq/icu4j-faq">ICU4J FAQ</a><br>
<br>
</p><p>
·&nbsp;<a href="http://userguide.icu-project.org/glossary">Glossary</a><br>
</p><p>· <a href="https://sites.google.com/site/icuprojectuserguide/system/app/pages/sitemap/hierarchy">Sitemap</a><br>
</p></div>
</div>
</div>
<div id="COMP_6529795619573087" class="goog-ws-sidebar-textgadget">
<h4 class="goog-ws-sidebar-textgadget-header"></h4>
<div class="goog-ws-sidebar-textgadget-inside">
<div dir="ltr"><p>
<i>Copyright (c) 2000 - 2008 IBM and Others</i><br></p><p><a href="http://icu-project.org/contacts.html" rel="nofollow">Feedback</a>
</p></div>
</div>
</div>
</div>
</div>
</div>
<div id="jot-main" class="goog-ws-outside">
<div class="goog-ws-outside-in">
<div class="goog-ws-content-wrapper">
<div id="goog-ws-editor-toolbar-container"> </div>
<div xmlns="http://www.w3.org/1999/xhtml" id="title-crumbs" class="goog-ws-crumbs goog-ws-grey" style="">
<span><a href="http://userguide.icu-project.org/locale" dir="ltr">Locale</a> &gt; </span>
</div>
<h3 xmlns="http://www.w3.org/1999/xhtml" id="goog-ws-page-title-header" class="goog-ws-page-title" style="">
<span id="goog-ws-page-title" dir="ltr">Localizing with ICU</span>
</h3>
<table xmlns="http://www.w3.org/1999/xhtml" id="jot-content-table" style="width: 100%; table-layout: fixed;">
<tbody>
<tr>
<td id="col0" style="width: 100%;">
<div id="jot-content0" class="goog-ws-content goog-ws-content-ie goog-ws-clear" style="">
<div dir="ltr">
<div style="margin: 5px 0pt 5px 20px; display: inline; float: right; width: 250px;">
<div class="goog-toc"><p>Contents</p><ol class="goog-toc"><li class="goog-toc"><a href="#TOC-Overview"><strong>1 </strong>Overview</a></li><li class="goog-toc"><a href="#TOC-Recommendation"><strong>2 </strong>Recommendation</a></li><li class="goog-toc"><a href="#TOC-Java-and-ICU4J"><strong>3 </strong>Java and ICU4J</a><ol class="goog-toc"><li class="goog-toc"><a href="#TOC-.properties-files"><strong>3.1 </strong>.properties files</a></li><li class="goog-toc"><a href="#TOC-.java-ListResourceBundle-files"><strong>3.2 </strong>.java ListResourceBundle files</a></li></ol></li><li class="goog-toc"><a href="#TOC-ICU4C"><strong>4 </strong>ICU4C</a><ol class="goog-toc"><li class="goog-toc"><a href="#TOC-.txt-resource-bundles"><strong>4.1 </strong>.txt resource bundles</a></li><li class="goog-toc"><a href="#TOC-ICU4C-XML-resource-bundles"><strong>4.2 </strong>ICU4C XML resource bundles</a></li></ol></li><li class="goog-toc"><a href="#TOC-XLIFF"><strong>5 </strong>XLIFF</a></li><li class="goog-toc"><a href="#TOC-DITA"><strong>6 </strong>DITA</a></li><li class="goog-toc"><a href="#TOC-Linux-gettext"><strong>7 </strong>Linux/gettext</a></li><li class="goog-toc"><a href="#TOC-POSIX-catgets"><strong>8 </strong>POSIX/catgets</a></li><li class="goog-toc"><a href="#TOC-Windows"><strong>9 </strong>Windows</a></li><li class="goog-toc"><a href="#TOC-ICU-tools"><strong>10 </strong>ICU tools</a><ol class="goog-toc"><li class="goog-toc"><a href="#TOC-Converting-de.txt-to-a-ListResource"><strong>10.1 </strong>Converting de.txt to a ListResourceBundle</a></li><li class="goog-toc"><a href="#TOC-Converting-a-ListResourceBundle-bac"><strong>10.2 </strong>Converting a ListResourceBundle back to .txt</a></li></ol></li><li class="goog-toc"><a href="#TOC-Further-information"><strong>11 </strong>Further information</a></li><li class="goog-toc"><a href="#TOC-Sample-Windows-.rc-file"><strong>12 </strong>Sample Windows .rc file</a></li></ol></div>
</div>
<h2><a name="TOC-Overview"></a>Overview</h2><p>There are many different formats for
software localization, i.e., for resource bundles. The most important
file format feature for translation of text elements is to represent
key-value pairs where the values are strings.</p><p>Each format was
designed for a certain purpose. Many but not all formats are recognized
by translation tools. For localization it is best to use a source
format that is optimized for translation, and to convert from it to the
platform-specific formats at build time.</p><p>This overview
concentrates on the formats that are relevant for working with ICU. The
examples below show only lists of strings, which is the lowest common
denominator for resource bundles.</p><h2><a name="TOC-Recommendation"></a>Recommendation</h2><p>The most promising long-term approach is to author localizable data in XLIFF
 format (see the <u>XLIFF</u> (§) section below) and to convert it to native, platform/tool-specific formats at build time.</p><p>Short-term,
due to the lack of ICU tools for XLIFF, either custom tools must be
used to convert from some authoring/translation format to Java/ICU
formats, or one of the Java/ICU formats needs to be used for authoring
and translation.</p><p></p><h2><a name="TOC-Java-and-ICU4J"></a>Java and ICU4J</h2><h3><a name="TOC-.properties-files"></a>.properties files</h3><p>Java <font face="courier, monospaced">PropertyResourceBundle</font>
uses runtime-parsed .properties files. They contain key-value pairs
where both keys and values are Unicode strings. No other native data
types (e.g., integers or binaries) are supported. There is no way to
specify a charset, therefore .properties files must be in ISO 8859-1
with \u escape sequences (see the Java <font face="courier, monospaced">native2ascii</font> tool).</p><p>Defined at: <a href="http://java.sun.com/j2se/1.4/docs/api/java/util/PropertyResourceBundle.html" rel="nofollow">http://java.sun.com/j2se/1.4/docs/api/java/util/PropertyResourceBundle.html</a>
</p><p>Example: (<font face="courier, monospaced">example_de.properties</font>)</p><table border="1" cellpadding="8" cellspacing="0"><tbody><tr><td bgcolor="#eeeeee" valign="top">
<pre>key1=Deutsche Sprache schwere Sprache<br>key2=Düsseldorf<br></pre></td></tr></tbody></table>
<h3><a name="TOC-.java-ListResourceBundle-files"></a>.java ListResourceBundle files</h3><p>Java <font face="courier, monospaced">ListResourceBundle</font> files provide implementation subclasses of the <font face="courier, monospaced">ListResourceBundle</font> abstract base class. <b>They are Java code!</b> Source files are .java files that are compiled as usual with the <font face="courier, monospaced">javac</font> compiler. Syntactic rules of Java apply. As Java source code, they can contain arbitrary Java objects and can be nested.</p><p>Although
the Java compiler allows to specify a charset on the command line, this
is uncommon, and .java resource bundle files are therefore usually
encoded in ISO 8859-1 with \u escapes like .properties files.</p><p>Defined at: <a href="http://java.sun.com/j2se/1.4/docs/api/java/util/ListResourceBundle.html" rel="nofollow">http://java.sun.com/j2se/1.4/docs/api/java/util/ListResourceBundle.html</a>
</p><p>Example: (<font face="courier, monospaced">example_de.java</font>)</p><table border="1" cellpadding="8" cellspacing="0"><tbody><tr><td bgcolor="#eeeeee" valign="top">
<pre>public class example_de extends ListResourceBundle {<br>&nbsp;&nbsp;public Object[][] getContents() {<br>&nbsp;&nbsp;&nbsp;&nbsp;return contents;<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;static final Object[][] contents={<br>&nbsp;&nbsp;&nbsp;&nbsp;{ "key1", "Deutsche Sprache " +<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"schwere Sprache" },<br>&nbsp;&nbsp;&nbsp;&nbsp;{ "key2", "Düsseldorf" }<br>&nbsp;&nbsp;};<br>}<br></pre></td></tr></tbody></table>
<p></p><h2><a name="TOC-ICU4C"></a>ICU4C</h2><h3><a name="TOC-.txt-resource-bundles"></a>.txt resource bundles</h3><p>ICU4C
natively uses a plain text source format with a nested structure that
was derived from Java ListResourceBundle .java files when the original
ICU Java class files were ported to C++. The ICU4C bundle format can of
course contain only data, not code, unlike .java files. Resource bundle
source files are compiled with the <font face="courier, monospaced">genrb</font> tool into a binary runtime form (<font face="courier, monospaced">.res</font> files) that is portable among platforms with the same charset family (ASCII vs. EBCDIC) and endianness.</p><p>Features:</p><ol><li><p>Key-value
pairs. Keys are strings of "invariant characters" - a portable subset
of the ASCII graphic character repertoire. About "invariant characters"
see the definition of the .txt file format (URL below) or <a href="http://icu-project.org/apiref/icu4c/utypes_8h.html" rel="nofollow">icu/source/common/unicode/utypes.h</a>
</p></li><li><p>Values can be Unicode strings, integers, binaries (BLOBs),
integer arrays (vectors), and nested structures. Nested structures are
either arrays (position-indexed vectors) of values or "tables" of
key-value pairs.</p></li><li><p>Values inside nested structures can be all of the ones as on the top level, arbitrarily deeply nested via arrays and tables.</p></li><li><p>Long strings can be split across lines: Adjacent strings
separated only by whitespace (including line breaks) are automatically
concatenated at build time.</p></li><li><p>At runtime, when a top-level item is not found, then ICU looks
up the same key in the parent bundle as determined by the locale ID.</p></li><li><p>A value can also be an "alias", which is simply a reference to
another bundle's item. This is to save space by storing large data
pieces only once when they cannot be inherited along the locale ID
hierarchy (e.g., collation data in ICU shared among zh_HK and zh_TW).</p></li><li><p>Source files can be in any charset. Unicode signature byte
sequences are recognized automatically (UTF-8/16, SCSU, ...), otherwise
the tool takes a charset name on the command line.</p></li></ol><p>Defined at: <a href="http://source.icu-project.org/repos/icu/icuhtml/trunk/design/bnf_rb.txt" rel="nofollow">icuhtml/design/bnf_rb.txt</a>
</p><p>Example: (<font face="courier, monospaced">de.txt</font>)</p><table border="1" cellpadding="8" cellspacing="0"><tbody><tr><td bgcolor="#eeeeee" valign="top">
<pre>de {<br>&nbsp;&nbsp;key1 { "Deutsche Sprache "<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"schwere Sprache" }<br>&nbsp;&nbsp;key2 { "Düsseldorf" }<br>}<br></pre></td></tr></tbody></table>
<h3><a name="TOC-ICU4C-XML-resource-bundles"></a>ICU4C XML resource bundles</h3><p>The ICU4C XML resource
bundle format was defined simply to express the same capabilities of
the .txt and binary ICU4C resource bundles in XML form. However, we
have decided to drop the format for lack of use and instead adopt
standard XLIFF format for localization. For more information on XLIFF
format, see the following section. For examples on using ICU tools to
produce and read XLIFF format see the <u>XLIFF Usage</u> (§) section in the <a href="http://userguide.icu-project.org/locale/resources">resource management chapter</a>. </p><p></p><h2><a name="TOC-XLIFF"></a>XLIFF</h2><p>The
XML Localization Interchange File Format (XLIFF) is an emerging
industry standard "for the interchange of localization information".
Version 1.1 is available (2003-Oct-31), and 1.2 is almost complete
(2007-Jan-20).</p><p>This is the result of a quick review of XLIFF and may need to be improved.</p><p>Features:</p><ol><li><p>Multiple resource bundles per XLIFF file are supported.</p></li><li><p>Multiple languages per XLIFF file are supported.</p></li><li><p>XLIFF provides a rich set of ways to communicate intent, types
of items, etc. all the way from content creation to all stages and
phases of translation.</p></li><li><p>Nesting of values appears to not be supported.</p></li><li><p>XLIFF is independent of actual build-time or runtime resource
bundle formats. .xlf files must be converted to native formats at build
time.</p></li></ol><p>Defined at: <a href="http://www.oasis-open.org/committees/xliff/" rel="nofollow">http://www.oasis-open.org/committees/xliff/</a>
</p><p>Example: (<font face="courier, monospaced">example.xlf</font>)</p><table border="1" cellpadding="8" cellspacing="0"><tbody><tr><td bgcolor="#eeeeee" valign="top">
<pre>&lt;&lt;?xml version="1.0" encoding="utf-8"?&gt;<br>&lt;xliff version = "1.1" xmlns='urn:oasis:names:tc:xliff:document:1.1'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xsi:schemaLocation='urn:oasis:names:tc:xliff:document:1.1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http://www.oasis-open.org/committees/xliff/documents/xliff-core-1.1.xsd'&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;file xml:space = "preserve" source-language = "en" target-language = "sh"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;datatype = "x-icu-resource-bundle" original = "root.txt"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;date = "2007-08-17T21:17:08Z"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;header&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tool tool-id = "genrb-3.3-icu-3.8" tool-name = "genrb"/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/header&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;body&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;group id = "root" restype = "x-icu-table"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;trans-unit id = "optionMessage" resname = "optionMessage"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;source&gt;unrecognized command line option:&lt;/source&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;target&gt;nepoznata opcija na komandnoj liniji:&lt;/target&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/trans-unit&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;trans-unit id = "usage" resname = "usage"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;source&gt;usage: ufortune [-v] [-l locale]&lt;/source&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;target&gt;upotreba: ufortune [-v] [-l lokal]&lt;/target&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/trans-unit&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/group&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/body&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/file&gt;<br>&lt;/xliff&gt;<br></pre></td></tr></tbody></table>
<p>For examples on using ICU tools to produce and read XLIFF format see the <u>XLIFF Usage</u> (§) section in the <a href="http://userguide.icu-project.org/locale/resources">resource management chapter</a>.</p><p></p><h2><a name="TOC-DITA"></a>DITA</h2><p>The
Darwin Information Typing Architecture (DITA) is "IBM's XML
architecture for topic-oriented information". It is a family of XML
formats for several types of publications including manuals and
resource bundles. It is extensible. For example, subformats can be
defined by refining DTDs. One design feature is to provide
cross-document references for reuse of existing contents. For more
information see <a href="http://www.ibm.com/developerworks/xml/library/x-dita4/index.html" rel="nofollow">http://www.ibm.com/developerworks/xml/library/x-dita4/index.html</a>
</p><p>While it is certainly possible to define resource bundle formats
via DTDs in the DITA framework, there currently (2002-Nov-27) do not
appear to be resource bundle formats actually defined, or tools
available specifically for them.</p><p></p><h2><a name="TOC-Linux-gettext"></a>Linux/gettext</h2><p>The OpenI18N specification requires support for message handling functions (mostly variants of <font face="courier, monospaced">gettext()</font>) as defined in libintl.h. See Tables 3-5 and 3-6 and Annex C in <a href="http://www.openi18n.org/docs/html/LI18NUX-2000-amd4.htm" rel="nofollow">http://www.openi18n.org/docs/html/LI18NUX-2000-amd4.htm</a>
</p><p>Resource bundles ("portable object files", extension .po) are
plain text files with key-value pairs for string values. The format and
functions support a simple selection of plural forms by associating
integer values (via C language expressions) with indexes of strings.</p><p>The
msgfmt utility compiles .po files into "message object files"
(extension .mo). The charset is determined from the locale ID in <font face="courier, monospaced">LC_CTYPE</font>. There are additional supporting tools for .po files.</p><table border="0" cellpadding="0" cellspacing="3">
<tbody><tr><td valign="top" width="20">
<img alt="Note" src="localizing_files/note.gif" border="0" height="24" hspace="0" vspace="0" width="20"></td><td valign="top"><i>Note: The OpenI18N specification also requires POSIX
 <font face="courier, monospaced">gencat/catgets</font> support. See the POSIX (§) section below.<br></i></td></tr></tbody></table>
<p>Defined at: Annex C of the Li18nux-2000 specification, see above.</p><p>Example: (<font face="courier, monospaced">example.po</font>)</p><table border="1" cellpadding="8" cellspacing="0"><tbody><tr><td bgcolor="#eeeeee" valign="top">
<pre>domain "example_domain"<br>msgid "key1"<br>msgstr "Deutsche Sprache schwere Sprache"<br>msgid "key2"<br>msgstr "Düsseldorf"<br></pre></td></tr></tbody></table>
<p></p><h2><a name="TOC-POSIX-catgets"></a>POSIX/catgets</h2><p>POSIX (The Open Group specification) defines message catalogs with the <font face="courier, monospaced">catgets()</font> C function and the <font face="courier, monospaced">gencat</font> build-time tool. Message catalogs contain key-value pairs where the keys are integers <font face="courier, monospaced">1..NL_MSGMAX</font> (see <font face="courier, monospaced">limits.h</font>), and the values are strings. Strings can span multiple lines. The charset is determined from the locale ID in <font face="courier, monospaced">LC_CTYPE</font>.</p><p>Defined at: <a href="http://www.opengroup.org/onlinepubs/009695399/utilities/gencat.html" rel="nofollow">http://www.opengroup.org/onlinepubs/009695399/utilities/gencat.html</a>
 and <a href="http://www.opengroup.org/onlinepubs/009695399/functions/catgets.html" rel="nofollow">http://www.opengroup.org/onlinepubs/009695399/functions/catgets.html</a>
</p><p>Example: (<font face="courier, monospaced">example.txt</font>)</p><table border="1" cellpadding="8" cellspacing="0"><tbody><tr><td bgcolor="#eeeeee" valign="top">
<pre>1 Deutsche Sprache \<br>schwere Sprache<br>2 Düsseldorf<br></pre></td></tr></tbody></table>
<p></p><h2><a name="TOC-Windows"></a>Windows</h2><p>Windows uses a
number of file formats depending on the language environment -- MSVC 6,
Visual Basic, or Visual Studio .NET. The most well-known source formats
are the <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore98/HTML/_core_working_with_resource_files.asp" rel="nofollow">.rc Resource</a>
 and <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tools/tools/message_compiler.asp" rel="nofollow">.mc Message</a>
file formats. They both get compiled into .res files that are linked
into special sections of executables. Source formats can be UTF-16,
while compiled strings are (almost) always UTF-16 from .rc files
(except for predefined ComboBox strings) and can optionally be UTF-16
from .mc files.</p><p>.rc
files carry key-value pairs where the keys are usually numeric but can
be strings. Values can be strings, string tables, or one of many
Windows GUI-specific structured types that compile directly into binary
formats that the GUI system interprets at runtime. .rc files can
include C #include files for #defined numeric keys. .mc files contain
string values preceded by per-message headers similar to the
Linux/gettext() format. There is a special format of messages with
positional arguments, with printf-style formatting per argument. In
both .rc and .mc formats, Windows LCID values are defined to be set on
the compiled resources.</p><p>Developers and translators usually
overlook the fact that binary resources are included, and include them
into each translation. This despite Windows, like Java and ICU, using
locale ID fallback at runtime.</p><p>.rc and .mc files are tightly
integrated with Microsoft C/C++, Visual Studio and the Windows
platform, but are not used on any other platforms.</p><p>A <u>sample Windows .rc file</u>
 (§) is at the end of this document.</p><p></p><h2><a name="TOC-ICU-tools"></a>ICU tools</h2><p>ICU 2.4 provides tools for conversion between resource bundle formats:</p><ol><li><p>ICU4C .txt -&gt; ICU4C .res: Default operation of genrb (ICU 2.0 and before).</p></li><li><p>ICU4C .txt -&gt; ICU4C .xml: Option with genrb (ICU 2.4).</p></li><li><p>ICU4C .txt -&gt; Java ListResourceBundle .java format: Option with genrb (ICU 2.2).<br> Generates subclasses of ICUListResourceBundle to support non-string types.</p></li><li><p>Java ListResourceBundle .java format -&gt; ICU4C .txt: Use ICU4J 2.4's src/com/ibm/icu/dev/tools/localeconverter</p></li><li><p>ICU4C .xml -&gt; ICU4C .txt: There is a tool for this conversion, but it is not fully tested or documented. Please see the <a href="http://icu-project.org/download/xliff2icuconverter.html" rel="nofollow">XLIFF2ICUConverter</a>
 tool.</p></li></ol><p>There are currently no ICU tools for XLIFF.</p><h3><a name="TOC-Converting-de.txt-to-a-ListResource"></a>Converting de.txt to a ListResourceBundle</h3><p>The following genrb invocation generates a ListResourceBundle from <font face="courier, monospaced">de.txt</font> (see the example file <font face="courier, monospaced">de.txt</font> above):</p><p><font face="courier, monospaced">genrb -j -b TestName -p com.example de.txt</font></p><p>The
-j option causes .java output, -b is an arbitrary bundle name prefix,
and -p is an arbitrary package name. "Arbitrary" means "depends on your
product" and may be truly arbitrary if the generated .java files are
not actually used in a Java application. <font face="courier, monospaced">genrb</font>
auto-detects .txt files encoded in Unicode charsets like UTF-8 or
UTF-16 if they have a signature byte sequence ("BOM"). The .java output
file is in <font face="courier, monospaced">native2ascii</font> format, i.e., it is encoded in US-ASCII with <font face="courier, monospaced">\u</font> escapes.</p><p>The output of the above genrb invocation is <font face="courier, monospaced">TestName_de.java</font>:</p><table border="1" cellpadding="8" cellspacing="0"><tbody><tr><td bgcolor="#eeeeee" valign="top">
<pre>package com.example;<br><br>import java.util.ListResourceBundle;<br>import com.ibm.icu.impl.ICUListResourceBundle;<br><br>public class TestName_de extends ICUListResourceBundle {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;public TestName_de () {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;super.contents = data;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;static final Object[][] data = new Object[][] {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"key1",<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"Deutsche Sprache schwere Sprache",<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"key2",<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"D\u00FCsseldorf",<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br>&nbsp;&nbsp;&nbsp;&nbsp;};<br>}<br></pre></td></tr></tbody></table>
<h3><a name="TOC-Converting-a-ListResourceBundle-bac"></a>Converting a ListResourceBundle back to .txt</h3><p>An
ICUListResourceBundle .java file as generated in the previous example
can be converted to an ICU4C .txt file with the following steps:</p><ol><li><p>Compile the .java file, e.g. with <font face="courier, monospaced">javac -d . TestName_de.java</font>. ICU4J needs to be on the classpath (or use the -classpath option). If the .java file is not in <font face="courier, monospaced">native2ascii</font>
format, then use the -encoding option (e.g. -encoding UTF-8). The -d
option (specifying an output directory, in this example the current
folder) is required. Without it, the Java compiler would not generate
the com/example folder hierarchy that is required in the next step.</p></li><li><p>You now have a .class file <font face="courier, monospaced">com/example/TestName_de.class</font>.</p></li><li><p>Invoke the ICU4J locale converter tool to generate ICU4C .txt format output for this .class file:<br> <br> <font face="courier, monospaced">java
-cp ;(folder to ICU4J)/icu4j.jar;(working folder for the previous
steps);
com.ibm.icu.dev.tool.localeconverter.ConvertICUListResourceBundle -icu
-package com.example -bundle-name TestName de &gt; de.txt</font><br> <br>
Note that the classpath must include the working folder for the
previous steps (the folder that contains "com"). The package name
(com.example), bundle name (TestName) and locale ID (de) must match the
.java/.class files. Note also that the locale converter writes to the
standard output; the command line above includes a redirection to <font face="courier, monospaced">de.txt</font>.</p></li></ol><p>The last step generates a new de.txt in <font face="courier, monospaced">native2ascii</font> format:</p><table border="1" cellpadding="8" cellspacing="0"><tbody><tr><td bgcolor="#eeeeee" valign="top">
<pre>de {<br>&nbsp;&nbsp;key2{"D\u00FCsseldorf"}<br>&nbsp;&nbsp;key1{"Deutsche Sprache schwere Sprache"}<br>}<br></pre></td></tr></tbody></table>
<p></p><h2><a name="TOC-Further-information"></a>Further information</h2><ol><li><p>TMX:
"The purpose of TMX is to allow easier exchange of translation memory
data between tools and/or translation vendors with little or no loss of
critical data during the process."<br> <a href="http://www.lisa.org/tmx/" rel="nofollow">http://www.lisa.org/tmx/</a>
</p></li><li><p>LISA: Localisation Industry Standards Association<br> <a href="http://www.lisa.org/" rel="nofollow">http://www.lisa.org/</a>
</p></li></ol><p></p><h2><a name="TOC-Sample-Windows-.rc-file"></a>Sample Windows .rc file</h2><p>This file (<font face="courier, monospaced">winrc.rc</font>)
was generated with MSVC 6, using the New Project wizard to generate a
simple "Hello World!" application, changing the LCIDs to German, then
adding the two example strings as above.</p><table border="1" cellpadding="8" cellspacing="0"><tbody><tr><td bgcolor="#eeeeee" valign="top">
<pre>//Microsoft Developer Studio generated resource script.<br>//<br>#include "resource.h"<br><br>#define APSTUDIO_READONLY_SYMBOLS<br>/////////////////////////////////////////////////////////////////////////////<br>//<br>// Generated from the TEXTINCLUDE 2 resource.<br>//<br>#define APSTUDIO_HIDDEN_SYMBOLS<br>#include "windows.h"<br>#undef APSTUDIO_HIDDEN_SYMBOLS<br>#include "resource.h"<br><br>/////////////////////////////////////////////////////////////////////////////<br>#undef APSTUDIO_READONLY_SYMBOLS<br><br>/////////////////////////////////////////////////////////////////////////////<br>// German (Germany) resources<br><br>#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU)<br>#ifdef _WIN32<br>LANGUAGE LANG_GERMAN, SUBLANG_GERMAN<br>#pragma code_page(1252)<br>#endif //_WIN32<br><br>/////////////////////////////////////////////////////////////////////////////<br>//<br>// Icon<br>//<br><br>// Icon with lowest ID value placed first to ensure application icon<br>// remains consistent on all systems.<br>IDI_WINRC &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ICON &nbsp;&nbsp;&nbsp;DISCARDABLE &nbsp;&nbsp;&nbsp;&nbsp;"winrc.ICO"<br>IDI_SMALL &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ICON &nbsp;&nbsp;&nbsp;DISCARDABLE &nbsp;&nbsp;&nbsp;&nbsp;"SMALL.ICO"<br><br>/////////////////////////////////////////////////////////////////////////////<br>//<br>// Menu<br>//<br><br>IDC_WINRC MENU DISCARDABLE<br>BEGIN<br>&nbsp;&nbsp;&nbsp;&nbsp;POPUP "&amp;File"<br>&nbsp;&nbsp;&nbsp;&nbsp;BEGIN<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MENUITEM "E&amp;xit", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IDM_EXIT<br>&nbsp;&nbsp;&nbsp;&nbsp;END<br>&nbsp;&nbsp;&nbsp;&nbsp;POPUP "&amp;Help"<br>&nbsp;&nbsp;&nbsp;&nbsp;BEGIN<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MENUITEM "&amp;About ...", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IDM_ABOUT<br>&nbsp;&nbsp;&nbsp;&nbsp;END<br>END<br><br><br>/////////////////////////////////////////////////////////////////////////////<br>//<br>// Accelerator<br>//<br><br>IDC_WINRC ACCELERATORS MOVEABLE PURE<br>BEGIN<br>&nbsp;&nbsp;&nbsp;&nbsp;"?", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IDM_ABOUT, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ASCII, ALT<br>&nbsp;&nbsp;&nbsp;&nbsp;"/", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IDM_ABOUT, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ASCII, ALT<br>END<br><br><br>/////////////////////////////////////////////////////////////////////////////<br>//<br>// Dialog<br>//<br><br>IDD_ABOUTBOX DIALOG DISCARDABLE 22, 17, 230, 75<br>STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU<br>CAPTION "About"<br>FONT 8, "System"<br>BEGIN<br>&nbsp;&nbsp;&nbsp;&nbsp;ICON &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IDI_WINRC,IDC_MYICON,14,9,16,16<br>&nbsp;&nbsp;&nbsp;&nbsp;LTEXT &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"winrc Version 1.0",IDC_STATIC,49,10,119,8,SS_NOPREFIX<br>&nbsp;&nbsp;&nbsp;&nbsp;LTEXT &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"Copyright (C) 2002",IDC_STATIC,49,20,119,8<br>&nbsp;&nbsp;&nbsp;&nbsp;DEFPUSHBUTTON &nbsp;&nbsp;"OK",IDOK,195,6,30,11,WS_GROUP<br>END<br><br><br>/////////////////////////////////////////////////////////////////////////////<br>//<br>// String Table<br>//<br><br>STRINGTABLE DISCARDABLE<br>BEGIN<br>&nbsp;&nbsp;&nbsp;&nbsp;IDS_APP_TITLE &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"winrc"<br>&nbsp;&nbsp;&nbsp;&nbsp;IDS_HELLO &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"Hello World!"<br>&nbsp;&nbsp;&nbsp;&nbsp;IDC_WINRC &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"WINRC"<br>&nbsp;&nbsp;&nbsp;&nbsp;IDS_SENTENCE &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"Deutsche Sprache schwere Sprache"<br>&nbsp;&nbsp;&nbsp;&nbsp;IDS_CITY &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"Düsseldorf"<br>END<br><br>#endif &nbsp;&nbsp;&nbsp;// German (Germany) resources<br>/////////////////////////////////////////////////////////////////////////////<br><br><br>/////////////////////////////////////////////////////////////////////////////<br>// English (U.S.) resources<br><br>#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)<br>#ifdef _WIN32<br>LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US<br>#pragma code_page(1252)<br>#endif //_WIN32<br><br>#ifdef APSTUDIO_INVOKED<br>/////////////////////////////////////////////////////////////////////////////<br>//<br>// TEXTINCLUDE<br>//<br><br>2 TEXTINCLUDE DISCARDABLE<br>BEGIN<br>&nbsp;&nbsp;&nbsp;&nbsp;"#define APSTUDIO_HIDDEN_SYMBOLS\r\n"<br>&nbsp;&nbsp;&nbsp;&nbsp;"#include ""windows.h""\r\n"<br>&nbsp;&nbsp;&nbsp;&nbsp;"#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"<br>&nbsp;&nbsp;&nbsp;&nbsp;"#include ""resource.h""\r\n"<br>&nbsp;&nbsp;&nbsp;&nbsp;"\0"<br>END<br><br>3 TEXTINCLUDE DISCARDABLE<br>BEGIN<br>&nbsp;&nbsp;&nbsp;&nbsp;"\r\n"<br>&nbsp;&nbsp;&nbsp;&nbsp;"\0"<br>END<br><br>1 TEXTINCLUDE DISCARDABLE<br>BEGIN<br>&nbsp;&nbsp;&nbsp;&nbsp;"resource.h\0"<br>END<br><br>#endif &nbsp;&nbsp;&nbsp;// APSTUDIO_INVOKED<br><br>#endif &nbsp;&nbsp;&nbsp;// English (U.S.) resources<br>/////////////////////////////////////////////////////////////////////////////<br><br><br><br>#ifndef APSTUDIO_INVOKED<br>/////////////////////////////////////////////////////////////////////////////<br>//<br>// Generated from the TEXTINCLUDE 3 resource.<br>//<br><br><br>/////////////////////////////////////////////////////////////////////////////<br>#endif &nbsp;&nbsp;&nbsp;// not APSTUDIO_INVOKED<br><br></pre></td></tr></tbody></table>
</div>
</div>
</td>
</tr>
</tbody>
</table>
<div xmlns="http://www.w3.org/1999/xhtml" class="goog-ws-bottom">
<div id="COMP_page-subpages" style=""> </div>
<div id="COMP_page-attachments" style="display: none;" class="goog-ws-bottom-none">
<div id="goog-attachment-wrapper">
<div jotid="goog-attachment-inner" style="display: none;">
<ul id="JOT_ATTACH_container">
</ul>
</div>
</div>
</div>
<a name="page-comments"></a>
<div id="COMP_page-comments" style="display: none;" class="goog-ws-bottom-none">
<div id="goog-comment-wrapper">
<div jotid="goog-comment-inner" style="display: none;">
<div jotid="comments" class="goog-ws-comments">
<div id="_wuid_" jotid="template" class="goog-ws-comment" style="display: none;">
<h4><strong>_displayNameOrEmail_</strong> - _time_ - <a href="javascript:;" onclick="JOT_postEvent('removeComment', this, {wuid:'_wuid_'});">Remove</a></h4>
<p>_text_</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="goog-ws-subfooter">
<p>
          
              &nbsp;
              <a href="https://www.google.com/a/UniversalLogin?continue1=http%3A%2F%2Fsites.google.com%2Fsite%2Ficuprojectuserguide%2Flocale%2Flocalizing&amp;continue2=http%3A%2F%2Fsites.google.com%2Fsite%2Ficuprojectuserguide%2Flocale%2Flocalizing&amp;continue=http%3A%2F%2Fsites.google.com%2Fsite%2Ficuprojectuserguide%2Flocale%2Flocalizing&amp;service=jotspot">Sign in</a>
            
          &nbsp;
          <a href="http://userguide.icu-project.org/">Home</a>
          &nbsp;
          <a href="http://userguide.icu-project.org/system/app/pages/sitemap/hierarchy">Sitemap</a>
          
          &nbsp;
          <a href="javascript:void(window.open('http://www.google.com/sites/help/intl/en/terms.html'))">Terms</a>
          &nbsp;
          <a href="javascript:;" onclick="JOT_reportAbuse()">Report Abuse</a>
          
              &nbsp;
              <a href="javascript:;" onclick="window.open(webspace.printUrl)">Print</a>
            
          &nbsp;|&nbsp;
          <b xmlns="http://www.w3.org/1999/xhtml">Powered by <a href="http://sites.google.com/">Google Sites</a></b>
</p>
<div class="goog-temp-spew">
</div>
</div>
</div>
<script xmlns="http://www.w3.org/1999/xhtml" type="text/javascript">
    window.jstiming.load.tick('sjl');
  </script>
<script xmlns="http://www.w3.org/1999/xhtml" src="localizing_files/jot_min.js"></script>
<script xmlns="http://www.w3.org/1999/xhtml" type="text/javascript">
    window.jstiming.load.tick('jl');
  </script>
<script xmlns="http://www.w3.org/1999/xhtml" type="text/javascript">
      function checkSearchField() {
        if (!goog.string.trim(goog.dom.$('jot-ui-searchInput').value)) {
          JOT_setStatusMsg('Please enter the text to be searched.');
          return false;
        }
      }
    </script>
<script xmlns="http://www.w3.org/1999/xhtml" type="text/javascript">
  setTimeout(function() {
    var fingerprint = gsites.date.TimeZone.getFingerprint([1109635200000,1128902400000,1130657000000,1143333000000,1143806400000,1145000000000,1146380000000,1152489600000,1159800000000,1159500000000,1162095000000,1162075000000,1162105500000]);
    gsites.Xhr.send('http://userguide.icu-project.org/_/tz', null, null, 'GET', null, null, { afjstz: fingerprint });
  }, 500);
</script>
<script xmlns="http://www.w3.org/1999/xhtml">
                    window.onload = function() {
                      var loadTimer = window.jstiming.load;
                      loadTimer.tick("ol");
                      loadTimer["name"] = "load";
                      window.jstiming.report(loadTimer);
                    }
                  </script>
<script xmlns="http://www.w3.org/1999/xhtml" type="text/javascript">
        JOT_insertAnalyticsCode();
      </script>
<script xmlns="http://www.w3.org/1999/xhtml" type="text/javascript" defer="true">
  //<![CDATA[
    // Fires delayed events.
    (function() {
      JOT_fullyLoaded = true;
      var delayedEvents = JOT_delayedEvents;
      for (var x = 0; x < delayedEvents.length; x++) {
        var event = delayedEvents[x];
        JOT_postEvent(event.eventName, event.eventSrc, event.payload);
      }
      JOT_delayedEvents = null;
    })();
 //]]>
</script>
<div id="client-timer-div" class="goog-ws-subfooter goog-temp-spew"> </div>
<div id="server-timer-div" class="goog-ws-subfooter goog-temp-spew"> </div>
<script>
          window.jstiming.load.tick('render');
        </script>
</div></body></html>