2016-11-08 2 views
0

Я работаю над локализацией строковых текстовых сообщений в решении с более чем 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); 
     } 

Когда я запускаю это, я все еще вижу все ярлыки на индийском языке. Значит, любые идеи, как заставить культуру на струне?

+0

Вы не делаете никаких конверсий для конкретной культуры. – SLaks

+2

Строки не локализованы, строки - это строки. * Ресурсы * могут быть локализованы, но это совсем другое дело. Если у вас нет вопроса о том, как получить локализованные ресурсы, то это, вероятно, то, что вам нужно. Затем, если вы хотите, чтобы определенные строки не были локализованы, это достаточно просто: не извлекайте их из локализованных ресурсов. –

ответ

0

AppResources.ResourceManager.GetString ("ResourceKey", новый CultureInfo ("EN-US"))

где AppResources это имя файла и имя класса ресурсов и ResourceKey этого имя ключевого ресурса внутри в Resx файл.

+0

Работает сейчас! Спасибо . –

0

Возможно, шрифт, который вы используете на своей этикетке, не будет принимать латинские символы. Смотрите этот предыдущий ответ: How to get Hindi (Unicode) Text From Textbox?

Если это не сработает, попробуйте установить CultureInfo текущего потока к EN-US перед тем установить текст лейбла. Затем верните его на хинди, когда закончите.

Смежные вопросы