로컬라이제이션
Commerce 번역을 사용하면 다음을 생성하여 여러 지역 및 시장에 대한 스토어를 사용자 정의하고 현지화할 수 있습니다.
- 번역 사전: 사용자 지정 모듈 또는 테마를 위한 단어와 같이 일부 개의 단어와 구를 사용자 지정하거나 번역하는 편리한 방법입니다.
- 언어 패키지 를 통해 Commerce 애플리케이션에서 모든 또는 모든 개의 단어 및 구를 번역할 수 있습니다.
번역 개요를 참조하세요.
번역 사전 생성
번역 사전을 생성하여 기존 문자열을 사용자 지정하거나, 사용자 지정 모듈에서 단어와 구를 번역하거나, 테마를 현지화하거나, 언어 패키지를 만들 수 있습니다.
번역을 시작하려면 명령을 사용하여 기존 구 및 단어의 수집된 목록이 있는 사전 CSV 파일을 생성합니다.
사전을 생성하고 번역을 시작하려면 다음을 수행하십시오.
-
번역 수집 명령을 사용하여 활성화된 구성 요소에서 번역 가능한 단어 및 구를 추출합니다. 콘텐츠가 CSV 파일로 추출됩니다.
-
기존 단어와 구를 번역합니다. 필요에 따라 사용자 정의 용어를 추가할 수 있습니다.
번역된 사전을 사용할 수 있는 옵션이 있습니다.
-
번역 사전을 언어 패키지로 패키징하고 이 패키지를 Commerce 스토어 관리자에게 제공할 수 있습니다.
-
관리자 [저장소 관리자가 번역을 구성]합니다.
명령 옵션:
bin/magento i18n:collect-phrases [-o|--output="<csv file path and name>"] [-m|--magento] <path to directory to translate>
다음 표에서는 매개 변수와 값에 대해 설명합니다.
<path to directory to translate>
입력한 경로에서 검색을 시작하고 포함된 모든 파일과 하위 디렉터리를 검색합니다.
-m --magento
을(를) 사용하는 경우 이 매개 변수를 사용하지 마십시오.-m --magento
샘플:
"항목을 찾을 수 없음","항목을 찾을 수 없음",module,Magento_위시리스트
-o --output="<path>"
이 매개 변수를 생략하면 출력이 stdout으로 전달됩니다.
-m|--magento
옵션을 사용해야 합니다.번역 지침
단어와 구를 번역할 때 다음 지침을 사용하십시오.
- 두 번째 열의 내용만 변경합니다. 구문을 영어(
US
)에서 원하는 언어로 번역합니다. - 로케일에 대한 사전을 만들 때 기본 Commerce 문자열을 사용합니다.
- 번역하는 동안 자리 표시자에 주의하십시오.
%1
,%2
Commerce에서는 자리 표시자를 사용하여 컨텍스트 값을 삽입합니다. 이 값은 번역에 사용되지 않음 입니다. For example:
Product '%1' has been added to shopping cart.
값으로 채워집니다.
Product 'Multimeter-2000' has been added to shopping cart.
결과 구문에는 각 자리 표시자 중 하나 이상이 포함되어야 합니다. 예를 들어 원래 구문에 %1
부터 %3
까지의 자리 표시자가 있다고 가정합니다. 번역에는 이러한 자리 표시자를 순서에 관계없이 여러 개 포함할 수 있지만, %1
, %2
및 %3
이(가) 하나 이상 있어야 합니다. 변환에는 원래 값에 없는 자리 표시자 값이 포함될 수 없습니다(예: %4
, %5
등).
구문 번역의 예:
"Buy %1 for %2 (%3 incl. tax) each","Compre %1 por %2 (%3 incl. imposto) cada"
언어 패키지 만들기
번역 사전과 달리, 언어 패키지를 사용하여 Commerce 애플리케이션에서 모든 단어 및 구를 번역할 수 있습니다. 번역 사전을 사용하여 특정 구성 요소(예: 모듈 또는 테마)를 번역할 수 있습니다. [언어 패키지에 대해 자세히 알아보세요].
이 섹션에서는 모듈 및 테마에 CSV 파일을 작성하는 언어 패키지를 만드는 방법에 대해 설명합니다. 언어 패키지를 생성하려면 다음 섹션에서 설명한 작업을 수행해야 합니다.
- 단어와 구 수집 및 번역.
--magento
매개 변수는 필수입니다. - 언어 패키지 명령 실행.
- 디렉터리 및 파일 만들기.
- (선택 사항.) 언어에 대한 여러 패키지를 구성합니다.
언어 패키지 명령 실행
명령 사용:
bin/magento i18n:pack [-m|--mode={merge|replace}] [-d|--allow-duplicates] <source> <locale>
다음 표에서는 언어 패키지 명령의 매개 변수와 값에 대해 설명합니다.
<source>
CSV 파일을 만든 다음 디렉터리 및 파일 만들기에 설명된 대로 언어 패키지를 만들려면
bin/magento i18n:collect-phrases
을(를) 사용합니다.<locale>
-m --mode
값: 병합 또는 바꾸기(기본값).
-d --allow-duplicates
디렉터리 및 파일 만들기
언어 패키지는 다음 내용이 포함된 Commerce 파일 시스템의 app/i18n/<VendorName>
아래 디렉터리에 있습니다.
- 필수 라이선스 파일
composer.json
- 언어 패키지를 [등록]하는
registration.php
language.xml
메타 정보 파일
de_de
]을(를) 참조하십시오.이러한 파일을 만들려면 다음 작업을 수행하십시오.
-
app/i18n
아래에 디렉터리를 만듭니다.예를 들어 Commerce 언어 패키지는
app/i18n/magento
에 있습니다 -
필요한 라이선스 파일을 추가합니다.
-
언어 패키지에 대한 종속성을 지정하는 [
composer.json
]을(를) 추가합니다. -
[
registration.php
]에 언어 패키지 등록 -
다음 섹션에서 설명한 대로
language.xml
메타 정보 파일을 추가합니다.
언어 패키지 language.xml
language.xml
구성 파일에서 언어 패키지를 선언할 때 이 패키지에 대한 언어 상속 순서를 지정해야 합니다.
언어 상속을 사용하면 상위 이라는 기존 번역을 기반으로 하위 이라는 번역을 만들 수 있습니다. 하위 번역은 상위 번역을 재정의합니다. 그러나 하위 번역이 업로드나 표시에 실패하거나 구문 또는 단어가 누락된 경우에는 Commerce에서 상위 로케일을 사용합니다. 언어 패키지 상속의 예.
패키지를 선언하려면 다음 정보를 지정합니다.
<?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_GB</code>
<vendor>magento</vendor>
<package>en_gb</package>
<sort_order>100</sort_order>
<use vendor="oxford-university" package="en_us"/>
</language>
위치:
code
- 언어 패키지 로케일(필수)vendor
—모듈의 공급업체 이름(필수)package
- 언어 패키지 이름(필수)sort_order
- 저장소에 사용할 수 있는 언어 패키지가 여러 개 있는 경우 패키지를 업로드하는 우선 순위use
- 사전을 상속할 상위 언어 패키지 로케일
필요한 경우 여러 상위 패키지를 지정할 수 있습니다. 상위 패키지는 처음 나열된 항목에서 처음 사용되는 항목에 적용됩니다.
언어 상속의 예
언어 패키지가 다른 두 패키지에서 상속되고 해당 패키지에 상위 및 "최상위" 패키지도 있다고 가정해 봅시다.
언어 패키지가 두 패키지에서 상속되는 경우 해당 language.xml
은(는) 다음과 같습니다.
<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/Language/package.xsd">
<code>en_GB</code>
<vendor>magento</vendor>
<package>language_pack</package>
<sort_order>100</sort_order>
<use vendor="parent-package-one" package="language_package_one"/>
<use vendor= "parent-package-two" package="language_package_two"/>
</language>
앞의 예에서
language_package_one
이(가)en_au_package
에서 상속되고en_au_package
이(가)en_ie_package
에서 상속됩니다.language_package_two
이(가)en_ca_package
에서 상속되고en_ca_package
이(가)en_us_package
에서 상속됩니다.
Commerce 응용 프로그램이 en_GB
패키지에서 단어 또는 구를 찾을 수 없는 경우 다음 순서로 다른 패키지를 찾습니다.
parent-package-one/language_package_one
<vendorname>/en_au_package
<vendorname>/en_ie_package
parent-package-two/language_package_two
<vendorname>/en_ca_package
<vendorname>/en_us_package
언어 패키지 간 상속을 모두 지정하면 순환 상속 체인이 생성될 수 있습니다. Magento\Test\Integrity\App\Language\CircularDependencyTest 테스트를 사용하여 이러한 체인을 찾아 수정하십시오.
한 언어에 대한 여러 패키지 구성
스토어를 보다 유연하게 만들기 위해 스토어에서 동일한 언어에 대한 여러 언어 패키지를 업로드할 수 있습니다. 따라서 시스템에서 언어에 사용할 수 있는 모든 패키지에서 단일 패키지를 컴파일하므로 저장소의 각 부분에 대해 서로 다른 사용자 지정 패키지를 사용할 수 있습니다.
기존 언어에 대해 추가 패키지를 활성화하려면 기존 언어 코드 이름을 제외한 모든 이름을 새 패키지에 지정합니다(혼동을 피하기 위해). 다음 섹션에서 설명한 대로 언어 패키지의 language.xml
메타 정보 파일에 패키지의 구성을 지정하십시오.
번역 명령 사용의 예
다음 섹션에서는 이 항목에서 설명한 명령을 사용하여 번역 사전 및 번역 패키지를 만드는 방법에 대한 전체적인 예제를 제공합니다.
예: 모듈 또는 테마의 번역 사전 만들기
다른 판매자에게 배포할 모듈 또는 테마에 독일어 번역을 추가하려면 다음을 수행합니다.
-
모듈에서 구 수집:
code language-bash bin/magento i18n:collect-phrases -o "/var/www/html/magento2/app/code/ExampleCorp/SampleModule/i18n/xx_YY.csv" /var/www/html/magento2/app/code/ExampleCorp/SampleModule
note info INFO CSV 파일 이름은 로캘과 정확히 일치 해야 합니다(문자의 대/소문자를 포함). -
이 지침을 사용하여 단어와 구를 번역합니다.
-
필요한 경우
xx_YY.csv
을(를)/var/www/html/magento2/app/code/ExampleCorp/SampleModule/i18n
또는 모듈의 테마 디렉터리에 복사합니다(번역 사전이 모듈용인지 테마용인지에 따라 다름).
예제: 언어 패키지 만들기
앞의 예제와 마찬가지로 CSV 파일을 생성하지만 모듈이나 테마 디렉토리를 지정하는 대신 전체 Commerce 애플리케이션 루트 디렉토리를 지정합니다. 결과 CSV에는 명령이 코드에서 찾을 수 있는 모든 구문이 포함되어 있습니다.
-
모듈에서 구 수집:
code language-bash bin/magento i18n:collect-phrases -o "/var/www/html/magento2/xx_YY.csv" -m
note info INFO CSV 파일 이름은 로캘과 정확히 일치 해야 합니다(문자의 대/소문자를 포함). -
이 지침을 사용하여 단어와 구를 번역합니다.
-
언어 패키지를 만듭니다.
code language-bash bin/magento i18n:pack /var/www/html/magento2/xx_YY.csv -d xx_YY
-
언어 패키지의 디렉토리를 만듭니다.
For example,
/var/www/html/magento2/app/i18n/ExampleCorp/xx_yy
-
해당 디렉터리에 다음 내용을 모두 추가합니다.
- 필요한 경우 라이센스
composer.json
(샘플 다음)registration.php
(샘플 다음)language.xml
(샘플 다음)
샘플
composer.json
:code language-json { "name": "examplecorp/language-xx_yy", "description": "Sample language", "version": "100.0.2", "license": [ "OSL-3.0", "AFL-3.0" ], "require": { "magento/framework": "100.0.*" }, "type": "magento2-language", "autoload": { "files": [ "registration.php" ] } }
샘플
registration.php
:code language-php <?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ use Magento\Framework\Component\ComponentRegistrar; ComponentRegistrar::register( ComponentRegistrar::LANGUAGE, 'magento_xx_yy', __DIR__ );
샘플
language.xml
:code language-xml <?xml version="1.0"?> /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ <language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/Language/package.xsd"> <code>xx_YY</code> <vendor>examplecorp</vendor> <package>xx_yy</package> </language>