Çok dilli iPhone ve iPad uygulamaları için iOS yerelleştirme kılavuzu. Yinelenen Dizeleri Yöneten Çok Dilli iPhone ve iPad Uygulamaları için iOS Yerelleştirme Kılavuzu

tercüme ediyoruz yabancı Diller bilgisayar programları, oyunlar ve çevrimiçi uygulamalar.

Arayüz dizesi kaynaklarına ek olarak çeviri de gerçekleştireceğiz yardım sistemi, pazarlama metinleri, web sitesi. Gerekirse video klibin niteliksel olarak yeniden seslendirilmesini veya yeniden çekilmesini, grafiklerin yeniden çizilmesini, metinlerin istenilen dilde yeniden yazılmasını sağlayacağız.

Tüm çeviriler, ana dilini konuşan profesyonel tercümanlar tarafından yapılmaktadır. 68 dile ve diğer dil çiftlerine çeviri yapıyoruz.

Masaüstü, tarayıcı ve mobil oyunların yerelleştirilmesi

Mobil ve oyun projelerinin yayıncıları ve geliştiricileriyle birlikte çalışarak, mevcut uygulamalar iOS, Android ve HTML5 için 60'tan fazla dilde. Uygulamaların dize kaynaklarını çevirmenin yanı sıra, aynı zamanda açıklamaları da yazıp çeviriyoruz. Uygulama mağazası Ve Google Oyun.

Dil testi

Uygulamanın yerelleştirilmiş sürümü derlendikten sonra çevirmenin/yerelleştiricinin bunu işletim sisteminin ulusal sürümünde test etmesi gerekir. Bu tür dilsel testler sırasında, yerelleştirici sorunlu alanların (çevrilmemiş, çok uzun satırlar, yanlış kodlama veya metin yönü, yanlış bağlam) ekran görüntülerini alacak ve geliştiriciyle birlikte kaynak dosyalarında gerekli değişiklikleri yapacaktır.

Başvuruyu kendiniz veya üçüncü taraf bir yüklenici tarafından tercüme ettiyseniz bizden dilsel yerelleştirme testi sipariş edebilirsiniz.

Maliyet hesabı

Yerelleştirme ve çeviri maliyeti, metnin hacmine (boşluklu karakter sayısına) göre hesaplanır. Çeviri fiyatlarına göz atın. Hesaplama sırasında etiketler, anahtarlar ve işaretleme dikkate alınmaz.

Bu gönderi, mevcut her şeyi sistemleştirme girişimidir. şu an Uygulama yerelleştirmesi hakkında bilgim var.

“Kendimiz için” programlar yazarken bir şekilde yerelleşmeyi, uluslararasılaşmayı ve diğer sorunları düşünmüyoruz. Ne için? Aklı başında herhangi birinin "Böyle bir programla çalışabilmek için yardımcı programımı İbraniceye çevirmem gerekmez mi?" Programın “kısa pantolondan çıkması” ve diğer ülkelerde buna talep olması tamamen farklı bir konu. Daha sonra, eğer talep yeterince büyükse, yerelleştirmeyi başlatabilirsiniz (ve yapmalısınız): uygun bir araç bulun, çevirmenler kiralayın (veya kendiniz tercüme edin) ve çalışın, çalışın, çalışın. "Bir INI dosyası yapacağım" gibi bir çözüm küçük programlar için uygun olabilir, ancak gelişmiş bir arayüze, çok sayıda forma, kaynağa vb. sahip ciddi projeler için uygun olmayabilir. - bu durumda uygun bir hazır çözüm bulmaya değer. Aslında yerelleştirmeye yönelik bir çözüm bulmanın benim için belirlenen temel hedefleri şunları sağlayacak bir çözüm bulmaktı:

  1. programcı olmayanlar tarafından yerelleştirme yapılması
  2. çeviri için kendi sözlüklerinizle çalışın
  3. XE2 desteği

Ve her zamanki gibi çözümün kullanımı kolay, ucuz, mümkünse öğrenmesi kolay vb. olmalıdır. ve benzeri. Ve arayışımda hala hepsini gözden geçirmeye karar verdiğim için olası seçenekler(veya daha doğrusu, mümkün olan maksimum seçenek sayısına göre), bulunan tüm materyali sistemleştirmeye ve bu yazıda resmileştirmeye karar verdim. Burada mevcut Delphi bileşenleri, kütüphaneleri ve programları hakkında, genel olarak kalbinizin arzu ettiği her şey hakkında bilgi edinebilirsiniz. Genel olarak, birçok yerelleştirme teklifi arasında zevkinize uygun olanı bulmak için yola çıktıysanız okumaya devam edin :)

TSILang bileşen paketi

  • Geliştirici: Si Bileşenleri
  • Resmi site:
  • Dan başlayan fiyatlar 259 ila 399 ABD Doları. 259$'lık pakete kaynaklar dahil değildir (yalnızca DCU ve OBJ)
  • mevcut .
  • Son yayın tarihi: 05 Mayıs 2012
  • Delphi XE2 desteği: mevcut

TsiLang® Bileşenler Paketi eklemenizi sağlar sınırsız dil desteği ve ayrıca ürünlerin tamamen yerelleştirilmiş sürümlerini temel sürüm proje. Kullanıcı arayüzünün tüm gerekli öğeleri otomatik olarak bulunur ve çeviri için listeye eklenir. uygun yollarçevirilerin kaydedilmesi ve yönetilmesi ve elbette arayüz dilinin değiştirilmesi gerçekleştirilir hem uygulama çalışırken hem de tasarımcı modunda "anında" Bu, uygulamayı derlemeden ve çalıştırmadan bile arayüzü test etmenize olanak tanır.

Benim testim.

Test etmek için indirdim ve yükledim En son sürüm bileşenlerini (6.5.4.7) oluşturdum ve üzerine Button, Label, OpenDialog'u yerleştirdiğim, kaynak dizeleri ve sabitler eklediğim basit bir uygulama oluşturdum. Aşağıdaki "eğri" işleyicisi özellikle OnClick düğmesi için oluşturulmuştur:

prosedür TForm19. Button1Click(Gönderen: TObject); start ShowMessage("Merhaba dünya!" ); son ;

TsiLang ile yerelleştirme şu şekilde gerçekleştirilir:

1. Delphi menüsünden TsiLang Expert'i başlatın: Araçlar ->TsiExpert

Tüm proje formları ve bu formlarda bulunan bileşenler burada görüntülenir. Şimdi menüden seçin Dosya->Diller ve uygulamamız için dil listesini düzenleyin. Varsayılan olarak tüm dillerin şöyle adları vardır: Dil1, Dil2 vesaire. Bunları şu şekilde yeniden adlandırdım:

“Tamam” düğmesine basıldıktan sonra uygulamanın ana (ve tek) formunda TsiLang bileşeni belirdi:

Artık Expert’te “Projeyi Kaydet” butonunu bulup projemizi kaydediyoruz. TsiLang iki tür proje dosyası kullanır:

  1. *.sib - ikili dosyaçevirilerle. Geliştiriciler bu dosya türünün kullanılmasını öneriyor çünkü... bu tür dosyaları yüklemek, ikinci tür dosyaları kullanmaktan çok daha hızlıdır
  2. *.sil - metin dosyaları. Bu dosya tipinin avantajı bu dosyayı “ SIL Düzenleyici” tercüme için başka bir kişiye.

Projemi bir dosyaya kaydettim test.sil.

Şimdi uzmandayken listedeki formun adına çift tıklayın - çeviri düzenleyici penceresi açılacaktır:

Düzenleyici penceresinin (ağaç) sol tarafı, bileşenlerin ve dizelerin çevrilebilir özellik gruplarını içerir ve buna göre sağ taraf, çeviri için bir tablo içerir. TsiLang yalnızca tip bileşenlerinin özelliklerini yerelleştirmekle kalmaz Altyazı, İpucu, Metin vb. ama aynı zamanda diyaloglardan satırlar; örneğin, aşağıdaki şekil çeşitli dillerden çeviri için tüm satırları göstermektedir. diyalog kutuları uygulamada kullanılabilecek olan:

Tüm satırları Rusçadan İngilizceye çevirmeye başlıyoruz. Her satırı çevirirken, editör bize orijinal satırın uzunluğunu (piksel olarak) ve çevrilen satırın uzunluğunu ayrı bir pencerede gösterir:

Prensip olarak, bu bilgi penceresinin amacı açıktır; çevrilmiş metnin bileşenin sınırlarına sığmayacağı durumları kontrol edebilirsiniz. Yine de bana gelince, bileşenin genişliğini bu pencereye eklemek uygun olacaktır - böylece çizgilerin genişliklerini karşılaştıracak bir şey olacaktır.

Tüm satırlar çevrildikten sonra projemizi tekrar kaydediyoruz. Şimdi sil dosyasışöyle bir şey içermelidir:

karakter dizisi #$ dosyayı kaydederken kendimiz tanımlayabileceğimiz bir ayırıcıdır. Editördeki satırları çevirme sürecinde, TsiLang'ın formun pas dosyasının hem bir Resourcesstring hem de const bölümü içerdiğini ve hatta OnClick işleyicisinde bir satır metin içerdiğini hiçbir şekilde hesaba katmadığını fark edebilirsiniz. Bu satırları çeviriye eklemek için menüden TsiLang uzmanını seçmeniz gerekir:

  • Dosya -> Kaynak -> İle Biçim - modülün uygulama bölümünden satırları seçmek için,
  • Dosya -> Kaynak -> İle Biçim- tüm dize sabitlerini ve kaynak dizelerini seçmek için

Sonuç olarak, istisnalar listesine bir satır ekleyebileceğiniz veya onu TsiLang işlevine yapılan bir çağrıyla değiştirebileceğiniz, arama sonuçlarını içeren bir pencere açılacaktır:

Bu penceredeki “Kaynağı Değiştir” düğmesine tıklayın ve aşağıdaki mesajı alın:

Pas dosyasını açıyoruz ve aşağıdaki garip resmi görüyoruz:

TsiLang'ın pas dosyasındaki dize sabitlerini mükemmel bir şekilde tanımlaması ve hatta kaynak kodunu kendi başına değiştirmesi bana tuhaf geldi, ancak bazı nedenlerden dolayı var'ın kendisini tanımlamak çok tembel - yani çeviri projesinde ek bir seçenek yapmaları gerekirdi “Dizelerle sabitler için VAR'ı tanımla” ve “Derleyici ayarlarını değiştir” gibi ayarlar. Ama sorun değil - mesaj içeren bir pencere var ve bu da ekmek. Gerçekten anlamadığım şey TsiLang'ın projemde nerede bulduğu anlaşılmaz hiyeroglifler? Bunun pas dosyasının ANSI'ye kaydedilmiş olmasından kaynaklanabileceğini düşündüm, ancak hayır - UTF8 olarak değiştirdim, ancak hiyerogliflerle ilgili sorun devam etti... Genel olarak bu garip.

Satırlar çeviriye yerleştirildikten sonra çeviri editörünü tekrar açabilir ve grubun çevirisini gerçekleştirebilirsiniz. Teller(Neyse ki satırlar editöre bozulma olmadan giriyor):

Tüm dizeler çevrildikten ve sil dosyası kaydedildikten sonra programınızda dil değiştirebilirsiniz. TsiLang'da her dilin kendi tam sayı tipi tanımlayıcısı vardır. Örneğin benim durumumda tanımlayıcılar şöyleydi:

  • Rusça = 1
  • İngilizce = 2

Şimdi programımın arayüzüne geçiş yapmak için ingilizce dili Tek yapmanız gereken bu kodu bir yere eklemek:

siLang_Form19. Aktif Dil: = 2

Bu, TsiLang'ın sil dosyasından gerekli dildeki satırları yüklemesine neden olacaktır.
Çeviri sözlüğüyle çalışmaya gelince, yalnızca önceden çevrilmiş olan sözlüğe (önceden oluşturulmuş) dizeleri aktarabilir. Bunu yapmak için aynı çeviri düzenleyiciyi kullanabilirsiniz - tüm çevirileri sözlüğe aktarmak ve gerekli aktarım seçeneklerini seçmek için bu pencereyi almak üzere tasarlanmış düzenleyicideki "Tümünü Ekle" düğmesini tıklayın:

buradan sözlük dosyasını seçin, “Tamam”a tıklayın ve çevrilmiş tüm dizeleri sözlüğünüze alın; bu arada, şuna benzer:

Daha sonra bu sözlük şu amaçlarla kullanılabilir: otomatik çeviriler programlarınızdaki satırlar. Yukarıda söylediğim gibi SIL dosyalarıyla çalışmak için ayrı yardımcı programçevirmenlere yönelik olan SIL Düzenleyici olarak adlandırılır. Deneyin saflığı için klasörü SIL Düzenleyiciden bir flash sürücüye kopyaladım ve programı “Windows XP Modu” sanal makinesinden başlattım:

SIL Düzenleyici sözlükleri kullanarak ve manuel olarak çeviri yapmanıza ve gerekirse çeviriye yeni diller eklemenize olanak tanır.

TsiLang'ın diğer özellikleri:

  1. Sözlüklerin doc-, html-, xls-, csv-, po dosyalarından içe aktarılması
  2. Yürütülebilir dosyalardan kaynak dizelerini içe aktarma
  3. Kendi bileşenlerinin mevcudiyeti - dosya açma diyalogları, etiketler, listeler vb.
  4. Çeviri istatistiklerinin bakımı

İncelemenin oldukça uzun olduğu ortaya çıktı, ancak araç buna değer. Özetleyelim:

Avantajları:

  1. Basitçe projeye bağlanır; bileşeni forma bırakın, 1 yöntemini çağırın ve arayüz çevrilsin
  2. Kullanışlı çeviri editörü - tüm satırlar "raflarda" dedikleri gibi düzenlenmiştir, aramada ağaçta hızlı bir şekilde gezinebilirsiniz gerekli satırlar tercüme için
  3. Çevirili hem ikili hem de metin dosyalarını destekler. Bir sil dosyası oluşturduk, onu tercümana verdik, sonra onu sib'e kaydettik ve her şey hazır - program daha hızlı çalışacak ve çeviriye başka kimse müdahale etmeyecek.
  4. Çevirmenlere yönelik araçların mevcudiyeti (SIL Düzenleyici, sözlükler)

Kusurlar:

  1. Pas dosyasındaki Rusça satırları “bozuyor”. Yorumlarda yer alsalar bile, yine de gerçek açıktır.
  2. Çalışma sırasında sözlüklerle çalışırken garip hatalar keşfedildi. Örneğin, çevrilmiş dizeleri sözlüğe aktarırken, her seferinde aralık dışı bir hata ortaya çıkıyordu.
  3. Windows'ta küçük sorunlar. Elbette hayatınıza müdahale etmiyorlar ama yine de sözlüğü çağırdığınızda bu iyi değil ve bir şekilde kontrol panelinde kayboluyor.

Prensip olarak, yukarıdaki dezavantajlar (ikincisi hariç) o kadar kritik değildir.

DKLang Yerelleştirme Paketi

  • Geliştirici: DKYazılım
  • Resmi web sitesi: www.dk-soft.org
  • Fiyat: ücretsiz
  • Son yayın tarihi: 25.12.2008
  • Delphi XE2 desteği: HAYIR

Bu yerelleştirme çözümü hakkında basitçe var olması dışında hiçbir şey söyleyemem çünkü... Bileşenlerin ücretsiz olmasına rağmen arşivi indirme zahmetine bile girmedim.

Öncelikle son yayınlanma tarihi endişe verici. 2008- XE2'deki bileşenlerin sorunsuz çalışacağı bir gerçek değil.

İkincisi paket gerektirir ek kurulum bileşenler TNT Unicode Kontrolleri 2.3.0 2012'de zaten gereksiz olan - Unicode zaten destekleniyor.

Bu nedenle, bu karar hakkında söyleyecek bir şeyiniz varsa - iyi ya da kötü - yorumlara yazın, ben de incelemeye geri bildirim ekleyeceğim.

GÜNCELLEME: DKLang Yerelleştirme Paketi hakkında. Kısa ve net.

GÜNCELLEME 2: DKLang XE2

EMS Gelişmiş Yerelleştirici

  • Geliştirici: EMS
  • Resmi web sitesi: www.sqlmanager.net
  • Fiyat: 2.900,00 RUB
  • Deneme sürümünün kullanılabilirliği: mevcut
  • Son yayın tarihi: 13 Ocak 2012
  • Delphi XE2 desteği: mevcut

Geliştiricilerin ürünleri hakkında söyledikleri:

Gelişmiş Yerelleştirici™ Borland® Delphi® için Delphi® uygulamalarınıza dil desteği eklemenizi sağlayan önemli bir bileşen paketidir. Geniş paket seçenekleri Gelişmiş Yerelleştirici her formun bileşenlerinin özelliklerini hızlı ve kolay bir şekilde yerelleştirmenize, bileşen özelliklerinin geçerli değerleriyle dil dosyaları oluşturmanıza, yerelleştirme dosyalarını yönetmenize ve ayrıca yerelleştirilecek bileşenleri ve bunların özelliklerini atamanıza olanak tanır. Kullanılan uygulamaların dili Gelişmiş Yerelleştirici, uygulamayı daha sonra yeniden başlatmaya gerek kalmadan çalışma sırasında doğrudan başka bir uygulamaya geçiş yapılabilir. Gelişmiş Yerelleştirici aynı zamanda kullanıcı tarafından belirlenen dil dosyalarını kullanan alt uygulamalar yazma olanağı da sağlar.

"Yeri doldurulamaz" olanlarımız olmadığından, bu bileşenlerle ilgili küçük testimi aynı cihaz üzerinde gerçekleştirdim. küçük uygulama 1 formda.
Benim testim
Bileşen paketini Delphi XE2'ye indirip kurdum ve projeyi açtım. Delphi bileşen paletinde göründü yeni ek- EMS Gelişmiş Yerelleştirici. Bu sekmeden bileşenleri forma bırakıyorum:

  1. TQDil Kaynağı
  2. TQFormYerelleştirici

sen TQFormYerelleştirici Kaynak özelliğinde belirttiğimiz TQDil Kaynağı ve işe koyulalım.

Her şeyden önce, yerelleştirilmiş dizeler için dosyalar oluşturuyoruz - *.lng uzantılı (EMS Localizer için varsayılan uzantı) iki boş dosya oluşturuyoruz ve bunları yalnızca rus ve eng olarak adlandırıyoruz.

Bu dosyaları oluşturmanıza gerek yok; bunlar çeviri sırasında otomatik olarak oluşturulacaktır.

Şimdi dil dosyası yöneticisini çağırmak için TQLanguageSource bileşenine çift tıklayın:

Tek etkin düğmeye tıklayın ve dosyaları ekleyin:

Şimdi, geliştiricilerin fikrine göre, yönetici listesinde yeni bir girişin görünmesi gerekiyor... ama görünmüyor. Bileşenin Languages ​​özelliğinde yer alan değerler şunlardır:

Ancak liste görsel editör tertemiz. Tanrı onu listeyle korusun - başvurumuzu tercüme etmeye çalışıyoruz. Çeviri düzenleyiciyi çağırmak için ikinci bileşene (TQFormLocalizer) çift tıklayın:

Düzenleyicide dizeleri çevirmenin yanı sıra yeni bir dil dosyası ekleyebilir, mevcut bir dili düzenleyebilir veya varsayılan dili seçebiliriz. Şekilde görüldüğü gibi editöre sadece bileşenlerin özelliklerinde yer alan satırlar giriyor, kaynak satırları ve sabitler ise fark edilmiyor, bu da bu bileşenlerin bir dezavantajı olarak yazılabilir.

Tüm dizeleri çevirdikten sonra programa arayüz dilini değiştirme seçeneği ekleyebilirsiniz. Bu, TsiLang'da olduğu gibi yaklaşık olarak aynı şekilde yapılır - aktif dilin indeksini belirterek:

QLanguageSource1. Aktif Dil: = 1;

Aynı zamanda, varsayılan dil kullanılıyorsa ("Orijinal" olarak işaretlenir), dizini -1'dir ve geri kalanı için sıfırdan başlar ve Diller listesinde sırayla artar.

EMS Gelişmiş Yerelleştiricinin diğer özellikleri:

Özetle.

Avantajları:

  1. Bileşenlerin kullanımı kolaydır - neyin ve nasıl çalıştığını anlamak yaklaşık 5 dakika sürdü.
  2. Oldukça ucuz
  3. Çevirileri bir veritabanında saklamak mümkündür

Kusurlar:

  1. Sözlükler ve buna bağlı olarak otomatik çeviriler için destek yoktur
  2. Basit bir dil yöneticisindeki sorunlar
  3. Sabitlerin ve kaynak dizelerinin çevirisi desteklenmiyor
  4. Üçüncü taraf çevirmenler için araç yok

Genel olarak bu konudaki fikrim EMS Gelişmiş Yerelleştirici- küçük projelerle çalışmak için oldukça uygun bileşenler, ancak birçok dil desteği gerektiren az çok büyük projeler, çeviri konusunda birkaç kişinin çalışması vb. Bu bileşen seti ne yazık ki oldukça zayıf.

Korzh Yerelleştirici

  • Geliştirici: KORZH geliştirici araçları
  • Resmi web sitesi: devtools.korzh.com
  • Dan başlayan fiyatlar 149,0 Avro'dan 649,0 Avro'ya
  • Deneme sürümünün kullanılabilirliği: mevcut
  • Son yayın tarihi: 23 Temmuz 2012
  • Delphi XE2 desteği: mevcut .

Geliştiricilerin ürünleri hakkında söyledikleri:

Bir EXE dosyası birden fazla dili destekleyebilir. Yeniden derleme gerekmeden ek diller eklenebilir. Çok sayıda exe dosyası oluşturmanıza gerek yok
Dize verileri hem standart kaynak DLL'lerinde hem de özel dil dosyalarında saklanabilir
Yerelleştirme sırasında program kodu ya çok az değişir (kelimenin tam anlamıyla birkaç satır) ya da hiç değişmez. Localizer uygulama projesini değiştirmez çünkü hiçbir ek bileşen kullanılmaz
Localizer kurulmadan derleme için yerelleştirilmiş bir proje başlatılabilir
Yerelleştirici, hem VCL'deki kaynakları hem de diğer kaynakları çevirir
Çevirilerin standart olarak saklanmasını destekler Çeviri Havuzu ve bunların gelecekte yeniden kullanılması
Tüm üçüncü taraf bileşenleri ve paketleri destekler (ör. DevExpress, TurboPower, ElPack, RX, vb.)
Çeviri işlemi yerleşik yardımcı program kullanılarak gerçekleştirilebilir Dil Yöneticisiçevirmenler tarafından ücretsiz olarak indirilebilir
Borland ITE'den (Entegre Çeviri Ortamı) kolay geçiş

Benim testim

Deneme sürümünü indirdim; bu, şundan farklı: tam versiyon Localizer'ın her form/dosyadan yalnızca ilk 30 satırı çevirmesidir. Kurulduktan sonra Delphi XE2 ana menüsünde yeni bir öğe belirdi:

Menüde “Proje yerelleştirmesini başlat” seçeneğini seçtim ve sonuç olarak proje için ana dili seçmem ve dil dosyasının depolanacağı klasörü belirtmem istendi:

“Projemi yerelleştir!” seçeneğine tıkladıktan sonra projenin yeniden derlenmesine başlandı ve gerekli modüller ve Korzh Localizer yöntemlerine yapılan çağrılar projenin dpr dosyasına eklendi:

(....) , LocOnFly, (Form18) kullanır; ($R Project16.KLR) ($R *.res) LocalizerOnFly'ı başlatır. InitReg; (...) son .

Ayrıca projemin yerelleştirildiğine dair bilgi mesajının hemen ardından Dil Yöneticisi şunları başlattı:

Yerelleştirme için yeni bir dil seçme iletişim kutusunda harika bir seçenek var - "Google aracılığıyla otomatik olarak çevirmeyi dene". Ancak bu seçenek şu anda çalışmıyor:

Bunun nedeni geliştiricilerin orada yanlış bir şey yapmış olması değil. Bunun sebebi ise Google'ın Translate API'yi ticari temele aktarmış olması ve yanılmıyorsam sadece OAuth 2.0 üzerinden erişim sağlamış olması. Dolayısıyla, görünüşe göre Korzh Localizer'ın sonraki sürümlerinde bu seçenek ortadan kalkacak veya daha erişilebilir API'ler için, örneğin Bing Translator API'si için kullanılacak.

Yerelleştirme için bir dil ekledikten sonra, projede bulunan dizeleri çevirmek için Dil Yöneticisi'nde bir tablo görünür. Doğrudan projede bulunanlara ek olarak Korzh Localizer, diğer Delphi modüllerinde bulunan dizeleri de yerelleştirmenize olanak tanır:

Çeviriden sonra Localizer size istatistikleri gösterebilir - kaç satırın çevrildiğini, çeviri yüzdesini vb. Ancak burada bile "Harici Öğeler" sekmesine geçişte bir hata bulundu:

Asistan (buna öyle diyelim) dizeleri taramak için modüller seçmeyi önerir ve ayrıca dizeleri depolamak için iki seçenek sunar - bir kaynak dosyasında veya bir pas dosyasında:

Tüm ayarları varsayılan olarak bıraktım. Modülde üç satır vardı; biri Resourcesstring bölümünde, ikincisi const'ta ve üçüncüsü düğmenin OnClick işleyicisinde. Sonuç olarak Korzh Localizer aşağıdakileri belirledi:

“İleri”ye tıkladıktan sonra IDE aşağıdaki mesajı görüntüledi:

“Evet” seçeneğine tıkladıktan sonra kullanımlar eklendi yeni modül, içinde bulunan bir dizenin bulunduğu kaynak dizesi bölümünü içerir. Düğmenin OnClick işleyicisi de değişti ve artık şöyle görünüyor:

prosedür TForm19. Button1Click(Gönderen: TObject); ShowMessage(SIgeaaoIeg)'i başlat; son ;

Satır Dil Yöneticisinde görünmedi - belki bu tür satırların yönetici olmadan çevrileceği varsayılıyor veya belki bir şekilde kurnazca yöneticiye eklenmişler - bunu ayrıntılı olarak incelemedim. Yerelleştirmenin nasıl gerçekleştiğini kontrol etmem gerekiyor. Projenin başka bir dilde “konuşabilmesi” için ana menüden gerekli dili seçmeniz yeterliydi:

Bundan sonra IDE tekrar dosyanın değiştirildiğini bildirdi ve yeniden yüklenmesini istedi. Projeyi yeniden başlattım, bir araya getirdim ve başvuruyu İngilizce olarak aldım:

Korzh Localizer'ın diğer özellikleri:

  1. Depoların oluşturulması/içe aktarılması/dışa aktarılması. İthalat ve ihracat XML veya TMX formatlarında gerçekleştirilir.
  2. Yerelleştirme için birden fazla dili destekler - her dil için ayrı bir dosya oluşturulur
  3. EXE ve DLL dosyalarıyla çalışabilir.

Avantajları:

  1. Formda herhangi bir bileşen gerektirmez; tek gereken Korzh Yerelleştirici onu dpr'nin kendisine bağlar .
  2. Çevirmenler için bir araç var
  3. Depolar oluşturmak/içe/dışa aktarmak mümkündür

Kusurlar:

  1. Araçlarla çalışırken hatalar (yukarıdaki ekran görüntülerine bakın), arayüzdeki eksiklikler, çalışmayan seçeneklerin varlığı (Google API'ye erişimi uzun zaman önce kapatmışken ve yerelleştiricinin piyasaya sürülmesi nispeten yeniydi). Bütün bunlar projenin bir nevi terk edildiği hissini yaratıyor.
  2. Kaynak dizeleri Dil Yöneticisi'ne ulaşmıyor veya bir şekilde o kadar karmaşık ki nereye tıklayacağınızı veya neyi nereye ekleyeceğinizi hemen anlayamıyorsunuz.

Genel olarak şimdilik bırakıyorum Korzh Yerelleştirici daha uygun bir şey olmaması durumunda yedekleme seçeneği olarak . Yukarıda açıklanan dezavantajlara ek olarak , Ö Bu sonuca varmanın nedenlerinden biri, araçla çalışmaya alışmak için gereken süreydi; yukarıda tartışılan tüm araçlar arasında en fazla zamanı Korzh Localizer aldı.

Delphi ve C++ Builder araç seti için GNU gettext

  • Geliştirici: dxgettext.po.dk
  • Resmi web sitesi: dxgettext.po.dk
  • Fiyat: ücretsiz
  • Son yayın tarihi: bilinmiyor
  • Delphi XE2 desteği: HAYIR

Delphi XE2 desteği olmamasına rağmen yine de bu kütüphaneyi indirip denemeye karar verdim. Ne yazık ki, dxgettext.pas'ı projeye bağladıktan sonra hatalar ortaya çıkmaya başladı - ansiString yerine bir yerde dize belirttiler, kullanımdan kaldırılmış olarak işaretlenmiş yöntemler kullandılar, yanlış yöntem parametreleri kullandılar (belki Delphi 2009'da böyle bir kod derlenmişti, ancak XE2'de - değil) ). Genel olarak pek çok şey çıktı... Yazık. Bu kütüphaneyi Lazarus'ta birkaç kez kullandım ve söylemeliyim ki hoşuma gitti. Elbette mevcut projeler için DXGetText'i uygulamak oldukça sorunlu olacaktır ancak yeni projeler için tamamen tolere edilebilir ve kullanışlı bir kütüphanedir. Çevirmenler, çeviri belleği vb. için çeşitli yardımcı programlar vardır. Genel olarak 2009'dan önce Delphi sürümünü kullanarak bir projeye başlamayı planlıyorsanız ve projenin yerelleştirilmesi ve uluslararasılaştırılması için bir kütüphaneye ihtiyacınız varsa bunu deneyin. DXGetText.

i18n Paketi

  • Geliştirici: Kambiz R. Khojasteh
  • Resmi web sitesi: www.delphiarea.com
  • Fiyat: ücretsiz
  • Son yayın tarihi: 19 Ağustos 2012
  • Delphi XE2 desteği: HAYIR (resmi internet sitesinde yer alan bilgilere göre)

Delph için i18n Paketi v1.10 i, projelerin yerelleştirilmesi ve uluslararası hale getirilmesi için tasarlanmış bileşenlerden oluşan eksiksiz bir kütüphanedir. Delphi XE2 desteği resmi olarak beyan edilmemiş olmasına rağmen bu kütüphane Delphi XE2'ye sorunsuz bir şekilde kuruldu, bu yüzden biraz test etmeye karar verdim.

Paket, yerelleştirmeyi destekleyen 30'dan fazla farklı bileşen içeriyor, ancak anladığınız gibi, başka bir noktayla ilgileniyorum - bu kitaplığın mevcut bir projeyi bir grup form, diyalog, kaynak dizesi vb. ile yerelleştirmek için kullanılıp kullanılamayacağı.

Yani i18n Paketi kullanılarak yerelleştirme çalışması şu şekilde gerçekleşir:

  1. TLocalizer bileşenini ana forma bırakın
  2. Diğer tüm formlara (ana form dahil) çeviri için bir bileşen ekliyoruz - TTranslator
  3. Diyalogları yerelleştirmek için ayrıca TMessageBox bileşenini ana forma yerleştirmeniz ve içinde gerekli başlıkları, simgeleri vb. belirtmeniz gerekir.

Şimdi satır sonları içeren bir dosya oluşturmamız gerekiyor. Bunu yapmak için TTranslator bileşenine çift tıklayın - çevireceğimiz özellikleri ve dizeleri seçmeniz gereken bir düzenleyici açılacaktır:

Projeyi uluslararası hale getirmek istiyorsanız “Gayrimenkul Değeri” alanına hiçbir şeye dokunmayın çünkü yeni dillerin eklenmesi ve dizelerin çevrilmesi ayrı bir yardımcı programda yapılır

Gerekli öğeler seçildikten sonra Dışa Aktar sekmesine gidin, satırlarımızın yazıldığı dili belirtin (örn. Rusça) ve satırları bir *.i18n dosyasına aktarın:

Dosya oluşturuldu; çeviriye başlayabilirsiniz. Kütüphanenin Bin klasöründe var özel yardımcı programçeviriler için tasarlanmış i18n Düzenleyici olarak adlandırılır.

Programın kullanımı oldukça kolay ve çok çabuk alışacağınızı düşünüyorum. sadece şunu söyleyeceğim i18n Düzenleyici"öğrenme" yeteneğine sahiptir - bunun için programın hazır *.i18n dosyalarının bulunduğu klasörü belirtmesi gerekir ve program bunları otomatik olarak tarayacak ve onlardan yeni ifadeler çıkaracaktır.

Her şeyden sonra gerekli satırlarçevrildikten sonra Delphi'ye dönüyoruz ve yerelleştirmeleri içeren dosyamızı TLocalizer bileşeninin URI özelliğinde belirtiyoruz. Şimdi forma TCultureBox bileşenini ekliyoruz ve Localizaer özelliğinde Localiwer1'i belirtiyoruz (bileşen yeniden adlandırılmamışsa).

Artık programı çalıştırabilir ve arayüz çevirisinin başarılı olduğundan emin olabilirsiniz:

Avantajları:

  1. Fiyatına göre - 0,0$ oldukça yüksek kaliteye sahip (Delphi XE2'de harika çalışıyor)

Kusurlar:

  1. Ayrıştırıcı, kaynak dizesi ve dize sabitlerini algılamaz ve program kodundan algılanan ve çevrilen dizeler hâlâ yerelleştirilmemiştir.
  2. Her form/modül için kendi TTranslator'ınızı kullanmanız gerekir, bu da pek kullanışlı değildir. Örneğin DXGetText'te yapıldığı gibi, dizelerin varlığı için tüm projenin küçük bir tarayıcısını yapmak daha mantıklı olacaktır.

Kütüphane ile ilgili genel sonuç şu şekilde çıkarılabilir; fiyat/kalite oranı açısından, küçük projelerde neredeyse hiç sorun yaşamadan çoklu dil desteği oluşturmanıza olanak tanıyan mükemmel bir kütüphanedir. Kütüphanenin bileşen özelliklerinden olmayan dizelerle çalışması izlenimi biraz bozuyor; eğer proje yaşıyorsa (ve sürüme bakılırsa proje oldukça canlıysa), o zaman bu can sıkıcı sorunun çözüleceğini düşünüyorum.

Kryvich'in Delphi Yerelleştiricisi

  • Geliştirici: Kryvich
  • Resmi web sitesi: sites.google.com/site/kryvich/localizer
  • Fiyat: ücretsiz
  • Son yayın tarihi: 7 Ocak 2012
  • Delphi XE2 desteği: mevcut

Bir diğeri ücretsiz kütüphane Delphi uygulamalarının yerelleştirilmesi ve uluslararasılaştırılması için. Proje yazarlarına göre bu kütüphane sayesinde uygulamalarımızın yerelleştirilmesi sorunsuz bir şekilde ilerlemelidir. Bunun gerçekten doğru olup olmadığını kontrol edelim.

Öncelikle proje seçeneklerini değiştirmemiz gerekiyor. IDE'ye gidelim: Proje->Seçenekler->Bağlama ve yükle Harita Dosyası = ayrıntılı

Şimdi projeyi birleştiriyoruz ve üç dosya alıyoruz - *.exe, *.drc ve *.map. Şimdi kütüphanenin bulunduğu klasörde bulunan kdlscan.exe konsol yardımcı programını başlatıyoruz. Yardımcı program şu parametreyle başlatılır:

kdlscan


exe dosyamızın adı nerede?

Tarayıcı projeyi gözden geçirir ve bileşen özelliklerinden kaynak dizelerini ve dizelerini çıkarır ve bunları *.lng uzantılı bir dosyaya koyar. Bu dosya normal bir ini dosyasıdır, dolayısıyla onu herhangi bir düzenleyiciyle açmaktan ve gerektiğinde tüm satırları çevirmekten çekinmeyin.

Çeviriden sonra ortaya çıkan dosyayı örneğin adla kaydederiz. ingilizce.lng.

Şimdi proje üzerinde çalışmaya başlayalım. Yerelleştirmeyi desteklemek için kullanımlara ekleyin ana form uFreeLocalizer.pas modülü, ayrıca uStringUtils.pas modülünü proje klasörüne bırakın ve programdaki uygun herhangi bir yere yazın:

Ücretsiz Yerelleştirici. Otomatik Çeviri:=Doğru; Ücretsiz Yerelleştirici. LanguageDir:=ExtractFilePath(Application.ExeName); Ücretsiz Yerelleştirici. DilDosyası : = "english.lng";

İlk iki satır bir dpr dosyasına yazılabilir ve localizer modülü buraya bağlanabilir. Tüm. Programı çalıştırıp çalışmasını kontrol edebilirsiniz.

Avantajları:

  1. Kullanımı çok kolay kütüphane
  2. Kompakt

Kusurlar:

  1. Sözlük yok
  2. Tarayıcı, sabit kodlanmış dizeleri ve sabitleri algılamaz

Genel olarak kütüphane, yerelleştirme için az sayıda satıra sahip projeler için oldukça uygundur. Yine de bir ini dosyası üzerinde çalışmak, büyük miktarda veri olduğunda kendini hissettirecektir.

JVCL (JEDI Görsel Bileşen Kütüphanesi)

  • Geliştirici: JEDI Projesi
  • Resmi web sitesi: jvcl.delphi-jedi.org
  • Fiyat: ücretsiz
  • Son yayın tarihi: 11 Nisan 2011
  • Delphi XE2 desteği: mevcut

JEDI projesini kim bilmiyor? Bu devasa kütüphane muhtemelen Delphi'de en azından biraz çalışmış olan herkes tarafından bilinmektedir. Bu kütüphane bileşeni içerir TjvÇevirmen Delphi uygulamalarını yerelleştirmenize olanak tanır. Çeşitli forum ve bloglardaki incelemelere bakılırsa, bileşen oldukça kullanışlı ve popüler, ancak sadece bir mucize bileşenin çalışmasına bakmak için tüm JCL + JVCL setini kurmak bir şekilde beni gülümsetmedi. Bu nedenle avantajlarını ve dezavantajlarını kendiniz aramanız gerekecek. Ve diğer bileşenlere geçeceğim.

CnPack Bileşen Paketi (CnVCL)

  • Geliştirici: CnPack
  • Resmi web sitesi: www.cnpack.org
  • Fiyat: ücretsiz
  • Son yayın tarihi: 5 Kasım 2011
  • Delphi XE2 desteği: mevcut

CnWizards adlı ürünüyle hak ettiği popülerliği kazanan oldukça hak edilmiş bir geliştirici, bize uygulama yerelleştirmesi için bir dizi bileşen sağladı. Bu bileşenler ayrı bir paketin (cnVCL) parçasıdır ve ücretsiz olarak dağıtılır.

Şu anda indirilebilecek bileşenlerin en son sürümünün Alfa olarak işaretlendiğini, dolayısıyla bu bileşen setinden kusursuz bir çalışma bekleyemeyeceğinizi hemen belirteyim. Ancak yine de yerelleştirme bileşenlerine kısa bir genel bakış sunacağım.

Böylece cnVCL paketini yükledikten sonra bileşen paletinde birkaç yeni sekme belirir:

cnMultiLang sekmesinde yerelleştirme için 4 bileşen vardır. Üçü: TCnLangYönetici, TCnLangÇevirmen Ve TChHashLangDosya Depolama veya TChIniLangDosya Depolama başvuruya dahil edilmelidir.

Alpha versiyonunun kendisini hissettirdiğini söylemeliyim. Bu bileşenlerin çalışmasını hızlı bir şekilde anlamak için, bileşenlerin kaynak koduyla birlikte gelen küçük bir demo çalıştırmaya karar verdim... elbette Delphi XE2'de açıldı, ancak bir şekilde tamamen tuhaf bir şeyler var:

Evet, bu prensip olarak tolere edilebilir - öyle görünüyor ki kaynak kodu büyük ölçüde "düzeltilmedi" ve neyin ve nasıl çalıştığını anlamak az çok mümkündü. İşin özü şudur:

1. Yukarıdaki üç bileşeni başvuru formuna bırakın (ben seçtim) TCnLangYönetici, TCnLangÇevirmen Ve TChIniLangDosya Depolama)

2. Şimdi seçin TChIniLangDosya Depolama ve koleksiyona ekleyin Diller yeni diller. Bunun gibi bir şeye benzemeli:

3. sen TCnLangYönetici LanguageStorage özelliğinde bileşenimizi belirtiyoruz CnIniLangFileStorage1

4. Üzerine çift tıklayın TCnLangÇevirmen- dizeleri çevirmeye yönelik düzenleyici açılacaktır:

5. Ağaçta gerekli dili seçin ve “Tümünü Oluştur”a tıklayın; çeviri için dizeleri içeren bir tablo oluşturulmalıdır. Benim için şu şekilde ortaya çıktı:

6. Gerekli satırları tercüme ediyoruz, gereksiz satırları siliyoruz ve ortaya çıkan tabloyu bir dosyaya kaydediyoruz. Sonuç olarak projemizin exe dosyasının yanına atılması gereken bir ini dosyası elde ediyoruz.

7. Programın uygun herhangi bir yerine bir satır yazın:

CnLangManager1. CurrentLanguageIndex: = 0;

Sonuç olarak, bu eylem, programın LangugeStorage'da 0 dizinine sahip bir dile "çevrilmesine" yol açacaktır, yani. benim durumumda - İngilizce'ye. Ekran görüntüsü vermeyeceğim, sadece bileşenin çalıştığını söyleyeceğim.

Bu bileşenlerin avantajları ve dezavantajları hakkında neler söylenebilir? Şimdilik herhangi bir sonuç çıkarmaya değmeyeceğini düşünüyorum - sonuçta bu bir Alfa sürümü ve her türlü hata, tuhaf davranış vb. kaçınılmazdır. ve benzeri. Bileşenler üzerindeki çalışmalar devam ederse, büyük olasılıkla projelerin yerelleştirilmesi ve uluslararasılaştırılması için basit ve kullanımı kolay bileşenlere sahip olmamız gerekir. Bu arada bu bileşenlerin ciddi uygulamalarda kullanılması için henüz çok erken.

FireMonkey için TLang

  • Geliştirici: Embarcadero
  • Resmi web sitesi: embarcadero.com
  • Fiyat: Delphi fiyata dahildir
  • Son yayın tarihi: 03 Eylül 2012
  • Delphi XE2 desteği: mevcut

Bu bileşen ve onunla çalışma hakkında ayrıntılı olarak konuşmayacağım çünkü... Blogda zaten FireMonkey'de özellikle TLang ile çalışmaya ilişkin bir makale var. Makalenin adı “” - içinde bu bileşenin avantajlarını ve dezavantajlarını bulacaksınız. Delphi XE3'teki bileşenin çalışmasını kontrol etmedim.

Çoklayıcı

  • Geliştirici: Fin teknoloji şirketi
  • Resmi web sitesi: www2.multilizer.com
  • Fiyat: 299 - 2900 Avro
  • Son yayın tarihi: Bilinmeyen
  • Delphi XE2 desteği: mevcut

Ürünün oldukça yüksek fiyatına rağmen yine de bu ürünün nasıl olduğunu görmeye karar verdim. Multilizer, yerelleştirmenizi sağlayan özel bir üründür Çeşitli türler uygulamalar, dosyalar, dll'ler vb. Pakete ayrıca Delphi 5 - XE2 için bir dizi bileşen de dahildir. Bileşenleri kurmadım ama uygulamamda Multilizer uygulamasının kendisini denemeye karar verdim.

Her şey yarattığımız şeyle başlar yeni proje yerelleştirme için:

İlk seçeneği seçiyoruz. Bir sonraki adım bir ayrıştırıcı seçmektir:

Üçüncü adımda, Multilizer bizden ayrıştırılacak dosyayı (belirtilen exe) belirtmemizi ister, ayrıştırmayı gerçekleştirir ve tarama sonucunu görüntüler:

Bir sonraki adım uygulamanın ana dilini belirlemek ve yerelleştirme için yeni diller eklemektir:

Multilizer ayrıca dili otomatik olarak algılamanıza da olanak tanır, ancak bazı nedenlerden dolayı kullanıcı adı ve şifre ister Google hesabı 0_O (en azından paranın bulunduğu dairenin anahtarları değil). Programın bu işlevini kontrol etmedim.

Proje oluşturulduktan sonra şuna benzeyen çeviri düzenleyici penceresi açılır:

Yerelleştirme süreci genellikle uygulamanızın farklı bölgeler için dil ayarlarından daha fazlasını ifade eder. Buna farklı bölgeler için doğru saat, tarih ve görüntüleme biçimi de dahildir. Uygulamanızın geniş bir uluslararası hedef kitleye ulaşma şansına sahip olmasını bekliyorsanız, uygulamanın tamamının kodunu derinlemesine araştırmak ve çok fazla zaman harcamak zorunda kalmamak için derhal uygulamanın uygun şekilde yerelleştirilmesini düşünmelisiniz. gezegenin farklı bölgelerine göre ayarlıyor.

Kullanma Android SDK'sı, kullanılan yerelleştirilmiş dize kaynaklarının dili ve saat ve tarihin formatı/değeri, cihazın çalıştığı bölgeye ve dil ortamına göre otomatik olarak ayarlanacaktır. Dil ISO 639-1, ülke - ISO 3166-1 tarafından belirlenir. Yani, Android'in dünyadaki çoğu ülkeyle (belki bazı Afrika kabileleri sayılmaz :)) ve dillerle uyumlu olduğunu rahatlıkla söyleyebiliriz.

Dil yerelleştirmesi

Herhangi bir dilde %100 temsil edilecek tek dilin olduğunu belirtmekte fayda var. Android cihazı koduyla gösterilen Amerikan İngilizcesidir tr_TR. Uygulamanızın dil yerelleştirmesini gerçekleştirmek için klasörüne gitmeniz gerekir. res/ Eklemeniz gerektiğini düşündüğünüz ek kaynaklara yatırım yapın.

Uygulamanıza alternatif diller eklemek için res/root klasöründe klasörler oluşturmanız ve onlara aşağıdaki gibi adlar vermeniz gerekir: res/değerler-<языковой код> veya res/değerler-<языковой код>-R<код страны> . Belirli bir bölge için dil ayarlarını tanımladıysanız, bu bölgedeki bir uygulamada kullanıldığında bunların önceliğe sahip olacağını, yani uygulama için varsayılan olarak daha "önemli" olacağını ve uygulanacağını belirtmekte fayda var. öncelikli. Önceliklerinin üstünde yalnızca sözde olabilir mobil ülke kodu MM. Mobil ülke kodu (kullanılarak belirlenir) mobil kod MNC ağları SIM kartlar) belirli bir ülke için tercihli kaynakları belirler.

Öyleyse dil yerelleştirmesinin nasıl oluşturulacağını öğrenelim. Yeni bir uygulama oluşturun veya çok karmaşık olmayan mevcut bir uygulamayı açın. Uygulamamızı Rusça konuşulan bölgeler ve İngilizce konuşulan bölgeler için yerelleştirme görevini belirledik. Ayarlar için Rusça dili sadece mevcut klasörü kullanıyoruz res/values/strings.xml ve çok ihtiyacımız olan dize kaynaklarını yaratın. İçin İngilizce aynı dil, bir alt klasör oluşturun /değerler-tr klasörde res/ kaynakları ve adresle aşağıdaki dosyayı oluşturun: res/values-en/strings.xml. Oluşturduğumuz bu dosyaya İngilizce string kaynaklarını ekleyeceğiz. Kodun nasıl görünmesi gerektiği:

Rusça dil kaynaklarını içeren bir dosya için res/values/strings.xml:

< resources> < string name= "app_name" >Başvurum< / string> < string name= "hello_world" >Selam Dünya!< / string> < string name= "action_settings" >Ayarlar< / string> < string name= "word" >Kelime< / string> < / resources>

İngilizce yerelleştirme dosyası içinres/values-en/strings.xmlkaynaklar şu şekilde olacaktır:

< resources> < string name= "app_name" >Başvurum < string name= "hello_world" >Selam Dünya!< / string> < string name= "action_settings" >Ayarlar < string name= "word" >Kelime < / resources>

Her şey hazır, artık İngilizce konuşulan bir ülkede başlatıldığında program otomatik olarak klasördeki kaynakları kullanacak res/values-en/strings.xml ve İngilizce metni görüntüleyin.

Bu dil yerelleştirme mekanizmasının uygulamalarınızda doğru çalışabilmesi için, örneğin kurulum sırasında metin kullanan program öğelerinin gerekli olduğunu belirtmekte fayda var. android:metin = "" nesneler için gibi, yalnızca bir kelime yazarak değil, onlara metin atayın android:text="Merhaba dünya!" ve oluşturulan karşılık gelen dize kaynağına bir bağlantı: android:text="@string/hellow_world".

Dosyada yapılmadıysa, program kodunun kendisindeki dizeleri yerelleştirmek istiyorsanız düzen.xml veya diğer benzer arayüz işaretleme dosyalarını kullanıyorsanız, bu tür satırları yerelleştirmek için koddaki nesneyi çağırmanız gerekir. android.content.res.Resources Uygulama paketindeki tüm kaynakları içeren ve yöntemi kullanarak gerekli kaynağa buradan erişin. get.String. "Merhaba dünya!" özelliğimizi nasıl yerelleştireceğiniz aşağıda açıklanmıştır. bu şekilde:

// Gerekli kaynağı bağlayın: android.content.res . Kaynaklar res = bağlam. getResources(); String merhabaDünya = res. getString(R . string. hello_world); //Yerelleştirilmiş dizeyi öğeye bağlayın TextView merhabaTextView; helloTextView = (TextView )findViewById(R . id. hello_world_textview); merhabaTextView. setText(merhabaDünya);

Uygulamanızın dize kaynaklarını yerelleştirmenin başka bir yolu daha vardır. Oldukça basit, burada tartışılan ve tartışılacak olan her şeyden daha basit, ama aynı şekilde çalışıyor. Uygulamanız üzerinde aşağıdaki gibi işaretleme dosyalarında çalışırken aktivite_main.xml, ardından kaynak dosyalarını düzenlemeden dil yerelleştirmesini doğrudan buradan ayarlayabilirsiniz. Hangi modda olduğunuz önemli değil, Metin veya Tasarım, panelde aşağıdaki düğmeyi buluyoruz:

Tıklayın, ilk öğeyi seçin - Çeviri Ekle ve önümüzde yerelleştirme için gereken dili seçmemizi isteyen bir pencere beliriyor. Listeden istediğiniz dili bulun, üzerine tıklayın ve yeni bir pencere görün:

Gördüğünüz gibi görünen tablonun 3 sütunu var: Anahtar, Defwalt, Rusça (ru) (çünkü yerelleştirme için Rusça'yı seçtim). İlki dosyada sahip olduğumuz dize kaynaklarını görüntüler res/values/strings.xml, ikincisinde - aynı dosyadaki değerleri res/values/strings.xml 3. pencere, mevcut tüm dize kaynaklarının çevirisini buraya girmemize olanak tanıyacak. İstediğiniz çeviriyi girin ve Tamam'a tıklayın. Dosyanın açıldığını görüyoruz ru\string.xml bu, programın kendisinin Rusça yerelleştirmesi için gerekli klasörü oluşturduğu anlamına gelir. Her şey hazır!

Saat ve tarihin yerelleştirilmesi

Birçok uygulamanın güncel saat ve tarihle çalışması gerekir. Başlangıçta dil yerelleştirmesinin varlığından çok memnun olan ve zaten satın almaya hazır olan kullanıcılarınızın hayal kırıklığını bir düşünün. tam versiyon programı ve işte burada - programınız bir Kamçatka sakinini olması gerekenden yarım gün sonra Yeni Yılda tebrik ediyor. Hepsi bu kadar, elveda kullanıcı! Bu nedenle, gördüğünüz gibi saat ve tarihin yerelleştirilmesi de önemli bir konudur ve Android SDK'da tarih ve saati cihazın konumuyla eşleşecek şekilde ayarlamaya yönelik araçlar bulunur.

Tarih yerelleştirmesi

Tarih yerelleştirmesinin ayarlanması sınıf kullanılarak yapılabilir Tarih formatı ad alanında android.text.format. Aşağıdaki kod parçası, aygıt yerel ayarına göre biçimlendirilmiş tarih değerine sahip bir dizenin nasıl alınacağını gösterir:

// Geçerli saati ve tarihi alın: Tarih currentDate = Takvim . getInstance(). getTime(); // Elde etmek standart görünüm mevcut cihaz yerelleştirmesine ilişkin tarihler: java.text . Tarih formatı tarih formatı; dateFormat = android.text.format . Tarih formatı. getDateFormat(bu); //Geçerli tarihi cihazın konumuna göre biçimlendirin: Dize formattedCurrentDate = dateFormat. format(currentDate);

Cihazın geçerli konumu örneğin Amerika Birleşik Devletleri ise, yerel tarih formatı şu şekilde gösterilecektir: 11/29/2014 . Sınıf Tarih formatı Diğer tarih formatları yapılandırılabilir. Komut yerine getDateFormatörneğin gerçekleştirmek getLongDateFormat, o zaman tarihi bu formda alacağız: 29 Aralık 2014 Pazartesi.

Zaman yerelleştirmesi

Zaman, Android SDK'da şu şekilde temsil edildiğinden beri: Tarih nesneler, aynı zamanda sınıf tarafından da yapılandırılır Tarih formatı ad alanında android.text.format. Burada her şey, aynı yöntem kullanılarak tarihin ayarlanmasıyla yaklaşık olarak aynı şekilde yapılır. Kodlara bakalım:

// Geçerli saati ve tarihi ayarlayın java.util . Tarih currentDate = Takvim. getInstance(). getTime(); // Yapılandır doğru görüntü geçerli cihaz yerelleştirmesinin zamanı java.text . Tarih formatı zaman formatı; timeFormat = android.text.format . Tarih formatı. getTimeFormat(bu); // Saat formatını cihazın lokalizasyonuna göre ayarlayın String formattedTime = timeFormat. format(currentDate);

Uygulamanızın başarılı olmasını istiyorsanız Google kullanıcıları Dünyanın her yerinden oynayın, yerelleştirmelisiniz.

Etiketler

  • Yayın
  • Dünya pazarı
  • Gelişim
  • Test yapmak

Not. Detaylı bilgi Uygulamalarınızı yeni pazarlara nasıl taşıyacağınız hakkında bilgi için Going Global Playbook'u okuyun.

Yerelleştirme, uygulama geliştirme döngüsünün tamamını etkilediğinden sürecin doğru planlanması gerekir. Kontrol listesi, başvurunuzu farklı ülkelerde başarılı bir şekilde yayınlanmaya hazırlamak için temel adımları içerir.

Kontrol listesi

  • Pazara girmek için uygun koşullara sahip ülkeleri belirleyin.
  • Kullanmak Google verileri Yeni fırsatlar bulmak için oynayın. Uygulamanız yayınlandıysa Geliştirici Konsolu'nda görüntüleyebilirsiniz. İçinde, sakinleri Google Play'deki uygulama sayfanızı aktif olarak ziyaret eden ülkeleri bulacaksınız. Uygulamanızı yerelleştirerek bu ülkelerdeki kurulum sayısını mutlaka artıracaksınız.
  • Küçük farklılıklar içeren evrensel bir düzen seti kullanın. Varsayılan olarak tüm kaynak setini uygulamaya ekleyin, sağdan sola metin yazma desteği sağlayın, tarihler, saatler, sayılar ve para birimleri için sistem formatını kullanın.
  • Gelişmekte olan pazarların özelliklerini göz önünde bulundurun. Optimizasyon hakkında bilgi edinin Android uygulamaları Minimum bant genişliğine sahip düşük maliyetli cihazlar ve ağlar için.
  • Tüm dizeleri strings.xml dosyasına ekleyin, eksiksiz ve doğru bilgiler sağlayın, Materyal Tasarımı stil yönergelerini izleyin ve çevrilmesi gerekmeyen içeriği belirtin.
  • Uygulamanızı, Google Play verilerinizi ve daha fazlasını çevirin. Bu amaçla uygulamanızın kullanıcılarıyla, bir çeviri bürosuyla iletişime geçebilir veya Google Play Geliştirici Konsolu veya Android Studio'daki uygulama çeviri hizmetini kullanabilirsiniz.
  • Uygulamayı hedef pazarlarınız için standart cihazlarda test ettiğinizden emin olun. Arayüzdeki hataları kontrol edin ve gerekiyorsa ana dilini konuşanlardan yardım isteyin.
  • Gerçek kullanıcılardan geri bildirim almak için beta sürümünü büyük ülkelerde yayınlayın.
  • Küresel ölçekte ilerlemeye hazırlanın. Farklı ülkeler için uygulama yükleme kampanyaları ve diğer benzer etkinlikleri planlayın. Web sitelerinde ve pazarlama malzemelerinde görüntüleyebileceğiniz yerelleştirilmiş simgeler oluşturmak için Google Play Simge Oluşturucu'yu kullanın. Aracı kullanarak yerelleştirilmiş uygulamanızın ekran görüntülerini tanıtım malzemelerinize ekleyin.
  • Optimizasyon ipuçlarını kullanın. Google Play verilerinizin eksiksiz olup olmadığını kontrol edin ve Geliştirici Konsolu'nda uygulamanızı başarılı bir şekilde yayınlamanıza yardımcı olacak diğer faydalı hatırlatıcıları alın.
  • Son bir inceleme yapın ve başvuruyu yayınlayın. Bu listedeki tüm adımları tamamladınız mı? Daha sonra uygulamanızı hedef ülkede yayınlamaya ve tanıtmaya hazırsınız.
  • Uygulama yayınlandıktan sonra kullanıcılara destek sağlayın. Zamanla ortaya çıkan sorunlar hakkında bilgi edinmek için derecelendirmeleri ve incelemeleri takip ettiğinizden, istatistikleri indirdiğinizden emin olun. Mümkünse farklı diller için ayrı topluluklar veya forumlar oluşturun.

Bu kılavuz size tek dilli dili nasıl dönüştüreceğinizi gösterecek iOS uygulaması Xcode kullanılarak oluşturulan , çok dilli hale getirildi.

Kaynak dosyanızı yükleyin ve şimdi son teklifi alın.

iOS Kaynak Dosyası:

Dosya formatı:
UTF-16 Unicode UTF-8 Unicode

Dilden:

Dil:
— Çince (basitleştirilmiş) Çince (geleneksel) Danca Felemenkçe İngilizce Fransızca Almanca İtalyanca Japonca Portekizce Rusça İspanyolca — Arapça Baskça Katalanca Çekçe Fince Yunanca İbranice Hintçe Macarca Latince Makedonca Norveççe Pencapça Farsça Lehçe Portekizce (Portekiz) Romence İsveççe Tamilce Tayca Türkçe Ukraynaca Vietnamca

Zaten çevirmenleriniz var mı?

Çeviri sistemimizin ücretsiz kullanımını sunuyoruz ve başvurunuzun çeviri çalışmasını yönetmek ve koordine etmek için gereken süreyi azaltıyoruz.

giriiş

Bir iOS uygulamasını yerelleştirme süreci aşağıdakileri içerir:

  1. Kaynak dosyalarının yerelleştirmeye hazırlanması.
  2. Uygulamada kullanılan tüm metinlerin kaynak dosyalar halinde toplanması.
  3. Kaynak dosyalarının çevirisi.
  4. Kaynak dosyalarını tekrar uygulamaya entegre etme.

iOS uygulamalarının tasarımı gereği çok dilli olduğundan, uygulamanız birden fazla dilde mevcutsa cihaz ne yapacağını zaten biliyor. GUI metinlerini cihazın dil ayarlarına göre istenilen dilde gösterecektir.

Tüm iOS uygulamaları UTF-16 olarak kodlanmış Unicode metinler kullanılarak oluşturulmuştur. iPhone ve iPad simülatörleri bu formatı destekler ve çevrilmiş uygulamayı önizlemenizi sağlar.

1. Xcode'da yerelleştirilmiş kaynaklar oluşturun

Kaynak dosyasını yeni yerelleştirme dizinine taşıyın ve ardından kaynağı Xcode projenize sürükleyin. Xcode artık kaynağı yerelleştirilmiş olarak tanıyor verilen dil. Yerelleştirilmesi gereken diğer tüm kaynak dosyaları için bu adımları tekrarlayın.

2. Arayüz Oluşturucu dosyalarının yerelleştirilmesi

Dizeleri çıkarma

Kaynak dosyalardan dizeleri çıkarmak için Arayüz Oluşturucu gibi bir aracı çalıştırmanız gerekir ibtool, içinde yer alan Standart kurulum geliştirme kiti.

Dosyaları çıkarmak için açın terminal proje dizininde ve şu komutu çalıştırın:
ibtool --generate-strings-file Örnek.strings en.lpoj/Example.xib
Bu bir Örnek.strings dosyası yaratacaktır. Açtığınızda birçok eşleştirilmiş dize nesnesi değeri göreceksiniz.

Lütfen bu belgeyi dikkatle okuyun ve içeriğini kontrol edin. Çeviri gerektirmeyen gereksiz dizeleri kaldırabilirsiniz.

Yinelenen Satırları İşleme

Kaynak dosyası, farklı durumlardaki düğmelerin bazı adları gibi yinelenen dizeler içerebilir.

Bazı yinelenen dizelerin yalnızca bir kez çevrilmesi gerekirken, diğer yinelenen dizelerin farklı çevirileri vardır. Farklı durumlardaki aynı düğme adının aynı çevirisi olmalıdır. Ancak bir dize bir isim veya fiil olabilir.

Fazladan yinelenen dizeleri (aynı çeviriyle) kaynak dosyasından kaldırabilir veya bunları dosyada bırakabilir ve çevirmene, bunları yinelenen dizeler olarak değerlendirmesini söyleyebilirsiniz.

Serbest bırakılmaya neredeyse hazırsınız, sadece kontrol ettiğinizden emin olun.

Dikkat etmeniz gereken bazı noktalar şunlardır:

Yanlış hesaplama Ne olabilir Nasıl düzeltilir
Çevrilmiş dizeler sınırların dışında Almanca, Fransızca, İspanyolca ve diğer Avrupa dilleri genellikle İngilizce metnin %120 ila %150'si boyutundadır. Asya dilleri genellikle %50-%70’i oluşturur. Uyum sağlamanızı öneririz GUI farklı boyutlardaki çizgilere. iOS yerelleştirme sistemi ICanLocalize, dizelerin uzunluğunu kontrol eder ve dizelerin çok uzun veya çok kısa olması durumunda uyarı verir.
Biçimlendirme karakterleri eksik Çoğu satır, metin için %s ve sayılar için %d gibi veriler için yer tutucular içerir. Diğer satırlar HTML kodunu içerir. Çeviri aynı formatı içermiyorsa uygulama çalışmayacaktır. Çeviri sistemimiz "gerekli" dizileri girmenize olanak sağlar. Bu, çevirilerin orijinallerle aynı dizileri içermesini sağlayacaktır. Aksi takdirde, tüm satırları manuel olarak gözden geçirmeli ve biçimlendirme karakterlerinin eşleştiğinden emin olmalısınız.
Bağlam dışı çeviri Çevirmenin satırın anlamını tam olarak anlamamış olma ihtimali her zaman vardır. Bu, uygulamalar kısa ve açıklayıcı olmayan satırlar içerdiğinde ortaya çıkar. Çalışmaya başlamadan önce gönderin Tam tanımçevirmen uygulamaları. Daha sonra uygulamanın ekran görüntülerini alın ve son doğrulama için tercümana gönderin. Dizelere yorum eklemek harika bir çeviri elde etmenize yardımcı olacaktır.

Sorun giderme

Çevrilmiş dosyada Localizable.strings mevcutsa ancak cihazda yerelleştirilmemişse, dosyanın karakter kodlamasını kontrol edin.

iPhone simülatörünün aksine, gerçek cihaz yalnızca UTF-16 dize dosyalarını tanır. Simülatör ve cihaz her zaman aynı şekilde davranmadığından cihazınızdaki yerelleştirmeleri daima kontrol edin.

İndirilen çevrilmiş kaynak dosyaları ICanLocalize, UTF-16 kodludur. Arşivlerde yer alıyorlar gzip böylece tarayıcınız yükleme sırasında bunları değiştirmez.

iOS uygulaması geliştikçe çeviriyi güncelleyin

ICanLocalizeçevirilerinizi güncel tutmanızı kolaylaştırır. Bir uygulama geliştikçe yeni satırlar oluşturulur ve mevcut satırlar değişebilir.

Çevirileri güncellemek için tekrar çalıştırın genstringler, yeni bir dosya oluşturmak için Yerelleştirilebilir.dizeler. Sonra yeniden başlat ibtool yeni dize dosyaları oluşturmak için.

Son olarak, yeni kaynak dosyalarını mevcut projeye yükleyin. ICanLocalize. Sistem yeni veya değiştirilmiş dizeleri algılayacak ve yalnızca bunları çevirecektir. Sıfırdan çevirinin tamamı için değil, yalnızca çeviriyi güncellemek için ödeme yapmanız gerekecektir.

Not: dizede değişiklik yapıldığında tamamen yeniden çevrilmesi gerekir.Çevirileri güncelleme maliyetini azaltmak için büyük dizeleri birkaç küçük dizeye bölmenizi öneririz. Böylece değişiklik yaptığınızda çevrilmesi gereken kısım küçülür ve maliyeti düşer. Satırlar, onları kendiniz temizleyebileceğiniz kadar geniş olmalı, ancak güncellenmesi pahalı olacak kadar büyük olmamalıdır.

iOS uygulamanız için çeviriye mi ihtiyacınız var?

ICanLocalize teklifler

“2012'den beri ICanLocalize'ı kullanıyoruz ve konu içeriğimizi farklı pazarlara çevirmek olduğunda iş akışımızı gerçekten kolaylaştırdı. Artık farklı diller için çevirmen aramanıza, onlara çeviri araçlarının nasıl kullanılacağını öğretmenize, özel faturalar oluşturmanıza vb. gerek yok, çünkü ICanLocalize bunların hepsini bizim için yapıyor! Web sitelerimizi, uygulamalarımızı, haber bültenlerimizi ve diğer pazarlama materyallerimizi tercüme etmek için ICanLocalize hizmetlerini kullanıyoruz ve her zaman güvenebilirsiniz hızlı çalışma. Tüm bu ifadenin ücretli bir reklam gibi göründüğünün farkındayım, ancak aslında gerçek olmayan veya gerçek fikrim olmayan hiçbir şey yazmadım! ICanLocalize'ı her zaman tavsiye ederim!”

"ICanLocalize: En iyi karar Uygulamanızın hızlı ve kaliteli çevirileri için. Hizmetlerini tüm uygulamalarımızda iyi sonuçlarla ve kullanıcılarımızdan olumlu geri bildirimlerle kullanıyoruz. Uygulamalarınızı yerelleştirmek için ICanLocalize'ı kullanmanızı öneririm."

"ICanLocalize'ın kullanımı inanılmaz derecede kolaydı. Çevirmenler bize çok yardımcı oldu ve çeviri süreci son derece basit çıktı. ICanLocalize tüm kategorilerdeki geliştiricilerin kullanımına sunuldu ve her zamankinden daha fazla müşteriye ulaşmamıza yardımcı oldu.”

“ICanLocalize, her dil için çevirmen sağladığından ve diğer çevirmenlerin çevirilerin doğru olduğundan emin olmak için kontrol etmesini sağladığından bana çok zaman kazandırdı. ICanLocalize'ın sağladığı en büyük yardım, dize dosyalarımı xcode'dan doğrudan siteye yükleme yeteneğidir; böylece çeviriler hazır olduğunda, projemdeki dize dosyalarımı değiştirebilirim ve işim biter."

Bu kılavuzu tercüme edip yeniden yayınlamak istiyorsanız, lütfen önce onu nerede yayınlamak istediğinizi ve kendiniz hakkında birkaç kelime söyleyin.