Локализация с использованием файла ресурсов не работает - PullRequest
3 голосов
/ 15 октября 2011

Я добавил новый файл Rosource UserNotification.resx. Затем я добавил два файла для локализации и назвал их UserNotification.hr-HR.resx и UserNotification.sl-SI.resx. (следующий поток: Как использовать локализацию в C # )

Затем я изменил язык Windows на «си». Если я печатаю текущую культуру, используя System.Globalization.CultureInfo.CurrentCulture.ToString(), то вывод si sl-SI

Но я всегда получаю строку из UserNotification.resx. Швы не распознает файлы ресурсов локализации.

1 Ответ

5 голосов
/ 15 октября 2011

Проблема локализации .NET, если вы используете многопоточность, заключается в том, что вам нужно установить культуру вручную для каждого потока, который вы создаете (в случае, если он отличается от культуры Windows, в случае, когда пользователь может выбрать нужный язык). Не наследуется от основного потока.

После создания нового потока и перед его запуском вы должны установить его Культура в Культуру основного потока (который обычно использует культуру окон по умолчанию).

Итак, система показывает хорошую CurrentCulture. Но что говорит текущий поток? Может быть, приложение по какой-то причине запускается с другой культурой, поэтому загружает файл ресурсов по умолчанию? В любом случае, нет причин, по которым вы не должны вручную устанавливать текущую культуру. В основном это нужно делать, когда вы хотите дать пользователю возможность изменить язык приложения.

...