summaryrefslogtreecommitdiff
path: root/include/i18nlangtag
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2013-09-17 21:43:18 +0200
committerEike Rathke <erack@redhat.com>2013-09-17 21:45:16 +0200
commitaf2abfe3547bf0bfdc52ea2e45a35bbc24342761 (patch)
tree0e54f263750ca371e429fef9e58105b0f506e17c /include/i18nlangtag
parentd87cb77b42b591b1333aacd60e107514d6e20864 (diff)
documentation and define on-the-fly ID ranges
Change-Id: I7d42480b0e0d57634647a002c55bd0c3c968bb28
Diffstat (limited to 'include/i18nlangtag')
-rw-r--r--include/i18nlangtag/lang.h45
1 files changed, 39 insertions, 6 deletions
diff --git a/include/i18nlangtag/lang.h b/include/i18nlangtag/lang.h
index 9399850e24c3..eb2e504ea296 100644
--- a/include/i18nlangtag/lang.h
+++ b/include/i18nlangtag/lang.h
@@ -54,14 +54,18 @@
And of course 2 lists aren't enough, so Windows Vista needs an extra one.
Which at least seems to include values of other versions of Windows.
Language Identifier Constants and Strings
- http://msdn2.microsoft.com/en-us/library/ms776294.aspx
+ http://msdn.microsoft.com/en-us/library/ms776294.aspx
- Hey, yet another list, maybe this one will not move around? It seems to be
- quite complete..
- Language Identifier Constants and Strings (Windows)
- http://msdn.microsoft.com/en-us/library/dd318693(VS.85).aspx
+ ! Hey, yet another list, maybe this one will not move around? It seems to be
+ ! quite complete..
+ ! Language Identifier Constants and Strings (Windows)
+ ! http://msdn.microsoft.com/en-us/library/dd318693.aspx
+ !
+ ! Use THAT ^^^ as of 2013-09-17 it includes also Windows 8
+ For completeness, you can never have enough lists:
List of supported locale identifiers in Word
+ Applies to Microsoft Word 2000 and 2002
http://support.microsoft.com/default.aspx?scid=KB;en-us;q221435
*/
@@ -380,7 +384,10 @@ typedef unsigned short LanguageType;
*! LANGUAGE_SYSTEM and then to effective system language */
#define LANGUAGE_PROCESS_OR_USER_DEFAULT 0x0400
-/* And now the extensions we define, valid from
+
+/* And now the extensions we define,
+ * with primary language IDs from 0x200 to 0x3FF valid in blocks from
+ *
* 0x0610 to 0x07FF with sublanguage ID 0x01 (default)
* 0x0A00 to 0x0BFF with sublanguage ID 0x02
* ...
@@ -390,6 +397,23 @@ typedef unsigned short LanguageType;
* 0xFA00 to 0xFBFF with sublanguage ID 0x3E
* 0xFE00 to 0xFFFF with sublanguage ID 0x3F
*
+ * Of which we define reserved blocks:
+ * All primary language IDs 0x3E0 to 0x3FF with any sublanguage ID, not to be
+ * assigned as user-defined IDs:
+ *
+ * 0x07E0 to 0x07FF with sublanguage ID 0x01, first on-the-fly block
+ * 0x0BE0 to 0x0BFF with sublanguage ID 0x02, second on-the-fly block
+ * ...
+ * 0x83E0 to 0x83FF with sublanguage ID 0x20
+ * 0x87E0 to 0x87FF with sublanguage ID 0x21
+ * ...
+ * 0xFBE0 to 0xFBFF with sublanguage ID 0x3E, last on-the-fly block
+ * 0xFFE0 to 0xFFFF with sublanguage ID 0x3F, 32 privateuse and specials
+ *
+ * This leaves room for 480 user-defined primary language IDs (instead of 512)
+ * with primary bitmask comparability, and 1984 on-the-fly IDs (instead of 0)
+ * with arbitrary assignment.
+ *
* Obsolete OOo user defines now have other values assigned by MS, and
* different name. Mapping an obsolete value to ISO code should work provided
* that such a mapping exists in i18nlangtag/source/isolang/isolang.cxx, but
@@ -560,6 +584,15 @@ typedef unsigned short LanguageType;
#define LANGUAGE_USER_NGAEBERE 0x0689
#define LANGUAGE_USER_ENGLISH_UK_OED 0x8C09 /* makeLangID( 0x23, getPrimaryLanguage( LANGUAGE_ENGLISH_UK)) */
+
+/* Primary language ID range for on-the-fly assignment. */
+#define LANGUAGE_ON_THE_FLY_START 0x03E0
+#define LANGUAGE_ON_THE_FLY_END 0x03FF
+/* Sublanguage ID range for on-the-fly assignment. */
+#define LANGUAGE_ON_THE_FLY_SUB_START 0x01
+#define LANGUAGE_ON_THE_FLY_SUB_END 0x3E
+
+/* 0xFFE0 to 0xFFFF reserved for privateuse and specials. */
#define LANGUAGE_USER_PRIV_JOKER 0xFFEB /* privateuse "*" (sic! bad! nasty!), primary 0x3eb, sub 0x3f */
#define LANGUAGE_USER_PRIV_COMMENT 0xFFEC /* privateuse "x-comment", primary 0x3ec, sub 0x3f */
#define LANGUAGE_USER_PRIV_DEFAULT 0xFFED /* privateuse "x-default", primary 0x3ed, sub 0x3f */