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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2010, 12:14   #11
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

raxp, извиняюсь, уже разобрался сам как он работает..
но немного не то, слишком уже многое и не нужное пишет он в файлы,
шрифты, положение окна, настройки отображения формы, в общем свойства всех компонентов... а это плохо. вот кусок "перевода" из lng файла.
Код:
BiDiMode=bdLeftToRight
Constraints.MaxHeight=0
Constraints.MaxWidth=0
Constraints.MinHeight=0
Constraints.MinWidth=0
ParentFont=False
HelpFile=''
ParentBiDiMode=True
Label1.Left=16
Label1.Top=16
Label1.Width=86
Label1.Height=13
....
Button2.Left=16
Button2.Top=368
Button2.Width=169
Button2.Height=25
Button2.Hint=''
Button2.BiDiMode=bdLeftToRight
Button2.Caption='Сообщение'
Button2.Constraints.MaxHeight=0
Button2.Constraints.MaxWidth=0
Button2.Constraints.MinHeight=0
Button2.Constraints.MinWidth=0
Button2.Font.Charset=204
Button2.Font.Color=-16777208
Button2.Font.Height=-11
Button2.Font.Name='MS Sans Serif'
Button2.Font.Pitch=fpDefault
Button2.Font.Size=8
Button2.ParentBiDiMode=True
Button2.ParentFont=False
Left=259
Top=163
Width=433
Height=461
ClientHeight=434
ClientWidth=425

Последний раз редактировалось Человек_Борща; 02.02.2010 в 12:17.
Человек_Борща вне форума Ответить с цитированием
Старый 02.02.2010, 12:45   #12
inndim
Пользователь
 
Регистрация: 08.06.2008
Сообщений: 74
По умолчанию

Человек_Борща
Код:
допустим так можно=) но вопрос, что все компоненты вот так?
Именно так.
Код:
тоесть будет возможен только 1 перевод приложения..
Ну, почему же? включи воображение! Создаёшь отдельную процедуру для загрузки нужного языка
Код:
procedure TForm1.LoadLangFile(f:string);
begin
 language:=TStringlist.create;
 language.LoadFromFile(f);
 button1:=language.Values['ButCancle'];
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 LoadLangFile('russian.lng');
end;
И не забывай, что переменную language нужно объявить глобально, что даст возможность доступа к ней из других форм, то есть когда хочешь показать другое окно, то при соэдании его просто обращайся к переменной language и делай так же как описал в примере, и так для каждой формы. Не вижу никаких сложностей.

Вот ссылка на мою программу в которой данный способ реализован во всей красе http://mp3runner.narod.ru/
raxp
Цитата:
вы просто хотите все решить с наскока.
Согласен.

Последний раз редактировалось inndim; 02.02.2010 в 12:49.
inndim вне форума Ответить с цитированием
Старый 02.02.2010, 13:03   #13
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

спасибо всем, теперь понятно как и что. не плохо бы тему куда-нибуть закинуть...

P.S.
inndim, хорошая программа=) буду её юзать(по возможности)=)

Последний раз редактировалось Человек_Борща; 02.02.2010 в 13:07.
Человек_Борща вне форума Ответить с цитированием
Старый 02.02.2010, 13:17   #14
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
Человек_Борща
raxp, извиняюсь, уже разобрался сам как он работает..
но немного не то, слишком уже многое и не нужное пишет он в файлы,
шрифты, положение окна, настройки отображения формы, в общем свойства всех компонентов...
он правильно пишет, на все случаи жизни... но никто не мешает поудалять "мусор" после первого создания lng файла, при повторном использовании он "лишнее" писать уже не будет/
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 02.02.2010, 15:37   #15
apromix
PHP, Delphi
Форумчанин
 
Аватар для apromix
 
Регистрация: 07.05.2008
Сообщений: 388
По умолчанию

Можно все это дело несколько автоматизировать:
Код:
procedure TfrmMain.Button2Click(Sender: TObject);
var
  I: Integer;
  M, K: String;
  Ini: TIniFile;
begin
  // Загрузка локализации для формы
  if (DefaultDromLanguage = 'default') then Exit;
  Ini := TINIFile.Create(Dir + '\data\languages\default.lng');
  with frmMain do
  for i := 0 to ComponentCount-1 do
  begin
    M := 'frmMain';
    if (Components[i] is TLabel) then
    begin
      TLabel(Components[i]).Caption := Trim(Ini.ReadString(M, TLabel(Components[i]).Name + '.Caption', ''));
      K := Trim(Ini.ReadString(M, TLabel(Components[i]).Name + '.Hint', ''));
      if (K <> '') then TLabel(Components[i]).Hint := K;
    end;
  end;
  Ini.Free;  
end;
Этот пример только для текущей формы и компонентов TLabel, если улучшите, выложите в этой теме
Мыши плакали, кололись, но продолжали жрать кактус...
мои проекты
apromix вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Компоненты для БД. (*_*) Общие вопросы C/C++ 1 02.06.2009 12:18
Компонент A3 для локализации приложений Delphi 2007 Georgios Компоненты Delphi 1 22.05.2009 15:59
Компоненты для делфи DelphiMan Свободное общение 2 05.02.2009 10:12
Оцените мою программу автоматической локализации/исправления структурных ошибок. Vasil54 Софт 0 02.10.2008 22:28
можно ли использовать визуальные компоненты, если у приложения нет формы? Holly1444 Общие вопросы Delphi 8 19.11.2006 16:21