Dịch các chuỗi tùy chỉnh thành các mẫu loại trực tiếp chủ đề


8

Tôi biết rằng vấn đề này đã được xử lý nhiều lần trong diễn đàn này

Javascript nội địa hóa Magento2

Magento 2 - vấn đề dịch trong các mẫu JS

Magento2 dịch văn bản mẫu Javascript (KO)

Tôi đã cài đặt gói ngôn ngữ tiếng Ý trong dự án Magento 2.1.9 của tôi và hầu hết các chuỗi được dịch chính xác.

Tôi đã thêm một từ điển dịch mới trong chủ đề của tôi.

vendor/<Vendor>/<Theme>/i18n/it_IT.csv

Ở đây tôi đã sửa đổi một số bản dịch và thêm các chuỗi mới của chủ đề của tôi để dịch. Đối với các chuỗi có trong tập tin phtml, mọi thứ đều hoạt động tốt.

Tôi đã thêm một số chuỗi tùy chỉnh trong các mẫu thanh toán knokout. Ví dụ trong

<My-theme>/Magento_Checkout/web/template/authentication.html 

Tôi đã thêm

<span data-bind="i18n: 'Do you already have an account?'"></span>

Sau đó, trong chủ đề của tôi, it_IT.csv:

"Do you already have an account?","Hai già un account?"

Tất nhiên tôi đã xóa bộ nhớ cache, pub / static / , var / view_prepered / , var / Generation, v.v. và tôi đã chạy tất cả các lệnh.

Các chuỗi vẫn bằng tiếng Anh.

Tôi thực sự phải tạo một gói ngôn ngữ mới để dịch một vài chuỗi trong thanh toán? Lý do là gì?

Bản dịch EDIT trực tuyến làm việc cho tất cả các chuỗi. Nó có thể là một cách để khắc phục tạm thời nhưng không phải là giải pháp dứt khoát.


1
tôi cũng sẽ thêm rằng các bản dịch khác hoạt động bằng phương pháp này
springerin

Câu trả lời:


2

Bạn cần mở rộng gói ngôn ngữ, tạo tệp dịch trong chủ đề là không đủ.

Mô-đun mở rộng này cần chứa:

composer.json

{
  "name": "snowdog/project-language-translations",
  "description": "Some translations for some project",
  "type": "magento2-language",
  "require": {
    "magento/framework": "^100.0.0"
  },
  "autoload": {
    "files": [
      "registration.php"
    ]
  }
}

language.xml

<?xml version="1.0"?>
<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/Language/package.xsd">
    <code>en_US</code>
    <vendor>snowdog</vendor>
    <package>en_us_custom</package>
</language>

registration.php

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::LANGUAGE,
    'snowdog_en_us_custom',
    __DIR__
);

Và tất nhiên tập tin với bản dịch trong ngôn ngữ mong muốn.


0

Một giải pháp thay thế (giải pháp cuối cùng chúng tôi đã áp dụng) là đưa các tệp dịch vào một mô-đun thay vì trong chủ đề.

Điều kỳ lạ là các mô-đun csv có thể dễ dàng dịch các chuỗi js.

Tạo một mô-đun mới với:

<?php
use \Magento\Framework\Component\ComponentRegistrar;
ComponentRegistrar::register(ComponentRegistrar::MODULE,
    '<Vendor>_<Module>',
    __DIR__
);

composer.json

{
  "name": "vendor/module",
  "description": "Project custom translations",
  "require": {
    "php": "7.0.2|7.0.4|~7.0.6"
  },
  "type": "magento2-module",
  "autoload": {
    "files": [ "registration.php" ],
    "psr-4": {
      "<Vendor>\\<Module>\\": ""
    }
  }
}

vv / module.xml

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="<Vendor>_<Module>" setup_version="1.0.0" />
</config>

và ở đây chúng tôi sẽ thêm tất cả các tập tin ngôn ngữ của chúng tôi:

i18n / it_IT

i18n / en_US

..

Chúng tôi đã chọn hệ thống này vì dự án chúng tôi đang thực hiện có nhiều ngôn ngữ và chúng tôi không muốn bao gồm quá nhiều gói ngôn ngữ.

Lưu ý rằng nó sẽ chỉ hoạt động đối với các chuỗi mới vì Magento ưu tiên cho các bản dịch gói ngôn ngữ. Nhưng đây là một câu chuyện khác.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.