inchatter現在支援本地化了,其實這個只是很細節的東西,但是
咱也是可以走走國際範。哈哈
其實最重要的原因只是想進行一次本地化的開發。這個概念相信大部分人都有,但是在實際專案中真的很少會涉及到,我也就inchatter
這個專案來實踐下本地化開發。
1.新建乙個新的類庫,命名為:inchatter.localization
2.在專案右鍵
->
屬性,開啟專案工程的屬性視窗
3.選擇資源頁籤,修改資源的訪問修飾符為
public
(這樣我們才可以訪問資源)
4.按圖中的方式新增你定義你的系統資源。儲存以後,可以在
properties
資料夾中看到我們的資源檔案
resources.resx
5.在專案工程屬性視窗,你是無法新增兩個資源檔案的,我們可以直接將上述的
resources.resx
複製乙份,修改為
resources.en.resx
6.將語言內容修改為對應的英文即可
通過上述部分,我們變可以成功的完成資源的建立,編譯專案以後的檔案目錄:
inchatter.localization.dll我們預設的資源儲存在en\而在en目錄中,存在inchatter.localization.resources.dll
inchatter.localization.dll
中,而我們英文的資源存在
inchatter.localization.resources.dll中
如果我們刪除en
資料夾,在英文的環境下,因為無法找到
en資源,系統將直接使用預設的中文資源。
1.使用生成的dll
新增系統引用(需要將預設資源
dll以及各個語言資源資料夾
copy
到系統的
bin\debug
目錄下),解決方案下的專案可直接引用專案
2.在wpf
中使用專案資源
(1)xaml中繫結資源
由於resource
中存在的都是靜態屬性的資源,在
xaml
中繫結靜態屬性即可
<這裡我們引用字首,並繫結了title屬性window
x:class
="inchatter.client.wpfclient.view.mainwindow"
xmlns
=""xmlns:x
=""xmlns:local
="clr-namespace:inchatter.client.wpfclient.utility"
title=""
height
="600"
width
="800"
windowstartuplocation
="centerscreen"
xmlns:rex
="clr-namespace:inchatter.localization.properties;assembly=inchatter.localization"
visibility=""
>
window
>
(2)**中的繫結
resourcemanager rm = new resourcemanager("inchatter.localization.properties.resources", typeof(inchatter.localization.properties.resources).assembly)我們本地測試時,在窗體的initializecomponent()之前設定:
system.threading.
thread
.currentthread.currentuiculture =
newsystem.globalization.
cultureinfo
("en");
強制程式設定為英文的語言環境。
需要注意的是,在wpf由於mvvm繫結,處理時會引入新的執行緒,所以在wpf測試中,在viewmodel中也需要加入該設定才能保證viewmodel中設定的資源也為英文,這裡的都是針對當前執行執行緒的,如果程式中加入了新的執行緒,都需要做這樣的處理,當然這是在中文環境下。這裡僅限於測試,真實使用時,會根據本地環境自動載入中文或英文,其他語言也可自行開發。
資源資訊的載入主要是有currentuiculture
來決定的,而一些格式化選項則是有
currentculture
來決定。
currentculture是作業系統的使用者區域環境的設定,而
currentuiculture
則是作業系統的語言設定。
1.使用我們上述的第二種code
的方式
2.對窗體進行自定義,設定窗體屬性的localizable
為true
,在預設語言下設定窗體語言,完成以後,將窗體的
language
修改為需要本地化的語言(預設為
default
),然後再設定窗體介面語言即可。這種方式,資源是跟窗體關聯的。
SugarCRM原始碼分析之本地化貨幣
本篇主要分析sugarcrm中本地化貨幣的原始碼,大體配置如下 default currency iso4217 rmb default currency name rmb default currency show preferred false,default currency signific...
本地化 日誌本地化
目錄 概要執行時日誌 國際化與本地化 定義你的本地化日誌資訊mymsg enum package org.skzr.logging basename charset utf 8 value org.skzr.logging.msglocallog public enum mymsg 定義國際化檔案o...
iOS開發之本地化 國際化語言設定
1.1 增加所需的語言 1.2 建立string檔案。需要特別注意 檔名必須為 infoplist.strings 2.1 設定語言,在1.1中設定過就不再需要再次設定。如果沒有進行1.1中的設定,那就按1.1步驟設定一次 2.2 建立string檔案。需要特別注意 檔名必須為 localizabl...