Difference between revisions of "Unit Locale"

From Ultibo.org
Jump to: navigation, search
 
(12 intermediate revisions by the same user not shown)
Line 4: Line 4:
 
=== Description ===
 
=== Description ===
 
----
 
----
 +
 +
'''Ultibo Locale Interface unit'''
  
 
This unit implements the locale support for Ultibo and provides the code page support for the WideStringManager/UnicodeStringManager interface for the RTL.
 
This unit implements the locale support for Ultibo and provides the code page support for the WideStringManager/UnicodeStringManager interface for the RTL.
Line 64: Line 66:
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
<div style="font-size: 14px; padding-left: 12px;">'''Default code page constants''' <code> CP_* </code></div>
+
<div style="font-size: 14px; padding-left: 12px;">'''Default code page''' <code> CP_* </code></div>
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
Line 75: Line 77:
 
| Default to ANSI code page
 
| Default to ANSI code page
 
|-
 
|-
| <code>CP_OEMCP = ?;</code>
+
| <code>CP_OEMCP = 1;</code>
 
| Default to OEM  code page
 
| Default to OEM  code page
 
|-
 
|-
Line 92: Line 94:
 
| <code>CP_UNICODE = 1200;</code>
 
| <code>CP_UNICODE = 1200;</code>
 
| Unicode translation
 
| Unicode translation
 +
|-
 +
| <code>CP_UTF16_BE = 1201;</code>
 +
| UTF-16 (unicodeFFFE) translation
 
|-
 
|-
 
| <code>CP_UTF7 = 65000;</code>
 
| <code>CP_UTF7 = 65000;</code>
Line 103: Line 108:
 
<br />  
 
<br />  
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
<div style="font-size: 14px; padding-left: 12px;">'''Code page identifier constants''' <code> CP_OEM_*, CP_ANSI_* </code></div>
+
<div style="font-size: 14px; padding-left: 12px;">'''Code page identifier''' <code> CP_OEM_*, CP_ANSI_* </code></div>
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
Line 141: Line 146:
 
| Thai
 
| Thai
 
|-
 
|-
| <code>CP_OEM_1258 = ?258;</code>
+
| <code>CP_OEM_1258 = 1258;</code>
 
| Vietnam
 
| Vietnam
 
|-
 
|-
 
|colspan="2"|&nbsp;
 
|colspan="2"|&nbsp;
 
|-
 
|-
| <code>CP_ANSI_1250 = ?250;</code>
+
| <code>CP_ANSI_1250 = 1250;</code>
 
| Central Europe
 
| Central Europe
 
|-
 
|-
| <code>CP_ANSI_1251 = ?251;</code>
+
| <code>CP_ANSI_1251 = 1251;</code>
 
| Cyrillic
 
| Cyrillic
 
|-
 
|-
| <code>CP_ANSI_1252 = ?252;</code>
+
| <code>CP_ANSI_1252 = 1252;</code>
 
| Latin I
 
| Latin I
 
|-
 
|-
| <code>CP_ANSI_1253 = ?253;</code>
+
| <code>CP_ANSI_1253 = 1253;</code>
 
| Greek
 
| Greek
 
|-
 
|-
| <code>CP_ANSI_1254 = ?254;</code>
+
| <code>CP_ANSI_1254 = 1254;</code>
 
| Turkish
 
| Turkish
 
|-
 
|-
| <code>CP_ANSI_1255 = ?255;</code>
+
| <code>CP_ANSI_1255 = 1255;</code>
 
| Hebrew
 
| Hebrew
 
|-
 
|-
| <code>CP_ANSI_1256 = ?256;</code>
+
| <code>CP_ANSI_1256 = 1256;</code>
 
| Arabic
 
| Arabic
 
|-
 
|-
| <code>CP_ANSI_1257 = ?257;</code>
+
| <code>CP_ANSI_1257 = 1257;</code>
 
| Baltic
 
| Baltic
 
|-
 
|-
| <code>CP_ANSI_1258 = ?258;</code>
+
| <code>CP_ANSI_1258 = 1258;</code>
 
| Vietnam
 
| Vietnam
 
|-
 
|-
Line 180: Line 185:
 
<br />
 
<br />
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
<div style="font-size: 14px; padding-left: 12px;">'''Default locale constants''' <code> LOCALE_* </code></div>
+
<div style="font-size: 14px; padding-left: 12px;">'''Default locale''' <code> LOCALE_* </code></div>
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
Line 194: Line 199:
 
<br />
 
<br />
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
<div style="font-size: 14px; padding-left: 12px;">'''String length maximum constants''' <code> MAX_* </code></div>
+
<div style="font-size: 14px; padding-left: 12px;">'''String length maximum''' <code> MAX_* </code></div>
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
Line 208: Line 213:
 
<br />
 
<br />
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
<div style="font-size: 14px; padding-left: 12px;">'''Character type flag constants''' <code> CT_* </code></div>
+
<div style="font-size: 14px; padding-left: 12px;">'''MBCS and Unicode translation flag''' <code> MB_*, WC_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>MB_PRECOMPOSED = $00000001;</code>
 +
| use precomposed chars
 +
|-
 +
| <code>MB_COMPOSITE = $00000002;</code>
 +
| use composite chars
 +
|-
 +
| <code>MB_USEGLYPHCHARS = $00000004;</code>
 +
| use glyph chars, not ctrl chars
 +
|-
 +
| <code>MB_ERR_INVALID_CHARS = $00000008;</code>
 +
| error for invalid chars
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>WC_COMPOSITECHECK = $00000200;</code>
 +
| Convert composite to precomposed
 +
|-
 +
| <code>WC_DISCARDNS = $00000010;</code>
 +
| discard non-spacing chars
 +
|-
 +
| <code>WC_SEPCHARS = $00000020;</code>
 +
| generate separate chars
 +
|-
 +
| <code>WC_DEFAULTCHAR = $00000040;</code>
 +
| replace w/default AnsiChar
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>WC_NO_BEST_FIT_CHARS = $00000400;</code>
 +
| do not use best fit chars
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''Character type flag''' <code> CT_* </code></div>
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
Line 225: Line 269:
 
<br />
 
<br />
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
<div style="font-size: 14px; padding-left: 12px;">'''CType 1 flag bit constants''' <code> C1_* </code></div>
+
<div style="font-size: 14px; padding-left: 12px;">'''CType 1 flag bit''' <code> C1_* </code></div>
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
Line 263: Line 307:
 
<br />
 
<br />
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
<div style="font-size: 14px; padding-left: 12px;">'''CType 2 flag bit constants''' <code> C2_* </code></div>
+
<div style="font-size: 14px; padding-left: 12px;">'''CType 2 flag bit''' <code> C2_* </code></div>
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
Line 313: Line 357:
 
<br />
 
<br />
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
<div style="font-size: 14px; padding-left: 12px;">'''CType 3 flag bit constants''' <code> C3_* </code></div>
+
<div style="font-size: 14px; padding-left: 12px;">'''CType 3 flag bit''' <code> C3_* </code></div>
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
Line 366: Line 410:
 
<br />
 
<br />
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
<div style="font-size: 14px; padding-left: 12px;">'''String flag constants''' <code> NORM_* </code></div>
+
<div style="font-size: 14px; padding-left: 12px;">'''String flag''' <code> NORM_* </code></div>
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
Line 391: Line 435:
 
<br />
 
<br />
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
<div style="font-size: 14px; padding-left: 12px;">'''Locale independent mapping flag constants''' <code> MAP_* </code></div>
+
<div style="font-size: 14px; padding-left: 12px;">'''Locale independent mapping flag''' <code> MAP_* </code></div>
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
Line 399: Line 443:
 
|-
 
|-
 
| <code>MAP_PRECOMPOSED = $00000020;</code>
 
| <code>MAP_PRECOMPOSED = $00000020;</code>
| ?onvert to precomposed chars
+
| convert to precomposed chars
 
|-
 
|-
 
| <code>MAP_COMPOSITE = $00000040;</code>
 
| <code>MAP_COMPOSITE = $00000040;</code>
| ?onvert to composite chars
+
| convert to composite chars
 
|-
 
|-
 
| <code>MAP_FOLDDIGITS = $00000080;</code>
 
| <code>MAP_FOLDDIGITS = $00000080;</code>
Line 411: Line 455:
 
| <code>MAP_EXPAND_LIGATURES = $00002000;</code>
 
| <code>MAP_EXPAND_LIGATURES = $00002000;</code>
 
| expand all ligatures
 
| expand all ligatures
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''Locale dependent mapping flag''' <code> LCMAP_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>LCMAP_LOWERCASE = $00000100;</code>
 +
| lower case letters
 +
|-
 +
| <code>LCMAP_UPPERCASE = $00000200;</code>
 +
| upper case letters
 +
|-
 +
| <code>LCMAP_SORTKEY = $00000400;</code>
 +
| WC sort key (normalize)
 +
|-
 +
| <code>LCMAP_BYTEREV = $00000800;</code>
 +
| byte reversal
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>LCMAP_HIRAGANA = $00100000;</code>
 +
| map katakana to hiragana
 +
|-
 +
| <code>LCMAP_KATAKANA = $00200000;</code>
 +
| map hiragana to katakana
 +
|-
 +
| <code>LCMAP_HALFWIDTH = $00400000;</code>
 +
| map double byte to single byte
 +
|-
 +
| <code>LCMAP_FULLWIDTH = $00800000;</code>
 +
| map single byte to double byte
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>LCMAP_LINGUISTIC_CASING = $01000000;</code>
 +
| use linguistic rules for casing
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>LCMAP_SIMPLIFIED_CHINESE  = $02000000;</code>
 +
| map traditional chinese to simplified chinese
 +
|-
 +
| <code>LCMAP_TRADITIONAL_CHINESE = $04000000;</code>
 +
| map simplified chinese to traditional chinese
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''Language group enumeration flag''' <code> LGRPID_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>LGRPID_INSTALLED = $00000001;</code>
 +
| installed language group ids
 +
|-
 +
| <code>LGRPID_SUPPORTED = $00000002;</code>
 +
| supported language group ids
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''Locale enumeration flag''' <code> LCID_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>LCID_INSTALLED = $00000001;</code>
 +
| installed locale ids
 +
|-
 +
| <code>LCID_SUPPORTED = $00000002;</code>
 +
| supported locale ids
 +
|-
 +
| <code>LCID_ALTERNATE_SORTS = $00000004;</code>
 +
| alternate sort locale ids
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''Code page enumeration flag''' <code> CP_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>CP_INSTALLED = $00000001;</code>
 +
| installed code page ids
 +
|-
 +
| <code>CP_SUPPORTED = $00000002;</code>
 +
| supported code page ids
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''Sorting flag''' <code> SORT_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>SORT_STRINGSORT = $00001000;</code>
 +
| use string sort method
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''Compare string return value''' <code> CSTR_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>CSTR_LESS_THAN = 1;</code>
 +
| string 1 less than string 2
 +
|-
 +
| <code>CSTR_EQUAL = 2;</code>
 +
| string 1 equal to string 2
 +
|-
 +
| <code>CSTR_GREATER_THAN = 3;</code>
 +
| string 1 greater than string 2
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''Country/Region code''' <code> CTRY_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>CTRY_DEFAULT = 0;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>CTRY_ALBANIA = 355;</code>
 +
| Albania
 +
|-
 +
| <code>CTRY_ALGERIA = 213;</code>
 +
| Algeria
 +
|-
 +
| <code>CTRY_ARGENTINA = 54;</code>
 +
| Argentina
 +
|-
 +
| <code>CTRY_ARMENIA = 374;</code>
 +
| Armenia
 +
|-
 +
| <code>CTRY_AUSTRALIA = 61;</code>
 +
| Australia
 +
|-
 +
| <code>CTRY_AUSTRIA = 43;</code>
 +
| Austria
 +
|-
 +
| <code>CTRY_AZERBAIJAN = 994;</code>
 +
| Azerbaijan
 +
|-
 +
| <code>CTRY_BAHRAIN = 973;</code>
 +
| Bahrain
 +
|-
 +
| <code>CTRY_BELARUS = 375;</code>
 +
| Belarus
 +
|-
 +
| <code>CTRY_BELGIUM = 32;</code>
 +
| Belgium
 +
|-
 +
| <code>CTRY_BELIZE = 501;</code>
 +
| Belize
 +
|-
 +
| <code>CTRY_BOLIVIA = 591;</code>
 +
| Bolivia
 +
|-
 +
| <code>CTRY_BRAZIL = 55;</code>
 +
| Brazil
 +
|-
 +
| <code>CTRY_BRUNEI_DARUSSALAM = 673;</code>
 +
| Brunei Darussalam
 +
|-
 +
| <code>CTRY_BULGARIA = 359;</code>
 +
| Bulgaria
 +
|-
 +
| <code>CTRY_CANADA = 2;</code>
 +
| Canada
 +
|-
 +
| <code>CTRY_CARIBBEAN = 1;</code>
 +
| Caribbean
 +
|-
 +
| <code>CTRY_CHILE = 56;</code>
 +
| Chile
 +
|-
 +
| <code>CTRY_COLOMBIA = 57;</code>
 +
| Colombia
 +
|-
 +
| <code>CTRY_COSTA_RICA = 506;</code>
 +
| Costa Rica
 +
|-
 +
| <code>CTRY_CROATIA = 385;</code>
 +
| Croatia
 +
|-
 +
| <code>CTRY_CZECH = 420;</code>
 +
| Czech Republic
 +
|-
 +
| <code>CTRY_DENMARK = 45;</code>
 +
| Denmark
 +
|-
 +
| <code>CTRY_DOMINICAN_REPUBLIC = 1;</code>
 +
| Dominican Republic
 +
|-
 +
| <code>CTRY_ECUADOR = 593;</code>
 +
| Ecuador
 +
|-
 +
| <code>CTRY_EGYPT = 20;</code>
 +
| Egypt
 +
|-
 +
| <code>CTRY_EL_SALVADOR = 503;</code>
 +
| El Salvador
 +
|-
 +
| <code>CTRY_ESTONIA = 372;</code>
 +
| Estonia
 +
|-
 +
| <code>CTRY_FAEROE_ISLANDS = 298;</code>
 +
| Faeroe Islands
 +
|-
 +
| <code>CTRY_FINLAND = 358;</code>
 +
| Finland
 +
|-
 +
| <code>CTRY_FRANCE = 33;</code>
 +
| France
 +
|-
 +
| <code>CTRY_GEORGIA = 995;</code>
 +
| Georgia
 +
|-
 +
| <code>CTRY_GERMANY = 49;</code>
 +
| Germany
 +
|-
 +
| <code>CTRY_GREECE = 30;</code>
 +
| Greece
 +
|-
 +
| <code>CTRY_GUATEMALA = 502;</code>
 +
| Guatemala
 +
|-
 +
| <code>CTRY_HONDURAS = 504;</code>
 +
| Honduras
 +
|-
 +
| <code>CTRY_HONG_KONG = 852;</code>
 +
| Hong Kong S.A.R., P.R.C.
 +
|-
 +
| <code>CTRY_HUNGARY = 36;</code>
 +
| Hungary
 +
|-
 +
| <code>CTRY_ICELAND = 354;</code>
 +
| Iceland
 +
|-
 +
| <code>CTRY_INDIA = 91;</code>
 +
| India
 +
|-
 +
| <code>CTRY_INDONESIA = 62;</code>
 +
| Indonesia
 +
|-
 +
| <code>CTRY_IRAN = 981;</code>
 +
| Iran
 +
|-
 +
| <code>CTRY_IRAQ = 964;</code>
 +
| Iraq
 +
|-
 +
| <code>CTRY_IRELAND = 353;</code>
 +
| Ireland
 +
|-
 +
| <code>CTRY_ISRAEL = 972;</code>
 +
| Israel
 +
|-
 +
| <code>CTRY_ITALY = 39;</code>
 +
| Italy
 +
|-
 +
| <code>CTRY_JAMAICA = 1;</code>
 +
| Jamaica
 +
|-
 +
| <code>CTRY_JAPAN = 81;</code>
 +
| Japan
 +
|-
 +
| <code>CTRY_JORDAN = 962;</code>
 +
| Jordan
 +
|-
 +
| <code>CTRY_KAZAKSTAN = 7;</code>
 +
| Kazakstan
 +
|-
 +
| <code>CTRY_KENYA = 254;</code>
 +
| Kenya
 +
|-
 +
| <code>CTRY_KUWAIT = 965;</code>
 +
| Kuwait
 +
|-
 +
| <code>CTRY_KYRGYZSTAN = 996;</code>
 +
| Kyrgyzstan
 +
|-
 +
| <code>CTRY_LATVIA = 371;</code>
 +
| Latvia
 +
|-
 +
| <code>CTRY_LEBANON = 961;</code>
 +
| Lebanon
 +
|-
 +
| <code>CTRY_LIBYA = 218;</code>
 +
| Libya
 +
|-
 +
| <code>CTRY_LIECHTENSTEIN = 41;</code>
 +
| Liechtenstein
 +
|-
 +
| <code>CTRY_LITHUANIA = 370;</code>
 +
| Lithuania
 +
|-
 +
| <code>CTRY_LUXEMBOURG = 352;</code>
 +
| Luxembourg
 +
|-
 +
| <code>CTRY_MACAU = 853;</code>
 +
| Macau S.A.R., PRC
 +
|-
 +
| <code>CTRY_MACEDONIA = 389;</code>
 +
| Former Yugoslav Republic of Macedonia
 +
|-
 +
| <code>CTRY_MALAYSIA = 60;</code>
 +
| Malaysia
 +
|-
 +
| <code>CTRY_MALDIVES = 960;</code>
 +
| Maldives
 +
|-
 +
| <code>CTRY_MEXICO = 52;</code>
 +
| Mexico
 +
|-
 +
| <code>CTRY_MONACO = 33;</code>
 +
| Principality of Monaco
 +
|-
 +
| <code>CTRY_MONGOLIA = 976;</code>
 +
| Mongolia
 +
|-
 +
| <code>CTRY_MOROCCO = 212;</code>
 +
| Morocco
 +
|-
 +
| <code>CTRY_NETHERLANDS = 31;</code>
 +
| Netherlands
 +
|-
 +
| <code>CTRY_NEW_ZEALAND = 64;</code>
 +
| New Zealand
 +
|-
 +
| <code>CTRY_NICARAGUA = 505;</code>
 +
| Nicaragua
 +
|-
 +
| <code>CTRY_NORWAY = 47;</code>
 +
| Norway
 +
|-
 +
| <code>CTRY_OMAN = 968;</code>
 +
| Oman
 +
|-
 +
| <code>CTRY_PAKISTAN = 92;</code>
 +
| Islamic Republic of Pakistan
 +
|-
 +
| <code>CTRY_PANAMA = 507;</code>
 +
| Panama
 +
|-
 +
| <code>CTRY_PARAGUAY = 595;</code>
 +
| Paraguay
 +
|-
 +
| <code>CTRY_PERU = 51;</code>
 +
| Peru
 +
|-
 +
| <code>CTRY_PHILIPPINES = 63;</code>
 +
| Republic of the Philippines
 +
|-
 +
| <code>CTRY_POLAND = 48;</code>
 +
| Poland
 +
|-
 +
| <code>CTRY_PORTUGAL = 351;</code>
 +
| Portugal
 +
|-
 +
| <code>CTRY_PRCHINA = 86;</code>
 +
| People's Republic of China
 +
|-
 +
| <code>CTRY_PUERTO_RICO = 1;</code>
 +
| Puerto Rico
 +
|-
 +
| <code>CTRY_QATAR = 974;</code>
 +
| Qatar
 +
|-
 +
| <code>CTRY_ROMANIA = 40;</code>
 +
| Romania
 +
|-
 +
| <code>CTRY_RUSSIA = 7;</code>
 +
| Russia
 +
|-
 +
| <code>CTRY_SAUDI_ARABIA = 966;</code>
 +
| Saudi Arabia
 +
|-
 +
| <code>CTRY_SERBIA = 381;</code>
 +
| Serbia
 +
|-
 +
| <code>CTRY_SINGAPORE = 65;</code>
 +
| Singapore
 +
|-
 +
| <code>CTRY_SLOVAK = 421;</code>
 +
| Slovak Republic
 +
|-
 +
| <code>CTRY_SLOVENIA = 386;</code>
 +
| Slovenia
 +
|-
 +
| <code>CTRY_SOUTH_AFRICA = 27;</code>
 +
| South Africa
 +
|-
 +
| <code>CTRY_SOUTH_KOREA = 82;</code>
 +
| Korea
 +
|-
 +
| <code>CTRY_SPAIN = 34;</code>
 +
| Spain
 +
|-
 +
| <code>CTRY_SWEDEN = 46;</code>
 +
| Sweden
 +
|-
 +
| <code>CTRY_SWITZERLAND = 41;</code>
 +
| Switzerland
 +
|-
 +
| <code>CTRY_SYRIA = 963;</code>
 +
| Syria
 +
|-
 +
| <code>CTRY_TAIWAN = 886;</code>
 +
| Taiwan
 +
|-
 +
| <code>CTRY_TATARSTAN = 7;</code>
 +
| Tatarstan
 +
|-
 +
| <code>CTRY_THAILAND = 66;</code>
 +
| Thailand
 +
|-
 +
| <code>CTRY_TRINIDAD_Y_TOBAGO = 1;</code>
 +
| Trinidad y Tobago
 +
|-
 +
| <code>CTRY_TUNISIA = 216;</code>
 +
| Tunisia
 +
|-
 +
| <code>CTRY_TURKEY = 90;</code>
 +
| Turkey
 +
|-
 +
| <code>CTRY_UAE = 971;</code>
 +
| U.A.E.
 +
|-
 +
| <code>CTRY_UKRAINE = 380;</code>
 +
| Ukraine
 +
|-
 +
| <code>CTRY_UNITED_KINGDOM = 44;</code>
 +
| United Kingdom
 +
|-
 +
| <code>CTRY_UNITED_STATES = 1;</code>
 +
| United States
 +
|-
 +
| <code>CTRY_URUGUAY = 598;</code>
 +
| Uruguay
 +
|-
 +
| <code>CTRY_UZBEKISTAN = 7;</code>
 +
| Uzbekistan
 +
|-
 +
| <code>CTRY_VENEZUELA = 58;</code>
 +
| Venezuela
 +
|-
 +
| <code>CTRY_VIET_NAM = 84;</code>
 +
| Viet Nam
 +
|-
 +
| <code>CTRY_YEMEN = 967;</code>
 +
| Yemen
 +
|-
 +
| <code>CTRY_ZIMBABWE = 263;</code>
 +
| Zimbabwe
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''Primary language Id value''' <code> LANG_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>LANG_NEUTRAL = $00;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>LANG_ENGLISH = $09;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;">
 +
<div style="font-size: 14px; padding-left: 12px;">'''Sublanguage Id value''' <code> SUBLANG_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>SUBLANG_NEUTRAL = $00;</code>
 +
| language neutral
 +
|-
 +
| <code>SUBLANG_DEFAULT = $01;</code>
 +
| user default
 +
|-
 +
| <code>SUBLANG_SYS_DEFAULT = $02;</code>
 +
| system default
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>SUBLANG_ENGLISH_US = $01;</code>
 +
| English (USA)
 
|-
 
|-
 
|}
 
|}
Line 419: Line 967:
 
----
 
----
  
''To be documented''
+
 
 +
'''Locale Id'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>LCID = DWORD;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>PLCID = ^LCID;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Language Id'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>LANGID = Word;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>PLANGID = ^LANGID;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Language group Id'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>LGRPID = DWORD;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Locale type'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>LCTYPE = DWORD;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Calendar type'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CALTYPE = DWORD;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 +
'''Calendar Id'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CALID = DWORD;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''CP information'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>CPINFO = _cpinfo;</code>
 +
 
 +
<code>TCpInfo = CPINFO;</code>
 +
 
 +
<code>PCpInfo = LPCPINFO;</code>
 +
 
 +
<code>LPCPINFO = ^CPINFO;</code>
 +
 
 +
<code>_cpinfo = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>MaxCharSize: UINT;</code>
 +
| max length (in bytes) of a AnsiChar
 +
|-
 +
| <code>DefaultChar: array [0..MAX_DEFAULTCHAR - 1] of BYTE;</code>
 +
| default character
 +
|-
 +
| <code>LeadByte: array [0..MAX_LEADBYTES - 1] of BYTE;</code>
 +
| lead byte ranges
 +
|-
 +
|}
 +
</div></div> 
 +
 
 +
'''CP info extended'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>CPINFOEX = _cpinfoex;</code>
 +
 
 +
<code>TCpInfoEx = CPINFOEX;</code>
 +
 
 +
<code>PCpInfoEx = LPCPINFOEX;</code>
 +
 
 +
<code>LPCPINFOEX = ^CPINFOEX;</code>
 +
 
 +
<code>_cpinfoex = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>MaxCharSize: UINT;</code>
 +
| max length (in bytes) of a AnsiChar
 +
|-
 +
| <code>DefaultChar: array [0..MAX_DEFAULTCHAR - 1] of BYTE;</code>
 +
| default character (MB)
 +
|-
 +
| <code>LeadByte: array [0..MAX_LEADBYTES - 1] of BYTE;</code>
 +
| lead byte ranges
 +
|-
 +
| <code>UnicodeDefaultChar: WCHAR;</code>
 +
| default character (Unicode)
 +
|-
 +
| <code>CodePage: UINT;</code>
 +
| code page Id
 +
|-
 +
| <code>CodePageName: array [0..MAX_PATH - 1] of AnsiChar;</code>
 +
| code page name (Ansi)
 +
|-
 +
|}
 +
</div></div> 
 +
 
 +
'''Code table'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PCodeTable = ^TCodeTable;</code>
 +
 
 +
<code>TCodeTable = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: Code Table - The OEM/ANSI to UNICODE Values of a Code Page
 +
|-
 +
| <code>MaxCharSize:UINT;</code>
 +
| Max Length (Bytes) of a Char
 +
|-
 +
| <code>DefaultChar:array[0..MAX_DEFAULTCHAR - 1] of Byte;</code>
 +
| Default Character
 +
|-
 +
| <code>LeadByte:array[0..MAX_LEADBYTES - 1] of Byte;</code>
 +
| Lead Byte Ranges
 +
|-
 +
| <code>Values:array[$00..$FF] of Word;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div> 
 +
 +
'''Translation table'''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PTransTable = ^TTransTable;</code>
 +
 
 +
<code>TTransTable = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: Trans Table - The OEM/ANSI to ANSI/OEM Values of a Code Page
 +
|-
 +
| <code>TransID:Word;</code>
 +
| Translate Code Page
 +
|-
 +
| <code>Values:array[$00..$FF] of Word;</code>
 +
| Word to allow for DBCS
 +
|-
 +
|}
 +
</div></div> 
 +
 +
'''Lowercase table'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PLowerTable = ^TLowerTable;</code>
 +
 
 +
<code>TLowerTable = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: Lower Table - Upper to Lower case values of a Code Page
 +
|-
 +
| <code>LowerID:Word;</code>
 +
| Lowercase Code Page
 +
|-
 +
| <code>Values:array[$00..$FF] of Word;</code>
 +
| Word to allow for DBCS
 +
|-
 +
|}
 +
</div></div> 
 +
 +
'''Uppercase table'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PUpperTable = ^TUpperTable;</code>
 +
 
 +
<code>TUpperTable = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: Upper Table - Lower to Upper case values of a Code Page
 +
|-
 +
| <code>UpperID:Word;</code>
 +
| Uppercase Code Page
 +
|-
 +
| <code>Values:array[$00..$FF] of Word;</code>
 +
| Word to allow for DBCS
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Unicode table'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PUnicodeTable = ^TUnicodeTable;</code>
 +
 
 +
<code>TUnicodeTable = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: Unicode Table - The UNICODE to OEM/ANSI Values of a Code Page
 +
|-
 +
| <code>Values:array[$0000..$FFFF] of Word;</code>
 +
| Word to allow for DBCS
 +
|-
 +
|}
 +
</div></div> 
 +
 +
'''Lead bytes'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PLeadBytes = ^TLeadBytes;</code>
 +
 
 +
<code>TLeadBytes = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: Lead Bytes - The extended Page Tables for DBCS Pages
 +
|-
 +
| <code>Tables:array[$00..$FF] of PCodeTable;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Code page'''
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PCodePage = ^TCodePage;</code>
 +
 
 +
<code>TCodePage = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Note: Each Code Table provides the OEM to UNICODE Values. To convert back use the main Unicode Table in the Code Page which was populated when the Code Page was loaded.
 +
|-
 +
|colspan="2"|Note: Code Page - The actual information for an OEM/ANSI Code Page
 +
|-
 +
| <code>PageID:Word;</code>
 +
| Code Page ID (eg 437 or 1252)
 +
|-
 +
| <code>Handle:THandle;</code>
 +
| Handle of Code Page Module
 +
|-
 +
| <code>CodeTable:PCodeTable;</code>
 +
| The OEM/ANSI Values
 +
|-
 +
| <code>LeadBytes:PLeadBytes;</code>
 +
| The Lead Byte Tables
 +
|-
 +
| <code>TransTable:PTransTable;</code>
 +
| The OEM <-> ANSI Values
 +
|-
 +
| <code>LowerTable:PLowerTable;</code>
 +
| The Upper to Lower Values
 +
|-
 +
| <code>UpperTable:PUpperTable;</code>
 +
| The Lower to Upper Values
 +
|-
 +
| <code>UnicodeTable:PUnicodeTable;</code>
 +
| The UNICODE Values
 +
|-
 +
| <code>PrevPage:PCodePage;</code>
 +
| Prev Code Page
 +
|-
 +
| <code>NextPage:PCodePage;</code>
 +
| Next Code Page
 +
|-
 +
|}
 +
</div></div>
 +
<br />
  
 
=== Public variables ===
 
=== Public variables ===
 
----
 
----
  
''To be documented''
+
 
 +
'''Locale specific variables'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>OemPage:PCodePage;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>AnsiPage:PCodePage;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>DefaultPage:PCodePage;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CodePageLock:TPlatformLock;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
<br />
  
 
=== Function declarations ===
 
=== Function declarations ===
Line 438: Line 1,301:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 453: Line 1,316:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 465: Line 1,328:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 477: Line 1,340:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 489: Line 1,352:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 501: Line 1,364:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 513: Line 1,376:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 525: Line 1,388:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 537: Line 1,400:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 549: Line 1,412:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 561: Line 1,424:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 573: Line 1,436:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 585: Line 1,448:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 597: Line 1,460:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 609: Line 1,472:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 621: Line 1,484:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 633: Line 1,496:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 645: Line 1,508:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function GetSystemDefaultLangID: LANGID;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the System Default Language Identifier (Combined Primary and Sub language Identifiers)</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| System and User values are the same for Ultibo
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function GetUserDefaultLangID: LANGID;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the System Default Language Identifier (Combined Primary and Sub language Identifiers)</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Note
 +
| System and User values are the same for Ultibo
 
|-
 
|-
 
|}
 
|}
Line 660: Line 1,547:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 675: Line 1,562:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 687: Line 1,574:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 699: Line 1,586:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 711: Line 1,598:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 723: Line 1,610:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 735: Line 1,622:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 747: Line 1,634:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 759: Line 1,646:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 771: Line 1,658:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-

Latest revision as of 04:37, 31 August 2021

Return to Unit Reference


Description


Ultibo Locale Interface unit

This unit implements the locale support for Ultibo and provides the code page support for the WideStringManager/UnicodeStringManager interface for the RTL.

This unit provides compatible implementations of the following functions:

  • ConvertDefaultLocale
  • EnumCodePagesProc
  • EnumLocalesProc
  • EnumTimeFormats
  • GetCPInfo
  • GetNumberFormat
  • GetSystemDefaultLangID
  • GetUserDefaultLangID
  • IsValidLocale
  • GetConsoleOutputCP
  • EnumCalendarInfo
  • EnumDateFormats
  • EnumSystemCodePages
  • EnumTimeFormatsProc
  • GetCurrencyFormat
  • GetLocaleInfo
  • GetSystemDefaultLCID
  • GetUserDefaultLCID
  • SetLocaleInfo
  • SetConsoleCP
  • EnumCalendarInfoProc
  • EnumDateFormatsProc
  • EnumSystemLocales
  • GetACP
  • GetDateFormat
  • GetOEMCP
  • GetTimeFormat
  • IsValidCodePage
  • GetConsoleCP
  • SetConsoleOutputCP


The following functions are implemented by the Threads unit:

  • GetThreadLocale (ThreadGetLocale) (GetThreadLocale is exposed in the Ultibo unit)
  • SetThreadLocale (ThreadSetLocale) (SetThreadLocale is exposed in the Ultibo unit)

Most of the above are currently not implemented.


OEM Code Page defaults to 437 (OEM United States)

ANSI Code Page defaults to 1252 (ANSI Latin 1; Western European (Windows))


See also: https://msdn.microsoft.com/en-us/library/windows/desktop/dd319081%28v=vs.85%29.aspx

Constants



[Expand]
Default code page CP_*


[Expand]
Code page identifier CP_OEM_*, CP_ANSI_*


[Expand]
Default locale LOCALE_*


[Expand]
String length maximum MAX_*


[Expand]
MBCS and Unicode translation flag MB_*, WC_*


[Expand]
Character type flag CT_*


[Expand]
CType 1 flag bit C1_*


[Expand]
CType 2 flag bit C2_*


[Expand]
CType 3 flag bit C3_*


[Expand]
String flag NORM_*


[Expand]
Locale independent mapping flag MAP_*


[Expand]
Locale dependent mapping flag LCMAP_*


[Expand]
Language group enumeration flag LGRPID_*


[Expand]
Locale enumeration flag LCID_*


[Expand]
Code page enumeration flag CP_*


[Expand]
Sorting flag SORT_*


[Expand]
Compare string return value CSTR_*


[Expand]
Country/Region code CTRY_*


[Expand]
Primary language Id value LANG_*


[Expand]
Sublanguage Id value SUBLANG_*


Type definitions



Locale Id

LCID = DWORD;
PLCID = ^LCID;

Language Id

LANGID = Word;
PLANGID = ^LANGID;

Language group Id

LGRPID = DWORD;

Locale type

LCTYPE = DWORD;

Calendar type

CALTYPE = DWORD;

Calendar Id

CALID = DWORD;

CP information

[Expand]

CPINFO = _cpinfo;

TCpInfo = CPINFO;

PCpInfo = LPCPINFO;

LPCPINFO = ^CPINFO;

_cpinfo = record

CP info extended

[Expand]

CPINFOEX = _cpinfoex;

TCpInfoEx = CPINFOEX;

PCpInfoEx = LPCPINFOEX;

LPCPINFOEX = ^CPINFOEX;

_cpinfoex = record

Code table

[Expand]

PCodeTable = ^TCodeTable;

TCodeTable = record

Translation table

[Expand]

PTransTable = ^TTransTable;

TTransTable = record

Lowercase table

[Expand]

PLowerTable = ^TLowerTable;

TLowerTable = record

Uppercase table

[Expand]

PUpperTable = ^TUpperTable;

TUpperTable = record

Unicode table

[Expand]

PUnicodeTable = ^TUnicodeTable;

TUnicodeTable = record

Lead bytes

[Expand]

PLeadBytes = ^TLeadBytes;

TLeadBytes = record

Code page

[Expand]

PCodePage = ^TCodePage;

TCodePage = record


Public variables



Locale specific variables

OemPage:PCodePage;
AnsiPage:PCodePage;
DefaultPage:PCodePage;
CodePageLock:TPlatformLock;


Function declarations



Initialization functions

[Expand]
procedure LocaleInit;
Description: To be documented


Locale functions

[Expand]
function IsValidCodePage(CodePage:UINT):BOOL;
Description: To be documented


[Expand]
function GetACP:UINT;
Description: To be documented


[Expand]
function GetOEMCP:UINT;
Description: To be documented


[Expand]
function SetACP(CodePage:UINT):BOOL;
Description: To be documented


[Expand]
function SetOEMCP(CodePage:UINT):BOOL;
Description: To be documented


[Expand]
function GetConsoleCP:UINT;
Description: To be documented


[Expand]
function SetConsoleCP(wCodePageID:UINT):BOOL;
Description: To be documented


[Expand]
function GetConsoleOutputCP:UINT;
Description: To be documented


[Expand]
function SetConsoleOutputCP(wCodePageID:UINT):BOOL;
Description: To be documented


[Expand]
function GetCPInfo(CodePage:UINT; var lpCPInfo:TCPInfo):BOOL;
Description: To be documented


[Expand]
function GetCPInfoEx(CodePage:UINT; dwFlags:DWORD; var lpCPInfoEx:CPINFOEXA):BOOL;
Description: To be documented


[Expand]
function GetCPInfoExA(CodePage:UINT; dwFlags:DWORD; var lpCPInfoEx:CPINFOEXA):BOOL;
Description: To be documented


[Expand]
function GetCPInfoExW(CodePage:UINT; dwFlags:DWORD; var lpCPInfoEx:CPINFOEXW):BOOL;
Description: To be documented


[Expand]
function IsValidLocale(Locale:LCID; dwFlags:DWORD):BOOL;
Description: To be documented


[Expand]
function GetSystemDefaultLCID:LCID;
Description: To be documented


[Expand]
function GetUserDefaultLCID:LCID;
Description: To be documented


[Expand]
function SetSystemDefaultLCID(Locale:LCID):BOOL;
Description: To be documented


[Expand]
function GetSystemDefaultLangID: LANGID;
Description: Get the System Default Language Identifier (Combined Primary and Sub language Identifiers)


[Expand]
function GetUserDefaultLangID: LANGID;
Description: Get the System Default Language Identifier (Combined Primary and Sub language Identifiers)


RTL unicode string manager functions

[Expand]
function SysGetStandardCodePage(const stdcp:TStandardCodePageEnum):TSystemCodePage;
Description: To be documented


Locale helper functions

[Expand]
function MapPage(CodePage:UINT):Word;
Description: Map a default code page to the actual current page


[Expand]
function GetPage(PageID:Word):PCodePage;
Description: Find the requested page in the linked list


[Expand]
function CheckPage(Page:PCodePage):Boolean;
Description: Check that the Page supplied is part of the Linked list


[Expand]
function LinkPage(Page:PCodePage):Boolean;
Description: Link Page to Prev,Next Siblings and Adjust First/Last


[Expand]
function UnlinkPage(Page:PCodePage):Boolean;
Description: Unlink Page from Prev,Next Siblings and Adjust First/Last


[Expand]
function LoadPage(PageID:Word; Table:PCodeTable; Lower:PLowerTable; Upper:PUpperTable):Boolean;
Description: Load a code table and allocate memory to create a code page


[Expand]
function UnloadPage(PageID:Word; Page:PCodePage):Boolean;
Description: Unload a code page and release allocated memory


[Expand]
function DefaultTrans(PageID,TransID:Word):Boolean;
Description: To be documented


[Expand]
function InstallTrans(PageID:Word; Table:PTransTable):Boolean;
Description: To be documented


Return to Unit Reference