2012-06-08 24 views
11

Tôi đang cố gắng để hiển thị một thông điệp tới người sử dụng dọc theo dòng:Làm thế nào để bao gồm các biến trong chuỗi địa phương?

"User 5 có thể không được thêm"

Nhưng làm thế nào tôi có thể thêm biến thành một chuỗi đang được đặt trong một. resx tập tin? Tôi đã cố gắng tìm kiếm những thứ như "Biến trong bản địa hóa" "Toàn cầu hóa với biến" vv, nhưng đã đến khô.

Nếu tôi không được bản địa hóa tôi sẽ viết:

Console.Write("User " + userNum + " could not be added"); 

Làm thế nào điều này có thể được thực hiện với nguồn tài nguyên?

+0

Bạn không được tạo/in chuỗi bằng dấu +. String.Format là dễ dàng hơn nhiều để làm việc với ... –

Trả lời

8

Ở các nhóm đã thực hiện quốc tế hóa, chúng tôi thường tạo tài nguyên cho chuỗi định dạng, giống USER_COULD_NOT_BE_ADDED_FORMAT và được gọi là String.Format (hoặc tương đương môi trường của bạn) bằng cách chuyển giá trị của tài nguyên đó làm mẫu định dạng.

Sau đó, bạn sẽ làm Console.Write(String.Format(resourceManager.GetString("USER_COULD_NOT_BE_ADDED_FORMAT"), userNum));

Hầu hết localizers hoặc được đào tạo trong chuỗi định dạng được sử dụng bởi hệ thống họ đang khoanh vùng, hoặc họ được cung cấp với sự hướng dẫn trong bộ nội địa hóa mà bạn cung cấp cho họ. Vì vậy, đây không phải là một rào cản lớn làm cho chúng thay đổi mã trực tiếp.

Thông thường, bạn cần thêm chú thích vùng vào ID tài nguyên để giải thích các tham số vị trí.

+1

Bạn có thể đi xa hơn một chút vào cách tôi có thể thêm một "chú thích loc vào ID tài nguyên" không? Hoặc cung cấp cho tôi một liên kết để đọc thêm? Cảm ơn! :) –

+0

Ngoài ra, trong khi tôi có bạn ở đây vì bạn dường như có kinh nghiệm với những thứ này, tốt nhất là nên có một tệp resx duy nhất cho tất cả các chuỗi trong một dự án cụ thể hoặc tốt hơn là tách chúng thành nhiều tệp resx , giả sử, một cho mỗi hình thức? (Các tệp resx của tôi được lưu trữ trong một dự án toàn cầu hóa riêng biệt) –

+1

Giả sử bạn đang sử dụng định dạng .resx, nhận xét nội địa hóa chỉ là "Nhận xét" trong giao diện người dùng chỉnh sửa resx hoặc '' trong xml ngay sau ' 'phần tử. – JasonTrue

11

Bạn không thể thực hiện việc này trực tiếp.

Những gì bạn có thể làm là đặt một mã thông báo - một chuỗi cụ thể mà có thể thay thế với string.Replace với giá trị của biến.

Một ứng cử viên tốt cho việc này sẽ được xây dựng trong chuỗi định dạng:

Console.Write(string.Format("User {0} could not be added", userNum)); 

Giả sử userNum đã giá trị 5, kết quả sẽ là:

User 5 could not be added 

Bạn có thể bản địa hoá chuỗi này với specifiers định dạng tổng hợp.

5

Sử dụng Composite Formatting như vậy:

Console.Write("User {0} could not be added", userNum); 

Bằng cách này bạn sẽ khoanh vùng "User {0} could not be added".

0

bạn có thể làm điều đó đơn giản của nó enter image description here

mới cho phép xem làm thế nào

String.Format(Resource_en.PhoneNumberForEmployeeAlreadyExist,letterForm.EmployeeName[i]) 

chí này đã cho tôi nhắn động mỗi khi

bởi cách tôi đang sử dụng g ResXManager

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