Kesalahan “diterjemahkan di sini tetapi tidak ditemukan dalam lokal default” di strings.xml dengan translatable = “false”


98

Berikut adalah nilai - nilai saya \ strings.xml (file default) dan semuanya sudah jelas: masukkan deskripsi gambar di sini

Pertanyaan saya):

  1. Bagaimana bisa "tidak ditemukan di lokal default" jika saya mengedit lokal default (values ​​\ strings.xml)?
  2. Bagaimana ini bisa menjadi kesalahan terjemahan lint jika saya menyetelnya translatable="false"? Dalam folder values-pl \ strings.xml (dan values-ru, values-iw juga) stringnya bahkan tidak ada? seharusnya tidak.
  3. Sepertinya saya tidak mengerti mengapa saya tidak mendapatkan error untuk string Rusia.

(Saya akan menunjukkan nilai-ru \ string.xml atau values-pl \ string.xml di sini tetapi tidak ada yang menarik di sana, karena stringnya tetap hilang ...)


2
Jika ini adalah sesuatu yang terjadi sesekali, cukup lakukan pembersihan biasa (bersihkan / bangun kembali atau batalkan cache / restart di ASTUDIO, dll.) Kecuali, tentu saja, kesalahannya “nyata”. ;) Maksud saya adalah, dengan Android Studio 3.2 (beta atm), itu terjadi agak acak, string yang bagus digarisbawahi, Anda menyentuh sesuatu dan kesalahannya hilang. Ini buggy. ¯_ (ツ) _ / ¯
Martin Marconcini


Menjalankan Android Studio 3.3.2 saat ini. Ini terjadi pada saya sesekali jika saya menduplikasi nama string di file strings.xml (seperti saat menyalin-menempel). Ini agak membuat frustrasi tetapi membersihkan dan memulai ulang tampaknya memperbaikinya.
John Riggs

Ini sangat sering terjadi jika Anda memindahkan sumber daya dari satu file ke file lain di modul lain. Saya harus membatalkan cache setiap kali, pembersihan / pembangunan tidak berpengaruh. Sepertinya ada masalah dengan pengindeksan.
3c71

Menjalankan aplikasi bekerja untuk saya
kreker

Jawaban:


82

ini terjadi pada saya juga

Saya melakukan 2 hal:

  • Verifikasi seluruh file untuk melihat terjemahan lain belum selesai (saya punya di file en tetapi di pt-br)
  • Bersihkan, perbarui gradle dan tutup dan mulai ulang Android Studio

8
Cukup bersihkan proyek dan mulai ulang Android Studio. Dan itu berhasil;)
Ektos974

19
Jika membersihkan proyek dan memulai ulang Android Studio tidak berhasil, coba jalankan Invalidate Caches / Restart.
makuno

2
Cache / Restart yang Dibersihkan dan Tidak Valid. Bekerja untuk saya juga! :)
Reeshabh Ranjan

2
❗ Coba hapus garis dan tambahkan kembali sebelum Anda melakukan ini. Hidup ini singkat.
Nolan Amy

Saya pikir u harus menambahkan suplemen untuk jawaban, yaitu perintah: Invalidate Caches / Restart. Agar tidak mencari di komentar, seperti yang saya lakukan misalnya.
Morozov

68

Membangun kembali bisa memakan waktu lama. YMMV, tapi ...

Cukup hapus garis yang melanggar dan tambahkan kembali.

Bekerja untuk saya. Sangat cepat.


3
Saya harus melakukan lebih sedikit lagi. Saya mengganti nama string dan kemudian mengubahnya kembali.
Matt

1
Wow! ini sangat cepat.
userAbhi

3
Pilih garis yang melanggar, ctrl-X, ctrl-V. Selesai. Bekerja untuk saya!
SATU

1
Pilih baris yang melanggar, hapus, batalkan (perintah / kontrol z). Selesai. Bekerja untuk saya!
HendraWD

1
Solusi lebih cepat
mochadwi

22

Dalam kasus saya, ini membantu saya:

  1. Pilih string yang menyebabkan kesalahan.
  2. Potong mereka.
  3. Tempel lagi

Jika tidak berhasil untuk Anda, coba tambahkan string yang sama ke strings.xml(v21)file.


10

Tekan Invalidate Caches / Restart ... untuk memulai ulang android studio. Itu berhasil untuk saya. Sebenarnya ini terjadi ketika saya menyalin file dari komputer saya yang lain dan menempelkannya melalui file explorer.


5

Saya mendapatkan pesan kesalahan yang sama, hanya dengan masalah aneh yang muncul di lokal default itu sendiri dan semua terjemahan. Ternyata Anda tidak boleh menggunakan titik pada nama Anda (misalnya name = "bla.blub") karena akan diubah secara internal menjadi "bla_blub" dan kemudian tidak bisa cocok dengan "bla.blub", maka kesalahannya. Saya hanya perlu mengubah titik menjadi garis bawah di lokal default dan kemudian semua kesalahan lain dalam terjemahan lain (termasuk titik pada nama) juga hilang.

Namun ketahuilah bahwa alat build lain masih dapat menimbulkan masalah, jadi ganti semua titik dengan garis bawah!


4

Keluar dari Android Studio dan memulai ulang memperbaikinya untuk saya.


Ini bekerja untuk saya juga, itu jauh lebih tidak menyakitkan daripada membatalkan cache dan memulai ulang.
3c71

4

Saya memecahkan masalah ini dengan mengikuti langkah-langkah di bawah ini:

  1. membersihkan proyek saya

  2. membangunnya kembali

  3. dan terakhir menekan cache tidak valid / Restart di menu file


2

Saya telah membuat alat untuk mengelola status terjemahan aplikasi android. Ini tidak hanya memberi tahu Anda string apa yang hilang di bahasa lain, tetapi juga dapat melaporkan, dan membersihkan string yang tersisa yang mungkin telah Anda hapus pada file terjemahan default Anda.

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

Untuk membersihkan semua sisa bahasa lain, panggil seperti ini

./ams --cleanleftovers -o all.txt

Ini akan membersihkan string yang tersisa dan akan menampilkan laporan string yang hilang untuk semua bahasa ke dalam file all.txt



1

Pastikan Anda memiliki konvensi penamaan yang sama pada semua file string termasuk kapitalisasi yang sama. katakanlah jika Anda memiliki "sign_in" di strings.xml dan "sign_In" di fr / string.xml, maka itu akan memberi Anda kesalahan pada fr / strings.xml seperti "diterjemahkan di sini tetapi tidak ditemukan di lokal default". Jadi, saat Anda mengedit ke "sign_in". Kesalahan akan dihapus.


0

Salin dan tempel tidak berhasil untuk saya.

Saya juga mencoba Bersihkan dan memulai ulang, kesalahan sebelumnya hilang tetapi string baru yang dimasukkan masih memiliki kesalahan baru.

Saya mencoba menutup file strings.xml yang dibuka dan Translations Editor , lalu memulai ulang.

strings.xml dan Translations Editor

Itu berhasil untuk saya.


0

Saya mengalami masalah ini untuk semua string di file xml saya.

Masalahnya, default Anda strings.xmltidak boleh memiliki tools:localeatribut seperti yang dimiliki file terjemahan lainnya. Jika ya, setiap kali saya mengompilasi aplikasi dalam mode rilis, itu akan memperlakukannya sebagai file terjemahan lain.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.