初めてDiscourseにログインする「新規」ユーザーの場合、ユーザーがサイトに初めてログインする際にペイロードでlocaleパラメータが設定されていれば機能するはずです。例えば、あなたがリンクしたnpmドキュメントを使用すると、次のようになります。
var userparams = {
// 必須、それ以外の場合は例外が発生します
"nonce": nonce,
"external_id": "some user id here",
"email": "some user email",
// オプション
"username": "some username",
"name": "some real name",
"locale": "es"
};
既にDiscourseにアカウントを持っている「既存」ユーザーの場合、userparamsにlocale_force_updateパラメータを追加し、それをtrueに設定する必要があります。あなたのケースでは、新規ユーザーを作成する場合とユーザーを更新する場合の両方でlocale_force_updateパラメータを含めることができると思います。
var userparams = {
// 必須、それ以外の場合は例外が発生します
"nonce": nonce,
"external_id": "some user id here",
"email": "some user email",
// オプション
"username": "some username",
"name": "some real name",
"locale": "es",
"locale_force_update": true
};
残念ながら、DiscourseConnectペイロードを介してロケールやその他の属性を「更新」するには、ユーザーはDiscourseからログアウトし、再度ログインする必要があります。これは、ユーザーがすぐに更新されたロケールを取得できない可能性が高いことを意味します。これには回避策がありますが、discourse-sso npmパッケージでは処理されていないと思います。Discourseにユーザーをログアウトして再度ログインさせることなくDiscourseConnect経由でユーザーを更新するには、sync_ssoルートに呼び出しを行う必要があります。詳細はこちらをご覧ください: https://meta.discourse.org/t/sync-discourseconnect-user-data-with-the-sync-sso-route/84398。
新規ユーザーのロケール設定で問題が発生している場合、またはロケールパラメータを追加した後にログアウトして再度ログインしたユーザーで問題が発生している場合は、verbose discourse connect logging Discourseサイト設定を有効にしてみてください。これにより、サイトの/logsページ(管理者 / ログ / エラーログで見つけられます)からDiscourseに送信されているパラメータを確認できるようになります。