首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >语言独立测井系统

语言独立测井系统
EN

Software Engineering用户
提问于 2017-02-03 13:59:29
回答 1查看 321关注 0票数 4

我有一个将各种事件记录到数据库(SQLite)中的软件。目前存储的数据如下:

  • 消息
  • 日期
  • 类别
  • 临界度

日志是用当前的软件语言编写的。这意味着信息:

用户"admin“登录

会变成

L利用“管理”est连接

如果软件是法语的话。

这对用户来说是完美的,但有时用户会发送他们的日志文件进行分析,如果它是团队中没有人能理解的语言,那么它就会变得非常复杂。

这就引出了我的问题,我们应该使用什么样的策略来用我们的软件支持的任何语言独立于原始语言来显示日志呢?知道这一点:

  • 使用数据库是强制性的。
  • 日志消息中的参数数可以从0减少到很多。
  • 日志消息应该可以理解为代码。
  • 导出或显示日志应该是快速的

目前,为了编写日志消息,我们正在执行类似(C++)的操作。

代码语言:javascript
运行
复制
std::string message = translate("User %s logged in"); // using Gettext
message = String::Format(message,userName);
LogsManager::Info(message);

谢谢

编辑有问题的并不是知道是否应该翻译日志消息,而是如何使它们独立于语言。这意味着如果用户在使用软件期间切换语言,则消息应该以当前语言而不是前一种语言显示/导出。

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2017-02-03 14:39:05

所以你写了

  • 在数据库中记录消息
  • 以及一个日志文件,每个邮件都可以查看和发送。

这意味着将消息从数据库中取出到文件中有一个过程,例如按钮或菜单功能显示日志(或者至少可以添加这样的功能)。

解决你的问题的方法是在那里翻译,而不是更早。然后,用户可以用他喜欢的语言获得一个日志文件,然后用另一种语言(例如,英语)生成相同的日志文件,然后再将日志发送给您。

当然,这也意味着你需要储存

  • 数据库中的英文消息模板(而不是最终消息)
  • 数据库中每个日志消息的参数(对于这个用例,有一个带有逗号分隔的参数聚合的列就足够了)。

因此,日志表需要一个额外的列Parameters,您的日志代码如下所示

代码语言:javascript
运行
复制
  LogsManager::Info("User %s logged in", userName);

其中"Info“函数有一个变量参数列表,就像String::Format一样。前面对translateString::Format的调用应该移到"ShowLog“特性中,然后该特性可以获得一个额外的选项"output language”。

我们在一个报告工具中做了类似的事情,其中输入数据是一个复杂的XML文件,包含一个日志部分。报表以PDF格式生成,输出语言可以在以后的任何时间切换。所有文本日志消息都存储为模板+参数,并作为PDF生成过程的一部分进行翻译和组合--就像charme一样。

票数 4
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/341491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档