WinForm 國際化的一些問題

2022-01-31 23:35:38 字數 1137 閱讀 1506

我之前 winform 國際化都是湊一些**搞起(請看文後 reference)。

最近發現還有個官方國際化方法:

首先設定 form 的 localizable 屬性為 true 

選擇 form 的 language 為 "(default)",然後給頁面中每個控制項設定一遍 text

選擇 form 的 language 為 "中文(簡體)",然後給頁面的每個控制項設定一遍 中文 text

對所需要支援的語言,先設定 form 的 language 為所要支援的語言,然後給頁面的每個控制項設定一遍 text

每設定乙個語言後,設計器會自動生成對應的 resx 檔案,如:form1.resx (default), form1.zh-hans.resx , form1.en-us.resx 等等。

用了一下官方方法後,我發現了以下問題:

設計器生成的 resx 檔案裡面會有一些奇怪的名稱,例如:由 >> 開頭的資源名、 resource.name34、resource.name35 等等。這些名稱對程式設計師不友好。

重構控制項名稱的時候,設計器只會去修改當前語言下的 resx 檔案,其他 resx 檔案中的相應控制項名稱不會改變。所以還需手工重設其他語言環境下這個控制項的text。這比較不方便,因為我可能已經忘掉了之前這個控制項上的字串是什麼了。(非官方的國際化也有這個問題,而且稍微大一點,設計器不會修改任何乙個 resx 檔案,所以都要自己改)

如果之前 form 的 localilzable 是 false,而且手動設定了一些字串,然後設定 form 的 localizable 為 true,則之前手動設定的字串會被設計器刪除。這個問題比較嚴重。唯一想到的方法是,在介面的 resx 檔案中不手動新增東西,另建乙個 resx 檔案存放手動設定的字串。這樣同樣不大易用。

在開始工程之前要選擇好非官方還是官方的國際化方法,在專案中切換可能會丟失掉之前的字串資源。

目前我有舊**,還是使用非官方的方法吧,畢竟 resx 可控,設計器不會自己加東西進去。只是重構控制項名稱時候,手工的工作量大了。(官方重構時的工作量也大)

以後如果新建工程,官方的方法或許還行,只要把自己手工寫的資源分檔案來搞。

reference:

1. 手動的國際化:

2. 官方的winform國際化:

3. **切換官方國際化:

Swift 關於專案國際化 本土化的一些問題

前幾天有個朋友的專案需要做國際化,正好我之前的專案都沒做過,心血來潮就試了一下,從中發現一些比較坑爹的地方,在這裡記錄一下,避免忘記。1.專案名需要國際化 既然要做國際化,那麼專案名國際化是個不可避免的需求。步驟如下 1 在info.plist檔案中,新增bundle display name 鍵值...

winForm 國際化的簡單實現

國際化就是要實現多語種的介面切換。首先,我們不可能用if else等語句來根據選擇的不同語種對所有的控制項乙個乙個的設值,這樣太麻煩了。net提供了國際化相關的支援,主要放在system.globalization命名空間下。下面是乙個簡單的實現,麻雀雖小,五臟俱全。這個程式是最近寫的乙個程式,就在...

國際化的問題

專案中的一些問題,系統考慮國際化版本,採用resourcebundle載入資源檔案,jstl 頁面展示,還包括對一些配置檔案,中的字串 異常處理啊這些,進行轉義。這些處理方式上到沒有什麼大問題,主要的問題出在由於最初對資源檔案key,value沒有乙個整體的明確的定義,相應模組開發過程中自行定義了大...