Lỗi “được dịch ở đây nhưng không tìm thấy ở ngôn ngữ mặc định” trong string.xml với dịch có thể dịch = “false”


98

Đây là giá trị của tôi \ string.xml (tệp mặc định) và mọi thứ đều tự giải thích: nhập mô tả hình ảnh ở đây

Những câu hỏi của tôi):

  1. Làm thế nào có thể "không tìm thấy trong ngôn ngữ mặc định" nếu tôi đang chỉnh sửa ngôn ngữ mặc định (giá trị \ string.xml)?
  2. Làm thế nào nó có thể là một lỗi dịch lint nếu tôi đặt translatable="false"? Trong các giá trị-pl \ string.xml (và các thư mục giá trị-ru, giá trị-iw), các chuỗi thậm chí không tồn tại? nó không nên anyway.
  3. Tôi dường như không thể hiểu tại sao tôi không gặp lỗi đối với chuỗi tiếng Nga.

(Tôi sẽ hiển thị các giá trị-ru \ string.xml hoặc các giá trị-pl \ string.xml ở đây nhưng không có gì đáng quan tâm, vì các chuỗi vẫn bị thiếu ...)


2
Nếu đây là điều gì đó thường xuyên xảy ra, chỉ cần thực hiện dọn dẹp thông thường (dọn dẹp / xây dựng lại hoặc hủy bỏ bộ nhớ đệm / khởi động lại trên ASTUDIO, v.v.) Trừ khi, tất nhiên, lỗi là "có thật". ;) Quan điểm của tôi là, với Android Studio 3.2 (beta atm), nó xảy ra ngẫu nhiên, các chuỗi tốt được gạch chân, bạn chạm vào thứ gì đó và lỗi sẽ biến mất. Nó có lỗi. ¯_ (ツ) _ / ¯
Martin Marconcini

1
Hãy thử phương pháp này: stackoverflow.com/a/53780805/7831470
Sagar Giri

Hiện đang chạy Android Studio 3.3.2. Điều này đôi khi xảy ra với tôi nếu tôi sao chép một tên chuỗi trong tệp string.xml (chẳng hạn như khi sao chép-dán). Thật là bực bội nhưng việc dọn dẹp và khởi động lại có vẻ sẽ khắc phục được.
John Riggs

Điều này rất thường xuyên xảy ra nếu bạn di chuyển tài nguyên từ tệp này sang tệp khác trong mô-đun khác. Tôi phải vô hiệu hóa bộ nhớ cache mỗi lần, dọn dẹp / xây dựng không có tác dụng. Có vẻ vấn đề với lập chỉ mục.
3c71

Chạy ứng dụng đã làm việc cho tôi
kreker

Câu trả lời:


82

Điều này xảy ra với tôi quá

Tôi làm 2 việc:

  • Xác minh toàn bộ tệp để xem một bản dịch khác chưa được hoàn thành (Tôi có những bản dịch trong tệp en nhưng trong pt-br)
  • Làm sạch, cập nhật gradle và thoát và khởi động lại Android Studio

8
Chỉ cần dọn dẹp dự án và khởi động lại Android Studio. Và nó đã hoạt động;)
Ektos974

19
Trong trường hợp việc dọn dẹp dự án và khởi động lại Android Studio không hoạt động, hãy thử chạy Không hợp lệ bộ nhớ cache / Khởi động lại.
makuno

2
Đã xóa và vô hiệu hóa bộ nhớ cache / Khởi động lại. Làm việc cho tôi quá! :)
Reeshabh Ranjan

2
❗ Hãy thử xóa dòng và thêm lại trước khi bạn thực hiện việc này. Cuộc đời thật ngắn ngủi.
Nolan Amy

Tôi nghĩ u nên thêm một bổ sung cho câu trả lời, cụ thể là lệnh: Invalidate Caches / Restart. Để không phải tìm kiếm trong các bình luận, như tôi đã làm ví dụ.
Morozov

68

Việc xây dựng lại có thể mất nhiều thời gian. YMMV, nhưng ...

Chỉ cần xóa dòng vi phạm và thêm lại.

Đã làm cho tôi. Rất nhanh.


3
Tôi đã phải làm ít hơn. Tôi đã đổi tên chuỗi và sau đó thay đổi lại.
Matt

1
Chà! điều này là siêu nhanh chóng.
userAbhi

3
Chọn dòng vi phạm, ctrl-X, ctrl-V. Làm xong. Đã làm cho tôi!
MỘT

1
Chọn dòng vi phạm, xóa, hoàn tác (lệnh / điều khiển z). Làm xong. Đã làm cho tôi!
HendraWD 19/09/19

1
Các giải pháp nhanh hơn
mochadwi

22

Trong trường hợp của tôi, điều này đã giúp tôi:

  1. Chọn các chuỗi gây ra lỗi.
  2. Cắt chúng.
  3. Dán chúng lại

Nếu nó không hiệu quả với bạn, hãy thử thêm các chuỗi tương tự vào strings.xml(v21)tệp.


10

Nhấn Invalidate Caches / Restart ... để khởi động lại studio android. Nó đã làm việc cho tôi. Trên thực tế, điều này đã xảy ra khi tôi sao chép tệp từ máy tính khác của mình và dán qua trình khám phá tệp.


5

Tôi đã gặp phải thông báo lỗi tương tự, chỉ với vấn đề kỳ lạ là nó được đưa vào chính ngôn ngữ mặc định và tất cả các bản dịch. Hóa ra bạn không nên sử dụng dấu chấm trong tên của mình (ví dụ: name = "bla.blub") vì nó sẽ được chuyển đổi nội bộ thành "bla_blub" và sau đó nó không thể khớp với "bla.blub", do đó xảy ra lỗi. Tôi chỉ phải thay đổi các dấu chấm thành gạch dưới trong ngôn ngữ mặc định và sau đó tất cả các lỗi khác trong các bản dịch khác (bao gồm cả dấu chấm trong tên) cũng biến mất.

Nhưng lưu ý rằng các công cụ xây dựng khác vẫn có thể tạo ra sự cố, vì vậy hãy thay thế tất cả các dấu chấm bằng gạch chân!


4

Thoát khỏi Android Studio và khởi động lại nó đã khắc phục sự cố cho tôi.


Nó cũng hoạt động đối với tôi, nó ít đau hơn nhiều so với việc làm mất hiệu lực bộ nhớ cache và khởi động lại.
3c71

3

Tôi đã giải quyết vấn đề này bằng cách làm theo các bước dưới đây:

  1. dọn dẹp dự án của tôi

  2. xây dựng lại nó

  3. và cuối cùng nhấn bộ nhớ đệm không hợp lệ / Khởi động lại trong menu tệp


2

Tôi đã tạo một công cụ để quản lý trạng thái dịch của các ứng dụng Android. Nó không chỉ cho bạn biết những chuỗi nào bị thiếu trên các ngôn ngữ khác mà còn có thể báo cáo và làm sạch những chuỗi còn sót lại mà bạn có thể đã xóa trên tệp dịch mặc định của mình.

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

Để làm sạch tất cả phần thừa còn lại bằng các ngôn ngữ khác, hãy gọi như thế này

./ams --cleanleftovers -o all.txt

Thao tác này sẽ làm sạch các chuỗi còn lại và nó sẽ xuất báo cáo chuỗi bị thiếu cho tất cả các ngôn ngữ vào tệp all.txt



1

Chỉ cần đảm bảo rằng bạn có cùng quy ước đặt tên trên tất cả các tệp chuỗi bao gồm cả cách viết hoa giống nhau. giả sử nếu bạn có "sign_in" trong string.xml và "sign_In" trong fr / string.xml của mình, vì vậy nó sẽ gây ra lỗi cho bạn trên fr / string.xml như "được dịch ở đây nhưng không tìm thấy trong ngôn ngữ mặc định". Vì vậy, khi bạn sửa thành "sign_in". Lỗi sẽ loại bỏ.


0

Sao chép và dán không hiệu quả với tôi.

Tôi cũng đã thử Clean and restart, lỗi trước đó đã hết nhưng các chuỗi mới nhập vẫn có lỗi mới xảy ra.

Tôi đã thử đóng tệp string.xml đã mở và Trình chỉnh sửa bản dịch , sau đó khởi động lại.

tệp string.xml và Trình chỉnh sửa bản dịch

Nó ổn với tôi.


0

Tôi gặp sự cố này đối với tất cả các chuỗi trong tệp xml của mình.

Vấn đề là, mặc định của bạn strings.xmlkhông nên có tools:localethuộc tính như các tệp đã dịch khác có. Nếu có, bất cứ khi nào tôi biên dịch ứng dụng ở chế độ phát hành, nó sẽ coi nó như một tệp đã dịch khác.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.