Das Titel-Tag im Layout wird nicht übersetzt


7

Ich weiß nicht, ob dies ein Fehler ist, aber das Titel-Tag im Layout wird nicht übersetzt.

Zum Beispiel,

<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <head>
        <title>Forgot Your Password</title>
    </head>
    <body>....</body>
</page>

Können Sie bestätigen, ob dies ein Fehler ist oder nicht?

Antworten:


4

Es scheint immer noch nicht möglich zu sein, einen Titel im Kopfbereich festzulegen und zu übersetzen, aber Sie können einen benutzerdefinierten Titel erstellen customer_account_forgotpassword.xml, um das Problem mit diesem Code zu beheben

<referenceBlock name="page.main.title">
    <arguments>
        <argument name="title" xsi:type="string" translate="true">Forgot Your Password</argument>
    </arguments>            
</referenceBlock>

Von Devdocs :

Die <action>Anweisung ist veraltet. Wenn die Methodenimplementierung dies zulässt, verwenden Sie <argument>for <block>oder, <referenceBlock>um auf die öffentliche Block-API zuzugreifen.


2

Derzeit scheint es noch nicht möglich zu sein, einen Titel im Kopfbereich festzulegen und zu übersetzen. Für diesen Fehler ist noch ein Problem offen: https://github.com/magento/magento2/issues/2951

Sie können die Methode setTitle tatsächlich über Layout oder im Code ausführen, um einen übersetzten Titel festzulegen (wie in der Ausgabe erwähnt):

im Layout:

<referenceBlock name="page.main.title">
    <action method="setPageTitle">
        <argument translate="true" name="title" xsi:type="string">My Dashboard</argument>
    </action>
</referenceBlock>

in Code:

$this->pageConfig->getTitle()->set(__('Create New Customer Account'));

1
The <action> instruction is deprecated. If the method implementation allows, use the <argument> for <block> or <referenceBlock> to access block public API.
Paul

1

Sie können auch die Factory-Klasse verwenden

/**
 * @var PageFactory
 */
protected $resultPageFactory;

/**
 * @param Context $context
 * @param PageFactory $resultPageFactory
 */
public function __construct(
    Context $context,
    PageFactory $resultPageFactory
) {
    $this->resultPageFactory = $resultPageFactory;
    parent::__construct($context);
}

public function execute()
{
    /** @var \Magento\Framework\View\Result\Page $resultPage */
    $resultPage = $this->resultPageFactory->create();
    $resultPage->getConfig()->getTitle()->set(__('My Title'));
    return $resultPage;
}


0

Sie müssen in i18n eine Übersetzung zu Ihrer Themengebietsschema-Datei hinzufügen .

Seeems Fehler ist in der Hauptübersetzungsdatei, wo hinzugefügt -

"Kontakt", "Kontaktieren Sie uns", Modul, Magento_Contact

wird also im Magento_Contact- Modul übersetzt.

Aber Header mit Titel - ist Magento_Theme Modul: D.

Einfache Lösung - Erstellen Sie in Ihrem Design das Verzeichnis i18n, legen Sie die Datei de_DE.csv ab und geben Sie "Kontakt", "Kontaktieren Sie uns" ein.

Nach dem Start von PHP Bin / Magento Setup: Upgrade und PHP Bin / Magento Cache: Flush


Dies funktionierte nicht @Alex
Jibin George

-1

In meinem Fall hat es einfach so funktioniert.

<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd" layout="1column">
<head>
    <title>Shared products</title>
</head>
<body>
    ...

Übersetzung CSV-Datei:

"Shared products","Translated title"

Der Cache wurde geleert und der übersetzte Titel wurde sofort angezeigt. Getestet auf Magento 2.2.0 im Entwicklungsmodus.


1
NEIN, das ist falsch, Daumen runter, siehe meine Antwort magento.stackexchange.com/a/134903/23344
LucScu
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.