Dịch biến WordPress

Hôm nay tôi muốn có thể chuyển một biến trường tùy chỉnh cho các hàm bản địa hóa WordPress (l10n). Trường tùy chỉnh là trường chọn, vì vậy tất cả các đầu ra có thể được biết

WordPress sử dụng các tệp PO và MO để dịch. Chúng được tạo bằng cách quét trang web để tìm các hàm

<p>The quick brown fox jumps over the lazy dog.</p>
3 và
<p>The quick brown fox jumps over the lazy dog.</p>
4, với một chương trình như Poedit, để tạo danh sách các chuỗi có thể dịch được

Việc sử dụng các biến trong các hàm này, chẳng hạn như

<p>The quick brown fox jumps over the lazy dog.</p>
5, sẽ gây ra sự cố. Khi quét xong, không có chuỗi nào để thêm vào tệp PO

Trong trường hợp của tôi, vì đã biết kết quả đầu ra, tôi đã tạo một tệp có tên là

<p>The quick brown fox jumps over the lazy dog.</p>
6, bao gồm nó từ tệp
<p>The quick brown fox jumps over the lazy dog.</p>
7 của tôi và thêm các chuỗi có thể dịch được như

Quốc tế hóa là quá trình cho phép chủ đề của bạn được dịch sang các ngôn ngữ khác nhau. Chúng tôi yêu cầu tất cả các chủ đề phải được quốc tế hóa hoàn toàn để lượng khán giả lớn nhất có thể thưởng thức chúng. Trong tài liệu này, chúng ta sẽ xem xét những điều cơ bản về cách chuẩn bị chủ đề của bạn để dịch cũng như giải thích các lỗi phổ biến

Chuỗi đơn giản

Lấy ví dụ câu sau. "The quick brown fox jumps over the lazy dog". Để chuẩn bị bản dịch này và lặp lại nó trên màn hình, chúng ta có thể sử dụng chức năng cốt lõi của WordPress

<p>The quick brown fox jumps over the lazy dog.</p>
2. Hàm này chấp nhận hai tham số, tham số đầu tiên là văn bản cần dịch và tham số thứ hai là tên miền văn bản duy nhất cho chủ đề của bạn. Đây là một ví dụ

<?php _e( 'The quick brown fox jumps over the lazy dog', 'mytheme' ); ?>

đánh dấu tĩnh

Theo phương pháp hay nhất, điều quan trọng là giảm thiểu hoặc loại bỏ hoàn toàn số lượng mã HTML xuất hiện trong các chuỗi được quốc tế hóa. Ví dụ đoạn mã sau

<p>The quick brown fox jumps over the lazy dog.</p>

Một cách để cho phép dịch văn bản này là sử dụng hàm

<p>The quick brown fox jumps over the lazy dog.</p>
2

<?php _e( '<p>The quick brown fox jumps over the lazy dog.</p>' ); ?>

Mặc dù mã này hoạt động hoàn toàn tốt, nhưng nó không phải là cách tiếp cận tốt nhất. Không cần thêm thẻ đoạn vào chuỗi. Cách tiếp cận tốt hơn cho tình huống này là di chuyển các thẻ đoạn văn ra ngoài hàm

<p>The quick brown fox jumps over the lazy dog.</p>
2. Chúng tôi làm điều này bởi vì không cần phải dịch đánh dấu này và thật dễ dàng để di chuyển nó

<p><?php _e( 'The quick brown fox jumps over the lazy dog.' ); ?></p>

Có những lúc đánh dấu tốt hơn nên để lại bên trong chuỗi. Nếu chúng ta cần nhấn mạnh cụm từ “nhảy qua” trong câu trên, chúng ta sẽ có đoạn mã sau

<p><?php _e( 'The quick brown fox <em>jumps over</em> the lazy dog.' ); ?></p>

Trong trường hợp này, không dễ để xóa các thẻ. Nếu chúng ta làm điều này, 3 đoạn câu sẽ được tạo ra

  1. Chú cáo nâu nhanh nhẹn
  2. nhảy qua
  3. con chó lười biếng

Giữ toàn bộ câu quan trọng hơn là xóa phần đánh dấu khỏi chuỗi đã dịch

Văn bản động

Nếu chúng ta cần quốc tế hóa một câu kết hợp giá trị của một biến hoặc giá trị trả về của một hàm, chúng ta có thể sử dụng

<p>The quick brown fox jumps over the lazy dog.</p>
5 hoặc
<p>The quick brown fox jumps over the lazy dog.</p>
6. Các chức năng này rất giống nhau, sự khác biệt là
<p>The quick brown fox jumps over the lazy dog.</p>
7 sẽ lặp lại văn bản trên màn hình trong khi
<p>The quick brown fox jumps over the lazy dog.</p>
8 trả về giá trị

Điều gì sẽ xảy ra nếu chủ đề của chúng tôi có một tính năng cho phép người dùng chọn con vật nào sẽ nhảy qua con chó? . Chủ đề của chúng tôi cần hiển thị giá trị này bên trong câu trong khi vẫn cho phép dịch câu. Ví dụ sau sẽ không hoạt động vì các hàm không thể được bao gồm trong các chuỗi được quốc tế hóa

<?php _e( 'The quick brown fox jumps over the lazy dog', 'mytheme' ); ?>
3

Chúng ta cần di chuyển hàm ra ngoài chuỗi. Điều này khá dễ thực hiện bằng cách sử dụng

<p>The quick brown fox jumps over the lazy dog.</p>
7. Đây là mã hoàn thành trông như thế nào

<?php _e( 'The quick brown fox jumps over the lazy dog', 'mytheme' ); ?>
5

Ở đây, chúng tôi đã thay thế

<p>The quick brown fox jumps over the lazy dog.</p>
2 bằng
<?php _e( '<p>The quick brown fox jumps over the lazy dog.</p>' ); ?>
2, cho phép chuỗi được trả về thay vì lặp lại màn hình. Tiếp theo, chúng tôi chuyển giá trị trả về của
<?php _e( '<p>The quick brown fox jumps over the lazy dog.</p>' ); ?>
2 làm tham số đầu tiên cho
<p>The quick brown fox jumps over the lazy dog.</p>
7. Sau đó, chúng tôi chuyển giá trị trả về của
<p>The quick brown fox jumps over the lazy dog.</p>
9 làm tham số thứ hai. Cuối cùng, chúng tôi thêm một trình giữ chỗ vào chuỗi đã dịch trong đó
<p>The quick brown fox jumps over the lazy dog.</p>
9 từng là. Hãy xem cách thức hoạt động của nó

  1. Một người sẽ dịch chuỗi “%1$s màu nâu nhanh nhẹn nhảy qua con chó lười. ” Tất cả các từ sẽ được dịch sang ngôn ngữ thứ hai và phần giữ chỗ sẽ được chuyển đến vị trí thích hợp trong câu
  2. <?php _e( '<p>The quick brown fox jumps over the lazy dog.</p>' ); ?>
    
    2 sẽ trả về chuỗi đã dịch
  3. <p>The quick brown fox jumps over the lazy dog.</p>
    
    7 sẽ thay thế
    <?php _e( '<p>The quick brown fox jumps over the lazy dog.</p>' ); ?>
    
    9 bằng giá trị trả về của
    <p>The quick brown fox jumps over the lazy dog.</p>
    
    9
  4. <p>The quick brown fox jumps over the lazy dog.</p>
    
    7 sẽ lặp lại câu đã hoàn thành trên màn hình

Thoát chuỗi văn bản trong thuộc tính

Tất cả các chuỗi phải được thoát bằng

<p><?php _e( 'The quick brown fox jumps over the lazy dog.' ); ?></p>
2 hoặc
<p><?php _e( 'The quick brown fox jumps over the lazy dog.' ); ?></p>
3 trước khi chúng được sử dụng làm thuộc tính HTML. Việc trốn thoát phải được thực hiện càng muộn càng tốt. Đây là cách tốt nhất để thoát khỏi một chuỗi đơn giản được sử dụng làm thuộc tính tiêu đề của một neo

<p>The quick brown fox jumps over the lazy dog.</p>
9

Đây là một ví dụ phức tạp hơn với một giá trị động và một trình giữ chỗ

<p>The quick brown fox jumps over the lazy dog.</p>
0

Thoát các chuỗi HTML bằng các thuộc tính động

Trong trường hợp html được bao gồm bên trong chuỗi và các giá trị động được sử dụng cho giá trị của một thuộc tính, các giá trị này phải được thoát ngay lập tức trước khi chúng được gửi dưới dạng tham số tới

<p>The quick brown fox jumps over the lazy dog.</p>
7. Đây là một ví dụ trong đó một liên kết được bao gồm trong chuỗi đã dịch và URL được cung cấp bởi một hàm

<p>The quick brown fox jumps over the lazy dog.</p>
2

Chống mẫu phổ biến

Các ví dụ sau minh họa các tình huống mà quốc tế hóa thường được sử dụng không chính xác. Mặc dù hầu hết các ví dụ này sẽ bị bắt bởi WP. com Đánh giá chủ đề kiểm tra trong plugin Trình quét VIP, bạn nên theo dõi những điều này trong khi phát triển

Các biến trong bản dịch là gì?

Biến là phần giữ chỗ sẽ được thay thế bằng các giá trị khi chạy ứng dụng đã dịch .

_() trong WordPress là gì?

Số nhận dạng duy nhất để truy xuất các chuỗi đã dịch .

WordPress có chức năng dịch không?

Chức năng dịch của WordPress cho phép bạn dịch các bài đăng, trang và loại bài đăng tùy chỉnh của mình trong giao diện quản trị viên WordPress . Chức năng này hỗ trợ dịch hàng loạt bài đăng, trang và loại bài đăng tùy chỉnh. Nó cũng hỗ trợ dịch nội dung front-end trên trang web của bạn.