2016-07-26 216 views
2

是否可以翻譯FileTitle在資產的文件夾中的所有文件?SilverStripe文件標題翻譯

我安裝了插件的翻譯,但沒有在國際化SilverStripe章節或插件文檔文件轉換的文檔。

CMS File Title field screenshot

在我ProductPage我有一個自定義字段爲File上傳:

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

這些文件可以在英語和德語網站。我需要爲每種語言翻譯FileTitle

我嘗試以下,但是當我改變FileTitle它改變了德語和英語:

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

你能更清楚一點你想翻譯什麼,你試過了嗎 – Barry

+0

我更新了我的問題 –

回答

2

要啓用可轉換模塊上我們File類中,我們必須在我們mysite/_config.php文件Translatable擴展名添加到File

File::add_extension('Translatable'); 

不過,我不認爲可轉換模塊正在工作的文件。

訪問資產時作爲可翻譯的類嘗試字段添加到Folder類,這會導致錯誤發生錯誤。現在已通過此pull request to fix the Folder error修復了最新版本。

接下來的問題是Translatable要求對象具有CMSEditLink功能。 SiteTreeSiteConfigCMSEditLink功能,但File(和DataObject)沒有。

爲了解決這個問題,我們可以創建一個FileExtension定義CMSEditLink功能File

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

要啓用這個擴展添加下面我們config.yml

File: 
    extensions: 
    - FileExtension 

畢竟這,我們可以創建文件翻譯並在每個文件上查看我們的翻譯列表,但翻譯文件鏈接將重定向到根管理員屏幕。如果資產鏈接有?Locale= URL參數集,它似乎會重定向。該URL參數由可翻譯模塊設置。

所以這仍然不會在所有的工作後工作。

+0

我已經提交了pull請求:https://github.com/silverstripe/silverstripe-translatable/pull/248 – 3dgoo

+0

我發現的下一個問題是'CMSEditLink'是'SiteTree'上的函數,而不是'DataObject'或者'File'。在「可翻譯」代碼中,檢查是否存在此功能。這將永遠不會工作,但頁面: 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") 

對於現場強調它是在對象File這是命名空間和實體爲Name,您可以在framework\lang\en.yml

看到這個要覆蓋這一點,你在mysite的創建自己的郎的文件或與您詳細的模塊文件夾覆蓋它這樣...

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

我不想翻譯標題「標題」我想翻譯輸入字段中的文本... –