WPML

Trước khi bạn bắt đầu

Cài đặt và kích hoạt các plugin này:

  • Advanced Custom Fields hoặc ACF Pro.
  • WPML và WPML Dịch Chuỗi.
  • ACFML (tiện ích bổ sung mà trang này đề cập đến).

Các Nhóm trường của bạn phải được cấu hình sẵn trong ACF. Bạn có thể thay đổi tùy chọn dịch cho từng trường sau đó, vì vậy thứ tự thực hiện không quan trọng. Hãy thiết lập các Nhóm trường, sau đó quay lại ACFML.

Chọn một tùy chọn dịch cho mỗi Nhóm trường

Không phải tất cả các Nhóm trường ACF đều hoạt động giống nhau khi dịch. ACFML cung cấp ba tùy chọn dịch cho mỗi Nhóm trường. Để chọn một tùy chọn:

  1. Truy cập ACFNhóm trường và chỉnh sửa Nhóm trường.
  2. Trong phần Thiết lập đa ngôn ngữ, bên dưới mục Chọn tùy chọn dịch cho nhóm trường này, hãy nhấp vào Chọn ở tùy chọn bạn muốn.
  3. Lưu Nhóm trường.

ACFML đánh dấu tùy chọn mà nó đề xuất cho trang web của bạn là được đề xuất cho trang web này. Để chọn một tùy chọn khác sau này, hãy nhấp vào Thay đổi tùy chọn. Các phiên bản ACFML cũ hơn gọi hai tùy chọn đầu tiên là Các trường giống nhau trên các ngôn ngữ và Các trường khác nhau trên các ngôn ngữ.

Nội dung giống nhau ở mọi ngôn ngữ, được dịch

Cài đặt điển hình cho hầu hết các trang web dùng ACF. Khách truy cập ở mọi ngôn ngữ sẽ thấy các trang giống nhau, bằng ngôn ngữ của riêng họ. Văn bản được dịch, còn bố cục và cài đặt giữ nguyên. Trang Đội ngũ của chúng tôi là một ví dụ phổ biến. Đội ngũ của bạn giống nhau ở mọi ngôn ngữ, vì vậy tên và tiểu sử của mỗi thành viên trong nhóm được dịch và cấu trúc trường giữ nguyên. Bạn nhập thông tin đội ngũ bằng ngôn ngữ mặc định, sau đó gửi bài viết để dịch từ WPMLBản dịchBảng điều khiển. Các giá trị đã dịch sẽ được đưa trở lại vào cùng các trường đó. Tùy chọn này hoạt động với tính năng dịch tự động và Dịch mọi thứ.

Mỗi ngôn ngữ có nội dung riêng

Sử dụng tùy chọn này khi mỗi ngôn ngữ hiển thị nội dung khác nhau trong cùng một Nhóm trường. Ví dụ phổ biến là một công ty tổ chức các sự kiện tại địa phương. Trang Sự kiện tiếng Anh hiển thị các sự kiện cho khán giả tiếng Anh và trang tiếng Pháp hiển thị các sự kiện cho khán giả tiếng Pháp. Các trường bắt đầu dưới dạng bản sao của bản gốc. Sau đó, mỗi ngôn ngữ giữ các giá trị của riêng nó. Bạn chỉnh sửa từng ngôn ngữ trong trình soạn thảo WordPress: mở bài viết, nhấp vào biểu tượng dấu cộng cho ngôn ngữ đích trong hộp Ngôn ngữ, điền các giá trị cho ngôn ngữ đó và xuất bản. WPML không đồng bộ hóa các phiên bản ngôn ngữ sau đó và tính năng dịch tự động không được áp dụng.

Chuyên gia

Sử dụng tùy chọn này khi bạn cần kết hợp: một số trường được dịch, một số giữ nguyên và một số sao chép một lần rồi thay đổi ở từng ngôn ngữ. Chọn Chuyên gia và thiết lập tùy chọn dịch của từng trường theo cách thủ công. Trong ví dụ về Sự kiện, tiêu đề và miêu tả sử dụng Dịch, còn giá cả, ngày tháng và địa chỉ sử dụng Sao chép. ACFML không đề xuất tùy chọn này cho các Nhóm trường mới. Một Nhóm trường được định nghĩa bằng PHP hoặc Local JSON có thể không có tùy chọn dịch. Khi đó, nó chỉ sử dụng Chuyên gia khi Nhóm trường đã tồn tại trước khi trang web của bạn cập nhật lên WPML 5.2.

Tùy chọn dịch cho từng loại trường ACF

Mỗi trường lưu trữ một giá trị có một trong bốn tùy chọn dịch:

  • Dịch. Khách truy cập nhìn thấy giá trị bằng ngôn ngữ của riêng họ. WPML điền vào đó bản dịch. Bạn chỉnh sửa nó trong trình biên tập dịch thuật.
  • Sao chép. Khách truy cập ở mọi ngôn ngữ nhìn thấy chính xác những gì bản gốc hiển thị. Trường này bị khóa ở các ngôn ngữ khác.
  • Sao chép một lần. Giá trị bắt đầu dưới dạng bản sao của bản gốc. Sau đó, bạn chỉnh sửa nó ở từng ngôn ngữ theo cách thủ công. Nếu bạn để trống trường trong một bản dịch, nó sẽ giữ nguyên trạng thái trống. WPML không sao chép lại giá trị gốc vào đó nữa.
  • Không dịch. Các bản dịch bắt đầu mà không có giá trị này. Bạn có thể điền nó ở từng ngôn ngữ theo cách thủ công.

Khi bạn chọn Nội dung giống nhau ở mọi ngôn ngữ, được dịch hoặc Mỗi ngôn ngữ có nội dung riêng, ACFML cung cấp cho mỗi trường tùy chọn được đề xuất cho loại trường đó. Các bảng dưới đây hiển thị các tùy chọn được đề xuất này. Để thiết lập một tùy chọn khác cho một trường, hãy sử dụng Chuyên gia. Để thay đổi tùy chọn được đề xuất của một loại trường trên toàn bộ trang web, hãy sử dụng bộ lọc acfml_field_group_mode_field_translation_preference (xem phần Các hook dành cho nhà phát triển đối với các trường hợp ngoại lệ bên dưới).

Các trường Tab, Accordion, Message và Separator không lưu trữ giá trị, vì vậy chúng không có tùy chọn dịch. Một loại trường không có trong các bảng, ví dụ như loại trường từ một plugin khác, sẽ nhận tùy chọn Sao chép với cả hai tùy chọn dịch.

Các trường Repeater, Flexible Content, Group và Clone

Các trường này chứa các trường khác. Tùy chọn được đề xuất của trường chứa là Sao chép hoặc Sao chép một lần. ACFML không cung cấp tùy chọn Dịch cho chính trường chứa. Mỗi trường con có tùy chọn dịch riêng.

Với Nội dung giống nhau ở mọi ngôn ngữ, được dịch, các hàng của trường Repeater và Flexible Content giữ nguyên thứ tự như trong ngôn ngữ mặc định. Với Chuyên gia, hoặc khi một bài viết sử dụng các Nhóm trường có các tùy chọn khác nhau, trình soạn thảo bài viết sẽ hiển thị hộp ACFML Synchronise translations. Hộp này hiển thị trên bài viết gốc khi bài viết có các bản dịch và một trường Repeater hoặc Flexible Content. Chọn Keep repeater and flexible sub-fields in the same order as the default language để giữ các hàng được căn chỉnh trên tất cả các ngôn ngữ.

Các trường cơ bản

LoạiNội dung giống nhau ở mọi ngôn ngữ, được dịchMỗi ngôn ngữ có nội dung riêng
TextDịchDịch
Text AreaDịchDịch
NumberSao chépSao chép một lần
RangeSao chépSao chép một lần
EmailSao chépSao chép một lần
URLDịchDịch
PasswordSao chépSao chép một lần

Các trường nội dung

LoạiCùng nội dung ở mọi ngôn ngữ, đã dịchMỗi ngôn ngữ có nội dung riêng
Hình ảnhSao chépSao chép một lần
TệpSao chépSao chép một lần
Trình soạn thảo WYSIWYGDịchDịch
oEmbedSao chépSao chép một lần
Thư việnSao chépSao chép một lần

Các trường lựa chọn

LoạiCùng nội dung ở mọi ngôn ngữ, đã dịchMỗi ngôn ngữ có nội dung riêng
ChọnSao chépSao chép một lần
Hộp kiểmSao chépSao chép một lần
Nút radioSao chépSao chép một lần
Nhóm nútSao chépSao chép một lần
Đúng / SaiSao chépSao chép một lần

Các trường jQuery

LoạiCùng nội dung ở mọi ngôn ngữ, đã dịchMỗi ngôn ngữ có nội dung riêng
Google MapSao chépSao chép một lần
Bộ chọn ngàySao chépSao chép một lần
Bộ chọn ngày giờSao chépSao chép một lần
Bộ chọn giờSao chépSao chép một lần
Bộ chọn màuSao chépSao chép một lần
Bộ chọn biểu tượngSao chépSao chép một lần

Các trường bố cục

LoạiCùng nội dung ở mọi ngôn ngữ, đã dịchMỗi ngôn ngữ có nội dung riêng
NhómSao chépSao chép một lần
Bộ lặpSao chépSao chép một lần
Nội dung linh hoạtSao chépSao chép một lần
CloneSao chépSao chép một lần

Các trường quan hệ

LoạiCùng nội dung ở mọi ngôn ngữ, đã dịchMỗi ngôn ngữ có nội dung riêng
Liên kếtDịchDịch
Đối tượng bài viếtSao chépSao chép một lần
Liên kết trangSao chépSao chép một lần
Mối quan hệSao chépSao chép một lần
Phân loạiSao chépSao chép một lần
Người dùngSao chépSao chép một lần

Đối với trường Liên kết, bản dịch bao gồm văn bản liên kết và URL. Khi URL trỏ đến một trang trên trang web của bạn và bạn không thay đổi nó, WPML sẽ hiển thị trang đó bằng ngôn ngữ của khách truy cập.

Bắt đầu từ ACFML 5.0, các trường URL và Liên kết sử dụng tùy chọn Dịch theo mặc định.

LoạiCùng nội dung ở mọi ngôn ngữ, đã dịchMỗi ngôn ngữ có nội dung riêng
URLDịchDịch
Liên kếtDịchDịch

Các mối quan hệ hai chiều

Kể từ ACF 6.2, các trường Mối quan hệ, Đối tượng bài viết, Phân loại và Người dùng có thể là hai chiều. Khi bạn chọn một mục tiêu trong trường, ACF sẽ thêm bài viết của bạn vào trường được ghép nối của mục tiêu đó. Ví dụ: cuốn sách Dune đặt trường Author của nó thành Frank Herbert. ACF sau đó sẽ thêm Dune vào trường Books của Frank Herbert.

ACFML giữ nguyên cặp này trong mỗi ngôn ngữ:

  • Khi WPML sao chép trường sang một bản dịch, ACFML sẽ trỏ trường đó tới đích trong cùng ngôn ngữ. Sau đó, ACFML thêm bản dịch vào trường được ghép cặp của đích đó. Bản tiếng Tây Ban Nha của Dune hiển thị bản tiếng Tây Ban Nha của Frank Herbert, và bản tiếng Tây Ban Nha của Frank Herbert liệt kê bản tiếng Tây Ban Nha của Dune.
  • Khi trường sử dụng tùy chọn Sao chép và bạn thay đổi đích trong bài viết gốc, WPML sẽ cập nhật bản dịch. ACFML thêm bản dịch vào đích mới trong ngôn ngữ đó và xóa bản dịch khỏi đích cũ.
  • ACFML chỉ thay đổi các đích trong ngôn ngữ của bản dịch. Các bài viết trong ngôn ngữ gốc giữ nguyên cặp của chúng.
  • Khi đích chưa có bản dịch, bản dịch sẽ trỏ đến đích gốc và ACFML không thay đổi đích gốc. Khi bạn dịch đích đó sau này, ACFML sẽ trỏ trường tới bản dịch mới và thêm bài viết vào trường được ghép cặp của nó. Trường này liệt kê đích một lần.
  • Người dùng không có bản dịch, vì vậy ACFML không thêm bản dịch vào trường được ghép cặp của người dùng. Trường đó giữ nguyên bài viết gốc. Trong một ngôn ngữ khác, ACFML hiển thị bản dịch của bài viết đó, trừ khi trường sử dụng tùy chọn Sao chép.

Điều này hoạt động với các tùy chọn Sao chép và Sao chép một lần, vốn là các tùy chọn được đề xuất cho những loại trường này. Nó cũng hoạt động khi bạn nhân bản một bài viết bằng WPML.

Dịch các khối ACF

Theo mặc định, các khối ACF lưu giá trị trường của chúng bên trong khối, trong nội dung bài viết, chứ không phải dưới dạng các trường tùy chỉnh. ACFML gửi các giá trị này để dịch cùng với phần còn lại của bài viết, trong cùng một công việc dịch thuật.

  • Khối này sử dụng tùy chọn dịch và các tùy chọn trường của Nhóm trường có quy tắc vị trí là khối này.
  • ACFML chỉ gửi các trường sử dụng tùy chọn Dịch. Các trường sử dụng tùy chọn Sao chép, Sao chép một lần hoặc Không dịch sẽ giữ nguyên giá trị từ khối gốc.
  • Các trường Repeater và Flexible Content bên trong một khối cũng được dịch, kể cả khi chúng được lồng vào nhau. Mỗi trường phụ sử dụng tùy chọn dịch riêng của nó.
  • Một khối có "usePostMeta": true trong phần acf của block.json sẽ lưu các giá trị của nó dưới dạng các trường tùy chỉnh của bài viết, chứ không phải trong khối. Các giá trị này được dịch giống như bất kỳ trường tùy chỉnh nào khác của bài viết, với tùy chọn dịch và các tùy chọn trường của Nhóm trường.
  • Khi bạn thay đổi một tùy chọn dịch trong Nhóm trường mà bạn sử dụng trên các khối, WPML sẽ hỏi xem bạn có muốn cập nhật các bản dịch hiện có không. Nếu bạn xác nhận, WPML sẽ đánh dấu các bản dịch của những bài viết này là cần cập nhật. Hãy gửi chúng đi dịch lại để áp dụng thay đổi. Việc thay đổi sang Không dịch sẽ không đánh dấu chúng.

Các trường được khai báo trong block.json

Kể từ ACF 6.8.1, một khối có thể khai báo các trường của nó trong tệp block.json, ở mục acf.fields. ACF tạo một Nhóm trường cho các trường này và bạn không thể chỉnh sửa Nhóm trường này trong trang quản trị. ACFML cung cấp cho nó tùy chọn Cùng nội dung ở mọi ngôn ngữ, được dịch và tùy chọn dịch được đề xuất cho từng loại trường, giống như một Nhóm trường được đăng ký bằng PHP.

Để sử dụng tùy chọn khác cho toàn bộ nhóm, hãy thêm acfml_field_group_mode vào phần acf của block.json, hoặc vào acf_register_block_type(). Các giá trị được chấp nhận là translation (Cùng nội dung ở mọi ngôn ngữ, được dịch), localization (Mỗi ngôn ngữ có nội dung riêng) và advanced (Chuyên gia). ACFML sẽ bỏ qua mọi giá trị khác.

{
    "name": "acme/event-card",
    "title": "Event Card",
    "acf": {
        "mode": "preview",
        "acfml_field_group_mode": "localization",
        "fields": [ ... ]
    }
}

Để thiết lập tùy chọn dịch của một trường, hãy thêm wpml_cf_preferences vào trường đó. ACFML giữ nguyên tùy chọn dịch này với mọi tùy chọn của nhóm. Với tùy chọn Chuyên gia, chỉ những trường khai báo wpml_cf_preferences mới nhận được tùy chọn dịch.

Khi block.json không chỉ định một tùy chọn, ACFML sẽ lưu trữ tùy chọn mà nó cung cấp cho nhóm trong lần đầu tiên nhìn thấy nhóm và giữ nguyên tùy chọn đó sau này. Trên các trang web đã sử dụng các khối này với phiên bản ACFML cũ hơn, tùy chọn được lưu trữ là Chuyên gia.

Cài đặt tùy chọn cho các trường được đăng ký bằng PHP hoặc JSON

Các Nhóm trường ACF được đăng ký bằng PHP (với acf_add_local_field_group()) hoặc thông qua tính năng Local JSON của ACF không nhận các tùy chọn dịch từ các màn hình trang quản trị, vì trang quản trị không quản lý chúng. Hãy thiết lập các tùy chọn ở cùng nơi mà bạn đăng ký các trường.

Để thiết lập tùy chọn dịch của Nhóm trường, hãy thêm khóa acfml_field_group_mode vào định nghĩa, với translation, localization hoặc advanced (Expert). Khi định nghĩa không thiết lập tùy chọn dịch nào, ACFML sẽ cấp cho Nhóm trường tùy chọn Nội dung giống nhau trong mọi ngôn ngữ, được dịch ở lần đầu tiên nó thấy nhóm này. ACFML lưu trữ tùy chọn này và giữ nguyên sau đó. Các Nhóm trường đã tồn tại trước khi trang web của bạn cập nhật lên WPML 5.2 sẽ giữ tùy chọn Expert.

Đối với mỗi trường trong định nghĩa nhóm trường, hãy thêm khóa wpml_cf_preferences. Giá trị là một số nguyên ánh xạ tới bốn tùy chọn dịch: 0 cho Không dịch (WPML bỏ qua trường này), 1 cho Sao chép (giá trị được đồng bộ hóa trên các ngôn ngữ), 2 cho Dịch (giá trị được đưa vào dịch thuật), và 3 cho Sao chép một lần (giá trị được sao chép sang các bản dịch mới, sau đó mỗi ngôn ngữ có thể được chỉnh sửa độc lập).

Một ví dụ tối thiểu:

acf_add_local_field_group( [
    'key'    => 'group_1',
    'title'  => 'My Group',
    'fields' => [
        [
            'key'                 => 'field_1',
            'label'               => 'Sub Title',
            'name'                => 'sub_title',
            'type'                => 'text',
            'wpml_cf_preferences' => 2, // Translate.
        ],
    ],
    // ...rest of the field-group config
] );

Sau khi bạn định nghĩa các trường trong mã, hãy đồng bộ hóa các tùy chọn vào WPML để trang quản trị nhận diện chúng:

  1. Truy cập ACFCông cụ.
  2. Cuộn đến Translate ACF Local JSON and PHP-Registered Fields (Dịch các trường ACF Local JSON và được đăng ký bằng PHP).
  3. Trong phần Sync Translation Preferences for Local Fields (Đồng bộ tùy chọn dịch cho các trường cục bộ), chọn Sync once now (Đồng bộ một lần ngay bây giờ) và nhấp vào Áp dụng.

WPML đọc các tùy chọn từ các định nghĩa trường của bạn và lưu trữ chúng. Sync once now chạy một lần. Nếu bạn thường xuyên thay đổi các định nghĩa, hãy chọn Sync on every request (may affect performance) (Đồng bộ trên mỗi yêu cầu). Tùy chọn này chạy đồng bộ trên mỗi yêu cầu của trang quản trị.

Nếu bạn sử dụng tính năng Local JSON của ACF để chia sẻ các nhóm trường giữa các trang web, ACFML sẽ tự động ghi các tùy chọn dịch vào các tệp JSON. Xuất một tệp JSON từ một trang web, nhập nó vào một trang web khác, và trang web đích sẽ nhận các tùy chọn sau khi ACFML được kích hoạt ở cả hai đầu.

Các Nhóm trường mà ACF tạo bằng lệnh WP-CLI wp acf json import, hoặc thông qua Abilities API của nó dành cho các công cụ AI, được lưu trữ trong cơ sở dữ liệu. ACFML cung cấp cho chúng tùy chọn Nội dung giống nhau trong mọi ngôn ngữ, được dịch và tùy chọn được khuyến nghị cho từng loại trường. Khi JSON được nhập đã có khóa acfml_field_group_mode, ACFML sẽ sử dụng tùy chọn đó thay thế.

Các Nhóm trường trong tệp Local JSON

ACF tải các Nhóm trường của thư mục acf-json từ rất sớm trong mỗi yêu cầu. Bắt đầu từ WPML 5.2, ACFML đọc các Nhóm trường này cùng lúc. Vì vậy, khi bạn đồng bộ các tùy chọn dịch, quá trình đồng bộ cũng bao gồm cả các Nhóm trường JSON. Sau đó, WPML sử dụng các tùy chọn trong các tệp JSON.

Trong tệp JSON, hãy thêm wpml_cf_preferences vào mỗi trường, với các giá trị giống như trong PHP. Khóa này thiết lập tùy chọn của từng trường, bất kể tùy chọn dịch của Nhóm trường là gì. Ví dụ sử dụng Expert:

{
    "key": "group_event",
    "title": "Event",
    "acfml_field_group_mode": "advanced",
    "fields": [
        {
            "key": "field_event_title",
            "label": "Event Title",
            "name": "event_title",
            "type": "text",
            "wpml_cf_preferences": 2
        },
        {
            "key": "field_event_price",
            "label": "Price",
            "name": "event_price",
            "type": "number",
            "wpml_cf_preferences": 1
        }
    ]
}

Để gửi các tùy chọn và nhãn của các Nhóm trường JSON đến WPML:

  1. Truy cập ACFCông cụ.
  2. Cuộn đến Translate ACF Local JSON and PHP-Registered Fields.
  3. Trong phần Sync Translation Preferences for Local Fields, chọn Sync once now hoặc Sync on every request (may affect performance).
  4. Trong phần Register Labels for Translation (Đăng ký nhãn để dịch), chọn Register labels now (Đăng ký nhãn ngay bây giờ).
  5. Nhấp vào Áp dụng.

Để kiểm tra kết quả, hãy truy cập WPMLCài đặt và tìm các trường trong phần Dịch trường tùy chỉnh. Mỗi trường sẽ hiển thị tùy chọn từ tệp JSON. ACFML cũng đăng ký các nhãn của các Nhóm trường, loại bài viết, phân loại và Trang tùy chọn (Options Pages) chỉ tồn tại trong mã: trong thư mục acf-json hoặc được đăng ký bằng PHP. Dịch chúng giống như nhãn của bất kỳ Nhóm trường nào khác (xem phần Dịch nhãn trường ACF bên dưới).

Dịch nhãn trường ACF

Nhãn trường ACF là các tên xác định từng trường tùy chỉnh trong trình soạn thảo WordPress và trên giao diện người dùng (ví dụ: Số điện thoại, Địa chỉ). Chúng được dịch tách biệt với các giá trị trường và nằm trong WPML Dịch Chuỗi, chứ không phải trong công việc dịch thuật của bài viết.

Để gửi nhãn trường đi dịch:

  1. Mở WPMLBản dịchBảng điều khiển.
  2. Mở rộng phần ACF Field Group.
  3. Chọn mục Field Group Labels cho Nhóm trường mà bạn muốn dịch.
  4. Chọn một phương pháp dịch (PTC, người dịch của bạn, hoặc Tự dịch) và gửi.

Các nhãn đã dịch sẽ tự động xuất hiện trên giao diện người dùng sau khi bản dịch hoàn thành.

Ngừng dịch nhãn trường

Theo mặc định, công việc dịch thuật của một bài viết không bao gồm các nhãn trường. Bạn chỉ dịch chúng khi gửi mục Nhãn nhóm trường từ Bảng điều khiển. Nếu bạn không gửi mục này, ACF sẽ hiển thị các nhãn gốc. Để hiển thị các nhãn gốc ngay cả khi đã có bản dịch, hãy sử dụng bộ lọc acfml_should_translate_acf_entity và trả về false cho các trường hoặc Nhóm trường mà bạn muốn bỏ qua. Tài liệu tham khảo về hook và hằng số ACFML có một ví dụ.

Dịch các lựa chọn trường ACF

Các trường lựa chọn (Select, Checkbox, Radio Button, Button Group) mang các nhãn tùy chọn riêng của chúng (ví dụ: Small / Medium / Large). Chúng cũng nằm cùng với các nhãn trường thay vì bên trong bản dịch bài viết. Hãy gửi chúng theo cùng một cách:

  1. Mở WPMLBản dịchBảng điều khiển.
  2. Mở rộng phần Nhóm trường ACF.
  3. Chọn Nhóm trường mà bạn muốn dịch các giá trị lựa chọn.
  4. Chọn một phương pháp dịch và gửi.

Dịch các trang tùy chọn ACF

Các trang tùy chọn ACF (các màn hình cài đặt toàn cục như Contact details, Header settings, Footer links) được dịch dưới dạng loại đối tượng riêng biệt, tách biệt với các bài viết:

  1. Mở WPMLBản dịchBảng điều khiển.
  2. Mở rộng phần Tùy chọn ACF.
  3. Chọn Trang tùy chọn mà bạn muốn dịch.
  4. Chọn một phương pháp dịch và gửi.

Các giá trị Trang tùy chọn của mỗi ngôn ngữ sẽ tự động xuất hiện khi ACF đọc tùy chọn trong ngữ cảnh của ngôn ngữ đó.

Tùy chọn dịch của Nhóm trường trên Trang tùy chọn sẽ quyết định điều gì xảy ra với mỗi trường:

  • Các trường sử dụng tùy chọn Dịch sẽ đi vào mục Tùy chọn ACF mà bạn gửi từ Bảng điều khiển dịch thuật. Khi bản dịch hoàn thành, ACFML sẽ ghi các giá trị vào Trang tùy chọn của ngôn ngữ đó. Các trường Repeater và Flexible Content sẽ có các hàng giống như bản gốc.
  • Các trường sử dụng tùy chọn Sao chép sẽ nhận giá trị của bản gốc trong mọi ngôn ngữ. Khi bạn lưu bản gốc, ACFML sẽ cập nhật các ngôn ngữ khác.
  • Các trường sử dụng tùy chọn Sao chép một lần sẽ bắt đầu dưới dạng bản sao của bản gốc. Sau đó, bạn có thể chỉnh sửa chúng trên Trang tùy chọn của mỗi ngôn ngữ.

Sử dụng Each language has its own content khi các tùy chọn khác nhau tùy theo ngôn ngữ. Ví dụ: một Trang tùy chọn liệt kê ba đại lý bán hàng bằng tiếng Anh và hai đại lý bằng tiếng Tây Ban Nha. Để chọn tùy chọn này, hãy chỉnh sửa Nhóm trường, giống như đối với bất kỳ Nhóm trường nào khác.

Để thay đổi một bản dịch đã hoàn thành, hãy truy cập WPMLBản dịchCông việc dịch thuật và nhấp vào Chỉnh sửa trên công việc Tùy chọn ACF. Bạn cũng có thể chỉnh sửa các giá trị đã dịch trong WPMLDịch chuỗi. Khi bạn lưu một bản dịch ở đó, ACFML sẽ ghi nó vào Trang tùy chọn của ngôn ngữ đó.

Khi bạn thay đổi ngôn ngữ mặc định của trang web, các giá trị Trang tùy chọn hiện tại vẫn giữ nguyên ở ngôn ngữ mà bạn đã viết chúng. ACF sẽ đọc các giá trị giống như trước khi thay đổi.

Trong mã, get_field( 'my_field', 'option' ) trả về giá trị của ngôn ngữ hiện tại. Sau do_action( 'wpml_switch_language', 'fr' ), nó trả về giá trị tiếng Pháp. Điều này cũng hoạt động đối với các Trang tùy chọn có post_id tùy chỉnh.

Các lỗi thường gặp

  • Nhãn trường trông như chưa được dịch. Chúng nằm trong phần Dịch chuỗi, không phải trong bản dịch bài viết. Hãy gửi mục Nhãn nhóm trường của Nhóm trường từ Bảng điều khiển (xem phần Dịch nhãn trường ACF ở trên).
  • Các giá trị lựa chọn trông như chưa được dịch. Tương tự như trên. Hãy gửi Nhóm trường từ phần Nhóm trường ACF của Bảng điều khiển để các giá trị tùy chọn được bao gồm.
  • Các hàng Repeater không đồng bộ. Nhóm trường có thể đang sử dụng chế độ Expert. Hãy chỉnh sửa bài viết gốc, chọn Keep repeater and flexible sub-fields in the same order as the default language trong hộp ACFML Synchronise translations và cập nhật bài viết. Hoặc chuyển Nhóm trường sang Same content in every language, translated.
  • Logic có điều kiện hoạt động không như mong đợi. Khi trường điều khiển được đặt thành Sao chép hoặc Không dịch, hành vi có điều kiện sẽ tuân theo giá trị của ngôn ngữ nguồn trên tất cả các bản dịch. Đặt trường điều khiển thành Dịch nếu giá trị của nó cần khác nhau tùy theo ngôn ngữ.
  • Các trường cục bộ (được đăng ký bằng PHP) bỏ qua các tùy chọn dịch được cài đặt trong trang quản trị. Hãy đặt khóa wpml_cf_preferences trong chính định nghĩa nhóm trường và đồng bộ hóa từ ACFCông cụ. Quy trình này nằm trong phần Cài đặt tùy chọn cho các trường được đăng ký bằng PHP hoặc JSON ở trên.

Các hook dành cho nhà phát triển cho các trường hợp ngoại lệ

Để kiểm soát bằng lập trình (loại trừ các trường cụ thể khỏi quá trình dịch, ghi đè tùy chọn mặc định cho một loại trường trên toàn trang web, ẩn các chú thích khỏi người dịch hoặc loại trừ các chuỗi nhóm trường khỏi các công việc dịch thuật bài viết), ACFML có hai bộ lọc và bốn hằng số. Tài liệu tham khảo đầy đủ với các ví dụ về mã nằm tại phần Tài liệu tham khảo về hook và hằng số ACFML.

Được viết bởiAmir

Được viết bởiAmir