Yerelleştirme bileşenlerinin en önemli özelliklerinden biri, kullanıcıların çevirileri yönetmesini sağlayan çok dilli uygulamalar oluşturabilmesidir. Buna, yerelleştirmeleri güncellemek ve hatta uygulamayı yeniden derlemeye gerek kalmadan yeni diller eklemek de dahildir. Ancak bunu başarmak, özellikle çok dilli yazılım geliştirmek için TsiLang yerelleştirme bileşenlerinden yararlanırken, ilk bakışta göründüğünden daha kolaydır.
Bu sorunun çözümünü, Demos Delphi alt klasöründeki MastApp örnek projesini kullanarak anlatalım.
TsiLang Components Suite’in bu yönüne zaten aşina olduğunuzu varsaydığımız için çeviri sürecinin ayrıntılı açıklamasına girmeyeceğiz. Bunun yerine, çeviri için kullanılan bileşenlerden kısaca söz edeceğiz.
Bir TsiLangDispatcher, bir TsiLang ve diğer tüm proje formlarında TsiLangLinked kullanıyoruz.

MastData birimi otomatik olarak oluşturulur ve tüm proje formları tarafından kullanılır. Bu nedenle TsiLang ve TsiLangDispatcher bileşenlerini bunun üzerine yerleştiriyoruz.
Harici bir çeviri dosyasını, çeviriler girilmiş olarak veya yalnızca İngilizce terimlerle oluşturma seçeneğimiz var. Bunun için TsiLang Expert komut panelindeki (IDE’de Tools menüsünün altından erişilebilir) “Save to File | Project” komutunu kullanabiliriz. Çevirileri saklamak için SIB dosyalarının kullanılması önerilir, çünkü SIL dosyalarına kıyasla daha hızlı performans sunarlar. Bununla birlikte, verileri basit bir ASCII biçiminde sakladıkları ve herhangi bir metin düzenleyiciyle kolayca düzenlenebildikleri için SIL dosyaları da kullanılabilir.
Bunu gerçekleştirmenin iki yolu vardır:
TsiLangDispatcher bileşeninin FileName özelliğinde dosya adını tanımlayın. Bunu yaptığınızda dispatcher, belirtilen dosya adına göre çeviri dosyasının mevcut olup olmadığını otomatik olarak denetler ve dosyayı tüm proje formlarına yükler.
Alternatif olarak, kodunuzda belirtilen bir konumda çeviri dosyasının varlığını elle denetleyip ardından yükleyebilirsiniz. Aşağıda bu yaklaşımı gösteren örnek bir kod parçası yer alıyor:
procedure TMastData.DataModuleCreate(Sender: TObject);
var
sOurSibFile: string;
begin
// determine the file name
sOurSibFile := ExtractFilePath(Application.ExeName) + 'TheNameOfYourFile.sib';
// checking the existence of file
if FileExists(sOurSibFile) then
begin
// set the property value
// this will automatically load forms created later
siLangDispatcher1.FileName := sOurSibFile;
// load translations into already created forms
siLangDispatcher1.LoadAllFromFile(sOurSibFile);
end;
end;
İhtiyaçlarınıza en uygun yaklaşımı seçin ve projenize buna göre entegre edin.
Şimdi, menü öğelerini kullanılabilir dillere göre dinamik olarak ayarlayıp oluşturacak kodu eklememiz gerekiyor. Bu kodu ana formun OnShow olayına ekleyebilirsiniz:
// changing active language upon menu item click
procedure TMainForm.LanguageMenuItemClick(Sender: TObject);
begin
MastData.siLangDispatcher1.ActiveLanguage := TMenuItem(Sender).Tag;
TMenuItem(Sender).Checked := True;
end;
procedure TMainForm.FormShow(Sender: TObject);
var
MenuItem: TMenuItem;
I: Integer;
begin
for I := 1 to MastData.siLangDispatcher1.NumOfLanguages do
begin
MenuItem := TMenuItem.Create(Self);
// set Caption
MenuItem.Caption := MastData.siLangDispatcher1.LangNames[I - 1];
// set Tag property for easier language switching
MenuItem.Tag := I;
MenuItem.RadioItem := True;
// display current language
MenuItem.Checked := I = MastData.siLangDispatcher1.ActiveLanguage;
// set event handler
MenuItem.OnClick := LanguageMenuItemClick;
// add menu item
Language1.Add(MenuItem);
end;
end;
Lütfen unutmayın: dili güncelleyen ve görüntüleyen kod, çeviri dosyası yüklendikten sonra çalıştırılmalıdır.
Projeyi çalıştırın, işte “hepsi bu kadar”! İlk bakışta karmaşık görünebilecek bu görev, TsiLang Components Suite ile yalnızca birkaç dakikada kolayca çözülebilir. Bu güçlü araçla kullanıcılarınız, yeniden derlemeye veya sizin yardımınıza gerek kalmadan uygulamalarınızı çevirebilir. Ayrıca onlara, özel indirme sayfamızdan indirilebilen, SIL/SIB dosyalarını düzenlemek için SIL Editor sağlayabilirsiniz.
Kendi uygulamalarımızın da kullanıcı tarafından yönetilen çevirileri desteklemek için aynı yaklaşımı izlediğini belirtmekte fayda var. SIL Editor, Dictionary Manager ve Resource Builder, bu tekniği etkili biçimde kullanır.
Bu makaleyi PDF biçiminde buradan indirebilirsiniz: creating_multilanguage_applications_translated_by_users.pdf.
Bu makaleyi paylaşın
Uygulamanızın bir sonraki dili burada başlıyor
Her özelliği kendi projenizle deneyin.
Tam işlevli deneme sürümü. Yerelleştirilmiş uygulamanız çalışırken IDE’nizi açık tutun.
Öğrenin & bağlantı kurun
© 1998-2026 Igor Siticov, SiComponents. TsiLang®, Resource Builder® ve SiComponents®, Igor Siticov’un tescilli ticari markalarıdır.
RAD Studio, Delphi ve C++Builder, Embarcadero Technologies, Inc.’in ticari markaları ve/veya tescilli ticari markalarıdır.