Yerelleştirme dizesi kaynakları nasıl düzenlenir?


14

Birçok küçük paketten oluşan büyük bir uygulama geliştiriyoruz. Her paketin yerelleştirme için kendi kaynak dosyaları kümesi vardır.

Yerelleştirme dizelerini düzenlemek ve adlandırmak için en iyi yaklaşım nedir?

İşte şimdiye kadar düşüncelerim:

Kopyaları işleme

Aynı metin ("Posta kodu" diyelim) belirli bir pakette birden çok kez oluşabilir. Programlama içgüdüsü (DRY) tüm olaylarla paylaşılan tek bir dize kaynağı oluşturmamı söylüyor .

Daha sonra, bir çevirmen bazı yerlerde uzun bir çeviri ("Postleitzahl") ve daha az yer olan yerlerde daha kısa bir çeviri ("PLZ") seçmek isteyebilir. Veya bazı olaylara iki nokta üst üste koymaya karar verebiliriz ("Posta kodu:"), ancak diğerlerine değil. Veya bazı yerlerde farklı bir büyük harf kullanımı ("posta kodu") gerektirebilir. Tüm bu argümanlar , içerikleri aynı olsa bile, kullanım başına bir kaynak oluşturmaya işaret eder .

Adlandırma

Yinelenenleri ortadan kaldırmayı hedeflersek, kaynakları içeriğe göre adlandırmak mantıklıdır , belki de önekle kullanım türüne işaret eder. Bu nedenle labelOK= "Tamam" , messageFileTooLarge= "Dosya maksimum dosya boyutunu aşıyor olabilir." ve labelZipCode= "Posta kodu" .

İçeriğe göre adlandırma, biçim bağımsız değişkenlerini doğal olarak işleme avantajına sahiptir: Kaynak messageFileHas_0_MBWhileMaximumIs_1_MB, gerçek dosya boyutu ve maksimum dosya boyutu olmak üzere iki biçimlendirme bağımsız değişkeni alır.

Bununla birlikte, kopyalara izin verirsek, yalnızca içeriğe göre adlandırma mantıklı değildir. Benzersiz kaynak adları elde etmek için, bir şekilde kaynak adına kullanım yerini dahil etmeliyiz . Tanımlayıcılar biraz daha uzun olma eğilimi göstermesine rağmen, bu grafiksel denetimler için geçerlidir: fileSelectionConfirmationButtonText= "Tamam" , customerDetailsTableColumnZipCode= "Posta Kodu" . Ancak, görsel olmayan kod dosyaları için zorlaşır. Sonunda nerede görüntüleneceğini bilmiyorsanız, bir dizenin belirli bir kullanımını nasıl adlandırırsınız? Kod dosyası ve işlev adına göre? Bana çok sakar ve kırılgan geliyor.

Sonuçta, kopyalara izin vermeye eğildim, ancak bunu destekleyen tutarlı bir adlandırma düzeni bulmak için mücadele ediyorum.

Düzenleme: Bu sorunun iki yönü vardır: Kaynaklar nasıl düzenlenir (KURU vs yinelenen) ve nasıl adlandırılır . Şimdiye kadar cevaplar ilk yön üzerinde yoğunlaştı. Adlandırma kuralları ile ilgili bazı geri bildirimler için teşekkür ederiz!


1
Her biri loc setlerine sahip küçük paketleriniz varsa, çok sayıda kopya görüp görmeyeceğiniz sorusu ortaya çıkar. Kopyaları ile gitmek istiyorum ve kod tanımlayıcıları hakkında çok fazla endişe olmaz.
Martin Ba

"Sonunda nerede görüntüleneceğini bilmiyorsanız, bir dizenin belirli bir kullanımını nasıl adlandırırsınız?" Bu, mantığı ( nerede gösterileceğine karar verme ) ve sunumu (aslında göstererek) karıştırdığı tasarımla ilgili bir kusur belirtisi olmaz mı ? Bölgesel verilerle bazı metinler oluşturmanız, ancak taşıyabileceğiniz başka bir iç veri nesnesi gibi davranmanız çok garip olurdu.
Alpha

Yanıtlar:


8

Her durumda belirli bir dize kullanılır her durumda tam olarak aynı olduğundan kesinlikle emin olamaz zaman çoğaltma kabul ediyorum.

İki etiket her zaman İngilizce (veya ana diliniz) olarak aynı dizeyi içeriyor olsa bile, bunların tüm dillerde aynı olması gerekmez. Çoğaltmayı kabul etmek size (veya daha çok çevirmenlere) bu tür durumlarla başa çıkmak için gereken esnekliği verebilir.

Örnek olarak: - Bağlama bağlı olarak - Almanca'da "Zustand" ya da "Bedingung" a çevrilebilecek (diğer birçok olası çevirinin yanı sıra) bir "Koşul" etiketini düşünün.



2

Bazı kopyaları kabul edin.

Ek kontroller oluşturarak birden fazla çeviriden kaçınabilirsiniz. Örneğin, zaten metinlerini içeren bir CancelButtonve bir OKButtonve şimdi İptal / Kısalt Tamam / Tamam yalnızca bir kez çevrilmelidir. Ama bu neredeyse özel bir durum.


2

Bunu şirketimde ele alma şeklimiz:

Adlandırma kuralı: Etiketleri sınıf / bölüm / form / vb. İle önek olarak adlandırırız . Örneğin loadFile_loadButton, loadFile_fileNameLabel, loadFile_cancelbir yük Dosya diyalog ait olan tüm etiketlerdir. Bu altı çizili adlandırma kuralı en yaygın olmasa da, okunabilirliği ve "gruplanabilirliği" geliştirdiği için daha standart kurallara tercih ediyoruz: etiketlere kıyasla etiketlerin hangi öğeye ait olduğunu ve her etiketin neyi temsil ettiğini görmenin ne kadar kolay olduğuna dikkat edin adlandırılmış loadFileLoadButton, loadFileNameLabelve loadFileCancel. Farkın o kadar büyük olmadığını düşünebilirsiniz, ancak binlerce etiketiniz olduğunda bileşik etkisi buna değer.

Başlık yorumları: Etiket adlarını öneklemeye ek olarak, etiket gruplarını açıkça tanımlamak için kaynak dosyalarına "başlık" yorumları da ekleriz. Bu şekilde, belirli bir sınıf / bölüm / form / vb. İle ilgili belirli etiketleri değiştirmek ya da eklemek isteyen biri, söz konusu öğeyle ilgili tüm etiketleri tek bir yerde, tek bir başlık altında bulabilir ve kolayca etiket eklemeye veya değiştirmeye devam edebilir diğer unsurlar için çevirileri kırmayacaklarını bilerek (IMHO, bu da tekrarlamaya neden izin vermeniz gerektiğine dair çok güçlü bir nokta).

"Gerekçeli" kopyalar istenir: Yukarıda belirtildiği gibi, bu uygulamalar kesin olarak yinelenen etiketlere yol açacaktır, ancak bununla ilgili bir sorun görmüyoruz (bunun Ticaret Araçları'nda nasıl ele alınacağı hakkında daha fazla bilgi).

Diğerlerinin de belirttiği gibi, bir dilde bir etiket, sunulan bağlamlara bağlı olarak diğer dillerde iki veya daha fazla farklı şekilde çevrilebilir. Etiketleri "birleştirirseniz", çevirmenin bulunduğu tüm bağlamlara uyan tek bir etiketle gelmesi gerçekten zor olur. Gördüğümüz gibi, "haklı" kopyalara izin vermek, aynı bağlamda aynı şeye değinmedikleri sürece, yerelleştirmenin kalitesini artırmaya yardımcı olur (bu, "haklı" anlamına gelir).

Ticaret araçları: Tercümelerinizi yaparken mümkün olduğunca etkili olabilmek için, paketlerinizde bulunan benzer etiketleri arayan kendi aracınızı oluşturabilir ve çevirilerini yeni etiketler için varsayılan değerler olarak sunabilirsiniz, hatta gibi mevcut hizmetleri kullanmak bu bir aracı yeni etiketler için varsayılan olarak size birkaç çeviri seçenekleri sunacak beri, yeni etiketlerin çevirisidir bir esinti (daha onlar tekrarlanan eğer öyleyse birkaç kez yaparak, sadece söz gibi araçları sağlamak, ).

Özetlemek: Gerekçelendirilmiş çoğaltma ve etiketlerin bağlamsal bir şekilde gruplanması çevirmenlerin işlerini yapmalarına gerçekten yardımcı olur. Büyük zaman. Bir düşünün: Bağlamın olması, çevirmenin doğru çeviriyi seçmesine yardımcı olmak için uzun bir yol kat eder. Ve "haklı" yinelemelere izin vermek, bazı bağlamlara kötü uyan bir çeviri seçmek zorunda kalmama çatışmasını ortadan kaldırır (ancak genel olarak en iyi uyumdur).

Umarım bu yardımcı olur!


1

Bunu geçmişte yaptığımda, tam cümleleri içeren kaynak dosyasının yoluna gittik. Tam olarak aynı cümle tekrar tekrar kullanıldıysa, ancak bir cümlenin içindeki tek tek kelimeler olsaydı, bu kelimeler çoğaltılır.

Kaynak dosyada sadece İngilizce ifadelerin bir listesini ve ardından çeviriyi içeren bir çerçeveye bağlandık (hızlı arama için sonunda bazı indeksleme verileri ile).

"ZIP Kodu" alan adı veya "Tamam" düğmesi gibi küçük veri bilgi istemleri veya düğmeler için "ZIP Kodu" dizesini ve ardından çeviriyi saklar ve bunu tam dizenin gerekli olduğu her yerde kullanır. Ancak (bir dizeyi manuel olarak ayırmadıkça) bir cümlede görünen "Posta Kodu" için kullanmaz.

Posta Kodu örneğinizi kullanarak, bunu kendi başına çevirmeye çalışır ve kullanan tüm cümlelerde değiştirirseniz çok çok kötü bir çeviri elde edersiniz.

Örneğin, "Posta Kodu girilmelidir" ifadesinin "Girilen Posta Kodu olması gerekir" ifadesinin başka bir dilde çevrilmesi gerekebilir. Eğer bir cümleyi doğrarsanız, başka bir dilde gerekli olan kelimeleri tersine çeviremezsiniz.

Bu yüzden İngilizce'ye kötü yapılmış bazı çeviriler çok saçma görünüyor, bunu yapan kişi tüm cümleleri değil, tek tek kelimeleri tercüme etti.

Cümleleri parçalamadan bir bütün olarak çevirmenin her zaman en iyisini bulduk. Eklenmesi gereken veriler için yer tutucularımız vardı (örn. "Parça Numarası @ 1 yedeklidir") ve çevirmen yer tutucuyu iyi bir çeviri için istedikleri konuma taşıyabilir.

Ancak, tam olarak aynı cümleyi, aynı veri istemini veya aynı düğme etiketini vb. Kullanan yerlere izin vermenin çevirileri paylaşmanın iyi olduğunu bulduk. Bu asla bir sorun olarak ortaya çıkmadı ve çevirmen için zaman / maliyet tasarrufu sağladı.


Kesinlikle. Bunu da yapıyoruz. Asla çevirideki etiketleri / cümleleri ayırmaya çalışmayın.
Martin Ba

1
Korkarım bu gerçekten soruma cevap vermiyor. Cümlelerin asla parçalanmaması gerektiğine kesinlikle katılıyorum. Ancak, çoğu kaynak cümle değil, basit etiketlerdir (düğme metinleri, tablo başlıkları, form etiketleri vb.).
Daniel Wolf

Bu durumda bir kez saklayıp tekrar kullanırım. Belki de doğrudan yaptığınız şeyin kapsamı dışındaki bir husus, bir çevirmenin maliyetidir. Aslında dünyadaki yeniden satıcılarımıza bunu kendileri için fonlama ve uygulama içindeki çeviriyi test etme olanağı sağladık. Kesinlikle yinelenmekten kaçınmak istediler.
RosieC

Birkaç büyük uygulamayı İspanyolca'dan İspanyolcaya çevirmeye çalıştım ve doğru çeviri araçlarına sahipseniz, kopyaların bir sorun olmadığını (hatta arzu edilir) söyleyebilirim. Bunun nasıl etkili bir şekilde ele alınacağına dair cevabımı görün.
carlossierra

0

Adlandırma konusundaki düşünceleriniz iyi.

Hedefler

  • Yerelleştirilmiş metin için ortak bir etiket (yani değişken adı) tanımlayın.
  • Etiket "zihin boyutunda" olmalıdır. Bu ... açık olduğu kadar kısa pratiktir.
  • Etiketler, öngörülebilirliği en üst düzeye çıkarmak ve hatırlamak için tutarlı bir format izlemelidir.

uygulama

  • İyi bilinen kısaltmaların tutarlı kullanımı ile bilişsel yükü azaltın (örn. Msg = mesaj, lbl = etiket, btn = düğme, ...)
  • Araçlar değişkenleri / etiketleri alfabetik listelerde sunar, bu nedenle ilgili etiketler birlikte gruplandığında insan araması en iyisidir. Adları en genelden en spesifikine hiyerarşik hale getirin. (yani msgFileMissing, msgFileSaved, msgFileDeleted).
  • İngilizce bir fiil-isim sıralı dildir. Birçok (en çok?) Diğer diller isim-fiildir. İsim-fiil hiyerarşik gruplama için en iyi sonucu verir.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.