2011-12-05 28 views
11

tôi cần dịch trang web của mình bằng nhiều ngôn ngữ. tôi đã suy nghĩ để sử dụng một cơ sở dữ liệu được gọi là ngôn ngữ và đặt bản dịch ở đó.dịch một trang web bằng php hoặc mysql?

database : translation 
tables: language 
column: id, english, french, german, italian, spanish 

hay tôi đã suy nghĩ về một giải pháp php như:

english.php 
french.php 
german.php 
italian.php 
spanish.php 

vì vậy bạn chỉ đơn giản bao gồm các tập tin mà bạn cần.

bây giờ, tôi có thể thấy ưu và nhược điểm cho cả hai, những gì tôi muốn biết là những gì được coi là tiêu chuẩn trong ngành công nghiệp để làm một cái gì đó như thế này?

+0

dễ dàng hơn và thanh lịch hơn để tạo mỗi trang: en.php, fr.php ... tốt hơn việc truy vấn DB mỗi lần – amrfaissal

+0

bạn có thể vui lòng cho tôi biết lý do không? – Adam

+0

tôi chỉ tìm thấy trang web có thể bảo trì theo cách đó !! nếu bạn cần phải thay đổi một bản dịch của một từ bạn cần phải đi DB và thay đổi nó! Giả sử người Trung Quốc thích trang web của bạn và họ cần bản dịch để có trải nghiệm tốt hơn, bạn cần phải chuyển sang DB và thay đổi lại lần nữa, điều này không phù hợp. – amrfaissal

Trả lời

12

Bạn có thể sử dụng gettext, chức năng này được đề xuất cho điều này tính năng, không phải là "chuẩn" nhưng đủ nhanh.

Tùy chọn thứ hai trong việc sử dụng tệp PHP có mảng lớn (thực sự lớn, cho mỗi chuỗi), đây là giải pháp phổ biến nhất.

Để nội dung cơ sở dữ liệu (vấn đề lớn ở đây, đừng quên), nếu tất cả nội dung của bạn phải có bản dịch, một cột cho mỗi ngôn ngữ, nếu không hãy sử dụng cờ ngôn ngữ cho mỗi dòng trên cơ sở dữ liệu.

+2

+1 một trong những điều tốt nhất về gettext là có rất nhiều công cụ dịch thuật tuyệt vời để tạo tệp theo định dạng thích hợp và cũng dễ dàng gửi tới một số dịch vụ trực tuyến nếu bạn cần dịch thuật chuyên nghiệp trong tương lai. –

2

Không có tiêu chuẩn công nghiệp. Tôi đã thấy (và thực hiện) các giải pháp bằng cách sử dụng các tệp phẳng, XML, mã PHP, cơ sở dữ liệu và các tệp gettext để lưu trữ các chuỗi được bản địa hóa. Đó là vấn đề phù hợp hơn với bạn.

go-to My phương pháp cho PHP chỉ đơn giản là các file chứa mảng các chuỗi, ví dụ

en.php

return array (
    'How are you?' => 'How are you?', 
    'Goodbye' => 'Goodbye', 
); 

de.php

return array (
    'How are you?' => 'Wie gehts?', 
    'Goodbye' => 'Auf wiedersehen', 
); 

này có thể được tích hợp vào một ứng dụng có độ chi tiết hợp lý (có thể có nhiều tệp như vậy, ví dụ: cho mỗi thành phần) và kiểm soát (bạn có thể dễ dàng quay trở lại bất kỳ ngôn ngữ nào khác nếu bạn không tìm thấy chuỗi) và nó cũng rất thuận tiện để sửa đổi mà không cần các công cụ đặc biệt.

Khung PHP yêu thích của tôi (Yii) và một dự án mã nguồn mở khổng lồ mà tôi đã làm việc (Moodle) cũng sử dụng phương pháp này.

+0

Tôi đã sử dụng thành công các mảng ngôn ngữ khác nhau và tôi thấy nó dễ thực hiện nhất trong dự án hiện tại của tôi (khá lớn). Cũng nên nhớ chỉ tải mảng bạn cần lúc bắt đầu thay vì tải tất cả chúng và sau đó chọn một, tôi thấy nó nhanh hơn rất nhiều theo cách đó. – Luke

2

Không ai trong số hai giải pháp này có vẻ tuyệt vời đối với tôi. Bạn nên suy nghĩ về lâu dài khi bạn nghĩ một giải pháp.

Điều gì sẽ xảy ra nếu bạn chọn dịch trang web của mình bằng các ngôn ngữ khác với ngôn ngữ bạn nghĩ là tiếng Nga hoặc tiếng Trung? Trong trường hợp đầu tiên, bạn phải thêm ngày càng nhiều cột, trong cột thứ hai, bạn phải tạo nhiều tệp hơn. Khuyết điểm khác là gì nếu bạn dịch một trang bằng tiếng Ý và tiếng Tây Ban Nha nhưng chưa được viết bằng tiếng Pháp?

Tôi nghĩ rằng một điều tốt là có giải pháp dựa trên cơ sở dữ liệu và ngôn ngữ chính. Bây giờ bạn có thể làm điều gì đó như thế này:

  • Tạo bảng 'trang' (id, tiêu đề, ...) nơi bạn sẽ lưu trang bằng ngôn ngữ chính và nơi bạn sẽ có thông tin về trang dịch quá
  • Tạo một bảng 'dịch' (idsource, idtranslation, ngôn ngữ)
  • Mỗi lần kiểm tra bản dịch có sẵn và cung cấp cho những cho người sử dụng
+0

Một giải pháp tốt, mặc dù lời giải thích của bạn có thể không rõ ràng đối với một người chưa thực hiện đủ công việc với cơ sở dữ liệu. – RonLugge

0

Trong bản địa hóa cơ sở dữ liệu, bạn có bốn chiến lược chính. Mỗi loại có những ưu điểm và nhược điểm riêng. Về lâu dài, tôi chắc chắn sẽ khuyên bạn nên nhân bản. Bạn sẽ nhìn thấy bốn phương pháp tại liên kết dưới đây:

http://www.sisulizer.com/localization/software/server-desktop-database.shtml

Có hai ý chính bạn muốn chắc chắn được thực hiện. Đầu tiên, hãy chắc chắn bạn đang tích hợp một số bộ nhớ dịch. Nhà cung cấp ngôn ngữ của bạn nên hướng dẫn bạn cách thực hiện điều này và có thể làm điều đó cho bạn.

Thứ hai, cho mỗi ngôn ngữ bổ sung bạn nhắm mục tiêu, dữ liệu của bạn sẽ nhận được ít nhất 2x phức tạp hơn. Hãy ghi nhớ điều này khi bạn tiến lên phía trước. Không chỉ dữ liệu của bạn, nhưng tệp của bạn đặt, quản lý, v.v.

Hy vọng điều đó sẽ hữu ích. Hãy cho tôi biết nếu bạn có thêm câu hỏi. Russell

Các vấn đề liên quan