Nội dung
- shares
- Facebook Messenger
- Gmail
- Viber
- Skype
WordPress được sử dụng để tạo nhiều thể loại trang web khác nhau. Khi xây dựng một giao diện WordPress, bạn nên xây dựng nó để đáp ứng số lượng khán giả lớn nhất có thể. Mục tiêu này muốn nói rằng chủ đề của bạn phải sẵn sàng bằng các ngôn ngữ khác nhau. WordPress cung cấp API đơn giản mà bạn có thể sử dụng trong thiết kế giao diện để quốc tế hóa website. Trong bài viết này, bạn sẽ học cách thêm đa ngôn ngữ cho WordPress.
Xem thêm Tạo đa ngôn ngữ cho theme và plugin wordpress.
Cấu hình đa ngôn ngữ cho WordPress
Bạn có thể thêm các ngôn ngữ khác nhau vào trang web WordPress của mình. Để làm được điều đó, bạn có thể tải xuống các tệp dịch từ blog của nhóm dịch giả WordPress. Từ trang này, bạn có thể thấy các ngôn ngữ khác nhau có bản dịch, cũng như các bản dịch đã hoàn thành. Giả sử tôi muốn tải về ngôn ngữ tiếng Pháp. Tôi sẽ đi đến hàng ngôn ngữ tiếng Pháp, sau đó bấm vào tỷ lệ phần trăm như thể hiện trong hình dưới đây.
Sau đó, bạn chọn phiên bản WordPress và tải file .mo về máy tính.
Khi bạn đã tải xuống tệp .mo, bạn sẽ phải lưu tệp đó trong thư mục wp-content/languages
. Truy cập vào Settings -> General trong quản trị WordPress. Ở đó bạn sẽ có thể thấy các tùy chọn ngôn ngữ mà bạn đã đặt trong thư mục wp-content/languages
như được hiển thị trong hình ảnh. Vui lòng chọn ngôn ngữ mong muốn bạn muốn thay đổi trang web thành và nhấp vào ‘Lưu thay đổi’
Nạp TextDomain trong chủ đề
Bước đầu tiên để quốc tế hóa cho theme là tạo giao diện WordPress. Trong ví dụ này bằng cách tạo ra một chủ đề con của chủ đề twentyseventeen. Để tạo chủ đề con, trước tiên hãy tạo thư mục wp-content/themes/wpinternationlizationtheme
. Trong thư mục này, thêm tệp style.css với nội dung sau:
/* Theme Name: wpinternationlizationtheme Description: Twenty Seventeen Child Theme. Author: Abbas Suterwala Author URI: http://example.com Template: twentyseventeen Version: 1.0.0 Text Domain: wpinternationlizationtheme */
Tệp này định nghĩa một chủ đề con với tên wpinternationlizationtheme. Ở trên, mọi thông tin khai báo trong tệp style.css là các trường chuẩn mà chúng ta định nghĩa cho một chủ đề con. Trường Text Domain
là trường xác định tên duy nhất cho miền văn bản của chủ đề này. Theme này sẽ tải các tệp dịch với khóa này làm mã định danh duy nhất.
Tạo một file functions.php với đoạn mã sau đây:
<?php function wpinternationlizationtheme_enqueue_styles() { $parent_style = 'parent-style'; wp_enqueue_style( $parent_style, get_template_directory_uri() . '/style.css' ); wp_enqueue_style( 'child-style', get_stylesheet_directory_uri() . '/style.css', array( $parent_style ), wp_get_theme()->get('Version') ); } add_action( 'wp_enqueue_scripts', 'wpinternationlizationtheme_enqueue_styles' ); ?>
Mã trên nạp chủ đề mẹ (trường hợp này là twentyseventeen). Sau đó, styles từ chủ đề con được nạp.
Điều này cho phép các chủ đề con được tải cuối cùng và có thể được tùy chỉnh theo nhu cầu của chủ đề con. Bây giờ bạn sẽ muốn nạp miền văn bản, WordPress sẽ tìm kiếm bản dịch cho chủ đề này ở đâu? Bạn có thể tải miền văn bản của chủ đề bằng cách sử dụng hàm load_theme_textdomain của WordPress.
Để làm điều đó, thêm đoạn mã sau vào functions.php của bạn:
function wpinternationlizationtheme_setup(){ $domain = 'wpinternationlizationtheme'; // wp-content/languages/wpinternationlizationtheme/de_DE.mo load_theme_textdomain( $domain, trailingslashit( WP_LANG_DIR ) . $domain ); // wp-content/themes/wpinternationlizationtheme/languages/de_DE.mo load_theme_textdomain( $domain, get_stylesheet_directory() . '/languages' ); // wp-content/themes/wpinternationlizationtheme/languages/de_DE.mo load_theme_textdomain( $domain, get_template_directory() . '/languages' ); } add_action( 'after_setup_theme', 'wpinternationlizationtheme_setup' );
Đoạn mã trên sử dụng hook after_setup_theme
. Tính năng này, giúp website tải miền văn bản cho chủ đề. Điều này được thực hiện bởi hàm load_theme_textdomain
. Chức năng này được thiết lập để tìm kiếm các tệp .mo trong các thư mục sau:
- Languages directory - Child theme directory - Parent theme directory
Sử dụng bản dịch trong WordPress
Khi bạn đã thiết lập miền văn bản, hãy xem các hàm bạn có thể sử dụng để quốc tế hóa website WordPress của mình. Có hai hàm chủ yếu mà bạn có thể sử dụng. Thứ nhất là __ . Hàm này nhận hai đối số, đầu tiên là chuỗi và tên miền. Hàm này sau đó trả về chuỗi được bản địa hóa.
Vì vậy, nếu bạn muốn thêm một số văn bản ở cuối mỗi bài đăng, nhưng cũng muốn nội dung này được dịch dựa trên ngôn ngữ lựa chọn, hãy thêm mã sau vào hàm functions.php của bạn:
function wpinternationlizationtheme_after($content) { return $content . __('Read more', 'wpinternationlizationtheme'); } add_filter('the_content', 'wpinternationlizationtheme_after');
Hàm khác bạn có thể sử dụng là _e
, cũng giống với hàm __. Hàm này hiển thị văn bản được dịch trực tiếp trên trang thay vì chỉ trả về giá trị.
ví dụ: nếu bạn muốn thêm thông báo chân trang, thì thêm đoạn sau vào file footer.php
<?php _e('This site is powered by WordPress','wpinternationlizationtheme'); ?>
Tạo tệp .mo
Có nhiều công cụ có sẵn để tạo tệp .mo. Trong bài viết này, mình sẽ sử dụng công cụ phổ biến là poedit. Bạn có thể tải phần mềm poedit cho hệ điều hành của bạn từ https://poedit.net/download
Sau khi cài đặt poedit, bạn mở ‘file->New Catalog’:
Trong màn hình này, bạn có thể nhập thông tin cơ bản về dự án. Tab tiếp theo là cung cấp đường dẫn, như được hiển thị bên dưới hình:
Tab tiếp theo cho phép bạn nhập các từ khóa cần tìm kiếm để nhận kết quả các chuỗi cần bản địa hóa. Vì bạn đã sử dụng hai hàm __
và _e
trong các ví dụ trên, hãy thêm hai hàm này vào tab này.
Công cụ sẽ tìm kiếm tất cả các chuỗi cần dịch như thể hiện trong hình dưới đây.
Bây giờ bạn có thể thêm bản dịch cho từng chuỗi và sau đó nhấp vào ‘Lưu’ để lưu tệp tại wp-content/themes/ wpinternationlizationtheme/languages/fr_FR.mo
Bây giờ, cuối cùng, nếu bạn thay đổi ngôn ngữ thành ‘Tiếng Pháp’, bạn sẽ thấy các chuỗi của mình được dịch sang tiếng Pháp trên trang web. Chúc bạn thành công.
Nếu bạn thấy bài viết này hữu ích, hãy chia sẻ với bạn bè bằng cách nhấn nút chia sẻ ở bên dưới. Theo dõi chúng tôi trên Twitter và Facebook
- shares
- Facebook Messenger
- Gmail
- Viber
- Skype