Internationalisation de la connexion universelle

Localisation de la connexion universelle

L’expérience de connexion universelle est localisée dans les langues suivantes :

Langue Code
Albanais sq
Allemand de
Amharic am
Anglais en
Anglais – Canada en-CA
Arménien hy
Azerbaïdjanais az
Basque eu-ES
Bengali bn
Bosniaque bs
Bulgare bg
Catalan ca-ES
Chinois – Hong Kong zh-HK
Chinois – Simplifié zh-CN
Chinois – Traditionnel zh-TW
Coréen ko
Croate hr
Danois da
Espagnol es
Espagnol – Amérique latine es-419
Espagnol – Argentine es-AR
Espagnol –Mexique es-MX
Estonien et
Finnois fi
Français fr-FR
Français – Canada fr-CA
Galicien gl-ES
Gallois cy
Géorgien ka
Grec el
Gujrati gu
Hindi hi
Hongrois hu
Indonésien id
Islandais is
Italien it
Japonais ja
Kannada kn
Letton lv
Lituanien lt
Macédonien mk
Malais ms
Malayalam ml
Marathi mr
Mongolien mn
Monténegrin cnr
Myanmar my
Néerlandais nl
Norvégien no
Norvégien – Bokmål nb
Norvégien – Nynorsk nn
Polonais pl
Portugais – Brésil pt-BR
Portugais – Portugal pt-PT
Pendjabi pa
Roumain ro
Russe ru
Serbe sr
Slovaque sk
Slovène sl
Somali so
Swahili sw
Suédois sv
Tagalog tl
Tamazight zgh
Tamoul ta
Tchèque cs
Telugu te
Thaï th
Turc tr
Ukrainien uk
Vietnamien vi

Choix de la langue

La langue dans laquelle les pages seront affichées sera sélectionnée en fonction  :

  • des langues prises en charge par Auth0, qui sont susmentionnées.

  • La liste des langues configurées dans les paramètres du locataire, où vous pouvez sélectionner les langues que votre locataire prend en charge et en choisir une par défaut. Par défaut, la liste n’a que l’anglais sélectionné, mais vous pouvez choisir celles dont vous avez besoin.

  • La valeur du paramètre ui_locales envoyée au point de terminaison de demande d’autorisation, qui peut être utilisée pour restreindre la liste des langues pour une application ou une session. Vous pouvez fournir une liste de locales délimitée par des espaces. La première locale de la liste doit correspondre à la locale activée dans votre locataire pour se refléter dans l’interface utilisateur.

  • L’en-tête HTTP Accept-Language envoyé par le navigateur. Les pages seront affichées dans cette langue si elle est autorisée par les paramètres ci-dessus. Sinon, les pages seront affichées dans la langue par défaut.

Pour ajouter une langue qui n’est pas répertoriée ci-dessus, utilisez Management API pour créer un appel PATCH au point de terminaison des locataires avec le corps suivant, en remplacement he avec le code langue que vous souhaitez ajouter :

{
  "enabled_locales": [
    "en","he"
  ]
}

Was this helpful?

/

Une fois ajouté, spécifiez la langue dans le paramètre de requête ui_locales de la demande de connexion.

Définir les langues prises en charge par le locataire

Vous pouvez définir les langues prises en charge et celles par défaut dans la section Tenant Settings (Paramètres du locataire) dans le Dashboard.

Vous pouvez également spécifier les langues activées pour le locataire par le biais de Management API en utilisant le point de terminaison Mettre à jour les paramètres du locataire. La première langue de la liste sera la langue par défaut.


curl --request PATCH \
  --url 'https://{yourDomain}/api/v2/tenants/settings' \
  --header 'authorization: Bearer API2_ACCESS_TOKEN' \
  --header 'content-type: application/json' \
  --data '{ "enabled_locales" : [ "en", "es"]}'

Was this helpful?

/
var client = new RestClient("https://{yourDomain}/api/v2/tenants/settings");
var request = new RestRequest(Method.PATCH);
request.AddHeader("content-type", "application/json");
request.AddHeader("authorization", "Bearer API2_ACCESS_TOKEN");
request.AddParameter("application/json", "{ \"enabled_locales\" : [ \"en\", \"es\"]}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);

Was this helpful?

/
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io/ioutil"
)

func main() {

	url := "https://{yourDomain}/api/v2/tenants/settings"

	payload := strings.NewReader("{ \"enabled_locales\" : [ \"en\", \"es\"]}")

	req, _ := http.NewRequest("PATCH", url, payload)

	req.Header.Add("content-type", "application/json")
	req.Header.Add("authorization", "Bearer API2_ACCESS_TOKEN")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := ioutil.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}

Was this helpful?

/
HttpResponse<String> response = Unirest.patch("https://{yourDomain}/api/v2/tenants/settings")
  .header("content-type", "application/json")
  .header("authorization", "Bearer API2_ACCESS_TOKEN")
  .body("{ \"enabled_locales\" : [ \"en\", \"es\"]}")
  .asString();

Was this helpful?

/
var axios = require("axios").default;

var options = {
  method: 'PATCH',
  url: 'https://{yourDomain}/api/v2/tenants/settings',
  headers: {'content-type': 'application/json', authorization: 'Bearer API2_ACCESS_TOKEN'},
  data: {enabled_locales: ['en', 'es']}
};

axios.request(options).then(function (response) {
  console.log(response.data);
}).catch(function (error) {
  console.error(error);
});

Was this helpful?

/
#import <Foundation/Foundation.h>

NSDictionary *headers = @{ @"content-type": @"application/json",
                           @"authorization": @"Bearer API2_ACCESS_TOKEN" };
NSDictionary *parameters = @{ @"enabled_locales": @[ @"en", @"es" ] };

NSData *postData = [NSJSONSerialization dataWithJSONObject:parameters options:0 error:nil];

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://{yourDomain}/api/v2/tenants/settings"]
                                                       cachePolicy:NSURLRequestUseProtocolCachePolicy
                                                   timeoutInterval:10.0];
[request setHTTPMethod:@"PATCH"];
[request setAllHTTPHeaderFields:headers];
[request setHTTPBody:postData];

NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request
                                            completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
                                                if (error) {
                                                    NSLog(@"%@", error);
                                                } else {
                                                    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
                                                    NSLog(@"%@", httpResponse);
                                                }
                                            }];
[dataTask resume];

Was this helpful?

/
$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://{yourDomain}/api/v2/tenants/settings",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "PATCH",
  CURLOPT_POSTFIELDS => "{ \"enabled_locales\" : [ \"en\", \"es\"]}",
  CURLOPT_HTTPHEADER => [
    "authorization: Bearer API2_ACCESS_TOKEN",
    "content-type: application/json"
  ],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}

Was this helpful?

/
import http.client

conn = http.client.HTTPSConnection("")

payload = "{ \"enabled_locales\" : [ \"en\", \"es\"]}"

headers = {
    'content-type': "application/json",
    'authorization': "Bearer API2_ACCESS_TOKEN"
    }

conn.request("PATCH", "/{yourDomain}/api/v2/tenants/settings", payload, headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))

Was this helpful?

/
require 'uri'
require 'net/http'
require 'openssl'

url = URI("https://{yourDomain}/api/v2/tenants/settings")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Patch.new(url)
request["content-type"] = 'application/json'
request["authorization"] = 'Bearer API2_ACCESS_TOKEN'
request.body = "{ \"enabled_locales\" : [ \"en\", \"es\"]}"

response = http.request(request)
puts response.read_body

Was this helpful?

/
import Foundation

let headers = [
  "content-type": "application/json",
  "authorization": "Bearer API2_ACCESS_TOKEN"
]
let parameters = ["enabled_locales": ["en", "es"]] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://{yourDomain}/api/v2/tenants/settings")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "PATCH"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()

Was this helpful?

/

Limites

  • Le paramètre ui_locales ne peut être utilisé que dans les flux OAuth, car il n’est pas disponible dans SAML ou WS-Federation.

  • Le paramètre ui_locales  n’est pas transmis aux fournisseurs d’identité (IdP) en amont. Pour en savoir plus sur le passage de paramètres aux fournisseurs d’identité, consultez Transmettre les paramètres aux fournisseurs d’identité.

  • Il n’est pas possible de localiser les permissions dans la page de Consentement.

Problèmes connus

  • L’ULP rend l’attribut HTML lang pour le code de langue fr-FR en tant que fr.

  • L’ULP rend l’attribut HTML lang pour le code de langue pt-PT en tant que pt.

Localisation de la connexion classique

Dans l’expérience de connexion classique, la localisation (traduction) se fait à l’aide de nos gadgets logiciels JavaScript pour la connexion, la page de réinitialisation du mot de passe et les politiques liées au mot de passe.

La page MFA utilise par défaut le gadget logiciel Auth0 MFA, qui ne peut pas être localisé. Vous pouvez créer des versions localisées en utilisant guardian.js.

Il n’est pas possible de localiser la page de Consentement.

En savoir plus