昨日、セルフホストのDiscourseサーバーでAI翻訳を有効にしました。全体としては順調……といった感じです。
翻訳進捗グラフが更新されないか、正確ではありません。現在表示されているのは以下の通りです:
これによると、2026年2月23日以降のすべての投稿が99%翻訳済みと表示されています。
これは正確ではありません。この期間には約3,000件の投稿があります。翻訳ログによると、現在処理されているのは約6日前の投稿です。
そこで質問ですが、以下の点をご存知の方はいらっしゃいますか:
よろしくお願いします。
Falco
(Falco)
2
大規模なサイトではタイムアウトが発生していたため、このページをキャッシュする必要がありました。
翻訳には主に2つのステップがあります。
- 投稿の元の言語を検出する
- それ以外のすべての言語に翻訳する
初期段階では、サイトは主にステップ1(言語検出)に費やされます。当初は翻訳進捗ページでこの状況を表示していましたが、フィードバックで「情報が多すぎる」と指摘されたため、現在は表示を削除しています。
とはいえ、これは重要なご指摘です。進捗ページのキャッシュと、言語検出に関する情報の欠如により、プロセスの初期段階では体験が非常に悪い状態になっています。
最後に、バックフィル(過去データの一括処理)の速度は非常に慎重に設定しています。予算に応じて、この値を引き上げることを検討してください。
よりシンプルなレポート方式を検討することをお勧めします。
私の理解では、翻訳プロセスは2つの段階で実行されます:
- 翻訳対象となるトピックデータを翻訳する。
- 翻訳対象となる投稿データを翻訳する。
管理およびレポートの観点からは、現在処理中のものよりも、対象作業全体に対する進捗状況に関心があります。設定された翻訳対象条件に基づいたレポートを見ていただければ幸いです。
例えば:
ステータス
バックフィル設定は、2026年2月23日以降に作成されたすべてのコンテンツを翻訳するように構成されています。
| 領域 |
合計 |
対象 |
翻訳済み |
完了率 |
| トピック |
25,000 |
540 |
450 |
83% |
| 投稿 |
400,000 |
3,700 |
800 |
22% |
翻訳失敗
| 投稿ID |
理由 |
| 34543 |
xxxx行に不正な文字が含まれています |
現在のグラフは運用アクティビティを示しているように見えますが、確かに有用です。しかし、私が本当に把握したいのは、対象作業のどれくらいが完了したかという点です。
個人的には、言語別の完了率にはあまり関心はありません。トピックや投稿は翻訳済みか、そうでないかのいずれかです。私にとっての重要な質問は、設定されたバックログのどれくらいが正常に処理されたかということです。
このアプローチは、すべての言語組み合わせの進捗を追跡するのではなく集計値に焦点を当てるため、データベースにも優しいと思われます。
言語別のレポートが依然として価値がある場合は、フィルターを通じて表示できるようにすればよいかもしれません。管理者が言語を選択し、その言語専用の同じ進捗テーブルを表示できるようにします。
いくつかの提案です。
p.s.
現在のキャッシュ期間は何ですか?
上記のレポートを作成するために、データエクスプローラーのSQLを調整しています。私はSQLのエキスパートではありませんが、以下のクエリは正常に動作しています。
翻訳ステータスレポート
| 領域 |
翻訳対象 |
翻訳済み |
未翻訳 |
| トピック |
540 |
450 |
90 |
| 投稿 |
3,700 |
800 |
2900 |
トピック:
-- 設定:
-- 翻訳設定を更新してください
-- バックフィルの日数 - Interval 'xxx'
-- 除外するカテゴリ - Category_id NOT IN ()
-- トピックタイプ - regular または private_message
--
-- 翻訳ステータス:
-- 翻訳対象の総トピック数: 'and topics.locale' の両方のwhere条件をコメントアウト
-- 未翻訳のトピック: - topics.locale is null のみをアンコメント
-- 翻訳済みのトピック: - topics.local = 'en' のみをアンコメント
SELECT count(distinct topics.id)
FROM topics
JOIN posts ON topics.id = posts.topic_id
WHERE posts.created_at >= NOW() - INTERVAL '100 days'
AND posts.user_id > 0
AND topics.category_id NOT IN (22,3)
AND topics.archetype = 'regular'
-- AND topics.locale = 'en'
-- AND topics.locale is null
投稿:
-- 設定:
-- 翻訳設定を更新してください
-- バックフィルの日数 - Interval 'xxx'
-- 除外するカテゴリ - Category_id NOT IN ()
-- トピックタイプ - regular または private_message
--
-- 翻訳ステータス:
-- 翻訳対象の総投稿数: 'and posts.locale' の両方のwhere条件をコメントアウト
-- 未翻訳の投稿: - posts.locale is null のみをアンコメント
-- 翻訳済みの投稿: - posts.locale = 'en' のみをアンコメント
SELECT count(*)
FROM posts
JOIN topics ON topics.id = posts.topic_id
WHERE posts.created_at >= NOW() - INTERVAL '100 days'
AND posts.user_id > 0
AND topics.category_id NOT IN (22,3)
AND topics.archetype = 'regular'
-- AND posts.locale = 'en'
-- AND posts.locale is null
nat
(Natalie T)
5
フィードバックをありがとうございます、@LotusJeff さん
いくつかのポイントをここにメモしておき、近いうちに改善します™(おそらく7月頃)。
DEに関するクエリについて、明日、より正確なものを提示させてください。
nat
(Natalie T)
9
「明日」がちょっと長引いてしまいました…
データエクスプローラーのクエリで返信しようかとも考えましたが、翻訳進捗グラフは改善の余地があり、今がちょうど良いタイミングだと思い直しました。
以下に、私たちが行った作業の簡単な更新情報をお伝えします。
ローディング 
見た目の改善ですが、常に嬉しいものです。
コンテンツタイプごとのキャッシュされた時間と進捗
投稿データの影響により、このページの読み込み時間は非常に長くなります。すでにキャッシュ(2時間)を導入しており、その旨も表示します。現在、投稿やトピック以外にも処理対象が増えたため、それらの進捗状況も表示しています。
未完成時のイメージは以下の通りです
コンテンツタイプごとのロケール別内訳
このレベルの詳細をクエリで取得するのは実際には時間がかかるため、かつ常に表示する必要のない詳細情報であるため、管理者が明示的に表示を希望した場合のみ表示されます。
これらの機能はすでに利用可能ですので、サイトを更新すれば準備完了です。
ここ数日、旅行中でいましたが、今夜アップデートできました。
これははるかに有用で、直感的に理解しやすいです。翻訳対象の概要がわかりやすく表示されており、トピックや投稿ごとに詳細を掘り下げられる点も役立ちます。
唯一違和感があるのは、トピック/投稿内の「対象外」ヘルプアイコンの内容です。「この言語のコンテンツは除外済み」と表示されていますが、これは翻訳待ちの総数を表示すべきです。小さな修正ですが。
素晴らしい仕事です。翻訳ステータスページを改善していただき、ありがとうございます。
さて、トピック/投稿の翻訳日付の不一致を解消するため、過去の日数ではなく特定の日付を指定できる機能があれば良いのですが。そうすれば、投稿とトピックの日付を同期させるために、翻訳設定を手動で調整する必要がなくなります。
nat
(Natalie T)
11
[quote=“LotusJeff, post:10, topic:405915”]
さて、翻訳に日付固有の日付を設定できるようになればいいのですが
[/quote]\n
その通りです。その件についても意見を述べます。