我有一个包含大量文本需要翻译的字符串:
敏捷的棕色狐狸跳过了懒狗
我正在使用一个资源文件,我有两个如下所示的条目:
姓名 | 价值 | 评论
福克斯 | ræv | “狐狸”的翻译
狗 | 百年| “狗”的翻译
(Ræv 在丹麦语中是狐狸的意思,hund 是狗的意思)
我正在寻找的是能够做到这一点:
敏捷的棕色狐狸跳过了懒狗}
结果应该在哪里:
快速的棕色 ræv 跳过懒惰的 hund
我真的找不到一个好的解决方案,有什么建议吗?
我有一个包含大量文本需要翻译的字符串:
敏捷的棕色狐狸跳过了懒狗
我正在使用一个资源文件,我有两个如下所示的条目:
姓名 | 价值 | 评论
福克斯 | ræv | “狐狸”的翻译
狗 | 百年| “狗”的翻译
(Ræv 在丹麦语中是狐狸的意思,hund 是狗的意思)
我正在寻找的是能够做到这一点:
敏捷的棕色狐狸跳过了懒狗}
结果应该在哪里:
快速的棕色 ræv 跳过懒惰的 hund
我真的找不到一个好的解决方案,有什么建议吗?
创建一个字符串字典,读取资源文件的每一行。为您要翻译的每个单词创建一个字典条目。最后一步是遍历所有字典条目,只string.Replace
在要翻译的字符串上使用。
您会发现最接近的是使用 ResourceManager 的 GetString 方法
ResourceManager rm = new ResourceManager(typeof(Properties.Resources));
var res = rm.GetString("Error");
string.Format("my string {0}", res);
但是为此,您需要知道您尝试返回的资源的键(或表示该键的变量),然后您可以将其插入到您的字符串中。其他答案建议使用字典,但资源已经类似于一种字典,所以这只是将数据从一个复制到另一个。
根据我使用资源的经验,我从来没有遇到过无法将实际资源插入所需位置的情况。
我建议您使用您自己构建的类,它代表资源文件中的所有条目并用它们填充字典,就像前面的答案一样。
Dictionary<string, Entry> translations = new Dictionary<string,Entry>();
(Entry 是你的班级)
字典将是你的朋友。键/值概念允许您为翻译建立一对一的关系。找到键后,替换为值。因此,将您的资源文件读入字典并解析文本。解析取决于大小,可以根据框架和系统做不同的事情,比如并行。
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
此外,您可以将资源更改为不同的语言,只需加载不同的文件。或者同一个文件,并将值作为不同的节点或条目读取,无论用于区分丹麦语和德语还是荷兰语。