将字符串保持在一个地方的最佳实践



我正在设置一个新的iOS项目,并想知道我是否应该使用Localizable.strings文件来保持字符串,即使不计划添加其他语言的支持。

我曾尝试使用struct来保持弦乐,但我想知道这是否是一个好习惯。使用Localizable.strings也将在库R.swift上运行良好,这是我努力选择策略的另一个原因。

在这种情况下,没有"最佳实践"。有一些实践,有些可能比其他案件更适合您的案件。

您是说您不打算增加对其他语言的支持,但是如果您改变主意,似乎想为此做好准备。因此,第一件事是问问自己您正在寻找的实际问题是什么。我想说的问题是,一旦应用已经出门,您就会获得的开销,您需要搜索应用程序中使用的所有字符串并将其包装到NSLocalizedString中。这通常包括无尽的测试,您最终仍然很可能忘记了至少某些字符串。

您可以从开始将内容包裹到NSLocalizedString中,最终将帮助您使用代码中的本机工具来提取所有字符串。那时的问题仍然是故事板。从故事板上提取字符串的不是太多,而是删除您没有计划翻译的默认文本(例如"名称"实际上是某个名称,不应翻译(。因此,根据我的经验,这是一个半解决方案。

要解决故事板问题,应该有一个工具(我不记得哪种,也许还有其他一些可可录(,使您能够忽略不应该翻译的视图。因此,在这种情况下,您需要使用两件事;NSLocalizedString,忽略IB中的不可翻译项目。

正如您已经很好地说的那样,您可以使用R.Swift直接从strings文件中获取字符串。随着您的发展,这很整洁,但也非常分散注意力。这样做是在强迫开发人员首先在strings文件中输入文本,然后才能使用它。我个人讨厌那个。同样,这可能是一个问题,多个开发人员处于冲突状态。更不用说这几乎没有解决您的故事板的问题。

创建一个单独的结构系统来固定所有字符串确实可以很好地工作。您不必追捕代码中的所有字符串,也无需跳到strings文件(开发时转到另一个来源要更令人愉悦,因为您可以很容易地导航到它(。假设您像label.text = Strings.Settings.User.firstNamePlaceholder一样维护它,您也确实保留了一个良好的结构,该结构可以帮助您轻松找到所需或弃用的字符串。您可以轻松删除整个屏幕。但这仍然是开发人员的开销,而且您仍然存在一个问题,现在您需要将所有插座从故事板中拖动以将本地化字符串设置为它们。

执行此过程,您可以最终选择直接使用NSLocalizedString或使用R.Swift。实际上,您只能使用什么都不使用,并且您仍然不会加时性地切换到两者中的任何一个(再次假设在代码中搜寻这些字符串需要大部分时间(。

我个人会完全没有选择或创建一个自定义结构系统,然后只能返回原始字符串。但这一切都真正取决于您的项目的规模,哪种类型的项目,故事板中有多少东西……这也取决于您何时期望拥有更多资源,因此您现在要花费更多的时间,不要打扰稍后,或者您只是在确实需要本地化时为大量工作做准备的最简单(希望发生这种情况时,这是"甜蜜"问题之一,因为这意味着您有大量的用户(。

相关内容

最新更新