我有一个将各种事件记录到数据库(SQLite)中的软件。目前存储的数据如下:
日志是用当前的软件语言编写的。这意味着信息:
用户"admin“登录
会变成
L利用“管理”est连接
如果软件是法语的话。
这对用户来说是完美的,但有时用户会发送他们的日志文件进行分析,如果它是团队中没有人能理解的语言,那么它就会变得非常复杂。
这就引出了我的问题,我们应该使用什么样的策略来用我们的软件支持的任何语言独立于原始语言来显示日志呢?知道这一点:
目前,为了编写日志消息,我们正在执行类似(C++)的操作。
std::string message = translate("User %s logged in"); // using Gettext
message = String::Format(message,userName);
LogsManager::Info(message);
谢谢
编辑有问题的并不是知道是否应该翻译日志消息,而是如何使它们独立于语言。这意味着如果用户在使用软件期间切换语言,则消息应该以当前语言而不是前一种语言显示/导出。
发布于 2017-02-03 14:39:05
所以你写了
这意味着将消息从数据库中取出到文件中有一个过程,例如按钮或菜单功能显示日志(或者至少可以添加这样的功能)。
解决你的问题的方法是在那里翻译,而不是更早。然后,用户可以用他喜欢的语言获得一个日志文件,然后用另一种语言(例如,英语)生成相同的日志文件,然后再将日志发送给您。
当然,这也意味着你需要储存
因此,日志表需要一个额外的列Parameters
,您的日志代码如下所示
LogsManager::Info("User %s logged in", userName);
其中"Info“函数有一个变量参数列表,就像String::Format
一样。前面对translate
或String::Format
的调用应该移到"ShowLog“特性中,然后该特性可以获得一个额外的选项"output language”。
我们在一个报告工具中做了类似的事情,其中输入数据是一个复杂的XML文件,包含一个日志部分。报表以PDF格式生成,输出语言可以在以后的任何时间切换。所有文本日志消息都存储为模板+参数,并作为PDF生成过程的一部分进行翻译和组合--就像charme一样。
https://softwareengineering.stackexchange.com/questions/341491
复制相似问题