Перекласти файли ресурсів .resx для .NET
Файл .resx змішує текст з іконками та іншими типізованими ресурсами в одному XML. KAERIS перекладає лише рядки, залишає решту байт за байтом і перевіряє елементи формату {0}.
KAERIS переклав цю сторінку та перевірив кожен рядок зворотним перекладом. Носій мови ще не переглядав її. Оригінал англійською
Як створюється файл .resx
<root> XML з записами <data name="…"><value>…</value></data>. Запис з атрибутом type або mimetype (іконка, зображення) не є текстом. Назви на кшталт SaveButton.Text є властивостями елементів керування з WinForms.
<?xml version="1.0" encoding="utf-8"?>
<root>
<resheader name="resmimetype"><value>text/microsoft-resx</value></resheader>
<data name="WelcomeMessage" xml:space="preserve">
<value>Welcome back, {0}!</value>
<comment>{0} is the user's first name</comment>
</data>
<data name="ItemsInCart" xml:space="preserve">
<value>You have {0} items in your cart.</value>
</data>
<data name="SaveButton.Text" xml:space="preserve">
<value>Save and close</value>
</data>
<data name="AppIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\app.ico;System.Drawing.Icon, System.Drawing</value>
</data>
</root>
На що звернути увагу при перекладі .resx
Типізовані записи не є текстом
Запис
AppIconу реальному запуску нижче є посиланням на файл. Він копіюється у вихідний файл без змін і ніколи не надсилається на переклад.Елементи формату
{0}уstring.Formatмає повернутися; у реальному запуску нижче обидва повернулися, і відсутній елемент був би позначений.Ключі не є текстом
Назви на кшталт
SaveButton.Textє властивостями елементів керування з WinForms. Це ключі: вони залишаються як є, ніколи не перекладаються.Коментарі залишаються у вихідному файлі
Елементи
<comment>не переносяться до перекладеного файлу. Зберігайте нотатки для перекладачів у вихідному ресурсі.
Реальний запуск: перекладено німецькою та перевірено
Реальний запуск, 27 жовтня 2026 року, нічого не редагувалося вручну: kaeris translate Strings.resx --langs de з kaeris 0.2.35, 2.6 секунди, модель openai/gpt-4.1-mini (резервна модель сервісу відповіла на це завдання). Нижче наведено німецький файл, який він написав, і що kaeris check говорить про нього.
<?xml version="1.0" encoding="utf-8"?>
<root>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="WelcomeMessage" xml:space="preserve">
<value>Willkommen zurück, {0}!</value>
</data>
<data name="ItemsInCart" xml:space="preserve">
<value>Sie haben {0} Artikel in Ihrem Warenkorb.</value>
</data>
<data name="SaveButton.Text" xml:space="preserve">
<value>Speichern und schließen</value>
</data>
<data name="AppIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\app.ico;System.Drawing.Icon, System.Drawing</value>
</data>
</root>
$ kaeris check --source Strings.resx --langs de ✓ de: complete & placeholder-safe ✓ all locales complete & placeholder-safe
Що KAERIS робить з цим
Лише рядки
Типізовані та бінарні записи зберігаються без змін, як у реальному запуску вище: запис
AppIconповернувся без змін.DTD та сутності відхилено
Файли з оголошенням DOCTYPE або сутностей відхиляються перед розбором, це захист, спільний з XLIFF та Android XML.
Безкоштовна перевірка для цього формату
Безкоштовна перевірка на /check читає цей формат і працює без ключа чи акаунта. Команда терміналу
kaeris checkтакож його читає: вона підтримує всі 13 форматів з kaeris 0.2.35, з тими ж правилами і нічого нікуди не відправляє.
Запустіть у три кроки
Встановіть CLI
Виконайте
pip install kaeris.Перекласти файл ресурсів
Запустіть
kaeris translate Resources/Strings.resx --langs de,ja.Перевірити результат
Завантажте вихідний файл та перекладений .resx на безкоштовну сторінку перевірки.
pip install kaeris kaeris translate Resources/Strings.resx --langs de,ja --verify
Запитання
Чи торкаються іконки та інші типізовані ресурси?
Ні. Записи з атрибутом типу або mimetype зберігаються без змін.
Чи зберігаються елементи ?
Ні: перекладений файл записується без них. Ваш вихідний файл зберігає їх.
Це безкоштовно?
Так, без облікового запису: 10 000 символів на файл і до 8 мов за один запуск. Безкоштовний API-ключ збільшує ліміт файлу до 50 000 символів. Довічна ліцензія коштує $79 один раз, за вашим власним ключем OpenRouter; місячні плани починаються від $19. Ціни
Чи можу я запускати його з терміналу або в CI?
Так. pip install kaeris, потім kaeris translate Resources/Strings.resx --langs de,ja. GitHub Action виконує те саме перекладення в pull request. Документація CLI · GitHub Action
Продовжуйте
Довідник CLI · Довідник перевірки · Переклад у браузері · Безкоштовна перевірка · Конвертація форматів · Псевдолокалізація
Інші формати: JSON · YAML · .po · ARB · XLIFF · .strings · .xcstrings · .properties · CSV · Markdown · Fluent · Android XML