c++ - 本地化测试,用 XXXXX 格式化所有字符串

标签 c++ mfc localization

我们正在尝试优化我们的本地化测试。

我们的 QA 小组有一个特殊模式的建议,强制资源中的所有字符串完全包含在 X 中。我们已经 API 劫持了 LoadString 和它的 MFC 实现,所以这样做应该不是主要障碍。

我的问题是您将如何解决格式问题?

Examples -

CString str ;
str . LoadString ( IDS_MYSTRING ) ;

where IDS_MYSTRING is "Hello World", should return "XXXXX XXXXX"
where IDS_MYSTRING is "Hello\nWorld", should return "XXXXX\nXXXXX"
where IDS_MYSTRING is "Hello%dWorld", should return "XXXXX%dXXXXX"
where IDS_MYSTRING is "Hello%.2fWorld", should return "XXXXX%.2fXXXXX"
where IDS_MYSTRING is "Hello%%World", should return "XXXXX%%XXXXX"

所以总而言之,如果在 printf 或 Format 语句中使用该字符串应该有效,它应该支持转义字符。

所以这是一道纯代码题,C++/MFC,

CString ConvertStringToXXXX ( const CString& aSource ) 
{
   CString lResult = aSource ;

   // Insert your code here

   return lResult ;
}

我知道这可以使用 .RC 文件上的工具来完成,但我们想要构建英语,然后像这样运行 -

应用-L10NTEST

最佳答案

如果此方法是在应用程序中突出显示格式化字符串(或格式序列)(即除 XXXX 之外出现的所有文本),您可以找到转义序列(可能使用正则表达式)并在格式化(替换)周围插入 block 引号值,
例如一些\n文本 -> 一些[\n]文本

您可以获得可读性(所有字符串如 XXX 可能难以使用该应用程序)并且还可以检测非资源(硬编码)字符串。

话虽如此,如果您希望检测非资源加载字符串(硬编码字符串),而不是替换 X,为什么不直接在字符串前添加前缀呢?您将能够轻松地从硬编码字符串中轻松分辨出资源加载的字符串,
例如Some\ntext -> [ZH]Some\ntext

希望对您有所帮助?

关于c++ - 本地化测试,用 XXXXX 格式化所有字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/190263/

相关文章:

c++ - 使已删除的指针无效?

c++ - 检索 QProcess 的环境变量

c++ - MFC/Win32 中的定时器消息

c++ - 我自己的 C++ 框架(类似 MFC),我可以创建子窗口,但在 WM_CREATE 时无法创建编辑框

c++ - 文本框 MFC SDI 不会出现

php - 如何在 Codeigniter 中更改运行时的语言?

c++ - 删除指针数组: _BLOCK_TYPE_IS_VALID

c++ - 将用户输入从 int[] 转换为 char[][]

apache-flex - Flash Builder 中的新语言环境(捷克语)

iOS 应用程序测试本地化翻译是否具有相同的键