Documentation doxygen文档中的多种语言(C+;+;) 我的客户给了我一个不寻常的(不可协商的)要求,要求他们提供C++语言的双语言(英文和波兰)DOXEGEN文档。

Documentation doxygen文档中的多种语言(C+;+;) 我的客户给了我一个不寻常的(不可协商的)要求,要求他们提供C++语言的双语言(英文和波兰)DOXEGEN文档。,documentation,doxygen,multilingual,Documentation,Doxygen,Multilingual,我的第一个想法是对注释使用条件编译,如: #if DOXYGEN_ENGLISH /** * @brief Sample method */ #elif DOXYGEN_POLISH /** * @brief Przykładowa metoda */ #endif void foo(); 然后使用不同的基本区域设置和预定义的常量运行两次Doxygen。。。而且它确实有效。但这很麻烦 有人知道如何改进此解决方案吗?或者用不同的方法解决它?Doxygen有内置命令\~[langId]来处

我的第一个想法是对注释使用条件编译,如:

#if DOXYGEN_ENGLISH
/**
 * @brief Sample method
 */
#elif DOXYGEN_POLISH
/**
 * @brief Przykładowa metoda
 */
#endif
void foo();
然后使用不同的基本区域设置和预定义的常量运行两次Doxygen。。。而且它确实有效。但这很麻烦


有人知道如何改进此解决方案吗?或者用不同的方法解决它?

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

/**
 * \~english @brief Sample method
 * \~polish @brief Przykladowa metoda
 */
void foo();
  • 不直接要求使用预处理器/预处理器指令/设置
  • 切换语言时,只需更改doxygen配置文件(Doxyfile)中的一个位置
这个解决方案似乎已经很好了,这就是我在这种情况下要做的。你看过\~[laguageid]吗?它仍然只需要两倍的生成,但是使用了来自doxygen的内置命令。@albert太棒了!你能把这个作为答案贴出来让我接受吗?能不能把两种语言混合在一起:主手册用英语,翻译插页用当地语言(俄语)和手册用混合语言(有一些风格化的翻译部分)?不能100%确定你的意思,但是你可以把俄语文本写进普通的标签中,而主手册仍然是英文的。Doxygen不翻译,只针对固定文本,有一种翻译文本的机制。当我遗漏了一些东西时,打开一个新问题(举个小例子)。如果Doxygen将使用默认的英语语言构建,则所有标有\~波兰语的注释将被关闭,反之,所有带有英语标记的文本将在波兰语构建中被禁用,我需要两种语言的双语文档可见,但是\~用字体样式或颜色标记的波兰语你想要一个主语言(英语)的文档和另一种语言(波兰语)的一些句子,对吗?作为第二个要求,您需要使用其他语言的部件使用其他字体/样式。输出格式是否有任何限制(如HTML/LaTeX等)/是否只需要一种输出格式?你可以用主语言和其他语言写文本。根据复杂性,必须考虑使用别名定义一些布局命令,别名可以放在其他语言的周围。请为此打开一个新问题(带示例)。@Dmitryponiatov:根据Doxygen手册:您可以使用\~作为默认值编写文档,然后对于俄语特定部分,使用\~俄语标记文档。