Переводы тегов, созданные ИИ, работают не идеально

При просмотре переводов тегов на немецкий язык я заметил ряд проблем, которые, похоже, связаны с тем, что ИИ не обладает контекстом — он воспринимает теги как изолированные слова, а не как ссылки на конкретные функции Discourse, плагины или компоненты.

Примечание: В немецком языке существительные всегда пишутся с большой буквы, но теги на meta-форуме пишутся со строчной. Поэтому в переводах в этом посте используется непоследовательная капитализация — я невольно возвращался к правильному немецкому написанию по привычке.

Сначала о самом интересном

Прежде чем переходить к практическим проблемам, некоторые переводы просто забавны:

  • composer → «Komponist» — это человек, пишущий музыку
  • auto-bump → «automatische-erhöhung» — «автоматическое повышение»
  • fully-theme → «vollständig-thematisiert» — «полностью рассмотрено»
  • raspberry-pi → «Himbeere-pi» (raspberry здесь как фрукт)
  • post-voting → «nach-der-Abstimmung» — «после голосования» (post воспринято как латинский префикс, а не как сообщение форума)
  • tablet → «Tablette» — «таблетка» (лекарство, а не устройство)

Одинаковые переводы для разных тегов

Это самая серьезная проблема на практике. Когда два тега получают одинаковый перевод, они теряют способность различать темы между собой.

  • year-in-review & yearly-review → «Jahresrückblick» — В настоящее время название плагина, похоже, не переводится (я вижу английское название в боковой панели администратора и в списке установленных плагинов), поэтому, вероятно, вы будете использовать английский термин для обозначения названия плагина. Хотя я надеюсь, что однажды все плагины получат переведенные названия, я думаю, что мне стоит добавить «Metas» к одному из тегов, группирующих темы годового обзора здесь, чтобы отделить их, чтобы получилось «Metas-Jahresrückblick» (годовой обзор от meta)
  • surveys & polls → «Umfragen» — Я думаю, что переводы обоих плагинов тоже одинаковы, и до сих пор никто этого не заметил. Мне нужно подумать о хорошем решении для этого случая, потому что это также может легко конфликтовать с «voting» :exploding_head:
  • docs & documentation → «Dokumentation» — Как и yearly-review, docs не были переведены на немецкий, поэтому я не стал бы переводить этот тег (В этом случае перевод в будущем кажется крайне маловероятным)
  • how-to & tutorial → «Anleitung» — Этот случай уже исправлен. Я нашел этот перевод https://diataxis.fr/ и предложил термин[1], используемый там)

Собственные имена и названия продуктов, которые не следует переводить

Некоторые теги относятся к конкретным инструментам, фреймворкам или продуктам. Их перевод делает функцию неузнаваемой.

  • raspberry-pi → «Himbeere-pi» («raspberry» здесь как фрукт)
  • mermaid → «Meerjungfrau» («mermaid» здесь как мифологическое существо, а не инструмент для создания диаграмм)
  • ember → «Glut» (тлеющие угли от огня)
  • vanilla → «Vanille» (вкус)
  • onebox → «einzige-box» — «единственная коробка»
  • intercom → «Gegensprechanlage» (интерком здесь как домофон — хотя intercom-widget был переведен корректно)
  • passkey → «Passwort» — «пароль» (passkey — это специально не пароль)
  • perspective-api → «Perspektiven-api»
  • backups → «Sicherungen»
  • design-experiment → «Experimententwurf» — может быть «design-experiment», но также и «draft experiment», я думаю о втором варианте, потому что для первого я бы оставил «design», а разговор о черновиках довольно распространен в Discourse.

Переводы слова “Discourse”

Большинство тегов, относящихся к “Discourse”, были переведены так, что они больше не включают название программного обеспечения. Одно исключение — discourse-hub .

“Theme” последовательно ошибочно переведено как “Thema” (тема обсуждения)

Это систематическая проблема, затрагивающая все теги, связанные с темами оформления. В немецком языке и “theme” (тема оформления), и “topic” (тема обсуждения) переводятся как Thema, но в контексте Discourse это очень разные вещи. Из-за этого теги тем оформления читаются так, будто речь идет о конкретных темах обсуждения.

  • theme-welcome → «Willkommens-Thema» (читается как «приветственная тема», то есть закрепленная тема приветствия по умолчанию)
  • theme-creator → «Themenersteller» — «создатель темы»
  • horizon-theme → «Horizont-Thema»
  • meta-theme-feedback → «Meta-Themen-Feedback»
  • foundation-theme → та же закономерность
  • fully-theme → «vollständig-thematisiert» — «полностью рассмотрено»

Это затрагивает все теги в группе Official Themes.

Переводы, в которых отсутствовал контекст

  • composer → «Komponist» — это человек, пишущий музыку, в отличие от поля ввода, которое мы обычно называем “Editor” на немецком.
  • tablet → «Tablette» — «таблетка» или «планшет».
  • copy-post → «kopierbeitrag» — «плата за копирование» (Проблема в сочетании слов. “Beitrag” для post — это правильно, но поскольку copy не был переведен как глагол, это читается так, будто Beitrag используется в значении “плата” здесь)

Существительное или глагол

Некоторые функции были переведены как глаголы вместо существительных

  • chat → «plaudern» — «болтать»
  • search → «suchen» — «искать»

“post” воспринято как латинский префикс, а не как сообщение форума

  • post-voting → «nach-der-Abstimmung» — «после голосования»
  • post-badges → «nach-Abzeichen» — «после-значков»

Результаты не очень четких английских тегов

  • hosted-support → «gehosteter-support» (Это читается как поддержка, которая размещена, а не поддержка для хостинговых клиентов)

Аббревиатура

  • pm-dropdown (то же самое на немецком) без контекста m (message) не было заменено на n (Nachricht)

Переводы, не соответствующие терминологии самого интерфейса Discourse

Эти переводы технически правильны на немецком, но сам интерфейс Discourse использует другие термины. Это делает теги труднее находить интуитивно, особенно для пользователей, которые ориентируются по языку интерфейса.

  • impersonate → «nachahmen» — «имитировать» (но в интерфейсе используется Nutzersicht или Nutzerrolle)
  • staged-users → «Staging-Benutzer» (но в интерфейсе написано vorbereitete Benutzer)
  • advertising → «Werbung» (но в интерфейсе используется Anzeigen)
  • assign → «zuweisen» (но в переводе плагина используется zuordnen)
  • hot-topics → «Top-Themen» (это было переведено как “top topics”, что на самом деле является другим списком в Discourse)
  • read-only → «nur lesbar»
  • bootstrap-mode → «Bootstrap-Modus» (но изначально переводчики выбрали Starthilfemodus)
  • post-notices → «Nachrichten» — “сообщения/новости” (может вводить в заблуждение, потому что сообщения — это другая функция, “official notice” использует Mitteilung в интерфейсе)
  • about-page → «über-Seite» (Это буквальный перевод. Но обычно немецкий перевод звучит как “страница о нас”. Über означает не только “о”, но и “над”.)
  • auto-bump → «automatische-erhöhung» — «автоматическое повышение»
  • tags → «Etiketten» (но tag-groups и большинство тегов, содержащих tag, используют “tag”, термин, используемый на Crowdin — Schlagwort)

Обрезанные переводы

Это другой вид проблемы — не ошибка перевода, а следствие того, что немецкие составные существительные значительно длиннее своих английских эквивалентов, в сочетании с ограничением на количество символов в теге.

  • content-security-policy → “inhalts-sicherheitsrichtl” (обрезано, должно быть inhalts-sicherheitsrichtlinie)
  • ai-custom-prompt → “ai-benutzerdefinierte-auf” (обрезано посередине слова, должно быть ai-benutzerdefinierte-aufforderung)
  • custom-category-boxes → “benutzerdefinierte-katego” (обрезано посередине слова, должно быть benutzerdefinierte-kategorie-boxen, в этом случае box полностью отсутствует в переводе)

Теги, содержащие “custom”, легко становятся слишком длинными, потому что “benutzerdefiniert” — довольно длинное слово.

more examples
  • pause-notifications → “benachrichtigungen-anhalt” (en)
  • theme-site-settings → “thema-website-einstellung” (en)
  • staff-action-log → “mitarbeiter-aktionsprotok” (le)
  • lazy-load-categories → “kategorien-verzögert-lade” (n)
  • unsupported-install → “nicht-unterstützte-instal” (lation)
  • categories-navbar → “kategorien-navigationslei” (ste)
  • remove-name-suppression → “namenunterdrückung-entfer” (nen)
  • right-sidebar-blocks → “rechte-seitenleiste-blöck” (e)
  • user-field-prompt → “benutzerfeld-eingabeauffo” (rderung)
  • top-contributors-sidebar → “seitenleiste-der-top-beit” (ragenden)
  • hide-users-column → “benutzer-spalte-ausblende” (n)
  • topic-footer-buttons → “thema-fußzeilen-schaltflä” (chen)
  • scrollable-post-content → “scrollbarer-beitrag-inhal” (t)
  • custom-inline-codeblocks → “benutzerdefinierte-inline” (-codeblöcke)
  • hide-muted-categories → “stummgeschaltete-kategori” (en-verstecken)
  • custom-header-icons → “benutzerdefinierte-kopfze” (ilen-symbole)
  • custom-header-links → “benutzerdefinierte-kopfze” (lein-links) (ПРИМЕЧАНИЕ: Это то же самое, что и выше, потому что они были обрезаны)
  • new-topic-header-button → “neuer-themen-header-butto” (n) (Хотя обычно мы используем “Schaltfläche” для button)
  • sidebar-theme-toggle → “seitenleisten-themenumsch” (alter) (конечно, этот тоже должен использовать “theme” вместо “topic”, так что “n” не нужна)
  • custom-profile-link → “benutzerdefiniertes-profi” (l-link), грамматика кажется такой, будто “link” был потерян довольно рано, потому что custom не согласуется с link, а с profile. Я думаю, что должно быть “benutzerdefinierter-profil-link”
  • easy-responsive-footer → “einfacher-responsiver-fuß” Похоже на случай выше, easy и responsive, похоже, относятся к foot, где тег был обрезан, а не к footer. Должно быть “einfache-responsive-fußzeile”

Эти примеры показывают, что процесс перевода нуждается в большем контексте — Ideally знать, к какому плагину или функции относится тег, и иметь доступ к существующим переводам интерфейса Discourse в качестве справочника. Буду рад услышать, замечали ли другие подобные закономерности в других языках.


@nat (по личной просьбе)


  1. Lernunterlagen ↩︎

8 лайков

Спасибо @Moin, я разберусь с этим и улучшу наши промпты :smiling_face:

Также LOL

Спасибо за смех :hugs:

5 лайков

@нат, а что, если предоставить агенту доступ к инструменту чтения, чтобы он мог самостоятельно собирать контекст?

Для постов это было бы слишком затратно, но для разовых задач, таких как теги и категории, это обошлось бы недорого и повысило бы качество работы всех моделей.

4 лайка

Хм, это хорошая идея, @falco.

Ещё один вариант, который я рассматривал, — передавать описание тега в качестве дополнительного контекста при переводе названия тега. Возможно, так будет более предсказуемо. Что вы думаете?

4 лайка

Доступ к глоссарию в Crowdin мог бы быть очень полезен для бота, выполняющего перевод (не для всех сайтов, но особенно для Meta). Если там указано, что мы переводим «composer» как «Редактор», и ИИ это знает, он мог бы использовать это в тегах, а также в заголовках тем и сообщениях.

Я однажды исправил «composer» в Introducing our new composer, making writing on Discourse easier than ever, что привело к моему отзыву о редактировании переводов здесь: Feedback on the composer when translating a post to German. Однако тема была отредактирована после этого, и, похоже, предыдущий перевод не используется как контекст, поэтому в сообщении снова указано «composer». (Автор музыки обычно не упоминается в сообщениях; встречаются только короткие тексты, такие как заголовки тем и теги.)

На Meta описание часто не добавляет значимого контекста. Например, все описания для компонентов тем просто содержат ссылку на тему компонента, а не краткое описание из начала темы.

Отличная идея, сделаем оба варианта!

Идея состоит в том, чтобы использовать Meta как полигон и прокси для того, с чем могут столкнуться наши клиенты в реальной жизни, и сделать функцию лучше для всех.

Достичь идеального перевода на Meta было бы очень просто: достаточно использовать самую дорогую LLM и предоставить ей доступ к таким инструментам, как доступ к исходному коду и веб-поиск.

1 лайк

Я не думаю, что какая-либо модель выберет те же переводы для Meta, что и немецкие переводчики для интерфейса Discourse. «Mitarbeiter» — это идеальный перевод для «staff». Тот факт, что некоторые переводчики много лет назад решили, что это слово не подходит для небольших хобби-форумов, где «staff» подразумевает оплачиваемых сотрудников, и поэтому выбрали «Team», — это то, что ни один ИИ не угадает, потому что это просто не правильный перевод. Именно здесь могла бы помочь глоссарий Crowdin: без него сгенерированные ИИ термины никогда не будут совпадать с тем, что администраторы видят в интерфейсе — не потому, что ИИ не умеет переводить, а потому, что он не принимает те же решения по локализации, что и человеческие переводчики. Это разница между переводом и локализацией.
То же самое касается и других терминов, таких как «bootstrap mode» или «impersonation».

Это касается не только тегов, но и всего, что локализовано здесь. Будь то руководство или тег, использование терминов, которые пользователи действительно видят в своём интерфейсе, полезнее, чем лингвистически безупречный перевод, который не совпадает с тем, что показывает программное обеспечение.

Выбрала бы, так как у неё был бы доступ к тем же самым вариантам в файлах config/locales/**/*.yml для справки.

Безусловно, и для небольших перечисляемых групп, таких как категории и теги, предоставление агенту доступа к существующим переводам, которые являются частью исходного кода, помогло бы улучшить точность ответов.

Мы не можем сделать это для постов, так как стоимость была бы слишком высока, но это вариант для небольших сайтов или клиентов с большими бюджетами на перевод.

Тогда, возможно, вам стоит отключить AI-перевод для Documentation и News and Events > Announcements :wink: Я не думаю, что можно гарантировать полезность таких переводов, особенно поскольку предложенные правки не обновляют тему, поэтому нет простого способа заметить, что тема была обновлена.

В целом, именно из-за стоимости я предложил использовать глоссарий вместо файлов со всеми переводами, так как ожидал, что в нём будут содержаться наиболее актуальные варианты один раз, без добавления каждого текста.

Это не так работает; агент может искать в коде фрагменты с совпадениями и никогда не загружает всё целиком в контекст.

Это немного похоже на то, как вылить ребёнка вместе с водой, не так ли?

Я только что проверил Calendar subscription URLs for external calendar apps на PT-BR, и перевод выглядит отличным, намного лучше, чем отсутствие перевода вообще.

Всегда будут возможности для улучшения в рабочем процессе машинного перевода без контроля, и @nat уже улучшил его сегодня благодаря вашим отзывам!

Никто не ожидает, что всё будет идеально, а Meta — это место, где мы можем раньше других использовать новые функции и показывать, что возможно в Discourse для наших пользователей и клиентов.

Привет, команда,

Как можно отключить специфические теги, генерируемые AI-переводом в Discourse?

Качество этих тегов, созданных с помощью AI-перевода, мне кажется непоследовательным, поэтому я хотел бы отключить их независимо.

Спасибо.

На данный момент AI-переводы не привязаны к типу модели: включение этой функции активирует её для тем, сообщений, категорий и тегов.

Моя рекомендация — редактировать переводы тегов напрямую в настройках тегов. Это нужно сделать один раз, и больше возвращаться к этому не придётся.

В качестве альтернативы вы также можете обновить промпт, используемый агентом «Переводчик коротких текстов».

1 лайк

Можете помочь мне найти теги, переводы которых улучшились с момента написания этой темы?

Теги, упомянутые в первом посте (и некоторые другие), должны теперь обрабатываться на мета-сайте. Спасибо за очень подробный список — это значительно облегчило задачу, и я должен был сделать это раньше :smiling_face:

Что касается передачи большего количества контекста в переводчик тегов, это всё ещё займёт некоторое время, так как в данный момент это не является приоритетной задачей.

2 лайка