Magento2 번역 자바 스크립트 (KO) 템플릿 텍스트


24

나는 텍스트에 대한 번역을 추가하려고 <!-- ko i18n: 'Store credit available' --><!-- /ko -->에 존재하는 vendor/magento/module-customer-balance/view/frontend/web/template/payment/customer-balance.html,하지만 난 내 텍스트를 변경하려고하면 i18n/en_US.csv여전히 작동하지 않습니다.

캐시를 비우고 정적 콘텐츠 배포를 사용했습니다.

KO 템플릿에 대한 번역을 추가하는 다른 방법이 있습니까?

답변:


39

그래서 마침내 문제를 알아낼 수있었습니다.

실행 js-translation.json중에 생성 된 JS 템플리트 변환을 읽은 것 같습니다 setup:static-content:deploy. 이 파일에 데이터를 채우 려면 프로젝트에 대해 새 언어 패키지 를 작성해야합니다.

따라서 테마 수준에서 CSV를 추가하는 대신 app/design/<area>/<vendor>/<theme-name>/i18n/xx_XX.csv언어 패키지에 CSV 를 추가해야합니다.

새로운 언어 패키지를 먼저 project document root만들려면 다음 디렉토리를 만들어야합니다.

mkdir -p app/i18n/<project-name>/<xx_xx>

중요 : 소문자 DIRECTORY NAMES 만 사용하면 camcelcased 폴더 이름 만 작동하지 않습니다

그런 다음 디렉토리를 새로 작성된 폴더로 변경하십시오.

cd app/i18n/<project-name>/<xx_xx>

이제 composer.json다음 내용 으로 (선택 사항) 파일을 만들 수 있습니다 .

{                                                     
    "name": "<project-name>/<xx_xx>",                             
    "description": "<sample description>", //Ex:English (United States) language
    "version": "<version-number>", //100.0.1                             
    "license": [                                      
        "OSL-3.0",                                    
        "AFL-3.0"                                     
    ],                                                
    "require": {                                      
        "magento/framework": "100.0.*"                
    },                                                
    "type": "magento2-language",                      
    "autoload": {                                     
        "files": [                                    
            "registration.php"                        
        ]                                             
    }                                                 
}                                                     

다음으로 language.xml다음 내용 의 파일이 필요합니다 .

<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/Language/package.xsd">
    <code>xx_XX</code> <!-- example: <code>en_US</code> -->
    <vendor><project-name></vendor>
    <package><xx_xx></package> <!-- example: <package>en_us</package> -->
</language>

보다 후 registration.php다음과 같은 내용을 포함하는 것은 필요하다 :

\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::LANGUAGE,
    '<project-name>_<xx_xx>',
    __DIR__
);

이제 번역 CSV를 만들 수 있습니다. 이미 테마 폴더 뭔가 내부에 하나가있는 경우처럼 app/design/<area>/<vendor>/<theme-name>/i18n/xx_XX.csv당신은 단지에 이동할 수 있습니다app/i18n/<project-name>/<xx_xx>/xx_XX.csv

이제 project document root다음 명령을 실행해야합니다.

find pub/static -name js-translation.json -exec rm -rf {} \;

js-translation.json실행하기 전에 이미 생성 된 것을 삭제해야 합니다.setup:static-content:deploy

이제 정적 콘텐츠 배포를 실행합니다.

php bin/magento setup:static-content:deploy <xx_XX>

완료되면 캐시를 지 웁니다.

php bin/magento cache:clean
php bin/magento cache:flush

js-translation.jsonpub / static 폴더 내부를 모두 찾아서 JS 템플릿의 번역 파일이 생성되었는지 확인할 수 있습니다 .

find pub/static -name js-translation.json

JS 템플릿에 대해 생성 된 모든 번역 파일 목록이 제공됩니다.

참고:

  1. 마 젠토 DevDocs
  2. 관련 Github 문제

내 프로젝트 js-translation.json파일에 .csv 파일이 삽입되어 있어도 정적 콘텐츠 배포에서 올바르게 생성됩니다 app/design/frontend/vendor/theme-name/i18n/xx_XX.csv. js-translation.json정적 컨텐츠 배포를 실행하기 전에 모두 삭제 해야합니다.
LucScu

당신은 어떤 버전의 magento입니까?
Atish Goswami

Vender / Theme 그래서 위의 코드에 따라 <project-name>이어야합니까 ??
Kaushal Suthar

1
이것이 정말로 이것을 할 수있는 유일한 방법입니까? 문서 ( devdocs.magento.com/guides/v2.1/frontend-dev-guide/translations/… ) 조차도 번역 파일을에 넣을 수 있어야한다고 명시하고 있습니다 design/<vender>/<theme>/i18n/xx_XX.csv.
Giel Berkers

1
Magento 2에는 이와 관련된 많은 버그가 있습니다. 가장 좋은 방법은 js-translation.json파일 을 생성하는 스크립트를 수동으로 생성 하고 올바른 종류의 요청에 파일을 전달하는 웹 서버 구성을 만드는 것입니다.
cjohansson

1

Github 문제 ( https://github.com/magento/magento2/issues/7525#issuecomment-316690100 ) 에서 설명했듯이 해당 문제에 대한 또 다른 (더 쉬운) 솔루션이 있습니다.

모든 언어를 별도로 배포해야합니다.

따라서 다음을 사용하는 대신

php bin/magento setup:static-content:deploy en_US de_DE it_IT fr_FR es_ES

용도

php bin/magento setup:static-content:deploy en_US
php bin/magento setup:static-content:deploy de_DE
php bin/magento setup:static-content:deploy it_IT
php bin/magento setup:static-content:deploy fr_FR
php bin/magento setup:static-content:deploy es_ES

이것은 static-content:deploy파일을 한 번만 컴파일하고 나중에 다른 언어로 파일을 복사하기 때문일 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.