Hi Sebastian!
> I'm not sure why the second patch is needed. If I understand the first
> patch correctly, in the case where LC_CTYPE is set to a Turkish locale,
> the locale will be reset to C.UTF-8 (not sure that this is sane,
> though). The second patch makes it even worse since it resets it to
> C.UTF-8 for everyone else as well.
This is intended. Kodi internally expects to start with classic C locale and
after language pack is loaded, Kodi's global locale is set to the desired
locale.
The root cause of the bug is incorrect comparison of skin's includes.xml
involving lowercase translation of file name (see upstream issue #19883, linked)
So there are two scenarios possible when the bug can manifest:
1. LC_TYPE is set to a locale where "Turkish I" is effective (tr_*, az_AZ) and
user chooses Kodi language other than Turkish / Azeri.
In this case, the locale is set to C + overrides from LC_CTYPE / LANG / LC_ALL,
so it becomes C + CTYPE("tr_TR.UTF-8"). The setlocale() call enforces this
"franken-locale" and the tolower("Includes.xml") produces "Includes.xml" as per
Turkish CTYPE rules, and not "inclides.xml" as expected.
2. LC_* and LANG is set to arbitrary locale and user chooses Turkish / Azeri
language.
In this case, the locale is set to whatever the environment variables declare
first, but then "CLangInfo::CRegion::SetGlobalLocale" sets global locale to
"tr_TR.UTF-8" and Kodi interface gets completely broken due to failed XML
substitutions etc.
That's why the first patch is not enough and I had to add the second one to
enforce Kodi's internal expectation to start with POSIX locale.
Mattia asked the same question, BTW :) The resolution looks odd at the first
glance as experienced users might expect Kodi to display UI in language
controlled by LANG or LC_ALL environment variable, but with Kodi, the language
is controlled by Settings -> Skin - Region -> Language and only by that means,
because unlike coreutils, language packs are shipped in form of Kodi addons
from central Kodi repository (https://mirrors.kodi.tv) and not as a collection
of PO files.
--
Vasyl Gello
==================================================
Certified SolidWorks Expert
Mob.:+380 (98) 465 66 77
E-Mail: [email protected]
Skype: vasek.gello
==================================================
호랑이는 죽어서 가죽을 남기고 사람은 죽어서 이름을 남긴다