0%

Microsoft Dynamics 365 Business Central 2020 Wave 1 (16.0) Artık Türkçe - Nasıl Yaptık? (1. Aşama)

*Bu yazı tahmini 6 dakika 2 saniye okuma süresine sahiptir.

CaptionML özelliğinin sonu geldi. Yaşasın xliff. Belki herkes için tam olarak böyle değildir ama çeviriyi kodun dışına çıkarmak nereden bakarsanız bakın iyidir.

CaptionML özelliğinin sonu geldi. Yaşasın xliff. Belki herkes için tam olarak böyle değildir ama çeviriyi kodun dışına çıkarmak nereden bakarsanız bakın iyidir.

Business Central için çeviri yapmak iki aşamadan oluşuyor. İlk aşama uygulamanın içindeki tüm nesnelerin (tablolar, alanlar, sayfalar, raporlar, sabit metinler vb.) çevirisinin yapılmasıdır. Bu yazımızda, ilk aşamının yeni çeviri mimarisiyle nasıl yapıldığından bahsedeceğiz. İkinci aşama ise, tüm uygulama nesnelerinin içinde barındırıldığı framework ve web uygulamalarının dil çevirilerinin yapılması. İkinci aşama ayrı bir yazının konusu olacaktır.

Visual Studio Code içinde geliştirdiğiniz extension projenizde, app.json içinde yer alan "features": ["TranslationFile"] özelliğini etkin hale getirdiğinizde artık çeviri işini xliff ile yapacağınızı editöre bildirmiş oluyorsunuz. Projeniz her derlendiğinde, derleyicinin oluşturduğu "translations" dizinin içine xliff dosyasının oluştuğunu göreceksiniz. Derleyicinin oluşturduğu bu dosya, hedef dile atıfta bulunmayan sadece kaynak dil (İngilizce) ifadelerinin geçtiği bir dosyadır. Sıra geldi bu dosyanın çevirisi yapıp, hedef dil dosyasını oluşturmaya. Her bir dil için kaynak dosyanın bir kopyasını oluşturup, ilgili dili ifade edecek şekilde dosya adını değiştirmemiz gerekiyor.

Örneğin;

Kaynak dosyamız "helloworld.g.xlf" olarak oluşmuşsa, Türkçe için oluşturduğumuz yeni dosyanın adını "helloworld.g.tr-TR.xlf" olarak ayarlamalısınız.

Xliff dosyasında çeviriye konu olacak herbir başlık xml içinde bir "trans-unit" elemanı ile ifade edilir. Bu eleman içindeki; "source" elemanı çevirisi yapılacak ifadeyi, "target" elemanı çevrilmiş ifadeyi, "note" elemanları ise çevirisi yapılacak ifadenin, Business Central içindeki karşılığını tanıtacak bilgiler içermektedir. Ayrıca, trans-unit elemanının translate özelliği de ilgili ifade için çeviri yapılması gerekip gerekmediğini bildirir. Aşağıdaki örnek bir trans-unit elemanı görebilirsiniz.

        <trans-unit id="Table 882311172 - Property 2879900210" size-unit="char" translate="yes" xml:space="preserve">

          <source>Employment Category</source>

          <target>Çalışan Kategorisi</target>

          <note from="Developer" annotates="general" priority="2"></note>

          <note from="Xliff Generator" annotates="general" priority="3">Table Employment Category - Property Caption</note>

        </trans-unit>

 

Şimdi sıra geldi bu dosyayı düzenlemeye.

Xliff dosyalarını düzenlemek için bir editöre ihtiyacınız olacak. Biraz zor olsada bunun için notepad bile kullanabilirsiniz. Sonucta XML formatında bir dosya. Ancak bunu hiç tavsiye etmem. Keza projenizi her derlediğinizde xliff dosyası yeniden üretiliyor. Adını değiştirdiğiniz bir nesne, alan veya değişken olması durumunda, daha önce tercümesini yaptığınız bileşen kimliği (<trans-unit id="….") değişiyor. Bu yapıyı elle düzenlemek bir hayli zor. Bu sebeple bulabiliyorsanız ihtiyaçlarınıza uygun bir xliff editör bulun. Ya da benim yaptığım gibi ihtiyaçlarınıza uygun bir editör yazın.

Kendi editörümü yine bir Business Central Extension'ı olarak yazdım. Çeviriyi üç aşamada hallediyorum.

  1. Öncelikle derleyicinin ürettiği xliff dosyasını içeriye aktarıyorum. Bu işlem tüm trans-unit elemanlarını geziyor ve source elemanı içindeki ifadeleri içeri aktarıyor.
  2. Eğer varsa eski çevrilmiş dosyayı içeri aktarıyorum. Bu işlem, trans-unit id'si aynı olan elemanı yakalayarak varsa target içinde yazan çeviriyi içeri aktarıyor. Trans-unit id si eşleşmeyenleri ise source ifadesinden eşleştirerek çeviriyi gerçekleştirir. En son geriye kalanları ise kullanıcının düzenlemesi için işaretler.
  3. Tüm çeviri yapıldıktan sonra, yeni çeviri dosyası dışarı aktarılır.

Her derlemeden sonra, yeni eklediğiniz veya değiştirdiğiniz birşeyler varsa yukardaki işlemi tekrarlayarak çok kısa zamanda çeviriyi tamamlayabilirsiniz.

Oluşan çeviri dosyasını projenizde "translations" dizini altına koyup projeyi tekrar derlediğinizde, artık çeviri dosyanız extension içerisini dahil olmuş olacaktır.

Sunucu ve web tarafındaki framework çevirisini ayrı bir yazıda paylaşıyor olacağım.

* OECD ülkelerinin üniversite mezunlarının dakika başına okuyabildiği kelime sayısı baz alınmıştır.
Size özel tekliflerimiz ve çözüm önerilerimiz için bize bilgilerinizi bırakın…
Sizi bilgilendirelim