ผ้าสำลี: วิธีละเว้นข้อผิดพลาด“ <key> ไม่ได้แปลเป็นภาษา <l>>” อย่างไร


189

ฉันไม่สามารถคอมไพล์ / ดีบักแอพ Android ของเราได้เพราะไฟล์การแปลยังไม่สมบูรณ์

เครื่องมือตรวจสอบ IDE ของฉันLintสร้างข้อผิดพลาดที่บอกว่า:

newCardsOrderVals ไม่ได้แปลใน ar, bg, ca, cs

การคอมไพล์ / ติดตั้ง / รันด้วย Ant ทำงานได้ดี แต่ฉันต้องการใช้ IDE ของฉันเพื่อช่วยในการดีบัก

มีวิธีปิดเช็คนี้โดยเฉพาะหรือทำให้เป็นการเตือนแทนที่จะเป็นข้อผิดพลาดหรือไม่?

ฉันเข้าใจว่าก่อนที่จะเผยแพร่เราจะต้องได้รับการแปลไฟล์อย่างถูกต้อง แต่ในขณะนี้มันไม่ได้มีความสำคัญเนื่องจากหน้าจอจะถูกปรับเปลี่ยนบ่อยครั้งมาก


1
มีวิธีกำหนดค่าภาษาทั้งหมดที่ถูกตั้งค่าสถานะเป็น "ไม่ได้แปลหรือไม่" ฉันได้รับข้อผิดพลาดเช่น "es เขาและ iw" ทำไมฉันถึงได้รับภาษาเหล่านั้น? ฉันจะกำหนดค่าแอพ Android เพื่อ จำกัด การตั้งค่าเป็น "en" เท่านั้นได้อย่างไร
ภายใน

@inder: อาจเป็นเพราะคุณมีไดเรกทอรีเช่น "values-he" ฯลฯ ใน res / folder ของคุณ?
Nicolas Raoul

1
ไม่ฉันไม่มีไดเรกทอรีดังกล่าว เฉพาะค่าการจัดวางและวาดได้
ภายใน

7
ใช่, เขาและฉันมาจากห้องสมุด Facebook SDK
Madej

2
นี่เป็นข้อผิดพลาดใน Android Lint: code.google.com/p/android/issues/detail?id=50525
altumano

คำตอบ:


348

สตูดิโอ Android:

  • "ไฟล์"> "การตั้งค่า" และพิมพ์ "MissingTranslation" ในช่องค้นหา

คราส:

  • Windows / Linux: ใน "หน้าต่าง"> "การตั้งค่า"> "Android"> "การตรวจสอบข้อผิดพลาด Lint"
  • Mac: "Eclipse"> "Preferences"> "Android"> "การตรวจสอบข้อผิดพลาด Lint"

ค้นหาMissingTranslationบรรทัดและตั้งWarningเป็นตามที่เห็นด้านล่าง

Missing translations, is not translated in


2
... มันอยู่ภายใต้ "Window"> "Preferences"> "Android"> "Lint Error Checking"
Ollie Bennett

2
มันมีประโยชน์ แต่ฉันไม่ได้มีปัญหานี้มานานมากจนกระทั่งมันปรากฏขึ้นทันที และฉันไม่รู้ว่าทำไม
pktangyue

ขอบคุณสำหรับการโพสต์ที่มีค่าของคุณ
Pawan asati

FYI ภายใต้ Android Studio เป็น "ไฟล์"> "การตั้งค่า" และ "MissingTranslation" ในช่องค้นหา
เพียร์

86

คุณสามารถตั้งค่า attribute translatable = "false" ในคำจำกัดความเช่นนี้:

<string name="account_setup_imap" translatable="false">IMAP</string>

สำหรับข้อมูลเพิ่มเติม: http://tools.android.com/recent/non-translatablestrings


1
ผมบอกว่า "ไฟล์การแปลไม่สมบูรณ์เลย " พวกเขากำลังถูกเติมเต็มทีละเล็กทีละน้อย translatable = "false" จะป้องกันไม่ให้ใครแปล
Nicolas Raoul

3
ในขณะที่คำตอบนั้นไม่เกี่ยวข้องกับคำถามโดยตรงฉันคิดว่ามันเป็นคำตอบที่ยอดเยี่ยมสำหรับคนอย่างฉันที่พบหัวข้อนี้เมื่อ Google "วิธีทำให้ผ้าสำลีไม่ต้องกังวลเกี่ยวกับค่าคงที่แอป / พารามิเตอร์ของฉัน" ขอบคุณ efor18!
aka_sh

83

ในการเพิกเฉยสิ่งนี้ใน build แบบ gradle ให้เพิ่มส่วนนี้ลงในส่วน android ของไฟล์บิลด์ของคุณ:

lintOptions {
   disable 'MissingTranslation'
}

2
ขอบคุณมากบันทึกวันของฉันในการค้นหาสตริงที่ถูกต้องทั้งหมดสำหรับการผลิต
D-Kent

สิ่งที่ดีสิ่งนี้ทำได้
Mirko

เพิ่มสิ่งนี้ลงในโมดูลแอปของฉันแล้วส่งให้ฉัน
พุธ

23

สิ่งนี้จะทำให้ Lint ละเว้นข้อผิดพลาดการแปลที่ขาดหายไปสำหรับสตริงทั้งหมดในไฟล์ แต่ไฟล์ทรัพยากรสตริงอื่น ๆ สามารถตรวจสอบได้หากจำเป็น

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" 
    tools:ignore="MissingTranslation">

นี่อาจเป็นวิธีที่ถูกต้องที่สุดในการดำเนินการต่อโดยไม่ต้องปิดการใช้งานผ้าสำลีสำหรับโครงการทั้งหมด
MatPag

11

หากคุณต้องการปิดคำเตือนเกี่ยวกับสตริงเฉพาะคุณสามารถใช้คำสั่งต่อไปนี้:

strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>    

    <!--suppress MissingTranslation -->
    <string name="some_string">ignore my translation</string>
    ...

</resources>

หากคุณต้องการเตือนเกี่ยวกับสายอักขระที่เฉพาะเจาะจงแทนที่จะเกิดข้อผิดพลาดคุณจะต้องสร้างกฎ Lint แบบกำหนดเองเพื่อปรับสถานะความรุนแรงของสิ่งต่าง ๆ

http://tools.android.com/tips/lint-custom-rules


1
+1 วิธีที่ดีในการทำเพียงครั้งเดียวสำหรับทุกคนเพื่อให้ผู้พัฒนาทีมทั้งหมดไม่จำเป็นต้องแก้ไขการตั้งค่า IDE วิธีใดที่จะทำให้เป็นคำเตือนแทนที่จะปราบปรามอย่างสมบูรณ์?
Nicolas Raoul

คุณสามารถสร้างกฎผ้าสำลีที่กำหนดเองเพื่อปรับสถานะความรุนแรงสำหรับสิ่งที่เฉพาะเจาะจง มีตัวอย่างอยู่ที่นี่: tools.android.com/tips/lint-custom-rules
Eduko

9

ใส่ในlint.xmlไฟล์นี้:

<?xml version="1.0" encoding="UTF-8"?>
<lint>
    ...

    <issue
        id="MissingTranslation"
        severity="ignore" />
</lint>

สำหรับรายละเอียดเพิ่มเติม: คำเตือนปราบปรามผ้าสำลี


8

เพิ่มบรรทัดในไฟล์ /res/values.xml ของคุณในแท็บ root ของทรัพยากรเช่นนี้:

<resources
xmlns:tools="http://schemas.android.com/tools" 
    tools:locale="en" tools:ignore="MissingTranslation">

เครื่องมือ: locale ตั้งค่าภาษาท้องถิ่นเป็นภาษาอังกฤษไม่จำเป็นต้องแปลภาษาในภายหลังสำหรับสตริงและเครื่องมือทรัพยากรทั้งหมด: ละเว้นให้ Lint ให้ไม่มีการแปลที่ขาดหายไปของค่าสตริงทรัพยากร


6

เพิ่มการติดตามไฟล์ gradle ของคุณในส่วน android

    lintOptions {
       disable 'MissingTranslation'
    }

5

นอกจากนี้

ไม่ใช่คุณสมบัติที่ขึ้นกับโครงการการตั้งค่า Eclipse
ใน Mac, Eclipse> ค่ากำหนด

ป้อนคำอธิบายรูปภาพที่นี่


3

อีกวิธีหนึ่งคือการระบุภาษาที่คุณต้องการสนับสนุนและกรองส่วนที่เหลือโดยใช้ตัวเลือก 'resConfigs' กับ Gradle

ลองดูคำตอบอื่น ๆสำหรับรายละเอียด

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


1

คุณสามารถใส่ทรัพยากรที่คุณไม่ต้องการแปลเป็นไฟล์ที่เรียกว่า donottranslate.xmlนอกจากนี้คุณยังสามารถนำทรัพยากรที่คุณไม่ต้องการที่จะแปลไปยังไฟล์ที่เรียกว่า

ตัวอย่างและคำอธิบาย: http://tools.android.com/recent/non-translatablestrings


นี่เป็นวิธีที่ดีที่สุดที่จะทำและมีการจัดระเบียบ
Calvin Park

1

หลายคนได้รับคำตอบในการทำงานที่แตกต่างกันและฉันก็มีข้อผิดพลาดเหมือนกันฉันก็ไม่สนใจด้วยการทำสิ่งต่อไปนี้กับ eclipse

  1. คลิกที่ Windows
  2. คลิกที่การตั้งค่า
  3. เลือก android> Lint Error Checking
  4. คลิกที่ละเว้นทั้งหมด> นำไปใช้> ตกลง

แค่นั้นแหละ.


2
สิ่งนี้จะไม่สนใจการตั้งค่าผ้าสำลีทั้งหมด ไม่เพียง แต่คำแปลที่หายไป
Luciano Rodríguez

1

ต่อไปนี้ใช้งานได้สำหรับฉัน

  • คลิกที่ Windows
  • คลิกที่การตั้งค่า
  • เลือก android> Lint Error Checking
  • ค้นหาและเลือกการตรวจสอบผ้าสำลีที่เกี่ยวข้องและ
  • ตั้งค่าความรุนแรงเป็น 'ละเว้น' (ด้านล่างขวา)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.