Phát triển ứng dụng mạng đa ngôn ngữ không còn tùy chọn trong phong cảnh số toàn cầu hóa ngày nay. Người dùng mong muốn tương tác với nội dung bằng ngôn ngữ mẹ đẻ của họ, và cung cấp cho rằng trải nghiệm đó tác động trực tiếp đến sự gắn kết, chuyển đổi, và mở rộng thị trường. Mô hình-View-SP (MVC) kết hợp với các kỹ thuật địa phương vững chắc, cung cấp một cấu trúc đã được chứng minh để xây dựng các ứng dụng đa ngôn ngữ có thể ghi được. Bài này đi qua các khái niệm cốt lõi, các bước thực tiễn, và thực hiện tốt nhất để đưa nhiều ngôn ngữ vào dự án dựa trên mạng của bạn.

Mẫu MVC: Một mẫu tự nhiên cho việc định vị

Kiến trúc MVC chia một ứng dụng thành ba thành phần liên kết: Mô hình, Xem, và Controller. Sự phân chia các mối quan tâm này đặc biệt có giá trị khi thêm sự hỗ trợ đa ngôn ngữ, vì mỗi thành phần có thể được mở rộng hoặc thay đổi cho việc quốc tế hóa (i18n) và định vị (l10n) mà không ảnh hưởng đến các thành phần khác.

  • [FLT: 0] Mô hình: quản lý dữ liệu và logic kinh doanh. Đối với ứng dụng đa ngôn ngữ, mô hình phải lưu trữ hoặc lấy nội dung đặc trưng cho ngôn ngữ, từ cơ sở dữ liệu, ADI, hoặc tập tin tài nguyên.
  • Xem: quản lý lớp trình bày. Xem dùng chuỗi đã địa phương hoá, ngày/ số định dạng, và hướng (TL/LTR) để hiển thị nội dung đúng trong mỗi ngôn ngữ.
  • [FLT: 0] Trình duyệt: Tiến trình nhập, phát hiện địa phương, và chọn những tài nguyên hay dữ liệu thích hợp trước khi đưa chúng đến khung xem.

Sự tách rời sạch này có nghĩa là bạn có thể thêm một ngôn ngữ mới bằng cách tạo ra tập tin hay mục nhập mới, điều chỉnh mẫu xem để tham khảo những nguồn tài nguyên đó, và bảo đảm người điều khiển chọn đúng địa phương — tất cả đều không cần phải viết lại logic hay kế hoạch kinh doanh.

Công nghệ cục bộ chính

Tập tin tài nguyên cho kho lưu trữ chuỗi

Tập tin tài nguyên (JSON, YAML, XML, hoặc .resx) giữ các chuỗi đặc trưng bên ngoài mã. Chẳng hạn, Laravel dùng tập tin [[FLT: 0]; AP.NET] dùng [[FLT: 1]; và nhiều khung khổ hình JavaScript dùng tập tin dịch JSON. Mẫu cơ bản là cặp giá trị phím:

  • cho tiếng Anh
  • cho tiếng Pháp

Dùng tập tin tài nguyên khiến cho việc dịch không cần thiết để làm việc mà không cần phải chạm vào logic của ứng dụng, và nó giữ cho mã căn cứ được sạch.

Phát hiện và đàm phán địa phương

Bạn phải tự động phát hiện ngôn ngữ của người dùng.

  • Người đọc kinh nghiệm chấp nhận người đứng đầu trong danh sách người dùng: ).
  • [FLT: 0] Thiết lập hồ sơ người dùng: Đang chèn người được chọn vào phiên chạy hoặc cơ sở dữ liệu sau khi người dùng đăng nhập.
  • tiền tố [FL:0] hoặc subdomain: e.g., hoặc .
  • Bánh quy hoặc kho địa phương: , lưu trữ ngôn ngữ của người dùng trong suốt các phiên họp.

Người điều khiển nên thực hiện thuật toán thương lượng — thí dụ, thử sở thích của người dùng, rồi quay trở lại ngôn ngữ mặc định. Hoạt động quốc tế hóa W3C ([FLT: 0] W3C i18 ) cung cấp sự hướng dẫn chi tiết về thương lượng nội dung.

Số hóa, Gender và Định dạng

Sự thay thế theo chuỗi đơn giản: Các ngôn ngữ khác nhau có nhiều quy tắc phức tạp (v. d., “2 mục trong tiếng Anh, nhưng nhiều dạng khác nhau trong tiếng Ba Lan hoặc Ả Rập). Nhiều khung cung cấp những quy tắc đa dạng: Laravel , Symony’s [FT:8], và định dạng của thông điệp về Y tế học]. Tương tự, ngày tháng, số và tiền tệ phải tôn trọng các hội nghị địa phương (v. [FL9] trong tiếng Đức [FT] [FT] [FT] [FT], Bản Liên Hiệp Quốc].

Chiến thuật dịch nội dung

Đối với nội dung động được cất giữ trong cơ sở dữ liệu (v. d., mô tả sản phẩm, bài blog), bạn có vài tùy chọn:

  • Cột đăng: Một cột cơ sở dữ liệu cho mỗi ngôn ngữ (v. d., , . Đơn giản nhưng không thể ghi được nhiều ngôn ngữ.
  • Bảng dịch giả: Bàn với quan hệ đa dạng với bất kỳ thực thể chuyển đổi nào. Nó linh hoạt hơn và theo cơ sở dữ liệu thực hiện tốt nhất bình thường hóa.
  • Cột JSON: Lưu một đối tượng JSON với các phím ngôn ngữ. Nhanh cho priting nhưng có thể trở nên khó để truy vấn và duy trì.

Hãy chọn phương pháp phù hợp với số ngôn ngữ và nội dung bạn mong đợi.

Kết hợp MVC với việc cục bộ hóa: Hướng dẫn gõ cửa

Hãy giả sử bạn đang xây dựng một mạng đa ngôn ngữ trong một khung PHP điển hình hoặc C# MVC. Những bước sau đây cho thấy cách nối dây định vị vào dòng chảy của MVC.

1. Thiết kế mô hình cho dữ liệu đa ngôn ngữ

Hãy xác định cách thức để hỗ trợ nhiều ngôn ngữ. Chẳng hạn, mô hình có thể có mối quan hệ với để lưu trữ , , và . Trong một hệ thống ORM như hệ thống [FLUT], bạn có thể sử dụng một tính năng hay một gói đã đóng góp để tự động nạp bản dịch. Tương tự, các tập tin tương tự, nên được sắp xếp bằng các phím cục bộ.

Cấu hình bộ điều khiển để phát hiện cục bộName

Hãy đặt địa phương hiện thời của ứng dụng dựa trên sở thích của người dùng.

protected function setLocale(Request $request)
{
 $locale = $request->segment(1); // from URL
 if (in_array($locale, config('app.available_locales'))) {
 app()->setLocale($locale);
 session(['locale' => $locale]);
 }
}

Trong AP.NET dẫn chứng, bạn có thể thêm phần mềm giữa để xử lý tự động thương lượng.

3. Phát triển xem dùng hàm cục bộ

Thay vì dùng chuỗi cố định dạng khó khăn trong ô xem, hãy dùng trợ giúp cục bộ. Trong Laravel Blade, bạn dùng ; trong AP.NET, . Để có nội dung động, hãy chuyển mô hình được dịch sang ô xem và hiển thị trực tiếp dựa trên địa phương hiện thời. Cũng bảo đảm ngày tháng và định dạng số đó [FL:24] hoặc [FL:25].

Ví dụ, một trang đăng nhập đơn giản trong Laravel Blade:

<h2>{{ __('auth.login_title') }}</h2>
<form>
 <label>{{ __('auth.email') }}</label>
 <input type="email" name="email">
 <label>{{ __('auth.password') }}</label>
 <input type="password" name="password">
 <button type="submit">{{ __('auth.login_button') }}</button>
</form>

4. Bật chuyển đổi ngôn ngữ

Cung cấp một bộ chọn ngôn ngữ hiển thị (thường thả xuống trên định vị hay chân trang). Khi người dùng chọn ngôn ngữ, người điều khiển hoặc JavaScript cập nhật địa phương hiện thời và đặt tùy chọn. Hãy giữ người dùng đó đi cùng một đường, chuyển hướng tới cùng địa chỉ URL với tiền tố cục bộ mới.

Những thực hành tốt nhất và sự suy xét

Quản lý nội dung đồng bộ

Giữ các bản dịch đồng bộ hoá. Hãy dùng khả năng điều khiển phiên bản để tìm tập tin tài nguyên, và xem xét bằng hệ thống quản lý dịch thuật (v. d., Localise, crowdin) cho các nhóm lớn hơn. Tránh các phím dịch bị lỗi, hãy dùng lại khi có thể.

Kinh nghiệm người dùng cho những người ngồi nhiều ngôn ngữ

  • Trình chọn & n: [FLT: 1] Dùng một nút rõ ràng, có thể thấy được hoặc biểu tượng cờ (với một đoạn cố định để truy cập).
  • Hãy nhớ sự lựa chọn: [FLT: 1] Hãy duy trì ngôn ngữ của người dùng qua mỗi phiên chạy, cookie hoặc cơ sở dữ liệu.
  • Thiết lập duyệt phục hồi:) Vào lần thăm đầu tiên, hãy tự động dùng ngôn ngữ ưa thích của trình duyệt nếu có.
  • SEO với hreflang: [FLT: 1] Tính chất trong HTML để nói về các phiên bản ngôn ngữ thay thế của mỗi trang.

Cách tô màu

  • Các bản dịch Kinh Thánh: ) tải các tập tin tài nguyên vào trí nhớ và lưu trữ chúng (v. d. dùng các bản dịch Laravel .
  • Dịch tải:) Khi truy vấn mô hình chuyển tiếp, hãy dùng khả năng tải để tránh vấn đề truy vấn N + 1.
  • Hãy xác định vị trí của địa phương trên đầu: [FLT: 1] Lưu trữ địa phương đã được giải quyết trong một container hoặc phiên chạy dịch vụ, vì thế nó có sẵn trên toàn cầu mà không lặp lại việc phát hiện logic.

Khả năng truy cập và tính dễ bị truy cập

Nội dung đã được địa phương hóa phải được truy cập. Bảo đảm rằng các thuộc tính ngôn ngữ ( và được đặt đúng vào thẻ . Hãy dùng nhãn x riêng trong nhiều ngôn ngữ khác nhau. Thử nghiệm với độc giả màn hình trong mỗi ngôn ngữ được hỗ trợ. W3Cization FAQ) cung cấp hướng dẫn về ngôn ngữ của tài liệu.

Công cụ và Khung làm việc hỗ trợ phát triển đa ngôn ngữ của MVC

Phần lớn các khung hiện đại của MVC đã xây dựng mạnh mẽ bằng cách xây dựng các gói địa phương, hoặc cộng đồng, hỗ trợ các gói địa phương hóa:

Để các khung trước của MVC như Redux, các thư viện như (phụ thuộc vào định dạng thông điệp chăm sóc đặc biệt) hòa nhập với một cấu trúc hậu phương giống như MVC.

Kết luận

Xây dựng các ứng dụng mạng đa ngôn ngữ bằng cách sử dụng mô hình MVC là một phương pháp tiếp cận được chứng minh, bảo trì. Bằng cách áp dụng sự tách rời các mối quan tâm bản chất với MVC, các nhà phát triển có thể giới thiệu sự định vị mà không cần thiết lại toàn bộ cơ sở mã hóa. Tập tin tài nguyên, phát hiện địa phương, thiết kế cơ sở dữ liệu cẩn thận tạo ra các công cụ cốt lõi, trong khi các khung hỗ trợ cơ sở hạ tầng cung cấp cơ sở hạ tầng toàn cầu. Khi web tiếp tục đòi hỏi toàn cầu, đầu tư vào các thực hiện đặc quyền trong một cấu trúc MVC đóng góp phần lợi hại trong sự hài lòng người dùng, sự hỗ trợ và thị trường.