Como você deve saber, o iOS 8 requer a chave NSLocationWhenInUseUsageDescription para usar o local do usuário. Eu adicionei essa chave e algumas informações gerais em minhas informações.
Como posso usar a string de tradução dentro do arquivo plist?
- Atualização -
Eu já tenho uma string localizável. Só estou pensando que posso usar algo como NSLocalizedString (MYSTRING, nil) dentro da cadeia plist. Eu sei que posso criar vários arquivos de info.plist para localização, mas fiquei imaginando que poderia haver uma maneira mais fácil.
Respostas:
Você deve usar o
InfoPlist.strings
arquivo para localizar valores deInfo.plist
. Para fazer isso, vá paraFile->New->File
, escolhaStrings File
naResource
guia deiOS
, nomeie-oInfoPlist
e crie. Abra e insira osInfo.plist
valores que você deseja localizar, como:Agora você pode localizar o
InfoPlist.strings
arquivo com traduções. Boa sorte!EDITAR:
selecione as opções de localização ou ative a localização, se necessário,
você poderá ver o arquivo também no editor do lado esquerdo.
EDITAR:
Aqui está a documentação oficial para
Info.plist
localização de chaves.Créditos a Marco , obrigado por incluir as fotos nesta resposta!
fonte
Todas as opções acima não funcionaram para mim (XCode 7.3), então li a referência da Apple sobre como fazer e é muito mais simples do que o descrito acima. De acordo com a Apple:
Assim, criei um arquivo de seqüência de caracteres chamado InfoPlist.strings e o coloquei na pasta xx.lproj do idioma "xx" (e o adicionei ao projeto usando Arquivo-> Adicionar arquivos a ...). É isso aí. Não há necessidade da chave "Recursos localizados podem ser misturados" = SIM, e não há necessidade de InfoPlist.strings em base.lproj ou en.lproj.
O aplicativo usa o valor-chave Info.plist como o valor padrão se não conseguir encontrar uma chave no arquivo específico do idioma. Assim, coloquei meu valor em inglês no arquivo Info.plist e o traduzido no arquivo específico do idioma, testado e tudo funciona.
Em particular, não há necessidade de localizar o InfoPlist.strings (que cria uma versão do arquivo no arquivo base.lproj, en.lroj e xx.lproj) e, no meu caso, seguir esse caminho não funcionou.
fonte
Se algo não estiver funcionando, verifique se você adicionou:
"Recursos localizados podem ser misturados" = SIM
no info.plist. No meu caso, os arquivos InfoPlist.strings foram apenas ignorados.
fonte
Dicas
Lembre-se de que o iOS Simulator explora por padrão o idioma do seu sistema. Altere também o idioma (e a região) na configuração do simulador do iOS para testar suas traduções.
A cadeia de localização (consulte os documentos da Apple aqui ) deve ser
e não (com aspas "...")
fonte
"NSLocationWhenInUseUsageDescription"="description"
é válido). Pode ser com ou sem.Eu recomendo a leitura dos guias da Apple e a visualização dos recursos da WWDC listados aqui: Tópicos de Internacionalização e Localização
Para responder especificamente à sua pergunta, ao adicionar um novo idioma ao seu projeto , você tem a oportunidade de escolher quais arquivos do InfoPlist incluir (se você tiver vários destinos, terá vários arquivos do Info Pllist). Tudo o que você precisa fazer para obter a tela a seguir é pressionar o + em Localizações e escolher um novo idioma para adicionar suporte.
Depois de adicionar, ele criará os arquivos de string necessários nos diretórios lproj apropriados para o idioma especificado.
--EDITAR--
Apenas para esclarecer, o iOS trocará a string do arquivo Plist com base no idioma atualmente selecionado pelo usuário, usando a chave da entrada plist como a chave no arquivo de strings localizado.
fonte
Localize passo a passo o Info.plist:
Save As
campo, escreva APENAS InfoPlist (maiúsculas "I" e maiúsculas "P")"NSLocationAlwaysAndWhenInUseUsageDescription" = "blabla";
"NSLocationAlwaysUsageDescription" = "blabla2";
Isso é tudo trabalho e você localizou seu arquivo info.plist!
fonte
Para quem está enfrentando o problema do info.plist não ser incluído ao tentar adicionar localizações, como no Xcode 9.
Você precisa tornar o info.plist localizável, acessando-o e clicando no botão localizar no inspetor de arquivos, conforme mostrado abaixo.
O info.plist será incluído nos recursos do arquivo para quando você adicionar novas localizações.
fonte
Como o RGML diz, você pode criar um InfoPlist.strings, localizá-lo e adicionar sua chave e o valor da seguinte forma: "NSLocationWhenInUseUsageDescription" = "Ajuda para me localizar!";
Ele adicionará a chave ao seu info.plist para o idioma especificado.
fonte
No meu caso, tudo foi configurado corretamente, mas o arquivo InfoPlist.strings ainda não foi encontrado.
A única coisa que realmente funcionou foi remover e adicionar os arquivos InfoPlist.strings novamente ao projeto.
fonte
No meu caso, a localização não funcionou causa do símbolo '-' no nome. Exemplo: "aero-Info.plist" E os arquivos localizados: "aero-InfoPlist.strings" e "aeroInfoPlist.strings" não funcionaram.
fonte
Ao usar o
InfoPlist.strings
arquivo (no XCode, ele deve ser colocado ao lado doInfo.plist
arquivo - a localização real do arquivo pode estar em qualquer lugar do projeto, provavelmente) tenha cuidado ao usar o nome abreviado da chave para a tradução.
Eu estava tentando usar
Privacy - Camera Usage Description
, mas a chave de trabalho éNSCameraUsageDescription
fonte