Doxygen文档中的多语言支持(C ++)

4

我的客户给了我一个非常特别(也是不可更改的)的要求,需要从C++代码生成双语言(英文和波兰语)的Doxygen文档。

我的第一个想法是使用条件编译来进行注释,例如:

#if DOXYGEN_ENGLISH
/**
 * @brief Sample method
 */
#elif DOXYGEN_POLISH
/**
 * @brief Przykładowa metoda
 */
#endif
void foo();

接着使用不同的基本语言环境和预定义常量,运行两次Doxygen... 这确实能够解决问题,但非常繁琐...

有没有人有更好的解决方案?或者可以用不同的方式来解决这个问题?


1
这个解决方案似乎已经很好了,这是我在这种情况下会做的。 - Marc Alff
1
你看过~[languageid]了吗?它仍需要两倍的生成时间,但使用了Doxygen内置命令。 - albert
@albert 非常好!你能把这个发表为答案,这样我就可以接受了吗? - PiotrK
1个回答

8

Doxygen内置命令\~[langId]可处理不同语言。 以上示例可以表述为:

/**
 * \~english @brief Sample method
 * \~polish @brief Przykladowa metoda
 */
void foo();
  • 没有直接要求使用预处理器/预处理指令/设置。
  • 只需要在 doxygen 配置文件 (Doxyfile) 中更改一处地方即可切换语言。

是否可以混合两种语言:主要手册为英文,而翻译插入一些本地语言(俄语),并获得混合语言的手册(带有一些样式化的翻译部分)? - Dmitry Ponyatov
我不是很确定你的意思,但你可以将俄语文本写入普通标签中,仍然可以使用英文主要手册。Doxygen不进行翻译,只有对于固定文本存在一种机制来进行翻译。如果我漏掉了什么,请开一个新问题(并提供小例子)。 - albert
如果使用默认的英语语言构建 Doxygen,所有标记为 ~polish 的注释都将被禁用。反之,在波兰文构建中,所有标记为英语的文本都将被禁用。我需要一份双语文档,两种语言都可见,但使用特殊的字体或颜色标记 ~polish。 - Dmitry Ponyatov
您想要一个包含主语言(英语)和部分句子另一种语言(波兰语)的文档,是吗?作为第二个要求,您需要在其他语言部分中使用另一种字体/样式。输出格式有任何限制(如HTML / LaTeX等)/只需要一个输出格式吗?您可以只写主语言和其他语言的文本。根据复杂性,需要考虑通过 ALIAS 定义某些布局命令来放置其他语言。请针对此问题提交一个新问题(附带示例)。 - albert
1
根据Doxygen手册:https://www.stack.nl/~dimitri/doxygen/manual/commands.html#cmdtilde 您可以使用~作为默认编写文档,然后对于俄语特定部分,请使用~russian进行标记。 - Jonathan O'Connor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接