我有一個本地化的WinForms應用程序。爲了避免在翻譯過程中進行大量迭代,我給了我們的譯員軟件來允許他們直接編輯.resx文件。資源文件沒有被編譯到DLL中
這對於與UI組件(表單/控件)無關的資源文件非常有用,但對於表單和控件,資源似乎沒有得到更新。我的意思是,在設計時所有資源字符串都是正確的(Text/ToolTips等),我可以看到正確的翻譯 - 當我運行應用程序(調試或任何其他版本)時,翻譯不是更新了,爲什麼?
謝謝你的時間。
Edit1。情節進一步加深。有兩個按鈕在我更改組件(按鈕文本,工具提示或由底層資源文件控制的任何事物)時根本不會被更新。比方說,我將按鈕文本從'鎖定工作簿'更改爲'鎖定工作簿GG',然後新的文本顯示在設計器和.resx文件(都在.resx設計器和後面的代碼中),但是當我運行代碼(在調試或發佈模式下)按鈕文本不會更新!?
如果我更新上面更新的按鈕旁邊的按鈕,這確實會更改正在運行的應用程序中的文本?這是烘烤我的麪條,因爲我無法看到舊文本的存儲位置,以及爲什麼對於按鈕的子集,它們的組件文本沒有更新!
任何想法都熱烈歡迎!
Edit2。我試圖刪除.suo並清理並重新編譯。我也從解決方案中刪除了麻煩的表單並重新添加。
所以你可以看到這個奇怪的行爲,這裏是有問題的按鈕之一('Lock Workbook GG')和一個正常的按鈕('設置爲默認工作簿GG')。
現在在運行時我看到
只是出於好奇,你如何設置按鈕的屬性(文本,工具提示等)?你在最終的項目輸出目錄中有什麼資源文件 - 我只假設資源dll?最後一個問題 - 表單的Language和Localizable屬性的值是什麼?你嘗試過「清潔解決方案」,然後「重建」?資源dll是否在輸出目錄中更新? – pasty
@pasty感謝您的回覆。設置「文本」,「工具提示」等。我使用設計器;我選擇按鈕,然後在'屬性'面板中編輯相關屬性。例如,在'bin \ Debug'文件夾中,我有所有常用文件,包括保存資源DLL的'de'和'de-DE'文件夾。目前'Language'屬性的值是'(Default)','Localizable'是'True'... – MoonKnight
然後試試這個:通過代碼(文本,工具提示等)設置所需的屬性。是的,它有一些開銷,但是然後你明確地使用和設置文本 - button1.Text = ProjectResources.Translations.Hello;我們有一個項目在工作(相同的星座 - 資源單獨的項目),它沒有錯誤(我們在代碼中設置了大部分翻譯)。 – pasty