Я добавил новый файл Rosource UserNotification.resx. Затем я добавил два файла для локализации и назвал их UserNotification.hr-HR.resx и UserNotification.sl-SI.resx. (follow thread: Как использовать локализацию в С#)
Затем я изменил язык Windows на "si". Если я печатаю текущую культуру с помощью System.Globalization.CultureInfo.CurrentCulture.ToString()
, выход si sl-SI
Но я всегда получаю строку из UserNotification.resx. Швы не распознают файлы ресурсов локализации.
Проблема в локализации .NET, если вы используете многопоточность, заключается в том, что вам нужно установить культуру вручную для каждого потока, который вы создаете (в случае, если он отличается от культуры Windows, если пользователь может выбрать нужный язык). Он не унаследован от основного потока.
После создания нового потока и перед его запуском вы должны установить его в Культуру основного потока (который normaly использует стандартную культуру для окон).
Итак, система показывает хороший CurrentCulture. Но что говорит текущая нить? Может быть, приложение запускается с другой культурой по какой-то причине, так что почему он загружает файл ресурсов по умолчанию? Во всяком случае, нет причин, по которым вы не должны вручную настраивать текущую культуру. В основном вам нужно это сделать, когда вы хотите дать пользователю возможность изменить язык приложения.