2016-07-26 10 views
2

Ist es möglich, die FileTitle für alle Dateien im Ordner Assets zu übersetzen?SilverStripe File Titel Übersetzung

Ich habe das übersetzbare Plugin installiert, aber es gibt keine Dokumentation für die Dateiübersetzung im i18n SilverStripe-Kapitel oder in der Plugin-Dokumentation.

CMS File Title field screenshot

In meinem ProductPage Ich habe ein benutzerdefiniertes Feld für File Upload:

$fields->addFieldToTab(
    'Root.Attachments', 
    $uploadField = UploadField::create('Files', 'Dateien') 
); 

Die Dateien auf der englischen und deutschen Webseite sein. Ich muss die FileTitle für jede Sprache übersetzen.

habe ich versucht, die folgenden, aber wenn ich ändern die FileTitle es ändert sich für Deutsch und Englisch:

// Apply Translatable modifications 
$this->applyTranslatableFieldsUpdate($fields, 'updateCMSFields'); 
+0

Können Sie ein wenig klarer darüber sein, was Sie übersetzt haben und was Sie ausprobiert haben bitte – Barry

+0

Ich aktualisiere meine Frage –

Antwort

2

Um das Übersetzbare Modul auf unserer File Klasse ermöglichen wir die Translatable Erweiterung File in unserer mysite/_config.php Datei hinzufügen:

File::add_extension('Translatable'); 

Aber ich glaube nicht, das Übersetzbare Modul zur Zeit für Dateien arbeitet.

Beim Zugriff auf Assets ist ein Fehler aufgetreten, da die Translatable-Klasse versucht, der Klasse Folder Felder hinzuzufügen, was einen Fehler verursacht. Dies wurde nun in der aktuellen Version mit dieser pull request to fix the Folder error behoben. Das nächste Problem ist Translatable erfordert das Objekt eine CMSEditLink Funktion zu haben. SiteTree und SiteConfig haben eine CMSEditLink Funktion, aber File (und DataObject) nicht.

Um dies zu beheben, können wir eine FileExtension definieren eine CMSEditLink Funktion für File erstellen:

class FileExtension extends DataExtension { 
    public function CMSEditLink() { 
     return singleton('AssetAdmin')->Link('EditForm/field/File/item/' . $this->owner->ID . '/edit'); 
    } 
} 

diese Erweiterung aktivieren wir folgendes zu unserem hinzufügen config.yml:

File: 
    extensions: 
    - FileExtension 

Nach all dieser können wir Dateiübersetzungen erstellen und unsere Übersetzungsliste für jede Datei anzeigen, aber die Übersetzungsdatei verlinkt die Weiterleitung zum root admin-Bildschirm. Es scheint, dass der Asset-Link umgeleitet wird, wenn er den URL-Parameter ?Locale= hat. Dieser URL-Parameter wird vom übersetzbaren Modul festgelegt.

Also das wird immer noch nicht funktionieren nach all dieser Arbeit.

+0

Ich habe die Pull-Anfrage eingereicht: https://github.com/silverstripe/silverstripe-translatable/pull/248 – 3dgoo

+0

Die nächste Frage, die ich gefunden habe, ist, dass CMSEditLink eine Funktion auf 'SiteTree' ist, nicht' DataObject' oder 'Datei'. Im Code "Translatable" wird geprüft, ob diese Funktion existiert. Dies wird nie funktionieren außer Pages: https://github.com/silverstripe/silverstripe-translatable/blob/2.2/code/model/Translatable.php#L1117 – 3dgoo

+0

Ich benutze das Plugin für SiteConfig zu und die Übersetzung funktioniert . SiteConfig erweitert DataObject. –

1

Wie Sie mit diesem sind die ersten Schritte, dann rate ich Ihnen read the docs

bis zu beantworten Wann immer Sie erstellen ein Feld, dann geben Sie den Titel an, den Sie benötigen, um die _t or internationalisation function zu verwenden.

Die _t Funktion ist es, was Silvers verwendet für alle Felder es ist, so dass Sie nur die richtige Namespace und Entity name string für die angegebene Funktion finden ...

_t("Namespace.Entity","This is a string") 

Für das Feld markiert ist im Objekt File, die der Namespace ist und das Entity ist Name und Sie können sehen, in framework\lang\en.yml

dies außer Kraft zu setzen Sie Ihre eigenen Dateien lang in mysite oder Ihr Modulordner mit dem Detail schaffen es außer Kraft zu setzen, wie dies ...

+0

Ich möchte das Label "Titel" nicht übersetzen Ich möchte den Text in das Eingabefeld übersetzen ... –