2011-08-30 64 views
0

我想使用衛星組件來本地化我的windows phone 7應用程序。我已經建立衛星組件部署

(al /t:lib /embed:stringlibrary.it-It.resx /culture:it /out:PhoneApp2.resources.dll /template:PhoneApp2.dll) 

從資源文件stringlibrary.it-It.resx,然後我的應用程序PhoneApp2一個DLL「PhoneApp2.resources.dll」我下載的dll 使用Web客戶端和存儲在目錄它,它的應用PhoneApp2。現在該DLL駐留在phoneapp2的獨立存儲中。

我有另一個資源文件stringlibrary.resx,它總是與應用程序一起編譯,並有英文支持條目(默認)。

using (IsolatedStorageFileStream stream = new IsolatedStorageFileStream("it-IT\\"+resfile, System.IO.FileMode.Create, file)) 
{ 
    byte[] buffer = new byte[1024]; 
    while (e.Result.Read(buffer, 0, buffer.Length) > 0) 
    { 
     stream.Write(buffer, 0, buffer.Length); 
    } 

} 

我有項[裝配:NeutralResourcesLanguageAttribute( 「IT-IT」,UltimateResourceFallbackLocation.Satellite)彙編文件中。

即使當前的語言和文化是意大利語,它始終會在Messagebox中向我顯示中性語言文本(英語)。 這意味着它無法找到衛星組件。

rm = new ResourceManager("PhoneApp2.stringlibrary", Assembly.GetExecutingAssembly()); 
string greeting = rm.GetString("String1"); 
MessageBox.Show(greeting); 

但是,如果我編譯stringlibrary.it-It.resx與PhoneApp2代替衛星組件,在MessageBox正確 顯示意大利文本時培養是意大利語和英語爲英語百家姓。我在部署衛星組件時錯過了什麼?請讓我知道。

問候, 塞特希

回答

0

我還沒有試過,你正在做的方式定位。對我來說似乎過於複雜。但是我已經定位了幾個應用程序,並且鑑於我很難找到一個完整的源代碼如何去做,所以我給它寫了博客。這裏是我的博客:http://hopnet.mobi/website/Blog.aspx

基本上你這樣做:

  1. 創建項目
  2. 編輯的.csproj文件在記事本中所期望的文化添加到標記。
  3. 在項目的屬性中選擇一箇中立的文化
  4. 資源添加到項目在Solution Explorer
  5. 創建一個類來訪問這些資源
  6. 那類添加到App.xaml中的標記文件
  7. 將字符串放入資源文件
  8. 使用xaml中的資源綁定綁定到這些字符串。
  9. 如果使用ApplicationBar,則必須在代碼中執行此操作,因爲它無法在xaml中進行綁定。
  10. 爲每個支持的文化創建另一個資源文件。
  11. 爲每種支持的語言創建dll文件,因此標題在拼貼和程序列表上是正確的。
+0

感謝您的信息。我已經完成了你所描述的任何步驟,並且它工作正常。但是現在我想給用戶下載dll(資源文件)的選項,以便只有幾組DLL。我這樣做是爲了儘量減少.xap文件的大小。 – Senthil

+0

您所描述的過程和我已經完成的過程將始終包含所有的DLL。但我想有設置按鈕,用戶可以在其中選擇文化,只有那些DLL將從Web服務器下載並存儲在應用程序的獨立存儲中,按照[assembly:NeutralResourcesLanguageAttribute(「it-IT」,UltimateResourceFallbackLocation衛星)。 – Senthil

+0

這將查找意大利語言資源文件的IT目錄。希望我已經說清楚了,因爲我想要做 – Senthil

1

您不能在您的應用程序中使用程序集下載到獨立存儲中。只有Microsoft簽署的程序集(因此在提交時已經存在於XAP中的程序集)才能在運行時加載/執行。

如果你想下載其他翻譯,你應該使用resx-files或任何其他格式,然後你可以自己解析。我的建議是爲所有資源字符串使用某種數據庫,然後將新下載的數據添加到該數據庫中。這是更靈活,那麼你試圖完成:)

+1

好的。感謝您的信息。我將嘗試直接下載resx文件並解析它。 – Senthil