2011-10-12 45 views
20

Tôi đã tự hỏi liệu có ai đã đi qua một cách tốt để xác thực chuỗi chuỗi trong thư mục res/values ​​hay không.Xác minh vị trí mảng chuỗi Android

tôi tạo bởi mã sử dụng ngôn ngữ mặc định và có thể có một nguồn tài nguyên của một cái gì đó giống như

<string-array name="array_example1"> 
    <item>One</item> 
    <item>Two</item> 
    <item>Three</item> 
</string-array> 

Sau đó, khi các dịch giả cho ứng dụng làm cho bản dịch của họ, họ cũng tạo ra một chuỗi mảng. Thỉnh thoảng nếu một bản dịch bị trễ sau một tệp tài nguyên khác có thể không có nhiều mục nhập trong mảng (có thể chỉ "Một" và "Hai" từ ví dụ trên)

Có cách nào dễ dàng để xác thực xem có không phù hợp về số lượng mục nhập? Có một sự không phù hợp có thể gây ra vấn đề trong mã, nhưng khi ứng dụng có 10 chuỗi chuỗi trong một số ngôn ngữ, kiểm tra tất cả chúng phù hợp với thời gian.

Phương pháp nào khác của người khác?

+1

Có thể tạo một tập lệnh nhỏ phân tích cú pháp các tệp và khớp với chúng? –

+0

mà tôi không biết. một số công cụ so sánh xml tùy chỉnh, có thể là? – njzk2

Trả lời

41

Tôi đã tìm thấy cách tốt hơn để dừng các sự cố. Tôi đã không nhận ra rằng chuỗi mảng có thể tham khảo các nguồn lực chuỗi theo cách sau:

<string-array name="array_example1"> 
    <item>@string/resOne</item> 
    <item>@string/resTwo</item> 
    <item>@string/resThree</item> 
</string-array> 

Sau đó thêm

<string name="resOne">One</string> 
<string name="resTwo">Two</string> 
<string name="resThree">Three</string> 

Vì vậy cách này nếu có sự không phù hợp ngôn ngữ mặc định sẽ chỉ được hiển thị cho tùy chọn đó và dừng sự cố do các danh sách có kích thước khác nhau

+0

Giải pháp hoàn hảo! Tôi figured nó đã có thể, tôi chỉ không biết cú pháp :) –

+0

cảm ơn bạn đã chia sẻ. – Sathesh

+0

Tôi cũng khuyên bạn nên đặt thuộc tính 'translatable =" false "' thành phần tử ''. Bằng cách này, bạn sẽ được thông báo bởi Lint nếu có tồn tại mảng này trong một số tệp ngôn ngữ khác. – Robyer

Các vấn đề liên quan