字幕言語フィルター
検索時に字幕の言語を指定して検索結果をフィルターできる機能。
背景
現在の仕様では字幕取得時に youtube-transcript-plus のデフォルト言語(動画の主言語)で1言語のみ取得している。Meilisearch のドキュメントには language フィールドが filterable で存在するが、検索UIに言語選択がなく、ユーザーは言語を指定できない。
チャンネルの主言語と異なる言語の字幕で検索したいケースに対応するため、字幕取得時の言語指定と検索時の言語フィルターを実装する。
前提
- 1動画1言語: 1つの動画に対して取得・インデックスする字幕は1言語のみ(Meilisearchのドキュメント数増加を抑えるため)
- チャンネル単位の言語: チャンネル登録時にユーザーが選択した言語で字幕を取得する。同一チャンネルでも異なるユーザーが異なる言語で検索する場合は、その言語の字幕が追加取得される(将来検討)
対応言語
UIの対応言語と同じ7言語を選択肢とする。
| 言語 | 言語コード | 表示名(日本語UI) |
|---|---|---|
| 日本語 | ja | 日本語 |
| 英語 | en | 英語 |
| 中国語 | zh | 中国語 |
| 韓国語 | ko | 韓国語 |
| スペイン語 | es | スペイン語 |
| フランス語 | fr | フランス語 |
| ドイツ語 | de | ドイツ語 |
検索フィルター仕様
フィルター値
| 値 | 説明 | Meilisearch フィルター |
|---|---|---|
all(デフォルト) | 全言語を検索対象にする | フィルターなし |
ja, en, zh, ko, es, fr, de | 指定言語のみ | language = '{languageCode}' |
URL クエリパラメータ
| パラメータ | 必須 | デフォルト | 説明 | 例 |
|---|---|---|---|---|
lang | No | all | 字幕言語フィルター | lang=ja |
デフォルト値(all)の場合は URL から省略可能。
URL 例
# 日本語字幕のみで検索
/search?q=ゲーム実況&channel=UCxxxxx&lang=ja
# 英 語字幕のみで検索
/search?q=game&channel=UCxxxxx&lang=en
# 全言語(デフォルト、パラメータ省略可)
/search?q=ゲーム実況&channel=UCxxxxx
UI 仕様
検索フォーム
既存の検索フィルター群に「字幕の言語」フィルターを追加する。
- ラベル: 「字幕の言語」
- UIコンポーネント: セレクトボックス(ドロップダウン)
- すべて(デフォルト)
- 日本語
- 英語
- 中国語
- 韓国語
- スペイン語
- フランス語
- ドイツ語
- 各言語の表示名はUIの表示言語に合わせてi18nで翻訳する