Trước hết, gettext
là một cách tốt để đi, vì vậy đừng bỏ qua nếu ban đầu nó không dễ nghe; Tuy nhiên, có những lựa chọn khác cũng hữu ích để biết. Trước khi giải thích rằng trước tiên hãy xem đề xuất của bạn:
Trong array
quá trình thực hiện việc này, bạn có một giải pháp khá đơn giản. Điều tốt là bạn có thể lưu trữ các bản dịch của mình trong một bộ lưu trữ dữ liệu, sau đó tải nó vào tập lệnh PHP của bạn dưới dạng một mảng và đó là nó. Tuy nhiên, nếu bạn muốn lưu trữ mảng của mình một cách tĩnh trong một tệp PHP, sau đó chỉnh sửa nó cần một) Lập trình viên PHP hoặc một người dùng đã hết hạn sử dụng cú pháp PHP, chỉ để chỉnh sửa tệp b) đồng bộ hóa giữa bốn hoặc năm tệp ngôn ngữ khác nhau có thể khá khó chịu và dễ bị lỗi.
Điều bạn cần xem xét ở đây là: Làm thế nào sau này có thể thêm các yếu tố mới vào tệp ngôn ngữ? Tôi có thể để nó cho một dịch giả hay nên có một lập trình viên PHP?
Cách làm của bạn variable
là không thực tế. Tại sao? Tôi giả sử bạn sẽ có vài chức năng ít nhất trong ứng dụng của mình, phải không? Sau đó, bạn cần truyền tất cả các biến này khi bạn gọi hàm hoặc bạn cần đến global
chúng. Nếu bạn nghĩ rằng bạn sẽ có hơn mười biến như thế này, thì tôi không khuyến khích bạn làm điều này. Cũng có thể có xung đột tên - bạn có khả năng ghi đè giá trị của một biến khác có cùng tên, tuy nhiên điều này có thể được giải quyết bằng cách thêm tiền tố đơn giản như dấu gạch dưới, vì vậy bạn sẽ có $_welcome
ví dụ. Dù sao, nếu tôi là bạn, tôi thậm chí sẽ không nghĩ về nó; Đừng làm điều đó.
Một cách tốt để làm điều đó là xác định các hằng số có tiền tố. Vì vậy, ví dụ trong bạn, en.lang.php
bạn sẽ có một cái gì đó như define( 'LABEL_WELCOME', 'Welcome' );
và trong no.lang.php
bạn sẽ có define ( 'LABEL_WELCOME', 'Velkommen' );
. Điểm hay của việc sử dụng hằng thay vì biến là chúng luôn có sẵn trong tập lệnh của bạn. Vì vậy, bạn không cần phải tiêm hoặc toàn cầu chúng. So với cả mảng và biến, chúng nhanh hơn do cách PHP xử lý chúng - chúng chiếm ít không gian hơn trong bộ nhớ. Hạn chế là bạn không thể chuyển chúng cho người dịch, vì vậy một lần nữa bạn cần một nhà phát triển PHP. Đồng bộ hóa giữa các tập tin có thể là một chút đau đớn một lần nữa.
Tùy chọn khác là có Hàm hoặc Lớp / Phương thức để truy xuất bản dịch. Nó sẽ kém hiệu quả hơn - tuy nhiên tôi không nghĩ bạn cần loại tối ưu hóa vi mô đó, nhưng lợi thế bổ sung là bạn có thể áp dụng logic tùy chỉnh trong khi truy xuất bản dịch. Ví dụ, hãy tưởng tượng một ngày nào đó người quản lý dự án yêu quý của bạn đến gặp bạn hỏi liệu bạn có thể chuyển đổi tất cả các văn bản đó thành chữ hoa không. Bạn không thể từ chối thực hiện, do đó, có một chức năng ở giữa có thể giúp bạn rất nhiều khi bạn cần áp dụng / thay đổi một mẫu cho tất cả các bản dịch của mình.
Để gói nó:
Hãy suy nghĩ về cách các dịch giả có thể sử dụng nó và đưa ra giải pháp KISS hiệu quả cho họ.
Hãy suy nghĩ về cách bạn có thể duy trì đồng bộ giữa các ngôn ngữ khác nhau.
Hãy suy nghĩ về việc có thể cần bản dịch tương tự hay không, giả sử ứng dụng dành cho thiết bị di động. Một giải pháp đa nền tảng có thể tiết kiệm thời gian của bạn. Đừng bỏ qua JSON và cơ sở dữ liệu thông thường.
Hãy suy nghĩ về cách bạn có thể áp dụng / thay đổi logic khi truy xuất các bản dịch.
Quên về hiệu suất. 99,9% số lần bạn sẽ không đạt được điều đó để tối ưu hóa vi mô như Constant so với Biến so với các cuộc gọi chức năng . Tôi giả sử thời gian của bạn là một nhà phát triển / nhân viên đắt hơn là thời gian xử lý.
Cập nhật số 1
Chúa ơi, tôi đăng một câu trả lời cho một câu hỏi cũ. Tại sao không ai nói gì ở đây? Chúng tôi cần thông báo cho những trường hợp này.
Cập nhật số 2
Ở phía bên phải nó nói đó là một câu hỏi cũ; Tuy nhiên, nó đã được hỏi hai năm trước! Mọi thứ đều sai lệch ở đây!