Browse: Home / Snippets /

Force Site or User Profile locale to be used on Stripe Checkout

Contents


Snippet #

Important: All snippets are provided as-is without support or guarantees. These snippets are provided as guidelines for advanced users looking to customize LearnDash. For any additional help or support with these snippets, we recommend reaching out to a LearnDash Expert.

/* Forces site or user profile locale to be used on Stripe Checkout Page 
 * instead of Stripe automatically setting the locale based on users browser locale.
 * 
 * Automatically remaps the WP locales to valid Stripe locales
 */
add_filter( 'learndash_stripe_session_args', function( $session_args ) {
    $wp_locale = determine_locale(); // e.g. en_GB
    
    // Remap $wp_locale to valid Stripe locale
    $map = [
	// English
	'en'        => 'en',
	'en_US'     => 'en-US',
	'en_GB'     => 'en-GB',
	'en_AU'     => 'en',
	'en_CA'     => 'en',
	'en_NZ'     => 'en',

	// French
	'fr'        => 'fr',
	'fr_FR'     => 'fr',
	'fr_CA'     => 'fr-CA',
	'fr_BE'     => 'fr',
	'fr_CH'     => 'fr',

	// German
	'de'        => 'de',
	'de_DE'     => 'de',
	'de_AT'     => 'de',
	'de_CH'     => 'de',

	// Spanish
	'es'        => 'es',
	'es_ES'     => 'es',
	'es_MX'     => 'es-419',
	'es_AR'     => 'es-419',
	'es_CL'     => 'es-419',
	'es_CO'     => 'es-419',
	'es_PE'     => 'es-419',
	'es_VE'     => 'es-419',

	// Portuguese
	'pt'        => 'pt',
	'pt_PT'     => 'pt',
	'pt_BR'     => 'pt-BR',

	// Italian
	'it'        => 'it',
	'it_IT'     => 'it',

	// Dutch
	'nl'        => 'nl',
	'nl_NL'     => 'nl',
	'nl_BE'     => 'nl',

	// Nordic
	'da'        => 'da',
	'da_DK'     => 'da',
	'sv'        => 'sv',
	'sv_SE'     => 'sv',
	'nb_NO'     => 'nb',
	'no'        => 'nb',
	'fi'        => 'fi',
	'fi_FI'     => 'fi',

	// Eastern Europe
	'pl'        => 'pl',
	'pl_PL'     => 'pl',
	'cs'        => 'cs',
	'cs_CZ'     => 'cs',
	'sk'        => 'sk',
	'sk_SK'     => 'sk',
	'sl'        => 'sl',
	'sl_SI'     => 'sl',
	'hu'        => 'hu',
	'hu_HU'     => 'hu',
	'ro'        => 'ro',
	'ro_RO'     => 'ro',
	'bg'        => 'bg',
	'bg_BG'     => 'bg',
	'hr'        => 'hr',
	'hr_HR'     => 'hr',
	'lt'        => 'lt',
	'lt_LT'     => 'lt',
	'lv'        => 'lv',
	'lv_LV'     => 'lv',
	'et'        => 'et',
	'et_EE'     => 'et',
	'ru'        => 'ru',
	'ru_RU'     => 'ru',
	'el'        => 'el',
	'el_GR'     => 'el',
	'tr'        => 'tr',
	'tr_TR'     => 'tr',

	// Asian languages
	'ja'        => 'ja',
	'ja_JP'     => 'ja',
	'ko'        => 'ko',
	'ko_KR'     => 'ko',
	'zh'        => 'zh',
	'zh_CN'     => 'zh',
	'zh_HK'     => 'zh-HK',
	'zh_TW'     => 'zh-TW',

	// Southeast Asia
	'id'        => 'id',
	'id_ID'     => 'id',
	'th'        => 'th',
	'th_TH'     => 'th',
	'vi'        => 'vi',
	'vi_VN'     => 'vi',
	'ms'        => 'ms',
	'ms_MY'     => 'ms',
	'fil'       => 'fil',
	'fil_PH'    => 'fil',

	// Maltese
	'mt'        => 'mt',
	'mt_MT'     => 'mt',
    ];

    $session_args['locale'] = $map[$wp_locale] ?? 'auto';

    return $session_args;
}, 99 );