簡體   English   中英

SilverStripe文件標題翻譯

[英]SilverStripe File Title Translation

是否可以翻譯資產文件夾中所有文件的File Title

我安裝了可翻譯的插件,但在i18n SilverStripe章節或插件文檔中沒有文件翻譯的文檔。

CMS文件標題字段屏幕截圖

在我的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函數。 SiteTreeSiteConfig具有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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM