2011-02-08 29 views
5

我創建了一個WPF測試項目,單個窗口只有一個按鈕。然後我卸載了該項目並修改了csproj以包含以下<UICulture>en-US</UICulture>。重建後,生成文件夾現在包含名爲en-US的子文件夾,並且它包含名爲WpfLocalizationTest.resources.dll的文件。目前爲止都清楚。Locbaml如何工作?

然後我下載了Locbaml的源代碼並構建它。 (無法找到任何地方的二進制下載,去圖。)

然後我將Locbaml.exe複製到en-US文件夾並嘗試以下。

locbaml /parse WpfLocalizationTest.resources.dll /out:test.csv 

這將導致一個錯誤「無法加載文件或組件WpfLocalizationTest.resources.dll或它的一個依賴。試圖加載格式不正確的程序。'

在obj \ x86 \ Debug文件夾中有一個名爲WpfLocalizationTest.g.en-US.resources的文件。我試着運行locbaml,但結果是一樣的。

locbaml應該如何使用? MSDN充滿cockamamie樣本,其中沒有任何工作。 locbaml真的是微軟打算如何將WPF應用程序本地化?或者他們想出適合這項工作的工具?

回答

3

當我繼續搜索時,我在Stackoverflow上找到了另一個鏈接。我們最初收到的編譯錯誤與沒有爲.Net4.0設置的過時的LocBaml項目有關。這就是爲什麼我無法從DLL生成CSV並不得不直接訪問資源文件。點擊此鏈接瞭解更多詳情。 Locbaml localization of .net wpf4 application

此鏈接提供了一個.net 4二進制文件的鏈接,一旦編譯完成,您可以直接在dll上使用LocBaml生成CSV文件。

+1

randyc - LocBaml更新到.NET 4實際工作。這是鏈接。就WPF本地化而言,我仍然認爲MS WPF團隊已經完全丟失。 – Rubio 2011-02-18 13:04:43

1

只是一個更新,我拉我的筆記今天上午。希望這會讓你更進一步。

一旦該項目已編譯LocBaml.exe複製到已經產生構建項目目錄:在我的例子中,我複製的文件到E:\ localiztion_sample \ localiztion_sample \ OBJ \ 86 \發佈

這是一個棘手的部分,因爲構建並不包含bin目錄(telerik控件和其他程序集)中的所有DLL文件。因此,我去了bin \ release \,並將所有DLL和資源文件從那裏複製到obj \ x86 \ Release目錄中。對於我被提示覆蓋的文件,我查看了是否在創建文件大小或日期方面存在差異,如果沒有,我跳過了這些對象的副本。

NOTE:爲了讓我生成CSV,我必須從bin目錄複製dll和資源文件,並將它們放在obj目錄中。省略此步驟將導致CSV文件被創建但未填充數據。

將必要的文件複製到目錄後,您將解析位於發佈目錄中的.resource文件。

在我的項目資源文件位於:

E:\ localiztion_sample \ localiztion_sample \ OBJ \ 86 \發佈

和文件名的標題是:localiztion_sample.g.en-US.resources

注意:這是不同於微軟網站上的說明。 Microsoft聲明您應該在位於en-US目錄內的dll文件上運行LocBaml工具。然而,經過多次嘗試和研究後,我發現這實際上導致了32位和64位版本之間的兼容性問題,以及它只是不能正常工作。

在閱讀wpf4以及在線論壇時,建議改爲指向* .gen.en-Us.resources文件。* =項目名稱和gen.en,我們反映選擇

在VS命令untility開發語言,那麼你將需要輸入以下

LocBaml /解析filename.resources /出:樣本恩的.csv

注:假設你複製的LocBaml文件到該文件所在的根目錄下,並正在運行的命令提示符的系統管理員。爲了方便使用,我換了工作目錄命令提示符中的VS項目目錄

對於我的樣本項目的命令看起來:

* LocBaml /解析localization_sample.g.en-US.resources /出:樣品en.csv *

該命令,然後生成作爲當前項目

這是據我得到了我能夠修改格蘭文件,並重新生成的dll的定義的CSV文件,但我無法在應用程序中改變文化,所以我仍在研究這件作品。一旦我得到它的工作,我會重新發布。