是否有一个国际化C++流的系统?

 mobiledu2502909383 发布于 2023-01-08 15:57

我正在研究如何使我的C++项目国际化,并且我不知道如何处理流式文本的翻译,这些文本穿插了非字符串值.到目前为止,我发现的唯一一个页面甚至提到这将是这个C++ FQA页面,但不幸的是,该页面对提供任何解决方案都不太感兴趣.还有从2000年这个Boost邮件列表线程不会出现去任何地方.

例如,对于这个C风格的printf声明:

printf("There are %d lines in '%s'.", numlines, filename);

将整个消息包装在某种翻译函数中是很简单的,例如gettext的各种函数,并允许文本及其非文字组件根据需要移动.如果您可以访问POSIX版本printf(或其他一些提供printf格式改进的库),您甚至可以根据需要以不同的顺序排列值.

但是,对于等效的基于C++流的语句:

 std::cout << "There are " << numlines
           << "lines in '" << filename << "'.";

我还没有找到一种方法来标记整个翻译消息.您可以在适当的函数中包装每个字符串,但这需要翻译人员知道这三个字符串都是一条消息的一部分,以及它们之间出现的内容.此外,至少需要告知一些i18n解决方案,对于其中该文字内容根据上下文而变化的语言,相同字符串文字的其他出现是不同的.并且忘记了必须重新排列非字符串文字值的情况.

所以我的问题是,是否存在支持流媒体操作使用的国际化解决方案,还是只有printf我提出的问题的解决方案?

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有