У меня есть среда тестирования, которую необходимо обновить, чтобы включить тестирование на испанском языке.У меня есть файл CSV, который содержит метку поля, текст на английском языке и текст на испанском языке.Я решил использовать словарь для хранения метки поля в качестве ключа, и значения будут представлять собой список строк для текста на испанском и английском языках.
private List<string> ReadTranslationCsv()
{
var pathToCSV = @"C:\Location";
Dictionary<string, List<string>> translations = new Dictionary<string, List<string>>();
string label, englishText, spanishText;
using (TextReader fileReader = File.OpenText(pathToCSV))
{
var csv = new CsvReader(fileReader);
csv.Configuration.HasHeaderRecord = false;
while (csv.Read())
{
for (int i = 0; csv.TryGetField<string>(i, out label);)
{
List<string> Spanglish = new List<string>();
csv.TryGetField<string>(i + 1, out englishText);
Spanglish.Add(englishText);
csv.TryGetField<string>(i + 2, out spanishText);
Spanglish.Add(spanishText);
if (label != "")
{
translations.Add(label, Spanglish);
}
i = i + 3;
}
}
}
}
Я хочу иметь возможность поиска в спискезначений, чтобы увидеть, если что-нибудь соответствует какой-либо строке текста.Я не уверен, как искать списки, которые находятся в словаре, ни один из методов или свойств по умолчанию не работает.
Я использую приведенный ниже код, но это вернет мне логическое значение, а это не то, что мне нужно, мне нужно значение списка, соответствующее elementWithText
public void GivenElementMatches(string elementWithText)
{
if (Config.Language == "Spanish")
{
var list = new List<string> { elementWithText };//must create list in order to pass text to any translations methods
Hooks.translations.ContainsValue(list); // Even though the labels are the key, I need to search for the english text which is index 1 of the list and all values should be returned
}
//TODO
}