2011-12-06 21 views
7

İlk yerelleştirilmiş uygulamamı oluşturmaya çalışıyorum. NSLocalizedString (genstrings aracı ile kullanım için) kullanılarak kodda tüm dizeleri var. Şimdi ben ibtool'a çarpıyorum. Artımlı lokalizasyon nasıl çalışır? Ben artan dosya alırımArtımlı yerelleştirme nasıl çalışır?

$ ibtool --previous-file path/to/prev.xib \ 
--incremental-file path/to/inc.xib --localize-incremental \ 
--write path/to/new.xib mod.xib 

: Manuel sayfaya ilgili olarak, böyle bir şey yazmalıyım? Sürüm kontrolünü (git/svn) kullanıyorum, "eski" dosya birkaç taahhüt önce, artımlı dosya diff ve path/to/new.xib yeni üretilen xib dosyasıdır. mod.nib benim için bir gizem. Herkes bana bunun nasıl çalıştığını açıklayabilir mi? Ayrıca - önceki sürümlerin bulunmaması durumunda (örn. Artımlı değil, ancak ilk lokalizasyon) bir xib'in yerelleştirilmesini nasıl başlatabilirim?

cevap

12

Özellikle --incremental-file için kendi terminoloji seçiminin karışıklığa neden olduğunu düşünüyorum. Buradaki fikir, iki dilde (kaynak ve hedef) xib'in eski bir sürümüne sahip olmanız ve o zamandan bu yana kaynak-dilinizde değiştirdiğiniz ve hedef dil versiyonunu eşleştirmek istediğinizi güncellemenizdir.

Bir örnek verelim. Daha önce ingilizce (kaynak dilde) home.xib'ini aldınız ve onu Fransızcaya (hedef dili) çevirecek birini aldınız. O zamandan beri yeni bir özellik geliştirdiniz ve şimdi bir UILabel ve bir UITextField eklediğiniz ve etrafında bir şeyler taşıdığınız ingilizce bir home.xib sürümü güncellemesine sahipsiniz. Gösterdiğiniz komut, yeni bir UILabel ve UITextField ürününe sahip olmasının yanı sıra, ingilizce gibi çevrilmiş bir dosyaya sahip olmanız için, Fransızca'da home.xib dosyasının güncellenmiş bir sürümünü almanıza yardımcı olabilir. Yeni UILabel ve UITextField'ınızda belirlediğiniz herhangi bir metin içeriğinin İngilizce olarak ekleneceğini ve daha sonra Fransızca xib'e çevrilmesinin gerekeceğini unutmayın (ancak bunu --import-strings-file ekleyerek ve çevirileri bir dosyada vererek otomatikleştirebilirsiniz).

yüzden bu örnekte gösterdi komutu eşlerseniz:

  • --previous-file path/to/prev.xib eski İngiliz xib
  • --incremental-file path/to/inc.xib
  • --write path/to/new.xib oluşturulacak yeni Fransız xib belirten eski Fransız xib belirtir belirtir
  • mod.xib
xib yeni İngilizce belirtir

Süreci nasıl başlattığınızla ilgili diğer sorularınız için, gerçekten de, bu sizin xib'lerinizi nasıl yerelleştireceğinize bağlıdır. Açıkça, xib'lerin yeni dil sürümlerini oluşturacaksınız (XCode'da, sadece xib dil listesine bir dil eklediğinizde ve yerelleştirilmiş xib'ler otomatik olarak oluşturulur). Ve sonra bunları Arabirim Oluşturucusu'nda kendiniz yerelleştirirseniz, o zaman yerelleştirilmiş xib'lerde ilgili değişiklikleri (metnin çevirisi ve gerekli yeniden boyutlandırma) gerçekleştirirsiniz. Ya da xibs içindeki metni .strings dosyalarına ayıklayabilir, çevirebilir ve bu xib'lerin ilgili dil sürümüne enjekte edebilirsiniz. Bunun için yine ibtool'ü kullanacaksınız, ancak ekstraksiyon fazı için --generate-strings-file ve enjeksiyon aşaması için --import-strings-file ile birlikte kullanacaksınız.

+0

"eski İngilizce'de kullanılan xib" Ben kullanırsanız sürüm kontrolü üreten herhangi bir ipucu? – Eimantas

+0

Tüm xib'lerin sürüm kontrolünde olduğunu varsayarak (kesinlikle olmalı!), Eski İngilizce xib, sürüm geçmişinizde kullanılabilir. İngilizce'nin sizin temel diliniz olduğu, çeviri yapacağınız varsayım üzerinde çalışıyoruz. – Clafou

+0

Doğru, sadece bu eski ingilizce dosyasını almak için son güncellenmiş çeviri sürümünden kontrol etmeliyim. Bu biraz sıkıcı görünüyor. Sanırım yapabileceğim başka bir şey yok. Cevabınız için teşekkürler! – Eimantas

3

Değişiklikleri farklı bir dile geçirmek için gerekli adımları (yukarıdaki answer numaralı belgede açıklandığı gibi) otomatik hale getiren git projeleri için bir komut dosyası yazdım.

Kullanımı:

migrate_changes.sh <target_language> <xib file without ending> 

Örnek: ingilizce xib dosyasına değişiklikleri taahhüt sonra

, senin kaynak klasörün kökünde komut dosyasını çalıştırın.

migrate_changes.sh de MyViewController 

Kaynak:

#!/bin/sh 

LANG_FROM='en' 
LANG_TO=$1 
XIB_FILE=$2 

FROM_FILE=${LANG_FROM}.lproj/${XIB_FILE}.xib 
PREV_FILE=${LANG_FROM}.lproj/${XIB_FILE}_old.xib 
TO_FILE=${LANG_TO}.lproj/${XIB_FILE}.xib 

# checkout old version of xib file 
git show `git log -2 --format="%H" $FROM_FILE | tail -n 1`:./$FROM_FILE > $PREV_FILE 

# merge changes 
ibtool --previous-file $PREV_FILE --incremental-file $TO_FILE --localize-incremental --write $TO_FILE $FROM_FILE 

# remove previous version 
rm $PREV_FILE