Tôi có thể bỏ plugin textdomain cho các thuật ngữ được sử dụng trong lõi không?


10

Tôi đã có một plugin đặt trạng thái bài đăng vào menu quản trị loại bài đăng. Tôi đang ở giữa quốc tế hóa nó, và tôi tự hỏi làm thế nào để xử lý tình huống này.

Plugin sử dụng một số chuỗi duy nhất sẽ có được một tên miền văn bản như thế này:

__( 'Select the post statuses to <strong>exclude</strong> from post type admin menus', 'csmpmsi' )

Nhưng cũng có trường hợp tôi đang sử dụng một từ liên quan đến cốt lõi cho nghĩa liên quan đến cốt lõi của chúng như thế này : __( 'Pages' ). Trong tình huống này, dường như có ý nghĩa hoàn hảo đối với tôi để loại trừ tên miền văn bản và tận dụng các thuật ngữ đã được bản địa hóa trong lõi. Tuy nhiên, codex có vẻ rất rõ ràng:

Nếu bạn đang cố dịch một plugin, lời khuyên tương tự như trên sẽ được áp dụng, ngoại trừ việc

  • bạn phải sử dụng một tên miền, được tải trong một hook của plugin của bạn

  • mọi cuộc gọi dịch phải trở thành __ ('văn bản', 'tên miền')

Vì vậy, đây là WP-kosher?


1
Cảm ơn bạn đã hỏi một câu hỏi kích thích tư duy, câu trả lời (từ toscho và Mark Kaplun cho đến nay) rất thú vị và hữu ích với tôi!
web biết

Câu trả lời:


14

Không bao giờ dựa vào các chuỗi cốt lõi để dịch, chúng có thể thay đổi hoặc nhận contexttham số bất cứ lúc nào. Khi điều đó xảy ra, người dùng của bạn có được giao diện được dịch một phần và người dịch của bạn không có cách nào khắc phục điều đó.

Ngoài ra, hãy nhớ rằng cùng một chuỗi không cần thiết được dịch ở mọi nơi với cùng một từ. Ngay cả khi không có tham số ngữ cảnh, có thể hữu ích khi sử dụng bản dịch khác cho plugin của bạn bằng một số ngôn ngữ. Nhưng điều này sẽ không thể xảy ra nếu bạn không bao gồm chuỗi trong plugin của mình.

Xem cuộc thảo luận trò chuyện này, chúng tôi đã có một vài ngày trước về chủ đề này.


Ngoài ra, hãy nhớ rằng chuỗi vẫn sẽ hiển thị trong tệp POT của bạn, ngay cả khi chuỗi đó không có tên miền văn bản.
scribu

@ fouu Phụ thuộc vào trình phân tích cú pháp. Các plugin nội địa hóa mã hóa sẽ bỏ qua nó.
fuxia

Có vẻ như có một số bất đồng giữa câu trả lời này và câu trả lời này cho một câu hỏi gần giống nhau ...
mrwweb

4

Có, nhưng xin đừng. Điều này giống như tiêu chuẩn mã hóa, tốt hơn là tuân theo nó ngay cả khi bạn có thể có được một lợi thế nhỏ bằng cách bỏ qua nó.

Lý do tốt hơn:

  1. Trong phiên bản 3.5 WordPress không có tệp dịch nguyên khối, nó được chia thành 3 phần vì lý do hiệu suất. Nếu xu hướng này tiếp tục, bạn có thể chắc chắn rằng tên miền mặc định sẽ được tải hoàn toàn khi bạn cố gắng sử dụng nó __('Pages')không?

  2. Bạn không lưu công việc vào trình bản địa hóa - Các công cụ dịch thuật như poedit không biết cách xử lý hai miền dịch trong một tệp và trong ví dụ của bạn, chúng sẽ tạo tệp .po chứa từ 'Trang' ngay cả khi bạn sử dụng tên miền mặc định cho nó Trình bản địa hóa không kiểm tra cách sử dụng thực tế của chuỗi mà anh ta dịch trừ khi anh ta cần hiểu ngữ cảnh để anh ta không chú ý đến các tên miền khác nhau và sẽ dịch từ. Ngoài ra, nếu người bản địa hóa biết các công cụ của mình, anh ta sẽ có DB dịch dựa trên các tệp dịch lõi của WordPress theo cách cho phép poedit tự động dịch các từ như 'Trang'.


0

Bạn có thể thử nó

add_action('wp',function(){
    load_default_textdomain();
    _e('Settings');
});

Hoặc là

add_action('wp',function(){
    $locale = is_admin() ? get_user_locale() : get_locale();
    load_textdomain( 'default', WP_LANG_DIR . "/$locale.mo" );
    load_textdomain( 'default', WP_LANG_DIR . "/admin-$locale.mo" );

    // WPMU
    //load_textdomain( 'default', WP_LANG_DIR . "/ms-$locale.mo" );
    //load_textdomain( 'default', WP_LANG_DIR . "/admin-network-$locale.mo" );

    _e('Settings');
    _e('First Name');
    _e('Last Name');
});

Tham khảo https://v123.tw/use-wordpress-core-translation/

Chúc may mắn!!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.