This commit is contained in:
2021-08-11 21:54:03 +00:00
parent 7b4cbf51a9
commit 1b820120f5

View File

@@ -281,6 +281,12 @@ namespace AyaNova.PlugIn.V8
TagMap.Clear(); TagMap.Clear();
// BankedObjects.Clear(); // BankedObjects.Clear();
LocaleMap.Clear(); LocaleMap.Clear();
//add default raven language and codes
LocaleMap.Add("English", 1);
LocaleMap.Add("Español", 2);
LocaleMap.Add("Français", 3);
LocaleMap.Add("Deutsch", 4);
//admin user (not exported but is there already) //admin user (not exported but is there already)
@@ -3082,11 +3088,11 @@ namespace AyaNova.PlugIn.V8
//Get a list of RAVEN translations and ID's //Get a list of RAVEN translations and ID's
var a = await util.GetAsync("translation/list"); var a = await util.GetAsync("translation/list");
JArray ja = (JArray)a.ObjectResponse["data"]; JArray ja = (JArray)a.ObjectResponse["data"];
var RavenLanguageList = ja.ToObject<List<util.NameIdItem>>(); var RavenLanguageList = ja.ToObject<List<util.NameIdItem>>();//all v8 languages
LocaleList l = LocaleList.GetList(); LocaleList v7LocaleList = LocaleList.GetList();//all v7 languages
foreach (LocaleList.LocaleListInfo i in l) foreach (LocaleList.LocaleListInfo i in v7LocaleList)
{ {
ResetUniqueNames(); ResetUniqueNames();
if (!progress.KeepGoing) return; if (!progress.KeepGoing) return;
@@ -3098,46 +3104,60 @@ namespace AyaNova.PlugIn.V8
//#endif //#endif
if (!util.LocaleIsCustomized(i.Locale, lt, progress)) continue; if (!util.LocaleIsCustomized(i.Locale, lt, progress)) continue;
//Guess the source language //Guess the source language, this will always return at least "en" if nothing else
var ProbableSourceLocale = GuessCustomLocaleSourceLanguage(lt); var ProbableSourceLocale = GuessCustomLocaleSourceLanguage(lt);
//collection to hold items sent to server //collection to hold items sent to server
List<UpdateTranslationItem> exportItems = new List<UpdateTranslationItem>(); List<UpdateTranslationItem> exportItems = new List<UpdateTranslationItem>();
//Iterate all RAVEN languages //Iterate all RAVEN languages
for (int x = 1; x < 5; x++)//first four translations are the stock ones // for (int x = 1; x < 5; x++)//first four translations are the stock ones
{ //{
//get raven name of locale //get raven name of locale
var RavenLocaleName = RavenLanguageList.Find(m => m.Id == x).Name; // var RavenLocaleName = RavenLanguageList.Find(m => m.Id == x).Name;
//add stock locale mappings in case users are set to a stock one in v7 //add stock locale mappings in case users are set to a stock one in v7
//so can set them later //so can set them later
//this is some half baked shit,it's intended for when users are exported later but it only works with stock locales //this is some half baked shit,it's intended for when users are exported later but it only works with stock locales
//so..not sure the exact point, maybe should just default all to english and let admin fix them later //so..not sure the exact point, maybe should just default all to english and let admin fix them later
//as they likely will have to anyway. Harmless though I guess so keeping //as they likely will have to anyway. Harmless though I guess so keeping
switch (RavenLocaleName) //switch (RavenLocaleName)
{ //{
case "en": // case "en":
if (!LocaleMap.ContainsKey("English")) // if (!LocaleMap.ContainsKey("English"))
LocaleMap.Add("English", x); // LocaleMap.Add("English", x);
break; // break;
case "fr": // case "fr":
if (!LocaleMap.ContainsKey("Français")) // if (!LocaleMap.ContainsKey("Français"))
LocaleMap.Add("Français", x); // LocaleMap.Add("Français", x);
break; // break;
case "de": // case "de":
if (!LocaleMap.ContainsKey("Deutsch")) // if (!LocaleMap.ContainsKey("Deutsch"))
LocaleMap.Add("Deutsch", x); // LocaleMap.Add("Deutsch", x);
break; // break;
case "es": // case "es":
if (!LocaleMap.ContainsKey("Español")) // if (!LocaleMap.ContainsKey("Español"))
LocaleMap.Add("Español", x); // LocaleMap.Add("Español", x);
break; // break;
} //}
//MAKE A DUPLICATE //MAKE A DUPLICATE
var exportName = GetUniqueName(i.Locale + " (" + RavenLocaleName + ")"); var exportName = GetUniqueName(i.Locale + " (" + ProbableSourceLocale + ")");
progress.SubOp(""); progress.SubOp("");
progress.Op("Exporting " + i.Locale + " to " + exportName); progress.Op("Exporting " + i.Locale + " to " + exportName);
int x = 1;//default english locale raven id
switch (ProbableSourceLocale)
{
case "fr":
x = 3;
break;
case "de":
x=4;
break;
case "es":
x = 2;
break;
}
a = await util.PostAsync("translation/duplicate/" + x.ToString()); a = await util.PostAsync("translation/duplicate/" + x.ToString());
var targetTranslationId = util.IdFromResponse(a); var targetTranslationId = util.IdFromResponse(a);
@@ -3159,9 +3179,9 @@ namespace AyaNova.PlugIn.V8
//add to maps so can set user to it on export //add to maps so can set user to it on export
//going to default to the English based one because //going to default to the English based one because
//that's the majority of the users //that's the majority of the users
if (RavenLocaleName == "en" && !LocaleMap.ContainsKey(i.Locale)) if (!LocaleMap.ContainsKey(i.Locale))
LocaleMap.Add(i.Locale, targetTranslationId); LocaleMap.Add(i.Locale, targetTranslationId);
//Ok, have our target locale created, not we need to insert our custom translations one by one //Ok, have our target locale created, now we need to insert our custom translations one by one
var trans = ((JArray)a.ObjectResponse["data"]["translationItems"]).ToObject<List<TranslationItem>>(); var trans = ((JArray)a.ObjectResponse["data"]["translationItems"]).ToObject<List<TranslationItem>>();
var DuplicateAvoidanceList = new List<string>(); var DuplicateAvoidanceList = new List<string>();
@@ -3204,7 +3224,7 @@ namespace AyaNova.PlugIn.V8
progress.Op(""); progress.Op("");
progress.SubOp(""); progress.SubOp("");
} // }//iterate raven stock languages
} }
progress.Op(""); progress.Op("");
@@ -3439,9 +3459,11 @@ namespace AyaNova.PlugIn.V8
public string GuessCustomLocaleSourceLanguage(LocalizedTextTable lt) public string GuessCustomLocaleSourceLanguage(LocalizedTextTable lt)
{ {
//try to match up some likely not edited locale translations
//and give weight to the language with the most matches
//if no matches should default to en
Dictionary<string, int> d = new Dictionary<string, int>(); Dictionary<string, int> d = new Dictionary<string, int>();
d.Add("en", 0);//weight towards english? d.Add("en", 0);//this will default if nothing is matched as sort will just keep same order
d.Add("de", 0); d.Add("de", 0);
d.Add("fr", 0); d.Add("fr", 0);
d.Add("es", 0); d.Add("es", 0);