- Determina quais blocos têm a melhor correspondência entre o idioma necessário para o usuário e os idiomas do pacote
- Baixa apenas os blocos marcados para esse idioma e os blocos que não têm um especificador de idioma
Instalação com reconhecimento de idioma
Os especificadores de idioma do Intelligent Delivery marcam o conteúdo para que apenas um subconjunto de todos os ativos localizados de um pacote seja instalado em um console. Isso economiza largura de banda para os clientes que instalam digitalmente e economiza espaço no disco rígido para todos os clientes. Para indicar que o conteúdo é específico de um ou mais idiomas, adicione um atributoLanguages a um bloco no seu arquivo layout.xml. O exemplo a seguir mostra um bloco que será instalado apenas em um console que determinou o francês como a melhor correspondência para o idioma no qual o console está sendo executado. Esse bloco será instalado em consoles configurados para francês com uma localidade canadense (fr-CA) ou uma localidade francesa (fr-FR). Um bloco sem especificador de idioma será instalado em todos os consoles, a menos que seja excluído pelo uso de outros especificadores, como o tipo de dispositivo.
Determinar a escolha de idioma do usuário
Use a função XPackageGetUserLocale para consultar o nome da localidade que o sistema operacional determinou como a melhor correspondência para a instalação do título no sistema do usuário. A localidade retornada é decidida por um algoritmo que executa aproximadamente as ações a seguir para determinar a melhor correspondência possível com base em todos os dados disponíveis sobre o usuário.- É gerada uma lista dos idiomas que melhor correspondem à configuração de idioma atual do usuário.
- É gerada uma lista de todos os idiomas declarados no MicrosoftGame.config/manifesto.
- É gerada uma lista de todos os idiomas atualmente instalados e disponíveis no pacote.
- O primeiro idioma declarado no manifesto é o fallback final para a seleção de idioma.
- O resultado sempre será um idioma declarado no MicrosoftGame.config/manifesto, ou um idioma do usuário se nenhum idioma for declarado.
O algoritmo usado pode mudar com o tempo e não é necessariamente idêntico à
descrição anterior.
Você deve garantir que todos os idiomas referenciados no seu arquivo layout.xml também estejam presentes no seu arquivo MicrosoftGame.config. A ferramenta MakePkg produzirá um erro se isso não for verdade.
Comportamento ao iniciar seu título depois que o usuário mudou para um idioma diferente
Se o usuário iniciar seu título e a melhor localidade para o usuário estiver disponível como parte do seu pacote, mas ainda não tiver sido instalada (por exemplo, o usuário mudou de idioma enquanto seu título não estava em execução), na próxima vez que seu título for iniciado, ele terá a oportunidade de instalar o idioma de melhor correspondência.Se o usuário optar por instalar um idioma, ele ainda poderá executar o jogo
no idioma instalado escolhido anteriormente até que o novo idioma seja baixado. Presumimos
que, se ele começou em outro idioma, provavelmente entende esse idioma e talvez queira
jogar enquanto aguarda o download do seu idioma preferido.Observe que esse comportamento confundiu muitos desenvolvedores. Ao testar, você deve verificar se
a instalação do novo idioma foi concluída monitorando a fila de instalação de jogos antes de iniciar
o título. Se o usuário optar por instalar um idioma, XPackageGetUserLocale
não informará esse idioma até que ele tenha sido baixado.
Oferecer idiomas adicionais no seu título
Alguns títulos permitem que os usuários escolham um idioma (como parte da primeira experiência de jogo ou por meio de um menu) independentemente da configuração de idioma do console. Na instalação, o Intelligent Delivery instala apenas um idioma para um determinado pacote, de acordo com a configuração de idioma do console e os idiomas especificados no arquivo layout.xml. Seu título deve ser renderizado nesse idioma por padrão. Além disso, o shell do XBOX permite instalar idiomas secundários. Você pode expor essa opção dentro do seu título usando sua própria interface do usuário. Seu título pode determinar os idiomas disponíveis para instalação chamando o método XPackageEnumeratePackages. Dependendo do idioma selecionado e da origem da instalação, a instalação pode vir de um disco ou do XBOX Live. Quando um usuário seleciona um idioma diferente do padrão, seu título deve chamar o método XPackageFindChunkAvailability para determinar o status de instalação dos blocos marcados com esse idioma. Essa API retorna um objeto XPackageChunkAvailability com um dos valores mostrados na tabela a seguir.
Se XPackageChunkAvailability retornar Unavailable, o idioma especificado não estará disponível online nem na versão do título que está no disco.
Se um usuário optar por instalar um idioma que está disponível, mas não instalado no momento, seu título deverá chamar o método XPackageInstallChunks com um objeto XPackageChunkSelector que especifica o idioma a ser instalado. Essa chamada exibe uma interface do usuário renderizada pelo sistema que solicita ao usuário que aceite o download e a instalação adicionais. Seu título pode usar o identificador do monitor de instalação retornado, junto com o método XPackageGetInstallationProgress ou o método XPackageRegisterInstallationProgressChanged, para monitorar o download e a instalação dos novos dados ou para determinar se o usuário recusou a instalação adicional.
Seu título pode desinstalar um idioma chamando o método XPackageUninstallChunks. Essa chamada é ignorada silenciosamente se apenas um idioma estiver instalado.
Alterações em relação ao XBOX One Software Development Kit
Se você já tem experiência com o uso do Intelligent Delivery no XBOX One Software Development Kit, observe que a forma como os idiomas são declarados e mapeados é diferente. Se você adicionou um atributoLanguages a um bloco, esse idioma também deve ser declarado no MicrosoftGame.config. A identificação de quais blocos instalar para um idioma agora se baseia em um único valor para o idioma de melhor correspondência. Por exemplo, se o seu arquivo de layout contiver um bloco marcado com ‘en’ e outro marcado com ‘en-US’, o bloco ‘en’ não será instalado se o idioma do usuário estiver definido como ‘en-US’. Se você quiser esse comportamento herdado, declare o bloco com todos os idiomas para os quais ele deve ser instalado: en;en-US.
