С Новым годом! Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
Модератор
Эксперт .NET
4317 / 3391 / 507
Регистрация: 27.01.2014
Сообщений: 6,188
1

Как выдернуть функцию локализации приложения в отдельную функцию из имеющегося проекта

22.03.2014, 16:56. Показов 2215. Ответов 20
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ребята, помогите, уже глаза болят. У меня имеется проект неизвестного мне автора, в котором он представляет параметры\форматы определенной локализации (языка) системы (такие как дата время и так далее).
Так вот, простите если выражусь не правильно, но, как я заметил, и проверил, в данном проекте нет ни одного Юникодного контролла, но при запуске, она определяет и устанавливает локальные настройки системы к данному приложению, что даёт возможность использовать кириллицу и другие языки в системах Windows с установленной ТОЛЬКО английской версией интерфейса и локализации, тоесть... локализация системы не изменяется при запуске приложения, но приложение отображает кириллицу.

Помогите выдернуть эту возможность в отдельный SUB, так чтобы в Form_Load просто добавлять одну строчку обращения к функции и приложение отображало кириллицу.!

Очень надо... А то надоело уже мудрить с контроллами, чтобы русский текст отображать... А этот пример меня просто поразил... Но там много лишнего, что мне не нужно, а именно форматы дат и времени, валюты и так далее. мне только нужна поддержка кириллицы моим приложением.!

PS можно в отдельный модуль упаковать... Либо может кто знает что-то похожее?
Буду весьма благодарен.! А то приложение с русским текстом в английской системе рисуется вопросикми.!

Да и вообще я думаю, конечный результат (модуль) можно будет поместить в тему Готовые решения и полезные коды на Visual Basic 6.0 так как я уверен многие задавались таким вопросом, но пока работают на уровне русских систем, а если международную программу писать и так далее.?

Прошу помощи. Спасибо всем, кто откликнется. Пример прикладываю к теме.
Вложения
Тип файла: rar InternationalLocales.rar (50.0 Кб, 12 просмотров)
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Блог
22.03.2014, 16:56
Ответы с готовыми решениями:

Как подключить отдельную функцию с помощью #include?
Я сейчас изучаю функции. Мне интересно, как можно сделать так, чтобы не писать каждый раз в новой...

Метод пузырька оформить как отдельную функцию
Дана последовательность чисел A размерности N. Выбрать среди них числа больше заданного числа в...

Как вынести из программы линейный поиск в отдельную функцию?
Добрый день всем, я для саморазвития решил изучить основы Си, сам я очень далек от...

Как продублировать функцию BindingNavigator на отдельную кнопку Button?
Доброго дня. В общем меня не устраивает интерфейс BindingNavigator и хочу разделить его на...

20
Модератор
9978 / 3824 / 879
Регистрация: 22.02.2013
Сообщений: 5,700
Записей в блоге: 78
22.03.2014, 19:34 2
Лучший ответ Сообщение было отмечено Апострофф как решение

Решение

Цитата Сообщение от Юрий Комар Посмотреть сообщение
нет ни одного Юникодного контролла
Там используется Forms 2

Добавлено через 3 минуты
Я тебе говорил уже, попробуй поиграться с SetThreadLocale
3
Модератор
Эксперт .NET
4317 / 3391 / 507
Регистрация: 27.01.2014
Сообщений: 6,188
23.03.2014, 09:05  [ТС] 3
А она не меняет системную локализаюцию,? Так как этого делать нельзя. Ну и на тему кириллицы я еще кое чего нашел, протестирую - расскажу, если конечно будет положительные результат.
А SetThreadLocale - я обязательно посмотрю, я закладочку себе добавил в TaskList спасибо Анатолий.
1
Модератор
9978 / 3824 / 879
Регистрация: 22.02.2013
Сообщений: 5,700
Записей в блоге: 78
23.03.2014, 10:50 4
У меня нет возможности тестирования, я не могу тебе точно сказать. Нужен шрифт, поддерживающий кириллические символы, нужно выбирать кириллический набор символов.
Цитата Сообщение от Юрий Комар Посмотреть сообщение
А она не меняет системную локализаюцию,?
Кто?
1
Модератор
Эксперт .NET
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
Модератор
9978 / 3824 / 879
Регистрация: 22.02.2013
Сообщений: 5,700
Записей в блоге: 78
23.03.2014, 13:15 6
Лучший ответ Сообщение было отмечено The trick как решение

Решение

Цитата Сообщение от Юрий Комар Посмотреть сообщение
Я так понимаю это через скриптTMBCSEncoding.create(1251)??
Не понимаю о чем ты.
Там есть трабла на новых системах по-моему с SetThreadLocale, почитай внимательно про нее.
Ты сначала попробуй выбрать в контекст кириллический шрифт и печатай, все что выше 127 должно печататься кириллическими символами.
Вот пример, поддержки стандартным лейблом множества языков UIMultilang.rar
Миниатюры
Как выдернуть функцию локализации приложения в отдельную функцию из имеющегося проекта  
4
Модератор
Эксперт .NET
4317 / 3391 / 507
Регистрация: 27.01.2014
Сообщений: 6,188
23.03.2014, 15:56  [ТС] 7
Цитата Сообщение от The trick Посмотреть сообщение
поддержки стандартным лейблом множества языков UIMultilang.rar
это при помощи TMBCSEncoding.create()???

Добавлено через 3 минуты
Цитата Сообщение от The trick Посмотреть сообщение
SetThreadLocale
трабла есть. я почитал, там нужно ссылаться на ресурс с конкретным языком, а это не совсем тот вариант, который я ищу...

TMBCSEncoding.create() - это хорошо, но с ним придется каждый контрол перекодировать при старте? а это лишний гемморой... хотя, за не имением другого - можно взять... но всеже я хочу найти то что нужно и обьявлять единажды при запуске прижоления нужный язык и чтоб все подписи контроллов отображались согласно этой установке.
1
Модератор
9978 / 3824 / 879
Регистрация: 22.02.2013
Сообщений: 5,700
Записей в блоге: 78
23.03.2014, 16:00 8
Ты пример смотрел? Что у тебя показывает? Это все стандартными возможностями контролов, никаких TMBCSEncoding.create() нет. Почитай про кодовые страницы.
1
Модератор
Эксперт .NET
4317 / 3391 / 507
Регистрация: 27.01.2014
Сообщений: 6,188
23.03.2014, 16:01  [ТС] 9
Цитата Сообщение от The trick Посмотреть сообщение
поддержки стандартным лейблом множества языков UIMultilang.rar
но в итоге при переносе на англ систему многий текст просто в вопросиках. включая РУССКИЙ...

Добавлено через 54 секунды
Цитата Сообщение от Юрий Комар Посмотреть сообщение
либо вот такой вариант на делфи cp1251: TMBCSEncoding;
cp1251 := TMBCSEncoding.create(1251);
Memo1.Lines.DefaultEncoding := cp1251;
Memo1.Lines.LoadFromFile(' 1.txt');
cp1251.Free;
ну это я не из головы взял...
1
Модератор
9978 / 3824 / 879
Регистрация: 22.02.2013
Сообщений: 5,700
Записей в блоге: 78
23.03.2014, 16:02 10
Цитата Сообщение от Юрий Комар Посмотреть сообщение
но в итоге при переносе на англ систему многий текст просто в вопросиках. включая РУССКИЙ...
Шрифт поставь с поддержкой символов соответствующих кодировок.
0
Модератор
Эксперт .NET
4317 / 3391 / 507
Регистрация: 27.01.2014
Сообщений: 6,188
23.03.2014, 16:08  [ТС] 11
Цитата Сообщение от The trick Посмотреть сообщение
Шрифт поставь с поддержкой символов соответствующих кодировок.
я твой пример отнесу и проверю...

тоесть при запуске можно зациклить .Font.Charset = 204 для каждого контролла и будет счастье? (204 это кириллица)
0
Модератор
9978 / 3824 / 879
Регистрация: 22.02.2013
Сообщений: 5,700
Записей в блоге: 78
23.03.2014, 16:11 12
Нужно чтобы в шрифте была соответствующая кодовая таблица. Ты на той системе открой проект и у любого контрола свойство Font выбери в дизайнере, а в наборе символов выбери кириллицу. Посмотри как у тебя начнет отображаться
0
Модератор
Эксперт .NET
4317 / 3391 / 507
Регистрация: 27.01.2014
Сообщений: 6,188
23.03.2014, 16:54  [ТС] 13
Проверил. Работает однако, и зачем мудрить с локалью, когда проще Юникодный текст вставить в .caption или .Text и выбрать Arial Unicode MS ну и установить .font.charset нужный...
Но вот заголовок формы не хочет принимать, хотя в моем тесте лэйбл отрисовал текст а заголовок был тоже кириллица но нн смог.! ((
Миниатюры
Как выдернуть функцию локализации приложения в отдельную функцию из имеющегося проекта   Как выдернуть функцию локализации приложения в отдельную функцию из имеющегося проекта  
0
Модератор
Эксперт .NET
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
Модератор
9978 / 3824 / 879
Регистрация: 22.02.2013
Сообщений: 5,700
Записей в блоге: 78
23.03.2014, 21:30 16
Цитата Сообщение от Юрий Комар Посмотреть сообщение
и зачем мудрить с локалью
Для того чтобы загружать нужные строки из ресурсов, отрисовывать заголовок и меню.
Юрий Комар, я вообще не понимаю твоих высказываний, видимо ты не следовал моим советам.
0
Модератор
Эксперт .NET
4317 / 3391 / 507
Регистрация: 27.01.2014
Сообщений: 6,188
24.03.2014, 23:41  [ТС] 17
The trick, я пробовал применить SetThreadLocale на xp английской - никак не реализует. .. Судя по ее описаниям она как раз в ХР имеет ограничение... точнее в хр ее просто нет... если я правильно понял (

Добавлено через 42 секунды
Pro_grammer, это фото... я с телефона тут ьываю частенько...
0
Модератор
Эксперт .NET
4317 / 3391 / 507
Регистрация: 27.01.2014
Сообщений: 6,188
24.03.2014, 23:57  [ТС] 18
The trick, все что посоветовал я попробовал... но SetThread не получилась
Чуток модифицировал твой примерчик... в итоге копировать из формс 2 текст нормально получается, п вот из стандартного текстбокса нифига...
Как выдернуть функцию локализации приложения в отдельную функцию из имеющегося проекта


Как выдернуть функцию локализации приложения в отдельную функцию из имеющегося проекта


UIMultilang v2.0.rar
0
Модератор
9978 / 3824 / 879
Регистрация: 22.02.2013
Сообщений: 5,700
Записей в блоге: 78
25.03.2014, 00:08 19
Цитата Сообщение от Yury Komar Посмотреть сообщение
Чуток модифицировал твой примерчик... в итоге копировать из формс 2 текст нормально получается, п вот из стандартного текстбокса нифига...
Ты так и не понял или не читал. Ты копируешь ANSI текст, т.е. байт на символ, там нет никакой информации о кодировке. Все твои символы маппятся на windows-1250, и это ты не поменяешь никак, только программно перекодирую в юникод, а там уже через API загружать в буфер обмена через CF_UNICODETEXT.
Насчет SetThreadLocale, я не могу утверждать на 100% что она будет отрисовывать так как надо, т.к. не проверял. Ты покажи как ее вызывал. Все равно есть и другие методы отрисовки заголовка в юникоде, ты сначала попробуй без костылей.
0
Модератор
Эксперт .NET
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
BasicMan
Эксперт
19315 / 2622 / 84
Регистрация: 17.02.2009
Сообщений: 10,364
Блог
25.03.2014, 01:31
Помогаю со студенческими работами здесь

Как создать отдельную функцию для каждого объекта класса
Ну например есть класс struct Class { void onUpdate (); } Мне надо сделать так, что бы у...

Тестирование на сокетах. Можно ли как-то выделить вопрос-ответ в отдельную функцию?
Хотелось бы узнать следующее... Есть сервер-сокет, и есть клиент-сокет. Если я на клиенте посылаю...

Оформить в отдельную функцию
Есть такая задача: Даны целые числа а, b, с. Вычислить в-сумму у = min (a, b + c) + max (ac,...

Список в отдельную функцию
Можно ли вынести список в отдельную функцию? Как это сделать?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru