10/10/2018, 11:37
Đa Ngôn Ngữ website lập trình
Chào các anh các chị pro trong diễn đàn hiện tại em có một vất đề khó khăn đã tìm nhiều ngày nhưng chưa được , mong các bác giúp đỡ .
Vấn đề : Em đang làm về lập trình PHP , yêu cầu website phải có đa ngôn ngữ , tức là : khi click tiếng việt thì toàn bộ site sẽ ở dạng tiếng việt và click tiếng anh thì toàn bộ site sẽ sang tiếng anh
- nhiều bác đã nêu cho em cách là , tạo 2 site 1 site tiếng việt và 1 site tiêng anh , có điều emk thấy khả thi , chẳng hạn em đang ở 1 bài viết khi click sang tiếng anh thì nó quay về trang chủ . và hơn nữa , toàn vẹn dữ liệu rất khó khăn và không đảm bảo (em phải up 2 bài 1 TV và 1 TA)
- Em nghĩ chắc có bộ công cụ , hay code giúp đỡ về khoản chuyển đổi đa ngôn ngữ này , chẳng hạn session PHP , tạo ra 1 file chuyển đổi định dạng chứ TA và TV , khi click đến sẽ gọi file đó là thực thi , ý tưởng hơi điên dzồ 1 chút , các bác đừng chém em tội nghiệp
mong các bác giúp đỡ bác nào có demo hay code post cho em với , EM CHÂN THÀNH CÁM ƠN !
Vấn đề : Em đang làm về lập trình PHP , yêu cầu website phải có đa ngôn ngữ , tức là : khi click tiếng việt thì toàn bộ site sẽ ở dạng tiếng việt và click tiếng anh thì toàn bộ site sẽ sang tiếng anh
- nhiều bác đã nêu cho em cách là , tạo 2 site 1 site tiếng việt và 1 site tiêng anh , có điều emk thấy khả thi , chẳng hạn em đang ở 1 bài viết khi click sang tiếng anh thì nó quay về trang chủ . và hơn nữa , toàn vẹn dữ liệu rất khó khăn và không đảm bảo (em phải up 2 bài 1 TV và 1 TA)
- Em nghĩ chắc có bộ công cụ , hay code giúp đỡ về khoản chuyển đổi đa ngôn ngữ này , chẳng hạn session PHP , tạo ra 1 file chuyển đổi định dạng chứ TA và TV , khi click đến sẽ gọi file đó là thực thi , ý tưởng hơi điên dzồ 1 chút , các bác đừng chém em tội nghiệp
mong các bác giúp đỡ bác nào có demo hay code post cho em với , EM CHÂN THÀNH CÁM ƠN !
Bài liên quan
Ví dụ bạn có bảng category có các trường id_category, name, description, create_date.
Nếu bạn muốn đa ngôn ngữ bạn sẽ chia ra làm 2 bảng.
Bảng 1 là category có các trường id_category , create_date
Bảng 2 là category_lang có các trường id_category_lang, id_lang, id_category, name, description
id_lang là id của ngôn ngữ đó, khi ng sử dụng thay đổi tùy chọn ngôn ngữ nghĩa là id_lang thay đổi, bạn sẽ select các row trong category_lang có id_lang tương ứng.
Cách 2 là dịch toàn trang, bạn có thể dùng 1 mã javascript này
<!-- Begin TranslateThis Widget -->
<div id="translate-this"><a href="http://translateth.is/" class="translate-this-button">Translate</a></div>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript" src="http://x.translateth.is/translate-this.js"></script>
<script type="text/javascript">
TranslateThis();
</script>
<!-- End TranslateThis Widget -->
Tôi thì vẫn làm tách riêng form nhập trong quản trị luôn. CSDL thì có trường "lang" chẳng hạn để phân biệt nó là thuộc ngôn ngữ nào. Truy vấn ra ngoài thì dựa vào trường này để xác định thôi
Tùy mỗi người một cách làm, không có cách nào hoàn hảo toàn bộ cả
Như thế này, tôi có cách làm mà chẳng phải thêm, bớt tí database nào cả.
Ví dụ tôi có 1 bài viết :
Tiếng việt: đầy là bài viết đầu tiên.
Tiếng Anh: This's first post
bây giờ tôi lưu như thế này vào 1 trường duy nhất, giả sử the_title chẳng hạn
<!--vi-->đầy là bài viết đầu tiên.<!--endvi--><!--en-->This's first post.<!--enden-->
Khi show ra ngoài, bạn chỉ việc kiểm tra điều kiện tiếng anh, hay tiếng việt thì sẽ lấy được phần cần lấy.
cách này đơn giản, hiểu quả, không phải thêm table, field nào cả.
Mà comment trên của e là chỉ ra 2 cách mà, sao mọi ng chỉ đọc ra mỗi 1 cách dịch toàn trang vậy
Ý GrouponClone là chỉ với một dòng dữ liệu có id = 3 chẳng hạn, nhưng field the_title sẽ lưu tất cả các ngôn ngữ. Sau đó dựa vào tình trạng ngôn ngữ hiện tại mà lấy dữ liệu ngôn ngữ cho phù hợp dựa vào tag đã được quy định sẵn khi thêm dữ liệu.
Tương tự đối với the_content... và các dữ liệu khác cần chuyển đổi ngôn ngữ.
Và cách này đang được Wordpress sử dụng. Nếu không nhầm ^^!