Thông báo cho Google 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 nhiều ngôn ngữ hoặc khu vực, hãy thông báo cho Google về các phiên bản khác nhau này. Việc nà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.

Xin lưu ý rằng ngay cả khi bạn không làm gì, Google vẫn có thể tìm thấy các phiên bản ngôn ngữ thay thế của trang, nhưng tốt nhất bạn nên cho biết rõ các trang cho riêng từng ngôn ngữ hoặc khu vực.

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

  • Bạn giữ nguyên nội dung chính theo một ngôn ngữ duy nhấtchỉ 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 như vậ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 cùng là tiếng Anh mà nhắm đến các nước Mỹ, Anh và Ireland.
  • Nội dung trang web của bạn được dịch toàn bộ 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à 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 để thông báo cho Google về các phiên bản của một trang theo từng ngôn ngữ/khu vực:

Nguyên tắc cho mọi 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ư mọi 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 sử dụng:
    https://example.com/foo, không được sử dụng //example.com/foo hay /foo
  • URL thay thế không cần nằm trên cùng một miền.
  • Nếu bạn có một số URL thay thế nhắm đế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ư Anh, Mỹ. 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 các trang tiếng Mexico (.mx) và tiếng Tây Ban Nha (.es) mới tạo, thay vì liên kết hai chiều các trang biến thể tiếng Tây Ban Nha (.mx.es) mới tạo với nhau.
  • Hãy cân nhắc việc thêm một trang dự phòng cho các ngôn ngữ chưa 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. Hãy sử dụng giá trị x-default:
    <link rel="alternate" href="http://example.com/" hreflang="x-default" />

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, kể cả cho chính biến thể đó. Mọi phiên bản của trang đều phải có tập hợp các đường liên kết như nhau. Xem các nguyên tắc bổ sung.

Sau đây là cú pháp của từng phần tử link:

<link rel="alternate" hreflang="lang_code" href="url_of_page" />
Cú pháp
lang_code Một mã ngôn ngữ/mã khu vực được hỗ trợ mà phiên bản này của trang nhắm đến, hoặc x-default để khớp với ngôn ngữ bất kỳ 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.

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:

URL 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 Hoa Kỳ, hiển thị giá bằng USD.
http://de.example.com/page.html Trang chủ bằng tiếng Đức.
http://www.example.com/ Trang mặc định không nhắm mục tiêu ngôn ngữ nào và có các bộ chọn để người dùng chọn ngôn ngữ và khu vực của họ.

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

Đây là HTML cần dán vào phần <head> của mọi trang đã liệt kê ở trên. HTML này sẽ đưa người dùng ở Mỹ, 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 sẽ trả về kết quả phù hợp cho người dùng theo chế độ 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", ...
Cú pháp
<url_x> URL đủ điều kiện của trang thay thế, tương ứng với chuỗi ngôn ngữ gán cho thuộc tính hreflang được liên kết. URL phải nằm trong các mã đánh dấu <>. Ví dụ: <https://www.google.com>
lang_code_x Một mã ngôn ngữ/mã khu vực được hỗ trợ mà phiên bản này của trang nhắm đến, hoặc x-default để khớp với ngôn ngữ bất kỳ 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ư 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ể dùng sơ đồ trang web để cho Google biết tất 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 đối với sơ đồ trang web:

  • Xác đị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, kể cả chính phiên bản đó. 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 nhắm đến người nói tiếng Anh trên toàn thế giới, còn các phiên bản tương đương của trang này nhắm đế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ĩ. URL có trên trang web bao gồm:

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

Sau đây là sơ đồ trang web cho 3 trang nêu trên:

<?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>

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

Giá trị của thuộc tính hreflang xác định ngôn ngữ (theo định dạng ISO 639-1) và có thể xác định khu vực (theo định dạng ISO 3166-1 Alpha 2) của một URL thay thế. Nếu chỉ có một mã được chỉ định, Google sẽ giả định mã đó là mã ngôn ngữ. Ngôn ngữ không cần 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

Đố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 ở Đà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.

Dùng thẻ x-default cho các ngôn ngữ chưa 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 chế độ 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ó một bản đồ cho phép người dùng nhấp vào để chọn quốc gia của họ.

Bạn không cần chỉ định mã ngôn ngữ cho giá trị x-default; trang này nhắm mục tiêu những người dùng có chế độ cài đặt ngôn ngữ không khớp với trang web của bạn, do đó ngôn ngữ trên trang là không cần thiết.

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 mọi 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 mọi 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ể 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ì không hợp lệ.

Gỡ lỗi hreflang

Bạn có thể 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. Sau đây là một vài công cụ phổ biến. (Google không bảo trì hay kiểm tra những công cụ này.)