Localizable.strings - 为什么我需要将占位符放在键中?
Localizable.strings - Why do I need to put the placeholder in the key?
在Localizable.strings文件中,为什么需要在键中放置占位符。
假设您使用点符号,例如;
"welcome-back.label" = "welcome back, %@"
我见过混合占位符和点符号的示例,例如这样;
"welcome-back %@.label" = "welcome back, %@"
^ 以上可能不正确
但我不明白的是为什么你甚至需要 key
中的占位符,而它只是指向 value
.
的指针
有人可以解释一下吗?
非常感谢
密钥中不需要它,它的存在是为了让以后阅读代码的人的生活更轻松,这样他们就可以很容易地知道应该传递一个参数,它的用途以及应该传递哪个变量使用。如果您想使用其他一些规范来表明这一点,那很好。如果你想让它变得超级简洁和难以使用那也很好,只是气馁...
NSLocalizedString 会将左侧的字符串替换为右侧的字符串。右侧的字符串显然必须是该情况的正确字符串,左侧的字符串可以是您想要的任何字符串。您可以使用键“1”、“2”、“3”等,它会起作用(尽管您会发疯)。
作为一名开发人员,您可以通过正确的策略改善生活。我倾向于从不使用纯英文文本作为键,因为同一个英文单词可以有许多不同的翻译(例如 "key" 在德语中可以是 Taste、Schlüssel、Tonart 和许多其他东西)。相反,我写了一些描述文本用途的文本。
并且为了避免在您输入错误的键时出现问题(编译器无法找到),我倾向于对键使用#define 语句。保持#defines 列表和你的localizable.strings 同步要容易得多,如果你拼错了#defined 常量,编译器会告诉你。
我倾向于使用 "format" 这个词来表示格式字符串而不是直接使用的字符串。所以我可能在一个头文件中有
#define kWelcomeBackLabelTitleFormat @"WelcomeBackLabelTitleFormat"
并在 localizable.strings 文件中
"WelcomeBackLabelTitleFormat" = "welcome back, %@";
(如果您错误地将 "WelcomebackLabelTitleFormat" 与小写字母 b 一起使用,#define 会为您节省时间)。
在Localizable.strings文件中,为什么需要在键中放置占位符。
假设您使用点符号,例如;
"welcome-back.label" = "welcome back, %@"
我见过混合占位符和点符号的示例,例如这样;
"welcome-back %@.label" = "welcome back, %@"
^ 以上可能不正确
但我不明白的是为什么你甚至需要 key
中的占位符,而它只是指向 value
.
有人可以解释一下吗?
非常感谢
密钥中不需要它,它的存在是为了让以后阅读代码的人的生活更轻松,这样他们就可以很容易地知道应该传递一个参数,它的用途以及应该传递哪个变量使用。如果您想使用其他一些规范来表明这一点,那很好。如果你想让它变得超级简洁和难以使用那也很好,只是气馁...
NSLocalizedString 会将左侧的字符串替换为右侧的字符串。右侧的字符串显然必须是该情况的正确字符串,左侧的字符串可以是您想要的任何字符串。您可以使用键“1”、“2”、“3”等,它会起作用(尽管您会发疯)。
作为一名开发人员,您可以通过正确的策略改善生活。我倾向于从不使用纯英文文本作为键,因为同一个英文单词可以有许多不同的翻译(例如 "key" 在德语中可以是 Taste、Schlüssel、Tonart 和许多其他东西)。相反,我写了一些描述文本用途的文本。
并且为了避免在您输入错误的键时出现问题(编译器无法找到),我倾向于对键使用#define 语句。保持#defines 列表和你的localizable.strings 同步要容易得多,如果你拼错了#defined 常量,编译器会告诉你。
我倾向于使用 "format" 这个词来表示格式字符串而不是直接使用的字符串。所以我可能在一个头文件中有
#define kWelcomeBackLabelTitleFormat @"WelcomeBackLabelTitleFormat"
并在 localizable.strings 文件中
"WelcomeBackLabelTitleFormat" = "welcome back, %@";
(如果您错误地将 "WelcomebackLabelTitleFormat" 与小写字母 b 一起使用,#define 会为您节省时间)。