2014-05-19 13 views
6

Mam aplikację, która zawiera dwa języki: arabski (od prawej do lewej) i angielski (od lewej do prawej), użyłem Base Internationalization z Auto Layout, aby uprościć i użyć jednego scenorys (podstawowy scenopis) w tym celu, jednak ponieważ mieszkam w kraju, w którym arabski jest językiem podstawowym Zacząłem projektować mój bazowy storyboard z interfejsem arabskim (RTL), zaznaczyłem opcję "Respect Language Direction" dla każdego poziomu przymus.
Po dodaniu języka angielskiego z ustawień projektu, przetłumaczeniu pliku ciągów storyboardu i uruchomieniu aplikacji na angielskim telefonie iPhone (Ustawienia -> Ogólne -> Międzynarodowe -> Język -> Angielski), interfejs nigdy nie został zmieniony na LTR, pozostaje tak jak jest (RTL), próbowałem odznaczyć opcję "Respect Language Direction", ale bez skutku.
Jeśli jednak scenariusz jest odwrotny, wszystko byłoby w porządku, tzn. Jeśli zaprojektowałem interfejs na bazowym scenorysie z językiem angielskim (LTR), interfejs przełączy się na RTL, gdy uruchomię aplikację na arabskim iPhone'ie.Base storyboard uwzględnia tylko interfejsy LTR w aplikacji wielojęzycznej

w jaki sposób mogę opowiedzieć scenorowi bazowemu, że projektuję interfejs RTL, aby przełączyć ten interfejs na LTR, gdy język telefonu iPhone jest (np.) Angielski?

p.s. środowisko testowe było na Xcode 5.1.1 i iPhone 4SiOS 7.1

+0

Czy próbowałeś z jakimkolwiek innym językiem LTR lub RTL. Być może to błąd? Co powiedzieć ? –

+0

Czy możesz dostarczyć nam przykładowy projekt, który demonstruje problem? Mam przeczucie, że edycja pliku projektu bezpośrednio może pomóc w rozwiązaniu problemu, ale wciąż mam problem z samodzielnym wygenerowaniem przypadku testowego, który pasuje do twojej sytuacji. –

+0

https://dl.dropboxusercontent.com/u/57066689/TestAutoLayout.zip w scenopisie projektu znajduje się tylko 1 UILabel umieszczony po prawej stronie ekranu (jak wspomniałem w pytaniu, zawsze najpierw projektuję swoje projekty w arabskim interfejsie użytkownika, ponieważ językiem mojego kraju jest arabski - RTL) z dwoma ograniczeniami, spróbuj zmienić język symulatora między arabskim i angielskim, zauważysz, że etykieta nadal znajduje się po prawej stronie po angielsku i przechodzi w lewą stronę Arabski. Uwaga: słowo "arabski" pojawia się jako "العربية" w Ustawieniach symulatora -> Ogólne -> Międzynarodowe -> Język. – JAHelia

Odpowiedz

1

Według mnie trzeba spróbować

setTextAlignment: NSTextAlignmentNatural

To rozwiąże problem to zestaw RTL dla języka jak arabski i ustawić interfejs do języka LRT jak Język angielski.

1

Uważam, że "Kierunek zmiany kierunku" zależy od aktualnie ustawionego języka urządzenia, jak sugeruje Apple's documentation.

Można mieć więcej szczęścia poprzez ręczne ustawienie język wykrywany przez NSLinguisticTagger lub używając this method

Problem może być również, że storyboard edytor Xcode jest odwrócenie tekstu arabskiego, utrzymując wszystko jako L (documented here), w którym to przypadku możesz użyć osobnego edytora do ustawienia tekstu lub ustawić tekst programowo zamiast w scenorysie.

+0

Firma Apple rozwiązała odwrócony błąd tekstowy w języku arabskim w Xcode ... ale wciąż nie dostałam odpowiedzi na moje pytanie. – JAHelia

+0

Czy próbowałeś zmienić język urządzenia, aby zobaczyć, jaki to efekt? – jaggedcow

+0

jeśli zaprojektowałem bazę BaseStoryboard z językiem RTL i zmieniłem język urządzenia na język RTL, odwróci on interfejs, a jeśli zmienię język urządzenia na język LTR, to nie odwróci interfejsu. – JAHelia