本地化系统生成的状态消息

2024-03-06

我在 .NET 环境中工作,系统偶尔会为客户生成日志条目。然后,消息将附加到客户日志中,以便稍后查看。

例如,如果客户正在订阅新服务,或者客户付款尝试失败,这些消息将被附加到客户日志中。

目前,所有消息都被硬编码到代码中,例如“客户未能完成 XX 的付款”。

现在的问题是,这些消息需要以智能的方式本地化,这样当英语用户查看客户日志时,他会收到英文消息,而当外国用户查看日志时,他会收到他的语言的消息。

处理这种情况的最佳方法是什么?


  • 记录事件标识符而不是消息。
  • 捕获事件特定数据以及事件标识符。
  • 当用户查看日志时,根据唯一标识符本地化事件消息。

您将遇到的问题是,如果您尝试以对话方式将动态数据插入消息中。例如,如果您必须写“未找到消息”与“找到一条消息”与“找到 X 条消息”是有问题的 - 在英语中,我们对零、一和多于一有不同的复数......但它是不一定像其他语言中那样。像数字或日期这样的东西在 String.Format 表单中插入问题较少,但您不想尝试以本地化方式动态生成真实语言。

我建议遵循类似于 Windows 事件日志的模式,在其中输出事件 ID、基于事件 ID 的本地化消息,然后捕获某些“字段”,在其中本地化字段名称和显示格式字段,例如“金额:$2.00”或其他内容。这可能不是最漂亮的方法,但除非你有一位全职语言学家致力于此,并且你打算考虑每种语言的所有细微差别,否则我会选择更简单的日志输出格式。

在给定的示例中,您可以将日志消息与数据分开,例如:

客户未能完成付款。
金额:XX

您将记录一个消息 ID,例如“13579”可能是客户未能完成付款时事件的唯一 ID。最后,您可以将该值存储为单独的字段。

如何弄清楚要为事件分配多少个字段或如何存储数据......好吧,这个练习最好留给读者。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

本地化系统生成的状态消息 的相关文章

随机推荐