WooCommerce default English-only, không có Vietnamese locale built-in. Setup tiếng Việt cần plugin Loco Translate miễn phí hoặc file .mo translation từ WordPress Translation Project.
Mất 30-45 phút setup cho 3 lớp ngôn ngữ — admin core, frontend customer-facing, và email transactional. Bài này hướng dẫn workflow chuẩn, best practice translation thuật ngữ e-commerce, override email template trong child theme, và 5 lỗi phổ biến về encoding UTF-8.
Vì sao WooCommerce mặc định tiếng Anh
WooCommerce do Automattic Mỹ phát triển, default English-only. Translation tiếng Việt khoảng 95% complete bởi cộng đồng VN đóng góp qua WordPress Translation Project — community-driven, không phải bản dịch chính thức của Automattic.
Cài WooCommerce với site language Vietnamese sẽ auto-download tiếng Việt. Nhưng có 200+ string chưa translate (mới thêm hoặc thuộc plugin extension) — phải tự translate qua Loco Translate hoặc submit translation lên translation project.
Bảng status translation theo khu vực
| Khu vực | Translation status | Hành động |
|---|---|---|
| WooCommerce core admin | ~95% complete | Auto-download, OK |
| Frontend (cart/checkout) | ~98% complete | Auto-download, OK |
| Email templates | ~95% complete | Auto-download, customize manual |
| Plugin payment (VNPay/MoMo) | ~70% complete | Translate qua Loco Translate |
| Plugin shipping (GHN/GHTK) | ~80% complete | Translate qua Loco Translate |
| Plugin third-party | ~50% complete | Tự translate hoặc skip nếu admin-only |
Bước 1 — Set site language Vietnamese
Foundational step: WordPress site language phải set Vietnamese trước khi WooCommerce auto-download translation. Mất 2 phút qua wp-admin nhưng nhiều shop bỏ qua bước này và đi thẳng vào Loco Translate, dẫn tới setup phức tạp hơn cần thiết.
5 bước set site language tiếng Việt
- Vào Settings → General.
- Field “Site Language”: chọn “Tiếng Việt” từ dropdown.
- Click Save Changes — WordPress tự download tiếng Việt language pack.
- Vào Dashboard → Updates → click “Update Translations” để pull translation mới nhất.
- Verify: admin UI hiện tiếng Việt (“Bài viết” thay “Posts”, “Sản phẩm” thay “Products”).
Verify language pack đã active đúng plugin
Sau khi set xong, kiểm tra 3 nơi để chắc chắn language pack đã apply đúng phạm vi. Nếu 1 trong 3 vẫn English, có thể do plugin cache hoặc plugin chưa cập nhật translation file.
- Admin sidebar: phải hiện “Bài viết”, “Trang”, “Sản phẩm” thay “Posts”, “Pages”, “Products”.
- WooCommerce admin: menu “Đơn hàng”, “Khách hàng”, “Khuyến mãi” thay “Orders”, “Customers”, “Coupons”.
- Frontend cart: button “Thêm vào giỏ” thay “Add to cart”, checkout form “Thanh toán” thay “Checkout”.
Bước 2 — Cài Loco Translate cho missing strings
Loco Translate là plugin miễn phí để translate plugin và theme strings chưa có trong language pack chính thức. UI dễ dùng: search string English, type bản dịch tiếng Việt, save.
Loco tự generate .mo file vào folder languages của plugin.
Workflow translate qua Loco trong 5 bước
- Cài plugin Loco Translate (free, 1 triệu+ install) qua wp-admin.
- Vào Loco Translate → Plugins, chọn plugin cần translate (vd VNPAY for WooCommerce).
- Click “+ New language” → chọn Vietnamese (vi) từ dropdown.
- Loco show list strings — translate từng string từ English sang tiếng Việt qua UI inline.
- Save — Loco compile thành .mo file, plugin tự pick up translation ngay lập tức.
Best practice translation thuật ngữ e-commerce Việt
Translation đúng quan trọng hơn translation hoàn chỉnh. Sai 1 term key như “Add to cart” có thể giảm trust và tỷ lệ chốt đơn.
Tham khảo bảng pattern dưới đây — đây là convention từ các shop VN lớn (Tiki, Shopee, Lazada) áp dụng nhất quán.
# Translation pattern e-commerce VN
# Common strings:
"Add to cart" → "Thêm vào giỏ"
"Checkout" → "Thanh toán"
"My account" → "Tài khoản của tôi"
"Order" → "Đơn hàng"
"Shipping" → "Vận chuyển"
"Total" → "Tổng cộng"
"Apply coupon" → "Áp dụng mã giảm giá"
"Update cart" → "Cập nhật giỏ hàng"
# Avoid Anglicism (giữ English khi có term VN):
"Username" → "Tên đăng nhập" (KHÔNG: "Username")
"Password" → "Mật khẩu" (KHÔNG: "Password")
"Newsletter" → "Bản tin" (KHÔNG: "Newsletter")
# Keep English cho term technical user quen:
"SKU" → "SKU" (giữ nguyên)
"GDPR" → "GDPR" (giữ nguyên)
"OTP" → "OTP" (giữ nguyên)
Bước 3 — Translate email transactional template
WooCommerce gửi 11 email tự động cho cả admin và customer. Default tiếng Anh, có thể translate qua 2 cách: WooCommerce → Settings → Emails (basic — chỉ subject và heading), hoặc override template trong child theme (full control toàn bộ HTML).
Override email template trong child theme
Cách override template cho phép edit toàn bộ HTML và message body. Phù hợp shop cần customize hình ảnh brand, button CTA, hoặc thêm thông tin shipping VN vào email confirm.
// Step 1: Tạo folder trong child theme
your-theme/
├── woocommerce/
│ ├── emails/
│ │ ├── customer-completed-order.php
│ │ ├── customer-processing-order.php
│ │ └── ... (other email templates)
// Step 2: Copy file từ plugins/woocommerce/templates/emails/
// vào your-theme/woocommerce/emails/
// Step 3: Edit content tiếng Việt
// File: customer-processing-order.php (example)
<?php /**
* Customer processing order email
*/
defined('ABSPATH') || exit;
do_action('woocommerce_email_header', $email_heading, $email);
?>
<?php /* translators: %s: Customer first name */ ?>
<p>Xin chào <?php echo esc_html($order->get_billing_first_name()); ?>,</p>
<p>Cảm ơn bạn đã đặt hàng tại shop của chúng tôi. Đơn hàng #<?php echo $order->get_order_number(); ?>
đã được tiếp nhận và đang chuẩn bị.</p>
<p>Đơn của bạn sẽ được giao trong 1-3 ngày làm việc tại Hà Nội/HCM,
3-5 ngày các tỉnh khác.
Shipper sẽ liên hệ trước 30 phút khi giao.</p>
4 email quan trọng nhất cần customize đầu tiên
Trong 11 email default, shop chỉ cần customize 4 email quan trọng nhất ở giai đoạn đầu. 7 email còn lại giữ default từ language pack — translate khá đầy đủ, không gây ảnh hưởng UX lớn.
- New order (admin): notify admin có đơn mới — thêm link order detail và phone number khách để contact nhanh.
- Processing order (customer): trust signal sau khi thanh toán — confirm số đơn, expected delivery time, contact support.
- Completed order (customer): đã giao xong — kèm review request và recommendation cross-sell.
- Cancelled / Failed order: apology message + reason + hướng dẫn re-order — giảm friction cho khách quay lại.
Bước 4 — Custom frontend strings qua filter hook
Theme có thể override 1 số WooCommerce strings hard-coded như "Sale!" badge hay "Out of stock" text. Edit qua filter hook trong child theme functions.php hoặc plugin custom — không cần đụng vào core plugin.
4 string frontend thường cần override
Đây là 4 string khách thấy nhiều nhất ở trang shop và product. Default translation tiếng Việt tạm ổn nhưng chưa đủ "thuần Việt" — override để tăng tự nhiên và phù hợp ngữ cảnh VN.
// functions.php của child theme
// Override "Sale!" badge tiếng Việt
add_filter('woocommerce_sale_flash', function($html, $post, $product) {
return '<span class="onsale">Khuyến mãi</span>';
}, 10, 3);
// Override "Out of stock" text
add_filter('woocommerce_get_availability_text', function($availability, $product) {
if (! $product->is_in_stock()) {
return 'Hết hàng — đặt trước';
}
return $availability;
}, 10, 2);
// Override "Add to cart" button text per product type
add_filter('woocommerce_product_single_add_to_cart_text', function($text, $product) {
if ($product->is_type('variable')) {
return 'Chọn biến thể'; // Variable product
}
return 'Thêm vào giỏ'; // Simple product
}, 10, 2);
// Custom "Free!" text
add_filter('woocommerce_get_price_html', function($price, $product) {
if ($product->get_price() == 0) {
return '<span class="amount">Miễn phí</span>';
}
return $price;
}, 10, 2);
5 lỗi phổ biến với tiếng Việt
5 lỗi dưới đây xảy ra ở 50%+ shop translate qua Loco lần đầu. Đa số liên quan tới encoding UTF-8 hoặc cache làm translation cũ không refresh.
Biết trước giúp debug nhanh trong 5-10 phút.
- Encoding lỗi (ơ thành á): file .mo encoding sai. Re-save với UTF-8 trong Loco Translate (auto-handle), không edit raw bằng text editor như Notepad.
- Translation không apply: cache plugin như W3 Total Cache hoặc WP Rocket cache translation cũ. Clear cache sau khi save translation.
- Plugin update reset translation: file .mo bị overwrite khi plugin update. Fix bằng cách lưu translation trong child theme override hoặc dùng Loco "Custom" location thay vì "Author" location.
- Email template không reload sau edit: WooCommerce cache template. Clear cache bằng URL
wc-admin/?action=clear_template_cachehoặc deactivate-reactivate WooCommerce. - Mixed language admin: 1 phần tiếng Việt 1 phần English. Update translations qua Dashboard → Updates → Translations để pull bản mới nhất từ WordPress Translation Project.
Câu hỏi thường gặp
Loco Translate vs Polylang — khác gì?
2 plugin giải quyết 2 vấn đề khác nhau, đừng nhầm lẫn. Chọn đúng theo nhu cầu shop để tránh setup thừa hoặc thiếu.
Loco Translate: translate plugin và theme strings cho single language site. Polylang: multilingual site với cùng nội dung 2-3 ngôn ngữ.
Cho shop VN-only thì Loco đủ. Multi-lingual VN kèm EN cho khách quốc tế thì Polylang.
Có nên customize toàn bộ email tiếng Việt không?
Có, vì khách Việt nhận email English thấy lạ và trust drop. Nhưng không cần customize tất cả 11 email cùng lúc — ưu tiên 4 email quan trọng nhất trước.
Customize 4 email key (New order, Processing, Completed, Cancelled), 7 email khác giữ default từ language pack tiếng Việt. Sau 1-2 tháng vận hành nếu có feedback khách thì mới customize tiếp.
Translation conflict với theme custom xử lý sao?
Có thể xảy ra khi theme có riêng file .pot hoặc .mo overlap với WooCommerce strings. Theme strings ưu tiên trước WooCommerce strings — kết quả là 1 số label dùng version theme thay vì Woo.
Solution: edit override trong child theme nếu conflict. Hoặc dùng Loco Translate vào Themes → tên theme → edit string cụ thể về đúng bản dịch shop muốn dùng.
Có cần translate plugin admin-only không?
Không cần thiết trong giai đoạn đầu. Admin chỉ shop owner và staff xem — English OK với người đã quen WordPress.
Tập trung resource translate strings frontend mà customer thấy và email template.
Khi shop có 3+ staff không rành English, mới cân nhắc translate admin-only plugin. Lúc đó dùng Loco Translate hoặc auto-translate qua AI plugin để tăng tốc.
Bao lâu translate hết 1 plugin lớn?
Khoảng 2-4 giờ cho plugin core với 500 strings. Plugin extension lớn như WooCommerce Subscriptions hay Bookings có khoảng 1.000 strings — mất 1 ngày làm việc.
Best practice: translate khi plugin install lần đầu, không defer. Defer 1 plugin chưa translate nhiều tuần rồi dồn cuối kỳ sẽ tốn gấp 2 lần thời gian vì mất context các string đã thấy trước đó.
Đọc tiếp các bài liên quan
Việt hoá là 1 layer của localization. Để shop hoàn chỉnh cho thị trường VN, còn cần cấu hình tiền tệ, thuế và email transactional.
Các bài dưới đây trong cùng cụm WooCommerce setup giúp hoàn thiện stack localization:
- Cài WooCommerce từ A-Z trong 6 bước cho shop Việt — nền tảng để áp Việt hoá lên.
- Cấu hình tiền VND cho WooCommerce — 5 setting + multi-currency cho shop xuất khẩu.
- Cấu hình thuế VAT cho WooCommerce — 3 mô hình + tích hợp hoá đơn điện tử.
- Cấu hình email WooCommerce với SMTP + DKIM/SPF — email transactional có template tiếng Việt chuẩn.
Cần đội Web22 setup Việt hoá turnkey bao gồm email template, frontend strings và admin language, xem chi tiết Đội Web22 dev WooCommerce full feature — báo giá rõ ràng theo phạm vi, không phát sinh sau khi ký hợp đồng.


