Rightpoint / BonMot

Beautiful, easy attributed strings in Swift
MIT License
3.54k stars 196 forks source link

Localization Arabic #401

Open sam961 opened 3 years ago

sam961 commented 3 years ago

I cannot make locaization from english to arabic example let text = "List of <nameStyle>%@</nameStyle>'s devices".localizedWithParameters(name)

In the localized string i have the following : "List of <nameStyle>%@</nameStyle>'s devices"="الأجهزة <nameStyle>%@</nameStyle>'الخاصة";

Please help

ZevEisenberg commented 3 years ago

Where is localizedWithParameters coming from? I don't think that's part of BonMot. I wonder if the order of the %@ in the Arabic string is messing up the positional format? Maybe try swapping the order?

sam961 commented 3 years ago

i created a protocol it is the same as : let text = String(format: NSLocalizedString("List of <nameStyle>%@</nameStyle>'s devices", comment: ""), "My Name")

but the text is not translated

"List of <nameStyle>%@</nameStyle>'s devices"="TEST <nameStyle>%@</nameStyle>TEST";

ZevEisenberg commented 3 years ago

@sam961 oh, I missed something in your original post. You had <tags> without backticks, so GitHub didn't render them because it thought they were HTML tags. I've edited your original post to make this more clear, and I'll keep investigating the issue.

ZevEisenberg commented 3 years ago

@sam961 I was not able to reproduce the issue. I set up my localized strings file like this:

"List of <nameStyle>%@</nameStyle>'s devices"="الأجهزة <nameStyle>%@</nameStyle>'الخاصة";

In my app code, here's how I set up the styling. I used an existing app, so the code has more than you should need to get it working, but here's the gist:

        label.attributedText = String(format: NSLocalizedString("List of <nameStyle>%@</nameStyle>'s devices", comment: "foo"), "Zev").styled(with: StringStyle([
            .adapt(.control),
            .font(UIFont.systemFont(ofSize: 30, weight: .medium)),
            .color(.tutorialText),
            .alignment(.center),
            .xmlRules([
                .style("nameStyle", StringStyle(.color(.red))),
            ]),
        ]))

Result: