Elemento Localization

Nota:

En Azure Active Directory B2C, las directivas personalizadas se han diseñado principalmente para abordar escenarios complejos. Para la mayoría de los escenarios, se recomienda usar flujos de usuario integrados. Si no lo ha hecho, obtenga información sobre el paquete de inicio de directivas personalizadas en Introducción a las directivas personalizadas en Active Directory B2C.

El elemento Localization permite incluir varios idiomas o configuraciones regionales en la directiva para los recorridos del usuario. Admitir la localización en las directivas le permite:

  • Configurar la lista explícita de los idiomas admitidos en una directiva y seleccionar un idioma predeterminado.
  • Proporcionar cadenas y colecciones específicas del idioma.
<Localization Enabled="true">
  <SupportedLanguages DefaultLanguage="en" MergeBehavior="ReplaceAll">
    <SupportedLanguage>en</SupportedLanguage>
    <SupportedLanguage>es</SupportedLanguage>
  </SupportedLanguages>
  <LocalizedResources Id="api.localaccountsignup.en">
  <LocalizedResources Id="api.localaccountsignup.es">
  ...

El elemento Localization contiene los atributos siguientes:

Atributo Obligatorio Descripción
habilitado No Valores posibles: true o false.

El elemento Localization contiene los siguientes elementos XML:

Elemento Repeticiones Descripción
SupportedLanguages 1:n Lista de idiomas admitidos.
LocalizedResources 0:n Lista de recursos localizados.

SupportedLanguages

El elemento SupportedLanguages contiene los atributos siguientes:

Atributo Obligatorio Descripción
DefaultLanguage El idioma que se usará como el predeterminado para los recursos localizados.
MergeBehavior No Valores de enumeración de los valores combinados con cualquier elemento ClaimType presente en una directiva principal con el mismo identificador. Use este atributo al sobrescribir una notificación especificada en la directiva de base. Valores posibles: Append, Prepend o ReplaceAll. El valor Append especifica que la colección de datos presente tiene que anexarse al final de la colección especificada en la directiva principal. El valor Prepend especifica que la colección de datos presente tiene que agregarse antes de la colección especificada en la directiva principal. El valor ReplaceAll especifica que la colección de datos definidos en la directiva principal tiene que omitirse y, en su lugar, tienen que usarse los datos definidos en la directiva actual.

SupportedLanguages

El elemento SupportedLanguages contiene los elementos siguientes:

Elemento Repeticiones Descripción
SupportedLanguage 1:n Muestra contenido que cumple con una etiqueta de idioma según RFC 5646 (etiquetas para identificar idiomas).

LocalizedResources

El elemento LocalizedResources contiene los atributos siguientes:

Atributo Obligatorio Descripción
Identificador Identificador único para recursos localizados.

El elemento LocalizedResources contiene los elementos siguientes:

Elemento Repeticiones Descripción
LocalizedCollections 0:n Define colecciones enteras de distintas referencias culturales. Una colección puede tener un número distinto de elementos y cadenas diferentes para varias referencias culturales. Entre los ejemplos de colecciones, se incluyen las enumeraciones que aparecen en los tipos de notificación. Por ejemplo, una lista de países o regiones se muestra al usuario en una lista desplegable.
LocalizedStrings 0:n Define todas las cadenas en distintas referencias culturales, excepto las que aparecen en colecciones.

LocalizedCollections

El elemento LocalizedCollections contiene los elementos siguientes:

Elemento Repeticiones Descripción
LocalizedCollection 1:n Lista de idiomas admitidos.

LocalizedCollection

El elemento LocalizedCollection contiene los atributos siguientes:

Atributo Obligatorio Descripción
ElementType Hace referencia a un elemento ClaimType o a un elemento de la interfaz de usuario en el archivo de directiva.
ElementId Cadena que contiene una referencia a un tipo de notificación que ya se ha definido en la sección ClaimsSchema y que se usa si se establece ElementType en un elemento ClaimType.
TargetCollection La colección de destino.

El elemento LocalizedCollection contiene los elementos siguientes:

Elemento Repeticiones Descripción
Elemento 0:n Define una opción disponible para que el usuario seleccione una notificación en la interfaz de usuario, como un valor en una lista desplegable.

El elemento Item contiene los atributos siguientes:

Atributo Obligatorio Descripción
Texto Cadena para mostrar fácil de identificar que se mostrará al usuario en la interfaz de usuario para esta opción.
Value Valor de notificación de cadena asociado a la selección de esta opción.
SelectByDefault No Indica si esta opción se puede seleccionar o no de forma predeterminada en la interfaz de usuario. Valores posibles: True o False.

En el ejemplo siguiente, se muestra cómo usar el elemento LocalizedCollections. Contiene dos elementos LocalizedCollection, uno para inglés y otro para español. Ambos establecen la colección Restriction de la notificación Gender con una lista de elementos para inglés y español. Para obtener más muestras, consulte la Demo en directo de enumeración de restricciones de notificación.

<LocalizedResources Id="api.selfasserted.en">
  <LocalizedCollections>
    <LocalizedCollection ElementType="ClaimType" ElementId="Gender" TargetCollection="Restriction">
      <Item Text="Female" Value="F" />
      <Item Text="Male" Value="M" />
    </LocalizedCollection>
  </LocalizedCollections>
</LocalizedResources>

<LocalizedResources Id="api.selfasserted.es">
 <LocalizedCollections>
   <LocalizedCollection ElementType="ClaimType" ElementId="Gender" TargetCollection="Restriction">
      <Item Text="Femenino" Value="F" />
      <Item Text="Masculino" Value="M" />
    </LocalizedCollection>
  </LocalizedCollections>
</LocalizedResources>

LocalizedStrings

El elemento LocalizedStrings contiene los elementos siguientes:

Elemento Repeticiones Descripción
LocalizedString 1:n Cadena localizada.

El elemento LocalizedString contiene los atributos siguientes:

Atributo Obligatorio Descripción
ElementType Valores posibles: ClaimsProvider, ClaimType, ErrorMessage, GetLocalizedStringsTransformationClaimType, FormatLocalizedStringTransformationClaimType, Predicate, PredicateValidation o UxElement.
ElementId Si ElementType se establece en ClaimType, Predicate o PredicateValidation, este elemento contiene una referencia a un tipo de notificación que ya se ha definido en la sección ClaimsSchema.
StringId Si ElementType se establece en ClaimType, este elemento contiene una referencia a un atributo de un tipo de notificación. Valores posibles: DisplayName, AdminHelpText o PatternHelpText. El valor DisplayName se usa para establecer el nombre para mostrar de la notificación. El valor AdminHelpText se usa para establecer el nombre del texto de ayuda del usuario de la notificación. El valor PatternHelpText se usa para establecer el texto de ayuda del patrón de la notificación. Si ElementType se establece en UxElement, este elemento contiene una referencia a un atributo de un elemento de la interfaz de usuario. Si ElementType se establece en ErrorMessage, este elemento especifica el identificador de un mensaje de error. Vea la lista completa de los identificadores de UxElement en Id. de cadena Localization.

ElementType

Referencia de ElementType a un tipo de notificación, una transformación de notificaciones o un elemento de la interfaz de usuario de la directiva que se va a localizar.

Elemento que se va a localizar ElementType ElementId StringId
Nombre del proveedor de identidades ClaimsProvider Identificador del elemento ClaimsExchange
Atributos de tipo de notificación ClaimType Nombre del tipo de notificación Atributo de la notificación que se va a localizar. Valores posibles: AdminHelpText, DisplayName, PatternHelpText y UserHelpText.
Mensaje de error ErrorMessage Identificador del mensaje de error
Copia las cadenas localizadas en las notificaciones GetLocalizedStringsTra nsformationClaimType Nombre de la notificación de salida
Mensaje de usuario de predicado Predicate Nombre del predicado Atributo del predicado que se va a localizar. Valores posibles: HelpText.
Mensaje de usuario del grupo de predicados PredicateValidation Identificador del elemento PredicateValidation. Identificador del elemento PredicateGroup. El grupo de predicados debe ser un elemento secundario del elemento de validación de predicado, tal como se define en ElementId.
Elementos de la interfaz de usuario UxElement Identificador del elemento de la interfaz de usuario que se va a localizar.
Control de visualización DisplayControl El identificador del control de visualización. Identificador del elemento de la interfaz de usuario que se va a localizar.

Ejemplos

ClaimsProvider

El valor de ClaimsProvider se usa para localizar el nombre para mostrar de uno de los proveedores de notificaciones.

<OrchestrationStep Order="2" Type="ClaimsExchange">
  ...
  <ClaimsExchanges>
    <ClaimsExchange Id="FacebookExchange" TechnicalProfileReferenceId="Facebook-OAUTH" />
    <ClaimsExchange Id="GoogleExchange" TechnicalProfileReferenceId="Google-OAUTH" />
    <ClaimsExchange Id="LinkedInExchange" TechnicalProfileReferenceId="LinkedIn-OAUTH" />
  </ClaimsExchanges>
</OrchestrationStep>

En el ejemplo siguiente se muestra cómo localizar el nombre para mostrar de los proveedores de notificaciones.

<LocalizedString ElementType="ClaimsProvider" StringId="FacebookExchange">Facebook</LocalizedString>
<LocalizedString ElementType="ClaimsProvider" StringId="GoogleExchange">Google</LocalizedString>
<LocalizedString ElementType="ClaimsProvider" StringId="LinkedInExchange">LinkedIn</LocalizedString>

ClaimType

El valor de ClaimType se usa para localizar uno de los atributos de la notificación.

<ClaimType Id="email">
  <DisplayName>Email Address</DisplayName>
  <DataType>string</DataType>
  <UserHelpText>Email address that can be used to contact you.</UserHelpText>
  <UserInputType>TextBox</UserInputType>
</ClaimType>

En el ejemplo siguiente se muestra cómo localizar los atributos DisplayName, UserHelpText y PatternHelpText del tipo de notificación de correo electrónico.

<LocalizedString ElementType="ClaimType" ElementId="email" StringId="DisplayName">Email</LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="email" StringId="UserHelpText">Please enter your email</LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="email" StringId="PatternHelpText">Please enter a valid email address</LocalizedString>

ErrorMessage

El valor de ErrorMessage se usa para localizar uno de los mensajes de error del sistema.

<TechnicalProfile Id="AAD-UserWriteUsingAlternativeSecurityId">
  <Metadata>
    <Item Key="RaiseErrorIfClaimsPrincipalAlreadyExists">true</Item>
    <Item Key="UserMessageIfClaimsPrincipalAlreadyExists">You are already registered, please press the back button and sign in instead.</Item>
  </Metadata>
  ...
</TechnicalProfile>

En el ejemplo siguiente se muestra cómo localizar el mensaje de error UserMessageIfClaimsPrincipalAlreadyExists.

<LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfClaimsPrincipalAlreadyExists">The account you are trying to create already exists, please sign-in.</LocalizedString>

FormatLocalizedStringTransformationClaimType

El valor FormatLocalizedStringTransformationClaimType se usa para dar formato a las notificaciones en una cadena localizada. Para más información, consulte Transformaciones de las notificaciones de FormatLocalizedString.

<ClaimsTransformation Id="SetResponseMessageForEmailAlreadyExists" TransformationMethod="FormatLocalizedString">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="email" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="stringFormatId" DataType="string" Value="ResponseMessge_EmailExists" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="responseMsg" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>

El siguiente ejemplo muestra cómo localizar el formato de cadena de la transformación de notificaciones FormatLocalizedStringTransformationClaimType.

<LocalizedString ElementType="FormatLocalizedStringTransformationClaimType" StringId="ResponseMessge_EmailExists">The email '{0}' is already an account in this organization. Click Next to sign in with that account.</LocalizedString>

GetLocalizedStringsTransformationClaimType

El valor de GetLocalizedStringsTransformationClaimType se usa para copiar las cadenas localizadas en las notificaciones. Para más información, consulte la transformación de notificaciones GetLocalizedStringsTransformation.

<ClaimsTransformation Id="GetLocalizedStringsForEmail" TransformationMethod="GetLocalizedStringsTransformation">
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="subject" TransformationClaimType="email_subject" />
    <OutputClaim ClaimTypeReferenceId="message" TransformationClaimType="email_message" />
    <OutputClaim ClaimTypeReferenceId="codeIntro" TransformationClaimType="email_code" />
    <OutputClaim ClaimTypeReferenceId="signature" TransformationClaimType="email_signature" />
   </OutputClaims>
</ClaimsTransformation>

En el ejemplo siguiente se muestra cómo localizar las notificaciones de salida de la transformación de notificaciones GetLocalizedStringsTransformation.

<LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_subject">Contoso account email verification code</LocalizedString>
<LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_message">Thanks for verifying your account!</LocalizedString>
<LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_code">Your code is</LocalizedString>
<LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_signature">Sincerely</LocalizedString>

Predicate

El valor de Predicate se usa para localizar uno de los mensajes de error del elemento Predicate.

<Predicates>
  <Predicate Id="LengthRange" Method="IsLengthRange"  HelpText="The password must be between 6 and 64 characters.">
    <Parameters>
      <Parameter Id="Minimum">6</Parameter>
      <Parameter Id="Maximum">64</Parameter>
    </Parameters>
  </Predicate>
  <Predicate Id="Lowercase" Method="IncludesCharacters" HelpText="a lowercase letter">
    <Parameters>
      <Parameter Id="CharacterSet">a-z</Parameter>
    </Parameters>
  </Predicate>
  <Predicate Id="Uppercase" Method="IncludesCharacters" HelpText="an uppercase letter">
    <Parameters>
      <Parameter Id="CharacterSet">A-Z</Parameter>
    </Parameters>
  </Predicate>
</Predicates>

En el ejemplo siguiente se muestra cómo localizar el texto de ayuda de los predicados.

<LocalizedString ElementType="Predicate" ElementId="LengthRange" StringId="HelpText">The password must be between 6 and 64 characters.</LocalizedString>
<LocalizedString ElementType="Predicate" ElementId="Lowercase" StringId="HelpText">a lowercase letter</LocalizedString>
<LocalizedString ElementType="Predicate" ElementId="Uppercase" StringId="HelpText">an uppercase letter</LocalizedString>

PredicateValidation

El valor de PredicateValidation se usa para localizar uno de los mensajes de error del grupo PredicateValidation.

<PredicateValidations>
  <PredicateValidation Id="CustomPassword">
    <PredicateGroups>
      <PredicateGroup Id="LengthGroup">
        <PredicateReferences MatchAtLeast="1">
          <PredicateReference Id="LengthRange" />
        </PredicateReferences>
      </PredicateGroup>
      <PredicateGroup Id="CharacterClasses">
        <UserHelpText>The password must have at least 3 of the following:</UserHelpText>
        <PredicateReferences MatchAtLeast="3">
          <PredicateReference Id="Lowercase" />
          <PredicateReference Id="Uppercase" />
          <PredicateReference Id="Number" />
          <PredicateReference Id="Symbol" />
        </PredicateReferences>
      </PredicateGroup>
    </PredicateGroups>
  </PredicateValidation>
</PredicateValidations>

En el ejemplo siguiente se muestra cómo localizar el texto de ayuda de un grupo de validación de predicados.

<LocalizedString ElementType="PredicateValidation" ElementId="CustomPassword" StringId="CharacterClasses">The password must have at least 3 of the following:</LocalizedString>

UxElement

El valor de UxElement se usa para localizar uno de los elementos de la interfaz de usuario. En el ejemplo siguiente se muestra cómo localizar los botones Continuar y Cancelar.

<LocalizedString ElementType="UxElement" StringId="button_continue">Create new account</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="button_cancel">Cancel</LocalizedString>

DisplayControl

El valor DisplayControl se usa para localizar uno de los elementos de la interfaz de usuario del control de visualización. Cuando está habilitado, el control de pantalla localizedStrings tiene prioridad sobre algunos de los StringIDs UxElement, como ver_but_send, ver_but_edit, ver_but_resend y ver_but_verify. En el ejemplo siguiente se muestra cómo localizar los botones Enviar y Comprobar.

<LocalizedString ElementType="DisplayControl" ElementId="emailVerificationControl" StringId="but_send_code">Send verification code</LocalizedString>
<LocalizedString ElementType="DisplayControl" ElementId="emailVerificationControl" StringId="but_verify_code">Verify code</LocalizedString>

En la sección Metadatos de un perfil técnico autoafirmado, el elemento ContentDefinition al que se hace referencia debe tener DataUri establecido en la versión 2.1.0 o superior del diseño de página. Por ejemplo:

<ContentDefinition Id="api.selfasserted">
  <DataUri>urn:com:microsoft:aad:b2c:elements:selfasserted:2.1.0</DataUri>
  ...

Pasos siguientes

Consulte los siguientes artículos para obtener ejemplos de localización: