> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Lock v11 admite varios idiomas y permite añadir otros archivos de idioma personalizados, así como personalizar los valores de fragmentos de texto específicos que se muestran en el widget de Lock.

# Internacionalización de Lock

export const AuthCodeBlock = ({filename, icon, language, highlight, children}) => {
  const [displayText, setDisplayText] = useState(children);
  const [copyText, setCopyText] = useState(children);
  const wrapperRef = React.useRef(null);
  useEffect(() => {
    let unsubscribe = null;
    function init() {
      if (!window.autorun || !window.rootStore) {
        return;
      }
      unsubscribe = window.autorun(() => {
        let processedChildrenForDisplay = children;
        let processedChildrenForCopy = children;
        for (const [key, value] of window.rootStore.variableStore.values.entries()) {
          const escapedKey = key.replaceAll(/[.*+?^${}()|[\]\\]/g, (String.raw)`\$&`);
          let displayValue = value;
          if (key === "{yourClientSecret}" && value !== "{yourClientSecret}") {
            displayValue = value.substring(0, 3) + "*****ENMASCARADO*****";
          }
          processedChildrenForDisplay = processedChildrenForDisplay.replaceAll(new RegExp(escapedKey, "g"), displayValue);
          processedChildrenForCopy = processedChildrenForCopy.replaceAll(new RegExp(escapedKey, "g"), value);
        }
        setDisplayText(processedChildrenForDisplay);
        setCopyText(processedChildrenForCopy);
      });
    }
    if (window.rootStore) {
      init();
    } else {
      window.addEventListener("adu:storeReady", init);
    }
    return () => {
      window.removeEventListener("adu:storeReady", init);
      unsubscribe?.();
    };
  }, [children]);
  useEffect(() => {
    if (!wrapperRef.current) return;
    const originalWriteText = navigator.clipboard.writeText.bind(navigator.clipboard);
    let isOverriding = false;
    const handleClick = e => {
      const button = e.target.closest('[data-testid="copy-code-button"]');
      if (!button || !wrapperRef.current.contains(button)) return;
      isOverriding = true;
      navigator.clipboard.writeText = text => {
        if (isOverriding) {
          isOverriding = false;
          navigator.clipboard.writeText = originalWriteText;
          return originalWriteText(copyText);
        }
        return originalWriteText(text);
      };
      setTimeout(() => {
        if (isOverriding) {
          isOverriding = false;
          navigator.clipboard.writeText = originalWriteText;
        }
      }, 100);
    };
    const wrapper = wrapperRef.current;
    wrapper.addEventListener('click', handleClick, true);
    return () => {
      wrapper.removeEventListener('click', handleClick, true);
      if (navigator.clipboard.writeText !== originalWriteText) {
        navigator.clipboard.writeText = originalWriteText;
      }
    };
  }, [copyText]);
  return <div ref={wrapperRef}>
      <CodeBlock filename={filename} icon={icon} language={language} lines highlight={highlight}>
        {displayText}
      </CodeBlock>
    </div>;
};

Puede cambiar el idioma de Lock con la opción de configuración `language`. Esto cargará el archivo de idioma correspondiente desde el directorio `i18n` de Lock.

<div id="provided-languages">
  ## Idiomas disponibles
</div>

Consulta el [directorio i18n](https://github.com/auth0/lock/blob/master/src/i18n/) para ver los archivos de idioma.

| Idioma             | Código    | Fuente                                                                  |
| ------------------ | --------- | ----------------------------------------------------------------------- |
| Afrikáans          | `'af'`    | [af.js](https://github.com/auth0/lock/blob/master/src/i18n/af.js)       |
| Catalán            | `'ca'`    | [ca.js](https://github.com/auth0/lock/blob/master/src/i18n/ca.js)       |
| Chino              | `'zh'`    | [zh.js](https://github.com/auth0/lock/blob/master/src/i18n/zh.js)       |
| Chino (Taiwán)     | `'zh-tw'` | [zh-tw.js](https://github.com/auth0/lock/blob/master/src/i18n/zh-tw.js) |
| Croata             | `'hr'`    | [hr.js](https://github.com/auth0/lock/blob/master/src/i18n/hr.js)       |
| Checo              | `'cs'`    | [cs.js](https://github.com/auth0/lock/blob/master/src/i18n/cs.js)       |
| Danés              | `'da'`    | [da.js](https://github.com/auth0/lock/blob/master/src/i18n/da.js)       |
| Neerlandés         | `'nl'`    | [nl.js](https://github.com/auth0/lock/blob/master/src/i18n/nl.js)       |
| Inglés             | `'en'`    | [en.js](https://github.com/auth0/lock/blob/master/src/i18n/en.js)       |
| Estonio            | `'et'`    | [et.js](https://github.com/auth0/lock/blob/master/src/i18n/et.js)       |
| Farsi (persa)      | `'fa'`    | [fa.js](https://github.com/auth0/lock/blob/master/src/i18n/fa.js)       |
| Finés              | `'fi'`    | [fi.js](https://github.com/auth0/lock/blob/master/src/i18n/fi.js)       |
| Francés            | `'fr'`    | [fr.js](https://github.com/auth0/lock/blob/master/src/i18n/fr.js)       |
| Alemán             | `'de'`    | [de.js](https://github.com/auth0/lock/blob/master/src/i18n/de.js)       |
| Griego             | `'el`     | [el.js](https://github.com/auth0/lock/blob/master/src/i18n/el.js)       |
| Hebreo             | `'he'`    | [he.js](https://github.com/auth0/lock/blob/master/src/i18n/he.js)       |
| Húngaro            | `'hu'`    | [hu.js](https://github.com/auth0/lock/blob/master/src/i18n/hu.js)       |
| Italiano           | `'it'`    | [it.js](https://github.com/auth0/lock/blob/master/src/i18n/it.js)       |
| Japonés            | `'ja'`    | [ja.js](https://github.com/auth0/lock/blob/master/src/i18n/ja.js)       |
| Coreano            | `'ko'`    | [ko.js](https://github.com/auth0/lock/blob/master/src/i18n/ko.js)       |
| Lituano            | `'lt'`    | [lt.js](https://github.com/auth0/lock/blob/master/src/i18n/lt.js)       |
| Noruego            | `'no'`    | [no.js](https://github.com/auth0/lock/blob/master/src/i18n/no.js)       |
| Noruego (Bokmål)   | `'nb'`    | [nb.js](https://github.com/auth0/lock/blob/master/src/i18n/nb.js)       |
| Noruego (Nynorsk)  | `'nn'`    | [nn.js](https://github.com/auth0/lock/blob/master/src/i18n/nn.js)       |
| Polaco             | `'pl'`    | [pl.js](https://github.com/auth0/lock/blob/master/src/i18n/pl.js)       |
| Portugués (Brasil) | `'pt-br'` | [pt-br.js](https://github.com/auth0/lock/blob/master/src/i18n/pt-br.js) |
| Rumano             | `'ro'`    | [ro.js](https://github.com/auth0/lock/blob/master/src/i18n/ro.js)       |
| Ruso               | `'ru'`    | [ru.js](https://github.com/auth0/lock/blob/master/src/i18n/ru.js)       |
| Eslovaco           | `'sk'`    | [sk.js](https://github.com/auth0/lock/blob/master/src/i18n/sk.js)       |
| Esloveno           | `'sl'`    | [sl.js](https://github.com/auth0/lock/blob/master/src/i18n/sl.js)       |
| Español            | `'es'`    | [es.js](https://github.com/auth0/lock/blob/master/src/i18n/es.js)       |
| Sueco              | `'sv'`    | [sv.js](https://github.com/auth0/lock/blob/master/src/i18n/sv.js)       |
| Turco              | `'tr'`    | [tr.js](https://github.com/auth0/lock/blob/master/src/i18n/tr.js)       |
| Ucraniano          | `'ua'`    | [ua.js](https://github.com/auth0/lock/blob/master/src/i18n/uk.js)       |
| Vietnamita         | `'vi'`    | [vi.js](https://github.com/auth0/lock/blob/master/src/i18n/vi.js)       |

<div id="set-language-option">
  ## Configurar la opción de idioma
</div>

Para usar los siguientes ejemplos, primero deberá incluir Lock en su página:

`<script src="https://cdn.auth0.com/js/lock/11.14/lock.min.js"></script>`

A continuación, defina el objeto `options` e incluya la opción `language`. La opción `language` debe ser una cadena que coincida con el nombre del archivo correspondiente en el directorio `i18n` [de Lock](https://github.com/auth0/lock/tree/master/src/i18n). Luego, cree una instancia de Lock.

export const codeExample1 = `// Selecciona un idioma compatible
var options = {
  language: 'es'
};

// Inicializa Auth0Lock
var lock = new Auth0Lock(
  '{yourClientId}',
  '{yourDomain}',
  options
);`;

<AuthCodeBlock children={codeExample1} language="javascript" />

Los datos de traducción de Lock provienen de archivos de idioma con pares clave-valor que representan distintas traducciones. En algunos idiomas, pueden faltar ciertos valores; en ese caso, verá una advertencia: `language does not have property <missing prop>`. Le recomendamos enviar una [pull request](https://github.com/auth0/lock/tree/master/src/i18n) para añadir estos valores faltantes. Como alternativa, puede definirlos en las `options` de Lock (consulte a continuación).

<div id="replace-dictionary-terms">
  ## Reemplace los términos del diccionario
</div>

También puede personalizar elementos específicos de su propio diccionario mediante la opción `languageDictionary`. Esto resulta útil si usa uno de los idiomas compatibles, pero quiere cambiar la redacción de algunos elementos concretos. Por ejemplo, puede reformular el `title` o cambiar la forma en que se muestran otras etiquetas al usuario, sin modificar el resto del texto del widget.

export const codeExample2 = `// Personaliza algunos atributos de languageDictionary
var options = {
  languageDictionary: {
    emailInputPlaceholder: "something@youremail.com",
    title: "Inicia sesión"
  },
};

// Inicializa nuestro Auth0Lock
var lock = new Auth0Lock(
  '{yourClientId}',
  '{yourDomain}',
  options
);`;

<AuthCodeBlock children={codeExample2} language="javascript" />

Para ver un ejemplo de los nombres de propiedad `languageDictionary` disponibles y de cómo estructurar un archivo `language`, consulta el [archivo de diccionario en inglés para Lock](https://github.com/auth0/lock/blob/master/src/i18n/en.js).

La opción `languageBaseUrl`, que acepta un valor de tipo cadena (una URL), reemplaza la URL de origen del idioma para las traducciones proporcionadas por Auth0. De forma predeterminada, usa la URL de CDN de Auth0 `https://cdn.auth0.com`, ya que ahí se almacenan las traducciones de idioma proporcionadas. Si indicas otro valor, puedes usar tu propio origen para las traducciones de idioma según las necesidades de tus aplicaciones. El origen del idioma debe ser un archivo JavaScript.
