其中把JSON转换为类对象需要两个类,对翻译结果进行转换,如下代码所示。
internal class TranslationJson
{
public string from { get; set; }
public string to { get; set; }
public List<TranslationResult> trans_result { get; set; }
}
internal class TranslationResult
{
public string src { get; set; }
public string dst { get; set; }
}
这样我们在多语言处理的时候,可以对默认输入为空的键值进行翻译即可(如英文翻译)。
//遍历集合进行翻译
var value = dict[key];
if (string.IsNullOrWhiteSpace(value))
{
//如果值为空,那么调用翻译接口处理
var newValue = TranslationHelper.Translate(key, from, to);
if (!string.IsNullOrWhiteSpace(newValue))
{
dict[key] = newValue;
}
}
然后重新更新我们的资源文件就可以了
//不排序
var newContent = JsonConvert.SerializeObject(dict, Formatting.Indented);
File.WriteAllText(file, newContent, Encoding.UTF8);
如果需要对键值进行排序,那么使用SortDictionary进行包装下即可
//进行排序
SortedDictionary<string, string> sortedDict = new SortedDictionary<string, string>(dict);
var newContent = JsonConvert.SerializeObject(sortedDict, Formatting.Indented);
在多语言处理的时候,我们一般不必要一次填写完毕中英文对照的资源,我们可以先把字典键值的键写出来,值保留为空,如下文件所示。
运行程序的时候,让翻译的接口先行翻译,然后我们再对翻译的资源进行调整,适应我们程序的语境即可,翻译后的内容后如下所示。











