SSOユーザーの言語設定方法

初めて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にアカウントを持っている「既存」ユーザーの場合、userparamslocale_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に送信されているパラメータを確認できるようになります。

「いいね!」 2