Magento2 çeviri Javascript (KO) şablon metni


24

Metin için bir çeviri eklemek çalışıyorum <!-- ko i18n: 'Store credit available' --><!-- /ko -->içinde mevcut vendor/magento/module-customer-balance/view/frontend/web/template/payment/customer-balance.htmlama benim, metni değiştirmeye çalışırsanız i18n/en_US.csvhala çalışmıyor.

Önbelleği temizledim ve statik içerik dağıtımı kullandım.

KO şablonları için çeviri eklemenin farklı bir yolu var mı?

Yanıtlar:


39

Böylece nihayet sorunu çözebildim.

Yürütme işlemi js-translation.jsonsırasında oluşturulan JS şablon çevirisinin okundığı anlaşılıyor setup:static-content:deploy. Verileri bu dosyada doldurmak için proje için yeni bir dil paketi oluşturulmalıdır.

Öyleyse, CSV'yi tema düzeyinde app/design/<area>/<vendor>/<theme-name>/i18n/xx_XX.csveklemek yerine, dil paketine eklememiz gerekir.

Öncelikle yeni bir Dil Paketiproject document root oluşturmak için aşağıdaki dizinleri oluşturmamız gerekir:

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

Önemli : Küçük harf KULLANIM ŞEKLİ SADECE gizlenmiş dosya isimleri çalışmaz

Ardından dizini yeni oluşturulan klasörlere değiştirin:

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

Şimdi composer.jsonaşağıdaki içeriğe sahip bir (isteğe bağlı) dosya oluşturabilirsiniz :

{                                                     
    "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"                        
        ]                                             
    }                                                 
}                                                     

Ardından language.xml, aşağıdaki içerikleri içeren bir dosyaya ihtiyacımız var :

<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.phpAşağıdaki içeriği içerdikten sonra gereklidir:

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

Şimdi bir çeviri CSV'si oluşturabiliriz. Zaten tema klasörünün içinde bir tane app/design/<area>/<vendor>/<theme-name>/i18n/xx_XX.csvvarsa, onun gibi bir yere taşıyabilirsinizapp/i18n/<project-name>/<xx_xx>/xx_XX.csv

Şimdi project document rootbizden bu komutları çalıştırmamız gerekiyor:

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

js-translation.jsonÇalıştırmadan önce oluşturulmuş olanı silmemiz gerekir .setup:static-content:deploy

Şimdi statik içerik dağıtımını çalıştırıyoruz:

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

Bu yapıldıktan sonra önbelleği temizledik:

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

JS şablonu için çeviri dosyalarının tüm js-translation.jsonpub / static klasörünün içinde bulunup bulunmadığını doğrulayabiliriz .

find pub/static -name js-translation.json

Bu, JS şablonları için oluşturulan tüm çeviri dosyalarının listesini sağlayacaktır.

Referans:

  1. Magento DevDocs
  2. İlgili Github Sorunu

Benim proje js-translation.jsondosyalarıma .csv dosyaları takılı olsa bile statik içerik dağıtımı doğru oluşturulur app/design/frontend/vendor/theme-name/i18n/xx_XX.csv. Tek dikkat, js-translation.jsonstatik içerik dağıtımını çalıştırmadan önce tümünü silmektir .
LucScu

Magento'nun hangi versiyonundasın?
Atish Goswami,

Vender / Theme yani bundan yukarıdaki kodunuza göre <project-name> ne olmalı?
Kaushal Suthar 27:16

1
Bunu yapmanın tek yolu bu mu? Yani, belgeler bile ( devdocs.magento.com/guides/v2.1/frontend-dev-guide/translations/… ) çeviri dosyalarını koyabileceğimizi belirtiyor design/<vender>/<theme>/i18n/xx_XX.csv.
Giel Berkers

1
Magento 2'nin bununla ilgili birçok sorunu var, bizim için en iyi yol, js-translation.jsondosyayı oluşturan bir betiği el ile oluşturmak ve onu doğru türde isteklerde sunan web sunucusu yapılandırması yapmaktı
cjohansson,

1

Github sayısında açıkladığım gibi ( https://github.com/magento/magento2/issues/7525#issuecomment-316690100 ) bu sorunun başka (daha kolay) bir çözümü var.

Her dili ayrı ayrı konuşlandırdığınızdan emin olmanız yeterli.

Yani kullanmak yerine:

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

kullanım

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

Bunun nedeni muhtemelen static-content:deploysadece bir kez dosyaları derlemek ve daha sonra diğer dillere kopyalamaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.