如何将土耳其语“i”大写?

Ser*_*gio 3 turkish localization ios swift

在土耳其语中,有两个i

\n\n
    \n
  • 无点:\xc4\xb1
  • \n
  • 虚线:i , \xc4\xb0
  • \n
\n\n

问题:每次我大写i时,都会得到一个I

\n\n

当我大写i时,我想得到一个\xc4\xb0(仅在土耳其语中),当我大写\xc4\xb1时,我想得到一个I

\n\n

我有一个函数可以做到这一点

\n\n
@objc public static func uppercaseTurkishString(_ string: String) -> String {\n    return String(string.map { (char) -> Character in\n        if char == "i" {\n            return "\xc4\xb0"\n        } else {\n            return Character(String(char).uppercased())\n        }\n    })\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

但每次使用时我都必须检查该语言是否是土耳其语,并且为应用程序中的每个字符串执行此操作是一项非常艰巨的工作。

\n\n

有更简单的方法吗?

\n

Dáv*_*tor 7

问题在于该uppercased()函数不关心Locales 并且小点i看起来像正常的英语i。您应该使用,这将为土耳其用户localizedUppercase使用土耳其语(或者,如果您希望为应用程序的所有用户执行此操作,无论他们的区域设置如何,但我不建议这样做)。Localeuppercased(with: Locale(identifier: "tr_TR")

而且,不需要逐个字符地进行大写,您可以简单地在完整的String.

@objc public static func uppercaseTurkishString(_ string: String) -> String {
    return string.localizedUppercase
}
Run Code Online (Sandbox Code Playgroud)