Thiết kế cơ sở dữ liệu cho ứng dụng website đa ngôn ngữ

Đăng bởi:

Sudo

Đăng ngày:

Nov 06, 2017

Đăng ở:

Tin Tức Công Nghệ

Trong kỷ nguyên toàn cầu hóa, các công ty - bao gồm các nhà phát triển phần mềm - luôn quan tâm đến việc mở rộng sang các thị trường ở nhiều quốc gia. Đối với website giới thiệu sản phẩm, công ty hay website thương mại điện tử nhu cầu đa ngôn ngữ là tất yếu. Trong bài viết này, tôi sẽ giới thiệu một vài cách tiếp cận để thiết kế mô hình dữ liệu cho website đa ngôn ngữ - cụ thể là để quản lý nội dung bằng nhiều ngôn ngữ.

multi-language-website

 

Ứng dụng website đa ngôn ngữ, thực chất là việc dịch nội dung ?

Khi chúng ta suy nghĩ về website đa ngôn ngữ, dịch nội dung thường là tư duy đầu tiên xuất hiện trong đầu chúng ta. Ý nghĩ thứ hai là "Chúng ta cần một mô hình cơ sở dữ liệu mạnh mẽ và hiệu quả để lưu trữ nội dung dịch trên nhiều ngôn ngữ".

Giả sử chúng ta được yêu cầu thiết kế một mô hình dữ liệu cho một website thương mại điện tử đa ngôn ngữ. Chúng ta cần lưu trữ các trường văn bản như product_name và product_description bằng các ngôn ngữ khác nhau. Chúng ta cũng cần phải lưu trữ các trường văn bản trong các bảng khác, chẳng hạn như bảng customer bằng tất cả các ngôn ngữ này.

 

Các cách thiết kế cơ sở dữ liệu cho ứng dụng website đa ngôn ngữ

Để hiểu về việc làm thế nào để thiết kế mô hình dữ liệu đa ngôn ngữ, tôi sẽ đưa ra các cách tiếp cận và phân tích ưu nhược điểm của nó. Tất nhiên, cách tiếp cận phù hợp với ứng dụng của bạn sẽ dựa trên yêu cầu của riêng bạn.

 

Cách tiếp cận 1 - Thêm cột ngôn ngữ riêng cho từng trường trong bảng dữ liệu

Đây là cách tiếp cận đơn giản nhất về phát triển. Nó được thực hiện bằng cách thêm các cột ngôn ngữ cho từng trường trong bảng.

database-tiep-can-ung-dung-da-ngon-ngu-1

Ưu điểm

  • Rất dễ dang để thực hiện
  • Không có sự phức tạp trong việc viết SQL để tìm nạp các dữ liệu cơ bản bằng bất kỳ ngôn ngữ nào.

Nhược điểm

  • Không có khả năng mở rộng: mỗi khi cần thêm một ngôn ngữ mới, hàng chục cột cần bổ sung vào giữa các bảng.
  • Có thể gây mất nhiều thời gian, đặc biệt với website cần phải có nhiều ngôn ngữ.
  • Developers phải viết truy vấn cho từng ngôn ngữ. Vì vậy, tất cả các câu SQL trong ứng dụng của bạn phải thay đổi khi một ngôn ngữ mới được thêm vào

 

Các tiếp cận 2 - Tạo ra một bảng riêng cho việc dịch các dữ liệu

Trong cách tiếp cận này, một bảng riêng biệt được sử dụng để lưu trữ văn bản dịch; trong ví dụ bên dưới là bảng translation

database-tiep-can-ung-dung-da-ngon-ngu-2

Ưu điểm

  • Là cách tiếp cận tốt nếu đa ngôn ngữ được thực hiện trên một mô hình dữ liệu đã có sẵn.
  • Chỉ cần thêm một cột duy nhất cho bảng translation nêu như có một ngôn ngữ mới được thêm vào

Nhược điểm

  • Vẫn đòi hỏi một sự thay đổi trong mô hình dữ liệu.
  • Có thể có nhiều dữ liệu null không cần thiết trong bảng
  • Sự phúc tạp khi viết các câu truy vấn join tăng theo số lượng ngôn ngữ trong ứng dụng, khi đó tốc độ truy xuất sẽ rất chậm

Cách tiếp cận này có thể có một biến thể khác đó là tạo ra từng bảng translation cho từng bảng dữ liệu, ví dụ product_translation, customer_translation

database-tiep-can-ung-dung-da-ngon-ngu-2-b

 

Cách tiếp cận 3 - Bảng dịch với các hàng cho mỗi ngôn ngữ

Cách này khá giống với cách tiếp cận thứ hai, nhưng nó lưu trữ các giá trị cho bản dịch trong các hàng thay vì các cột.

database-tiep-can-ung-dung-da-ngon-ngu-3

Ưu điểm

  • Developers dễ dang viết truy vấn
  • Không cần thay đổi mô hình dữ liệu khi bạn thêm ngôn ngữ mới; chỉ cần thêm thông tin cho ngôn ngữ mới.
  • Không tốn bộ nhớ không cần thiết khi một tập hợp các trường không dùng một ngôn ngữ nào đó.
  • Sự phức tạp của truy vấn được giảm đi với ứng dụng có nhiều ngôn ngữ

Nhược điểm

  • Tương đối nhiều join khi viết truy vấn cho việc lấy dữ liệu dịch
  • Qua thời gian, bảng translation phình to, vì chỉ có một bảng dịch, tất cả các dữ liệu dịch trên website sẽ đổ về bảng này. Khi dữ liệu đủ lớn, lên hàng triệu record cho bảng này, ta sẽ cảm thấy tốc độ truy xuất dữ liệu bị chậm

Cách tiếp cận này cũng có thể có một biến thể khác để khắc phục nhược điểm thứ hai vừa nêu trên. Cách làm cũng giống như biến thể của cách tiếp cận 2 đó là tạo ra từng bảng translation cho từng bảng dữ liệu

database-tiep-can-ung-dung-da-ngon-ngu-3-b

 

Cách tiếp cận 4 - Tạo lớp đối tượng cho các trường cần dịch và các trường không cần dịch

Trong giải pháp này, các bảng cần dịch được chia thành hai bảng: một cho các trường cần dịch, và một cho các trường không cần dịch.

database-tiep-can-ung-dung-da-ngon-ngu-4

Ưu điểm

  • Không cần phải join bảng translation nếu không có trường cần dịch. Vì vậy các dữ liệu không cần dịch giữ được hiệu xuất tốt hơn
  • Cần ít join để lấy dữ liệu dịch mong muốn
  • Truy vấn SQL đơn giản
  • Là cách tiếp cận dễ dàng để kết hợp đa ngôn ngữ với thực thể dữ liệu

 

Ứng dụng website đa ngôn ngữ - Những điều cần lưu ý ngoài việc dịch nội dung

Đa ngôn ngữ cho website không chỉ là dịch nội dung đơn của bạn sang ngôn ngữ khác. Có những đặc tính văn hoá và chức năng cần được chú ý với mỗi quốc gia. Ví dụ: giá trị ngày được định dạng là 'MM/DD/YYYY' ở Bắc Mỹ, nhưng ở phần lớn Châu Á người ta thích dùng 'DD/MM/YYYY' hơn.

Ngoài ví dụ trên thì ta có thể lấy thêm ví dụ về việc hiển thị first name - last name (họ - tên) khi hiển thị tên người dùng, và vô vàn các trường hợp khác...

 

Một cách nhìn rộng hơn về ứng dụng website đa ngôn ngữ

Đa ngôn ngữ cho website của bạn khi tiếp cận thị trường ở các quốc gia là cần thiết. Khi đa ngôn ngữ hóa ứng dụng website hãy nhìn một cách tổng thể, việc xây dựng đa ngôn ngữ không chỉ nằm ở việc đảm bảo hiệu suất và tính mở rộng của ứng dụng. Hãy làm cho ứng dụng của bạn có khả năng làm chủ các nền văn hoá địa phương, hành vi, và cả cách nghĩ cách sống của người dùng mà bạn hướng đến.

Ngày nay đối với các website lớn về thương mại điện tử, sản phẩm và dịch vụ lớn người ta có xu hướng xây dựng website riêng cho từng ngôn ngữ ở các quốc gia hướng đến nhằm tối ưu tốt hơn về hiệu suất cùng như trải nghiệm, điều mà rất nhiều ông lớn như Google, Amazon ... đã làm. Đa ngôn ngữ trên một website dường như chỉ phù hợp với những website mang tính thương hiệu giới thiệu chung về công ty, tập đoàn.

Các nội dung trình bày ở trên được tham khảo nhiều từ các hệ thống trên internet cùng quan điểm cá nhân. Nếu bạn có ý kiến khác hay bổ sung hay cho chúng tôi biết trong phần bình luận dưới bài viết nhé !

default_image
Tác giả: Sudo
ADMIN

Bình luận

Để lại bình luận

Email và số điện thoại sẽ không được công khai. Những trường bắt buộc được đánh dấu *

Repository deleted Your repository has remove
Loading
Bạn cần hỗ trợ?