用于本地化的软件架构


Software architecture for localization

我们目前正在将在线商业软件带到其他欧盟市场,那里不仅语言不同,而且各国的规则和法规也不同,这让我想知道,在软件中实现它的最佳方式是什么?

UI 本地化并不是一个真正的问题 - 完成更多次然后我可以关心计数,但例如,虽然发票国家/地区往往需要不同的数据(不是完全不同,但足够不同,足以让您考虑架构明智)意味着不同的输入、不同的验证和对该数据的处理方式有些不同。

哪种方式可以认为更好?

  • 本地化 UI 并添加所需条件语句以在控制器类中显示额外和隐藏具有类似条件的非必要元素的标准方法
  • 为给定国家/地区创建应用程序的副本,并略微更改控制器和视图(这将使不断更新成为一场噩梦,但代码更干净)
  • 试图以某种方式围绕此创建工厂/建造者模式?

虽然最后一个对我来说听起来最合理,但它让我更加沮丧,因为我还不知道从哪里开始。有什么好的建议吗?

选择的语言是带有Laravel的PHP

绝对不要制作不同的副本。

查看您当前的数据库体系结构,并了解如何扩展它以满足您的需求。然后重写或更新应用程序的业务逻辑代码层。

然后,您只需要在前端进行细微调整。

这篇文章有点旧,但是标题是通用的,可以通过搜索被其他人找到,所以我在下面写了我的答案:

我认为这完全基于您的架构。近年来,人们遵循不同的原则,将整个应用程序分解为具有特定任务和边界的有意义的微服务。这种思维方式将帮助您分析整个业务流程以及您可能需要为每个客户或国家/地区进行一些自定义的地方。例如,对于产品目录或库存管理,每个国家/地区之间的流程可能没有差异。但是在付款或订单管理中,开具发票需要做一些小的修改,这在您遵循微服务模式时会非常容易。此外,您可以拥有自己的插件加载器结构,该结构允许您通过在应用程序中具有过滤器/钩子功能来修改、覆盖和扩展每个实例,就像您在 WordPress 和其他开源平台中看到的那样。