Files
odfstudio/i18npool/CustomTarget_collator.mk
T
Julien Nabet 790dd1d0c6 tdf#173547: fix wrong alphabetical sorting for Kurdish Latn alphabetical
Following tdf#173579 by removing broken dynamic loading of collators,
I focused on Kurdish Latn collation.

Root cause and fix provided by GPT-5.6 Luna
Cause:
when "kmr-Latn-TR", LO uses Language "qlt", Country "TR" (Turkey), Variant "kmr-Latn-TR"
but "kmr-Latn-TR" wasn't used in LOCAL_RULE_LANGS (a variable generated in i18npool/CustomTarget_collator.mk)
and used in i18npool/source/collator/collator_unicode.cxx, method Collator_Unicode::loadCollatorAlgorithm
so "func" and "funclen" weren't initialized with appropriate collator functions.

Fix:
rename file and functions containing "ku" by using "kmr_Latn"
(I suppose the right move since it mimics Eike Rathke's commit 45d4b9b5e3
"renamed ku* to kmr-Latn*, fdo#63460")

Add a specific use case bKmrLatn to load "kmr_Latn" collator functions
to deal with "qlt" language (yes it's a bit kludgy...)

We must remind that "kmr_Latn" can be used for "kmr_Latn_TR" but also with "kmr_Latn_SY"
that's why I avoided using "kmr_Latn_TR"

Also, to avoid the bKmrLatn specific case,
I thought about changing "LangID" tag of i18npool/source/localedata/data/kmr_Latn_TR.xml
from "qlt" into "kmr-Latn" but I'm not sure of the impact.

Change-Id: Ifc608da19b4bd2d05667121e3c6f2455f5d45ca9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210977
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2026-09-21 22:34:45 +02:00

74 lines
2.8 KiB
Makefile

# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
#
# This file is part of the LibreOffice project.
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
$(eval $(call gb_CustomTarget_CustomTarget,i18npool/collator))
i18npool_CODIR := $(gb_CustomTarget_workdir)/i18npool/collator
i18npool_COTXTS := \
cu_charset.txt \
$(call gb_Helper_optional_locale,ca, \
ca_charset.txt) \
$(call gb_Helper_optional_locale,dz, \
dz_charset.txt) \
$(call gb_Helper_optional_locale,hu, \
hu_charset.txt) \
$(call gb_Helper_optional_locale,ja, \
ja_charset.txt \
ja_phonetic_alphanumeric_first.txt \
ja_phonetic_alphanumeric_last.txt) \
$(if $(i18npool_ICULT53), \
$(call gb_Helper_optional_locale,ko, \
ko_charset.txt) \
) \
$(call gb_Helper_optional_locale,kmr_Latn, \
kmr_Latn_alphanumeric.txt) \
$(call gb_Helper_optional_locale,ln, \
ln_charset.txt) \
$(call gb_Helper_optional_locale,my, \
my_dictionary.txt) \
$(call gb_Helper_optional_locale,ne, \
ne_charset.txt) \
$(call gb_Helper_optional_locale,sid, \
sid_charset.txt) \
$(call gb_Helper_optional_locale,vro, \
vro_alphanumeric.txt) \
$(call gb_Helper_optional_locale,zh, \
zh_charset.txt \
zh_pinyin.txt \
zh_radical.txt \
zh_stroke.txt \
zh_TW_charset.txt \
zh_TW_radical.txt \
zh_TW_stroke.txt \
zh_zhuyin.txt)
$(call gb_CustomTarget_get_target,i18npool/collator) : $(SRCDIR)/i18npool/CustomTarget_collator.mk \
$(i18npool_CODIR)/lrl_include.hxx $(foreach txt,$(i18npool_COTXTS), \
$(patsubst %.txt,$(i18npool_CODIR)/collator_%.cxx,$(txt)))
$(i18npool_CODIR)/collator_%.cxx : \
$(SRCDIR)/i18npool/source/collator/data/%.txt \
$(call gb_Executable_get_runtime_dependencies,gencoll_rule) \
| $(i18npool_CODIR)/.dir
$(call gb_Output_announce,$(subst $(WORKDIR)/,,$@),$(true),CLR,1)
$(call gb_Trace_StartRange,$(subst $(WORKDIR)/,,$@),CLR)
$(call gb_Helper_abbreviate_dirs, \
$(call gb_Helper_execute,gencoll_rule) $< $@ $*)
$(call gb_Trace_EndRange,$(subst $(WORKDIR)/,,$@),CLR)
$(i18npool_CODIR)/lrl_include.hxx : $(SRCDIR)/i18npool/CustomTarget_collator.mk \
$(SRCDIR)/i18npool/source/collator/data | $(i18npool_CODIR)/.dir
$(call gb_Output_announce,$(subst $(WORKDIR)/,,$@),$(true),ECH,1)
$(call gb_Trace_StartRange,$(subst $(WORKDIR)/,,$@),ECH)
echo 'constexpr OUStringLiteral LOCAL_RULE_LANGS = u"$(sort $(foreach txt,$(i18npool_COTXTS), \
$(firstword $(subst _, ,$(txt)))))";' > $@
$(call gb_Trace_EndRange,$(subst $(WORKDIR)/,,$@),ECH)
# vim: set noet sw=4 ts=4: