Yêu cầu thg 10 22, 2021 8:18 SA 120 0 1
  • 120 0 1
0

Android Building Multi-Language Database SQLite

Chia sẻ
  • 120 0 1

Xin chào mọi người. Em là một lập trình mới và đang có 1 câu hỏi liên quan đến kotlin và sqlite database. Em muốn đa ngôn ngữ cho database trước khi view lên thì Em nên làm như thế nào ? Ví dụ: Ngôn ngữ trong database của em là tiếng anh, Nhưng khi người dùng ở Ấn Độ sẽ load dữ liệu là ấn độ. Lưu ý: Đó là dữ liệu lấy từ sqlite chứ không phải là trong string.xml Mong được hỗ trợ. #kotlin #android

Avatar Tran Minh Nhat @tranminhnhat
thg 10 22, 2021 8:27 SA

Nếu là mình, thì mình sẽ lưu cả dữ liệu tiếng Anh và tiếng Ấn Độ vào sqlite db, nhưng có thêm 1 cột "language".Khi truy vấn thì tùy vào việc kiểm tra người dùng chọn ngôn ngữ gì thì sẽ query ra các dữ liệu có ngôn ngữ tương ứng.

Kiểu: SELECT a, b, c FROM table WHERE language="en";

Ưu điểm là đơn giản, nhược điểm là chỉ hiệu quả tốt với lượng dữ liệu nhỏ.

Avatar Tu Le @TUITC
thg 10 22, 2021 8:38 SA

@tranminhnhat Dạ em đã thử cách đó và được nhưng mà nếu dữ liệu lên 10 ngôn ngữ là bị phình ra. Cách 2: Em đã thử dùng thư viện Translate API của google
2.1. Ưu điểm: Không cần dụng database, database không bị phình -> chiến dung lượng
2.2. Nhược điểm: Phải download thư viên ngôn ngữ cần dịch xong -> dịch (Mạng yếu sẽ mất khoảng 30s->1p). Offline không làm việc. Gói ngôn ngữ sau khi tải về sẽ tính vào phần dung lượng của app nhìn app là thấy chiếm nhiều dung lượng 😦

Hiện tại em bị bí không biết làm sao luôn

Avatar CongHD @conghdql4
thg 10 22, 2021 9:32 SA

@TUITC

Cách 2: Em đã thử dùng thư viện Translate API của google

Đã dùng API rồi thì cần gì phải down thêm ngôn ngữ vậy bạn ? Mình nghĩ là call API thì chỉ cần input là từ cần dịch, ngôn ngữ đích thì output sẽ là từ đã được dịch.

P/S: Mình chưa thử Google translate API nhưng mình nghĩ nó sẽ hoạt động như trên

Tham khảo, Tham khảo

Avatar Tu Le @TUITC
thg 10 22, 2021 9:44 SA
Avatar CongHD @conghdql4
thg 10 22, 2021 10:00 SA

@TUITC Nếu bạn muốn dùng csdl mà không muốn nó phình thì mình suggest bạn cách này : Thay vì bạn thêm cột language thì bạn thêm các cột tương ứng với các ngôn ngữ khác nhau như english, jappanese, vietnamese, indian. Thì lúc đó bạn select theo kiểu select indian from table where word = 'something'

Lưu ý : Lúc này dữ liệu sẽ phình theo chiều ngang thay vì phình theo chiều dọc 😄

Avatar Hoa Nguyen @hoanghontim
thg 12 21, 2023 3:13 CH

@tranminhnhat Chào bạn,

Để hỗ trợ đa ngôn ngữ cho dữ liệu lấy từ SQLite trong ứng dụng Android sử dụng Kotlin, bạn có thể thực hiện theo các bước sau:

Lưu Trữ Dữ Liệu Đa Ngôn Ngữ: Trong cơ sở dữ liệu SQLite của bạn, hãy thiết kế bảng sao cho có thể lưu trữ dữ liệu bằng nhiều ngôn ngữ. Một cách là tạo các cột riêng biệt cho mỗi ngôn ngữ, ví dụ: name_en, name_hi cho tiếng Anh và tiếng Hindi.

Xác Định Ngôn Ngữ Người Dùng: Sử dụng API của Android để xác định ngôn ngữ hiện tại của thiết bị. Bạn có thể lấy thông tin này từ Locale.getDefault().

Truy Vấn Dữ Liệu Theo Ngôn Ngữ: Khi thực hiện truy vấn dữ liệu từ SQLite, hãy chọn cột dữ liệu phù hợp với ngôn ngữ của người dùng. Ví dụ, nếu người dùng sử dụng tiếng Hindi, hãy truy vấn dữ liệu từ cột name_hi.

Hiển Thị Dữ Liệu: Sau khi lấy dữ liệu phù hợp với ngôn ngữ người dùng, bạn có thể hiển thị chúng trong ứng dụng của mình.

Để hiểu rõ hơn về cách thực hiện, bạn có thể tham khảo các tài liệu và hướng dẫn chi tiết trên trang https://www.oanhviela.com, nơi cung cấp nhiều bài viết và tài nguyên hữu ích về lập trình Android và Kotlin.

Nếu bạn có thắc mắc cụ thể hoặc gặp vấn đề trong quá trình thực hiện, đừng ngần ngại đặt câu hỏi thêm để cộng đồng có thể hỗ trợ bạn tốt nhất!

Chúc bạn thành công với dự án của mình! #kotlin #android #sqlite #đa_ngôn_ngữ

1 CÂU TRẢ LỜI


Đã trả lời thg 10 23, 2021 9:24 SA
0

@TUITC Câu hỏi của bạn mang tính chất local database nhưng sau khi đọc comment mình thấy bạn đang cần 1 i18n service. Nó hỗ trợ gì ?

  • Khi đổi ngôn ngữ sẽ tải về file ngôn ngữ đó và cache lại -> chỉ tải 1 lần -> offline vẫn chạy
  • Có thể mặc định sẵn ngôn ngữ nào đó.
  • Hỗ trợ fallback -> tức với ngôn ngữ ấn độ key đó chưa được dịch sẽ lấy từ tiếng anh or ngôn ngữ mặc định đã cài đặt
  • Có thể edit chỉnh sửa thêm ngôn ngữ trên
  • Và nhiều option nhỏ nhỏ khác.

Nhưng 1 server phải code đẻ ra api or dùng các dịch vụ i18n trả phí or mất phí trên mạng như https://locize.com về phía thư viện client có thể dùng https://github.com/i18next/i18next-android

Thông tin thêm. i18n là một Ecosystem nên server or client lib không nhất thiết từ 1 dịch vụ nào đó. Vì nó là một quy chuẩn chung. Nên có thể search i18n client android, or i18n service ...

Chia sẻ
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí