1. Hội thảo: Giải pháp toàn diện cho Multi Language Speaker: KhanhPham
Đào tạo lập trình trực tuyến ZendVN Wesbite: http://www.zend.vn
Multi language
A. Phân loại đa ngôn ngữ trong lập trình ứng dụng
- Đa ngôn ngữ cho giao diện
- Đa ngôn ngữ cho lưu trữ dữ liệu
B. Các vấn đề thường xảy ra khi sử dụng đa ngôn ngữ
- Đa ngôn ngữ cho giao diện
Nên lưu trong database hay trong file?
Cấu trúc database để lưu như thế nào?
Khi lấy ra sẽ xử lý dữ liệu như thế nào?
- Đa ngôn ngữ cho thông tin lưu trữ (database)
Phân tích bảng đa ngôn ngữ cho category
Phân tích bảng đa ngôn ngữ cho item
- Tạo form nhập liệu cho đa ngôn ngữ
C. Đa ngôn ngữ cho giao diện
- Có 3 cách để thiết lập đa ngôn ngữ cho giao diện: Database, File, Database + File
Cách 1: Database:
1. Sử dụng database
2. Hội thảo: Giải pháp toàn diện cho Multi Language Speaker: KhanhPham
Đào tạo lập trình trực tuyến ZendVN Wesbite: http://www.zend.vn
2. Bảng [Languages]
2.1. Hiển thị danh sách ngôn ngữ trong hệ thống
2.2. Form nhập liệu
2.3. Dữ liệu trong database
3. Hội thảo: Giải pháp toàn diện cho Multi Language Speaker: KhanhPham
Đào tạo lập trình trực tuyến ZendVN Wesbite: http://www.zend.vn
3. Bảng [Words]
3.1. Dữ liệu trong database
3.2. Form nhập liệu
4. Bảng [languages_words]
4.1. Danh sách và form chỉnh sửa
4. Hội thảo: Giải pháp toàn diện cho Multi Language Speaker: KhanhPham
Đào tạo lập trình trực tuyến ZendVN Wesbite: http://www.zend.vn
4.2. Dữ liệu trong database
5. Hội thảo: Giải pháp toàn diện cho Multi Language Speaker: KhanhPham
Đào tạo lập trình trực tuyến ZendVN Wesbite: http://www.zend.vn
5. Cách xử lý
5.1. Cấu trúc mảng chứa languages
global $languages;
$languages = array(
array(
'words' => 'Hello',
'mean' => 'Chào bạn'
),
array(
'words' => 'What are your name',
'mean' => 'Bạn tên là gì'
),
array(
'words' => 'How do you do',
'mean' => 'Dạo này bạn có khỏe không'
),
array(
'words' => 'I love you',
'mean' => 'Tôi yêu bạn'
),
array(
'words' => 'My name is %s',
'mean' => 'Tên tôi là %s'
)
);
5.2. Hàm xử lý
function translate($words, $language){
global $languages;
$mean = '';
//Code goes here
//...
return $mean;
}
5.3. Sử dụng
echo translate('Hello', 'vi');
Cách 2: File
6. Hội thảo: Giải pháp toàn diện cho Multi Language Speaker: KhanhPham
Đào tạo lập trình trực tuyến ZendVN Wesbite: http://www.zend.vn
1. Tạo cấu trúc thư mục và tập tin
2. Cấu trúc tập tin
//module.quizz.ini
Type: Module
Name: Quizz
#
msgid "Hello"
msgstr "Chào bạn"
#
msgid "What are your name"
msgstr "Bạn tên là gì"
#
msgid "How do you do"
msgstr "Dạo này bạn có khỏe không"
#
msgid "I love you"
msgstr "Tôi yêu bạn"
#
msgid "My name is %s"
msgstr "Tên tôi là %s"
3. Cách xử lý
7. Hội thảo: Giải pháp toàn diện cho Multi Language Speaker: KhanhPham
Đào tạo lập trình trực tuyến ZendVN Wesbite: http://www.zend.vn
- Load nội dung tập tin đổ vào mảng và xử lý giống Cách 1 - Mục 5
4. Hiển thị danh sách file
5. Form chỉnh sửa nội dung của file
Cách 3: Database & File
8. Hội thảo: Giải pháp toàn diện cho Multi Language Speaker: KhanhPham
Đào tạo lập trình trực tuyến ZendVN Wesbite: http://www.zend.vn
1. Cách xử lý
- Sử dụng lại Cách 1:
+ Sau khi đã chỉnh sửa xong, khi nhấn [Save change] sẽ thực hiện 2 thao tác cũng 1 lúc
- Thao tác 1: Lưu vào database
- Thao tác 2: Tạo 1 mảng ngôn ngữ theo cấu trúc
$languages = array(
array(
'words' => 'Hello',
'mean' => 'Chào bạn'
),
array(
'words' => 'What are your name',
'mean' => 'Bạn tên là gì'
),
...
);
- Tiếp dùng hàm serialize() chuyển thành chuỗi và lưu vào 1 file text nào đó (Ví dụ: vi.ini)
- Khi sử dụng thì chúng đọc nội dung file text (Ví dụ: vi.ini). Sau đó dùng hàm unserialize() để để chuyển
nó thành mảng và đưa vào biến global.
global $languages;
$file = 'vi.ini';
$content = file_get_contents($file);
9. Hội thảo: Giải pháp toàn diện cho Multi Language Speaker: KhanhPham
Đào tạo lập trình trực tuyến ZendVN Wesbite: http://www.zend.vn
$content = unserialize($content);
$languages = $content;
D. Đa ngôn ngữ cho database (Categories)
1. ID của Category trong các ngôn ngữ trong hệ thống không cần giống nhau
1.1. Table [Categories]
1.2. Hiển thị danh sách category
English:
Việt Nam:
10. Hội thảo: Giải pháp toàn diện cho Multi Language Speaker: KhanhPham
Đào tạo lập trình trực tuyến ZendVN Wesbite: http://www.zend.vn
1.3. Form nhập liệu:
2. ID của Category trong các ngôn ngữ trong hệ thống bắt buộc phải giống nhau
11. Hội thảo: Giải pháp toàn diện cho Multi Language Speaker: KhanhPham
Đào tạo lập trình trực tuyến ZendVN Wesbite: http://www.zend.vn
2.1. Table [Categories_2]
2.2. Table [Categories_meta]
2.3. Form nhập liệu
12. Hội thảo: Giải pháp toàn diện cho Multi Language Speaker: KhanhPham
Đào tạo lập trình trực tuyến ZendVN Wesbite: http://www.zend.vn
E. Đa ngôn ngữ cho database (Article)
13. Hội thảo: Giải pháp toàn diện cho Multi Language Speaker: KhanhPham
Đào tạo lập trình trực tuyến ZendVN Wesbite: http://www.zend.vn
1. Table [articles]
2. From nhập liệu 1 (ID của category giống nhau)
14. Hội thảo: Giải pháp toàn diện cho Multi Language Speaker: KhanhPham
Đào tạo lập trình trực tuyến ZendVN Wesbite: http://www.zend.vn
3. From nhập liệu 1 (ID của category không giống nhau)
15. Hội thảo: Giải pháp toàn diện cho Multi Language Speaker: KhanhPham
Đào tạo lập trình trực tuyến ZendVN Wesbite: http://www.zend.vn