Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.08.2010, 20:58
void void вне форума
Прохожий
 
Регистрация: 10.08.2010
Сообщения: 3
Репутация: 10
По умолчанию Языковые DLL

Всем привет. Хочу сделать свою прогу многоязыковой. Хотел, чтобы все хранилось в dll. Например, ru.dll, en.dll ... И чтобы допустим кинул в папку дллку с языком и прога нашла его. Может у кого-нибудь остались исходники?
Ответить с цитированием
  #2  
Старый 10.08.2010, 23:57
Аватар для T-dayne
T-dayne T-dayne вне форума
Начинающий
 
Регистрация: 26.01.2010
Сообщения: 180
Репутация: 31
По умолчанию

как ты собираешь хранить языковые файлы(текст) в DLL, в виде переменных и констант чтоль? ИМХО, легче использовать XML, или INI

ЗЫ Профи, поправьте, если ошибаюсь.
Ответить с цитированием
  #3  
Старый 11.08.2010, 01:04
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

T-dayne, Resource, не? Я делал, хоть и через хитро закрученную ж*пу...
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #4  
Старый 11.08.2010, 04:00
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Я не помню точно, сохранилась ли поддержка многоязычности через dll в версиях после 7, но в 7ой версии - это был такой кошмар, что, попробовав раз, я навсегда отказался от этой идеи. Сходи на torry.ru - там компонентов, обеспечивающих многоязыковую поддержку, в т.ч. и бесплатных, очень много. Ну и плюс стандартизация хранения ресурсов (через ActionList и т.д.) обеспечит тебе простоту и гибкость данного механизма.
Ответить с цитированием
  #5  
Старый 11.08.2010, 11:07
void void вне форума
Прохожий
 
Регистрация: 10.08.2010
Сообщения: 3
Репутация: 10
По умолчанию

2 DJ PhoeniX: Можно поподробнее?
2 Imikle: спасибо, будем искать
Ответить с цитированием
  #6  
Старый 11.08.2010, 13:18
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

Когда-то была такая задача (в контексте мультиязычной библиотечной системы).
Тогда пришел к выводу, что проще всего рассматривать "перевод" контролов, как частный случай строкового значения какого-либо свойства какого-либо компонента на форме.
А "перевод" хранить в текстовом файле (в кодировке utf8, например) .
Где формат строк такой :

ИмяКомпонента.ИмяСвойства.Язык=Наименование

Например:
Label1.Caption.RUS=Привет
Label1.Caption.ENG=Hello

В этом случае все свелось к однотипным и простым операциям.
С использованием функций модуля TypInfo.

К сожалению, даже "вырванные" тексты соотв. функций занимают примерно 12 тыс. символов.
Поэтому привести их здесь не могу.
Но если кому-то интересно - могу где-нибудь разместить и кинуть сюда ссылку сегодня-завтра.
Ответить с цитированием
  #7  
Старый 13.08.2010, 09:20
Vocabulary Vocabulary вне форума
Новичок
 
Регистрация: 17.09.2009
Сообщения: 85
Репутация: 9
По умолчанию

Если бы проблема была только в том, где хранить и как доставать переводы при многоязыковой поддержки своего приложения.
Это то как раз и не проблема - способов придумано множество и легко найти наиболее для себя подходящий.

Проблема в разной длине строк, которые занимают на форме переводы одного и того понятия.
Что никогда не видели ламерские переводы ломаных программ (игрушек ли), где надписи не помещаются на форме, вылезают за границы кнопок, залезают друг на друга и т.п.?
Да, конечно, приведенный roamer'ом пример прост и реализуется так же просто. Достаточно сделать ширину кнопки чтобы помещалась надпись на русском "Привет". Тогда и "Hello" тоже разместиться. Но, к сожалению, этот пример действительно прост и не может рассказать о других сложностях при размещении компонентов на форме.

Хочу сказать, что многоязыковая поддержка должна решаться комплексно. С учетом максимальной длины надписей на разных языках.
А это требует некоторой смелости и труда в пересмотре размещения компонентов.
При условии, что вам не безразлично как будет выглядеть ваша прога на разных языках.

Может показаться, что самый "длинный язык" это русский и по надписям на нем можно определить максимальную ширину нужного компонента.
Ан, нет. Бесспорно, он один из длинных, но из тех какие встречались немецкий немного "длиннее".
А для меток (Label's) есть еще одна засада. Переводы на разных языках предложений, которые бывают в метках на форме могут отличаться по длине и в два раза. Тоже надо учитывать.
"Механический" подход к реализации многоязыковой поддержки приведет к тому, что ваша программа будет выглядеть как будто пришла из прошлого века.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:12.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025