2010-10-08 14 views
16

Tôi có khách hàng muốn chỉ định phiên bản nội dung được bản địa hóa của riêng họ cho một tập con của tài nguyên chuỗi của tôi.Cách giới thiệu để tạo văn hóa tùy chỉnh và tệp tài nguyên được liên kết cho một Khách hàng cụ thể là gì?

Để đơn giản ở đây là ví dụ cơ bản:
phép nói rằng tôi có 2 dây cục bộ (hiển thị nội dung tiếng Anh)
PAGETITLE = "Hello World"
PageDescription = "Đây là một phiên bản dài dòng hơn về Hello World!"

Tôi muốn bản địa hóa các tệp này để tôi có tệp tài nguyên.

  • Strings.resx (chứa tiếng Anh của tôi string)
  • Strings.fr-ca.resx (chứa chuỗi Pháp-Canada của tôi)
  • Strings.fr-ca-clientX .resx (chứa chuỗi của tôi cho Khách hàng là Pháp-Canada và therfore rất cầu kỳ;) - chỉ đùa)

Lý tưởng nhất là "Strings.fr-ca-clientX" chỉ có thể chỉ định các chuỗi mà chúng muốn "ghi đè". Nói cách khác, họ có thể chỉ muốn thay đổi PageTitle và tiếp tục sử dụng PageDescription từ tập tin tài nguyên "fr-ca".

Vậy tôi làm cách nào để thực hiện điều này trong .NET? Lý tưởng nhất là tôi sẽ chỉ tạo tệp resx và chỉ định văn hóa trong "Web.config" của tôi và nó sẽ hoạt động ...

<globalization uiCulture="fr-ca-clientX" culture="fr-ca-clientX" /> 

Tuy nhiên, điều này không hoạt động. "Thẻ chứa giá trị không hợp lệ cho thuộc tính 'văn hóa'" là sản phẩm đầu tiên của tôi.

Cảm ơn,
Justin

+1

tôi wouldn không đề xuất cách cung cấp nội địa hóa này. Nó rất dễ dàng, nhưng với những yêu cầu như vậy, tôi có lẽ sẽ tạo ra một số mặt tiền tài nguyên mà sẽ là điểm duy nhất của quyết định về những chuỗi nào để tải trong thời gian chạy. –

Trả lời

1

Bạn có thể cần phải tạo ra nét văn hóa riêng của bạn và đăng ký nó. Bạn sẽ tìm thấy bài viết MSDN về chủ đề đó here.

Bạn không cần phải thay đổi thuộc tính văn hóa, nó phải ở "fr-CA", vì thuộc tính uiCulture chịu trách nhiệm tải chuỗi từ tài nguyên.

2
public void AddCustomCulture(string cultureName, string baseCulture) 
    { 
     var cultureBuilder = new CultureAndRegionInfoBuilder(cultureName, CultureAndRegionModifiers.None); 

     cultureBuilder.LoadDataFromCultureInfo(new CultureInfo(baseCulture)); 

     var region = baseCulture.Substring(3, 2); 

     cultureBuilder.LoadDataFromRegionInfo(new RegionInfo(region)); 

     cultureBuilder.Register(); 
    } 
2

Bạn có thể tạo ra một nền văn hóa mới với đoạn mã sau:

 //Get culture info based on Great Britain 
     CultureInfo cultureInfo = new CultureInfo("en-GB"); 
     RegionInfo regionInfo = new RegionInfo(cultureInfo.Name); 

     CultureAndRegionInfoBuilder cultureAndRegionInfoBuilder = new CultureAndRegionInfoBuilder(txtCultureName.Text, CultureAndRegionModifiers.None); 

     cultureAndRegionInfoBuilder.LoadDataFromCultureInfo(cultureInfo); 
     cultureAndRegionInfoBuilder.LoadDataFromRegionInfo(regionInfo); 

     // Custom Changes 
     cultureAndRegionInfoBuilder.CultureEnglishName = txtCultureName.Text; 
     cultureAndRegionInfoBuilder.CultureNativeName = txtNativeName.Text; 

     cultureAndRegionInfoBuilder.Register(); 

Tôi đã viết một bài đăng trên tạo ra một ứng dụng để làm việc đó ..

http://wraithnath.blogspot.com/search/label/Globalization

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