-1

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

敏捷的棕色狐狸跳过了懒狗

我正在使用一个资源文件,我有两个如下所示的条目:

姓名 | 价值 | 评论

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

狗 | 百年| “狗”的翻译

(Ræv 在丹麦语中是狐狸的意思,hund 是狗的意思)

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

敏捷的棕色狐狸跳过了懒狗}

结果应该在哪里:

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

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

4

4 回答 4

1

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

于 2013-08-05T14:23:43.127 回答
1

您会发现最接近的是使用 ResourceManager 的 GetString 方法

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

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

根据我使用资源的经验,我从来没有遇到过无法将实际资源插入所需位置的情况。

于 2013-08-05T14:35:17.090 回答
0

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

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

(Entry 是你的班级)

于 2013-08-05T14:26:24.343 回答
0

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

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

此外,您可以将资源更改为不同的语言,只需加载不同的文件。或者同一个文件,并将值作为不同的节点或条目读取,无论用于区分丹麦语和德语还是荷兰语。

于 2013-08-05T14:26:47.373 回答