TsiLang Makaleler Makale

Makale, 14 Mayıs 2019

Kullanıcılar tarafından çevrilen çok dilli uygulamalar oluşturma

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.

Projeyi çevirme

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.

Translation Wizard

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.

Çeviri dosyası oluşturma

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.

Harici bir çeviri dosyası kullanma ve kullanılabilir dillerin dinamik güncellenmesi

Bunu gerçekleştirmenin iki yolu vardır:

  1. 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.

  2. 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.

Kullanılabilir dillerin listesini dinamik olarak görüntüleme

Ş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.

Sonuç

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.

Uygulamanızın bir sonraki dili burada başlıyor

Çok dilli olmaya hazır mısınız?

Her özelliği kendi projenizle deneyin.

Tam işlevli deneme sürümü. Yerelleştirilmiş uygulamanız çalışırken IDE’nizi açık tutun.