Çevrilebilir modüller/Güncel çözümler

This page is a translated version of the page Translatable modules/Proposed solutions and the translation is 100% complete.

Çevrilebilir modüller projesi, modül yerelleştirmesi için yeni bir çerçeve oluşturmaya çalışıyor.

Burada tartışma için önerilen birkaç depolama çözümü önerilmiştir.

Bu danışmanlığın ana hedeflerinden biri, bu çözümlerden hangisinin uygulanacağına ve tüm modül geliştiricilerine önerileceğine karar vermektir.

Çevrilebilir sayfa

Açıklama

Meta'da Module:ModuleMsg benzer bir şey kullanın, ancak standartlaştırılmıştır:

  • Tüm mesajları, çeviri için işaretlenmiş normal bir vikimetin sayfasına koyun.
  • Bunları yüklemek için standart Lua işlevlerine sahip olun (her vikide Module:ModuleMsg gibi bir modül yerine).

Avantajlar

  • Çeviri hizmetlileri çevrilmesi gereken sayfaları işaretlemeye aşina.
  • Şablonlarda da işe yarayabilir.
  • Her çeviri bir viki sayfasıdır. Katkı, geçmiş, ayrı işleme vb. için iyidir.

Dezavantajlar

  • Varsayılan olarak, çeviri birimi işaretleri sayılardır. Numaraları mesaj anahtarı olarak kullanmak kodu okunamaz hâle getirir. Rakamları dizelerle değiştirmek mümkündür, ancak yukarıda belirtildiği gibi, Translate uzantısında bunu yapmanın yolu şu anda iyi belgelenmemiştir. Bu, muhtemelen bu Translate uzantısı özelliğinin uygun şekilde belgelenmesi ve standartlaştırılmasıyla çözülebilir.
  • Parametrelerin ($1 vb.) ve diğer viki sözdizimi i18n özelliklerinin (GENDER, PLURAL, vb.) nasıl çalışacağı açık değildir. Vikimetin içerik sayfalarıyla mutlaka uyumlu olmayabilirler.
  • Bu, bir viki içinde modül yerelleştirmesi için işe yarayabilir, ancak modüller küresel hâle geldiğinde mutlaka çalışmayacaktır.
  • Çeviri için sayfaları aramak için bir çözüm gerekli olacaktır. Şu anda mesaj grubu seçici, çevrilebilir tüm sayfaları gösteriyor.
  • Küresel modüller ve şablonlar çağında, vikilerde yerel olarak nasıl özelleştirileceği belirsizdir.
  • Her ileti çevirisi ayrı ayrı yüklenirse ve geri dönüşlerin işlenmesinde olası performans sorunları. messagecollection Eylem API'si vardır, ancak çevirileri yüklemek için muhtemelen Lua veya Vikimetin API'si yoktur.

JSON .tab file in the Data namespace on Commons

Description

Use something similar to what Module:TNT is doing, but formalized:

  • Belgeler için qqq dahil olmak üzere tüm kaynak iletileri MediaWiki uzantılarında olduğu gibi Commons'daki Veri ad alanındaki bir JSON dosyasında "banana" biçiminde depolayın.
  • Aynı sözdizimi, çekirdek ve uzantı mesajları için kullanılabilir.
  • Kaynak mesajları yüklemek ve çevirileri dile göre JSON dosyalarına yazmak için Translate uzantısını geliştirin.
  • Mesajları yüklemek için standart Scribunto kitaplığına Lua işlevleri ekleyin.
  • Translate'in mesaj grubu seçicisinde uygun şekilde görüntülenmek üzere çevrilebilir dosyayı düzenlemek üzere başka bir JSON dosyası kullanın.

Avantajlar

  • Dosya biçimi, uzantılardakiyle aynıdır.
  • Bu sayfalara modüllerden küresel olarak erişilebilir.
  • Ham sayfalar, istenirse tüm çevirileri içeren JSON'u yerel nesneye dönüştürecek olan JavaScript küçük araçları için kolayca kullanılabilir. Tek bir dili veya yedeği almak için bir API gerekli olabilir, bu da ağ erişimini iyileştirir. JavaScript küçük araçları, tüm iletiler için istemci önbelleğinde depolanan tek bir sorguyu tercih eder.

Dezavantajlar

  • Translate uzantısında yeni bir dosya biçimi desteği (FFS) geliştirilmeli ve sürdürülmelidir. MessageLoading'in yanı sıra yeni bir MessageGroup türüne ihtiyacımız olacak.
  • Küresel modüller ve şablonlar çağında, vikilerde yerel olarak nasıl özelleştirileceği belirsizdir.

MCR yuvasındaki JSON dosyası

Açıklama

“Veri ad alanındaki JSON .tab dosyasına” benzer, ancak:

  • Belgeler için qqq dahil olmak üzere tüm kaynak iletileri MediaWiki uzantılarında olduğu gibi Commons'daki Veri ad alanındaki bir JSON dosyasında "banana" biçiminde depolayın.
    • (Tüm dilleri tek bir JSON yapısında mı yoksa dil başına bir yuvada mı depolayacağınıza karar vermeniz gerekir.)
  • JSON dosyası, modülün kodunu depolayan viki sayfasıyla birlikte bir MCR yuvası olarak depolanır.
  • Aynı sözdizimi, çekirdek ve uzantı mesajları için kullanılabilir.
  • Kaynak mesajları yüklemek ve çevirileri dile göre JSON dosyalarına yazmak için Translate uzantısını geliştirin.
  • Mesajları yüklemek için standart Scribunto kitaplığına Lua işlevleri ekleyin.
  • Translate'in mesaj grubu seçicisinde uygun şekilde görüntülenmek üzere çevrilebilir dosyayı düzenlemek üzere başka bir JSON dosyası kullanın.

Avantajlar

  • Modül ile zarif bir şekilde saklanır.
  • Modül küresel hâle gelirse, veriler de onunla birlikte küresel hâle gelir.
  • MCR yuvaları oluşturmak bazı ayrıcalıklar gerektirebilir, ancak bu muhtemelen sorun değil çünkü yeni mesaj dosyaları oluşturmak zaten tamamen yeni başlayanlar için değil, düzenlemeye hâlâ çoğu editör tarafından erişilebilir.

Dezavantajlar

  • Yuva desteği oluşturmak için biraz geliştirme gerektirecektir.
  • Translate'de yeni bir FFS'nin geliştirilmesi ve sürdürülmesi gerekecektir. MessageLoading'in yanı sıra yeni bir MessageGroup türüne ihtiyacımız olacak.
  • Küresel modüller ve şablonlar çağında, vikilerde yerel olarak nasıl özelleştirileceği belirsizdir.
  • MCR yuva yaklaşımının ortak dezavantajı: İzinler ve geçmiş tamamen karışık. Kod programlama, çevirilerle aynı koruma düzeyine sahiptir, her çevirmenin etkin kodu değiştirmesine izin verilir. Küresel programlamada etkili değişikliklerin tarihi yok, ancak çeviri düzenlemeleri arasında boğuluyor. Koruma ve geçmiş ayrılacaksa, bunlar ayrı sayfalardır ancak MCR değildir.

TemplateData

Açıklama

Yukarıdaki JSON tekliflerine benzer, ancak JSON TemplateData içinde depolanır:

  • Tüm kaynak mesajları, modülü kullanan bir şablonla ilişkili TemplateData'da bir JSON değeri olarak saklayın. Daha büyük bir JSON yapısının parçası olmaktan başka, format, MediaWiki uzantılarında olduğu gibi, dokümantasyon için qqq dahil olmak üzere “banana” formatı ile aynıdır.
  • Aynı sözdizimi, çekirdek ve uzantı mesajları için kullanılabilir.
  • Kaynak mesajları yüklemek ve çevirileri dile göre JSON dosyalarına yazmak için Translate uzantısını geliştirin.
  • TemplateData'yı ve mesajları yüklemek için Lua işlevlerini standart Scribunto kitaplığına ekleyin.
  • Translate'in mesaj grubu seçicisinde uygun şekilde görüntülenmek üzere çevrilebilir dosyayı düzenlemek üzere başka bir JSON dosyası kullanın.

Avantajlar

  • Mevcut TemplateData teknolojisi ile süreklilik.
    • Özellikle TemplateData'nın uluslararasılaştırma için zaten bir desteği vardır, ör. şablon açıklaması birkaç dilde olabilir.
  • Anahtarlar TemplateData düzenleyicisi aracılığıyla yönetilebilir (ancak bunun için düzenleyici kullanıcı arayüzünde güncellemeler gerekir).
  • Teknoloji daha sonrasında şablonlarla da paylaşılabilir.
  • TemplateData, MCR'ye (görev T56140) taşınırsa, oraya da taşınır.

Dezavantajlar

  • There is a hard-coded limit of 64 KiB (gzipped) in the TemplateData extension’s code. While this is enough room for something like 700 messages, we have about 400 languages to manage. When using the rate at which MediaWiki core messages are localized, there is room for only 20 messages.
  • Scribunto'ya (görev T107119) TemplateData desteği eklenmesini gerektirir.
  • Translate'de yeni bir dosya formatı desteğinin (FFS) geliştirilmesi ve sürdürülmesi gerekecektir.
  • Küresel modüller ve şablonlar çağında, vikilerde yerel olarak nasıl özelleştirileceği belirsizdir.

MediaWiki alanındaki sayfalar olarak mesajlar

Açıklama

  • Çekirdek ve uzantı mesajları gibi çevrilebilir mesajları MediaWiki ad alanında saklayın.
  • Viki sayfası olarak depolanan bir JSON veya YAML dosyası kullanarak Translate için mesaj grupları oluşturun. Bu, boşlukla ayrılmış listeler olarak zaten desteklenmektedir (WikiMessageGroup), ancak vikinin içinde grupları tanımlamaya açık bir mekanizma yoktur.

Avantajlar

  • Translate işlemi için çoğunlukla doğaldır (ancak mesaj grubu düzenleyicisi için destek muhtemelen geliştirilmelidir).
  • Scribunto'nun işlemesi çoğunlukla doğaldır; mesaj yükleme ayrıştırma işlevleri zaten mevcuttur.
  • Modüller, çekirdek ve uzantılardan gelen mesajların özelleştirildiği şekilde küresel hale geldiğinde yerel vikilerde özelleştirilebilir.

Dezavantajlar

  • Mesajları ayrı ayrı oluşturmanın yanı sıra listelemenin çifte görevi.
  • Mesajların oluşturulması, sistem hizmetlisi veya düzenleme arayüzü izinleri gerektirecek, bu da kapsamlı modül geliştirme ve hata düzeltmeyi çok daha az kişi için erişilebilir hâle getirecektir.
  • Paket eksikliği. Birçok dağıtılmış geliştirme ekibi, TemplateData veya JavaScript küçük aracının eşlik ettiği modül, global şablon paketleri oluşturacak ve bakımını yapacaktır, ancak benzer hedeflerin paketleri arasında adlandırmada çakışma olmamalıdır. Paket başına paketlenmelidir.

Lua table

Description

Do it similarly to existing solutions in Module:I18n on Commons and Module:Wikidades/i18n on the Catalan Wikipedia, but:

  • Lua tablo formatını standartlaştırın: Dile göre indekslenen birçok çeviriye işaret eden tek bir mesaj anahtarı mı yoksa birçok mesaj anahtarına işaret eden dil kodları mı olduğuna karar verin.
  • Bu mesajları yüklemek için Scribunto standart kitaplığına işlevler ekleyin.
  • Bu dosya biçimini Translate ile okumak ve yazmak için destek ekleyin.

Avantajlar

  • Lua için doğal.
  • En azından bazı mevcut çözümlerle süreklilik.

Dezavantajlar

  • Bu, hataya açık ve daha az güvenli olan gerçek koddur. (Daha önce PHP dizilerinde mesajlarımız vardı ve ondan uzaklaştık.)
  • Lua için bu doğal, ancak ya Scribunto diğer programlama dilleri için destek alırsa? JavaScript, Python, Rexx vb. desteklemek için yinelenen istekler var.
  • Tire içeren dil kodları, açık olmayan ve hataya açık olmayan köşeli parantezlerle yazılmalıdır.

Önerilen çözümler karşılaştırma tablosu

Özellik Çevrilebilir sayfa Commons'daki Veri ad alanındaki JSON .tab dosyası Bir MCR yuvasındaki JSON dosyası TemplateData Mesajlar MediaWiki alanı Lua tablosu
Translate değişiklikleri çevirin (“Mühendislikle ilgili hususlar” ayrıntılarda bakın) küçük büyük büyük büyük küçük büyük
Kaynak mesajın düzenlenebilmesi için izin gerekiyor Çeviri için işaretlemek Hayır Yuva yaratmak için Hayır Evet - düzenleme arayüzünün sistem hizmetlisi Hayır
FFS'yi çevirin Yok Büyük Büyük Büyük Yok Büyük
Viki üzerinde özelleştirin Belirsiz Belirsiz Belirsiz Belirsiz Büyük ihtimalle kolay ancak performans sorunları var Belirsiz
Çekirdek ve uzantı benzeri Hayır Çok benzer Çok benzer Çoğunlukla benzer Evet, ancak yalnızca viki üzerinde editörleri için Hayır
Okunabilir mesaj tuşları Translate içinde düzeltilmesi gerekiyor Evet Evet Evet Evet Evet
İçe aktarma ve dışa aktarma Kolay değil Kolay değil Kolay Kolay Kolay değil Büyük ihtimalle kolay
Aynı vikideki şablonlarda da kullanılabilir Direkt Modül üzerinden Modül üzerinden Modül üzerinden Direkt Modül üzerinden
Fuzzy yapmanın ele alınması Muhtemelen zaten yapıldı Önemsiz çalışmaya ihtiyaç duyar Önemsiz çalışmaya ihtiyaç duyar Önemsiz çalışmaya ihtiyaç duyar Muhtemelen zaten yapıldı Önemsiz çalışmaya ihtiyaç duyar

Daha fazla bilgi