Kullanıcılar Tarafından Çevrilen Çok Dilli Uygulamalar Oluşturma

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.

Resim 1. Çeviri Sihirbazı.
Resim 1. Çeviri Sihirbazı.

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:

  1. Dosya adını TsiLangDispatcher’ın FileName özelliğinde tanımlayın.
  2. Ç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.
Resim 2. Diller menüsünün oluşturulması.
Resim 2. Diller menüsünün oluşturulması.
  • 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 EditorDictionary Manager ve Resource Builder‘ın tümü bu tekniği kullanmaktadır.

© 1998-2024 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. şirketinin ticari markaları ve/veya tescilli ticari markalarıdır.