【问题标题】:the best approaches for logging localization using c++使用 C++ 记录本地化的最佳方法
【发布时间】:2012-04-03 04:53:41
【问题描述】:

我正在从事一个跨国项目,其中日志的目标受众可能来自两个国家。因此,登录一种以上的语言变得越来越重要,我正在考虑在每次记录某些内容时根据语言写入 2 个不同的日志文件夹,但我也想知道是否有一些开箱即用的功能正在出现使用 log4cpp 等日志框架?

【问题讨论】:

  • 日志是给开发者的,应该是英文的。当不懂其他语言的人不得不调试问题时,这将节省您的工作量。
  • @RafałRawicki 可能有很多开发人员想查看日志
  • @RafałRawicki:我在一个没有人的第一语言是英语的团队中强迫每个人都使用英语的经历告诉我,统一性不值得牺牲沟通。使用团队最熟悉的任何语言。此外,许多应用程序(包括 Web 服务器)为第一语言可能不是通用英语的最终用户(例如系统管理员)提供日志记录工具。
  • 在我们的系统日志中是针对技术人员和维护人员的,不能保证他们永远懂英语,参与该项目的公司会说两种不同的欧洲语言。在产品稳定之前,我们的技术人员将支持系统,稳定后客户技术人员将支持它,这让我觉得我可能需要 3 个不同的日志文件......
  • @AndréCaron:这可能不仅取决于您的团队。与其他团队的沟通也很重要,因此(对于日志)如果您在调查中需要任何帮助,这至少是一个公司明智的决定。很难远离英语。现在,对于团队内部的内部沟通,情况有所不同。

标签: c++ logging localization log4cpp


【解决方案1】:

正如其他评论者所提到的,听起来您在寻求进行多语言日志记录时走错了路。

我的建议是使用英语(这是技术信息的标准,我猜这是您最熟悉的语言)并确保您使用的语言清晰,语法正确和明确。然后,如果其中一位技术人员无法理解它,他们可以通过谷歌翻译等机器翻译引擎轻松高效地运行它。或者他们确实可以处理日志并通过谷歌翻译运行所有内容以附加翻译文本,特别是如果您对日志进行注释以标记语言内容。

假设输入语言写得很好,机器翻译通常会给出最终用户可以理解的好结果。如果信息不清晰、有拼写错误或缩写,那么机器翻译就会非常失败。

【讨论】:

  • 我会在这个答案中再补充一点。给每条日志消息一个唯一的 ID。这样,即使您不理解日志消息,也可以 100% 确定您已识别出生成日志条目的代码行。
【解决方案2】:

由于其中涉及文件打开、查找和写入操作,写入日志自然会降低执行速度。

这是许多开发人员和架构师建议在不同级别编写日志的主要原因之一。随着级别的增加增加日志条目的深度以更好地追踪问题。在更高级别,您会注意到由于生成了更多日志条目,您的处理速度会下降。

建议您使用可以将一种语言翻译成另一种语言的服务。 我确信有免费或付费的图书馆可以进行这种翻译。您可以创建一个在后台运行的小型实用程序,并在进程空闲时间进行此转换。

【讨论】:

    【解决方案3】:

    一个建议是你可以使用不同的进程/线程来监听你的日志消息,你可以从那里记录它..

    这减少了主进程/线程中的 I/O 日志记录时间,您可以在那里进行与日志记录语言相关的所有更改..

    对于多语言支持,我认为您可以尝试使用 Widechar 字符串编写 .. 虽然我不确定..

    【讨论】:

      【解决方案4】:

      使用 C++ 记录本地化的最佳方法

      Install Qt 4 并对字符串使用 QObject::tr/tr() 宏。用您想要的任何语言编写字符串。雇用/获取翻译人员使用 QT Linguist 本地化字符串。

      请注意,完美的翻译是不可能的,所以即使你的翻译是天才,也会有很多“有趣”的误解。因此,为编程团队选择主要语言可能是一个更好的主意。

      --编辑--

      之前没有注意到这部分:

      不止一种语言

      实现它的一种方法是实现日志阅读器。如果字符串被格式化,您可以转储消息 ID(由某种宏生成)和字符串参数,而不是编写纯文本消息。 “日志阅读器”将允许用户在查看日志文件时选择所需的语言,并使用类似于 QTranslator 的机制根据他们的 ids/arguments 翻译消息。这种方法的好处是您以后可以添加更多语言 - 因此可以重新翻译旧日志。不好的是,这种格式对于“普通人”来说会更难阅读,尽管除了消息 ID 和参数之外,您还可以添加纯文本消息,并且您需要编写日志查看器。

      Qt 4 实现了这个框架的大部分(有将变体转储到文本/数据流等的例程)以及翻译工具。请参阅QTranslator 文档和Linguist manual 了解更多信息。

      【讨论】:

      • 如果您正在讨论本地化日志消息,那么您会在日志中获得一种语言,而不是两种语言。 OP 正在询问如何记录以便可以使用两种语言的消息。
      猜你喜欢
      • 1970-01-01
      • 2018-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-11
      • 2010-09-18
      • 1970-01-01
      • 2011-02-07
      相关资源
      最近更新 更多