janneklouman/silverstripe-translatable-controllers

一个接口,允许简单翻译控制器URL段和操作。

dev-master 2018-05-08 15:59 UTC

This package is not auto-updated.

Last update: 2024-09-16 20:25:52 UTC


README

本模块提供了一个简单的接口,允许您设置多个路由到控制器及其操作。最常见的情况可能是翻译这些路由。

要求

"require": {
    "php": "^5.4",
    "silverstripe/framework": "^3.1"
}

安装

composer install jjjjjjjjjjjjjjjjjjjj/silverstripe-translatable-controllers

基本用法示例

以下示例提供了一个简单的控制器(ExampleController),其中一个函数(example_function),可通过以下方式访问

  • example.com/ExampleController/example_function
  • example.com/example_example/function_function
  • example.com/exempelcontroller/exempelfunktion(当区域设置为瑞典语时)
  • example.com/コントローラーの例/関数の例(当区域设置为日语时)

使控制器实现TranslatableController接口

# ExampleController.php
class ExampleController extends Controller implements TranslatableController
{

    private static $allowed_actions = [
        'example_function'
    ];

    public function getValidUrlSegments()
    {
        return [
            'example_example',
            _t('ExampleController.CONTROLLER_URL_SEGMENT')
        ];
    }

    public function getValidUrlHandlers()
    {
        return [
            'function_function' => 'example_function',
            _t('ExampleController.CONTROLLER_ACTION_EXAMPLE') => 'example_function'
        ]
    }

    /**
     * Returns the number 42
     */
    public function example_function
    {
        return 42;
    }

}

在目标语言(们)的翻译文件中定义您的路由

# sv_SE.yml
sv:
  ExampleController:
    CONTROLLER_URL_SEGMENT: 'exempelcontroller'
    CONTROLLER_ACTION_EXAMPLE: 'exempelfunktion'
# ja_JP.yml
ja:
  ExampleController:
    CONTROLLER_URL_SEGMENT: 'コントローラーの例'
    CONTROLLER_ACTION_EXAMPLE: '関数の例'