Это не соответствует (отредактированному) критерию исходного вопроса, но может быть полезно независимо.
Использовать серверный скрипт. То, что вы ищете, может быть легко сделано в PHP. Вы, вероятно, захотите иерархию документов, основанную на языке, и посмотрите на это. Например, дерево каталогов:
/en/
/en/page1.html
/en/page2.html
/es/
/es/page1.html
/es/page2.html
В PHP это так же просто, как
$language = $_GET['lang'];
$page = $_GET['page'];
include($language . '/' . $page);
// URL is: /whatever.php?lang=LANGUAGE_HERE&page=PAGE_HERE
Однако, у этого есть много проблем безопасности наряду с этим. Очистите введенные данные и убедитесь, что каталог и файл существуют. Более полный пример:
$contentRoot = './'; // CHANGE ME. Do include trailing /.
$defaultLanguage = 'en'; // CHANGE ME.
$defaultPage = 'home'; // CHANGE ME.
if(isset($_GET['lang']))
$language = $_GET['lang'];
else
$language = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 2);
if(isset($_GET['page']))
$page = $_GET['page'];
else
$page = $defaultPage;
$languageDir = basename($_GET['lang']) . '/';
$pageFile = basename($page) . '.html';
if(!file_exists($contentRoot . $languageDir) || !is_dir($contentRoot . $languageDir))
$languageDir = $defaultLanguage;
$fullFileName = $contentRoot . $languageDir . $pageFile;
if(!file_exists($fullFileName) || !is_file($fullFileName) || !is_readable($fullFileName))
$pageFile = $defaultPage;
readfile($fullFileName);
// Or, if you want to parse PHP in the file:
include($fullFileName);
Вы также можете использовать mod_rewrite
(Apache), чтобы разрешить URL, такие как http://www.mysite.com/en/page1
. (Только убедитесь, что скрыли фактическую страницу.)
// TODO mode_rewrite rules
Другой подход заключается в размещении вышеуказанной иерархии в корне документа и раздаче URL-адресов напрямую. Это, однако, дает вам меньше возможностей (например, создавать шаблоны сложнее), и вам нужно беспокоиться о том, чтобы на внешние носители ссылались должным образом.
Если вы ищете динамический подход, на стороне клиента используйте Javascript для извлечения данных с использованием Ajax. Это также тривиально и не требует динамической серверной части. Я рекомендую Javascript Framework, такой как jQuery, чтобы сделать это как можно проще.