2011-04-28 55 views
6

我的項目中的資源文件有問題。當我用英文創作一本時,我把它交給了翻譯團隊。不知何故,他們以不同的順序返回了我的資源文件,因此它沒有按字母順序排序。如何排序。在.NET中的resx(資源文件)

因此,在一開始是:

<data name="a1" xml:space="preserve"> 
    <value>some text2</value> 
</data> 
<data name="b1" xml:space="preserve"> 
    <value>some text3</value> 
</data> 
<data name="c1" xml:space="preserve"> 
    <value>some text1</value> 
</data> 

,我收到:

<data name="c1" xml:space="preserve"> 
    <value>some text1</value> 
</data> 
<data name="a1" xml:space="preserve"> 
    <value>some text2</value> 
</data> 
<data name="b1" xml:space="preserve"> 
    <value>some text3</value> 
</data> 

那麼,有沒有什麼辦法可以由<data name屬性在.resx文件的元素進行排序?

回答

5

我找到了一個軟件: SortRESX 它是由湯姆·克萊門特創建,你可以在這裏找到: http://www.codeproject.com/KB/cs/ResxMergeUtility.aspx

它是簡單的可執行文件,它按字母順序排序resx文件。這真的幫助了我。 我甚至在我的博客上描述過它。

https://tijanavujanac.posterous.com/resxdiff-solving-the-resx-merge-problem :)

+1

博客文章不再可用。 – Andy 2015-08-04 06:43:51

+0

在合併之前,我可以讓Visual Studio(或git)自動執行SortRESX程序嗎?怎麼樣? – murf 2017-07-31 09:43:15

3

你可以寫一個快速腳本來做到這一點使用LINQ to XML:

var root = XElement.Load(...); 
var sortedRoot = new XElement(root.Name, root.Attributes, 
     root.Elements().OrderBy(e => e.Attribute("name").Value) 
); 
+0

這真是個好主意,但我找到了一些快速解決方案,我將其添加爲評論。我正在考慮編寫自己的代碼,但速度更快。 – ticky 2011-04-28 14:48:18

3

我寫了一個very simple VS extension的排序RESX文件。 右鍵單擊任何.resx文件,然後單擊「排序Resx」。

+0

它看起來你是過時了,插件不會安裝在vs 2015 – deadManN 2015-10-20 06:53:04

+0

我叉你的項目,重新編譯它,然後安裝,但沒有資源文件上的按鈕,我也添加了所有類型的VS'安裝目標' source.extension.vsixmanifest「,但它也沒有帶來任何新的上下文菜單。 :| – deadManN 2015-10-20 07:45:53

+2

感謝您的反饋意見。它已經過時了 - 我推薦使用[Resx Manager](https://visualstudiogallery.msdn.microsoft.com/3b64e04c-e8de-4b97-8358-06c73a97cc68) - 他們最近添加了排序功能。 – seldary 2015-10-20 13:40:51

相關問題