Интернационализация для навигации с Codeigniter - PullRequest
1 голос
/ 14 мая 2011

Я пытаюсь найти лучший способ структурирования многоязычной навигации по сайту.

Мне известен языковой класс в CI, но он больше подходит для определения случайных слов и строк текста, которые обычно используются на сайте. Похоже, что создание файлов lang для каждого языка, а затем определение переводов всех ссылок кажется стандартным подходом?

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

class Link{
 var $name = array();   
 var $url; 
 var $links = array(); 

function add_link($links){ 
 $this->links[] = $links;
 }
}

$all_sections = array();

$section                = new Link();
$section->name['en']    = "Home";
$section->name['fr']]    = "Uberdurky";
$section->url           = "/";

$sub_section                = new Link();
$sub_section->name['en']    = "About Acme Ltd";
$sub_section->name['fr']    = "Fabuka Acme Ltd";
$sub_section->url           = "/about/";
$section->add_link($sub_section); 

Затем у меня есть функция для циклического просмотра и вывода nav, который просто смотрит на текущее имя [Lang], как определено сессией или URL

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

Ответы [ 2 ]

1 голос
/ 15 мая 2011

Важно то, что это работает для вас . Использование отдельных языковых файлов дает множество преимуществ:

  • Чистое разделение
  • загружайте только то, что вам нужно
  • Легко отслеживать, какие языки доступны
  • Возможность позволить другим легко переводить файлы

Я не вижу ничего неправильно в том, как вы это делаете, но если вы хотите оптимизировать - не пытайтесь определить все различные языковые строки. Вам не нужно определять французскую версию, если язык английский. Используйте только те, которые вам нужны, вам не нужно передавать весь массив в add_link(), класс Link должен определять язык и загружать только соответствующий массив ...

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

Пока у вас есть только французский и английский. Я предполагаю, что вы знаете оба языка, и (Uberdurky?) - единственный, кто работает над этим аспектом, поэтому вам будет проще определить их как "встроенные". Что происходит, когда вы хотите поддерживать 3, 4 или 10 языков? Вещи быстро станут неорганизованными и захламленными.

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

Еще раз, это ваш звонок. Делайте то, что лучше для вас, сейчас, а потом оптимизируйте.

0 голосов
/ 13 июля 2013

Это может быть полезно для всех, кто сталкивался с этим вопросом. https://github.com/cflynn07/CodeIgniterInternationalizationUtility

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...