Как переключаться между файлами resx (без использования культуры)
Что я пытаюсь сделать:
Я работаю над сервисом чат-ботов, где у меня есть разные каналы доступа. На одном канале я хочу использовать свой файл Customer.resx, а на другом канале я хочу использовать свой файл Worker.resx.
Эта проблема:
Я знаю, как работает локализация для переключения между Worker.en-US.resx и Worker.es-MX.resx, но я не уверен, как переключиться с одного обычного файла resx на совершенно другой контекстный файл. Каждый из них будет переведен на другие языки, поэтому я не могу просто использовать Customer.en-US.resx и Worker.es-MX.resx в качестве обходного пути. Я знаю, что могу создать собственную культуру, используя CultureAndRegionInfoBuilder, но я бы предпочел сделать это более простым способом, чем то, как вы делаете локализацию. В настоящее время я создаю пользовательские культуры с использованием этого метода, и у меня есть Resources.worker-en-US.resx и аналогичные для клиента, но это обходной путь, и я знаю, что должен быть лучший путь.
Для пояснения я знаю, что могу получить файл ресурсов с помощью ResXResourceSet, но идея заключалась в том, что я хотел бы иметь два отдельных файла ресурсов с локализацией для каждого (worker.en-US и customer.en-US).
1 ответ
Я бы объединил их обоих в один, потому что рекс действительно привязаны к культурам / языкам. Вы можете использовать шаблон стратегии, чтобы получить правильные строки в нужное время.
interface IStrings { string Foo { get; } }
class WorkerStrings : IStrings { ... }
class CustomerStrings : IStrings { ... }