使用资源文件格式化字符串

时间:2013-08-05 14:12:14

标签: c# format arguments resourcedictionary

我有一个包含大量需要翻译的文字的字符串:

  

快速的棕色狐狸跳过懒狗

我正在使用资源文件,我有两个看起来像这样的条目:

  

名称|价值|评论

     

Fox | ræv| “福克斯”的翻译

     

狗| hund | “狗”的翻译

(Ræv意味着狐狸和hund意味着丹麦语的狗)

我正在寻找的是能够做到这一点:

  

快速的棕色{Fox}跳过懒惰的{Dog}

结果应该是:

  

快速的棕色ræv跳过懒惰的人

我真的找不到一个好的解决方案,有什么建议吗?

4 个答案:

答案 0 :(得分:1)

创建字符串字典,读取资源文件的每一行。为您要翻译的每个单词创建一个字典条目。最后一步是迭代所有字典条目,只需在要翻译的字符串上使用string.Replace

答案 1 :(得分:1)

最接近的是使用ResourceManager的GetString方法

 ResourceManager rm = new ResourceManager(typeof(Properties.Resources));
var res = rm.GetString("Error");
 string.Format("my string {0}", res);

但是为此您需要知道要尝试返回的资源的键(或代表该键的变量),然后可以将其插入到字符串中。其他答案建议使用字典,但资源已经类似于一种字典,所以这只是将数据从一个复制到另一个。

根据我使用资源的经验,我从来没有一个单一的实例,我无法将实际资源插入到所需的位置。

答案 2 :(得分:0)

我建议你使用一个类构建来代表资源文件中的所有条目,并用它们填充字典,就像之前的答案一样。

Dictionary<string, Entry> translations = new Dictionary<string,Entry>();

(入门是你的班级)

答案 3 :(得分:0)

Dictionary将成为你的朋友。键/值概念允许您为翻译建立一对一的关系。找到密钥后,替换为值。因此,请将您的资源文件读入字典并解析文本。解析取决于大小,可以根据框架和系统做不同的事情,比如并行。

Dictionary<string, string> translations = new Dictionary<string,string>();
using(/* dispoable file reader of your choice here */)
    //parse resource, whether it is INI or XML or whatever, into Keys (English) and Values (Danish)
    translations.Add(key, value);

//now parse text

此外,您可以将资源更改为其他语言,只需加载其他文件即可。或者同一个文件,并将Value作为不同的节点或条目读取,无论用什么来区分丹麦语与德语和荷兰语。