当您谈论 AOP(面向方面编程)时,您应该考虑一些可以应用它的横切关注点。
我认为这样的横切关注点之一就是国际化。
是否可以使用一些 AOP 框架来解决诸如国际化之类的问题?有没有人有使用它的经验?
当您谈论 AOP(面向方面编程)时,您应该考虑一些可以应用它的横切关注点。
我认为这样的横切关注点之一就是国际化。
是否可以使用一些 AOP 框架来解决诸如国际化之类的问题?有没有人有使用它的经验?
在某种程度上,一切都可以用于 I18n。然而,你很有可能会重新发明轮子,或者你会把事情搞砸。
现在,让我们考虑一下。横切关注点的典型示例,因此典型的用例是日志记录。但是当然你可以将它用于其他任何事情,唯一的先决条件是,你需要有你反复做的事情,或多或少相同的方式。
你可以这样做I18n吗?当然,您可以使用它来:
但是,我不太确定其他 I18n 问题,例如翻译字符串(可能,但是……等待它)和消息(vel 字符串)格式。实际上,我很难想象带有所有占位符、有效复数形式等的消息格式。这可能是可能的,但我目前看不到。
最后但并非最不重要的。仅仅因为您可以将 AOP 用于 I18n,并不意味着您应该. 对 AOP 的普遍批评是,它使代码更难(甚至不可能)理解。有时最好使用简单的、旧的(你知道的,时间过得很快)控制反转,而不是很少有人真正理解的概念。
还请记住,I18n 不仅是您可以随时添加的功能,而且需要从头到尾成为应用程序不可或缺的一部分。更糟糕的是,这不仅与代码有关,还与用户界面和整个国际用户体验有关。
您(或任何说实话的人)不太可能仅通过使用 AOP 或任何其他编程概念就能找到 I18n 编程的圣杯。这么容易解决的问题实在是太难了……