Модератор
4317 / 3391 / 507
Регистрация: 27.01.2014
Сообщений: 6,188
|
|
1 | |
Как выдернуть функцию локализации приложения в отдельную функцию из имеющегося проекта22.03.2014, 16:56. Показов 2215. Ответов 20
Метки нет (Все метки)
Ребята, помогите, уже глаза болят. У меня имеется проект неизвестного мне автора, в котором он представляет параметры\форматы определенной локализации (языка) системы (такие как дата время и так далее).
Так вот, простите если выражусь не правильно, но, как я заметил, и проверил, в данном проекте нет ни одного Юникодного контролла, но при запуске, она определяет и устанавливает локальные настройки системы к данному приложению, что даёт возможность использовать кириллицу и другие языки в системах Windows с установленной ТОЛЬКО английской версией интерфейса и локализации, тоесть... локализация системы не изменяется при запуске приложения, но приложение отображает кириллицу. Помогите выдернуть эту возможность в отдельный SUB, так чтобы в Form_Load просто добавлять одну строчку обращения к функции и приложение отображало кириллицу.! Очень надо... А то надоело уже мудрить с контроллами, чтобы русский текст отображать... А этот пример меня просто поразил... Но там много лишнего, что мне не нужно, а именно форматы дат и времени, валюты и так далее. мне только нужна поддержка кириллицы моим приложением.! PS можно в отдельный модуль упаковать... Либо может кто знает что-то похожее? Буду весьма благодарен.! А то приложение с русским текстом в английской системе рисуется вопросикми.! Да и вообще я думаю, конечный результат (модуль) можно будет поместить в тему Готовые решения и полезные коды на Visual Basic 6.0 так как я уверен многие задавались таким вопросом, но пока работают на уровне русских систем, а если международную программу писать и так далее.? Прошу помощи. Спасибо всем, кто откликнется. Пример прикладываю к теме.
1
|
22.03.2014, 16:56 | |
Ответы с готовыми решениями:
20
Как подключить отдельную функцию с помощью #include? Метод пузырька оформить как отдельную функцию Как вынести из программы линейный поиск в отдельную функцию? Как продублировать функцию BindingNavigator на отдельную кнопку Button? |
Модератор
|
|
22.03.2014, 19:34 | 2 |
Сообщение было отмечено Апострофф как решение
Решение
Там используется Forms 2
Добавлено через 3 минуты Я тебе говорил уже, попробуй поиграться с SetThreadLocale
3
|
Модератор
4317 / 3391 / 507
Регистрация: 27.01.2014
Сообщений: 6,188
|
|
23.03.2014, 09:05 [ТС] | 3 |
А она не меняет системную локализаюцию,? Так как этого делать нельзя. Ну и на тему кириллицы я еще кое чего нашел, протестирую - расскажу, если конечно будет положительные результат.
А SetThreadLocale - я обязательно посмотрю, я закладочку себе добавил в TaskList спасибо Анатолий.
1
|
Модератор
|
|
23.03.2014, 10:50 | 4 |
У меня нет возможности тестирования, я не могу тебе точно сказать. Нужен шрифт, поддерживающий кириллические символы, нужно выбирать кириллический набор символов.
Кто?
1
|
Модератор
4317 / 3391 / 507
Регистрация: 27.01.2014
Сообщений: 6,188
|
|
23.03.2014, 12:16 [ТС] | 5 |
The trick, я про SetThreadLocale... насколько я понимаю она меняет локаль рантайм придожения но не системы... я проверю на английской, но не думаю что все пройдет очень гладко. А про кирилические символы, то я по умолчанию через SmartCode себе установил Arial Unicode MS... спасибо за совет с SetThreadLocale, всё-же я думвю копать надо именно в этом направлении... либо вот такой вариант на делфи cp1251: TMBCSEncoding;
cp1251 := TMBCSEncoding.create(1251); Memo1.Lines.DefaultEncoding := cp1251; Memo1.Lines.LoadFromFile(' 1.txt'); cp1251.Free; Я так понимаю это через скриптTMBCSEncoding.create(1251)??
1
|
Модератор
|
|
23.03.2014, 13:15 | 6 |
Сообщение было отмечено The trick как решение
Решение
Не понимаю о чем ты.
Там есть трабла на новых системах по-моему с SetThreadLocale, почитай внимательно про нее. Ты сначала попробуй выбрать в контекст кириллический шрифт и печатай, все что выше 127 должно печататься кириллическими символами. Вот пример, поддержки стандартным лейблом множества языков UIMultilang.rar
4
|
Модератор
4317 / 3391 / 507
Регистрация: 27.01.2014
Сообщений: 6,188
|
|
23.03.2014, 15:56 [ТС] | 7 |
это при помощи TMBCSEncoding.create()???
Добавлено через 3 минуты трабла есть. я почитал, там нужно ссылаться на ресурс с конкретным языком, а это не совсем тот вариант, который я ищу... TMBCSEncoding.create() - это хорошо, но с ним придется каждый контрол перекодировать при старте? а это лишний гемморой... хотя, за не имением другого - можно взять... но всеже я хочу найти то что нужно и обьявлять единажды при запуске прижоления нужный язык и чтоб все подписи контроллов отображались согласно этой установке.
1
|
Модератор
4317 / 3391 / 507
Регистрация: 27.01.2014
Сообщений: 6,188
|
|
23.03.2014, 16:01 [ТС] | 9 |
но в итоге при переносе на англ систему многий текст просто в вопросиках. включая РУССКИЙ...
Добавлено через 54 секунды ну это я не из головы взял...
1
|
Модератор
4317 / 3391 / 507
Регистрация: 27.01.2014
Сообщений: 6,188
|
|
23.03.2014, 16:08 [ТС] | 11 |
я твой пример отнесу и проверю...
тоесть при запуске можно зациклить .Font.Charset = 204 для каждого контролла и будет счастье? (204 это кириллица)
0
|
Модератор
|
|
23.03.2014, 16:11 | 12 |
Нужно чтобы в шрифте была соответствующая кодовая таблица. Ты на той системе открой проект и у любого контрола свойство Font выбери в дизайнере, а в наборе символов выбери кириллицу. Посмотри как у тебя начнет отображаться
0
|
Модератор
4317 / 3391 / 507
Регистрация: 27.01.2014
Сообщений: 6,188
|
|
23.03.2014, 16:54 [ТС] | 13 |
Проверил. Работает однако, и зачем мудрить с локалью, когда проще Юникодный текст вставить в .caption или .Text и выбрать Arial Unicode MS ну и установить .font.charset нужный...
Но вот заголовок формы не хочет принимать, хотя в моем тесте лэйбл отрисовал текст а заголовок был тоже кириллица но нн смог.! ((
0
|
Модератор
4317 / 3391 / 507
Регистрация: 27.01.2014
Сообщений: 6,188
|
|
23.03.2014, 17:05 [ТС] | 14 |
Нути еще Lucida Sans Unicode в систеиах имеется... можно ей пользоваться. А вот стандартный MS Sans Serif хоть и имеет charset 204 но не рисует из юникода символы... так что его ф топку!!!
Добавлено через 6 минут Вобщем одна проблема решена... осталась друшая, проверить будет ли кирилический текст сохранятся из текст бокса либоткорироваться.! Надеюсь будет. И последнее, свойство Caprion адаптировать, но это можно не из свойств а при выполненит кода установить Caption = юникоду + нужный шрифт с кириллицей, должно работать...
0
|
Pro_grammer
|
23.03.2014, 19:26
#15
|
Не по теме: Юрий Комар, а что у Вас с кнопкой PrintScreen?
0
|
Модератор
|
|
23.03.2014, 21:30 | 16 |
Для того чтобы загружать нужные строки из ресурсов, отрисовывать заголовок и меню.
Юрий Комар, я вообще не понимаю твоих высказываний, видимо ты не следовал моим советам.
0
|
Модератор
4317 / 3391 / 507
Регистрация: 27.01.2014
Сообщений: 6,188
|
|
24.03.2014, 23:41 [ТС] | 17 |
The trick, я пробовал применить SetThreadLocale на xp английской - никак не реализует. .. Судя по ее описаниям она как раз в ХР имеет ограничение... точнее в хр ее просто нет... если я правильно понял (
Добавлено через 42 секунды Pro_grammer, это фото... я с телефона тут ьываю частенько...
0
|
Модератор
4317 / 3391 / 507
Регистрация: 27.01.2014
Сообщений: 6,188
|
|
24.03.2014, 23:57 [ТС] | 18 |
The trick, все что посоветовал я попробовал... но SetThread не получилась
Чуток модифицировал твой примерчик... в итоге копировать из формс 2 текст нормально получается, п вот из стандартного текстбокса нифига... UIMultilang v2.0.rar
0
|
Модератор
|
|
25.03.2014, 00:08 | 19 |
Ты так и не понял или не читал. Ты копируешь ANSI текст, т.е. байт на символ, там нет никакой информации о кодировке. Все твои символы маппятся на windows-1250, и это ты не поменяешь никак, только программно перекодирую в юникод, а там уже через API загружать в буфер обмена через CF_UNICODETEXT.
Насчет SetThreadLocale, я не могу утверждать на 100% что она будет отрисовывать так как надо, т.к. не проверял. Ты покажи как ее вызывал. Все равно есть и другие методы отрисовки заголовка в юникоде, ты сначала попробуй без костылей.
0
|
Модератор
4317 / 3391 / 507
Регистрация: 27.01.2014
Сообщений: 6,188
|
|
25.03.2014, 01:31 [ТС] | 20 |
The trick, вызывал как SetThreadLocale 1049 в Form_Load...
0
|
25.03.2014, 01:31 | |
25.03.2014, 01:31 | |
Помогаю со студенческими работами здесь
20
Как создать отдельную функцию для каждого объекта класса Тестирование на сокетах. Можно ли как-то выделить вопрос-ответ в отдельную функцию? Оформить в отдельную функцию Список в отдельную функцию Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |