Edu DaLatHub
  • Trang chủ
  • Flutter
  • WordPress Plugin
  • GoLang
  • ReactJS
  • NodeJS
  • Networking
    • Basic Networking
      • ARP
      • ICMP
      • TCP/UDP
    • Routing & Switching
      • RIP
      • OSPF
      • EIGRP
      • Redistribution
      • TSHOOT
      • WAN
Liên hệ

Tháng Tám 21, 2021

  • By  tinhphan
  • 0 comments

Làm đa ngôn ngữ cho plugin của bạn không dùng plugin WordPress

Hi AE.

Trong bài viết này AE sẽ biết được cách tự viết tập tin dịch cho plugin của mình mà không cần dùng thêm plugin ngoài.

Đầu tiên AE cần hiểu về 3 tập tin POT, PO, MO.

Đơn giản lập tin POT là tập tin theo dạng template (mẫu) để định nghĩa các key từ khoá của AE.

Tập tin PO là tập tin tương ứng cho mỗi ngôn ngữ khác nhau và tập tin MO là tập tin mã hoá của PO.

Đầu tiên AE phải quy định domain của AE ví dụ plugin của mình là Securi thì tên domain là securi hoặc cái chi đó cũng được miễn là không trùng với các domain khác.

AE thêm domain vào plugin AE như sau

add_action( 'init', 'wpdocs_load_textdomain' );

function wpdocs_load_textdomain(){
    load_plugin_textdomain( 'securi', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
}

Sau đó trong file plugin của AE sẽ có đoạn còm để AE khai báo về plugin name, version thì AE sử dụng mẫu sau.

/**
 * Plugin Name: Securi
 * Plugin URI: https://dalathub.com
 * Description: Create a staging clone site for testing & developing
 * Author: tinhpt.38@gmail.com
 * Author URI: https://dalathub.com
 * Version: 1.0.0
 * Text Domain: securi
 * Domain Path: /languages/
 */

Trong code của AE sẽ dùng một số hàm của WP, mình dùng hàm __(‘key’,’domain’) để cho WP hiểu và dịch theo ngôn ngữ, code của mình như ni.

 echo __('Securi','securi');
 echo '<h1>'. __('First name','securi') .'</h1>';

Code này mình viết tại file securi.php và dòng 35, 36 AE nhớ chỗ này.

Tiếp theo mình sẽ tạo một folder để chứa tập tin ngôn ngữ là /languages/ nằm trong folder plugin của AE.

Để tạo file POT đúng chuẩn và ít tốn công sức AE nên dùng WP-CLI. AE tự search cách cài nhen dễ thôi.

Mở terminal lên sau đó cd vào folder plugin của AE sau đó chạy lên như ni securi là tên domain của AE.

wp i18n make-pot . languages/sucuri.pot

AE sẽ có file như này

# Copyright (C) 2021 tinhpt.38@gmail.com
# This file is distributed under the same license as the Securi plugin.
msgid ""
msgstr ""
"Project-Id-Version: Securi 1.0.0\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/securi\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2021-08-21T02:59:15+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"X-Generator: WP-CLI 2.5.0\n"
"X-Domain: securi\n"

#. Plugin Name of the plugin
#: securi.php:26
#: securi.php:27
#: securi.php:35
msgid "Securi"
msgstr ""

#. Plugin URI of the plugin
#. Author URI of the plugin
msgid "https://dalathub.com"
msgstr ""

#. Description of the plugin
msgid "Create a staging clone site for testing & developing"
msgstr ""

#. Author of the plugin
msgid "tinhpt.38@gmail.com"
msgstr ""

#: securi.php:37
msgid "First name"
msgstr "First name POT"

Vậy là setup ổn rồi. Giờ AE sẽ tạo tập tin dịch bằng phần mềm Poedit. AE mở như hình dưới ni rồi AE chọn file POT mà AE đã tạo ra ở bước trên.

Thêm tập tin dịch từ file POT có sẵn.

Nó sẽ ra như ni. Ở đây AE nhớ chọn là Vietnnamese chứ không phải là Vietnnamese (Vietnam)

Sau đó AE chỉ cần chọn rồi dịch thôi.

Sau đó AE lưu lại thì nhớ phải lưu với tên là securi-vi.po không có đoạn securi phía trước nó không nhận cho AE đâu.

Chúc AE thành công.

Tags:
Wordpress, Wordpress Plugin

Leave a Comment Cancel Reply

Your email address will not be published.*

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.

Don’t compare yourself with anyone in this world…if you do so, you are insulting yourself.

Bill Gates

When something is important enough, you do it even if the odds are not in your favor.

Elon Musk

Bài viết mới

  • Lorem Ipsum Sample Content123
  • Lorem Ipsum Sample Content
  • Hello world
  • Hello world
  • Hello world
  • Wide area networks (Phần 2)
  • Wide area networks (Phần 1)
  • Redistribution (Phần Cuối)
  • Redistribution (Phần 1)
  • OSPF – Open Shortest Path First (Phần Cuối)

Nơi chia sẻ về tin công nghệ, các kinh nghiệm lập trình. Xây dựng các khoá đào tạo lập trình, mạng, tin học văn phòng...

Thông tin liên hệ

  • 2/9 Phạm Ngũ Lão, Phường 3, Đà Lạt
  • 0865802659
  • info@dalathub.com

Copyright @ 2022 Edu DaLatHub