Привет всем,
В настройках Windows 10 (Время и язык - Язык - Административные языковые параметры) есть такой флажок:

Если этот флажок включить (а потом перезагрузить ПК), то в Кларионовских программах вместо русских букв на кнопках, стрингах, промптах и прочем будут крокозябры вот такие:
Вопрос: можно ли с этим как-то бороться?
P.S. Если кому-то интересно, зачем я включил этот флажок, то отвечаю - это была мера для устранения ошибок компиляции одного проекта под PlatformIO по совету, полученному через ChatGPT.
In prior Clarion versions, internationalization settings were set or modified by using the ENV file or by calls to the LOCALE function. Clarion 11 introduces new settings for internationalization: the codepage number and locale id number (recommended in place of the ENV file). These settings allow conformant processing of both ANSI and Unicode strings while the old implementation is useful for ANSI strings only.
As of version 11 the recommended method to implement support for Unicode and apply international settings is to use the new
PROP:Codepage and PROP:Locale properties.
The values for the code page and locale id can be set several different ways:
·by setting PROP:Codepage and
PROP:Locale properties respectively for the SYSTEM property (this is
the preferred method), for example:
SYSTEM
{PROP:Codepage} = 1253 !Greek
SYSTEM {PROP:Locale} = 1032 !Greek
·by calling the LOCALE function with the
first parameter equal to ‘CLACODEPAGE’ and
‘CLALCID’ respectively, for example:
LOCALE(‘CLACODEPAGE’, 1253)
LOCALE('CLALCID',
1032)
·by specifying the CLACODEPAGE and CLALCID parameters in the program ENV file.
**Note: The RTL does not check the values of the codepage number or the locale id for compatibility.
It is recommended to set the locale id to provide the Clarion RTL with the names and abbreviations of months, days of week, AM/PM identifiers, and other internationalization settings. If the program does not set the code page and locale id the RTL uses the settings for the current Windows user.
--
Вы получили это сообщение, поскольку подписаны на группу "ClaList".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес clalist+u...@googlegroups.com.
Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/clalist/1874020542.20260514110538%40gmail.com.
Hello Alexander,
По порядку:
1. Не помогло. Вообще ничего не поменялось.
2. Над этой инструкцией в том же хелпе написано "Coming in a future release" - то есть, ожидается в каком-то будущем релизе".
3. Несмотря на п.2, приложение собралось без ошибок.
4. Моя личная практика - в каждом моем приложении автоматически ставится вот такой код:
SYSTEM{Prop:Charset}=204
SYSTEM{Prop:FontCharset}=204
LOCALE('WINDOWS')
...что, по идее, должно делать то же самое, что вы мне посоветовали.
Тем не менее, я специально этот свой код закомментировал, а вместо него поставил код из вашего совета:
!SYSTEM{Prop:Charset}=204
!SYSTEM{Prop:FontCharset}=204
SYSTEM{PROP:Codepage} = 1251
SYSTEM{PROP:Locale} = 1049
...однако см. п.1
5. Прилагаю скриншот из еще одного моего приложения (когда-то было написано на C6, затем пересобрано под C10)
На этом скриншоте видно, что кодировка русского текста изменилась, но не везде, а только:
- в заголовках окон
- на экранных STRING'ах и PROMPT'ах
...но при этом сохранилась:
- в заголовках списков
- в самих списках (в т.ч., выпадающих)
- в надписях на кнопках
При этом надо заметить, что во всех окнах обязательно прописано использование кириллической кодировки в шрифтах, например: FONT('Segoe UI',12,,,CHARSET:CYRILLIC)
Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/clalist/CAJ4HZHv_-Tcpgf9tWQRnMnZaDm7UjSQ-cngp58VLVeEXTnC2vg%40mail.gmail.com.