Комментарии 6
Егор, спасибо за обзор библиотеки! Сам нахожусь в поиске готового решения для AvaloniaUI, пока думал писать свой велосипед. Единственное, чем отличается желаемый подход у меня в голове - это то, что локализация по-умолчанию должна быть уже "вшита" в XAML. То есть, имеем <Button Content="Click Me!" ... />. Это локализация по-умолчанию. А в рантайме меняем значение на локализованное. Такой подход позволяет приложению оставаться работоспособным, если потеряется папка с переводами. Минус - возможно, придётся перезапускать приложение при смене языка.
Вопрос: CLI и gpt - это хорошо, но есть ли какой-то уже готовый GUI инструмент для редактирования переводов для этой библиотеки? То, что можно отправить переводчику, не заставляя его открывать текстовый редактор? Желательно ещё с базовой проверкой ошибок (хотя бы на количество параметров в строке).
GUI инструмента пока нет, но думаю могу этим заняться. По идее одну табличку в той же авалонии сделать - много времени не займет.
В планах еще было - добавить пару команд в CLI. Одну для анализа на валидность json'ов со строками (такая уже есть в оригинальной библиотеке). И вторую - для миграции .resx файлов в json.
Насчет XAML я думал над каким-нибудь решением, чтобы уменьшить число бойлерплейта, но пока нет хороших идей)
Накидал код для прототипа GUI инструмента
Табличка выглядит так. TreeDataGrid отлично подошел с учетом иерархичной структуры файлов локалей. Осталось дело за малым - превратить это в удобный инструмент.
Я использую следующий подход:
<Button Content="#Click Me!" /> или
<Button Content="#ClickMeKey#Click Me!" />
При открытии окна пробегаю по элементам, составляю список переводимых свойств, далее использую этот список для замены строк на нужную локализацию.
Ну и в коде пользуюсь классом-оберткой:
static TransString ClickMe = "#Click Me!";
button.Content = ClickMe;
Интересное решение, спасибо.
А как оно работает для, например, 21 яблока?
для "21 яблока" будет использоваться вариант "one".
Под капотом используются следующие правила для склонений под различные культуры.
Простая локализация .NET приложений с помощью Slang.Net