2013-10-28 29 views
2

我有一個本地化的WinForms應用程序。爲了避免在翻譯過程中進行大量迭代,我給了我們的譯員軟件來允許他們直接編輯.resx文件。資源文件沒有被編譯到DLL中

這對於與UI組件(表單/控件)無關的資源文件非常有用,但對於表單和控件,資源似乎沒有得到更新。我的意思是,在設計時所有資源字符串都是正確的(Text/ToolTips等),我可以看到正確的翻譯 - 當我運行應用程序(調試或任何其他版本)時,翻譯不是更新了,爲什麼?

謝謝你的時間。


Edit1。情節進一步加深。有兩個按鈕在我更改組件(按鈕文本,工具提示或由底層資源文件控制的任何事物)時根本不會被更新。比方說,我將按鈕文本從'鎖定工作簿'更改爲'鎖定工作簿GG',然後新的文本顯示在設計器和.resx文件(都在.resx設計器和後面的代碼中),但是當我運行代碼(在調試或發佈模式下)按鈕文本不會更新!?

如果我更新上面更新的按鈕旁邊的按鈕,這確實會更改正在運行的應用程序中的文本?這是烘烤我的麪條,因爲我無法看到舊文本的存儲位置,以及爲什麼對於按鈕的子集,它們的組件文本沒有更新!

任何想法都熱烈歡迎!


Edit2。我試圖刪除.suo並清理並重新編譯。我也從解決方案中刪除了麻煩的表單並重新添加。

所以你可以看到這個奇怪的行爲,這裏是有問題的按鈕之一('Lock Workbook GG')和一個正常的按鈕('設置爲默認工作簿GG')。

DesignTime

現在在運行時我看到

RunTime

+0

只是出於好奇,你如何設置按鈕的屬性(文本,工具提示等)?你在最終的項目輸出目錄中有什麼資源文件 - 我只假設資源dll?最後一個問題 - 表單的Language和Localizable屬性的值是什麼?你嘗試過「清潔解決方案」,然後「重建」?資源dll是否在輸出目錄中更新? – pasty

+0

@pasty感謝您的回覆。設置「文本」,「工具提示」等。我使用設計器;我選擇按鈕,然後在'屬性'面板中編輯相關屬性。例如,在'bin \ Debug'文件夾中,我有所有常用文件,包括保存資源DLL的'de'和'de-DE'文件夾。目前'Language'屬性的值是'(Default)','Localizable'是'True'... – MoonKnight

+0

然後試試這個:通過代碼(文本,工具提示等)設置所需的屬性。是的,它有一些開銷,但是然後你明確地使用和設置文本 - button1.Text = ProjectResources.Translations.Hello;我們有一個項目在工作(相同的星座 - 資源單獨的項目),它沒有錯誤(我們在代碼中設置了大部分翻譯)。 – pasty

回答

1

也許你構建設置是錯誤的?
這是我的我的DLL。

enter image description here

+0

感謝您的回覆。 .resx文件附加到WinForm。我檢查了這些屬性,它們都看起來正確,都指向正確的文件路徑等。還有其他建議嗎? – MoonKnight

+0

你如何改變文化?你確定這是在你的發佈工作嗎? – Remy

+0

文件(.resx)包含正確的資源字符串。它們是UI資源文件,因此鏈接到WinForm。這些資源也可以在設計器中正確顯示。這是在運行時釋放/調試,這些資源出現錯誤,如他們沒有正確更新/編譯... – MoonKnight

1

我已經給我們的翻譯軟件,使他們能夠編輯.resx文件直接

這肯定不是一個好主意。任何專業的翻譯人員都會知道如何處理.NET resx文件。即使他們沒有SDL Passolo等翻譯人員傳統使用的工具,他們仍然會回退到SDK附帶的標準Winres.exe utility

無論你寫什麼都可能有一個錯誤。很難從問題的反向工程中找出那個bug。除此之外,Winforms表單的.resx文件與您從資源文件項目模板或資源設計器獲得的文件完全不同。有許多資源命名技巧可避免表單屬性與其控件屬性之間的不確定性。得到一個錯誤的名稱,它不會正確工作。

不要自己寫,至少要求他們在必要時使用Winres.exe。這是免費的。

+0

嗨漢斯,我提供的軟件是Zeta資源編輯器,這是一個相當於Winres.exe的已知軟件。什麼命名約定可能導致此問題?任何resx都有標準格式,所以我沒有看到如何允許通過Winres /其他工具編輯窗體.resx文件是一個問題。感謝您的時間... – MoonKnight

+0

我不知道,我沒有什麼可以看的。屏幕截圖無法顯示.resx文件的內容。 –

0

可能這與CopyLocal屬性有關。請檢查這些資源文件是否爲TRUE。如果不是,請將它們設置爲true,否則,在成功編譯後,它們不會被複制到輸出目錄。

1

對按鈕的綁定是在相關表單的設計器文件中進行的,您是否檢查過是否存在一些問題?嘗試刪除設置資源的代碼並通過設計器重新添加。

+0

嗨,我檢查了.designer.cs文件,這似乎很好。所有資源正在應用於這些按鈕。我將嘗試刪除並重新添加控件... – MoonKnight