Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Перевод программы. (http://forum.oszone.net/showthread.php?t=30427)

Prisoner 30-06-2003 02:18 208576

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

APOSTOL 30-06-2003 08:44 208577

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

DYURIK 30-06-2003 09:50 208578

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

Prisoner 01-07-2003 08:06 208579

А вот какое решение получилось у меня в итоге:
Код:

//Запись определяющая переводы объекта. 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;

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


Время: 19:31.

Время: 19:31.
© OSzone.net 2001-