Войти

Показать полную графическую версию : Перевод программы.


Prisoner
30-06-2003, 02:18
Угу, сабж. Вот скажем такая штука - нажал кнопочку в меню "По щучьему велению, по Гейтсову хотению, стань программа вся по русски такая..." и волшебным образом все преобразилось и засверкало могуществом русского... языка ;). Нажал другую кнопочку и опять все на аглицком, али на французззском, воть.  Никто такой проблемой не заморачивался или рядом с ним решения оной не пролетало? Не охота изобретать колесо :\

APOSTOL
30-06-2003, 08:44
Если программа не очень большая - проще поставить две (отдельно русскую, отдельно - на другом) в соседние каталоги.

DYURIK
30-06-2003, 09:50
Ну можно все Caption сохранять например в файле *.lng (видил как в опере....). И всё при загрузке программы тянуть надписи с этого файла, да и проще будет перевод на разные языки твоего творения надо просто заменить этот файл.....
Если програмишь на Делфи или С++Билдере то там есть фича, которая позволяет изменять язык твоей прори в зависимости от языка операцыонной системы......
Дерзай!!!!!!!!!!!!

Prisoner
01-07-2003, 08:06
А вот какое решение получилось у меня в итоге:
//Запись определяющая переводы объекта. Name - имя компонента.
 //пусть первый элемент массива Caption соответствует русскому языку,
 //2ой - английскому.
 //Для компонент имеющих сложную структуру - помимо собственного заголовка
 //еще и элементы тоже подлежащие переводу, массив Caption заполнять следующим
 //образом - .Caption[1]:='Заголовок*Элемент1*Элемент2*...*ЭлементN';
 //          .Caption[2]:='Caption*Item1*Item2*...*ItemN';
 //или без Заголовок/Caption если он не нужен
 Type
   TCmpCaptions = Record
     Name: String;
     Caption: Array [1..2] Of String;
   End;
   TACmpCaptions = Array of TCmpCaptions;

 //выполняет поиск компонент на родителе Owner, сравнивая их имена с именами
 //в массиве CmpCaptions и если обнаружит совпадение выполнит смену кэпшена
 //на строку из соответствующей записи массива, с учетом стороны перевода
 //Возвращаемое значение - число непереведенных компонент
 Function MakeTranslate(Owner: TComponent; LangType: Integer; CmpCaptions: TACmpCaptions): Integer;

Есть нарекания? Советы?




© OSzone.net 2001-2012