我正在维护一个 PHP 模块,该模块的 i18n 覆盖率非常低且过时,我们正在尝试对其进行更新。为了将内容放在应有的位置,我们需要组合一些键(例如 OrderInformation.ss.QUANTITY 和 ProductCategoryItem.ss.QUANTITY)并重命名其他键。
从理论上讲,这可能会导致之前翻译的一些网站在更新时恢复一些字符串。这是否有资格在语义版本控制下进行向后不兼容的更改?
我正在维护一个 PHP 模块,该模块的 i18n 覆盖率非常低且过时,我们正在尝试对其进行更新。为了将内容放在应有的位置,我们需要组合一些键(例如 OrderInformation.ss.QUANTITY 和 ProductCategoryItem.ss.QUANTITY)并重命名其他键。
从理论上讲,这可能会导致之前翻译的一些网站在更新时恢复一些字符串。这是否有资格在语义版本控制下进行向后不兼容的更改?
从理论上讲,这可能会导致之前翻译的一些网站在更新时恢复一些字符串。这是否有资格在语义版本控制下进行向后不兼容的更改?
从技术上讲,是的。如果你破坏了你的客户,它需要一个主要的版本。参见SemVer #8。实际的答案是这种理论破坏的可能性有多大?从理论上讲,任何更改都有可能破坏某些人,但我们不会针对每个小错误修复更改主要版本,这就是补丁的用途。
通常,当行为更改导致将针移向 API 背后的原始意图时,就会出现这个问题,但是您有一些客户依赖于原始设计/实施缺陷。当一些人采取他们认为是非破坏性的改变时,你必须权衡所带来的成本,但事实并非如此;面对拥有大量客户的成本,甚至没有尝试新的主要版本发布,因为担心他们会有很多工作要做。
如果客户修复将是微不足道的,特别是如果它不是您的客户群的大部分,您可能会逃脱轻微或补丁碰撞。