"ถูกแปลที่นี่ แต่ไม่พบข้อผิดพลาดในภาษาเริ่มต้น" ใน strings.xml ที่แปลได้ = "false"


98

นี่คือค่าของฉัน\ strings.xml (ไฟล์เริ่มต้น) และทุกอย่างอธิบายได้ด้วยตนเอง: ป้อนคำอธิบายภาพที่นี่

คำถามของฉัน:

  1. จะเป็น "not found in default locale" ได้อย่างไรถ้าฉันกำลังแก้ไข default locale (values ​​\ strings.xml)
  2. จะเป็นข้อผิดพลาดในการแปลผ้าสำลีได้อย่างไรถ้าฉันตั้งค่าtranslatable="false"? ใน values-pl \ strings.xml (และโฟลเดอร์ values-ru, values-iw ด้วย) สตริงไม่มีอยู่ด้วยซ้ำ? มันไม่ควรอยู่แล้ว
  3. ฉันไม่เข้าใจว่าทำไมฉันไม่ได้รับข้อผิดพลาดสำหรับสตริงภาษารัสเซีย

(ฉันจะแสดงค่า -ru \ string.xml หรือ values-pl \ string.xml ที่นี่ แต่ไม่มีอะไรน่าสนใจเนื่องจากสตริงขาดหายไป ... )


2
หากนี่เป็นสิ่งที่เกิดขึ้นเป็นระยะ ๆ เพียงแค่ทำความสะอาดตามปกติ (ล้าง / สร้างใหม่หรือทำให้แคชไม่ถูกต้อง / รีสตาร์ทบน ASTUDIO ฯลฯ ) เว้นแต่ข้อผิดพลาดจะเป็น "จริง" ;) ประเด็นของฉันคือด้วย Android Studio 3.2 (beta atm) มันเกิดขึ้นแบบสุ่มสตริงที่ดีถูกขีดเส้นใต้คุณสัมผัสบางสิ่งและข้อผิดพลาดจะหายไป มันเป็นรถ ¯_ (ツ) _ / ¯
Martin Marconcini

1
ลองใช้วิธีนี้: stackoverflow.com/a/53780805/7831470
Sagar Giri

กำลังใช้ Android Studio 3.3.2 ในขณะนี้ สิ่งนี้เกิดขึ้นกับฉันเป็นครั้งคราวหากฉันทำซ้ำชื่อสตริงในไฟล์ strings.xml (เช่นเมื่อคัดลอกวาง) มันค่อนข้างน่าผิดหวัง แต่การทำความสะอาดและการรีสตาร์ทดูเหมือนจะแก้ไขได้
John Riggs

เกิดขึ้นบ่อยมากหากคุณย้ายทรัพยากรจากไฟล์หนึ่งไปยังไฟล์อื่นในโมดูลอื่น ฉันต้องยกเลิกแคชทุกครั้งการล้างข้อมูล / สร้างไม่มีผลใด ๆ ดูเหมือนจะมีปัญหากับการจัดทำดัชนี
3c71

การเรียกใช้แอปได้ผลสำหรับฉัน
kreker

คำตอบ:


82

สิ่งนี้ก็เกิดขึ้นกับฉันเช่นกัน

ฉันทำ 2 อย่าง:

  • ตรวจสอบไฟล์ทั้งหมดเพื่อดูการแปลอื่นที่ไม่ได้ทำ (ฉันมีไฟล์อยู่ในไฟล์ แต่ใน pt-br)
  • ทำความสะอาดอัปเดต gradle และออกและรีสตาร์ท Android Studio

8
เพียงทำความสะอาดโปรเจ็กต์และรีสตาร์ท Android Studio และมันใช้งานได้;)
Ektos974

19
ในกรณีที่ทำความสะอาดโปรเจ็กต์และรีสตาร์ท Android Studio ไม่ได้ผลโปรดลองเรียกใช้ Invalidate Caches / Restart
makuno

2
แคชที่ล้างแล้วและไม่ถูกต้อง / รีสตาร์ท ทำงานให้ฉันด้วย! :)
Reeshabh Ranjan

2
❗ลองลบบรรทัดและเพิ่มใหม่ก่อนที่จะดำเนินการนี้ ชีวิตนั้นสั้น.
Nolan Amy

Invalidate Caches / Restartผมคิดว่ายูควรเพิ่มอาหารเสริมเพื่อคำตอบคือคำสั่ง: เพื่อไม่ให้ค้นหาในความคิดเห็นดังที่ฉันยกตัวอย่าง
Morozov

68

การสร้างใหม่อาจใช้เวลานาน YMMV แต่ ...

เพียงแค่ลบบรรทัดที่กระทำผิดแล้วเพิ่มใหม่

ทำงานให้ฉัน เร็วมาก.


3
ฉันต้องทำแม้แต่น้อย ฉันเปลี่ยนชื่อสตริงแล้วเปลี่ยนกลับ
Matt

1
ว้าว! มันเร็วมาก
userAbhi

3
เลือกบรรทัดที่ละเมิด ctrl-X, ctrl-V เสร็จแล้ว ทำงานให้ฉัน!
ONE

1
เลือกบรรทัดที่ละเมิดลบเลิกทำ (คำสั่ง / ควบคุม z) เสร็จแล้ว ทำงานให้ฉัน!
HendraWD

1
โซลูชันที่เร็วขึ้น
mochadwi

22

ในกรณีของฉันสิ่งนี้ช่วยฉัน:

  1. เลือกสตริงที่ทำให้เกิดข้อผิดพลาด
  2. ตัดพวกเขา
  3. วางอีกครั้ง

หากไม่ได้ผลให้ลองเพิ่มสตริงเดียวกันลงในstrings.xml(v21)ไฟล์


10

กดInvalidate Caches / Restart ...เพื่อรีสตาร์ท android studio มันได้ผลสำหรับฉัน จริงๆแล้วสิ่งนี้เกิดขึ้นเมื่อฉันคัดลอกไฟล์จากคอมพิวเตอร์เครื่องอื่นและวางผ่าน file explorer


5

ฉันมีข้อความแสดงข้อผิดพลาดเหมือนกัน แต่มีปัญหาแปลก ๆ ที่มันถูกส่งไปในภาษาเริ่มต้นและการแปลทั้งหมด ปรากฎว่าคุณไม่ควรใช้จุดในชื่อของคุณ (เช่น name = "bla.blub") เนื่องจากจะถูกแปลงภายในเป็น "bla_blub" จากนั้นจะไม่สามารถจับคู่กับ "bla.blub" ได้จึงเกิดข้อผิดพลาด ฉันต้องเปลี่ยนจุดเป็นขีดเส้นใต้ในภาษาเริ่มต้นจากนั้นข้อผิดพลาดอื่น ๆ ทั้งหมดในการแปลอื่น ๆ (รวมถึงจุดในชื่อ) ก็หายไปเช่นกัน

แต่โปรดทราบว่าเครื่องมือสร้างอื่น ๆ ยังคงสร้างปัญหาได้ดังนั้นให้แทนที่จุดทั้งหมดด้วยขีดเส้นใต้แทน!


4

การออกจาก Android Studio และเริ่มต้นใหม่แก้ไขให้ฉัน


มันใช้ได้กับฉันเช่นกันมันเจ็บปวดน้อยกว่าการทำให้แคชไม่ถูกต้องและรีสตาร์ท
3c71

4

ฉันแก้ไขปัญหานี้โดยทำตามขั้นตอนด้านล่าง:

  1. ทำความสะอาดโครงการของฉัน

  2. สร้างมันขึ้นมาใหม่

  3. และในที่สุดก็กดแคชที่ไม่ถูกต้อง / รีสตาร์ทในเมนูไฟล์


2

ฉันได้สร้างเครื่องมือสำหรับจัดการสถานะการแปลของแอป Android ไม่เพียง แต่บอกให้คุณทราบว่าสตริงใดที่ขาดหายไปในภาษาอื่น ๆ เท่านั้น แต่ยังสามารถรายงานและล้างสตริงด้านซ้ายที่คุณอาจลบออกในไฟล์การแปลเริ่มต้นของคุณ

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

หากต้องการล้างโอเวอร์ที่เหลือในภาษาอื่น ๆ ให้เรียกใช้เช่นนี้

./ams --cleanleftovers -o all.txt

สิ่งนี้จะล้างสตริงที่เหลือและจะส่งออกรายงานสตริงที่ขาดหายไปสำหรับทุกภาษาลงในไฟล์ all.txt


2

คุณเพียงแค่ต้องคัดลอกบรรทัดที่ละเมิด (หรือเพียงหนึ่งในหลายบรรทัดที่ละเมิด) ลบออกแล้ววางใหม่ นั่นเป็นการลบปัญหาให้ฉัน


แม้ว่าสิ่งนี้อาจช่วย OP ได้ แต่ควรเพิ่มรายละเอียดคำอธิบายตัวอย่างและอื่น ๆ เพิ่มเติมโปรดระบุคำตอบที่ไม่ต้องการคำชี้แจงจากผู้ถาม
ทิว

1

ตรวจสอบให้แน่ใจว่าคุณมีรูปแบบการตั้งชื่อที่เหมือนกันสำหรับไฟล์สตริงทั้งหมดรวมถึงการใช้ตัวพิมพ์ใหญ่เหมือนกัน สมมติว่าคุณมี "sign_in" ใน strings.xml และ "sign_In" ใน fr / string.xml ของคุณดังนั้นมันจะทำให้คุณมีข้อผิดพลาดใน fr / strings.xml เช่น "แปลที่นี่ แต่ไม่พบในภาษาเริ่มต้น" ดังนั้นเมื่อคุณแก้ไขเป็น "sign_in" ข้อผิดพลาดจะลบออก


0

การคัดลอกและวางไม่ได้ผลสำหรับฉัน

ฉันยังลอง Clean และรีสตาร์ทข้อผิดพลาดก่อนหน้านี้หายไป แต่สตริงที่ป้อนใหม่ยังคงมีข้อผิดพลาดใหม่

ฉันลองปิดไฟล์strings.xmlและTranslations Editor ที่เปิดอยู่เปิดอยู่แล้วรีสตาร์ท

ไฟล์ strings.xml และตัวแก้ไขการแปล

ที่เหมาะกับฉัน


0

ฉันประสบปัญหานี้สำหรับสตริงทั้งหมดในไฟล์ xml ของฉัน

สิ่งนี้คือค่าเริ่มต้นของคุณstrings.xmlไม่ควรมีtools:localeแอตทริบิวต์เหมือนที่ไฟล์แปลอื่น ๆ มี หากเป็นเช่นนั้นเมื่อใดก็ตามที่ฉันรวบรวมแอปในโหมดรีลีสแอปจะถือว่าเป็นไฟล์ที่แปลแล้วอื่น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.