Change-Id: Icf7452b2aef3ecae8ccdbcd4a66ab8b121a8120c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120814 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Jenkins
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, hereLANGUAGE_CATALAN_VALENCIAN - rename the
LANGUAGE_USER_...definition toLANGUAGE_OBSOLETE_USER_..., hereLANGUAGE_USER_CATALAN_VALENCIANtoLANGUAGE_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 usingLANGUAGE_USER_CATALAN_VALENCIANdo not need to be changed
- so
- add the new
-
i18nlangtag/source/isolang/isolang.cxx- insert a mapping with
LANGUAGE_CATALAN_VALENCIANbefore (!) the existingLANGUAGE_USER_CATALAN_VALENCIAN - rename the
LANGUAGE_USER_CATALAN_VALENCIANtoLANGUAGE_OBSOLETE_USER_CATALAN_VALENCIAN- so converting the tag maps to the new
LANGUAGE_CATALAN_VALENCIANand converting the oldLANGUAGE_OBSOLETE_USER_CATALAN_VALENCIANstill maps to the tag.
- so converting the tag maps to the new
- insert a mapping with
-
i18nlangtag/source/isolang/mslangid.cxx- add an entry to
MsLangId::getReplacementForObsoleteLanguage()to convertLANGUAGE_OBSOLETE_USER_CATALAN_VALENCIANtoLANGUAGE_CATALAN_VALENCIAN
- add an entry to
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/sourcedogit 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
aImplIsoLangEntriesto be able to read existing documents using that code - add the new tag's mapping to
aImplBcp47CountryEntriesoraImplIsoLangScriptEntries - change
mnOverridefrom 0 tokSAMEinaImplIsoLangScriptEntriesoraImplIsoLangEntries
- maintain the old tag's mapping entry in
-
i18nlangtag/source/languagetag/languagetag.cxx- add the new tag's fallback strings to the fallback of the old tag in
LanguageTag::getFallbackStrings()
- add the new tag's fallback strings to the fallback of the old tag in
-
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/*.xmlfor examplei18npool/source/localedata/data/sh_RS.xml- in the
<LC_INFO>element- change
<LangID>toqlt - after the
<Country>element add a<Variant>element with the new full BCP 47 tag, for examplesr-Latn-RS- note that
<Variant>has no<VariantID>or<DefaultName>child elements
- note that
- change
- if any of the other
*.xmlfiles reference the locale in aref="..."attribute, change those too; note that these references use '_' underscore instead of '-' hyphen just like the file names do - rename
sh_RS.xmltosr_Latn_RS.xml,git mv sh_RS.xml sr_Latn_RS.xml
- in the
-
i18npool/source/localedata/localedata.cxx- in
aLibTablechange the entry from oldsh_RSto newsr_Latn_RS, do not sort the table
- in
-
i18npool/Library_localedata_*.mkfor examplei18npool/Library_localedata_euro.mk- change the entry for the changed
.xmlfile, for exampleCustomTarget/i18npool/localedata/localedata_sh_RStoCustomTarget/i18npool/localedata/localedata_sr_Latn_RS, sort the list alphabetically
- change the entry for the changed
If dictionary exists:
dictionaries/*/dictionaries.xcufor exampledictionaries/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
Localesproperties change the<value>element, for example<value>sh-RS</value>to<value>sr-Latn-RS</value>
- change the affected
If dictionary is to be renamed, for example ku-TR to kmr-Latn:
dictionaries/*/*for exampledictionaries/ku_TR/*- if appropriate rename
*.dicand*.afffiles, for exampleku_TR.dictokmr_Latn.dicandku_TR.afftokmr_Latn.aff
- if appropriate rename
dictionaries/Dictionary_*.mkfor exampledictionaries/Dictionary_ku_TR.mk- rename file, for example to
Dictionary_kmr_Latn.mk - change all locale dependent file names and target, for example
ku_TRtokmr_LatnANDku-TRtokmr-Latn; note '-' and '_' separators, both are used!
- rename file, for example to
dictionaries/Module_dictionaries.mk- change
Dictionary_*(Dictionary_ku-TRtoDictionary_kmr-Latn) and sort alphabetically
- change
scp2/source/ooo/common_brand.scpDosName = "dict-ku-TR";- change to
"dict-kmr-Latn"
- change to
scp2/source/ooo/file_ooo.scp- File
gid_File_Extension_Dictionary_Ku_Tr- change to
gid_File_Extension_Dictionary_Kmr_Latn
- change to
Name = "Dictionary/dict-ku-TR.filelist";- change to
"Dictionary/dict-kmr-Latn.filelist"
- change to
- File
scp2/source/ooo/module_ooo.scp- Module
gid_Module_Root_Extension_Dictionary_Ku_Tr- change to
gid_Module_Root_Extension_Dictionary_Kmr_Latn
- change to
MOD_NAME_DESC(MODULE_EXTENSION_DICTIONARY_KU_TR);- change to
MODULE_EXTENSION_DICTIONARY_KMR_LATN
- change to
Files = (gid_File_Extension_Dictionary_Ku_Tr);- change to
gid_File_Extension_Dictionary_Kmr_Latn
- change to
Spellcheckerlanguage = "ku-TR";- change to
"kmr-Latn"
- change to
- Module
scp2/source/ooo/module_ooo.ulf- [
STR_NAME_MODULE_EXTENSION_DICTIONARY_KU_TR]- change to
STR_NAME_MODULE_EXTENSION_DICTIONARY_KMR_LATN
- change to
en-US = "Kurdish (Turkey)"- change to
"Kurdish, Northern, Latin script"
- change to
- [
STR_DESC_MODULE_EXTENSION_DICTIONARY_KU_TR]- change to
STR_DESC_MODULE_EXTENSION_DICTIONARY_KMR_LATN
- change to
en-US = "Kurdish (Turkey)spelling dictionary"- change to
"Kurdish, Northern, Latin script spelling dictionary"
- change to
- [
setup_native/source/packinfo/packinfo_office.txtmodule = "gid_Module_Root_Extension_Dictionary_Ku_Tr"- change to
"gid_Module_Root_Extension_Dictionary_Kmr_Latn"
- change to
solarispackagename = "%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-ku-TR"- change to
"...-dict-kmr-Latn"
- change to
packagename = "%UNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-ku-TR"- change to
"...-dict-kmr-Latn"
- change to
description = "Ku-TR dictionary for %PRODUCTNAME %PRODUCTVERSION"- change to
"Kmr-Latn dictionary ..."
- change to
If extras exist, for example extras/source/autotext/*:
-
extras/Package_autocorr.mk- replace
acor_*entry, for exampleacor_sh-RS.dattoacor_sr-Latn-RS.dat, sort alphabetically
- replace
-
extras/CustomTarget_autocorr.mk- in
extras_AUTOCORR_LANGS changemap entry, for examplesh-RS:sh-RStosr-Latn-RS:sr-Latn-Rs - in
extras_AUTOCORR_XMLFILESchange directory entries, for examplesh-RS/acor/DocumentList.xmltosr-Latn-RS/acor/DocumentList.xml
- in
-
rename files accordingly, for example in
extras/source/autotext/lang/git mv sh-RS sr-Latn-RS
If helpcontent exists:
helpcontent2/source/auxiliary/*/*for examplehelpcontent2/source/auxiliary/sh/*- change
Language=..., for exampleLanguage=shtoLanguage=sr-Latninhelpcontent2/source/auxiliary/sh/*.cfg - rename
helpcontent2/source/auxiliary/sh/git mv sh sr-Latn
- change
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_SHtoSTR_NAME_MODULE_LANGPACK_SR_LATN
- If the upper-cased tag appears in any of these, replace it, for example