Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Importante
A partir del 1 de mayo de 2025, Azure AD B2C ya no estará disponible para ser adquirido por nuevos clientes. Obtenga más información en nuestras preguntas más frecuentes.
Antes de empezar, use el selector Elegir un tipo de directiva en la parte superior de esta página para elegir el tipo de directiva que está configurando. Azure Active Directory B2C ofrece dos métodos para definir cómo interactúan los usuarios con las aplicaciones: a través de flujos de usuario predefinidos o mediante directivas personalizadas totalmente configurables. Los pasos necesarios en este artículo son diferentes para cada método.
La personalización de idioma en Azure Active Directory B2C (Azure AD B2C) permite al flujo de usuario adaptarse a diferentes idiomas para satisfacer las necesidades del cliente. Microsoft proporciona las traducciones de 36 idiomas, pero también puede proporcionar sus propias traducciones para cualquier idioma. Incluso si su experiencia se proporciona solo para un solo idioma, puede personalizar cualquier texto de las páginas.
¿Cómo funciona la personalización de idioma?
Use la personalización de idioma para seleccionar los idiomas en los que está disponible el flujo de usuario. Una vez habilitada la característica, puede proporcionar el parámetro de cadena de consulta, ui_locales
, desde la aplicación. Al llamar a Azure AD B2C, la página se traduce a la configuración regional que ha indicado. Este tipo de configuración le proporciona control total sobre los idiomas del flujo de usuario y omite la configuración de idioma del explorador del cliente.
Es posible que no necesite ese nivel de control sobre qué idiomas ve el cliente. Si no proporciona un ui_locales
parámetro, la configuración del explorador determina la experiencia del cliente. Todavía puede controlar a qué idiomas se traduce el flujo de usuario agregándolo como idioma admitido. Si el explorador de un cliente está establecido para mostrar un idioma que no desea admitir, se muestra en su lugar el idioma que seleccionó como valor predeterminado en las referencias culturales admitidas.
- Idioma especificado por ui-locales: después de habilitar la personalización del idioma, el flujo de usuario se traduce al idioma especificado aquí.
-
Idioma solicitado por el explorador: si no se especificó ningún
ui_locales
parámetro, el flujo de usuario se traduce al idioma solicitado por el explorador, si se admite el idioma. - Idioma predeterminado de la directiva: si el explorador no especifica un idioma o especifica uno que no se admite, el flujo de usuario se traduce al idioma predeterminado del flujo de usuario.
Nota:
Si usa atributos de usuario personalizados, debe proporcionar sus propias traducciones. Para obtener más información, consulte Personalización de las cadenas.
Vea este vídeo para aprender a localizar o personalizar el idioma mediante Azure AD B2C.
La localización requiere tres pasos:
- Configurar la lista explícita de idiomas admitidos
- Proporcionar cadenas y colecciones específicas para el idioma
- Edite la definición de contenido de la página.
Prerrequisitos
- Cree un flujo de usuario para que los usuarios se registren e inicien sesión en la aplicación.
- Registre una aplicación web.
- Siga los pasos de Introducción a las directivas personalizadas en Active Directory B2C. En este tutorial se explica cómo actualizar archivos de directiva personalizados para usar la configuración del inquilino de Azure AD B2C.
- Registre una aplicación web.
Compatibilidad con idiomas solicitados para ui_locales
Las directivas que se crearon antes de la disponibilidad general de la personalización de idioma deben habilitar esta característica en primer lugar. Directivas y flujos de usuario que se crearon después de habilitar la personalización de idioma de forma predeterminada.
Al habilitar la personalización de idioma en un flujo de usuario, puede controlar el idioma del flujo de usuario agregando el ui_locales
parámetro .
- En el inquilino de Azure AD B2C, seleccione Flujos de usuario.
- Haga clic en el flujo de usuario que desea habilitar para las traducciones.
- Seleccione Idiomas.
- Seleccione Habilitar personalización de idioma.
Selección de los idiomas del flujo de usuario habilitados
Habilite un conjunto de idiomas para que el flujo de usuario se traduzca a cuando lo solicite el explorador sin el ui_locales
parámetro .
- Asegúrese de que el flujo de usuario tenga habilitada la personalización de idioma de las instrucciones anteriores.
- En la página Idiomas del flujo de usuario, seleccione un idioma que quiera admitir.
- En el panel de propiedades, cambie Habilitado a Sí.
- Seleccione Guardar en la parte superior del panel de propiedades.
Nota:
Si no se proporciona un ui_locales
parámetro, la página se traduce al idioma del explorador del cliente solo si está habilitado.
Personalización de las cadenas
La personalización de idioma le permite personalizar cualquier cadena del flujo de usuario.
- Asegúrese de que el flujo de usuario tenga habilitada la personalización de idioma de las instrucciones anteriores.
- En la página Idiomas del flujo de usuario, seleccione el idioma que desea personalizar.
- En Archivos de recursos a nivel de página, seleccione la página que desea editar.
- Seleccione Descargar valores predeterminados (o Descargar invalidaciones si ha editado previamente este idioma).
Estos pasos le proporcionan un archivo JSON que puede usar para comenzar a editar las cadenas.
Cambio de cualquier cadena en la página
- Abra el archivo JSON descargado según las instrucciones anteriores en un editor JSON.
- Busque el elemento que desea cambiar. Puede encontrar el valor de
StringId
de la cadena que busca o buscar el atributoValue
que quiere cambiar. - Actualice el atributo
Value
con el que quiere que se muestre. - Para cada cadena que desea cambiar, cambie
Override
atrue
. - Guarde el archivo y cargue los cambios. (Puede encontrar el control de carga en el mismo lugar en el que descargó el archivo JSON).
Importante
Si necesita sobrescribir una cadena, asegúrese de establecer el valor en Override
true
. Si el valor no cambia, se omite la entrada.
Cambio de los atributos de extensión
Si quiere cambiar la cadena de un atributo de usuario personalizado, o quiere agregar una a JSON, debe estar en el siguiente formato:
{
"LocalizedStrings": [
{
"ElementType": "ClaimType",
"ElementId": "extension_<ExtensionAttribute>",
"StringId": "DisplayName",
"Override": true,
"Value": "<ExtensionAttributeValue>"
}
[...]
]
}
Reemplace <ExtensionAttribute>
por el nombre de su atributo de usuario personalizado.
Reemplace <ExtensionAttributeValue>
por la nueva cadena que se mostrará.
Entrega de una lista de valores mediante LocalizedCollections
Si desea proporcionar una lista establecida de valores para respuestas, debe crear un atributo LocalizedCollections
.
LocalizedCollections
es una matriz de pares de Name
y Value
. El orden de los elementos será el orden en el que se muestran. Para agregar LocalizedCollections
, utilice el siguiente formato:
{
"LocalizedStrings": [...],
"LocalizedCollections": [
{
"ElementType":"ClaimType",
"ElementId":"<UserAttribute>",
"TargetCollection":"Restriction",
"Override": true,
"Items":[
{
"Name":"<Response1>",
"Value":"<Value1>"
},
{
"Name":"<Response2>",
"Value":"<Value2>"
}
]
}
]
}
-
ElementId
es el atributo de usuario para el que este atributoLocalizedCollections
es una respuesta. -
Name
es el valor que se muestra al usuario. -
Value
es lo que se devuelve en la notificación cuando se selecciona esta opción.
Carga de los cambios
- Una vez completados los cambios en el archivo JSON, vuelva al inquilino B2C.
- Seleccione Flujos de usuario y haga clic en el flujo de usuario que desea habilitar para las traducciones.
- Seleccione Idiomas.
- Seleccione el idioma al que quiere traducir.
- Seleccione la página donde desea proporcionar traducciones.
- Seleccione el icono de carpeta y el archivo JSON para cargar.
Este cambio se guarda en el flujo de usuario automáticamente.
Personalización de la interfaz de usuario de la página mediante la personalización de idioma
Hay dos maneras de localizar el contenido HTML. Una manera es activar la personalización del idioma. La habilitación de esta característica permite a Azure AD B2C reenviar el parámetro OpenID Connect, ui-locales
, al punto de conexión. El servidor de contenido puede usar este parámetro para proporcionar páginas HTML personalizadas específicas del idioma.
Como alternativa, puede extraer contenido de distintos lugares, según la configuración regional usada. En el punto de conexión habilitado para CORS, puede configurar una estructura de carpetas para hospedar contenido para idiomas específicos. Se llamará al adecuado si usa el valor de carácter comodín {Culture:RFC5646}
. Por ejemplo, supongamos que se trata del URI de página personalizado:
https://wingtiptoysb2c.blob.core.windows.net/{Culture:RFC5646}/wingtip/unified.html
Puede cargar la página usando fr
. Cuando la página extrae contenido HTML y CSS, se extrae de:
https://wingtiptoysb2c.blob.core.windows.net/fr/wingtip/unified.html
Agregar idiomas personalizados
También puede agregar idiomas para los que Microsoft actualmente no proporciona traducciones. Deberá proporcionar las traducciones de todas las cadenas del flujo de usuario. Los códigos de idioma y configuración regional están limitados a los del estándar ISO 639-1. El formato de código de configuración regional debe ser "ISO_639-1_code"-"CountryCode", por ejemplo en-GB
. Para obtener más información, consulte los formatos de identificación regional.
- En el inquilino de Azure AD B2C, seleccione Flujos de usuario.
- Haga clic en el flujo de usuario donde desea agregar idiomas personalizados y, a continuación, haga clic en Idiomas.
- Seleccione Agregar idioma personalizado en la parte superior de la página.
- En el panel de contexto que se abre, identifique el idioma para el que va a proporcionar traducciones escribiendo un código de configuración regional válido.
- Puede descargar para cada página un conjunto de invalidaciones para inglés y trabajar en las traducciones.
- Una vez que haya terminado con los archivos JSON, puede cargarlos para cada página.
- Seleccione Habilitar y el flujo de usuario ahora puede mostrar este idioma para los usuarios.
- Guarde el idioma.
Importante
Debe habilitar los idiomas personalizados o cargar invalidaciones para poder guardar.
Configurar la lista de idiomas admitidos
Abra el archivo de extensiones de su política. Por ejemplo: SocialAndLocalAccounts/
TrustFrameworkExtensions.xml
.
- Busque el elemento BuildingBlocks . Si el elemento no existe, agréguelo.
- Agregue el
Localization
elemento con los idiomas admitidos: inglés (valor predeterminado) y español.
<Localization Enabled="true">
<SupportedLanguages DefaultLanguage="en" MergeBehavior="ReplaceAll">
<SupportedLanguage>en</SupportedLanguage>
<SupportedLanguage>es</SupportedLanguage>
</SupportedLanguages>
</Localization>
Proporcionar etiquetas específicas del idioma
LocalizedResources del Localization
elemento contiene la lista de cadenas localizadas. El elemento de recursos localizados tiene un identificador que se usa para identificar de forma única los recursos localizados. Este identificador se usa más adelante en el elemento de definición de contenido .
Los elementos de recursos localizados se configuran para la definición de contenido y cualquier idioma que desee admitir. Para personalizar las páginas de registro o de inicio de sesión unificadas para inglés y español, agregue los siguientes LocalizedResources
elementos después del cierre del </SupportedLanguages>
elemento.
Nota:
En el ejemplo siguiente se ha agregado el símbolo de almohadilla #
al comienzo de cada línea, por lo que puede encontrar fácilmente las etiquetas localizadas en la pantalla.
<!--Local account sign-up or sign-in page English-->
<Localization Enabled="true">
...
<LocalizedResources Id="api.signuporsignin.en">
<LocalizedStrings>
<LocalizedString ElementType="ClaimType" ElementId="signInName" StringId="DisplayName">Email Address</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="heading">Sign in</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="social_intro">Sign in with your social account</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="local_intro_generic">Sign in with your {0}</LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="password" StringId="DisplayName">Password</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="requiredField_password">Please enter your password</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="requiredField_generic">Please enter your {0}</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="invalid_generic">Please enter a valid {0}</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="createaccount_one_link">Sign up now</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="createaccount_two_links">Sign up with {0} or {1}</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="createaccount_three_links">Sign up with {0}, {1}, or {2}</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="forgotpassword_link">Forgot your password?</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="button_signin">Sign in</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="divider_title">OR</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="createaccount_intro">Don't have an account?</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="unknown_error">We are having trouble signing you in. Please try again later.</LocalizedString>
<!-- Uncomment the remember_me only if the keep me signed in is activated.
<LocalizedString ElementType="UxElement" StringId="remember_me">Keep me signed in</LocalizedString> -->
<LocalizedString ElementType="ClaimsProvider" StringId="FacebookExchange">Facebook</LocalizedString>
<LocalizedString ElementType="ErrorMessage" StringId="ResourceOwnerFlowInvalidCredentials">Your password is incorrect.</LocalizedString>
<LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfInvalidPassword">Your password is incorrect.</LocalizedString>
<LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfPasswordExpired">Your password has expired.</LocalizedString>
<LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfClaimsPrincipalDoesNotExist">We can't seem to find your account.</LocalizedString>
<LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfOldPasswordUsed">Looks like you used an old password.</LocalizedString>
<LocalizedString ElementType="ErrorMessage" StringId="DefaultMessage">Invalid username or password.</LocalizedString>
<LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfUserAccountDisabled">Your account has been locked. Contact your support person to unlock it, then try again.</LocalizedString>
<LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfUserAccountLocked">Your account is temporarily locked to prevent unauthorized use. Try again later.</LocalizedString>
<LocalizedString ElementType="ErrorMessage" StringId="AADRequestsThrottled">There are too many requests at this moment. Please wait for some time and try again.</LocalizedString>
</LocalizedStrings>
</LocalizedResources>
<!--Local account sign-up or sign-in page Spanish-->
<LocalizedResources Id="api.signuporsignin.es">
<LocalizedStrings>
<LocalizedString ElementType="UxElement" StringId="logonIdentifier_email">#Correo electrónico</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="requiredField_email">#Este campo es obligatorio</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="logonIdentifier_username">#Nombre de usuario</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="password">#Contraseña</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="createaccount_link">#Registrarse ahora</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="requiredField_username">#Escriba su nombre de usuario</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="createaccount_intro">#¿No tiene una cuenta?</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="forgotpassword_link">#¿Olvidó su contraseña?</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="divider_title">#O</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="cancel_message">#El usuario ha olvidado su contraseña</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="button_signin">#Iniciar sesión</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="social_intro">#Iniciar sesión con su cuenta de redes sociales</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="requiredField_password">#Escriba su contraseña</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="invalid_password">#La contraseña que ha escrito no está en el formato esperado.</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="local_intro_username">#Iniciar sesión con su nombre de usuario</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="local_intro_email">#Iniciar sesión con su cuenta existente</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="invalid_email">#Escriba una dirección de correo electrónico válida</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="unknown_error">#Tenemos problemas para iniciar su sesión. Vuelva a intentarlo más tarde. </LocalizedString>
<LocalizedString ElementType="UxElement" StringId="email_pattern">^[a-zA-Z0-9.!#$%&'^_`\{\}~\-]+@[a-zA-Z0-9\-]+(?:\.[a-zA-Z0-9\-]+)*$</LocalizedString>
<LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfInvalidPassword">#Su contraseña es incorrecta.</LocalizedString>
<LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfClaimsPrincipalDoesNotExist">#Parece que no podemos encontrar su cuenta.</LocalizedString>
<LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfOldPasswordUsed">#Parece que ha usado una contraseña antigua.</LocalizedString>
<LocalizedString ElementType="ErrorMessage" StringId="DefaultMessage">#El nombre de usuario o la contraseña no son válidos.</LocalizedString>
<LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfUserAccountDisabled">#Se bloqueó su cuenta. Póngase en contacto con la persona responsable de soporte técnico para desbloquearla y vuelva a intentarlo.</LocalizedString>
<LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfUserAccountLocked">#Su cuenta se bloqueó temporalmente para impedir un uso no autorizado. Vuelva a intentarlo más tarde.</LocalizedString>
<LocalizedString ElementType="ErrorMessage" StringId="AADRequestsThrottled">#Hay demasiadas solicitudes en este momento. Espere un momento y vuelva a intentarlo.</LocalizedString>
</LocalizedStrings>
</LocalizedResources>
<!--Local account sign-up page English-->
<LocalizedResources Id="api.localaccountsignup.en">
<LocalizedStrings>
<LocalizedString ElementType="ClaimType" ElementId="email" StringId="DisplayName">#Email Address</LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="email" StringId="UserHelpText">#Email address that can be used to contact you.</LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="email" StringId="PatternHelpText">#Please enter a valid email address.</LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="newPassword" StringId="DisplayName">#New Password</LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="newPassword" StringId="UserHelpText">#Enter new password</LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="newPassword" StringId="PatternHelpText">#8-16 characters, containing 3 out of 4 of the following: Lowercase characters, uppercase characters, digits (0-9), and one or more of the following symbols: @ # $ % ^ & * - _ + = [ ] { } | \ : ' , ? / ` ~ " ( ) ; .</LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="reenterPassword" StringId="DisplayName">#Confirm New Password</LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="reenterPassword" StringId="UserHelpText">#Confirm new password</LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="reenterPassword" StringId="PatternHelpText">#8-16 characters, containing 3 out of 4 of the following: Lowercase characters, uppercase characters, digits (0-9), and one or more of the following symbols: @ # $ % ^ & * - _ + = [ ] { } | \ : ' , ? / ` ~ " ( ) ; .</LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="displayName" StringId="DisplayName">#Display Name</LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="displayName" StringId="UserHelpText">#Your display name.</LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="surname" StringId="DisplayName">#Surname</LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="surname" StringId="UserHelpText">#Your surname (also known as family name or last name). </LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="givenName" StringId="DisplayName">#Given Name</LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="givenName" StringId="UserHelpText">#Your given name (also known as first name).</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="button_continue">#Create</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="error_fieldIncorrect">#One or more fields are filled out incorrectly. Please check your entries and try again.</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="error_passwordEntryMismatch">#The password entry fields do not match. Please enter the same password in both fields and try again.</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="error_requiredFieldMissing">#A required field is missing. Please fill out all required fields and try again.</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="helplink_text">#What is this?</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="initial_intro">#Please provide the following details.</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="preloader_alt">#Please wait</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="required_field">#This information is required.</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="ver_but_edit">#Change e-mail</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="ver_but_resend">#Send new code</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="ver_but_send">#Send verification code</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="ver_but_verify">#Verify code</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="ver_fail_code_expired">#That code is expired. Please request a new code.</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="ver_fail_no_retry">#You've made too many incorrect attempts. Please try again later.</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="ver_fail_retry">#That code is incorrect. Please try again.</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="ver_fail_server">#We are having trouble verifying your email address. Please enter a valid email address and try again.</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="ver_fail_throttled">#There have been too many requests to verify this email address. Please wait a while, then try again.</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="ver_info_msg">#Verification code has been sent to your inbox. Please copy it to the input box below.</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="ver_input">#Verification code</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="ver_intro_msg">#Verification is necessary. Please click Send button.</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="ver_success_msg">#E-mail address verified. You can now continue.</LocalizedString>
<LocalizedString ElementType="ErrorMessage" StringId="ServiceThrottled">#There are too many requests at this moment. Please wait for some time and try again.</LocalizedString>
<LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfClaimNotVerified">#Claim not verified: {0}</LocalizedString>
<LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfClaimsPrincipalAlreadyExists">#A user with the specified ID already exists. Please choose a different one.</LocalizedString>
<LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfIncorrectPattern">#Incorrect pattern for: {0}</LocalizedString>
<LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfInvalidInput">#{0} has invalid input.</LocalizedString>
<LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfMissingRequiredElement">#Missing required element: {0}</LocalizedString>
<LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfValidationError">#Error in validation by: {0}</LocalizedString>
</LocalizedStrings>
</LocalizedResources>
<!--Local account sign-up page Spanish-->
<LocalizedResources Id="api.localaccountsignup.es">
<LocalizedStrings>
<LocalizedString ElementType="ClaimType" ElementId="email" StringId="DisplayName">#Dirección de correo electrónico</LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="email" StringId="UserHelpText">#Dirección de correo electrónico que puede usarse para ponerse en contacto con usted.</LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="email" StringId="PatternHelpText">#Introduzca una dirección de correo electrónico válida. </LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="newPassword" StringId="DisplayName">#Nueva contraseña</LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="newPassword" StringId="UserHelpText">#Escriba la contraseña nueva</LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="newPassword" StringId="PatternHelpText">#De 8 a 16 caracteres, que contengan 3 de los 4 tipos siguientes: caracteres en minúsculas, caracteres en mayúsculas, dígitos (0-9) y uno o más de los siguientes símbolos: @ # $ % ^ & * - _ + = [ ] { } | \\ : ' , ? / ` ~ \" ( ) ; .</LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="reenterPassword" StringId="DisplayName">#Confirmar nueva contraseña</LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="reenterPassword" StringId="UserHelpText">#Confirmar nueva contraseña</LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="reenterPassword" StringId="PatternHelpText">#8 a 16 caracteres, que contengan 3 de los 4 tipos siguientes: caracteres en minúsculas, caracteres en mayúsculas, dígitos (0-9) y uno o más de los siguientes símbolos: @ # $ % ^ & * - _ + = [ ] { } | \\ : ' , ? / ` ~ \" ( ) ; .</LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="displayName" StringId="DisplayName">#Nombre para mostrar</LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="displayName" StringId="UserHelpText">#Su nombre para mostrar.</LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="surname" StringId="DisplayName">#Apellido</LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="surname" StringId="UserHelpText">#Su apellido.</LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="givenName" StringId="DisplayName">#Nombre</LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="givenName" StringId="UserHelpText">#Su nombre (también conocido como nombre de pila).</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="button_continue">#Crear</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="error_fieldIncorrect">#Hay uno o varios campos rellenados de forma incorrecta. Compruebe las entradas y vuelva a intentarlo.</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="error_passwordEntryMismatch">#Los campos de entrada de contraseña no coinciden. Escriba la misma contraseña en ambos campos y vuelva a intentarlo.</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="error_requiredFieldMissing">#Falta un campo obligatorio. Rellene todos los campos necesarios y vuelva a intentarlo.</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="helplink_text">#¿Qué es esto?</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="initial_intro">#Proporcione los siguientes detalles.</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="preloader_alt">#Espere</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="required_field">#Esta información es obligatoria.</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="ver_but_edit">#Cambiar correo electrónico</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="ver_but_resend">#Enviar nuevo código</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="ver_but_send">#Enviar código de comprobación</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="ver_but_verify">#Comprobar código</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="ver_fail_code_expired">#El código ha expirado. Solicite otro nuevo.</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="ver_fail_no_retry">#Ha realizado demasiados intentos incorrectos. Vuelva a intentarlo más tarde.</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="ver_fail_retry">#Ese código es incorrecto. Inténtelo de nuevo.</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="ver_fail_server">#Tenemos problemas para comprobar la dirección de correo electrónico. Escriba una dirección de correo electrónico válida y vuelva a intentarlo.</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="ver_fail_throttled">#Ha habido demasiadas solicitudes para comprobar esta dirección de correo electrónico. Espere un poco y vuelva a intentarlo.</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="ver_info_msg">#Se ha enviado el código de verificación a su Bandeja de entrada. Cópielo en el siguiente cuadro de entrada.</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="ver_input">#Código de verificación</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="ver_intro_msg">#La comprobación es obligatoria. Haga clic en el botón Enviar.</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="ver_success_msg">#Dirección de correo electrónico comprobada. Puede continuar.</LocalizedString>
<LocalizedString ElementType="ErrorMessage" StringId="ServiceThrottled">#Hay demasiadas solicitudes en este momento. Espere un momento y vuelva a intentarlo.</LocalizedString>
<LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfClaimNotVerified">#Reclamación no comprobada: {0}</LocalizedString>
<LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfClaimsPrincipalAlreadyExists">#Ya existe un usuario con el id. especificado. Elija otro diferente.</LocalizedString>
<LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfIncorrectPattern">#Patrón incorrecto para: {0}</LocalizedString>
<LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfInvalidInput">#{0} tiene una entrada no válida.</LocalizedString>
<LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfMissingRequiredElement">#Falta un elemento obligatorio: {0}</LocalizedString>
<LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfValidationError">#Error en la validación de: {0}</LocalizedString>
</LocalizedStrings>
</LocalizedResources>
</Localization>
Edición de la definición de contenido con la localización
Pegue todo el contenido del elemento ContentDefinitions que copió como elemento secundario del elemento BuildingBlocks.
En el ejemplo siguiente, se agregan cadenas personalizadas de inglés (en) y español (es) a la página de registro o de inicio de sesión y a la página de registro de la cuenta local. LocalizedResourcesReferenceId para cada LocalizedResourcesReference es el mismo que su localización, pero se puede usar cualquier cadena como identificador. Por cada combinación de idioma y página, apunte al elemento LocalizedResources correspondiente que ha creado anteriormente.
<ContentDefinitions>
<ContentDefinition Id="api.signuporsignin">
<LocalizedResourcesReferences MergeBehavior="Prepend">
<LocalizedResourcesReference Language="en" LocalizedResourcesReferenceId="api.signuporsignin.en" />
<LocalizedResourcesReference Language="es" LocalizedResourcesReferenceId="api.signuporsignin.es" />
</LocalizedResourcesReferences>
</ContentDefinition>
<ContentDefinition Id="api.localaccountsignup">
<LocalizedResourcesReferences MergeBehavior="Prepend">
<LocalizedResourcesReference Language="en" LocalizedResourcesReferenceId="api.localaccountsignup.en" />
<LocalizedResourcesReference Language="es" LocalizedResourcesReferenceId="api.localaccountsignup.es" />
</LocalizedResourcesReferences>
</ContentDefinition>
</ContentDefinitions>
Carga y prueba de la directiva personalizada actualizada
Carga de la directiva personalizada
- Guarde el archivo de extensiones.
- Si tiene acceso a varios inquilinos, seleccione el icono Configuración en el menú superior para cambiar a su inquilino de Azure AD B2C desde el menú Directorios y suscripciones.
- Busque y seleccione Azure AD B2C.
- En Directivas, seleccione Identity Experience Framework.
- Seleccione Cargar directiva personalizada.
- Cargue el archivo de extensiones que ha cambiado anteriormente.
Probar la directiva personalizada con Ejecutar ahora
- Seleccione la directiva cargada y, a continuación, Ejecutar ahora.
- Deberías poder ver la página de registro o inicio de sesión en tu idioma.
- Haga clic en el vínculo de registro y podrá ver la página de registro localizada.
- Cambie el idioma predeterminado del explorador a español. O bien, puede agregar el parámetro
ui_locales
de cadena de consulta a la solicitud de autorización. Por ejemplo:
https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/B2C_1A_signup_signin/oauth2/v2.0/authorize&client_id=00001111-aaaa-2222-bbbb-3333cccc4444&nonce=defaultNonce&redirect_uri=https%3A%2F%2Fjwt.ms&scope=openid&response_type=id_token&prompt=login&ui_locales=es
Información adicional
Etiquetas de personalización de la interfaz de usuario de página como invalidaciones
Cuando se habilita la personalización de idioma, las ediciones anteriores de etiquetas que usan la personalización de la interfaz de usuario de página se almacenan en un archivo JSON para inglés (en). Para seguir cambiando las etiquetas y otras cadenas, cargue los recursos de idioma en Personalización de idioma.
Actualización de traducciones
Microsoft se compromete a proporcionar las traducciones más actualizadas para que haga uso de ellas. Microsoft mejora continuamente las traducciones y garantiza su cumplimiento. Microsoft identificará errores y cambios en la terminología global y creará actualizaciones que funcionen perfectamente en su flujo de usuario.
Compatibilidad con idiomas que se leen de derecha a izquierda
Microsoft no proporciona actualmente compatibilidad con idiomas que se leen de derecha a izquierda. Para ello, puede usar configuraciones regionales personalizadas y CSS para cambiar la manera en la que se muestran las cadenas. Si necesita esta característica, vote por ella en Comentarios de Azure.
Traducciones de proveedores de identidades sociales
Microsoft proporciona el parámetro OIDC ui_locales
a los inicios de sesión de redes sociales. Pero algunos proveedores de identidades de redes sociales, incluidas Facebook y Google, no los respetan.
Comportamiento del explorador
Microsoft Edge, Chrome y Firefox solicitan su idioma establecido. Si es un idioma admitido, se muestra antes el valor predeterminado.
Idiomas compatibles
Azure AD B2C incluye compatibilidad con los siguientes idiomas mediante códigos ISO 639-1. Azure AD B2C proporciona idiomas de flujo de usuario. Los idiomas de notificación de autenticación multifactor los proporciona la autenticación multifactor de Microsoft Entra.
Lenguaje | Código de idioma | Flujos de usuario | Notificaciones de MFA |
---|---|---|---|
Árabe | Ar |
![]() |
![]() |
Búlgaro | Bg |
![]() |
![]() |
Bengalí | Bn |
![]() |
![]() |
Catalán | Ca |
![]() |
![]() |
Checo | Cs |
![]() |
![]() |
Danés | sí |
![]() |
![]() |
Alemán | de |
![]() |
![]() |
Griego | El |
![]() |
![]() |
Inglés | en |
![]() |
![]() |
Español | es |
![]() |
![]() |
Estonio | Et |
![]() |
![]() |
Vasco | UE |
![]() |
![]() |
Finlandés | Fi |
![]() |
![]() |
Francés | Francia |
![]() |
![]() |
Gallego | Gl |
![]() |
![]() |
Gujarati | Gu |
![]() |
![]() |
Hebreo | él |
![]() |
![]() |
hindi | hola |
![]() |
![]() |
Croata | h |
![]() |
![]() |
Húngaro | hu |
![]() |
![]() |
Indonesio | identificación |
![]() |
![]() |
Italiano | eso |
![]() |
![]() |
Japonés | ja |
![]() |
![]() |
Kazajo | okey |
![]() |
![]() |
Kannada | kN |
![]() |
![]() |
Coreano | ko |
![]() |
![]() |
Lituano | Lt |
![]() |
![]() |
Letón | Lv |
![]() |
![]() |
Malayalam | mililitros |
![]() |
![]() |
Marathi | Sr |
![]() |
![]() |
Malayo | Sra. |
![]() |
![]() |
Noruego Bokmal | Nb |
![]() |
![]() |
Holandés | Nl |
![]() |
![]() |
Noruego | No |
![]() |
![]() |
Punjabí | papá |
![]() |
![]() |
Polaco | pl |
![]() |
![]() |
Portugués - Brasil | pt-br |
![]() |
![]() |
Portugués (Portugal) | pt-pt |
![]() |
![]() |
Rumano | Ro |
![]() |
![]() |
Ruso | Ru |
![]() |
![]() |
Eslovaco | Sk |
![]() |
![]() |
Esloveno | Sl |
![]() |
![]() |
Serbio (cirílico) | SR-CRYL-CS |
![]() |
![]() |
Serbio (latino) | sr-latn-cs |
![]() |
![]() |
Sueco | Sv |
![]() |
![]() |
Tamil | gracias |
![]() |
![]() |
Telugu | te |
![]() |
![]() |
Tailandés | ésimo |
![]() |
![]() |
Turco | Tr |
![]() |
![]() |
Ucraniano | Reino Unido |
![]() |
![]() |
Vietnamita | VI |
![]() |
![]() |
Galés | Cy |
![]() |
![]() |
Chino : simplificado | zh-hans |
![]() |
![]() |
Chino - tradicional | zh-hant |
![]() |
![]() |
Pasos siguientes
Encuentre más información sobre cómo personalizar la interfaz de usuario de las aplicaciones en Personalización de la interfaz de usuario de la aplicación en Azure Active Directory B2C.
- Obtenga más información sobre el elemento de localización en la referencia de IEF.
- Consulte la lista de identificadores de cadena de localización disponibles en Azure AD B2C.