前言:儘管早已下決心再也不碰微軟的東西,但手頭的項目還得需要維護。linux
遇到問題還能解決。post
問題由來:spa
以前的軟件開發是基於中文環境開發的,創建項目的時候,選擇了中文,爲了方便客戶使用。咱們使用了靜態編譯的方法,這樣用戶用咱們的軟件就不用費盡心思的去裝微軟的庫了,如此以來。像諸如調用「打印預覽」功能時,界面上顯示的是 「打印」, 「下一頁」等全部是中文。後期需要作成其它語言的版本號。咱們本身開發的對話框全是以語言文件的格式來存放的,僅僅需替換語言文件而不需要改動程序就可實現。僅僅是像系統提供的一些對話框比方「打印預覽」界面,就無能爲力了。先前以爲。僅僅要到了英文的操做系統下。那些語言就本身主動變成了英文。直到客戶反饋過來以後。咱們才發現,咱們錯了。到英文的操做系統下,仍是中文的。重要緣由是咱們採用了靜態編譯,但這樣的編譯方式又不能取消。將軟件執行所需要的庫打包給用戶。現在的操做系統百花齊放。風險也蠻大。恰好手頭的事情告一段落,產品經理又找到我想新增一個葡萄牙文的,恰好就琢磨琢磨這件事情。操作系統
也在一番無謂的嘗試以後,打開project下的*.rc資源文件。真是淘到寶了。資源
在文件裏發現開發
"#include ""l.CHS\\afxres.rc"" // 標準組件\r\n"
"#include ""l.CHS\\afxprint.rc"" // 打印/打印預覽資源\r\n"產品
#include "l.CHS\afxres.rc" // 標準組件
#include "l.CHS\afxprint.rc" // 打印/打印預覽資源編譯
既然是打印/打印預覽資源,那就去看看到底是什麼玩意吧。在VC2010安裝文件夾下搜索,發現了好幾個這種文件例如如下圖:class
近期剛剛攻克了linux環境下中文字符的問題,因此對CHS仍是比較敏感的,那不就是中文的意思嘛,其它幾個。不用問確定是別的語言了,第一個滅有語言表示的,事實上就是英文,誰讓vc是美國佬開發的呢。拷貝出l.chs下的afxprint.rc看看,發現了例如如下圖:打包
改動項目project下的*.res,使其指向相應的文件,就ok了。
解決問題的經驗就是。作的久了,對問題有必定的敏感性。先是用 打印預覽的ids搜索整個project,一一瀏覽。結果在.res發現端倪。假設你不知道afxres.rc是幹嗎用的,去中文文件夾下拷貝一個看看吧。多動手才幹提升。