summaryrefslogtreecommitdiffstats
path: root/i18nlangtag/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'i18nlangtag/README.md')
-rw-r--r--i18nlangtag/README.md143
1 files changed, 143 insertions, 0 deletions
diff --git a/i18nlangtag/README.md b/i18nlangtag/README.md
new file mode 100644
index 000000000..8bb608c24
--- /dev/null
+++ b/i18nlangtag/README.md
@@ -0,0 +1,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`
+