Поскольку это проблема локализации строки, и вы просто хотите гибкость выбора всего набора локализованного контента, существует несколько способов привязки строк к диспетчеру ресурсов. Большинство из них слишком сложны для желаемого результата:
Учитывая следующее:
- Большинство решений, которые я видел, требуют обязательного заявления о 80 символов долго для каждой записи. Это не означает, что использование умного конвертера не требует конца.
- Большинство решений, которые я видел, реализуют каждую строку как свойство уведомления (это кажется огромным накладным капиталом для строк, которые почти никогда не изменяются).
- Локализация обычно не требует мгновенного обновления (вы всегда можете обновить текущую страницу).
Гораздо более простой подход, чтобы просто разместить свои строки, как пары имя-значение, в глобальном словаре App и ссылаться на них через короткий/простой StaticResource связывания, например,
Text={StaticResource L_MenuHome}
Оставшаяся проблема в том, то просто, как получить другой набор языковых строк в словаре App (который на самом деле довольно легко):
- Положите ваши языки по умолчанию строки непосредственно в App.xaml (это помогает в разработке, поскольку отсутствующие ключи приводят к исключению).
- Выдвиньте любой новый язык с вашего сервера с помощью любых удобных средств (XML-файл, XAML-файл, CSV или из базы данных через webservice)
- Замените словарный запас новыми загруженными данными. Единственное, что вы должны сделать, это убедиться, что ключ уже присутствует, или вы должны добавить запись или установить ее.
- Обновить текущую страницу (взять их обратно на главную страницу после изменения языка?)
Я не знаю, почему все, кажется, любят очень сложные решения, когда StaticResources сделать работу очень хорошо и с намного меньше усилий. Мы также используем веб-сервис для извлечения набора языковых строк из базы данных, поскольку он обычно меньше 200 КБ, а базы данных гораздо более гибкие для обновлений.
В любом случае, просто пытайтесь вернуть часть здравого смысла в локализацию. Это работает для нас. Не стесняйтесь использовать, игнорировать, предлагать улучшения и т. Д.
Надеюсь, это поможет.
Возможно, измените тип ресурса на ресурс вместо встроенного ресурса? –
Тогда у меня есть ошибка: Не удалось найти ресурсы, подходящие для указанной культуры или нейтральной культуры. Убедитесь, что «Infopulse.MSEA.BPSurvey.TypesEditor.Resources.TypesEditorResources.resources» был правильно встроен или подключен к сборке «TypesEditor» во время компиляции или что все необходимые сборочные сборки загружаются и полностью подписаны. – Evgeny
Являются ли эти ресурсы только для локализованных строки, или у них есть другие типы ресурсов в них? –