"È tradotto qui ma non trovato nella lingua predefinita" errore in strings.xml con translatable = "false"


98

Ecco i miei valori \ strings.xml (il file predefinito) e tutto si spiega da sé: inserisci qui la descrizione dell'immagine

Le mie domande):

  1. Come può essere "non trovato nella localizzazione predefinita" se sto modificando la localizzazione predefinita (values ​​\ strings.xml)?
  2. Come può essere un errore di traduzione di lanugine se impostato translatable="false"? Nelle cartelle values-pl \ strings.xml (e anche values-ru, values-iw) le stringhe non esistono nemmeno? non dovrebbe comunque.
  3. Non riesco a capire perché non ricevo l'errore per la stringa russa.

(Mostrerei i valori-ru \ string.xml o i valori-pl \ string.xml qui ma non c'è nulla di interessante, poiché le stringhe mancano comunque ...)


2
Se questo è qualcosa che accade di tanto in tanto, basta eseguire le solite pulizie (pulire / ricostruire o invalidare cache / riavviare su ASTUDIO, ecc.) A meno che, ovviamente, l'errore sia "reale". ;) Il punto è che, con Android Studio 3.2 (beta atm), succede un po 'in modo casuale, le stringhe buone vengono sottolineate, tocchi qualcosa e l'errore scompare. È bacato. ¯_ (ツ) _ / ¯
Martin Marconcini,


Al momento è in esecuzione Android Studio 3.3.2. Questo mi accade occasionalmente se duplico un nome di stringa nel file strings.xml (come quando si copia-incolla). È un po 'frustrante, ma la pulizia e il riavvio sembrano risolverlo.
John Riggs,

Succede molto spesso se sposti una risorsa da un file a un altro file in un altro modulo. Devo invalidare la cache ogni volta, la pulizia / compilazione non ha alcun effetto. Sembra un problema con l'indicizzazione.
3c71

L'esecuzione dell'app ha funzionato per me
kreker

Risposte:


82

questo è successo anche a me

Faccio 2 cose:

  • Verifica l'intero file per vedere un'altra traduzione non eseguita (ne ho quelle nel file en ma in pt-br)
  • Pulisci, aggiorna gradle, esci e riavvia Android Studio

8
Basta pulire il progetto e riavviare Android Studio. E ha funzionato;)
Ektos974

19
Nel caso in cui la pulizia del progetto e il riavvio di Android Studio non funzionino, prova a eseguire Invalidate Caches / Restart.
Makuno

2
Cache pulite e invalidate / riavvio. Ha funzionato anche per me! :)
Reeshabh Ranjan

2
❗ Prova a rimuovere la riga e ad aggiungerla di nuovo prima di farlo. La vita è breve.
Nolan Amy

Credo u dovrebbe aggiungere un supplemento alla risposta, vale a dire il comando: Invalidate Caches / Restart. Per non cercare nei commenti, come ho fatto io ad esempio.
Morozov

68

La ricostruzione può richiedere molto tempo. YMMV, ma ...

Rimuovi semplicemente la linea incriminata e aggiungila di nuovo.

Ha funzionato per me. Molto veloce.


3
Ho dovuto fare ancora meno. Ho rinominato la stringa e poi l'ho cambiata di nuovo.
Matt

1
Wow! questo è super veloce.
userAbhi

3
Seleziona la linea incriminata, ctrl-X, ctrl-V. Fatto. Ha funzionato per me!
ONE

1
Seleziona la riga incriminata, elimina, annulla (comando / controllo z). Fatto. Ha funzionato per me!
HendraWD

1
Soluzioni più veloci
mochadwi

22

Nel mio caso questo mi ha aiutato:

  1. Seleziona le stringhe che causano l'errore.
  2. Tagliali.
  3. Incollali di nuovo

Se non funziona, prova ad aggiungere le stesse stringhe al strings.xml(v21)file.


10

Premi Invalidate Caches / Restart ... per riavviare Android Studio. Ha funzionato per me. In realtà questo è accaduto quando avevo copiato i file dal mio altro computer e incollati tramite Esplora file.


5

Ho ricevuto lo stesso messaggio di errore, solo con lo strano problema che è stato lanciato nella lingua predefinita stessa e in tutte le traduzioni. Risulta che non dovresti usare i punti nel tuo nome (es. Name = "bla.blub") perché verrà convertito internamente in "bla_blub" e quindi non può corrispondere a "bla.blub", da qui l'errore. Dovevo solo cambiare i punti in sottolineature nelle impostazioni internazionali predefinite e quindi anche tutti gli altri errori in altre traduzioni (inclusi i punti nel nome) erano spariti.

Ma tieni presente che altri strumenti di compilazione possono ancora creare problemi, quindi sostituisci tutti i punti con le sottolineature!


4

Uscire da Android Studio e riavviarlo lo ha risolto per me.


Funziona anche per me, è molto meno doloroso che invalidare la cache e riavviare.
3c71

4

Ho risolto questo problema seguendo i passaggi seguenti:

  1. pulire il mio progetto

  2. ricostruendolo

  3. e infine premendo cache non valide / Riavvia nel menu file


2

Ho creato uno strumento per gestire lo stato della traduzione delle app Android. Non solo ti dice quali stringhe mancano nelle altre lingue, ma può anche segnalare e pulire le stringhe rimanenti che potresti aver cancellato nel tuo file di traduzione predefinito.

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

Per pulire tutti gli avanzi in altre lingue, invoca in questo modo

./ams --cleanleftovers -o all.txt

Questo pulirà le stringhe rimanenti e produrrà il rapporto sulle stringhe mancanti per tutte le lingue nel file all.txt



1

Assicurati solo di avere le stesse convenzioni di denominazione su tutti i file di stringhe, comprese le stesse maiuscole. diciamo che se hai "sign_in" in strings.xml e "sign_In" in fr / string.xml, quindi ti darà un errore su fr / strings.xml come "è tradotto qui ma non trovato nella localizzazione predefinita". Quindi, quando modifichi in "sign_in". L'errore rimuoverà.


0

Copia e incolla non ha funzionato per me.

Ho anche provato Pulisci e riavvia, l'errore precedente era scomparso ma le nuove stringhe inserite hanno ancora nuovi errori.

Ho provato a chiudere il file strings.xml aperto e Editor delle traduzioni , quindi riavviato.

file strings.xml ed editor delle traduzioni

Per me va bene.


0

Ho riscontrato questo problema per tutte le stringhe nel mio file xml.

Il fatto è che il tuo valore predefinito strings.xmlnon dovrebbe avere un tools:localeattributo come hanno gli altri file tradotti. In tal caso, ogni volta che compilo l'app in modalità di rilascio, la tratta come un altro file tradotto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.