Cho Google biết về các phiên bản đã bản địa hóa của trang

Nếu trang của bạn có nhiều phiên bản cho các ngôn ngữ hoặc khu vực khác nhau, hãy cho Google biết về các biến thể khác nhau này. Làm như vậy sẽ giúp Google Tìm kiếm đưa người dùng đến phiên bản phù hợp nhất của trang theo ngôn ngữ hoặc khu vực.

Lưu ý rằng ngay cả khi bạn không hành động, Google vẫn có thể tìm thấy các phiên bản ngôn ngữ thay thế của trang của bạn, nhưng tốt nhất bạn nên chỉ rõ các trang theo ngôn ngữ hoặc theo khu vực.

Dưới đây là một số tình huống ví dụ mà bạn nên chỉ rõ các trang thay thế:

  • Bạn dùng một ngôn ngữ duy nhất cho nội dung chínhchỉ dịch nội dung mẫu, chẳng hạn như phần điều hướng và chân trang. Các trang có nội dung do người dùng tạo, chẳng hạn như diễn đàn, thường làm điều này.
  • Nội dung của bạn có khác biệt nhỏ theo từng khu vực với nội dung tương tự nhau và dùng cùng một ngôn ngữ. Ví dụ: bạn có thể có nội dung tiếng Anh được nhắm mục tiêu đến Mỹ, Anh và Ireland.
  • Nội dung trang web của bạn được dịch hoàn toàn sang nhiều ngôn ngữ. Ví dụ: bạn có cả hai phiên bản tiếng Đức và tiếng Anh của mỗi trang.

Các phiên bản đã bản địa hóa của một trang chỉ được coi là phiên bản trùng lặp nếu nội dung chính của trang vẫn chưa được dịch.

Các phương thức xác định trang thay thế

Có ba cách để chỉ cho Google biết các phiên bản đa ngôn ngữ/đa khu vực của một trang:

Thẻ HTML

Thêm phần tử <link rel="alternate" hreflang="lang_code"... > vào tiêu đề trang để cho Google biết tất cả các biến thể của trang theo ngôn ngữ và khu vực. Cách này hữu ích nếu bạn không có sơ đồ trang web hoặc không thể chỉ định tiêu đề phản hồi HTTP cho trang web của mình.

Mỗi biến thể của trang phải bao gồm một tập hợp các phần tử <link> trong phần tử <head>, một đường liên kết cho mỗi biến thể trang, bao gồm chính trang đó. Tập hợp đường liên kết phải giống nhau cho mọi phiên bản của trang. Xem các nguyên tắc bổ sung.

Sau đây là cú pháp của mỗi yếu tố liên kết:

<link rel="alternate" hreflang="lang_code" href="url_of_page" />

lang_code
Mã ngôn ngữ/mã khu vực được hỗ trợ là mục tiêu mà phiên bản này của trang nhắm tới, hoặc x-default để khớp với bất kỳ ngôn ngữ nào không có trong thẻ hreflang trên trang.
url_of_page
URL đủ điều kiện cho phiên bản của trang này đối với ngôn ngữ/khu vực đã chỉ định.
Đặt thẻ <link> của bạn gần phía trên phần tử <head>. Ở mức tối thiểu, thẻ <link> phải nằm trong phần <head> có định dạng hợp lệ hoặc trước bất kỳ mục nào có thể khiến <head> đóng sớm, chẳng hạn như <p> hoặc pixel theo dõi. Nếu bạn còn băn khoăn, hãy dán mã từ trang được kết xuất vào trình xác thực HTML để đảm bảo rằng các đường liên kết nằm bên trong phần tử <head>.

Ví dụ

Example Widgets, Inc có một trang web phục vụ người dùng ở Mỹ, Anh và Đức. Những URL sau đây chứa nội dung về cơ bản là giống nhau nhưng có khác biệt theo từng khu vực:

  • http://en.example.com/page.html – Trang chủ chung bằng tiếng Anh, chứa thông tin về phí vận chuyển quốc tế từ Mỹ.
  • http://en-gb.example.com/page.html – Trang chủ tại Vương quốc Anh, hiển thị giá bằng bảng Anh.
  • http://en-us.example.com/page.html – Trang chủ tại Mỹ, hiển thị giá bằng đô la Mỹ.
  • http://de.example.com/page.html Trang chủ tiếng Đức.
  • http://www.example.com/ Trang mặc định không nhắm mục tiêu bất kỳ ngôn ngữ hoặc khu vực nào; có các bộ chọn để cho người dùng chọn ngôn ngữ và khu vực của họ.

Lưu ý rằng các miền con theo ngôn ngữ trong các URL này (en, en-gb, en-us, de) không được Google sử dụng để xác định đối tượng mục tiêu cho trang. Bạn phải ánh xạ đối tượng mục tiêu một cách rõ ràng.

Đây là HTML sẽ được dán vào phần <head> của tất cả các trang được liệt kê ở trên. HTML này sẽ đưa người dùng ở Mỹ, Vương quốc Anh, người nói tiếng Anh nói chung và người nói tiếng Đức đến các trang đã bản địa hóa và tất cả những người dùng khác đến một trang chủ chung. Google Tìm kiếm trả lại kết quả phù hợp cho người dùng theo các tùy chọn cài đặt trên trình duyệt của họ.

<head>
 <title>Widgets, Inc</title>
  <link rel="alternate" hreflang="en-gb"
       href="http://en-gb.example.com/page.html" />
  <link rel="alternate" hreflang="en-us"
       href="http://en-us.example.com/page.html" />
  <link rel="alternate" hreflang="en"
       href="http://en.example.com/page.html" />
  <link rel="alternate" hreflang="de"
       href="http://de.example.com/page.html" />
 <link rel="alternate" hreflang="x-default"
       href="http://www.example.com/" />
</head>

Tiêu đề HTTP

Bạn có thể trả lại tiêu đề HTTP trong phản hồi GET của trang để cho Google biết về tất cả các biến thể của trang theo ngôn ngữ và khu vực. Cách này hữu ích cho các tệp không phải HTML (như tệp PDF).

Đây là định dạng của tiêu đề:

Link: <url1>; rel="alternate"; hreflang="lang_code_1", <url2>; rel="alternate"; hreflang="lang_code_2", ...

<url_x>
URL đủ điều kiện của trang thay thế, tương ứng với chuỗi vị trí gán cho thuộc tính hreflang được liên kết. URL phải nằm trong dấu < >. Ví dụ: <https://www.google.com>
lang_code_x
Mã ngôn ngữ/mã khu vực được hỗ trợ mà phiên bản này của trang nhắm mục tiêu hoặc x-default để khớp với bất kỳ ngôn ngữ nào không có trong thẻ hreflang trên trang.

Bạn phải chỉ định một nhóm giá trị <url>, rel="alternate"hreflang cho mọi phiên bản của trang , trong đó có phiên bản được yêu cầu, phân cách bằng dấu phẩy như được hiển thị trong ví dụ bên dưới. Tiêu đề Link: được trả về cho mọi phiên bản của trang đều giống nhau. Xem các nguyên tắc bổ sung.

Ví dụ

Dưới đây là ví dụ về tiêu đề Link: được trả về từ một trang web có ba phiên bản của cùng một tệp PDF: một phiên bản cho người nói tiếng Anh, một phiên bản cho người nói tiếng Đức tại Thụy Sĩ và một phiên bản cho người nói tiếng Đức ở những khu vực khác:

Link: <http://example.com/file.pdf>; rel="alternate"; hreflang="en",
      <http://de-ch.example.com/file.pdf>; rel="alternate"; hreflang="de-ch",
      <http://de.example.com/file.pdf>; rel="alternate"; hreflang="de"

Sơ đồ trang web

Bạn có thể sử dụng Sơ đồ trang web để cho Google biết tất cả các biến thể của mỗi URL theo ngôn ngữ và khu vực. Cách làm như sau: thêm một phần tử <loc> để chỉ định một URL, trong đó có các mục con <xhtml:link> liệt kê mọi biến thể ngôn ngữ/khu vực của trang, bao gồm cả chính trang đó. Do đó, nếu một trang của bạn có 3 phiên bản, thì sơ đồ trang web của bạn sẽ có 3 mục, mỗi mục có 3 mục con giống hệt nhau.

Quy tắc sơ đồ trang web:

  • Chỉ định vùng chứa tên xhtml như sau:
    xmlns:xhtml="http://www.w3.org/1999/xhtml"
  • Tạo một phần tử <url> riêng cho mỗi URL.
  • Mỗi phần tử <url> phải chứa một phần tử con <loc> có vai trò chỉ định URL trang.
  • Mỗi phần tử <url> phải có một phần tử con <xhtml:link rel="alternate" hreflang="supported_language-code"> có vai trò liệt kê mọi phiên bản thay thế của trang, bao gồm chính trang đó. Thứ tự của các phần tử con <xhtml:link> không quan trọng, nhưng bạn nên giữ nguyên thứ tự để dễ dàng kiểm tra lỗi.
  • Xem các nguyên tắc bổ sung.

Ví dụ

Sau đây là một trang tiếng Anh được nhắm mục tiêu đến người nói tiếng Anh trên toàn thế giới, còn phiên bản tương đương của trang này được nhắm mục tiêu đến người nói tiếng Đức trên toàn thế giới và người nói tiếng Đức ở Thụy Sĩ. Dưới đây là tất cả các URL có trên trang web của bạn:

  • www.example.com/english/page.html, được nhắm mục tiêu đến người nói tiếng Anh.
  • www.example.com/deutsch/page.html, được nhắm mục tiêu đến người nói tiếng Đức.
  • www.example.com/schweiz-deutsch/page.html, được nhắm mục tiêu đến người nói tiếng Đức ở Thụy Sĩ.

Dưới đây là sơ đồ trang web cho ba trang đó:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
  xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url>
    <loc>http://www.example.com/english/page.html</loc>
    <xhtml:link
               rel="alternate"
               hreflang="de"
               href="http://www.example.com/deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="de-ch"
               href="http://www.example.com/schweiz-deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="en"
               href="http://www.example.com/english/page.html"/>
  </url>
  <url>
    <loc>http://www.example.com/deutsch/page.html</loc>
    <xhtml:link
               rel="alternate"
               hreflang="de"
               href="http://www.example.com/deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="de-ch"
               href="http://www.example.com/schweiz-deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="en"
               href="http://www.example.com/english/page.html"/>
  </url>
  <url>
    <loc>http://www.example.com/schweiz-deutsch/page.html</loc>
    <xhtml:link
               rel="alternate"
               hreflang="de"
               href="http://www.example.com/deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="de-ch"
               href="http://www.example.com/schweiz-deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="en"
               href="http://www.example.com/english/page.html"/>
  </url>
</urlset>

Nguyên tắc cho tất cả các phương pháp

  • Mỗi phiên bản ngôn ngữ phải liệt kê chính phiên bản đó cũng như tất cả các phiên bản ngôn ngữ khác.
  • Các URL thay thế phải đủ điều kiện, kể cả phương thức truyền tải (http/https). Vì vậy, bạn phải dùng:
    https://example.com/foo, không được dùng //example.com/foo hoặc /foo
  • URL thay thế không cần phải nằm trên cùng một miền.
  • Nếu bạn có một số URL thay thế được nhắm mục tiêu đến người dùng sử dụng cùng một ngôn ngữ nhưng ở các khu vực khác nhau, thì bạn cũng nên cung cấp URL chung cho người dùng ngôn ngữ đó ở các khu vực không xác định. Ví dụ: bạn có thể có các URL cụ thể cho người nói tiếng Anh ở Ireland (en-ie), Canada (en-ca) và Úc (en-au) nhưng bạn cũng nên cung cấp trang tiếng Anh chung (en) cho người tìm kiếm ở các khu vực nói tiếng Anh khác, chẳng hạn như Hoa Kỳ, Vương quốc Anh. Trang này có thể là một trong những trang cụ thể nói trên nếu bạn muốn.
  • Nếu hai trang không trỏ đến nhau, các thẻ sẽ bị bỏ qua. Điều này là để ai đó trên một trang web khác không thể tự ý tạo thẻ tự tuyên bố là phiên bản thay thế của một trong các trang của bạn.
  • Nếu thấy khó duy trì tập hợp đầy đủ gồm các liên kết hai chiều cho mọi ngôn ngữ, bạn có thể bỏ qua một số ngôn ngữ trên một số trang; Google sẽ vẫn xử lý những trang trỏ đến nhau. Tuy nhiên, bạn cần liên kết hai chiều giữa các trang ngôn ngữ mới mở rộng và (các) ngôn ngữ ban đầu/chính. Ví dụ: nếu ban đầu, bạn tạo trang web bằng tiếng Pháp và URL của trang web nằm trên .fr, thì bạn cần ưu tiên liên kết hai chiều giữa trang .fr hiện có với trang tiếng Mexico (.mx) và trang tiếng Tây Ban Nha (.es) mới tạo, thay vì liên kết các trang biến thể tiếng Tây Ban Nha (.mx và .es) mới tạo với nhau.
  • Cân nhắc việc thêm trang dự phòng cho các ngôn ngữ chưa so khớp, đặc biệt là trên bộ chọn ngôn ngữ/quốc gia hoặc trang chủ tự động chuyển hướng. Sử dụng giá trị x-default:
    <link rel="alternate" href="http://example.com/" hreflang="x-default" />

Mã ngôn ngữ/mã khu vực được hỗ trợ

Giá trị của thuộc tính hreflang sẽ xác định ngôn ngữ (theo định dạng ISO 639-1) và có thể là xác định cả khu vực (theo định dạng ISO 3166-1 Alpha 2) của một URL thay thế. (Ngôn ngữ không cần phải liên quan đến khu vực.) Ví dụ:

  • de: Nội dung tiếng Đức, bất kể khu vực
  • en-GB: Nội dung tiếng Anh, cho người dùng ở Anh
  • de-ES: Nội dung tiếng Đức, cho người dùng ở Tây Ban Nha

Không chỉ định mã quốc gia bằng chính mã đó. Google không tự động lấy ngôn ngữ từ mã quốc gia. Bạn có thể chỉ định mã ngôn ngữ bằng chính mã đó nếu bạn muốn đơn giản hóa việc gắn nhãn. Thêm mã quốc gia sau ngôn ngữ để hạn chế trang ở một khu vực cụ thể. Ví dụ:

  • be: Tiếng Belarus, bất kể khu vực (không phải tiếng Pháp tại Bỉ)
  • nl-be: Tiếng Hà Lan cho người dùng tại Bỉ
  • fr-be: Tiếng Pháp cho người dùng tại Bỉ

Đối với các biến thể của tập lệnh ngôn ngữ, tập lệnh thích hợp được lấy từ quốc gia. Ví dụ: khi sử dụng zh-TW cho người dùng ở Dài Loan, tập lệnh ngôn ngữ được lấy tự động (trong ví dụ này là tiếng Trung phồn thể). Bạn cũng có thể chỉ định tập lệnh cụ thể bằng cách sử dụng ISO 15924 như sau:

  • zh-Hant: Tiếng Trung (phồn thể)
  • zh-Hans: Tiếng Trung (giản thể)

Hoặc bạn cũng có thể chỉ định kết hợp tập lệnh và khu vực — ví dụ: sử dụng zh-Hans-TW để chỉ định tiếng Trung (giản thể) cho người dùng Đài Loan.

Sử dụng thẻ x-default cho các ngôn ngữ chưa so khớp

Giá trị đặt trước hreflang="x-default" được sử dụng khi không có ngôn ngữ/khu vực khác khớp với tùy chọn cài đặt trên trình duyệt của người dùng. Giá trị này không bắt buộc nhưng bạn nên dùng để kiểm soát trang khi không có ngôn ngữ nào phù hợp. Một trường hợp nên dùng là để nhắm mục tiêu trang chủ trên trang web của bạn, trong đó có bản đồ có thể nhấp cho phép người dùng chọn quốc gia của họ.

Khắc phục sự cố

Lỗi thường gặp

Dưới đây là những sai lầm phổ biến nhất khi sử dụng hreflang:

  • Thiếu đường liên kết trả về: Nếu trang X liên kết đến trang Y, thì trang Y phải liên kết lại với trang X. Nếu bạn không liên kết hai chiều đối với tất cả các trang sử dụng chú thích hreflang, thì các chú thích đó có thể bị bỏ qua hoặc không được phân tích chính xác.
  • Mã ngôn ngữ không chính xác: Hãy đảm bảo rằng tất cả các mã ngôn ngữ bạn sử dụng đều chỉ định được ngôn ngữ (theo định dạng ISO 639-1) và có thể là chỉ định cả khu vực (theo định dạng ISO 3166-1 Alpha 2) của một URL thay thế. Nếu chỉ xác định khu vực thì là không hợp lệ.

Khắc phục các lỗi hreflang

Bạn có thể sử dụng báo cáo Nhắm mục tiêu quốc tế để khắc phục các vấn đề phổ biến nhất. Đảm bảo rằng Google có thời gian để thu thập dữ liệu các trang của bạn, sau đó truy cập thẻ Ngôn ngữ trên báo cáo để xem có lỗi nào không.

Ngoài ra còn có nhiều công cụ của bên thứ ba khác. Dưới đây là một vài công cụ phổ biến. (Các công cụ này không được Google bảo hành hay kiểm tra.)