Передать JSON с php на javascript

Я хочу локализовать мой webapp. Поскольку локализация через javascript мне не рекомендуется, я думал, что использование php будет альтернативой.

Поэтому с php я читаю файл messages.json котором хранятся все данные локализации.

 $json = file_get_contents("_locales/en/messages.json"); 

В заголовке моего webapp я генерирую javascript с php в соответствии с языком браузера пользователя.

 echo "var localeObj = " . $json . ";"; 

Таким образом, это просто var, который содержит все данные из файла m essages.json который выглядит так

 { "extTitle": { "message": "Test1" }, "extName":{ "message": "Test2" } } 

Теперь я хочу иметь доступ к каждому элементу из json

 var title = getItem("extTitle"); 

и он возвращает Test1 . Любая идея, как это сделать?

Я не очень знаком с json, но если я просто предупреждаю localeObj он дает мне просто [object Object].

 var getItem = function(item) { return localObj[item].message; }; 

Вы всегда можете инкапсулировать свои строки i18n …

 (function() { var localObj = { ... }; window.getItem = function(item) { return localObj[item].message; }; })(); 

Таким образом, никакие другие переменные не могут localObj ваш localObj .

Вы используете синтаксис синтаксиса [] или синтаксис точки . , чтобы получить доступ к свойствам объекта javascript.

Пример:

 localeObj["extTitle"]; localeObj.extTitle; 

Я бы рекомендовал прочитать что-то подобное, чтобы стать более знакомым с JSON.

Вы можете инициализировать переменную javascript, как это.

 var json = eval(<? echo $json ?>); alert(json.extTitle.message+ ' '+json.extName.message); 

Внутри messages.php :

 <?php header('Content-type:application/javascript'); $messages = array( "yes"=>"hai", "no"=>"iie" ); $messages = json_encode($messages); echo "window.messages = $messages"; ?> 

Внутри index.html :

 <html> <body> <script type="text/javascript" src="messages.php"></script> <script type="text/javascript"> console.log(window.messages) </script> </body> </html> 

До тех пор, пока вы скажете браузеру интерпретировать файл php как файл javascript, вы можете повторить все, что захотите.