2012-09-11 16 views
10

Dizgiye bir etiket koymak istiyorum: "خخخ yeni aldım: Disguise Kit." ama testi çalıştırdığımda, etiket ".just aldım: Disguise Kit خخخ"?Xcode'da, İngilizce + Arapça birleştirme ve Arapça ile başlayan metni nasıl görüntüleyebilirsiniz?

metin Arapça ile başlayan değilse, Ben set olarak ne gösterecektir. Sorun nedir?

Bu sorunla nasıl başa çıkılacağını bilen var mı? İlk

+0

Bu bir RTL sorunu mu? Arapça'yı LTR'yi göstermeye teşvik edebilir misiniz? –

+0

@JamesWebster Ben öyle düşünmüyorum. RTL problemi ise, neden sadece Arapça kelimeyle başlayan bu dava için? – user1300503

+0

Cümle RTL'ye başlayacağından, (خخخ sağ baş sola başlıyor), geriye kalan kelimeleri çizmek için LTR'ye değişiyor gibi görünüyor. –

cevap

30

Cal Henderson mükemmel "Understanding Bidirectional (BIDI) Text in Unicode." okuyun.

İster inanın ister, UILabel İstediğin şekilde dışarı atarken değil. Sağdan sola bir dize sağladınız (Arapça başlayarak). Bu hakkı sola doğru göstermeye başlar. Daha sonra soldan sağa doğru yerleştirdiği soldan sağa bir İngilizce dizeyi gömdünüz. Daha sonra dönemi görüyor ve sağdan sola uzanıyor. Çünkü bu, içinde İngilizce olan bir Arapça dizgedir (en iyi UILabel anlatabilir). Eğer olması gerekiyordu ne

gömülü Arapça ile soldan sağa dizedir. Bu, dizeyi soldan sağa karakterler ile başlatmanız gerektiği anlamına gelir. İki seçenek: Başlangıca İngilizce'yi ekleyin veya dizenin başlangıcını LTR moduna bağlamak için sıfır genişlikli Soldan Sağa İşaret'i (U + 200E, LRM) kullanın.

Objective-C:

self.label.text = @"\u200eكتب just bought: Disguise Kit."; 

Swift:

self.label.text = "\u{200E}كتب just bought: Disguise Kit." 

U + 200E hakkında iyi haber görüntülemek önce güvenle her LTR dizeye ekleyebilirsiniz olmasıdır . LTR dilleri için yerelleştirilmiş dizelerinizin başlangıcında bile güvenle kullanabilirsiniz. Gereksizse, hiçbir şeye zarar vermez.

diğer şeylerin bir çift

not: ya pape gibi daha iyisi bir şey: (D her iyi öğrenci gibi) كتب ile sınamak daima ككك ile bu şeyleri test etmek asla. Aksi halde, Arapça'nın geriye doğru yerleştirildiğini söyleyemezsiniz. Ben çok seviyorum çünkü farklı şekilde geriye doğru görünüyor. test ederken

Ayrıca, Xcode Arapça düzen bilmiyor unutmayın. Kodunuzda herhangi bir statik dizge yazarsanız, bunlar editörde geriye doğru görüntülenir, ancak UI'de doğru şekilde görüntülenecektir. Beni delirtiyor.

+0

Çok teşekkürler, istediğim bu! – user1300503

+0

Teşekkür ederim Rob. Bu cevabı arayan 30 dakika geçirdim! – Lefteris

+0

Ben html veya atfedilen dize ile tamir etmeye çalışıyorum 4 saat boşa, bu harika! –

İlgili konular