Yo! Я знаю, что это практическая практика, в основном в Drupal. Прошу прощения, если это дубликат (не мог найти его в моих собственных терминах).Замена «токена» внутри файлов ресурсов C#
У меня есть серия файлов ресурсов для целей локализации. В Drupal есть что-то, называемое токенами, которые представляют собой некоторый узорный текст, который заменяется сервером при его вызове.
Пример:
файл ресурсов на английском языке:
«У меня есть эта локализация текста в моем файле ресурсов на английском языке, и я хотел бы, чтобы отобразить на $ [пользователь], как это работает»
файл ресурсов на испанском языке:
"Yo Тенго Эсте Texto localizado ан-эль Archivo де Recursos ан español у quisiera enseñarle аль $ [пользователь] Cómo Эсто funciona."
Затем, после некоторого разбора я бы заменил токен на правильные детали.
Мой нынешний подход был следующим:
public class LocalizationParser
{
private Dictionary<string, dynamic> Tokens { get; set; }
public LocalizationParser()
{
Tokens = new Dictionary<string, dynamic>();
Tokens.Add("$[user]", HttpContext.Current.User.Identity.Name);
}
public string ParseResource(string text)
{
foreach(var token in Tokens)
{
text.Replace(token.Key, token.Value);
}
return text;
}
}
Я знаю, что у меня есть огромная проблема, что я получаю все эти ценности заселена, и там будет ненужная влияние на производительность. Я знаю, что если бы я мог вызвать метод, который мог бы получить правильное значение, только если ключ словаря был найден, в нем не было бы огромных накладных расходов.
Каков правильный способ сделать это в C#? (В настоящее время используется ASP.NET MVC 5 с EF 6.1)
в цикле ParseResource, вы должны иметь 'текст = text.Replace (token.Key, token.Value)' для этой работы – Wapac
Hahah. Спасибо, что ты прав! Как насчет подхода? –
Я также не уверен, почему там используется динамика. Не могли бы вы объяснить, почему не? –
Wapac