iOS中不区分大小写的本地化

iOS中不区分大小写的本地化,ios,nslocalizedstring,Ios,Nslocalizedstring,在实施本地化时,我意识到本地化是区分大小写的,这意味着: - "Cookie Selection" = "Sélection de biscuit"; - "COOKIE SELECTION" = "SÉLECTION DE BISCUIT"; 以上两个是不同的实体。如果像NSLocalizedString(“cookie selection”,comment:)那样进行本地化,则不会对其进行本地化,因为为“cookie selection”指定的键值映射用于大写字符串或大写字符串 查询

在实施本地化时,我意识到本地化是区分大小写的,这意味着:

 - "Cookie Selection" = "Sélection de biscuit";

 - "COOKIE SELECTION" = "SÉLECTION DE BISCUIT";
以上两个是不同的实体。如果像
NSLocalizedString(“cookie selection”,comment:)
那样进行本地化,则不会对其进行本地化,因为为“cookie selection”指定的键值映射用于大写字符串或大写字符串

查询: 如果我可以使它不区分大小写,在某种意义上,我将只为本地化添加一对

"Cookie Selection" = "Sélection de biscuit";
这应该适用于以下所有情况

 1. NSLocalizedString("Cookie Selection", comment: "")
 2. NSLocalizedString("COOKIE SELECTION", comment: "")
 3. NSLocalizedString("cookie selection", comment: "")
注意:->如果没有任何自定义方法,请仅使用NSLocalization


快乐编码

不……最好使用一个常量文件,在该文件中存储所有本地化常量及其值,以便在调用时不会错误地更改本地化常量值(假设您键入cookie Selection而不是cookie Selection)。然后将可本地化文件中的值用作键

本地化常数。swift

let CookieSelectionKey = "Cookie Selection"
可本地化的.字符串(英文)

现在就这样说吧

  NSLocalizedString(CookieSelectionKey, comment: "")

由于它返回一个字符串,您可以使用字符串实例方法,如大写、大写等。相应地更改大小写。

否……最好使用常量文件,在其中存储所有本地化常量及其值,这样本地化常量值就不会错误地更改(假设在调用时键入cookie Selection,而不是cookie Selection),您将使用可本地化文件中的then值作为键

本地化常数。swift

let CookieSelectionKey = "Cookie Selection"
可本地化的.字符串(英文)

现在就这样说吧

  NSLocalizedString(CookieSelectionKey, comment: "")

由于它返回一个字符串,您可以使用字符串实例方法,如大写、大写等。相应地更改大小写。

最简单、最原始的解决方案是始终将键大写,如下所示:

NSLocalizedString("cookie selection".uppercased(), comment: "Comment")
更简洁的方法是在String类上创建一个类别,并改用该方法:

        extension String {
        public static func LocalizedString(key: String, comment: String) -> String {
            return NSLocalizedString(key.uppercased(), comment: comment)
        }
    }

// Usage

    String.LocalizedString(key: "cookie selection", comment: "")

另一个很好的方法是创建一个常量文件,并使用它们,而不是使用硬编码字符串。

最简单、最原始的解决方案是始终将键大写,如下所示:

NSLocalizedString("cookie selection".uppercased(), comment: "Comment")
更简洁的方法是在String类上创建一个类别,并改用该方法:

        extension String {
        public static func LocalizedString(key: String, comment: String) -> String {
            return NSLocalizedString(key.uppercased(), comment: comment)
        }
    }

// Usage

    String.LocalizedString(key: "cookie selection", comment: "")

另一个很好的方法是创建一个常量文件,并使用它们,而不是使用硬编码字符串。

通过创建一个结构来封装本地化逻辑等,可以消除出错的可能性

enum Strings: String {
    case cookieSelection

    var localized: String {
        return NSLocalizedString(self.rawValue, comment: "Something here")
    }
}
有了这样的功能,您现在可以在一个位置跟踪所有本地化字符串,并消除它们被错误使用的可能性

对于用法,请执行以下操作

label.text = Strings.cookieSelection.localized
如果您想要字符串的默认值,可以将其添加到案例中

enum Strings: String {
    case cookieSelection = "Cookie Selection"
}

你可以通过构造一个结构来封装你的局部逻辑等来消除出错的可能性

enum Strings: String {
    case cookieSelection

    var localized: String {
        return NSLocalizedString(self.rawValue, comment: "Something here")
    }
}
有了这样的功能,您现在可以在一个位置跟踪所有本地化字符串,并消除它们被错误使用的可能性

对于用法,请执行以下操作

label.text = Strings.cookieSelection.localized
如果您想要字符串的默认值,可以将其添加到案例中

enum Strings: String {
    case cookieSelection = "Cookie Selection"
}


怎么样
NSLocalizedString(“Cookie Selection.lowercased(),comment:”)
?只保留
Cookie Selection
,然后在执行
NSLocalizedString(“Cookie Selection”,comment:”)
时,应用
.uppercased()
/
小写()
/
。根据大小写大写
?本地化字符串文件中的键始终考虑大小写–但您可以为键定义自己的命名约定以保持一致,例如使用
小写字母(slug
camelCase
,或
点符号
键。问题是en您正在本地化动态数据,但不知道将在哪种情况下获得它。它应该区分大小写。您希望它区分大小写。不要试图避免区分大小写。您实际上可能需要以不同的大小写显示相同的文本。不同的本地化可能会导致不同的capitalizations.
NSLocalizedString(“Cookie Selection”。小写(),注释:)
?只保留
Cookie Selection
,然后在执行
NSLocalizedString(“Cookie Selection”,注释:)
,应用
。大写()
/
小写()
/
。根据大小写大写
?本地化字符串文件中的键始终考虑大小写–但您可以为键定义自己的命名约定以保持一致,例如使用
小写字母(slug
camelCase
,或
点符号
键。问题是en您正在本地化动态数据,但不知道将在哪种情况下获得它。它应该区分大小写。您希望它区分大小写。不要试图避免区分大小写。您实际上可能需要以不同的大小写显示相同的文本。不同的本地化可能会导致不同的ca遗憾。我同意你的解决方案,并感谢快速回复。但问题是“饼干选择”是我们从服务器获取的动态数据。这将导致问题。无论如何,在url调用后,您不会创建本地化文件。您和服务器必须就密钥达成一致。如果服务器在发送时更改大小写,则在创建本地化字符串时使用已发送密钥的全大写版本这就是问题所在@keshav.case不匹配,我们被迫添加了重复的VAL。请阅读上面的评论。一种方法可能是使用所有大小写键。现在w