2012-05-18 15 views
19

Genel olarak çeviri yöntemleri bir anahtar> değer eşlemesi alır ve bunu bir değere dönüştürmek için anahtarı kullanır. Artık çeviri anahtarlarınızı adlandırmak için iki farklı yöntem tanıyorum ve ekibim içinde en iyi yöntem gibi görünen fikir birliğine varmıyoruz.Çeviri dosyalarındaki anahtar değerler için en iyi uygulama

Yöntem 1: Kullanımı tam İngilizce kelimeleri veya cümleler:

NAME => Name 
ENTER_EMAIL => Please enter your email address 

Şahsen yöntemi 1. çünkü tercih:

Name => Name 
Please enter your email address => Please enter your email address 

Yöntem 2: durumu anlatan anahtar kelimeler kullanın Mesajın anlamını doğrudan gösterir. Çeviri mevcut değilse, anahtara geri dönebilirsiniz ve bu herhangi bir soruna neden olmaz. Ancak, bir çeviri sıklıkla değiştiğinde, tüm dosyaların güncellenmesi gerektiğinden yöntem hantaldır. Ayrıca daha uzun metinler için bu tuşlar çok büyük hale gelir. Bu, ENTER_EMAIL gibi tuşlar kullanılarak çözülür, ancak sözcük öbeği tamamen bağlam dışıdır. Özet çeviri anahtarlarının listesi çok büyük olacaktır, kullanımlarını açıklayan tüm anahtarlar için meta verilere ihtiyacınız vardır ve çarpışmalar daha kolay olabilir.

Her iki dünyanın da en iyi ya da üçüncü bir yöntemi var mı? Çeviri anahtarlarını uygulamanızda nasıl kullanıyorsunuz? Bizim durumumuzda bu bir php tabanlı bir web uygulamasıdır, ancak yukarıda genel olarak i18n hakkında konuşmak için yeterince genel sorun olduğunu düşünüyorum.

+0

İlginç bir soru. # 1'i de tercih etme eğilimindeyim, ancak durumun gerçekleşmesi durumunda melezleşiyorum. –

+1

İhtiyacım olan # 2'yi tercih ederim, tabi ki, bir İngilizce (veya orijinal dil) girişi var. Her bir kayıt, en son ne zaman değiştirildiğini ve güncellenmiş çeviri ihtiyacını işaret etmek için güncellendiğinde bir tarih/saat içermelidir. Ayrı ayrı, orijinal dilin ne olduğunu söyleyen bir kayıt saklanmalıdır. –

cevap

18

Bu, iOS/OSX geliştiricileri tarafından da karşı karşıya kalınan bir sorudur. Ve onlar için de yöntem 1'i varsayan bir standard tool called genstrings bile var. Ama tabii ki Apple geliştiricileri bu aracı kullanmak zorunda değil - Ben yapmam.

Yöntem 1 ile aldığınız güvenlik ağı güzel olsa da (örneğin bir dizeyi yerelleştirmeyi unuttuysanız anahtarı görüntüleyebilirsiniz), bunun da çakışan anahtarlara yol açabileceği dezavantajı vardır. Bazen gramer kuralları veya bağlamdaki farklılıklar nedeniyle, aynı metinlerden birinin özdeş parçası iki farklı şekilde yerelleştirilmelidir. Örneğin, "E-posta" için Fransızca çeviri, bir diyalog başlığı "E-posta" olacaktır ve eğer bir düğme ("E-posta" kelimesi Fransızca ise sadece bir isim ise "Envoyer un e-posta") olacaktır. Hem bir isim hem de fiil olan İngilizce'den farklı olarak fiil olarak kullanılamaz. 2. yöntemde, bu sorunu çözmek için EMAIL_TITLE ve EMAIL_BUTTON tuşlarına sahip olabilirsiniz. Ayrıca, bonus olarak, çevirmenlerin doğru bir şekilde tercüme etmelerine yardımcı olacak bir ipucu verir.

Yöntem 2'nin bir diğer avantajı, İngilizce metni ve tüm yerelleştirmelerinizde anahtarın güncellenmesi hakkında endişelenmenize gerek kalmadan İngilizce metnini değiştirebilmenizdir.

Bu yüzden yöntem 2'yi öneririm!

+0

"EMAIL_TITLE" ve "EMAIL_BUTTON" örneğiniz çok iyi, ancak bunun gerçekçi olduğunu düşünmüyorum. İngiliz geliştiricisi olarak, bu Fransız davasını bilmiyorsunuz. Yani ilk etapta "E-posta" (# 1) veya "EMAIL" (# 2) yazarsınız. Daha sonra Fransızca çevirmeniniz iki tuşa ihtiyacı olan mesajla geri gelir, böylece düğmeyi 'E-posta (düğme)' (# 1) veya 'EMAIL_BUTTON '(# 2) olarak değiştirin. Her iki yöntem için de süreç aynıdır, sonunda bir çarpışma var ve bunu çözmeniz gerekiyor. Bunun hakkında ne düşündün? –

+1

Geliştiricilerin birkaç uluslararasılaştırma kuralından haberdar olmaları gerekir. Belli bir dili bilmek zorunda değiller, öyle ki, bu durumda, bir metin parçasının farklı bağlamlarda yeniden kullanılabilir olması beklenemez (İngilizce'de bir sorun olmadığı durumlarda bile). Bu nedenle, uygulamanızı geliştirirken, bir "E-posta" düğmesi için yeni bir dize eklediğinizde, zaten "E-posta" yı görüyorsanız bile farklı bir bağlam için dize tablonuza bir giriş eklersiniz. – Clafou

+0

Birçok platform için bu yeniden kullanmama kuralının, UI görünümlerinin gruplar halinde yerelleştirildiği ve dizeleri her metin parçasını dize tablolarından yüklemek için kod yazmamanızdan kaynaklandığına dikkat edin (bu nedenle genellikle aynı parçanın birden çok örneğini alırsınız) çevirmek için ingilizce metin, ama bu bağlam farklı olabilir.) – Clafou

1

Neden her iki dünyayı da kullanmıyorsunuz? Kısa dizeler için yöntem # 1 ve tam cümleler olan uzun dizeler için yöntem # 2 kullanıyorum. Ben de aynı dosyada karıştırmaktan korkmuyorum. Yeni bir uygulama sürümünde kullanıcı deneyimi değiştirilirse

Örneğin, aşağıdaki dizede metni değiştirebilir:

"screen description" = "Tap the plus button to add a new item. Tap an item for more options or to edit its details."; 

Yani burada o uygulamak yöntem 2. mantıklı. Ancak, aşağıdaki örnekte olduğu gibi basit dizeleri, yöntem 1. daha yararlıdır: Genel olarak

"Preferences" = "Preferences"; 

kişi genellikle bana kısıtlayıcı görünen şeyleri standardize çalıştığınızda. Kişisel olarak, birkaç yöntemin geçerli olduğu daha "anarşist" bir yaklaşımı tercih ederim (sadece bu yöntem # 1'deki yöntem # 2'de değil, aynı zamanda örneğin geliştiricilerden oluşan bir ekip kodlama stili üzerinde savaşırken).

İlgili konular