我们正在尝试优化我们的本地化测试。
我们的 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/