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ữ khác của trang, nhưng tốt nhất bạn nên chỉ rõ các trang dành cho ngôn ngữ hoặc khu vực cụ thể.

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

  • 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. Đây là cách làm thường thấy ở các trang có nội dung do người dùng tạo, chẳng hạn như các diễn đàn.
  • Nội dung của bạn có những sự 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ụ: Nội dung của bạn có thể đều bằng tiếng Anh nhưng sẽ khác nhau giữa 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ụ: Mỗi trang của bạn đều có cả hai phiên bản tiếng Việt và tiếng Anh.

Các phiên bản đã bản địa hoá 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ách chỉ rõ các phiên bản khác của trang

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:

Google coi 3 phương thức này là như nhau và bạn có thể chọn phương thức thuận tiện nhất cho trang web của mình. Tuy bạn có thể sử dụng cả 3 phương thức cùng một lúc, nhưng việc này không mang lại lợi ích gì trên Tìm kiếm (trên thực tế, việc quản lý quá trình triển khai cả 3 phương thức sẽ khó hơn nhiều so với chỉ chọn 1 phương thức).

Hãy dùng hreflang để cho Google biết về các biến thể của nội dung. Nhờ đó, chúng tôi có thể hiểu được rằng các trang này là các biến thể đã bản địa hoá của cùng một nội dung. Google không dùng hreflang hoặc thuộc tính lang trong HTML để phát hiện ngôn ngữ của trang; thay vào đó, chúng tôi dùng thuật toán để xác định ngôn ngữ.

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 chứ không được sử dụng //example.com/foo hay /foo
  • URL thay thế không cần phải nằm trong 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ụ: nếu bạn có các URL cụ thể cho người nói tiếng Anh ở Ireland (en-ie), Canada (en-ca) và Úc (en-au), hãy cung cấp trang tiếng Anh chung (en) cho người tìm kiếm ở Anh, Mỹ và tất cả các khu vực nói tiếng Anh khác. 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. Mục đích là để những người ở trang web khác không thể tự ý tạo thẻ tự tuyên bố trang đó 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 đủ các đường 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 ưu tiên liên kết hai chiều giữa các trang mới có thêm phiên bản ngôn ngữ và (các) ngôn ngữ ban đầu/chính. Ví dụ: nếu trang web gốc của bạn được tạo bằng tiếng Pháp và các 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 mới tạo dành cho Mexico (.mx) và Tây Ban Nha (.es), thay vì liên kết hai chiều các trang biến thể tiếng Tây Ban Nha mới tạo (.mx.es) 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="https://example.com/" hreflang="x-default" />

Thẻ HTML

Hãy thêm phần tử <link rel="alternate" hreflang="lang_code"... > vào tiêu đề trang để cho Google biết mọi 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.

Đối với mỗi biến thể của trang, hãy cung cấp một tập hợp 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 cả chính trang đó. Phiên bản nào của trang cũng 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 mọi ngôn ngữ 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.

Hãy đặt thẻ <link> gần phía trên cùng của phần tử <head>. Tối thiểu là, thẻ <link> phải nằm trong một mục <head> có định dạng hợp lệ hoặc trước mục bất kỳ 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 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ó sự khác biệt theo từng khu vực:

URL có các biến thể theo khu vực
https://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ỹ.
https://en-gb.example.com/page.html Trang chủ tại Vương quốc Anh, trình mức giá bằng bảng Anh.
https://en-us.example.com/page.html Trang chủ tại Hoa Kỳ, trình bày mức giá bằng USD.
https://de.example.com/page.html Trang chủ bằng tiếng Đức.
https://www.example.com/ Trang mặc định không nhắm đến ngôn ngữ hay địa phươ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à đoạn mã HTML nên nằm trong phần <head> của mọi trang có trong bảng URL có các biến thể theo khu vực. Đoạn mã 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 hoá 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="https://en-gb.example.com/page.html" />
  <link rel="alternate" hreflang="en-us"
       href="https://en-us.example.com/page.html" />
  <link rel="alternate" hreflang="en"
       href="https://en.example.com/page.html" />
  <link rel="alternate" hreflang="de"
       href="https://de.example.com/page.html" />
 <link rel="alternate" hreflang="x-default"
       href="https://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 ký tự biểu thị ngôn ngữ gán cho thuộc tính hreflang được liên kết. URL phải nằm trong các 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ư được trình bày 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 Thuỵ Sĩ và một phiên bản cho người nói tiếng Đức ở những khu vực khác:

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

Sơ đồ trang web

Bạn có thể dùng sơ đồ trang web XML để 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ó các mục cho từng URL của mỗi phiên bản và mỗi mục sẽ có 3 mục con giống hệt nhau.

Quy tắc đối với sơ đồ trang web:

  • Xác định không gian 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, cách làm tương tự như với mọi sơ đồ trang web khác.
  • 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. Các phần tử con không bị tính vào giới hạn URL đối với sơ đồ trang web.
  • Tải sơ đồ trang web lên chính thư mục (trong trang web của bạn) mà sơ đồ này tóm tắt. Xin lưu ý rằng sơ đồ trang web chỉ có thể chứa các URL con của thư mục lưu trữ sơ đồ đó.
  • Tài liệu về sơ đồ trang web của chúng tôi cũng áp dụng cho các phần mở rộng của sơ đồ trang web. Hãy nhớ tuân theo các nguyên tắc chung về sơ đồ trang web.
  • 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 ở Thuỵ Sĩ. URL có trên trang web bao gồm:

  • www.example.com/english/page.html nhắm đến người nói tiếng Anh.
  • www.example.de/deutsch/page.html nhắm đến người nói tiếng Đức.
  • www.example.de/schweiz-deutsch/page.html nhắm đến người nói tiếng Đức ở Thuỵ 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>https://www.example.com/english/page.html</loc>
    <xhtml:link
               rel="alternate"
               hreflang="de"
               href="https://www.example.de/deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="de-ch"
               href="https://www.example.de/schweiz-deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="en"
               href="https://www.example.com/english/page.html"/>
  </url>
  <url>
    <loc>https://www.example.de/deutsch/page.html</loc>
    <xhtml:link
               rel="alternate"
               hreflang="de"
               href="https://www.example.de/deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="de-ch"
               href="https://www.example.de/schweiz-deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="en"
               href="https://www.example.com/english/page.html"/>
  </url>
  <url>
    <loc>https://www.example.de/schweiz-deutsch/page.html</loc>
    <xhtml:link
               rel="alternate"
               hreflang="de"
               href="https://www.example.de/deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="de-ch"
               href="https://www.example.de/schweiz-deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="en"
               href="https://www.example.com/english/page.html"/>
  </url>
</urlset>

Các mã ngôn ngữ và mã vùng được hỗ trợ

Giá trị của thuộc tính hreflang bao gồm một hoặc hai giá trị không bắt buộc, phân tách nhau bằng dấu gạch ngang. Ví dụ: en-US. Mã đầu tiên của thuộc tính hreflang là mã ngôn ngữ (theo định dạng ISO 639-1), theo sau là mã thứ hai không bắt buộc đại diện cho mã khu vực (theo định dạng ISO 3166-1 Alpha 2) của một URL thay thế.

Để nhắm đến nhiều ngôn ngữ ở Bỉ, bạn có thể dùng mã ngôn ngữ và mã khu vực như sau:

  • Tốt (Tiếng Đức cho người dùng ở Bỉ): de-be
  • Tốt (Tiếng Hà Lan cho người dùng ở Bỉ): nl-be
  • Tốt (tiếng Pháp cho người dùng ở Bỉ): fr-be
  • Kém vì mã đầu tiên là dành cho ngôn ngữ (be là mã ngôn ngữ của tiếng Belarus): be

Để đơn giản hoá việc gắn nhãn, bạn có thể chỉ định mã ngôn ngữ. 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 ở Vương quốc 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ể)

Như với các mã ngôn ngữ khác, bạn cũng có thể chỉ định một khu vực không bắt buộc. Ví dụ: Bạn có thể dùng zh-Hans-US để chỉ định tiếng Trung (giản thể) cho người dùng ở Hoa Kỳ.

Dùng giá trị x-default cho các ngôn ngữ chưa khớp

Giá trị x-default đặt trước đượ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. Bạn nên sử dụng giá trị này để chỉ định trang dự phòng cho những người dùng có chế độ cài đặt ngôn ngữ không khớp với bất kỳ phiên bản đã bản địa hoá nào của trang web. Tuy bạn có thể dùng giá trị x-default cho bất kỳ trang nào, nhưng giá trị này được thiết kế cho các trang bộ chọn ngôn ngữ nên sẽ hoạt động hiệu quả nhất với những trang đó.

Bạn không cần chỉ định mã ngôn ngữ cho giá trị x-default; trang này nhắm đến 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.

Để triển khai chú thích hreflang="x-default", hãy thêm một thẻ link khác vào các chú thích hreflang hiện có rồi đặt thuộc tính href thành URL mà bạn muốn người dùng truy cập vào nếu trang web của bạn không hỗ trợ ngôn ngữ của họ. Ví dụ: cách triển khai HTML có thể có dạng như sau:

<link rel="alternate" href="https://example.com/en-gb" hreflang="en-gb" />
<link rel="alternate" href="https://example.com/en-us" hreflang="en-us" />
<link rel="alternate" href="https://example.com/en-au" hreflang="en-au" />
<link rel="alternate" href="https://example.com/country-selector" hreflang="x-default" />

Khắc phục sự cố

Lỗi thường gặp

Dưới đây là những lỗi 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 hiểu đúng. Ví dụ: hãy xem xét đường liên kết này trên https://de.example.com/index.html:
    <link rel="alternate" hreflang="en-gb" href="https://en-gb.example.com/index.html" />
    Bạn cũng phải có đường liên kết hreflang trên https://en-gb.example.com/index.html trỏ đến phiên bản nội dung de:
    <link rel="alternate" hreflang="de" href="https://de.example.com/index.html" />
  • Mã ngôn ngữ không chính xác: Hãy đảm bảo rằng tất 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ì không hợp lệ.

Gỡ lỗi hreflang

Bạn có thể sử dụng nhiều công cụ của bên thứ ba để gỡ lỗi cho mã chú thích hreflang. Sau đây là một vài công cụ phổ biến. Google không duy trì hay kiểm tra những công cụ này.