2017-06-21 100 views
1

我有一個項目是爲了用作動態導航的加載項。 它應該顯示在當前使用的語言中,英語爲標準。 爲了確保這一點,我有一個設置CurrentCulture和CurrentUICulture的方法。.NET資源&動態NAV

在Dynamics NAV之外運行的測試項目中,表單顯示了相應的翻譯。

儘管在Dynamics NAV中使用加載項,但表單總是以英文顯示,儘管當前的文化和當前的UI文化被設置爲正確的語言(我通過在多種情況下進行調試來檢查這一點)。

我已經嘗試了兩種設置:

  • 本地化的形式,在Form1有Form1.resx中和form1.de.resx
  • RESX-文件resources.resx以及從分隔resources.de.resx Form1並在InitializeComponent之後的代碼中調用。

結果是在這兩種情況下是相同的:
啓動程序外NAV:翻譯成功
從內NAV啓動程序:請始終使用標準的資源

有誰知道是否有一個細節我錯過了?

回答

0

這個問題非常常見:解壓縮資源被編譯到「de」文件夾中,結果導致NAV無法找到文件。

AssemblyResolve修復了這個問題:

Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args) 
{ 
    var location = Path.Combine(
     Path.GetDirectoryName(typeof(MyForm).Assembly.Location), 
     CultureInfo.CurrentCulture.Parent.Name, 
     args.Name.Substring(0, args.Name.IndexOf(",", StringComparison.OrdinalIgnoreCase)) + ".dll"); 

    if (File.Exists(location)) 
    { 
     return Assembly.LoadFrom(location); 
    } 

    return null; 
    } 
} 

唯一的細節要記住的是執行InitializeComponent函數之前訂閱AssemblyResolve。