Yerelleştirme bileşenleri için en önemli özelliklerden biri, kullanıcıların çevirileri yönetmesine olanak tanıyan çok dilli uygulamalar oluşturma yeteneğidir. Bu, yerelleştirmenin güncellenmesini ve hatta uygulamayı yeniden derlemeden yeni yerelleştirme dili eklemeyi içerir. Ancak bu ilk bakışta göründüğünden daha kolaydır. Tabii ki, çok dilli yazılım oluşturmak için TsiLang yerelleştirme bileşenlerini kullanırsanız.
Demos Delphi alt klasöründen örnek proje MastApp kullanarak bu sorunun çözümünü açıklayalım.
Projenin çevirisi.
Çeviri sürecini ayrıntılı olarak açıklamıyoruz. Çünkü TsiLang Components Suite’in bu bölümüne zaten aşina olduğunuzu varsayıyoruz. Sonuç olarak, sadece çeviri için kullanılan bileşenlerden bahsedeceğiz.
Bir TsiLangDispatcher kullanıyoruz; diğer tüm proje formlarında bir TsiLang ve TsiLangLinked.
MastData birimi otomatik olarak oluşturulur ve tüm proje formları tarafından kullanılır. Bunun üzerine TsiLang ve TsiLangDispatcher’ı yerleştiriyoruz.
Bir çeviri dosyası oluşturma.
Çevirileri sağladıktan sonra veya çeviriler olmadan, yalnızca İngilizce terimler içeren bir harici çeviri dosyası oluşturabiliriz. Bu yüzden TsiLang Expert menüsünden Dosya|Çevirileri Kaydet/Yükle|Projeyi Kaydet komutunu kullanırız (TsiLang Expert, Tools IDE’nin menüsü altında bulunur). SIB dosyaları SIL dosyalarından çok daha hızlı olduğundan, çevirileri depolamak üzere SIB dosyalarını kullanmanızı öneririz. Ancak, verileri herhangi bir metin düzenleyici tarafından düzenlenebilen basit ASCII biçiminde depoladıkları için SIL dosyalarını da kullanabilirsiniz.
Harici bir çeviri dosyasının kullanılması ve mevcut dillerin dinamik olarak güncellenmesi.
Bunu başarmanın iki yolu vardır:
- Dosya adını TsiLangDispatcher’ın FileName özelliğinde tanımlayın.
- Çeviri dosyasının kodda belirtilen bir konumda olup olmadığını kontrol edin ve ardından dosyayı manuel olarak yükleyin.
İlk yolu kullanarak, dağıtıcı, FileName özelliğinde tanımlanan dosyanın kullanılabilirliğini otomatik olarak kontrol edecek ve onu tüm proje formlarına yükleyecektir. İkinci yolu uygulamak için aşağıdaki örnek kodu kullanabilirsiniz:
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;
Böylece, kendi tercihlerinize bağlı olarak yukarıdaki yollardan herhangi birini seçebilirsiniz.
Mevcut dillerin listesini dinamik olarak görüntüleyin.
- Yeni üst düzey menü öğesini uygulamanın ana menüsüne ekleyin.
- Menü öğelerini mevcut dillere göre dinamik olarak ayarlayacak ve oluşturacak kodu ekleyin. Bu kodu ana formdaki OnShow etkinliğine 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 dikkat: dil güncelleme ve görüntüleme kodu, çeviriler dosyası yüklendikten sonra yürütülmelidir.
Çözüm
Projeyi çalıştırın ve “hepsi bu kadar”! İlk bakışta karmaşık görünen görev, TsiLang Components Suite kullanılarak birkaç dakika içinde çözüldü. Böylece kullanıcılarınız uygulamalarınızı yeniden derlemeden ve hatta sizin yardımınız olmadan çevirebilecekler. Ayrıca, kullanıcılarınıza SIL/SIB dosyalarını düzenlemek için SIL Editor‘ü kullanmalarını önerebilirsiniz. SIL Editor indirme sayfamızdan indirilebilir.
Uygulamalarımız, kullanıcı tarafından yönetilen çevirilere yönelik desteği uygulamak için tamamen aynı yolu kullanmaktadır. SIL Editor, Dictionary Manager ve Resource Builder‘ın tümü bu tekniği kullanmaktadır.