Мультиязычность: Zend_Translate vs Gettext

в 9:01, , рубрики: php, Zend Framework, Веб-разработка, метки:

У многих рано или поздно возникает необходимость в обеспечении мультиязычности своих веб-приложений. Не будем сегодня прибегать к обзору всего разнообразия возможных решений, а остановимся на довольно узконаправленном сравнении обеспечения мультиязычности при помощи пакета Zend_Translate и библиотеки Gettext.

Итак проведем мини-эксперимент, чтобы сравнить в этих двух реализациях быстродействие и количество занимаемой памяти при выполнении скриптов.

Для этого напишем два простеньких скрипта:
test_gettext.php

<?php
$mem_start = memory_get_usage();
$start = microtime(true);
 
define('APP_PATH', realpath(dirname(__FILE__)));
$locale =  'ru'; // default language
setlocale (LC_ALL,"ru_RU"); 
bindtextdomain ('messages', APP_PATH . "/lang");
textdomain ('messages');
bind_textdomain_codeset( 'messages', 'UTF-8' );
 
echo _("Hello world")."<br>";
 
echo memory_get_usage() - $mem_start;
echo '<br>';
echo  microtime(true) - $start;
 

test_zendtranslate.php

<?php
$mem_start = memory_get_usage();
$start = microtime(true);
 
define('APP_PATH', realpath(dirname(__FILE__)));
define('APP_LANG', APP_PATH . '/lang');
require_once 'Zend/Translate.php';
 
$locale = 'ru'; // default language
$translate = new Zend_Translate( array( 'adapter' => 'csv', 'content' => APP_LANG, 'scan' => Zend_Translate::LOCALE_DIRECTORY ) );
$translate->setlocale ($locale); 
 
echo _("Hello world")."<br>";
 
echo memory_get_usage() - $mem_start;
echo '<br>';
echo  microtime(true) - $start;
 

Да да это простенькие скрипты с выводом перевода пресловутого Hello world. Описывать куда положить файлы перевод не буду — это в задачу нашего мини-эксперимента не входит.

И вот результаты
gettext

Привет мир
688
0,000323057174683

zend_translate

Привет мир
1021536
0.0118551254272

Как видим разница по времени выполнения приблизительно в 100 раз, разница в количестве потреблямой памяти при выполнении скрипта приблизительно в 1500 раз в пользу gettext.

Cпасибо за внимание, буду рад вашим комментариям.

Автор: semaster

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js