Fork me on GitHub

Translation: Usage

This page shows an example of how translation can be used.

Single Translation Key

In this example we are displaying a single translation for key hathoora_hello_world.

In the controller, the code looks like this:

                
                    $helloTranslation = $this->getService('translation')->t(
                        'hathoora_hello_world', array('name' => 'World')
                    );
                
            

In this example we are passing token 'name' and the output is:

                
                    Hello, World                
            

Route Based Translation Keys

Above example will make one call to get one translation, if you need to fetch multiple translations you can associate translations to a route and fetch them. This example is using hathoora_route_example_title and hathoora_route_example_body. The controller code looks like this:

                
                    $routeTranslations = $this->getService('translation')->getRouteTranslations('hathoora_translation_route',
                        array(
                            'hathoora_route_example_title' => array(
                                'date' => date('m/d/y H:i:s')
                            ),
                            'hathoora_route_example_body' => array(
                                'link' => 'http://hathoora.org'
                            )
                        )
                    );
                
            

In this example we are getting all translations associated with route hathoora_translation_route. We are also passing tokens date and link to keys hathoora_route_example_title and hathoora_route_example_body respectively.

The output is shown below.

                
                    hathoora_route_example_title : Today is: 12/13/18 00:22:08
                    hathoora_route_example_body: hathoora_route_example_body                
            

Now click here to toggle language to see the difference.

Filters

Using translation inside template and using filters. In this example we are using key hathoora_hello_world_filter.

                
                    echo $this->getService('translation')->t(
                                        'hathoora_hello_world_filter', array('name' => ' Hathoora PHP Framework '));
                
            

The translation key has the following translation for en_US

                
                    Name is trimmed: "{{name|trim}}"<br/>
                    <br/>
                    Custom filter: "{{name|customFilter(3)|trim}}"
                
            

In this example we are using builtin trim filter and a custom filter called and customFilter which takes one parameter.

And we added a custom filter class that contains a static customFilter like so in config.

                
                    # File admin/config/config_prod.yml

                    hathoora:
                        translation:
                            ....

                        # filter used in translation helper
                        detokenizerFilters:
                            - \admin\helper\translationFilter
                
            

The output of result is shown below.

                
                    Name is trimmed: "Hathoora PHP Framework"

Custom filter: "hathoora php framework ---- hathoora php framework ---- hathoora php framework ----"
Page Took:         10.15 msec
Page Memory:   644.7k
admin / translationController / example (200)
Request UUID: 5c11a630ee1573.40024780
Get
Post
Cookies
Files
Session
Server
Response
No data.
No data.
No data.
No data.
No data.
REDIRECT_HATHOORA_ENV
prod
REDIRECT_STATUS
200
HATHOORA_ENV
prod
HTTP_HOST
hathoora.org
HTTP_X_FORWARDED_FOR
34.228.41.66
HTTP_X_REAL_IP
34.228.41.66
HTTP_CONNECTION
close
HTTP_USER_AGENT
CCBot/2.0 (https://commoncrawl.org/faq/)
HTTP_ACCEPT
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
HTTP_IF_MODIFIED_SINCE
Tue, 23 Oct 2018 10:30:29 GMT
HTTP_ACCEPT_ENCODING
gzip
PATH
/sbin:/usr/sbin:/bin:/usr/bin
SERVER_SIGNATURE
Apache/2.2.15 (CentOS) Server at hathoora.org Port 80
SERVER_SOFTWARE
Apache/2.2.15 (CentOS)
SERVER_NAME
hathoora.org
SERVER_ADDR
192.168.1.11
SERVER_PORT
80
REMOTE_ADDR
207.126.164.119
DOCUMENT_ROOT
/var/websites/hathoora.org/docroot
SERVER_ADMIN
webmaster@hathoora.org
SCRIPT_FILENAME
/var/websites/hathoora.org/docroot/index.php
REMOTE_PORT
43936
REDIRECT_URL
/admin/translation/example
GATEWAY_INTERFACE
CGI/1.1
SERVER_PROTOCOL
HTTP/1.0
REQUEST_METHOD
GET
QUERY_STRING
REQUEST_URI
/admin/translation/example
SCRIPT_NAME
/index.php
PHP_SELF
/index.php
REQUEST_TIME_FLOAT
1544660528.974
REQUEST_TIME
1544660528
Status: 200
Headers:
Content-Type
text/html; charset=UTF-8
Configutation
Key Value
app.admin
Array
(
    [pattern] => /admin(|/)
    [directory] => hathoora
    [namespace] => hathoora\admin
)
app.docs
Array
(
    [pattern] => /docs(|/)
    [directory] => hathoora
    [dispatcher] => Array
        (
            [class] => customDispatcher
            [method] => dispatch
        )

)
app.site
Array
(
    [default] => 1
)
hathoora.logger
Array
(
    [profiling] => Array
        (
            [enabled] => 1
        )

    [logging] => Array
        (
            [enabled] => 1
            [level] => DEBUG
        )

    [webprofiler] => Array
        (
            [enabled] => 1
            [system] => 
            [show_redirects] => 
        )

)
hathoora.template
Array
(
    [engine] => Array
        (
            [name] => Stuob
        )

)
hathoora.database
Array
(
    [default] => mysql://dbuser:dbpassword@dbhost:3306/dbname
)
hathoora.translation
Array
(
    [enabled] => 1
    [cache_service] => @cache@
    [cache_time] => 86400
    [dsn] => default
    [show_empty] => 1
    [languages] => Array
        (
            [0] => en_US
            [1] => fr_FR
        )

    [default_language] => en_US
    [debug] => Array
        (
            [method] => GET
            [parameter] => tkDebug
        )

)
hathoora.detokenizerFilters
Array
(
    [0] => hathoora\admin\helper\translationFilter
)
hathoora.cache
Array
(
    [pools] => Array
        (
            [common] => Array
                (
                    [driver] => memcache
                    [servers] => Array
                        (
                            [0] => Array
                                (
                                    [host] => localhost
                                    [port] => 11211
                                )

                        )

                )

        )

)
services.cache_base
Array
(
    [class] => \hathoora\cache\cache
    [calls] => Array
        (
            [setContainer] => Array
                (
                    [0] => @container@
                )

        )

    [type] => static
)
services.cache
Array
(
    [factory_service] => @cache_base@
    [factory_method] => pool
    [factory_method_args] => Array
        (
            [0] => common
        )

)
services.container
Array
(
    [class] => \hathoora\container
    [method] => getContainer
)
services.translation
Array
(
    [class] => \hathoora\translation\translator
    [type] => static
    [calls] => Array
        (
            [setTKConfig] => Array
                (
                    [0] => %hathoora.translation%
                )

            [setCacheService] => Array
                (
                    [0] => %hathoora.translation.cache_service%
                )

        )

)
Logging (18)
hathoora.logger.logging.enabled: 1
# Time (msec) Level Memory (KB) Message
1 4.285 DEBUG 320.98 Configuration loaded:
Array
(
    [0] => app_prod.yml
    [1] => config_prod.yml
    [2] => config_prod.yml
)
2 4.368 DEBUG 320.77 Configuration loaded:
Array
(
    [0] => app_prod.yml
    [1] => config_prod.yml
    [2] => config_prod.yml
)
3 4.496 DEBUG 322.65 Service "translation" has been added because of hathoora.translation.enabled.
4 4.694 DEBUG 335.42 Listener "kernel.terminate[webprofiler]" has been added because of hathoora.logger.webprofiler.enabled
5 4.856 DEBUG 338.81 Event kernel.ready has been registered.
6 5.213 DEBUG 372.91 Event kernel.route has been registered.
7 5.338 DEBUG 382.08 Event kernel.controller has been registered.
8 5.384 DEBUG 383.01 Calling controller (\hathoora\admin\controller\translationController::example) with following params
Array
(
)
9 6.722 INFO 497.70 CACHE (pool = common) get: translation:key:hathoora_hello_world:en_US, status: 1
10 7.146 INFO 505.38 CACHE (pool = common) get: translation:route:hathoora_translation_route:en_US, status: 1
11 7.782 INFO 591.21 Template (components/leftPanel.tpl.php) loaded
12 8.104 INFO 592.67 CACHE (pool = common) get: translation:key:hathoora_hello_world_filter:en_US, status: 1
13 8.597 INFO 605.61 Template (/var/websites/hathoora.org/app/hathoora/docs//resources/templates/components/htmlMeta.tpl.php) loaded
14 8.732 INFO 606.80 Template (/var/websites/hathoora.org/app/hathoora/docs//resources/templates/components/flashMessages.tpl.php) loaded
15 9.830 INFO 561.46 Template (translation/example.tpl.php) fetched.
16 9.891 DEBUG 560.88 Event kernel.response has been registered.
17 9.932 DEBUG 562.07 Event kernel.terminate has been registered.
18 10.074 DEBUG 565.41 Event kernel.terminate->webprofiler has been notified.
Profiling
cache
template
# Time (msec) Pool Method Key Status Took (msec)
1 6.355 common get translation:key:hathoora_hello_world:en_US 1 0.195
2 6.945 common get translation:route:hathoora_translation_route:en_US 1 0.125
3 7.914 common get translation:key:hathoora_hello_world_filter:en_US 1 0.115
# Time (msec) Name Cached Took (msec)
1 7.306 translation/example.tpl.php 0 2.472