web-services - i18n/多语言应该在哪一层处理?

标签 web-services internationalization

我们所做的项目由三层组成:表示层、业务逻辑层和数据层,我在这里将它们称为前、中、后。

前端是用PHP编写的,它通过Web服务(XML-RPC、SOAP等)与中间通信。用户还可以编写自己的客户端来与mid交谈。 nid是用Java开发的,它执行业务逻辑并向前端提供数据,也可能向前端抛出异常。

我现在的问题是,如果我以后想要多语言支持,我该在哪里开发i18n?由于包含所有文本,位于前面是有意义的,那么来自中间的异常和其他消息又如何呢?

如果用户开发自己的客户端并且中间设备具有多语言支持,则来自它的消息(如上面所述的异常(exception))因此可以采用他们选择的语言。这就是我看到的优势。我只是不喜欢使用两层 i18n 代码并且在处理异常时必须处理 i18n 的想法。

最佳答案

这在很大程度上取决于您的应用程序。

如果你认为 UI 本地化,那么演示肯定会受到影响。

我想说中间层不应该生成任何消息。 异常是为开发人员设计的,而不是为用户设计的。因此,在演示文稿中捕获异常,并以本地化方式将其呈现给用户,例如“发生 fatal error 12313,请将此报告发送至...” (也许更好,您根本不显示异常文本,提供一个“发送崩溃报告”按钮,并提供一个“显示报告”按钮,让用户看到您没有发送任何私有(private)数据)。

但是,如果您关心的是 UI 之外的内容,那么其他内容也可能会受到影响。 业务逻辑可能会受到影响(例如,税收系统的工作方式因国家/地区而异)。这与用户界面无关(加拿大或澳大利亚有与美国不同的税收制度,即使用户界面仍然是英语)。 因此,您可能希望将这一层设计得非常模块化。

数据库的内容也可能受到影响。想象一下,您的产品在某些国家/地区不可用(或被禁止)。因此,您可能需要额外的字段(或表)来携带该信息。

所以最后的答案是“你必须在每个层面上考虑 i18n!”并问自己“如果”

关于web-services - i18n/多语言应该在哪一层处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1443524/

相关文章:

web-services - RESTful复制/移动操作?

java - Spring security-在 rest 服务中将凭据作为 json 而不是常规形式发送

c++ - Stock incoming char in 循环函数

ios - Xcode 中的佛兰德语本地化

web-services - 什么是 SOAP 非 wsdl 模式选项中的 uri

php - PHP SoapClient 调用中的空值

python - django rest framework 如何国际化领域

java - 开发支持多语言的java客户端时优化jar文件大小(图片)

iphone - 将 localized.strings 转换为电子表格?

不支持语言环境的 Java I18n