[英]SilverStripe File Title Translation
是否可以翻譯資產文件夾中所有文件的File
Title
?
我安裝了可翻譯的插件,但在i18n SilverStripe章節或插件文檔中沒有文件翻譯的文檔。
在我的ProductPage
我有一個用於File
上傳的自定義字段:
$fields->addFieldToTab(
'Root.Attachments',
$uploadField = UploadField::create('Files', 'Dateien')
);
這些文件可以在英語和德語網站上。 我需要翻譯每種語言的File
Title
。
我嘗試了以下操作,但是當我更改File
Title
時,德語和英語都發生了變化:
// Apply Translatable modifications
$this->applyTranslatableFieldsUpdate($fields, 'updateCMSFields');
要在我們的File
類上啟用Translatable模塊,我們必須在mysite/_config.php
文件的File
中添加Translatable
擴展名:
File::add_extension('Translatable');
但是,我認為Translatable模塊當前不適用於文件。
由於Translatable類嘗試將字段添加到Folder
類時,訪問資產時發生錯誤,這會導致錯誤。 現在,已通過此拉取請求在最新版本中修復了該錯誤,以修復Folder
錯誤 。
下一個問題是Translatable
要求對象具有CMSEditLink
函數。 SiteTree
和SiteConfig
具有CMSEditLink
函數,但File
(和DataObject
)沒有。
為了解決這個問題,我們可以創建FileExtension
來為File
定義CMSEditLink
函數:
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=
了?Locale=
URL參數,則資產鏈接似乎將重定向。 此URL參數由可翻譯模塊設置。
因此,在所有這些工作之后,這仍然行不通。
當您開始使用此工具時,我建議您閱讀文檔
要回答“無論何時創建字段”,然后在其中指定標題的地方都需要使用_t或國際化功能 。
Silverstripe的所有字段都使用_t函數,因此您只需要為指定的函數找到正確的命名空間和實體名稱字符串即可。
_t("Namespace.Entity","This is a string")
對於突出顯示的字段,它位於對象File
,該File
是名稱空間,而實體是Name
,您可以在framework\\lang\\en.yml
看到它。
要覆蓋它,您可以在mysite或模塊文件夾中創建自己的lang文件,並帶有詳細信息以像這樣覆蓋它...
en:
File:
Name: My New Name Title
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.