Erro “é traduzido aqui, mas não encontrado na localidade padrão” em strings.xml com translatable = “false”


95

Aqui estão meus valores \ strings.xml (o arquivo padrão) e tudo é autoexplicativo: insira a descrição da imagem aqui

Minhas perguntas):

  1. Como pode ser "não encontrado na localidade padrão" se estou editando a localidade padrão (valores \ strings.xml)?
  2. Como pode ser um erro de tradução de lint se eu definir translatable="false"? Nas pastas values-pl \ strings.xml (e também nas pastas values-ru, values-iw) as strings nem existem? não deveria de qualquer maneira.
  3. Não consigo entender por que não recebo o erro para a string russa.

(Eu mostraria os valores-ru \ string.xml ou values-pl \ string.xml aqui, mas não há nada ali de interesse, já que as strings estão faltando de qualquer maneira ...)


2
Se isso é algo que acontece de vez em quando, apenas execute as limpezas usuais (limpar / reconstruir ou invalidar caches / reiniciar no ASTUDIO, etc.) A menos, é claro, que o erro seja “real”. ;) Meu ponto é, com o Android Studio 3.2 (beta atm), isso acontece de forma aleatória, strings boas são sublinhadas, você toca em algo e o erro desaparece. É bugado. ¯_ (ツ) _ / ¯
Martin Marconcini

1
Experimente este método: stackoverflow.com/a/53780805/7831470
Sagar Giri

Executando o Android Studio 3.3.2 no momento. Isso acontece comigo ocasionalmente se eu duplicar um nome de string no arquivo strings.xml (como ao copiar e colar). É um tanto frustrante, mas limpar e reiniciar parece consertar.
John Riggs,

Isso acontece com muita frequência se você mover um recurso de um arquivo para outro arquivo em outro módulo. Tenho que invalidar o cache todas as vezes, limpeza / compilação não surtem efeito. Parece um problema com a indexação.
3c71

Executar o aplicativo funcionou para mim
kreker

Respostas:


80

Isso aconteceu comigo também

Eu faço 2 coisas:

  • Verifique o arquivo inteiro para ver outra tradução não feita (tenho alguns no arquivo en, mas em pt-br)
  • Limpe, atualize o Gradle e saia e reinicie o Android Studio

8
Limpe o projeto e reinicie o Android Studio. E funcionou;)
Ektos974

17
Caso a limpeza do projeto e a reinicialização do Android Studio não funcionem, tente executar Invalidate Caches / Restart.
Makuno

2
Caches limpos e inválidos / reinicialização. Funcionou para mim também! :)
Reeshabh Ranjan

2
❗ Tente remover a linha e adicioná-la novamente antes de fazer isso. A vida é curta.
Nolan Amy,

Eu acho que u deve adicionar um suplemento para a resposta, ou seja, o comando: Invalidate Caches / Restart. Para não pesquisar nos comentários, como fiz por exemplo.
Morozov

68

A reconstrução pode levar muito tempo. YMMV, mas ...

Basta remover a linha problemática e adicioná-la novamente.

Funcionou para mim. Muito rápido.


3
Tive que fazer ainda menos. Renomeei a string e depois mudei de volta.
Matt

1
Uau! isso é super rápido.
userAbhi

3
Selecione a linha problemática, ctrl-X, ctrl-V. Feito. Funcionou para mim!
ONE

1
Selecione a linha problemática, exclua, desfaça (comando / controle z). Feito. Funcionou para mim!
HendraWD

1
Soluções mais rápidas
mochadwi

22

No meu caso, isso me ajudou:

  1. Selecione as strings que causam o erro.
  2. Corte-os.
  3. Cole-os novamente

Se não funcionar para você, tente adicionar as mesmas strings ao strings.xml(v21)arquivo.


9

Pressione Invalidate Caches / Restart ... para reiniciar o Android Studio. Funcionou para mim Na verdade, isso aconteceu quando eu copiei arquivos do meu outro computador e colei através do explorador de arquivos.


5

Eu recebi a mesma mensagem de erro, apenas com o problema estranho de que ela foi lançada no próprio local padrão e em todas as traduções. Acontece que você não deve usar pontos em seu nome (por exemplo, name = "bla.blub") porque ele será convertido internamente para "bla_blub" e não poderá corresponder a "bla.blub", daí o erro. Eu só tive que mudar os pontos para sublinhados na localidade padrão e, em seguida, todos os outros erros em outras traduções (incluindo pontos no nome) também desapareceram.

Mas esteja ciente de que outras ferramentas de construção ainda podem criar problemas, então substitua todos os pontos por sublinhados!


4

Sair do Android Studio e reiniciá-lo corrigiu para mim.


Funciona para mim também, é muito menos doloroso do que invalidar o cache e reiniciar.
3c71

2

Criei uma ferramenta para gerenciar o status de tradução de aplicativos Android. Ele não apenas informa quais strings estão faltando nos outros idiomas, mas também pode relatar e limpar as strings que você pode ter excluído do arquivo de tradução padrão.

https://github.com/gubatron/android-missing-strings

Para limpar todas as sobras em outros idiomas invoque assim

./ams --cleanleftovers -o all.txt

Isso limpará as strings restantes e produzirá o relatório de strings ausentes para todos os idiomas no arquivo all.txt



2

Resolvi esse problema seguindo as etapas abaixo:

  1. limpando meu projeto

  2. reconstruindo isso

  3. e finalmente pressionando caches inválidos / Reiniciar no menu de arquivo


1

Apenas certifique-se de ter as mesmas convenções de nomenclatura em todos os arquivos de strings, incluindo a mesma capitalização. digamos que você tenha "sign_in" em strings.xml e "sign_In" em seu fr / string.xml, então ele apresentará um erro em fr / strings.xml como "é traduzido aqui, mas não encontrado no locale padrão". Então, quando você edita para "sign_in". O erro será removido.


0

Copiar e colar não funcionou para mim.

Eu também tentei limpar e reiniciar, o erro anterior tinha desaparecido, mas novas strings inseridas ainda têm novos erros ocorrendo.

Tentei fechar o arquivo strings.xml aberto e o Translations Editor e reiniciá-lo.

arquivo strings.xml e Editor de traduções

Isso funciona para mim.


0

Eu estava tendo esse problema para todas as strings no meu arquivo xml.

A questão é que seu padrão strings.xmlnão deve ter um tools:localeatributo como os outros arquivos traduzidos têm. Em caso afirmativo, sempre que compilo o aplicativo no modo de lançamento, ele o trata como outro arquivo traduzido.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.