2013-05-23 4 views
0

Я пытаюсь добавить языковые переводы в мои js-файлы. Так что я добавил этот код в мой файл view.html.php в моем компоненте:TypeError: Joomla.JText._ не является функцией

JText::script('COM_TEST_ENTER_LABEL'); 

Если я смотрю на источник HTML теперь я вижу это:

<script type="text/javascript"> 
    (function() { 
     var strings = {"COM_TEST_ENTER_LABEL":"Enter a label"}; 
     if (typeof Joomla == 'undefined') { 
     Joomla = {}; 
     Joomla.JText = strings; 
     } 
     else { 
     Joomla.JText.load(strings); 
     } 
    })(); 
    </script> 

Теперь я пытаюсь добавить это мой JS файл:

alert(Joomla.JText._('COM_TEST_ENTER_LABEL')); 

Но я получаю сообщение об ошибке в поджигатель: TypeError: Joomla.JText._ is not a function

Я Wonde если это имеет какое-то отношение к jQuery. У меня есть куча JQuery скриптов в коде (view.html.php), которые добавляются после:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" type="text/javascript"></script> 
    <script src="https://ajax.aspnetcdn.com/ajax/jquery.migrate/jquery-migrate-1.1.1.min.js" type="text/javascript"></script> 
    <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js" type="text/javascript"></script> 
    <script src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/jquery.validate.min.js" type="text/javascript"></script> 
    <script src="/components/com_test/js/cam.js" type="text/javascript"></script> 
    <script src="/js/jquery.noconflict.js" type="text/javascript"></script> 

Если вы посмотрите на исходный код HTML это перед темJText::script материал. Не уверен, что это причина? Если я не уверен, что я могу с этим поделать? Joomla заказывает это самостоятельно, поскольку мой код попытался поставить его первым.

ответ

4

Joomla.JText._ является функцией на основе MooTools, так что вам нужно, чтобы MooTools загрузить в шаблон (если вы удаляете его, много людей делают).

+0

lol, по крайней мере, кто-то знает, о чем они говорят ;-) –

+0

Aha! Так оно и было. Благодарю. – Tom

1

Вы можете получить доступ к строкам, используя следующий код обозначения.

alert (Joomla.JText.strings.COM_TEST_ENTER_LABEL);

Это выглядит как строка COM_TEST_ENTER_LABEL в строковом свойстве свойства JText объекта Joomla.

Обратите внимание, что JText :: _ является функцией PHP.

Надежда, что помогает ..

+0

Я думал, что 'JText :: _' была функцией js, основанной на этом [статье] (http://www.joomla-wiki.de/dokumentation/Benutzer:Elkuku/Proyektz/EasyCreator/Language_handling/Javascript_translations)? Я попробовал, как вы предложили, но теперь я получаю 'TypeError: Joomla.JText.strings undefined' – Tom

+0

А, ладно. Я использовал ранее опубликованный код для доступа к строке таким образом, но не понимал, что вы могли бы сделать это и другими способами. Возможно, сценарии не загружаются в правильном порядке, как вы предлагаете. Какой код вы используете для загрузки сценария? Попробуйте что-то вроде: $ document-> addScript (JURI :: root(). "/components/com_test/js/cam.js",'text/javascript',true, false); Которая добавит отсрочку. Это отложит загрузку вашего скрипта. Это может сделать трюк ... –

+0

Ну, похоже, ни один из способов не работает для меня = \ Любые другие предложения? – Tom

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