Отговори на тема  [ 9 мнения ] 
Програма с мултиезиков интерфейс. 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение Програма с мултиезиков интерфейс.
Как се реализира такова нещо най добре. Имам една програма която съм я правил с интерфейс на англииски искам да я преработя да може да се превключва и на български. Гледам по готови софтуери че е направено много елегантно от менюто да си превключваш езика и ми се иска да го направя така. Имам идеи как да стане но ми се иска да знам как се прави по принцип.

Някой може ли да ме светне по въпроса или някакво линкче към примерен проект за VC++ където да видя как става


Пон Яну 14, 2008 8:20 pm
Профил
Ранг: Професионалист
Ранг: Професионалист
Аватар

Регистриран на: Сря Окт 13, 2004 11:24 pm
Мнения: 500
Местоположение: Стара Загора
Мнение 
мога да ти кажа как съм си решавал подобен проблем, на всеки ресурс който има някакъв текст на който трябва да се смени езика , използвам променлива за текста "Label" както в повечето случаи, правя едно текстово файлче за съответният език в което за всяка текстова променлива отговаря отделен идентификационен ключ срещу който се записва текста на променливата пример:
Код:
idLangCode="BG"
idLangName="Български"
idButton1Name="Бутон 1"
idButton2Name="Бутон 2"
idMenuFileName="Файл"
idMenuEditName="Редактиране"
......

много е досадно , трябва навсякъде където има текст да се направи по този начин. При стартиране програмата проверява кой език е зададен и дали има съответен запис във файла за него, ако има опреснява имената на ресурсите, ако няма запис за зададеният език зарежда по подразбиране имена на ресурсите с които е компилирана програмата. Имах следните проблеми; на всеки Label има променлива която указва типа на шрифта и по някога ако зададеният шрифт липсва в ОС-а кирилицата не се виждаше, за да се избегне това мисля че програмата трябва да си зарежда собствен шрифт който си носи със екзето, но това как става незнам...


Пон Яну 14, 2008 11:17 pm
Профил YIM
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юли 24, 2005 10:28 am
Мнения: 2658
Мнение 
със задаване на отделен ресурс за всеки език и (евентуално) превключване със SetThreadLocale. имай предвид обаче че под 98 виндовса е недоизпипан и локализирането май за да бачка трябва да е генерално включено, че дори и тогава не знам дали ставаше като хората, иначе под ХР няма проблеми. ако не ползваш SetThreadLocale, то ще се ползва зададеното в локалните настройки на виндовса. ако се опиташ да включиш на език който го няма в ресурсите, зарежда се език който се смята че в страната се говори от най-много хора. имай предвид че и по отношение на локализацията някой БАНаджия си е оставил ръцете за българия - ако програмата няма български език, но има френски и английски, ще тръгне на френски вместо на английски, понеже някой кавал е докладвал на микрософтци че сме франкофони.


Пон Яну 14, 2008 11:23 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Това с текстовите файлове и на мен ми хрумна но нещо не ми се вижда много удобно за работа.
Че затова и питам как се прави по принцип. Сигурно има и по удачен вариант.

А това с отделния ресурс нищо не ми говори :(
Ще се поровя в MSDN-a дано ми светне нещо. Но по мои наблюдения от MSDN-a има полза ако знаеш какво точно търсиш


Пон Яну 14, 2008 11:23 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Яну 19, 2007 9:16 am
Мнения: 1063
Местоположение: путинофили: "иди н***й"
Мнение 
за да реализираш подобно нещо - първо се убеди че всичките контроли които ползваш са unicode - това е единственния сигурен начин че ще работи надежно (за Win9x ти трябва да линкваш UNICOWS.lib/dll)

а самата реализация - е проста:

сканираш всички контроли (child) и техните починени (ако има) - според класа и/или текста на контрола им подменяш текста

за да е он-лайн смяната - трябва да преведеш всички сктивни прозорци.

аз в моите приложения - имам текстов файл (unicode, и е в exe-to като ресурс за да е скрито от юзерите) който си го парсвам при стартиране на приложението ... така ми е по удобно при добяване/промяна на форма ...

_________________
путинофили: "иди н***й"


Вто Яну 15, 2008 11:45 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Ное 21, 2004 11:31 pm
Мнения: 10088
Мнение 
не съм голям експерт по прозорци... нямате ли си там i18n?


Вто Яну 15, 2008 1:03 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Светна ми принципа. Още не мога да се ориентирам как да организирам ресурс който се зарежда динамично. Винаги съм ползвал твърдо заредени ресурси който от resource view си инсертвам с Add Resource


Вто Яну 15, 2008 3:46 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 12:48 pm
Мнения: 6094
Мнение 
http://support.microsoft.com/kb/198846
http://www.codejock.com/support/article ... tilang.asp

GOOGLE -> DLL resource language MFC

_________________
main[-1u]={1};


Вто Яну 15, 2008 4:42 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Сега вече не само ми светна ами чак ме огря :):)
Мерси много


Вто Яну 15, 2008 4:45 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 9 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 1 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни