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: 10/23/18 10:30:29
                    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.37 msec
Page Memory:   644.19k
admin / translationController / example (200)
Request UUID: 5bcef8452e68e6.49026920
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
54.162.133.222
HTTP_X_REAL_IP
54.162.133.222
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_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
56614
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
1540290629.189
REQUEST_TIME
1540290629
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.329 DEBUG 320.59 Configuration loaded:
Array
(
    [0] => app_prod.yml
    [1] => config_prod.yml
    [2] => config_prod.yml
)
2 4.414 DEBUG 320.37 Configuration loaded:
Array
(
    [0] => app_prod.yml
    [1] => config_prod.yml
    [2] => config_prod.yml
)
3 4.550 DEBUG 322.25 Service "translation" has been added because of hathoora.translation.enabled.
4 4.755 DEBUG 335.02 Listener "kernel.terminate[webprofiler]" has been added because of hathoora.logger.webprofiler.enabled
5 4.913 DEBUG 338.41 Event kernel.ready has been registered.
6 5.277 DEBUG 372.51 Event kernel.route has been registered.
7 5.410 DEBUG 381.68 Event kernel.controller has been registered.
8 5.455 DEBUG 382.61 Calling controller (\hathoora\admin\controller\translationController::example) with following params
Array
(
)
9 6.842 INFO 497.20 CACHE (pool = common) get: translation:key:hathoora_hello_world:en_US, status: 1
10 7.286 INFO 504.87 CACHE (pool = common) get: translation:route:hathoora_translation_route:en_US, status: 1
11 7.957 INFO 590.70 Template (components/leftPanel.tpl.php) loaded
12 8.285 INFO 592.16 CACHE (pool = common) get: translation:key:hathoora_hello_world_filter:en_US, status: 1
13 8.763 INFO 605.10 Template (/var/websites/hathoora.org/app/hathoora/docs//resources/templates/components/htmlMeta.tpl.php) loaded
14 8.897 INFO 606.29 Template (/var/websites/hathoora.org/app/hathoora/docs//resources/templates/components/flashMessages.tpl.php) loaded
15 10.005 INFO 560.95 Template (translation/example.tpl.php) fetched.
16 10.075 DEBUG 560.38 Event kernel.response has been registered.
17 10.117 DEBUG 561.56 Event kernel.terminate has been registered.
18 10.240 DEBUG 564.91 Event kernel.terminate->webprofiler has been notified.
Profiling
cache
template
# Time (msec) Pool Method Key Status Took (msec)
1 6.472 common get translation:key:hathoora_hello_world:en_US 1 0.190
2 7.091 common get translation:route:hathoora_translation_route:en_US 1 0.119
3 8.098 common get translation:key:hathoora_hello_world_filter:en_US 1 0.111
# Time (msec) Name Cached Took (msec)
1 7.455 translation/example.tpl.php 0 2.498