![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Многоязычность приложения [D7]
Shc © (2004-08-13 17:03:00)Народ, подскажите, пожалуйста, хорошую компоненту для организации многоязычности (желательно бесплатную.
Требования: хранение в текстовом формате (ini, lng ...); обработка всех форм в проэкте; обработка строковых констант (resoursestring) всех используемых модулей
Shc (2004-08-17 16:53:00) [1]Спасибо за ответы.
Раньше не мог, уезжал.
Относительно средсв самого Делфя, это, конечно, хорошо, НО я не уверен что это будет работать для Линуха :-)
(хотя и про ресурсные строки тоже) :-))
Относительно кнопочек типа Yes, то это тоже очень важно и нужно (делается с прицелом на учебные заведения)
Mim1 (2004-08-16 08:19:00) [2]
> Хотя кто знает что они завтра захотят? "Белый текст при
> включении" по русски ? ;-)
Можно перепрошить bios и шрифт видеокарты. :)
Лиш бы оплатили.
GuAV (2004-08-14 20:08:00) [3]Таки получилось.
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1092430217&n=5
> Да, бывают и такие.
Да, но теперь есть управа. Хотя кто знает что они завтра захотят? "Белый текст при включении" по русски ? ;-)
TUser (2004-08-14 14:39:00) [4]
> А ты прдставь себе такого буха кило эдак на 160 которая
> визжит что это ее не касается и все должно быть "как надо",
> и что она ничего знать не хочет.
Да, бывают и такие.
GuAV (2004-08-14 13:55:00) [5]
> Ну, на самом деле, для русификации твоих собственных строк
> это не нужно,
Согласен.
> а Yes переводить на русский язык вовсе необязательно
У меня через Application.Messagebox, т.е. Yes и так по русски.
В других константах дело.
> Неужели ползователь не пойме по английски?
Лучше не надо.
Mim1 (2004-08-14 13:30:00) [6]
> [20] TUser © (14.08.04 08:34)
А ты прдставь себе такого буха кило эдак на 160 которая визжит что это ее не касается и все должно быть "как надо", и что она ничего знать не хочет.
TUser (2004-08-14 08:34:00) [7]Ну, на самом деле, для русификации твоих собственных строк это не нужно, а Yes переводить на русский язык вовсе необязательно (по моему скромному ИМХО). Неужели ползователь не пойме по английски?
GuAV (2004-08-14 05:19:00) [8]TUser © (14.08.04 03:16) [18]
Неплохо, но я думаю есть вариант получше...
TUser (2004-08-14 03:16:00) [9]Есть перцы, которые пересобирают VCL под свои нужды. Сам не делал, но теоретически это делают так - копируют в папку со своей программой все нужные модули, заменяют в этом consts.pas константы на переменные с такими же названиями, значения грузят из ini/реестра/ресурса
Anatoly Podgoretsky (2004-08-13 23:59:00) [10]GuAV © (13.08.04 23:41) [15]
Не подскажу не делал, требует изучения, но одназначно можно.
GuAV (2004-08-13 23:46:00) [11]Как бы это понятнее сказать... Хочу понять, можно ли
> хранение в текстовом формате (ini, lng ...);
реализовать для констант из consts.pas, что бы например тот же Stack Overflow был по русски.
GuAV (2004-08-13 23:41:00) [12]
>> заменить ... в run-time.
> Это тоже можно сделать,
Я тупой. Объясните, пожалуйста, как.
Я понимаю, что после запуска resource dll wizard создаётся ProjectGroup с локализируемыми версиями проекта с dfm и rc файлами и есть удобный stringtable editor для этих rc файлов, но как
> т.е. заменить SAccessViolationArg3 с значения из consts.pas
> на 'Лажа по адресу %p. %s адреса %p' в run-time.
Anatoly Podgoretsky (2004-08-13 23:31:00) [13]У меня так подулючились констант из Quick Report и еще что то.
Anatoly Podgoretsky (2004-08-13 23:29:00) [14]GuAV © (13.08.04 23:25) [12]
Это тоже можно сделать, если они объявлены как ресурсные строки, немного надо посучиться с подключением к ITE
GuAV (2004-08-13 23:25:00) [15]Anatoly Podgoretsky © (13.08.04 23:17) [11]
Нет, я хочу [0]
> обработка строковых констант (resoursestring) всех используемых
> модулей
т.е. заменить SAccessViolationArg3 с значения из consts.pas на 'Лажа по адресу %p. %s адреса %p' в run-time.
Anatoly Podgoretsky (2004-08-13 23:17:00) [16]GuAV © (13.08.04 21:58) [9]
SAccessViolationArg3:='Лажа по адресу %p. %s адреса %p';
Format в нее передаешь SAccessViolationArg3 как форматную строку, если напрямую не получится, то сначала в S, но должно и напрямую
Dimaxx (2004-08-13 22:54:00) [17]Пиши мне на мыло - объясню. Я сделал проще и в пару десятков строк. Интерфейс тянется из текстовых файлов. Щас объяснять нет времени в инете - накропаю текстик и выложу. А пока прыгай ко мне на мыло.
GuAV (2004-08-13 21:58:00) [18]>Это нельзя по дизайну, это ресусные DLL
Жаль.
Но я думаю если дельфи это не делает, можно руками сделать, есть же редакторы ресурсов, использующие соотв WInAPI функции...
>S := s_ResourceString;
я не о том.
Как бы такое сделать:
SAccessViolationArg3:='Лажа по адресу %p. %s адреса %p';
Anatoly Podgoretsky (2004-08-13 21:46:00) [19]GuAV © (13.08.04 21:19) [7]
Это нельзя по дизайну, это ресусные DLL
Очень просто, также как обычную константу, справка кстати это хорошо рассказывает и с примерами.
S := s_ResourceString;
Остальное делается автоматом.
GuAV (2004-08-13 21:19:00) [20]Anatoly Podgoretsky © (13.08.04 20:22) [6]
Вы кстати не знаете, как заставить всю эту информацию хранится не в .enu/.rus а в самом exe (есть же возможность хранения нескольких версий одного ресурса на разных языках в винде) ?
И как пдменить resurcestring во время выполнения?