---
type: explanation
title: Como o widget resolve seu idioma e skin
summary: Como o shell do widget escolhe seu idioma e skin claro ou escuro, e como isso acompanha o jogo quando há um montado.
---

O widget que você embute tem duas camadas: o **shell** (a moldura do Caputchin, sua checkbox ou faixa de marca, seu texto e cores) e, quando você usa um jogo, o **jogo** dentro dele. Cada um tem um idioma e um skin, e o widget resolve os dois no servidor quando carrega. Esta página explica como o shell resolve, e como ele se alinha com o jogo para que os dois nunca se choquem.

Para personalizar o próprio idioma, skin e configuração de um jogo, veja [personalização de jogo](/docs/game-customization/overview). Esta página é sobre o shell.

## O que o shell traz

O shell é totalmente autossuficiente. Ele empacota suas strings de interface em cada idioma oficial e tanto uma paleta clara quanto uma escura, então sempre tem algo correto para renderizar mesmo sem personalização e sem rede. Substituir essas strings, cores ou links empacotados é [white-label](/docs/widget-customization/white-label), um recurso de nível Apex; a resolução abaixo é a mesma quer você tenha substituições ou não.

## Como o shell escolhe um idioma

Quando o widget carrega ele decide qual idioma pedir ao servidor, nesta ordem:

1. O atributo `locale` do widget, se a página definiu um (uma escolha explícita).
2. Senão, o idioma do navegador do visitante.

O servidor então resolve isso contra os idiomas do shell (suas substituições primeiro, depois o conjunto empacotado): um casamento exato, depois o idioma base, depois o padrão do shell, depois seu primeiro idioma. Então o shell sempre renderiza texto de verdade.

## Como o shell escolhe um skin

Mesmo formato para o skin:

1. O atributo `skin` do widget, se a página definiu um: `light`, `dark` ou um nome de preset.
2. Senão, a preferência de sistema do visitante (`prefers-color-scheme`).

O servidor resolve isso para uma paleta clara ou escura concreta (suas substituições primeiro, depois empacotadas). Cada preset declara o modo em que funciona; um preset cujo modo é `any` lê em qualquer fundo e por isso é elegível para os dois. O shell traz uma paleta clara e uma escura de fábrica, e o skin resolvido sempre reporta um modo claro ou escuro concreto, que é o que a moldura renderiza.

## Como o shell acompanha o jogo

Aqui está a parte que amarra tudo. Quando um jogo está montado, o shell não resolve seu idioma e skin do sinal do visitante diretamente. Em vez disso ele **acompanha o jogo**: o widget resolve o jogo primeiro, depois usa o idioma resolvido do jogo e seu modo claro ou escuro como a entrada do shell.

Então se o navegador de um visitante é francês e o jogo resolve para o francês, a moldura ao redor renderiza em francês também. Se o jogo resolve para seu skin escuro, a moldura fica escura para combinar. O shell recai no próprio idioma do visitante e na preferência de sistema só quando nenhum jogo está montado (a checkbox simples do widget), ou quando o jogo não resolveu um idioma ou skin próprio.

O resultado é que o jogo e a moldura ao redor dele sempre concordam, sem você configurar o shell e o jogo separadamente para combinarem.

## Configuração

O shell também tem uma pequena **configuração**: os alvos de link na sua faixa de marca (o link de início e o link legal). Diferente de idioma e skin, isto não tem entrada do visitante; o servidor o resolve das suas substituições ou dos padrões empacotados. Mudar esses links é parte do [white-label](/docs/widget-customization/white-label).

## Veja também

- [White-label do widget](/docs/widget-customization/white-label): substitua o texto, as cores e os links do shell.
- [Estilize o widget com CSS](/docs/widget-customization/css-parts): mire os parts do shell a partir da sua própria folha de estilo.
- [Personalização de jogo](/docs/game-customization/overview): o próprio idioma, skin e configuração do jogo.
