Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.05.2008, 18:02   #1
apromix
PHP, Delphi
Форумчанин
 
Аватар для apromix
 
Регистрация: 07.05.2008
Сообщений: 388
По умолчанию Как грамотно загружать языковые файлы в приложение?

Пожалуйста, подскажите, наведите на правильный и грамотный путь, как просто сделать загрузку языковых файлов в приложение? Сейчас использую для загрузки языков. файлов INI-файлы, и все хорошо, но программа увелич. в размерах, за всем не уследить, появились ошибки. Можно ли это как-нибудь автоматизировать? Огромное спасиба!
Мыши плакали, кололись, но продолжали жрать кактус...
мои проекты
apromix вне форума Ответить с цитированием
Старый 07.05.2008, 20:56   #2
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

Цитата:
программа увелич. в размерах
А как Вы хотели.
Попробуйте, эти файлы, загрузить в ресурсы проги и от туда их читать, где-то на форуме была похожая тема (про строки и их вызов из рес-ов)
Всё гениальное - просто!
Air вне форума Ответить с цитированием
Старый 08.05.2008, 08:20   #3
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Даже если у вас 100 языков ini файлов, программа не на много увеличиться в размерах. А ini самый удобный способ, ведь каждый пользователь сможет создать для себя свой такой файл на своём языке.
FaTaL вне форума Ответить с цитированием
Старый 08.05.2008, 13:06   #4
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

Цитата:
каждый пользователь сможет создать для себя свой такой файл на своём языке
Ага, если он знает перевод и прога поддерживает дополнения.

а не опытные пользователи могут всё испортить.

_______________

Цитата:
Сообщение от Stilet Посмотреть сообщение
Как по мне INI файлы для такой задачи достаточно грамотное решение.
Согласен, только их переименовать нужно.
Например. "Russian.ini" в "Russian.sys" или dat - короче что б не опытные пользователи не могли напартачить.
Всё гениальное - просто!

Последний раз редактировалось Air; 08.05.2008 в 13:43.
Air вне форума Ответить с цитированием
Старый 08.05.2008, 13:10   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Как по мне INI файлы для такой задачи достаточно грамотное решение.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.05.2008, 08:18   #6
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Я обычно делаю их с расширением *.lng и при запуске программы, сканирую дирректорию проги и добавляю все lng файлы в ComboBox. В итоге все могут добавить свой язык.
FaTaL вне форума Ответить с цитированием
Старый 09.05.2008, 12:51   #7
apromix
PHP, Delphi
Форумчанин
 
Аватар для apromix
 
Регистрация: 07.05.2008
Сообщений: 388
По умолчанию

А можно примерчик? Как я понял лучше INI нет, и не нужно себе жизнь усложнять.

Вот мой код. Я правильно делаю?

Код:
procedure LoadLanguage;
var
  sAppPath: String;
  Ini: TINIFile;
  I: Word;
begin
  Ini:= TINIFile.Create(AppPath + 'languages/' + DefaultLanguage);
  try
    for I := 0 to High(Lng)do Lng[I] := '';
    for I := 0 to High(Lng)do
    begin
      Lng[I] := Ini.ReadString('Main', IntToStr(I), '');
    end;
    finally
      Ini.Free;
  end;
  AppName := Lng[0];
end;
Мыши плакали, кололись, но продолжали жрать кактус...
мои проекты
apromix вне форума Ответить с цитированием
Старый 09.05.2008, 16:30   #8
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Я бы не делал загрузку всех строк в память. Сделал бы типа такого:
Код:
function GetLangFromID(ID: Integer): String;
begin
  Result := Ini.ReadString('Main', IntToStr(ID), '');
end;
А смысл грузить все в память я не вижу...
BOBAH13 вне форума Ответить с цитированием
Старый 09.05.2008, 17:02   #9
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

"apromix", добавьте к коду предложенный вариант "FaTaL" - грузить в ComboBox, а потом (русский к примеру, - по умолчанию загрузить), пользователь сам выберет язык и этот выбор надо занести в секцию "LangDef" (язык по умолчанию), что б далее не пришлось каждый раз его менять.
Всё гениальное - просто!
Air вне форума Ответить с цитированием
Старый 09.05.2008, 17:18   #10
apromix
PHP, Delphi
Форумчанин
 
Аватар для apromix
 
Регистрация: 07.05.2008
Сообщений: 388
По умолчанию

Хорошо, строки вынул из ини-файла для определенного языка, но как их присвоить определенным строковым переменным? Может есть пример сделать это автоматически, в цикле перебирая компоненты программы?
Мыши плакали, кололись, но продолжали жрать кактус...
мои проекты
apromix вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сохранять и загружать информацию с реестра? jst.denis Общие вопросы Delphi 13 12.01.2009 00:03
Как грамотно разделить данные между потоками? bagulma Общие вопросы Delphi 5 28.05.2008 22:41
MDI-приложение Технолог Общие вопросы Delphi 6 02.05.2008 20:10
два вредных вопроса:про асю и прикриплёные файлы файлы steck Свободное общение 3 17.06.2007 14:53
MDI приложение Arsgun Общие вопросы Delphi 4 29.05.2007 12:36