SORU
27 Mart 2012, Salı


En iyi uygulama NSLocalizedString kullanarak

(Tüm diğerleri gibi) NSLocalizedStringbenim app ve yerleştirmek için kullanıyorum.

Ne yazık ki, birkaç vardır "sakıncaları" (değil kendisi NSLocalizedString hatası), dahil olmak üzere

  • Böyle büyük mükafat dizeleri için autocompletition. Bu çalışma sadece hata eğilimli ama aynı zamanda sıkıcı değil yapar.
  • Sadece eşdeğer bir dize zaten var çünkü bilmediğin bir dize yeniden tanımlıyor sonunda olabilir ("""ilk") Girin parola . vs Lütfen girin şifre
  • Otomatik tamamlama-sorun için Similarily, ""/yorum dizeleri, veya genstring başka bir dize için birden fazla yorum ile sona erecek copypaste . hatırlamamız gerekiyor
  • Eğer zaten bazı dizeleri yerelleştirilmiş sonra genstring kullanmak istiyorsanız, eski yerelleştirme kaybetmemek için dikkatli olmak gerekir.
  • Aynı dizeleri tüm proje Devletlerinde yayılmıştır. Örneğin, NSLocalizedString(@"Abort", @"Cancel action") her yerde kullanılır ve sonra Kod İnceleme NSLocalizedString(@"Cancel", @"Cancel action") dize kodu daha tutarlı hale getirmek için yeniden sorar.

9 *I* lokalize kodu her yerde strings.h ayrı bir dosya var. Örneğin

// In strings.h
#define NSLS_COMMON_CANCEL NSLocalizedString(@"Cancel", nil)
// Somewhere else
NSLog(@"%@", NSLS_COMMON_CANCEL);

Bu aslında kod tamamlama, değişken adları (genstring için çok gerek yok artık) değiştirmek için, tek bir yerde, ve otomatik yeniden oluşturulması için benzersiz bir anahtar sağlar. Ancak, bu doğal olarak (LocString.gibi yani yapısal olmayan #define tabloların bir bütün grup ile biten mal olur Ortak.İptal falan).

Bu oldukça iyi çalışıyor ise, siz projelerinizde bunu nasıl merak ediyorum. NSLocalizedString kullanımını kolaylaştırmak için başka yaklaşımlar vardır? Belki saklar bir çerçeve bile var mı?

CEVAP
17 NİSAN 2012, Salı


NSLocalizedString birkaç sınırlamaları vardır, ama mantıksız özel kod yazmak için Kakao bu kadar merkezinde yerelleştirme işlemek için, onu kullanmak zorunda olacak anlamı. Bu, küçük bir takım yardımcı olabilir, nasıl devam edeceğim işte. " dedi

Dizeler dosya güncelleme

genstrings dize dosyalarınızı, tüm önceki çeviriler atarak üzerine yazar. El ile varolan bir çeviri geri yüklemek zorunda kalmamanız update_strings.py eski bir dosta dosya ayrıştırma, genstrings çalışma ve boşlukları doldurmak için yazdım. Bu komut varolan dize dosyalarını mümkün olduğunca yakından onları güncellerken çok büyük bir fark önlemek için eşleştirmeye çalışır.

Dizeleri adlandırma

İlan: NSLocalizedString kullanırsanız

NSLocalizedString(@"Cancel or continue?", @"Cancel notice message when a download takes too long to proceed");

Mayıs sonunda belirleyici aynı dize başka bir kod, çatışma olarak İngilizce terim olabilir farklı anlamda farklı ortamlarda (OK Cancel gelir aklıma). Ben de hep anlamsız bir all-caps modülü-belirli bir önek ile dize ve çok kesin bir açıklama: kullanımı nedeni budur

NSLocalizedString(@"DOWNLOAD_CANCEL_OR_CONTINUE", @"Cancel notice window title when a download takes too long to proceed");

Aynı dize farklı yerlerde kullanarak

Eğer aynı dize birden çok kez kullanıyorsanız, ya da senin yaptığın gibi bir makro kullanmak veya bir örnek size göre değişken olarak önbellek denetleyicisi veya veri kaynağı olabilir. Bu şekilde bayat alabilir hangi açıklamayı tekrar ve her zaman kafa karıştırıcı ama aynı yerelleştirme, örnekleri arasında tutarsız almak zorunda kalmazsınız. Örnek değişkenleri simge olarak, en sık bu çeviriler üzerinde otomatik tamamlama kullanın ve "" sadece bir kere zaten. ortaya çıkabilecek olan belirli olanlar için dizeleri elle kullanmak mümkün olacak

Bu ipuçları ile Kakao yerelleştirme ile daha verimli olacağını umuyorum!

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 3dmmfavs

    3dmmfavs

    29 Kasım 2009
  • ibebrent

    ibebrent

    23 Temmuz 2007
  • Snazzy Labs

    Snazzy Labs

    9 Aralık 2008