Я работаю над локализацией строковых текстовых сообщений в решении с более чем 30 проектами. Все сообщения пользователя должны быть локализованы, за исключением сообщений журнала, так как они будут прочитаны разработчиками США, поэтому они должны оставаться на английском языке на английском языке. Во всех проектах решений в каждом файле была создана строка с тем же сообщением (с разными именами переменных в каждом), которые также поступают в сообщения пользователя и журнала.Как заставить определенную культуру на строку C#
String s = "Unable to populate list: "
Log.Warning(LogCategory.NameLookupDialog, s + ex.Message + ex.StackTrace);
TXMessageBox.Show(s);
Строка в TXMessageBox будет извлечено из файлов ресурсов, но тот, который идет в сообщении журнала должен остаться в США на английском языке.
Есть ли способ заставить американскую английскую культуру на строку s, когда она входит в сообщение журнала? Другими словами, если культура приложения изменилась, например, на индийскую, сообщение журнала должно остаться в США Английский. Вот что я пытался до сих пор: я изменил культуру приложения к индийской, затем я попытался установить культуру текста метки только на американском английском языке, но это не сработало:
public void SwitchCulture()
{
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-IN");
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
this.lblLogMessage.Text = string.Format(new CultureInfo("en-US"), this.lblLogMessage.Text);
}
Когда я запускаю это, я все еще вижу все ярлыки на индийском языке. Значит, любые идеи, как заставить культуру на струне?
Вы не делаете никаких конверсий для конкретной культуры. – SLaks
Строки не локализованы, строки - это строки. * Ресурсы * могут быть локализованы, но это совсем другое дело. Если у вас нет вопроса о том, как получить локализованные ресурсы, то это, вероятно, то, что вам нужно. Затем, если вы хотите, чтобы определенные строки не были локализованы, это достаточно просто: не извлекайте их из локализованных ресурсов. –