![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() Вот решил сделать мультиязыковую программу но как это сделать? Как записать например в файл Russian.lng все кэпшоны лэйблов? Подскажите)
Начинающий Delphi Помогаю за Спасибо! ![]() |
#2
|
|||
|
|||
![]() Если по простому - то идем на torry.ru и качаем какой-нить компонент для поддержки многоязычности.
Если хочется сделать самому, то начинаем разбираться с RTTI. |
#3
|
||||
|
||||
![]() Можно lng файл сделать ini, и в массиве components поменять нужные кэпшоны
Кнопка "+" - весы в правом верхнем углу сообщения... |
#4
|
||||
|
||||
![]() нет, lng файл я знаю его через inifiles можно подключить а как хранить кэпшоны? напишите на практике, пожалуйста!
Начинающий Delphi Помогаю за Спасибо! ![]() |
#5
|
||||
|
||||
![]() аааууу народ, помогите плз!
Начинающий Delphi Помогаю за Спасибо! ![]() |
#6
|
||||
|
||||
![]() Если через IniFiles, то так же как в обычном INI:
Цитата:
Код:
Label1.Caption := Ini.ReadString('Captions', 'Label1', 'default caption'); Последний раз редактировалось ryderx34, 13.12.2010 в 16:37. |
#7
|
||||
|
||||
![]() Можно и не только для Label'ов, и в обычном TXT-файле:
Код:
2 label1=Привет, мир 2 label2=Еще раз привет, мир 1 Form1=Форма приложения Код:
var f:text; s,nam:string; t:integer; ... assignfile(f,'Russian.lng'); reset(f); while not eof(f) do begin readln(f,s); t:=strtoint(s[1]); delete(s,1,2); nam:=copy(s,1,pos('=',s)-1); delete(s,1,pos('=',s)); case t of 1: TForm1(FindComponent(nam)).Caption:=s; 2: TLabel(FindComponent(nam)).Caption:=s; end; end; closefile(f); jmp $ ; Happy End! The Cake Is A Lie. |
#8
|
||||
|
||||
![]() а если 2 файла например english.lng и russian.lng
Есть комбобокс есть три лейбла и один баттон в комбобоксе написано: Русский / Russian English (Default) Сначала Русский язык надо чтобы в комбобоксе при нажатии на English(Default) читалось из файла english.lng Вот что получилось: Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IniFiles, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Button1: TButton; ComboBox1: TComboBox; procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private declarations } public { Public declarations } end; var Form1: TForm1; IniFile: TIniFile; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin IniFile:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'lang\russian.lng'); Label1.Caption := IniFile.ReadString('Captions', 'Label1', Label1.Caption); Label2.Caption := IniFile.ReadString('Captions', 'Label2', Label2.Caption); Label3.Caption := IniFile.ReadString('Captions', 'Label3', Label3.Caption); Button1.Caption := IniFile.ReadString('Captions', 'Button1', Button1.Caption); if ComboBox1.Items[Combobox1.ItemIndex]=inttostr(1) then begin IniFile:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'lang\english.lng'); Label1.Caption := IniFile.ReadString('Captions', 'Label1', Label1.Caption); Label2.Caption := IniFile.ReadString('Captions', 'Label2', Label2.Caption); Label3.Caption := IniFile.ReadString('Captions', 'Label3', Label3.Caption); Button1.Caption := IniFile.ReadString('Captions', 'Button1', Button1.Caption); Inifile.Free; end; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin IniFile.WriteString('Captions','Label1',Label1.Caption); IniFile.WriteString('Captions','Label2',Label2.Caption); IniFile.WriteString('Captions','Label3',Label3.Caption); IniFile.WriteString('Captions','Button1',Button1.Caption); end; end. Но как всегда не фурычит! Начинающий Delphi Помогаю за Спасибо! ![]() |
#9
|
||||
|
||||
![]() читай ручками, не прогадаешь
![]() jmp $ ; Happy End! The Cake Is A Lie. |
#10
|
|||
|
|||
![]() Подобная тема:
http://www.delphisources.ru/forum/sh...0289#post60289 |
#11
|
||||
|
||||
![]() один файл я подключил все отлично читает! а вот уже как на анг сменить чтобы не менять все кэпшоны в файле...
roamer, прочел я тему но там никакого примера нет=( torry.ru не заходит=( Начинающий Delphi Помогаю за Спасибо! ![]() |
#12
|
||||
|
||||
![]() Цитата:
Код:
uses IniFiles; procedure TForm1.ComboBox1Change(Sender: TObject); var Ini: TIniFile; begin case ComboBox1.ItemIndex of 0: Ini := TIniFile.Create(ExtractFilePath(Paramstr(0)) + 'russian.lng'); 1: Ini := TIniFile.Create(ExtractFilePath(Paramstr(0)) + 'english.lng') end; Label1.Caption := Ini.ReadString('Captions', 'Label1', '...'); Label2.Caption := Ini.ReadString('Captions', 'Label2', '...'); Label3.Caption := Ini.ReadString('Captions', 'Label3', '...'); Button1.Caption := Ini.ReadString('Captions', 'Button1', '...'); Ini.Free; end; Последний раз редактировалось ryderx34, 13.12.2010 в 19:10. |
#13
|
||||
|
||||
![]() Я писал ужасно простой компонент, если найду в архивах - выложу. Логика такая:
1. Файлы .lng - INI-формат. 2. Файл следующего содержания: Код:
[Information] LangName=English LangId=1 [Form1] Label1=Hello Label2=World Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#14
|
||||
|
||||
![]() Цитата:
Классноо....брррррр...скинь плз Начинающий Delphi Помогаю за Спасибо! ![]() |
#15
|
||||
|
||||
![]() Мне ещё надо вспомнить, где он валяется, и доточить до ума (есть несколько моментов, которые я тогда не учёл, а сейчас вспомнил). На разработку его в текущем состоянии у меня ушло не больше часа с перекурами и чаем, так что пробуй. Логику я сказал.
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |