To my understanding apple doesn't allow 2 identical apps in diferrent languages on the appstore but what if one language is left to right and the other is right to left? That means diferrent menus, different positioning of items, different UI etc' (even the segues are different). Obviously i can't use regualr localization for this.
Is there a solution for that or I'm just going to write a very big app with a lot of "if user is using hebrew go to vc1 else go to vc2" ?
Consider Auto Layout feature of iOS 6.0.
https://developer.apple.com/library/mac/#documentation/UserExperience/Conceptual/AutolayoutPG/Articles/Introduction.html
"You don’t even have to specify new layout for languages like Hebrew and Arabic in which the left to right ordering of elements themselves should generally be reversed."
Related
I already looked through all of the similar questions at stack overflow. I am sorry if this is a duplicate. If it is, I will gladly delete this since I already have my answer.
I am developing an application in Swift that supports English and Arabic languages. I added AutoLayout constraints (leading and trailing, not left and right as pointed out by some answers). I have the strings localized.
The user has the option to change their language INSIDE the application. I am talking inside the application, not about the whole phone. He could have had his phone language be Arabic but chose English as his application language.
Can someone help me with how to proceed with that? Some answers pointed to use semanticContentAttribute by forcing it right to left, and some did not.
I want my application to be mirrored, all of it. It includes collectionViews, TableViews, etc ...
Example:
I am new to multi-language app.
What I am doing is,
an app with two languages.
English & Arabic
The language of the app depends upon the device language.
(I want to change this too, that app language should be controlled from inside the app. not device dependant but thats next question)
I am having some controls like UIButton,UITextField,UILabel, etc....
When my app is in English I gave these controls frame starting from left corner of device, and when my app is in Arabic I gave them frames starting from Right corner of device. (As arabic is written from Right - to - left)
My Question is,
For this purpose I need to do extra work,
i.e. check device language and then set the frames of control.
on each view I may have "n" number of controls, and giving the frame sizes to all controls for both language doesn't seems good from my view.
Is there anything available in Xcode itself by using which I can do this.
means I need to give frames for default language (i.e. English) and if my device language is change to Arabic then frames of Controls will be automatically Mirrored from Right to left.
Following screens may give some idea.
(I used different frames for all those controls checking device language)
Any help is accepted.
Thanks in advance.
sorry If question is asked already. But I didn't find anything.
If anyone found then link to that is Welcome :)
From Supporting Right-to-Left Languages:
Your user interface should be mirrored when displaying right-to-left languages. If you use base internationalization and Auto Layout, most of the user interface will appear mirrored automatically for you. The text direction changes to right-to-left with the exception of phone numbers and country codes which are always left-to-right. Some views and controls in your user interface may not change direction automatically which you can fix programmatically.
They functionality you're looking for is called Auto Layout which was introduced a few years ago by Apple. It will handle lots of things you need, but there's also a lot to do for you. The guide above will guide you through the necessary steps.
Update from iOS 9.0:
iOS 9 brings comprehensive support for right-to-left languages, which makes it easier for you to provide a flipped user interface. For example:
Standard UIKit controls automatically flip in a right-to-left context.
UIView defines semantic content attributes that let you specify how particular views should appear in a right-to-left context.
UIImage adds the imageFlippedForRightToLeftLayoutDirection method, which makes it easy to flip an image programmatically when appropriate.
To learn more about providing a flipped user interface, see Supporting Right-to-Left Languages.
I'm building an iOS with bilingual content, the user will be able to switch between languages at any point and the content will be updated to the selected language. What is the best way to keep track of all of my UIView components to facilitate the language switch?
The options I see are;
Make each element that could possibly change a property of my ViewController;
Give each element a tag and grab the elements with viewWithTag when required;
Throw out the whole container view and rebuild it from scratch.
To be honest none of these 3 options sound ideal, are there others options I haven't thought of? What is considered the best way to keep track of multiple elements?
Thanks,
Edit 3 Mar 2014
More details.
The app will have two versions of all the dynamic content, French and English. Only one language will be displayed at a time, but the user will be able to switch languages at any time and all of the displayed content should be updated.
App description.
The app is part of an instillation and will be run in kiosk mode with a landscape orientation. The left hand 2/3 of the screen will be a horizontal scroll view though which the the user can page though the content. When the user sees content that they wish to investigate further a vertical scrollview will slide up from the bottom and fill the right hand 1/3 of the screen. The user will then be able to page though details on the content. It is this dynamic detail content that I am currently working on changing according to language.
What I'd do is subclass all "basic" components (UILabel, UIButton and others) and make them respond to a global, custom NSNotification sent by your controllers when the user switches a language, with the use of the global notification center ([NSNotificationCenter defaultCenter]). That way, anyone has a chance to update.
In a recent localisation attempt we just made every visible string an outlet and defined them as NSLocalizedString, then we have plist dictionaries for each language. It takes awhile to get all set up, but is relatively easy to maintain once it's there!
Not saying that's the best way, but that's what we did!
https://developer.apple.com/internationalization/
That link may help you! :)
I am coding a new children's story book-apps, want to provide a gui element similar to what Tabtale does on its apps:
The Three Little Pigs
Goldilocks and The Three Bears
Aladdin and The Magic Lamp
the element Im specifically speaking of is in the lower right corner of these (free) apps.
You touch a button once, and a mini menu of items with buttons within presents itself.
This gui doesnt seem to fit Apple's definition of a popover, therefore, Im not sure what it is.
I want to develop ios app which support multi language, country wise.
So when app will supporting English language, its design should be left to right and when app will supporting arabic language for example then, design/text should be right to left.
So any body has any idea for this functionality? Or we need to manage it programmatically manage?
Thanks,
Hardik Shah
As Mike Weller mentioned in his comment, Autolayout should do this:
https://developer.apple.com/library/mac/#documentation/UserExperience/Conceptual/AutolayoutPG/Articles/Introduction.html#//apple_ref/doc/uid/TP40010853-CH1-SW1
"You don’t even have to specify new layout for languages like Hebrew and Arabic in which the left to right ordering of elements themselves should generally be reversed."
This question seems to have been answered a couple of time before, including here:
Right to left and left to right languages in the same app?
and here for determining which direction the language should be:
iOS: Determine if device language is Right to Left (RTL)