Я хочу локализовать мой 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, вы можете повторить все, что захотите.