summaryrefslogtreecommitdiff
path: root/i18nlangtag/README.md
blob: 8bb608c24e623b157f8aec6c2428c16432e5aa4e (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
# Language Tags

Code for language tags, LanguageTag wrapper for liblangtag and converter between BCP47 language tags, Locale(Language,Country,Variant) and MS-LangIDs.

Basic functionality used by almost every other module including comphelper, so even don't use that string helpers in this code to not create circular dependencies. Stick with sal and rtl!



If Microsoft introduced a new LCID for a locale that we previously defined as `LANGUAGE_USER_...`, for example `LANGUAGE_CATALAN_VALENCIAN` that we had as `LANGUAGE_USER_CATALAN_VALENCIAN`:

* `include/i18nlangtag/lang.h`
    * add the new `LANGUAGE_...` value as defined by MS, here `LANGUAGE_CATALAN_VALENCIAN`
    * rename the `LANGUAGE_USER_...` definition to `LANGUAGE_OBSOLETE_USER_...`, here `LANGUAGE_USER_CATALAN_VALENCIAN` to `LANGUAGE_OBSOLETE_USER_CATALAN_VALENCIAN`
    * add a `#define LANGUAGE_USER_CATALAN_VALENCIAN LANGUAGE_CATALAN_VALENCIAN`
        * so `svtools/source/misc/langtab.src` (where the defined name is an identifier) and other places using `LANGUAGE_USER_CATALAN_VALENCIAN` do not need to be changed

* `i18nlangtag/source/isolang/isolang.cxx`
    * insert a mapping with `LANGUAGE_CATALAN_VALENCIAN` before (!) the existing `LANGUAGE_USER_CATALAN_VALENCIAN`
    * rename the `LANGUAGE_USER_CATALAN_VALENCIAN` to `LANGUAGE_OBSOLETE_USER_CATALAN_VALENCIAN`
        * so converting the tag maps to the new `LANGUAGE_CATALAN_VALENCIAN` and converting the old `LANGUAGE_OBSOLETE_USER_CATALAN_VALENCIAN` still maps to the tag.

* `i18nlangtag/source/isolang/mslangid.cxx`
    * add an entry to `MsLangId::getReplacementForObsoleteLanguage()` to convert `LANGUAGE_OBSOLETE_USER_CATALAN_VALENCIAN` to `LANGUAGE_CATALAN_VALENCIAN`


When changing a (translation's) language tag (for example, `ca-XV` to `ca-valencia` or `sh` to `sr-Latn`):

* `solenv/inc/langlist.mk`
    * replace the tag and sort alphabetically

* in `translations/source` do  `git mv old-tag new-tag`
    * note that translations is a git submodule so <https://wiki.documentfoundation.org/Development/Submodules applies>

* `i18nlangtag/source/isolang/isolang.cxx`
    * maintain the old tag's mapping entry in `aImplIsoLangEntries` to be able to read existing documents using that code
    * add the new tag's mapping to `aImplBcp47CountryEntries` or `aImplIsoLangScriptEntries`
    * change `mnOverride` from 0 to `kSAME` in `aImplIsoLangScriptEntries` or `aImplIsoLangEntries`

* `i18nlangtag/source/languagetag/languagetag.cxx`
    * add the new tag's fallback strings to the fallback of the old tag in `LanguageTag::getFallbackStrings()`

* `i18nlangtag/qa/cppunit/test_languagetag.cxx`
    * add a unit test for the new tag and old tag

* `l10ntools/source/ulfconv/msi-encodinglist.txt`
    * replace the tag and sort alphabetically

* `setup_native/source/packinfo/spellchecker_selection.txt`
    * replace the tag and sort alphabetically

If locale data exists:

* `i18npool/source/localedata/data/*.xml` for example `i18npool/source/localedata/data/sh_RS.xml`
    * in the `<LC_INFO>` element
        * change `<LangID>` to `qlt`
        * after the `<Country>` element add a `<Variant>` element with the new full BCP 47 tag, for example `sr-Latn-RS`
            * note that `<Variant>` has no `<VariantID>` or `<DefaultName>` child elements
    * if any of the other `*.xml` files reference the locale in a `ref="..."` attribute, change those too; note that these references use '`_`' underscore instead of '`-`' hyphen just like the file names do
    * rename `sh_RS.xml` to `sr_Latn_RS.xml`, `git mv sh_RS.xml sr_Latn_RS.xml`

* `i18npool/source/localedata/localedata.cxx`
    * in `aLibTable` change the entry from old `sh_RS` to new `sr_Latn_RS`, do not sort the table

* `i18npool/Library_localedata_*.mk`     for example `i18npool/Library_localedata_euro.mk`
    * change the entry for the changed `.xml` file, for example `CustomTarget/i18npool/localedata/localedata_sh_RS` to `CustomTarget/i18npool/localedata/localedata_sr_Latn_RS`, sort the list alphabetically

If dictionary exists:

* `dictionaries/*/dictionaries.xcu`      for example `dictionaries/sr/dictionaries.xcu`
    * change the affected `<node oor:name="...">` elements to something corresponding, for example `<node oor:name="HunSpellDic_sh" ...>` to `<node oor:name="HunSpellDic_sr_Latn" ...>`
    * in the `Locales` properties change the `<value>` element, for example `<value>sh-RS</value>` to `<value>sr-Latn-RS</value>`

If dictionary is to be renamed, for example `ku-TR` to `kmr-Latn`:

* `dictionaries/*/*`                     for example `dictionaries/ku_TR/*`
    * if appropriate rename `*.dic` and `*.aff` files, for example `ku_TR.dic` to `kmr_Latn.dic` and `ku_TR.aff` to `kmr_Latn.aff`
* `dictionaries/Dictionary_*.mk`         for example `dictionaries/Dictionary_ku_TR.mk`
    * rename file, for example to `Dictionary_kmr_Latn.mk`
    * change all locale dependent file names and target, for example `ku_TR` to `kmr_Latn` AND `ku-TR` to `kmr-Latn`; note '`-`' and '`_`' separators, both are used!
* `dictionaries/Module_dictionaries.mk`
    * change `Dictionary_*` (`Dictionary_ku-TR` to `Dictionary_kmr-Latn`) and sort alphabetically
* `scp2/source/ooo/common_brand.scp`
    * `DosName = "dict-ku-TR";`
        * change to `"dict-kmr-Latn"`
* `scp2/source/ooo/file_ooo.scp`
    * File `gid_File_Extension_Dictionary_Ku_Tr`
        * change to `gid_File_Extension_Dictionary_Kmr_Latn`
    * `Name = "Dictionary/dict-ku-TR.filelist";`
        * change to `"Dictionary/dict-kmr-Latn.filelist"`
* `scp2/source/ooo/module_ooo.scp`
    * Module `gid_Module_Root_Extension_Dictionary_Ku_Tr`
        * change to `gid_Module_Root_Extension_Dictionary_Kmr_Latn`
    * `MOD_NAME_DESC` ( `MODULE_EXTENSION_DICTIONARY_KU_TR` );
        * change to `MODULE_EXTENSION_DICTIONARY_KMR_LATN`
    * `Files = (gid_File_Extension_Dictionary_Ku_Tr);`
        * change to `gid_File_Extension_Dictionary_Kmr_Latn`
    * `Spellcheckerlanguage = "ku-TR";`
        * change to `"kmr-Latn"`
* `scp2/source/ooo/module_ooo.ulf`
    * [`STR_NAME_MODULE_EXTENSION_DICTIONARY_KU_TR`]
        * change to `STR_NAME_MODULE_EXTENSION_DICTIONARY_KMR_LATN`
    * `en-US = "Kurdish (Turkey)"`
        * change to `"Kurdish, Northern, Latin script"`
    * [`STR_DESC_MODULE_EXTENSION_DICTIONARY_KU_TR`]
        * change to `STR_DESC_MODULE_EXTENSION_DICTIONARY_KMR_LATN`
    * `en-US = "Kurdish (Turkey)` spelling dictionary"
        * change to `"Kurdish, Northern, Latin script spelling dictionary"`
* `setup_native/source/packinfo/packinfo_office.txt`
    * `module = "gid_Module_Root_Extension_Dictionary_Ku_Tr"`
        * change to `"gid_Module_Root_Extension_Dictionary_Kmr_Latn"`
    * `solarispackagename = "%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-ku-TR"`
        * change to `"...-dict-kmr-Latn"`
    * `packagename = "%UNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-ku-TR"`
        * change to `"...-dict-kmr-Latn"`
    * `description = "Ku-TR dictionary for %PRODUCTNAME %PRODUCTVERSION"`
        * change to `"Kmr-Latn dictionary ..."`

If `extras` exist, for example `extras/source/autotext/*`:

* `extras/Package_autocorr.mk`
    * replace `acor_*` entry, for example `acor_sh-RS.dat` to `acor_sr-Latn-RS.dat`, sort alphabetically

* `extras/CustomTarget_autocorr.mk`
    * in `extras_AUTOCORR_LANGS change` map entry, for example `sh-RS:sh-RS` to `sr-Latn-RS:sr-Latn-Rs`
    * in `extras_AUTOCORR_XMLFILES` change directory entries, for example `sh-RS/acor/DocumentList.xml` to `sr-Latn-RS/acor/DocumentList.xml`

* rename files accordingly, for example in `extras/source/autotext/lang/`  `git mv sh-RS sr-Latn-RS`

If `helpcontent` exists:

* `helpcontent2/source/auxiliary/*/*`       for example `helpcontent2/source/auxiliary/sh/*`
    * change `Language=...`, for example `Language=sh` to `Language=sr-Latn` in `helpcontent2/source/auxiliary/sh/*.cfg`
    * rename `helpcontent2/source/auxiliary/sh/`  `git mv sh sr-Latn`

For language packs:

* `scp2/source/ooo/module_langpack.ulf`
* `scp2/source/accessories/module_templates_accessories.ulf`
* `scp2/source/accessories/module_samples_accessories.ulf`
* `scp2/source/extensions/module_extensions_sun_templates.ulf`

    * If the upper-cased tag appears in any of these, replace it, for example `STR_NAME_MODULE_LANGPACK_SH` to `STR_NAME_MODULE_LANGPACK_SR_LATN`