Chromeの翻訳機能で発生するロケールエラーを上流ライブラリの更新で修正

shoelace-style/webawesome

@shoelace-style/localize を 3.2.1 から 3.2.2 へ更新し、無効な言語コードが渡された際にコンソールへ例外が出力される問題を解消しました。

背景

Chromeの組み込み翻訳機能を使用している環境で、特定の操作手順でコンポーネントが RangeError を繰り返しスローする問題が報告されていました(#2322)。

具体的な再現手順は以下のとおりです:

  1. 非英語環境(例:ノルウェー語)でページを開く
  2. Chrome Translate で英語に翻訳する
  3. 元の言語(検出言語)に戻す
  4. コンポーネントの更新時に以下のエラーが繰り返し発生する
Uncaught (in promise) RangeError: Incorrect locale information provided
    at new Locale (<anonymous>)
    at LocalizeController2.getTranslationData (chunk.HPOJN4W7.js:63:20)
    at LocalizeController2.term (chunk.HPOJN4W7.js:80:41)
    at WaSpinner.render (chunk.V5OSAXVV.js:30:36)

Chromeの翻訳機能が言語を切り替える際に Intl.Locale コンストラクタが受け付けない形式の言語コードを渡すことがあり、LocalizeControllergetTranslationData 内で new Locale() が例外を投げていました。

技術的な変更

修正の実体は @shoelace-style/localize の上流リポジトリにコミット d888d8d として取り込まれており、本PRはそのバージョン更新を反映するものです。

packages/webawesome/package.json の依存バージョンを更新しています:

変更前:

"@shoelace-style/localize": "^3.2.1"

変更後:

"@shoelace-style/localize": "^3.2.2"

package-lock.json では解決済みバージョンが 3.2.1 から 3.2.2 に更新されるとともに、@konnorr/qr-creator パッケージのエントリが削除されています。これは依存関係ツリーの整理によるものであり、機能的な変更ではありません。

設計判断

修正は webawesome 側に手を加えず、上流ライブラリへの委譲で解決する方針が採られました。

Intl.Locale への無効な言語コードの渡し方に対するガード処理は @shoelace-style/localize ライブラリが担うべき責務であり、その修正を上流に取り込んでバージョンを上げるだけで問題が解消されています。webawesome 側でのワークアラウンドを追加することなく、責務の境界を維持した判断といえます。

まとめ

Chromeの翻訳機能に起因する RangeError は、上流ライブラリである @shoelace-style/localize 3.2.2 への更新により根本解決されました。ユーザー向けの動作変更はなく、特定の操作フローでコンソールに出力されていたエラーが解消されます。

記事メタデータ

Generated by:
Claude Sonnet 4.6 for DiffDaily
LLM Trace:
95c8b791

この記事はAIによって自動生成されています。内容の正確性については、必ずソースコードやPRを確認してください。

品質レビュー結果

Review Status:
承認済み
Review Count:
1回
Reviewed by:
Gemini 2.5 Pro for DiffDaily

Review Criteria:

記事構成 ✓ PASS

Title, Context, Technical Detailの存在と明確さ

リード文(総論)→背景・技術詳細(各論)→まとめ(結論)の3部構成が明確に適用されています。任意項目である「設計判断」も含まれており、記事の深みを増しています。

カスタムMarkdown構文 ✓ PASS

シンタックスハイライト・GitHubリンク記法の正確性

ファイル名付きシンタックスハイライト(```json:ファイルパス)、GitHubのIssue/PR/コミットへのリンク記法がすべて正しく使用されています。

対象読者への適合性 ✓ PASS

エンジニア向けの適切な技術レベルと表現

RangeError、Intl.Locale、依存関係の更新といったトピックは、専門知識を持つエンジニアを対象としており、過度な説明がなく適切です。

パラグラフ・ライティング ✓ PASS

トピックセンテンス・1段落1トピック・段落長

各セクションが総論→各論の構成になっており、各段落はトピックセンテンスで始まるなど、パラグラフ・ライティングの原則が守られています。可読性が非常に高いです。

Diff内容との照合 ✓ PASS

コードブロックとDiff内容の一致

package.jsonのバージョン変更の引用がDiffと完全に一致しています。また、package-lock.jsonの変更(@konnorr/qr-creatorの削除)に関する説明も正確です。

技術用語の正確性 ✓ PASS

技術用語の正確な使用

RangeError、Intl.Locale、@shoelace-style/localizeなど、関連する技術用語が正確かつ文脈に即して使用されています。

説明の技術的正確性 ✓ PASS

技術的主張の正確性と論理性

Chrome翻訳機能→不正な言語コード→Intl.Localeでの例外発生というエラーの因果関係が、PR情報や上流コミットの内容と整合しており、技術的に正確です。

事実の突合 ✓ PASS

PR情報による主張の裏付け(ハルシネーション検出)

記事内のすべての主張(バージョンアップ、原因、修正内容、関連Issue)が、PR Description、Diff、関連Issue、上流コミットで裏付けられており、ハルシネーションは検出されませんでした。

数値・固有名詞の確認 ✓ PASS

PR番号・コミットID・バージョン等の正確性

PR番号(#2325)、Issue番号(#2322)、コミットID(d888d8d)、バージョン番号(3.2.1, 3.2.2)など、すべての数値と固有名詞が正確です。

タイトル・説明との一致 ✓ PASS

記事タイトル・説明とPR内容の一致

記事タイトルは、PRの「Update localize」という簡潔なタイトルを、原因と解決策を含んだより具体的で分かりやすいものに昇華させており、内容と完全に一致しています。

外部知識の正確性 ✓ PASS

PRに記載のない外部知識(LTS、サポート状況など)の不使用

PRで言及されていない外部知識(LTS、EOLなど)の持ち込みはなく、すべての記述が提供された情報源に基づいています。

時間表現の正確性 ✓ PASS

時間表現がPR情報と一致しているか

「問題が報告されていました」「問題を解消しました」など、過去の事象として時間表現が正確に使われており、歪曲はありません。