Я занимаюсь разработкой базового веб-сайта с использованием встроенной в PHP поддержки gettex.Я не хочу использовать какие-либо компоненты внешних библиотек по разным причинам;во-первых, потому что я хочу практиковать методы, связанные с gettex, во-вторых, потому что сайт достаточно мал, чтобы не требовать ничего, кроме vanilla php, в-третьих, для производительности.Проблема, с которой я сейчас сталкиваюсь, связана с навигацией по сайту на языках, которые я уже локализовал.
Я начал с установки необходимой структуры каталогов:
locales/
- pt_BR/
- LC_MESSAGES
messages.mo
messages.po
- es_ES/
- ru/
Затем включил файл с кодом ниже вверху каждой страницы:
<?php
// use sessions
session_start();
// get language preference
if (isset($_GET["lang"])) {
$language = $_GET["lang"];
}
elseif (isset($_SESSION["lang"])) {
$language = $_SESSION["lang"];
}
else {
$language = "en_US";
}
// save language preference for future page requests
$language = $_SESSION["Language"];
$folder = "locale";
$domain = "messages";
$encoding = "UTF-8";
putenv("LANG=" . $language);
setlocale(LC_ALL, $language);
bindtextdomain($domain, $folder);
bind_textdomain_codeset($domain, $encoding);
textdomain($domain);
После настройки кода я добавил в мое .htaccess
простое правило не использовать строку запроса, а вместо этого простые коды локали:
RewriteEngine on
RewriteRule (.+/)?pt-br/? ?lang=pt_BR
Для домашней страницы в корневом каталоге сервера это сработалокак и ожидалось.Если я наберу URL-адрес, например mysite.test , он отобразит все на английском, а если я переключусь на mysite.test / pt-br , я получу все на бразильском португальском языке.Моя проблема в том, как я могу иметь другие страницы на сайте, чтобы сохранить этот шаблон?Например, если я введу mysite.test / pt-br / about , я получу ту же домашнюю страницу на бразильском португальском, а не страницу About (в равной степени ранее локализованную).
В моем понимании это происходит потому, что сервер ищет файл about.php внутри каталога pt-br , который, на самом деле, не существует, а затем восстанавливаетвернемся к правилу перезаписи, но ... я не думаю, что это так, и мне интересно, как все это делается, то есть создание структуры, где URL-адреса, такие как:
mysite.test/pt-br/about
mysite.test/es/about
mysite.test/ru/about
И то же самое для любой другой страницы.
Я не нашел ничего достаточно точного, кроме инструкций о том, как настроить структуру каталогов для работы gettex и использования разделов, чтобы сохранить выбор языка, но яЯ не уверен в реализации, поэтому любая помощь в поиске материала по этому вопросу будет очень признательна.