Я пытаюсь определить, на каком языке написано txt player.LastChat, и у меня возникают некоторые трудности.
Вот код, который у меня есть:
String[] words = player.LastChat.Trim().Split(new Char[]{' ','\t',',','.',':','!','?',';','(',')',']','[','"'});
StringBuilder edited = new StringBuilder();
// Remove exception list words from line
foreach (String w in words) {
if (plugin.isInList(w, "good_words")) {
continue;
}
edited.Append(w);
edited.Append(" ");
}
// URL Encode edited string
String UnreservedChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.~";
StringBuilder Result = new StringBuilder();
String Input = edited.ToString();
for (int x = 0; x < Input.Length; ++x)
{
if (UnreservedChars.IndexOf(Input[x]) != -1)
Result.Append(Input[x]);
else
Result.Append("%").Append(String.Format("{0:X2}", (int)Input[x]));
}
String key = "API KEY";
// Test for badness
bool jsonresult = false;
try {
WebClient client = new WebClient();
String json = client.DownloadString("https://www.googleapis.com/language/translate/v2/detect?key=" + key + "&q=" + Result.ToString());
jsonresult = json.Contains("en");
} catch (Exception e) {
plugin.ConsoleWrite("Language check failed! Error: " + e);
}
if (!jsonresult) {
return true;
}
plugin.ConsoleWrite("Language: " + jsonresult);
return jsonresult; // for Actions
Итак, что я пытаюсь достичь, это вернуть true, если это какой-либо другой язык, чем "en" (английский), но он возвращает true независимо от того, что.
Ответ от google заключается в следующем:
{
"data": {
"detections": [
[
{
"language": "en",
"isReliable": false,
"confidence": 0.03396887
}
]
]
}
}
Любая помощь очень ценится, и я понятия не имею, как закодировать код, этот код заимствован из другого скрипта.
С уважением.
Чтобы сделать работу метода, как описано, вы должны изменить:
if (!jsonresult) {
return true;
}
plugin.ConsoleWrite("Language: " + jsonresult);
return jsonresult;
чтобы:
plugin.ConsoleWrite("Language: " + jsonresult);
return !jsonresult;
также эта строка
jsonresult = json.Contains("en");
проверяет наличие "en"
в тексте json (и находится в "confidence"
в вашем json). То, что вы должны сделать, это разобрать Json с помощью json.net (или другой библиотеки) или просто сделать это (но это уродливый взлом):
jsonresult = json.Contains("\"language\": \"en\",");