2016-07-26 2 views
2

assetsフォルダのすべてのファイルに対してFileTitleを翻訳することはできますか?SilverStripeファイルタイトル変換

私は翻訳可能なプラグインをインストールしましたが、i18n SilverStripeの章またはプラグインのドキュメントには、ファイルの変換に関するドキュメントはありません。私ProductPage

CMS File Title field screenshot

私はFileアップロードのカスタムフィールドを持つ:

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

ファイルは英語とドイツ語のウェブサイト上ですることができます。各言語のFileTitleを翻訳する必要があります。

私は次のことを試してみましたが、私はFileTitleを変更すると、ドイツ語と英語の両方のために変更されます。

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

あなたは翻訳したいものとあなたが試したことをもう少し明確にすることができますか – Barry

+0

私の質問を更新します –

答えて

2

0は、我々のmysite/_config.phpファイルにFileTranslatable拡張子を追加する必要があり、当社のFileクラスに翻訳可能なモジュールを有効にするには:

File::add_extension('Translatable'); 

はしかし、私は翻訳可能モジュールは、現在のファイルのために働いているとは思いません。

TranslatableクラスがFolderクラスにフィールドを追加しようとすると、アセットにアクセスする際にエラーが発生し、エラーが発生します。これは最新版でこのpull request to fix the Folder errorで修正されました。

Translatableの問題は、オブジェクトにCMSEditLink機能が必要です。 SiteTreeおよびSiteConfigCMSEditLinkの機能を持ちますが、File(およびDataObject)の機能はありません。

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

我々はconfig.ymlに以下を追加します。この拡張機能を有効にするには:

このすべての後
File: 
    extensions: 
    - FileExtension 

我々はFileためCMSEditLink関数を定義するFileExtensionを作成することができ、この問題を解決するには

ファイルの翻訳を作成し、各ファイルの翻訳リストを表示できますが、翻訳ファイルはルート管理画面にリダイレクトされます。 ?Locale= URLパラメータが設定されていると、アセットのリンク先がリダイレクトされるようです。このURLパラメータは、翻訳可能モジュールによって設定されます。

これは、すべての作業の後でもまだ動作しません。

+0

私はプルリクエストを提出しました:https://github.com/silverstripe/silverstripe-translatable/pull/248 – 3dgoo

+0

次の問題は、 'CMSEditLink'が' DataObject'や 'SiteTree'の関数ではないことです。 'ファイル'。 'Translatable'コードには、この関数が存在するかどうかを調べるチェックがあります。これ以外のページでは決して動作しません。ページ: https://github.com/silverstripe/silverstripe-translatable/blob/2.2/code/model/Translatable.php#L1117 – 3dgoo

+0

私はSiteConfigのプラグインを使用して翻訳が動作しています。 SiteConfigはDataObjectを拡張します。 –

1

あなたはこれを使い始めるされているので、私がするたびに答えるために、あなたにread the docs

に助言フィールドを作成してから、_t or internationalisation functionを使用する必要があるタイトルを指定します。フィールドで

_t機能は、それがすべての分野だためだけ指定された関数のための正しい名前空間とエンティティ名の文字列を検索する必要があるのでsilverstripeは、使用するものである...

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

はそれを強調しています名前空間であるとエンティティがNameであり、あなたはあなたが個人用サイトで独自のlangファイルを作成したり、ディテールを使用して、モジュールのフォルダは、このようにそれを無効にするために、これを無効にするにはframework\lang\en.yml

でこれを見ることができるオブジェクトFileで...

en: 
    File: 
    Name: My New Name Title 
+0

"Titel"翻訳したいと思っています入力フィールドのテキストを翻訳したいです... –

関連する問題