Để tiếp tục loạt bài, hãy cùng bản địa hóa ứng dụng của chúng ta. Hiện nay, việc hỗ trợ chỉ một ngôn ngữ trong ứng dụng cho doanh nghiệp không còn đủ nữa. Nhiều ứng dụng kinh doanh trong thế giới thực cần hỗ trợ cho nhiều ngôn ngữ khác nhau. Để biểu diễn cho việc này, ta hãy cùng xem qua việc bản địa hóa có trong Silverlight Business Application Template.
Bạn có thể tải về toàn bộ chương trình tại đây.
Ở đây là phiên bản tiếng Anh cùng với một phiên bản được bản địa (chú ý là tiếng Hebrew được hiển thị chính xác từ phải sang trái):
Hãy bắt đầu bằng việc tạo ra một Silverlight Business Application. Chú ý là có một ứng dụng server và một ứng dụng client trong cùng solution. Các chuỗi cần thiết cho cả server và client được đặt phía server và những cái chỉ cần cho client được đặt phía client. Ta hãy bắt đầu với server.
Trong thư mục Resources ta thấy có hai tập tài nguyên. Một là các thông báo lỗi và cái còn lại chứa các thông tin chi tiết cho việc đăng nhập. Chúng được lưu trữ trong các file resx dưới dạng xml. Có nhiều công cụ bản địa hóa bên ngoài VS hỗ trợ định dang này. Ở đây tôi sẽ biểu diễn việc bản địa trong VS.
Ta cần làm một bước cài đặt trước khi có thể bắt đầu. Bạn cần chỉ cụ thể cho Visual Studio biết những ngôn ngữ nào sẽ được hỗ trợ trong ứng dụng Silverlight. Không may, điều này không thể làm được trong cửa sổ Project Properties của VS, vậy nên bạn cần chỉnh sửa trực tiếp file csproj của ứng dụng Silverlight.
Nhấp phải chuột lên dự án Silverlight và chọn Unload.
Nhấp phải chuột lần nữa và chọn ““Edit MyApp.csproj”
Sau đó tìm thuộc tính SupportedCultures và thêm một danh sách đầy đủ các văn hóa mà bạn muốn hỗ trợ.
Sau đó nhấp phải chuột lên dự án và chọn Reload project.
Ok, hoàn thành việc thiết đặt, giờ ta sẽ thực sự bản địa hóa ứng dụng.
Bước đầu tiên là tạo ra một bản sao của các file với phần mởi rộng [Local].resx. Ví dụ, tôi tạo một file tên “ErrorResources.he.resx”. Ở đây có một danh sách đầy đủ các mã văn hóa.
Sau đó mở file trong VS và bạn sẽ thấy một cửa sổ soạn thảo rất thân thiện. Chỉ đơn giản thay thế các văn bản tiếng Anh với các văn bản tương ứng trong ngôn ngữ mà bạn muốn hỗ trợ.
Dưới đây là hình ảnh trong lúc đang thực hiện dịch:
Lặp lại cho file RegistrationDataResources.resx.
Tiếp theo ta cần làm cho các file *.he.resx có thể truy cập được từ client. Đầu tiên hãy tìm đến thư mục chứa tài nguyên của client. Nhớ là các tài nguyên tiếng Anh đã được liên kết sẵn đến đây. Ta cần thêm các file Hebrew mà ta vừa tạo.
Nhấp phải chuột và chọn thêm một mục đã tồn tại:
Sau đó duyệt đến file ErrorResources.he.resx trong ứng dụng web.
Rồi chọn “Add As Link” (nhấn vào hình tam giác ngược bên phải nút Add để thấy mục này)
Lặp lại cho các file bản địa hóa khác trên client.
Trong ApplicationStrings.resx và ApplicationStrings.he.resx. Tôi thêm một giá trị để chỉ ra hướng của văn bản.
Sau đó tôi tạo ra hai thay đổi nhỏ vào các template để dùng giá trị này. Trong mỗi cửa sổ, tôi sẽ cần đặt giá trị cho hướng văn bản.
trong Main.xaml:
<UserControl x:Class="LocalizedBusinessApplication.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" FlowDirection="{Binding Path=ApplicationStrings.FlowDirection, Source={StaticResource ResourceWrapper}}" >
Và trong View\LoginRegistrationWindow.xaml
<controls:ChildWindow x:Class="LocalizedBusinessApplication.LoginUI.LoginRegistrationWindow" x:Name="childWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" Width="400" Title="{Binding Path=ApplicationStrings.LoginWindowTitle, Source={StaticResource ResourceWrapper}}" Style="{StaticResource LogRegWindowStyle}" FlowDirection="{Binding Path=ApplicationStrings.FlowDirection, Source={StaticResource ResourceWrapper}}" Closing="LoginWindow_Closing">
Giờ ta đã sẵn sàng để chạy ứng dụng.
Nó trong rất tuyệt, nhưng toàn bộ là tiếng Anh… giờ làm sao ta có thể kiểm tra được việc bản địa hóa này? Đơn giản là thay đổi ngôn ngữ trong trình duyệt của bạn.
Trong IE đó là Tools\Internet Options
Hãy đảm bảo là Hebrew nằm đầu tiên. Sau đó nhấn nút refresh trên trang và…
Cái tôi đã trình bày ở đây chính là cách bản địa hóa một ứng dụng Silverlight dùng Business Application Template.
Enjoy!
Bài viết hay quá anh Nam ơi ! Thanks anh rất nhiều
Chào anh, cho em hỏi có cách nào để thêm 1 combobox trên màn hình chính của ứng dụng silverlight (ví dụ phần Fotter của Main), sau đó cho chọn ngôn ngữ trong đó thay vì phải vào Internet Options không?