示例#1
0
        public async Task <string> GetTranslated(string sourceString, CultureInfo sourceCultureInfo, CultureInfo translateCultureInfo)
        {
            string key = TranslatedRecord.GetKey(sourceString, sourceCultureInfo, translateCultureInfo);

            _cacheDict.TryGetValue(key, out TranslatedRecord translateRec);
            return(translateRec.TranslatedString);
        }
示例#2
0
 public async Task SaveTranslated(TranslatedRecord translatedRecord)
 {
     using (database = new LiteDatabase(path))
     {
         records = database.GetCollection <TranslatedRecord>("translatedRecords");
         records.Insert(translatedRecord);
     }
 }
示例#3
0
 public async Task <string> GetTranslated(string sourceString, CultureInfo sourceCultureInfo, CultureInfo translateCultureInfo)
 {
     using (database = new LiteDatabase(path))
     {
         records = database.GetCollection <TranslatedRecord>("translatedRecords");
         var wantedKey = TranslatedRecord.GetKey(sourceString,
                                                 sourceCultureInfo,
                                                 translateCultureInfo);
         return(records.FindOne(x => x.Key == wantedKey).TranslatedString);
     }
 }
示例#4
0
        public async Task SaveTranslated(TranslatedRecord translatedRecord)
        {
            //Delete first element of the queue if we've hit the limit.
            if (_cacheDict.Count > Limit && _cacheDict.ContainsKey(translatedRecord.Key))
            {
                var toRemove = _cacheQueue.Peek();
                _cacheDict.TryRemove(toRemove.Key, out var tr);
            }

            _cacheQueue.Enqueue(translatedRecord);
            _cacheDict.TryAdd(translatedRecord.Key, translatedRecord);
        }
        public async Task <string> GetTranslated(string sourceString, CultureInfo sourceCultureInfo, CultureInfo translateCultureInfo)
        {
            if (string.IsNullOrWhiteSpace(sourceString))
            {
                return(sourceString);
            }
            if (sourceCultureInfo == translateCultureInfo)
            {
                return(sourceString);
            }
            sourceString = sourceString.Trim();
            foreach (var serv in _localizationServices)
            {
                string translatedStr = await serv.TryGetTranslated(sourceString, sourceCultureInfo, translateCultureInfo);

                if (string.IsNullOrWhiteSpace(translatedStr))
                {
                    continue;
                }
                if (_cacheLocalizationServices.Count > 0)
                {
                    //Save to cache
                    TranslatedRecord rec = new TranslatedRecord()
                    {
                        SourceString         = sourceString,
                        TranslatedString     = translatedStr,
                        SourceCultureInfo    = sourceCultureInfo,
                        TranslateCultureInfo = translateCultureInfo
                    };
                    foreach (var cacheServ in _cacheLocalizationServices)
                    {
                        await cacheServ.SaveTranslated(rec);
                    }
                }
                return(translatedStr);
            }
            throw new Exception("Can`t find translated string in all services.");
        }