diff options
Diffstat (limited to 'i18nlangtag/README.md')
-rw-r--r-- | i18nlangtag/README.md | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/i18nlangtag/README.md b/i18nlangtag/README.md new file mode 100644 index 000000000000..dcdb7be23144 --- /dev/null +++ b/i18nlangtag/README.md @@ -0,0 +1,141 @@ +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 |