Chào mừng bạn đến với hướng dẫn toàn diện về Globalization (Toàn cầu hóa) và Localization (Địa phương hóa) trong ASP.NET Core Blazor. Bài viết này sẽ cung cấp cho bạn những kiến thức và kỹ năng cần thiết để xây dựng các ứng dụng web đa ngôn ngữ, có khả năng thích ứng với nhiều khu vực và văn hóa khác nhau. Bạn sẽ học cách hiển thị nội dung phù hợp với ngôn ngữ và định dạng của người dùng, từ đó mang lại trải nghiệm tốt nhất cho người dùng trên toàn thế giới. Chúng tôi sẽ đi sâu vào các khía cạnh quan trọng, từ việc sử dụng .NET Resources system đến việc xử lý Accept-Language header, giúp bạn làm chủ quy trình xây dựng ứng dụng Blazor đa ngôn ngữ.
Trong thế giới kết nối ngày nay, việc xây dựng các ứng dụng web có thể tiếp cận được với người dùng trên toàn cầu là vô cùng quan trọng. Globalization là quá trình thiết kế và phát triển một ứng dụng sao cho nó có thể dễ dàng thích ứng với các ngôn ngữ và khu vực khác nhau mà không cần thay đổi mã nguồn. Localization là quá trình điều chỉnh một ứng dụng đã được toàn cầu hóa cho một ngôn ngữ hoặc khu vực cụ thể. Điều này bao gồm việc dịch văn bản, định dạng ngày tháng, tiền tệ và các yếu tố văn hóa khác.
Khi nói về Globalization và Localization, chúng ta thường nghe đến hai khái niệm: "Language" (Ngôn ngữ) và "Culture" (Văn hóa). Mặc dù đôi khi được sử dụng thay thế cho nhau, nhưng chúng có ý nghĩa khác biệt. Language thường đề cập đến lựa chọn của người dùng trong cài đặt trình duyệt, được thể hiện qua Accept-Language header. Culture là một khái niệm rộng hơn, bao gồm các quy tắc và tiêu chuẩn định dạng số, ngày tháng, tiền tệ, và các yếu tố văn hóa khác. Trong .NET và Blazor API, chúng ta thường làm việc với khái niệm "Culture". Ví dụ: người dùng có thể chọn "tiếng Việt" (Language) trong trình duyệt, nhưng ứng dụng sẽ thiết lập CurrentCulture thành "vi-VN" (Culture) để định dạng dữ liệu cho phù hợp.
Blazor cung cấp một số tính năng mạnh mẽ để hỗ trợ Globalization và Localization. Dưới đây là danh sách các tính năng được hỗ trợ và không được hỗ trợ:
Có hai phương pháp chính để thiết lập Culture trong ứng dụng Blazor:
Globalization trong Blazor chủ yếu liên quan đến việc định dạng số và ngày tháng theo Culture hiện tại.
Directive @bind
tự động áp dụng các định dạng và phân tích giá trị dựa trên ngôn ngữ ưu tiên đầu tiên mà ứng dụng hỗ trợ.
Bạn có thể sử dụng tham số @bind:culture
để chỉ định một CultureInfo cụ thể cho việc phân tích và định dạng giá trị.
CultureInfo.InvariantCulture được sử dụng cho các loại trường sau:
<input type="date" />
<input type="number" />
Các trường này:
Blazor cung cấp hỗ trợ tích hợp để hiển thị các giá trị theo Culture hiện tại.
Do đó, bạn không nên chỉ định Culture với @bind:culture
khi sử dụng các loại trường date
và number
.
Dưới đây là một ví dụ về thành phần Blazor minh họa các khái niệm Globalization:
@page "/culture-example-1"
@using System.Globalization
Culture Example 1
- CurrentCulture: @CultureInfo.CurrentCulture
- CurrentUICulture: @CultureInfo.CurrentUICulture
Rendered values
- Date: @dt
- Number: @number.ToString("N2")
<input> elements that don't set a <code>type</code>
The following <code><input></code> elements use <code>CultureInfo.CurrentCulture</code>.
-
-
<input> elements that set a <code>type</code>
The following <code><input></code> elements use <code>CultureInfo.InvariantCulture</code>.
-
-
@code {
private DateTime dt = DateTime.Now;
private double number = 1999.69;
}
Trong ví dụ trên, chúng ta thấy cách hiển thị ngày tháng và số theo Culture hiện tại, cũng như cách sử dụng <input>
elements với và không có thuộc tính type
.
Định dạng chuỗi số ("N2"
) là một đặc tả định dạng số .NET chuẩn, được hỗ trợ cho tất cả các loại số, bao gồm dấu phân cách hàng nghìn và hiển thị tối đa hai chữ số thập phân.
Localization trong Blazor sử dụng .NET Resources system để cung cấp nội dung dịch cho các ngôn ngữ khác nhau. Bạn có thể sử dụng IStringLocalizer và IStringLocalizer<T> để truy xuất các chuỗi văn bản đã được dịch.
Để sử dụng IStringLocalizer<T>, bạn cần:
Microsoft.Extensions.Localization
vào dự án của bạn..resx
) cho mỗi ngôn ngữ bạn muốn hỗ trợ.T
là kiểu của component đó.Loc["Key"]
để truy xuất chuỗi văn bản đã được dịch, với Key
là key của resource bạn muốn lấy.Giả sử bạn muốn dịch chuỗi "Hello, World!" sang tiếng Tây Ban Nha ("¡Hola, Mundo!"). Bạn sẽ tạo hai file resource:
Resources/CultureExample2.resx
(cho tiếng Anh)Resources/CultureExample2.es.resx
(cho tiếng Tây Ban Nha)
Trong cả hai file, bạn sẽ thêm một resource với Name
là "Greeting" và Value
tương ứng là "Hello, World!" và "¡Hola, Mundo!".
Sau đó, bạn có thể sử dụng IStringLocalizer<CultureExample2> để hiển thị chuỗi đã được dịch trong component của bạn:
@page "/culture-example-2"
@using System.Globalization
@inject IStringLocalizer<CultureExample2> Loc
Culture Example 2
- CurrentCulture: @CultureInfo.CurrentCulture
- CurrentUICulture: @CultureInfo.CurrentUICulture
Greeting
@Loc["Greeting"]
@code {
//No code needed here
}
Globalization và Localization là những yếu tố quan trọng để xây dựng các ứng dụng web Blazor có thể tiếp cận được với người dùng trên toàn thế giới. Bằng cách sử dụng các tính năng và kỹ thuật được trình bày trong bài viết này, bạn có thể dễ dàng tạo ra các ứng dụng đa ngôn ngữ, mang lại trải nghiệm tốt nhất cho người dùng ở mọi khu vực và văn hóa. Hãy bắt đầu áp dụng những kiến thức này vào dự án của bạn ngay hôm nay!
Bài viết liên quan