DJ VK
-
Постов
2 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные DJ VK
-
-
Как поддержать разные названия месяцев и дней недели календаря для разных языков?
Как поддержать разные названия месяцев и дней недели календаря для разных языков?
Локализация названий месяцев и дней недели в календаре
в Компоненты
Опубликовано
С Божией помощью решение было найдено.
Дни недели TLang кое-как видит, можно перевести стандартно в TLang.
Названия месяцев, теоретически, можно было бы подставить в стилях (calendarstyle, months.Items), но в FMX.Calendar.Style не предусмотрена очистка или проверка списка на отсутствие пользовательских значений, а идет добавление 12 месяцев из региональных настроек в конец списка, и это, фактически, ошибка в исходном коде fmx. Даже если этот способ бы и получился TLang не дает возможности перевести Items. И непонятно, удастся ли менять значения в ран-тайме. Поэтому перевод месяцев был сделан с помощью подмены стиля.
Я изначально пытался сделать одно управляющее событие с кодом языка. Но с++ вызов шаблона TCalendar->Model->SendMessage<UnicodeString> линкер ни в какую принимать не захотел, поэтому сделал по одному простому сообщению без параметров на каждый язык. Вызов
switch(Lang) { case 0: L = "ru"; BDay->Model->SendMessage(MM_LOCALE_RUS); EDay->Model->SendMessage(MM_LOCALE_RUS); break; case 1: L = "en"; BDay->Model->SendMessage(MM_LOCALE_ENG); EDay->Model->SendMessage(MM_LOCALE_ENG); break; } LoadLangFromStrings(Lang1->LangStr[L]);