要約:開発者Hrusaが多言語検索の問題を修正した技術記事。これまでアクセント付き文字や大文字の非英語文字で検索が正しく動かなかった問題を解決。Unicode文字の独自マッピングを作成し、日本語のひらがな/カタカナの同一視、ギリシャ語の小文字シグマ対応なども実装。Modポータルの検索改善、Crowdinでの翻訳協力の呼びかけも。


以下は2024年11月8日に公開されたFriday Facts #436 – Lost in Translation(著者:Hrusa)の日本語訳です。


こんにちは、Space Ageのバグ報告に引き続き取り組んでいます。

言語にまつわるトラブル

2.0アップデートで発生したIMEキーボード(アジア言語入力)のバグを修正している最中に、いろいろな言語のローカライズが気になり始めて調べてみました。母国語はチェコ語ですが、開発はすべて英語で行っているので、実は他の言語モードでゲームを動かすことがほとんどありません。

チェコ語でクラフトメニューをいじってみると、ユーザー体験が期待ほどスムーズでないことがすぐにわかりました。

英語以外の大文字を含む検索がうまく動かないのです。たとえば「cerpadlo」(ポンプ)で検索すると「Ropne cerpadlo」(ポンプジャック)と「Pobrezni cerpadlo」(オフショアポンプ)はヒットしますが、「Cerpadlo」(ポンプ)自体は大文字Cが小文字cにマッチしないため表示されません。プレイヤーは問題のある文字を避けるために「erpadlo」のように途中から入力する習慣をすでに身につけていました。

多言語検索の問題
修正前:大文字のアクセント付き文字が検索にマッチしない

非英語検索がついにサポート!

何年もの間ひどいユーザー体験が放置されていたことは明らかで、できるだけ早く対処することにしました。

問題の根本は、これまで標準関数で各「コード文字」を小文字に変換して検索していたことでした。しかしUnicode表現では、アクセント付き文字やラテンアルファベット外の文字は複数の「コード文字」で構成されるため、認識も変換もできなかったのです。

さらにUnicode文字テーブル自体がかなり混沌としています。年月とともに拡張されてきたため、多くの文字があちこちに散らばっています。既製のソリューションは通常、Factorioではレンダリングすらできない文字体系(ヒエログリフ、シュメール楔形文字、絵文字…)のエッジケースにまで対応するため肥大化しています。

そこで、公式にサポートしている言語に焦点を当てた独自のカスタムマッピングを作成しました。カスタムソリューションなので、日常のタイピング方法に合わせた検索ヒットの調整も可能になりました:

  • アクセント付き文字とアクセントなし文字を同一視:「železný plát」=「zelezny plat」=「ZELEZNY PLAT」
  • 日本語のひらがなとカタカナを検索で同一視:「べると」=「ベルト」
  • ギリシャ語の2種類の小文字シグマが両方とも大文字シグマにマッチ
修正後の検索
修正後:多言語検索が正しく機能するように

新しいローカライズ検索の改善は、次の2.0.16 experimentalリリースで公開されます。

ここでお願いがあります。サポート対象言語で足りない検索機能があれば、フォーラムやこの記事への返信で教えてください。翻訳者の方々と事前に相談はしましたが、すべてのネイティブスピーカーに確認できたわけではありません。見た目が似たアクセントが誤って省略されている可能性もあります。

Modポータルの検索改善

ゲーム内検索に加えて、Modポータルの検索も今週改善されました。これまでアジア言語で適切にマッチしないことがありましたが、検索プロバイダーを新しいバージョンに更新し、より正確に動作するようになりました。

翻訳への貢献のお願い

2.0とSpace Ageで大量の新しいアイテム、説明文、ヒントなどがゲームに追加されました。これらすべてを各言語に翻訳する必要があり、コミュニティの皆さんの貢献に頼っています。

ゲームのローカライズに興味のある方は、Crowdinプロジェクトにご参加ください。すでにお手伝いいただいている方には、心から感謝しています。Crowdin関連の問題やベースゲームのロケール問題が報告されていることは把握しており、すべてに対応していく予定です。

📖 原文を読む(英語)