2009-12-12 26 views
6

Tôi đang làm việc để bản địa hóa một ứng dụng tôi đã viết bằng C#.Toàn cầu hóa & vệ tinh DLL của

Tất cả mọi thứ dường như được làm việc độc đáo, sử dụng cụm tài nguyên vệ tinh để dịch dây của mỗi hình thức (theo hướng dẫn này: http://msdn.microsoft.com/en-us/library/y99d1cd3%28VS.71%29.aspx)

Tuy nhiên, việc áp dụng cuối cùng sẽ đòi hỏi khá nhiều ngôn ngữ, có nghĩa là vô số danh bạ trong thư mục làm việc của tôi (tức là/zh-tw,/zh-cn,/fr-FR,/ja-JP, v.v.). Tôi muốn làm sạch điều này một chút bằng cách định vị tất cả chúng trong một thư mục con/ngôn ngữ hoặc/tài nguyên (nói cách khác, thiết lập "đường dẫn cơ sở cho các cụm vệ tinh"). Nhưng tôi đã tìm kiếm cao và thấp, và không thể tìm thấy bất kỳ cách nào để tùy chỉnh vị trí của các cụm vệ tinh này.

Bất kỳ mẹo nào sẽ được đánh giá rất nhiều!

Trả lời

11

Tìm thấy một giải pháp dễ dàng hơn - trong app.config:

<configuration> 
<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <probing privatePath=".;Lang" /> 
    </assemblyBinding> 
</runtime> 
</configuration> 

Sau đó, bạn chỉ có thể quăng tất cả những dirs trong "Lang" subdir và nó sẽ làm việc ngay ra khỏi hộp! Một sự kiện sau xây dựng cũng rất thuận tiện để tự động sao chép chúng ở đó sau khi biên dịch :)

1

IMHO, tôi sẽ không thay đổi bất cứ điều gì ở đây. Có một cơ chế tiêu chuẩn để bản địa hóa trong .NET, dựa trên các dll vệ tinh và các thư mục con này. Nếu bạn sử dụng công cụ để bản địa hóa, ví dụ: Passolo, nó cũng sẽ hỗ trợ chính xác cấu trúc này và không có gì khác.

Sẽ có rất nhiều thư mục con ... vậy thì sao? Mọi thứ khác sẽ khá phức tạp.

0

Thêm tất cả các file tài nguyên của bạn (ví dụ: * Resx) đến/Resource thư mục và tạo ra các đối tượng của ResourceManager như sau

System.Resources.ResourceManager rm = new System.Resources.ResourceManager ("ApplicationName.Resources.MyResource", Assembly.GetExecutingAssembly());

Ở đây nói cho lang de-DE tệp resx của bạn sẽ được đặt tên là MyResource.de-DE.resx

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