Polylang – Plugin đa ngôn ngữ

Bài viết này hướng dẫn từng bước để dùng Polylang tạo bản tiếng Anh (EN) cho một website WordPress tiếng Việt (VI) đã có sẵn. Bao gồm checklist nhanh, cấu hình URL, dịch trang/bài viết, menu, widget, chuỗi giao diện, và mẹo SEO/hreflang.

1) Checklist nhanh

  1. Cài và kích hoạt Polylang.
  2. Khai báo ngôn ngữ: Tiếng Việt (mặc định)English.
  3. Cấu hình URL đa ngôn ngữ, đặt slug en/.
  4. Tạo Language Switcher trên menu/header.
  5. Nhân bản & dịch Trang (Pages) và Bài viết (Posts).
  6. Dịch Menu, Widget, Chuỗi giao diện (Strings).
  7. Đồng bộ (sync) trường chung: ảnh đại diện, taxonomy… nếu cần.
  8. Cập nhật SEO: tiêu đề, mô tả, hreflang, sitemap đa ngôn ngữ.
  9. Kiểm tra 404, liên kết nội bộ, canonical.
  10. Xóa cache & test luồng chuyển ngôn ngữ.

2) Cài đặt & tạo ngôn ngữ

Bước 1 — Cài Polylang

  • Vào Plugins › Add New → tìm “Polylang” → InstallActivate.
  • Nếu có WooCommerce: cài thêm Polylang for WooCommerce (trả phí) để dịch sản phẩm/checkout.

Bước 2 — Khai báo ngôn ngữ

  • Vào Languages › LanguagesAdd new language.
  • Thêm Tiếng Việt và tick Set as default language (nếu VI là mặc định).
  • Thêm English (Language code: en, Text direction: LTR).

3) Cấu hình URL & Permalink (SEO quan trọng)

  • Vào Languages › Settings › URL modifications.
  • Chọn:
    • Ngôn ngữ trong đường dẫn: /vi//en/ (khuyên dùng), hoặc
    • Ngôn ngữ mặc định không có mã: VI = /, EN = /en/.
  • Bật The language is set from the directory name in pretty permalinks.
  • Vào Settings › PermalinksSave Changes để làm mới rewrite rules.
  • Mẹo: đặt slug tiếng Anh là en (ngắn, quen).

4) Thêm bộ chuyển ngôn ngữ (Language Switcher)

Cách 1 — Thêm vào Menu

  • Appearance › Menus → chọn menu đang dùng (vd: Primary).
  • Cột trái → Languages → tick Language switcherAdd to menu.
  • Tùy chọn hiển thị: cờ, tên, mã (EN/VI), separator.

Cách 2 — Widget/Block

  • Appearance › Widgets (hoặc Site Editor với block theme) → thêm block Language Switcher vào Header/Sidebar/Footer.

Cách 3 — Chèn bằng PHP (nâng cao)

<?php
if ( function_exists( 'pll_the_languages' ) ) {
  pll_the_languages( array(
    'dropdown' => 0,
    'show_flags' => 1,
    'show_names' => 1,
    'hide_if_no_translation' => 0,
  ) );
}
?>

5) Dịch Trang/Bài viết hiện có

Nguyên tắc: Mỗi nội dung có 1 bản VI liên kết với 1 bản EN.

  • Vào Pages › All Pages. Ở cột ngôn ngữ, thấy biểu tượng “+” dưới cờ EN cho trang chỉ có bản VI.
  • Nhấn “+ (EN)” để tạo bản dịch; chỉnh Title, Content, Excerpt, Featured Image, SEO title/description (tiếng Anh) → Publish.
  • Lặp lại cho PostsCustom Post Types (nếu có).

Đồng bộ trường chung

  • Languages › Settings › Synchronization: bật sync Featured image, Parent page, Taxonomies

Taxonomy (Danh mục/Thẻ)

  • Vào Posts › Categories/Tags → tạo bản EN tương ứng và link translations giữa VI–EN.

6) Dịch Menu

  • Mỗi ngôn ngữ dùng menu riêng.
  • Appearance › Menus → chọn Display location cho VietnameseEnglish.
  • Dùng nút “+ (EN)” để tạo menu tiếng Anh.
  • Thêm các trang EN vào menu EN (không trộn link VI).

7) Dịch chuỗi giao diện (Strings), Widget, Form

  • Languages › String translations: dịch chuỗi theme/plugin như “Read more”, “Search”, thông báo 404, nút form…
  • Với block theme: kiểm tra Header/Footer template parts cho từng ngôn ngữ (Site Editor → chọn ngôn ngữ ở top bar).
  • Form (Contact Form 7, Fluent Forms, Gravity Forms…): tạo form riêng cho EN hoặc dùng chuỗi dịch nếu plugin hỗ trợ.

8) Media & Attachment

  • Bật Translate media nếu muốn đặt tiêu đề/alt/caption theo từng ngôn ngữ.
  • SEO: viết AltCaption bằng tiếng Anh cho bản EN.

9) Cấu hình SEO đa ngôn ngữ (Yoast/Rank Math/SEOpress)

  • Mỗi trang EN cần Title, Meta Description, Slug tiếng Anh.
  • Hreflang: Polylang + plugin SEO thường tự sinh thẻ rel=”alternate” hreflang=”vi”hreflang=”en”. Kiểm tra source HTML để đảm bảo đủ cặp VI–EN.
  • Sitemap: kiểm tra sitemap có tách theo ngôn ngữ (vd: mục “en” và “vi” trong /sitemap_index.xml).
  • Canonical: mỗi ngôn ngữ canonical về chính nó (không cross-language canonical).
  • Liên kết nội bộ ở bản EN phải trỏ sang URL EN tương ứng.

10) Tùy chỉnh nâng cao

  • Ẩn nội dung chưa dịch: Languages › Settings → bật tùy chọn ẩn nội dung chưa dịch để giảm 404.
  • Phát hiện ngôn ngữ trình duyệt: cân nhắc UX & SEO; tránh redirect cứng nếu đang chạy quảng cáo/SEO.
  • Custom Post Types/ACF: bật “Translatable” cho post type/field cần dịch.
  • WooCommerce: dùng Polylang for WooCommerce để dịch Sản phẩm, Thuộc tính, Email, và đồng bộ tồn kho.

11) Quy trình làm việc khuyến nghị

  1. Chốt cấu trúc URL: VI = /, EN = /en/.
  2. Tạo menu EN trước khi nhân trang.
  3. Dịch nhóm trang hệ thống: Home, About, Services, Blog, Contact.
  4. Dịch Categories rồi mới dịch Posts để giữ mapping taxonomy.
  5. Quét & dịch Strings sau khi hoàn thiện template.
  6. QA: hreflang, sitemap, redirect, 404, tốc độ (cache đa ngôn ngữ).
  7. Hướng dẫn biên tập: luôn dùng nút “+ (EN)” trên bản VI để tạo bản dịch liên kết.

12) Lỗi thường gặp & cách xử lý

  • /en/ báo 404Settings › PermalinksSave Changes → xóa cache (plugin + server/CDN).
  • Switch ngôn ngữ nhảy sai trang → chưa link translations VI–EN. Vào trang VI, panel Languages (sidebar) → Translations → gán đúng trang EN.
  • Menu EN hiển thị link VI → đang dùng chung một menu cho 2 ngôn ngữ. Tạo menu riêng cho EN và gán đúng vị trí.
  • Chuỗi “Read more” chưa dịchLanguages › String translations; tìm theo domain (theme/plugin) để dịch.
  • Thiếu hreflang → kiểm tra plugin SEO + Polylang; đảm bảo mỗi cặp trang đã liên kết translations.

13) Gợi ý cấu trúc nội dung tiếng Anh (phù hợp thị trường VN)

  • Home (EN): thông điệp ngắn, lợi ích, CTA rõ (Contact/Quote).
  • Services: chia gói/bảng giá, cân nhắc hiển thị đơn vị USD/VND.
  • Case Studies/Portfolio: ưu tiên dự án tiêu biểu tại VN, mô tả EN súc tích.
  • Blog (EN): tái sử dụng chủ đề VI nhưng viết lại theo insight người đọc quốc tế (từ khóa EN).
  • Contact: số điện thoại dạng quốc tế (+84), giờ làm việc ICT (UTC+7), Google Map.

14) Bảo trì sau khi đa ngôn ngữ

  • Mỗi khi tạo bài mới (VI) → tạo ngay bản EN hoặc đặt trạng thái Noindex cho EN nếu chưa kịp dịch.
  • Soát liên kết nội bộ định kỳ, tránh trỏ chéo sai ngôn ngữ.
  • Rà sitemap sau mỗi lần thêm CPT/taxonomy.
  • Kiểm tra 404 & Search Console cho thẻ hreflang.

Tài nguyên nhanh

  • Trang quản trị liên quan: Languages › Languages, Languages › Settings, Languages › String translations.
  • Khu vực thường thao tác: Pages, Posts, Appearance › Menus, Appearance › Widgets, Settings › Permalinks.
Mục lục