我有一个包含大量需要翻译的文字的字符串:
快速的棕色狐狸跳过懒狗
我正在使用资源文件,我有两个看起来像这样的条目:
名称|价值|评论
Fox | ræv| “福克斯”的翻译
狗| hund | “狗”的翻译
(Ræv意味着狐狸和hund意味着丹麦语的狗)
我正在寻找的是能够做到这一点:
快速的棕色{Fox}跳过懒惰的{Dog}
结果应该是:
快速的棕色ræv跳过懒惰的人
我真的找不到一个好的解决方案,有什么建议吗?
答案 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作为不同的节点或条目读取,无论用什么来区分丹麦语与德语和荷兰语。