やりたかったこと
- スラッシュコマンドにて、表示言語を導入サーバーに適したものに自動設定したい
- 受信したパラメタで判定に使える値を探したい
受信パラメタ調査
- Interactions(Developer Portal資料) の中に記載があるInteraction Object 内の"guild_locale"と"locale"が目的のものに近そう
locale
Selected language of the invoking user
guild_locale
Guild's preferred locale, if invoked in a guild
→ preferred_locale
the preferred locale of a Community guild; used in server discovery and notices from Discord, and sent in interactions; defaults to "en-US"
設定箇所
locale 「ユーザー設定」→「言語」
ここは自分で設定した記憶があるので迷わなかった。
guild_locale 「サーバー設定」→「コミュニティ 概要」→「サーバーの第一言語」
以下については普段「フレンドサーバー」でテストしていたので設定が見つからず困った。
後述するが「フレンドサーバー」を「コミュニティーサーバー」に変更して変更できた。
「フレンドサーバー」と「コミュニティーサーバー」
先述したが、"guild_locale"は「コミュニティーサーバー」でのみ設定可能。
フレンドサーバーでは常にでファオルトの"en-US"固定となる模様。
結局どうするか
- フレンドサーバーに導入してもらうこともあるだろうから、"guild_locale"だけで判定はできない。
- localeはサーバー管理者だけが実行するサーバー、初回サーバー管理者が起動するサーバーでは有効か。
- 初回起動時に"locale"で判定し、後からサーバー管理者が設定変更できるような仕様にすることにした。
注意とお願い
- ここら辺仕様が今後変わりそうな気がします。2024.04.30現在の情報である点ご注意ください
- そもそも間違っていたり、もっと良い方法があればご指摘いただけるとありがたいです🙇
追記1(2024.04.30 22:00)
- 言語=利用場所(タイムゾーン)ではない
- 例)en-US を米国としても東部と西部では差が激しい
- 場合によっては政治的な配慮が必要なケースが生じる可能性
- あくまで目安として設定し、まよったらデフォルトのen-USにしておく