關於列舉型別的多語言顯示,其實就是globalization的問題。解決方案當然不止一種,這裡介紹一種可用性和擴充套件性的比較好的通用方法。
顯然這裡自己去實現自定義格式化,即通過iformatable、iformatprovider、icustomformatter等介面已達到globalization有點小題大作了,而另外乙個很容易想到的點是通過diaplaymember實現顯示值得自定義(對於簡單binding,例如combobox、listbox等只用過載tostring就可以了)。
首先,我們希望binding整個列舉型別的每乙個值,也就是說,我們需要把這個列舉的所有值變成乙個資料來源,為了實現這一點,我們可以使用enum上的helper方法enum.getvalues(type)來返回乙個對所有值得列舉,然後依次新增到ilist物件或者ilistsource介面即可。
然後,取到了值,由於我們希望自定義binding顯示,那麼需要對列舉值進行封裝,而在這個封裝裡面,我們可以實現多語言的支援。
至此,整個功能的框架已經完成,下面我們來看看一些細節——如何對資源讀取和管理的封裝:
ok,大功告成,有了這麼乙個封裝,在應用裡就可以簡單的這麼幾句夠搞定。
windows平台多語言顯示
本文由 lonelyrains 最終目的 不論是何種配置方式,最終滿足在不同自然語言的windows平台上都能正常顯示對應的要顯示的語言文字。1 內不同編碼 utf 8 unicode ansi ascii gb2312 big5 幾種牽涉到的編碼術語的關係 2 內不同自然語言內容 香港繁體 台灣繁...
軟體多語言
locale是指特定於某個國家或地區的一組設定,包括字符集,數字 貨幣 時間和日期的格式等。在windows中,每個locale可以用乙個32位數字表示,記作lcid。在winnt.h中可以看到lcid的組成。它的高16位表示字元的排序方法,一般為0。在它的低16位中,低10位是primary la...
多語言切換
專案中應用到了多語言切換,鞏固一下。貼上 大家一起學習。廢話不多說直接上 1 新增多語言 在res values 下預設有個strings,需要多種語言就來建立幾個strings,values右鍵 new 乙個 values res file file name 就是strings director...