2013-11-01 4 views
1

Как удалить упаковку автоматической метки, которая предназначена для lang() в Codeigniter.Удалить обломок этикетки Codeigniter lang()

Руководство ничего об этом не говорят: http://ellislab.com/codeigniter%20/user-guide/helpers/language_helper.html

Должен ли я написать функцию самостоятельно или есть простой чистый способ, что Im недостающее?

+0

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

ответ

0

Не записывайте второй параметр. Держите его пустым.

0

Посмотрите на функцию Ланг (найденную в: /system/helpers/language_helper.php):

function lang($line, $for = '', $attributes = array()) 
    { 
      $CI =& get_instance(); 
      $line = $CI->lang->line($line); 

      if ($for !== '') 
      { 
        $line = '<label for="'.$for.'"'._stringify_attributes($attributes).'>'.$line.'</label>'; 
      } 

      return $line; 
    } 

Как вы можете видеть, что принимает 3 параметра. Первый параметр требуется, но два вторых являются необязательными. Если вы укажете второй параметр, он вернет строку языка, завернутую в метку.

Таким образом, указывая только на первый параметр, он должен выводить только строку языка.


UPDATE:

Прочитав ваш комментарий это звучит, как вы бы лучше использовать language class непосредственно. Однако одного языкового класса недостаточно, вам нужно будет расширить его для своей цели. Для этого вы можете создать новый файл в папке application/core с именем MY_lang.php.

class MY_Lang extends CI_Lang { 

    // You want to extend the line function 
    function line($line = '', $value = '') 
    { 
      $line = ($line == '' OR ! isset($this->language[$line])) ? FALSE : $this->language[$line]; 

      // We can assume that if a value is passed it is intended to be inserted into the language string 
      if($value) { 
        $line = sprintf($line, $value); 
      } 

      // Because killer robots like unicorns! 
      if ($line === FALSE) 
      { 
        log_message('error', 'Could not find the language line "'.$line.'"'); 
      } 

      return $line ; 
    } 
} 

Предположим, что ваш языковой файл имеет строку следующим образом:

$lang['welcome_text'] = "Welcome %s"; 

Вы могли бы использовать это, загружая класс языка, и, используя следующий код:

$name = "foo"; 
$this->lang->line('welcome_text', $name); 

выше 100% непроверено, поэтому может потребоваться некоторое подталкивание, но оно должно дать вам возможность начать с нуля.

+0

Спасибо за ответ. Дело в том, что мне нужно добавить вторую, потому что Im использует следующий тип «Welcome% s», где% s - динамическое значение для имени. И код, как 'lang ('welcome_text', $ name);' Мой лучший вариант - пойти с пользовательской функцией? – JohnSmith

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