void TranslateAllToLanguage(string lanName) { if (!GoogleTranslation.CanTranslate()) { ShowError("WebService is not set correctly or needs to be reinstalled"); return; } ClearErrors(); int LanIndex = mLanguageSource.GetLanguageIndex(lanName); string code = mLanguageSource.mLanguages [LanIndex].Code; string googleCode = GoogleLanguages.GetGoogleLanguageCode(code); if (string.IsNullOrEmpty(googleCode)) { ShowError("Language '" + code + "' is not supported by google translate"); return; } googleCode = code; mTranslationTerms.Clear(); mTranslationRequests.Clear(); foreach (var termData in mLanguageSource.mTerms) { if (termData.TermType != eTermType.Text) { continue; } if (!string.IsNullOrEmpty(termData.Languages[LanIndex])) { continue; } string sourceCode, sourceText; FindTranslationSource(LanguageSourceData.GetKeyFromFullTerm(termData.Term), termData, code, null, out sourceText, out sourceCode); mTranslationTerms.Add(termData.Term); GoogleTranslation.CreateQueries(sourceText, sourceCode, googleCode, mTranslationRequests); // can split plurals into several queries } if (mTranslationRequests.Count == 0) { StopConnectionWWW(); return; } mConnection_WWW = null; mConnection_Text = "Translating"; if (mTranslationRequests.Count > 1) { mConnection_Text += " (" + mTranslationRequests.Count + ")"; } mConnection_Callback = null; //EditorApplication.update += CheckForConnection; GoogleTranslation.Translate(mTranslationRequests, OnLanguageTranslated); }
static void Translate(string Key, ref TermData termdata, string TargetLanguageCode, Action <string, string> onTranslated) { #if UNITY_WEBPLAYER ShowError("Contacting google translation is not yet supported on WebPlayer"); #else if (!GoogleTranslation.CanTranslate()) { ShowError("WebService is not set correctly or needs to be reinstalled"); return; } // Translate first language that has something // If no language found, translation will fallback to autodetect language from key string sourceCode, sourceText; FindTranslationSource(Key, termdata, TargetLanguageCode, out sourceText, out sourceCode); GoogleTranslation.Translate(sourceText, sourceCode, TargetLanguageCode, onTranslated); #endif }
// LanguageCodeFrom can be "auto" // After the translation is returned from Google, it will call OnTranslationReady(TranslationResult, ErrorMsg) // TranslationResult will be null if translation failed public static void Translate(string text, string LanguageCodeFrom, string LanguageCodeTo, Action <string, string> OnTranslationReady) { LocalizationManager.InitializeIfNeeded(); if (!GoogleTranslation.CanTranslate()) { OnTranslationReady(null, "WebService is not set correctly or needs to be reinstalled"); return; } //LanguageCodeTo = GoogleLanguages.GetGoogleLanguageCode(LanguageCodeTo); if (LanguageCodeTo == LanguageCodeFrom) { OnTranslationReady(text, null); return; } TranslationDictionary queries = new TranslationDictionary(); // Unsupported language if (string.IsNullOrEmpty(LanguageCodeTo)) { OnTranslationReady(string.Empty, null); return; } CreateQueries(text, LanguageCodeFrom, LanguageCodeTo, queries); // can split plurals into several queries Translate(queries, (results, error) => { if (!string.IsNullOrEmpty(error) || results.Count == 0) { OnTranslationReady(null, error); return; } string result = RebuildTranslation(text, queries, LanguageCodeTo); // gets the result from google and rebuilds the text from multiple queries if its is plurals OnTranslationReady(result, null); }); }
void TranslateAllToLanguage(string lanName) { if (!GoogleTranslation.CanTranslate()) { ShowError("WebService is not set correctly or needs to be reinstalled"); return; } int LanIndex = mLanguageSource.GetLanguageIndex(lanName); string code = mLanguageSource.mLanguages [LanIndex].Code; mTranslationRequests.Clear(); foreach (var termData in mLanguageSource.mTerms) { if (!string.IsNullOrEmpty((GUI_SelectedInputType == 0 ? termData.Languages : termData.Languages_Touch)[LanIndex])) { continue; } string sourceCode, sourceText; FindTranslationSource(LanguageSource.GetKeyFromFullTerm(termData.Term), termData, code, out sourceText, out sourceCode); mTranslationRequests.Add(new TranslationRequest() { Term = termData.Term, Text = sourceText, LanguageCode = sourceCode, TargetLanguagesCode = new string[] { code } }); } mConnection_WWW = GoogleTranslation.GetTranslationWWW(mTranslationRequests); mConnection_Text = "Translating"; if (mTranslationRequests.Count > 1) { mConnection_Text += " (" + mTranslationRequests.Count + ")"; } mConnection_Callback = OnLanguageTranslated; EditorApplication.update += CheckForConnection; }