2009-07-16 41 views
17

Tôi cần giới thiệu rất nhanh về bản địa hóa trong thư viện lớpC# Class Library Localization

Tôi không quan tâm đến việc kéo ngôn ngữ từ ngữ cảnh người dùng, thay vào đó tôi có người dùng được lưu trữ trong db và ngôn ngữ của họ thiết lập trong db ....

chức năng của tôi trong thư viện lớp đã có thể kéo các mã miền địa phương từ hồ sơ người dùng trong db ... bây giờ tôi muốn bao gồm sử dụng resx tùy thuộc vào locale ...

Tôi cần một vài bước để thực hiện việc này một cách chính xác ...

Và yeah - Tôi đã googled này, và một số nghiên cứu, nhưng tất cả các hướng dẫn tôi có thể tìm thấy là cách quá phức tạp cho các nhu cầu của tôi.

+0

Tôi bắt gặp một số hình ảnh lạ và lạ từ MSDN ... sử dụng AL ... chắc chắn tôi có thể thực hiện điều này chỉ bằng cách sử dụng studio trực quan tiêu chuẩn? –

Trả lời

21

Thật không may, chủ đề này quá phức tạp. ;) Tôi biết, tôi cũng đã thực hiện nghiên cứu.

Để giúp bạn bắt đầu, mặc dù

  1. tạo một thư mục Resources trong lắp ráp của bạn.

  2. Bắt đầu bằng tiếng Anh và thêm "Tệp tài nguyên" (.resx) vào thư mục đó. Đặt tên nó là "text.resx". Trong trường hợp không thể tìm thấy tài nguyên được bản địa hóa, ứng dụng sẽ mặc định rút ra khỏi tệp này.

  3. Thêm tài nguyên văn bản của bạn.

  4. Thêm tệp tài nguyên khác. Đặt tên cho tên này là "text.es.resx" Lưu ý phần "es" của tên tệp. Trong trường hợp này, định nghĩa tiếng Tây Ban Nha. Lưu ý rằng mỗi ngôn ngữ có định nghĩa mã ký tự riêng. Nhìn đi.

  5. Thêm tài nguyên tiếng Tây Ban Nha của bạn vào đó.

Bây giờ chúng tôi có các tệp tài nguyên để hoạt động, hãy thử triển khai.

Để đặt văn hóa, hãy kéo văn bản đó khỏi bản ghi cơ sở dữ liệu của bạn. Sau đó, thực hiện như sau:

String culture = "es-MX"; // defines spanish culture 
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(culture); 
Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture); 

Điều này có thể xảy ra trong ứng dụng đã tải lắp ráp HOẶC trong quá trình khởi tạo hội đồng. Bạn chọn.

Để utlize tài nguyên, tất cả các bạn phải làm là một cái gì đó như sau trong lắp ráp của bạn:

public string TestMessage() { 
    return Resources.Text.SomeTextValue; 
} 

Tạ Đà. Tài nguyên được thực hiện dễ dàng. Mọi thứ có thể phức tạp hơn một chút nếu bạn cần thay đổi usercontrols hoặc làm điều gì đó trực tiếp trong trang aspx. Cập nhật câu hỏi của bạn nếu bạn cần thêm thông tin.

Lưu ý rằng bạn có thể có các tệp tài nguyên có tên như "text.es-mx.resx" Điều đó sẽ dành riêng cho tiếng Tây Ban Nha mexican. Tuy nhiên, điều đó không phải lúc nào cũng cần thiết vì "es-mx" sẽ quay trở lại "es" trước khi nó quay trở lại mặc định. Chỉ có bạn mới biết được tài nguyên của bạn cần phải cụ thể như thế nào.

+0

Âm thanh tốt cho đến nay, ngoại trừ Resouces.Text.SomeTextValue - nó xuất phát từ đâu, tôi cần bao gồm không gian tên nào? –

+0

Chỉ cần bước cố định 1. Không gian tên đầy đủ cho SomeTextValue sẽ là: MyAssemblyName.MyResourcesDirectoryName.MyResourceFile.MyTextValue. Vì vậy, bằng cách sử dụng ví dụ của tôi, nó sẽ là: MyAssemblyName.Resources.Text.SomeTextValue. – NotMe

+1

Bằng cách thực hiện cuộc gọi CurrentCulture, hệ thống sẽ tự động tìm hiểu xem có sử dụng text.resx hoặc text.es.resx – NotMe

1

Đặt tên cho hình ảnh của bạn với văn hóa trong đó (ví dụ: resource_en-GB.resx) và chọn tài nguyên để truy vấn dựa trên văn hóa.

+0

hãy để tôi thử này –

0

Để truy cập tệp Tài nguyên từ mã, bạn cần mở tệp tài nguyên và sau đó thay đổi trình đơn thả xuống "Trình sửa đổi truy cập" thành "công khai", của tôi là "không tạo mã". Sau đó bạn có thể truy cập như: Resources.FileName.ResourceName.

+1

-1: thực tế thú vị, nhưng không trả lời câu hỏi. –