8
votes

I have implemented Language Localization in my iOS App. So, now user can set the Arabic Language in my iPad Application.

I am getting the localized string response from the server and now I want to set this localized string to my UILabel in Right To Left format with Right Alignment.

Update :

My server response is already in RTL format. Now, I just wanted to set the text alignment to right when I have Arabic text in my UILabel.

Right now I have to write code to set the alignment of UILabel based on the language.

So, I just want to know if there is any property available for UILabel by setting which I can make the text of UILabel Right Aligned in case of Arabic Language.

4
please apply arabic font . maybe it will solve your issue.i-Maddy
If you set the attributedText property for the label, you can apply a mutable paragraph style with the RTL baseWritingDirection set. But, the label should apply the correct writing direction to the text. If you're using constraints, make sure you have your Leading and Trailing constraints set up correctly.Jason Coco
I want all my labels to be, You mean in whole project ?Kumar KL
check the language like in the question stackoverflow.com/questions/6325073/… and if it is Arabic change the label's alignment.Khaled Annajar

4 Answers

6
votes

For Swift3 //MARK: UILabel extension

extension UILabel {
func decideTextDirection () {
    let tagScheme = [NSLinguisticTagSchemeLanguage]
    let tagger    = NSLinguisticTagger(tagSchemes: tagScheme, options: 0)
    tagger.string = self.text
    let lang      = tagger.tag(at: 0, scheme: NSLinguisticTagSchemeLanguage,
                                      tokenRange: nil, sentenceRange: nil)

    if lang?.range(of:"ar") != nil {
        self.textAlignment = NSTextAlignment.right
    } else {
        self.textAlignment = NSTextAlignment.left
    }
}

to use this add following with your label :

detailLabel.text = details[0]

detailLabel.decideTextDirection()
4
votes

have you try this.

 [[self label] setTextAlignment:NSTextAlignmentNatural];

AutoLayout + RTL + UILabel text alignment

Hope this will solve your problem.

2
votes

Display the text normally as you do in english if you are getting arabic text from server no need to align it. Just right align the text.

1
votes

Make your text label the entire width of the view. Then the text will right align from the right side of the screen.