2016-01-29 3 views
0

Я собираюсь внедрить языковую систему в свой проект codeigniter. (после этого урока: http://www.sitepoint.com/multi-language-support-in-codeigniter/), но я немного застрял в процессе мышления.Разработка языковой системы

Сайт будет содержать много текста, так что должно было бы быть много indivudual языковых файлов, таких как error_english.php, user_english.php и т.д ...

Но я задаюсь вопросом, является то, что правильный путь идти? Например, что, если у меня есть страница с различными языковыми файлами, загруженными в нее, потому что у нее много текста, и мне нужно загрузить одно слово, что-то вроде Firsname или что-то в этом роде.

Это означало бы, что мне пришлось бы загрузить user_english.php, в то время как это будет содержать, например, более 100 строк строк. Разве не было бы много загрузки из-за этого, всего за 1 слово? Было бы так много ненужных массивов.

Кто-нибудь знает хороший шаблон дизайна/маршрутизации, чтобы удержать время загрузки/производительность сервера, насколько это лучше?

+0

Можете ли вы упростить свой вопрос. Его неясно –

+0

Что мне интересно, что было бы лучшим способом создания веб-сайта на нескольких языках с текстами, определенными в массиве. Если у меня есть скрипт .php, полный массива для всех ошибок, и я должен загрузить его на странице, просто используя 1 из ошибок, он будет загружать много ненужных массивов. Каков наилучший дизайн для оптимальной языковой системы? – Raflesia

+0

вы можете назвать это с помощью id. Таким образом, вы получаете выход только с одним –

ответ

0

Языковые пакеты - это просто пары ключ-значение. да, вы загружаете тысячи строк, если это необходимо, и работает нормально. Один из способов уменьшить количество строк в очереди - это иметь разные файлы языковых пакетов для разных разделов сайта. , чтобы вы могли иметь файл ошибок и сделать:

$this->load->language('errors'); 

Но на самом деле это не делает практической разницы в скорости - это организационная вещь.

Я расширил мой, чтобы использовать замену поля. Языковые пакеты также предоставляют возможность отделить код от презентации - я всегда использую их в моделях, даже если я только пишу на английском языке, потому что он формирует разделение между логикой кода и выводами, что делает код более удобным для чтения.

так что если вы поставите это в своих помощниках:

function lang_sub($str, $params = '') 
{ 
    $CI = & get_instance(); 
    $return_string = $str; 
    if (array_key_exists($str, $CI->lang->language)) 
    { 
     // the str is a key. so it only is a one line substitution. 
     $return_string = $CI->lang->line($str); 
     if (is_array($params))// if a parameter array is sent, substitute the strings %s in order. 
     { 
      $return_string = vsprintf($r, $params); 
     } 
    } 
    return $return_string; 
} 

вы можете сделать что-то подобное в вашей записи языка:

$lang['login_message'] = "Welcome %s good to see you again! we as last saw your on %s."; 

и в модели может сделать что-то вроде:

$welcome_message = lang_sub('login_message',array($username,$last_seen)); 

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

удачи!

Смежные вопросы