Форум: "Основная";
Текущий архив: 2003.09.22;
Скачать: [xml.tar.bz2];
ВнизКаким образом оптимально организовать Найти похожие ветки
← →
Miwa (2003-09-09 23:02) [0]Собственно, сабж.
← →
Anatoly Podgoretsky (2003-09-09 23:06) [1]Из стандартных средств ITE - Integrates Trandlation Environment
Неплохое средство если освоишь.
← →
miwa (2003-09-09 23:50) [2]Спасибо. Да только во-первых, не взыщите - не знаю, что это такое и где его искать. Хотя... искать, наверно в нете, если только эта байда не потянет сотню-вторую метров.
А во-вторых все же имел ввиду вариант создания внешних текстовых файлов (или по принципу ini, или обычных), из которых будут грузится фразы. "Интернационализируемая" программа относительно простая и маленькая (общий обьем десятка модулей pas+dpr+dfm не натягивает 100 кБ). Или все же искать вышеупомянутый ITE?
← →
miwa (2003-09-10 00:01) [3]Только что посмотрел коментарий, который впихивает дельфийский переводчик. Так он называется ITE? (простите серость безкультурную).
Если да, тогда каким образом заставить его искать строки не только на формах, но и в тексте программы? (у меня много чего проходит динамичекси, в том числе и изменеия надписей, и создание контролов, затем изменения и еще черт-его-знает-чего: что приходило в забитую кофеином голову в 5 утра)
← →
Тих (2003-09-10 00:19) [4]я вот на днях экспериментировал...
нынче модно HTML-based applications писать, вон и у Microsoft пол-Visual Studio 7 WebControl использует... так вот. Суть в том, что всюду используется WebBrowser и
1) Весь UI пишется где на HTML, а где на XML с XSLT-трансформацией в HTML, или же XML парсится вручную в тот же HTML-код. КОдировка документов везде UTF-8 или 16.
2) Подвязываемся к событиям IHTMLDocument2 и обрабатываем их
3) Активно используется JScript и VBScript
4) Для смены языка просто меняется шаблон XSL или HTML
5) Или вообще делается HTA-application (см. MSDN)
У меня навыка не очень много, но в принципе мне понравилось. Плюсы - при должном навыке такие приложения можно быстро писать и легко сопровождать, минусы -
1) Полноценный UI смастерить сложновато (но можно использовать ActiveX контролы)
2) Многовато памяти жрет. 6-7-10 мБ ОЗУ обычное дело.
← →
miwa (2003-09-10 00:22) [5]
> Многовато памяти жрет. 6-7-10 мБ ОЗУ обычное дело.
Многовато, как на протенькую утилитку... Неа, спасибо, но не то.
← →
Chris (2003-09-10 08:30) [6]По поводу перевода всей программы - думать надо, а multilanguage интерфейса по моему можно сделать следующим образом:
Каждой фразе, выводимой в интерфейс (статичные надписи грузятся в FormCreate(S... ), присваивается порядковый номер и все это грузится из Ini-файла в виде
MenuItem3.Caption:=Ini.ReadString("Language "+ComboBoxCurrentLanguage.Items[ComboBoxCurrentLanguage.ItemIndex],"MenuItem3","Открыть файл");
Ну, и соответственно, в ComboBoxCurrentLanguage забиваешь названия тех языков, на какие переведен интерфейс
← →
Jao (2003-09-10 08:59) [7]я планирую сделать так:
1. создаем xml-файл, где имя тега=имени компонента на форме, внутрениие теги есть перевод на всех языках (хоть на китайском)
(забивалка языков интерфейса тожеть не помешает, ибо язык местных аборигенов сам я не знаю :)
2. пробегаемся по всем контролам и ищем совпадения имен и подставляем, либо в кэпшион, а если его нет - то text или еще куда...)
xml потому что у него с юникодом лады в отличии от ini
← →
Спрашивающий_ (2003-09-10 09:03) [8]В больншинстве случаев достаточно англоязычной версии с простыми и всеми уже давно выученными фразами типа Save, OK и т.д. кстати они порой даже лучше воспринимаются чем на родном языке, а вот со справкой действительно проблемы.
← →
Jao (2003-09-10 09:04) [9]и еще - что бы облегчать создание исходного xml-файла с переводами - делаем первоначальный интерфейс с вариантом на великом и могучем, затем пробегаемся по контролам и сохранями фсе это в файл...
← →
sepa (2003-09-10 09:50) [10]Копай в сторону Resource DLL
Меню:
Project\Languages
Тока все строки проекта во всяких сообщениях должны быть описаны как константы в секции ResourceString.
← →
Angel[Saint] (2003-09-10 11:03) [11]я сделал так:
Структура типизированного файла:
TLanguage = record
FormName : String[250];
ComponentName : String[250];
TitleName : String[250];
ComponentType : String[250];
end;
Функция загрузки:
procedure LoadLanguage(LangFile: String; Application:TApplication);
var f: file of TLanguage;
l: TLanguage;
FF:TComponent;
c: TComponent;
begin
//Загрузка языковых титлов в кепшены компонентов
if not FileExists(LangFile) then exit;
AssignFile(f,LangFile);
Reset(f);
While not eof(f) do
begin
Read(f,l);
try
FF:=Application.FindComponent(l.FormName);
if FF <> nil then
begin
c:=nil;
c:=FF.FindComponent(l.ComponentName);
if c <> nil then
begin
if (c is TMenuItem)then (c as TMenuItem).Caption:=l.TitleName;
if (c is TButton)then (c as TButton).Caption:=l.TitleName;
if (c is TLabel)then (c as TLabel).Caption:=l.TitleName;
if (c is TGroupBox)then (c as TGroupBox).Caption:=l.TitleName;
if (c is TCheckBox)then (c as TCheckBox).Caption:=l.TitleName;
end;
end;
except
end;
end;
CloseFile(f);
end;
← →
Angel[Saint] (2003-09-10 11:06) [12]упс... забыл сказать
сначала ищется форма (FF)
потом на форме ищется компонент (с)
так что можно использовать один файл для всех форм приложения
← →
Falcon (2003-09-10 14:12) [13]Я бы использовал STRList, языковой файл побил на секции - часть для контролов, часть для сообщений, часть для хинтов. После LoadFromFile все под рукой выбирай по индексу, сопоставлять можно по тагам. Только советую текстик закодировать пусть даже самым простым способом, чтобы всякие шаловливые ручки не лазили :)
← →
nikkie (2003-09-10 14:37) [14]каким образом заставить его искать строки не только на формах, но и в тексте программы? (у меня много чего проходит динамичекси, в том числе и изменеия надписей, и создание контролов, затем изменения и еще черт-его-знает-чего: что приходило в забитую кофеином голову в 5 утра)
руками. а в следующий раз думать будешь прежде, чем код клепать.
xml потому что у него с юникодом лады в отличии от ini
а зачем тебе юникод? vcl разве стала юникод поддерживать?
← →
grusty (2003-09-10 14:50) [15]Один из самых удачных, на мой взгляд, компонентов, позволяющий сделать интерфейс (и программу в целом) многоязычным - это Tvg2MultiLanguage из библиотеки VgLib ( http://www.vglib.com)
← →
Jao (2003-09-10 16:30) [16]>а зачем тебе юникод?
если это языки средней азии или республики экваториальная гвиния - то без него ни как :)))
>vcl разве стала юникод поддерживать?
1. Можно написать свои компоненты, унаследовав от TControl и сделав свою прорисовку api-функциями с widestring-параметрами
2. Но проще использовать доп. компоненты, типа TNT или EldosElPack
3. CLX-application (там кажись все юникодовское)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.09.22;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.013 c