Пример #1
0
        public bool CardNeedsTranslation(ChaFile file)
        {
            var sex = file.GetSex();

            return(file.EnumerateNames().Any(name =>
                                             StringUtils.ContainsJapaneseChar(name.Value) &&
                                             !NoTranslate[new NameScope(sex, file.GetNameType(name.Key))].Contains(name.Value)));
        }
Пример #2
0
        protected virtual IEnumerable <KeyValuePair <string, string> > GetNamesToRegister(ChaFile chaFile)
        {
            var handled = HashSetPool <string> .Get();

            var controller = chaFile.GetTranslationHelperController();

            try
            {
                foreach (var nameEntry in chaFile.EnumerateNames())
                {
                    var name = nameEntry.Value;
                    if (handled.Contains(name))
                    {
                        continue;
                    }
                    handled.Add(name);
                    yield return(new KeyValuePair <string, string>(name, name));

                    if (controller == null)
                    {
                        continue;
                    }
                    var origName = controller.OriginalNames[nameEntry.Key];
                    if (origName.IsNullOrEmpty() || origName == name || handled.Contains(origName))
                    {
                        continue;
                    }
                    handled.Add(origName);
                    yield return(new KeyValuePair <string, string>(origName, origName));
                }

                var fullname = chaFile.GetFullName();
                foreach (var name in new[]
                {
                    fullname, chaFile.GetOriginalFullName(), chaFile.GetFormattedOriginalName()
                })
                {
                    if (handled.Contains(name))
                    {
                        continue;
                    }
                    handled.Add(name);
                    yield return(new KeyValuePair <string, string>(name, name));
                }
            }
            finally
            {
                HashSetPool <string> .Release(handled);
            }
        }
Пример #3
0
        protected virtual void ApplyTranslations(ChaFile file)
        {
            if (file.TryGetTranslationHelperController(out var controller))
            {
                controller.ApplyTranslations();
                return;
            }

            var sex = file.GetSex();

            // partially loaded, no controller available
            foreach (var entry in file.EnumerateNames())
            {
                var scope = new NameScope(sex, file.GetNameType(entry.Key));
                if (TryGetRecentTranslation(scope, entry.Value, out var translatedName) &&
                    !TranslationHelper.NameStringComparer.Equals(translatedName, entry.Value))
                {
                    file.SetName(entry.Key, translatedName);
                }
            }
        }
Пример #4
0
        private IEnumerable <string> GetNamesToRegister(ChaFile chaFile)
        {
            var handled = new HashSet <string>();

            foreach (var name in chaFile.EnumerateNames().Select(n => n.Value))
            {
                if (handled.Contains(name))
                {
                    continue;
                }
                handled.Add(name);
                yield return(name);
            }

            var fullname = chaFile.GetFullName();

            if (handled.Contains(fullname))
            {
                yield break;
            }
            yield return(fullname);
        }
Пример #5
0
        private void ApplyTranslations(ChaFile file)
        {
            if (file.TryGetTranslationHelperController(out var controller))
            {
                controller.ApplyTranslations();
                return;
            }

            var sex = file.GetSex();

            // partially loaded, no controller available
            foreach (var entry in file.EnumerateNames())
            {
                var scope = new NameScope(sex, file.GetNameType(entry.Key));
                if (NoTranslate[scope].Contains(entry.Value))
                {
                    continue;
                }
                if (RecentTranslationsByName[scope].TryGetValue(entry.Value, out var translatedName))
                {
                    file.SetName(entry.Key, translatedName);
                }
            }
        }
Пример #6
0
 public static string GetName(this ChaFile chaFile, int index)
 {
     return(chaFile.EnumerateNames().Where(e => e.Key == index).Select(e => e.Value).FirstOrDefault());
 }
Пример #7
0
 public virtual bool CardNeedsTranslation(ChaFile file)
 {
     return(file.EnumerateNames().Any(name => StringUtils.ContainsJapaneseChar(name.Value)));
 }