Как сделать сайт с красивыми URL с i18n? - PullRequest
0 голосов
/ 23 ноября 2018

Прежде всего, я прочитал этот вопрос, который мне показался соответствующим решению моей проблемы, но я не понимаю его после нескольких перечитываний и тестов: https://github.com/i18next/react-i18next/issues/325 (возможно, потому что я не использую реагировать)

Я также пробовал это (с .htaccess): https://github.com/i18next/i18next/issues/144

Но это выдает ошибку 404.

Я недавно пытался создать сайт с i18next, которыйработает нормально, но я хотел бы иметь возможность добавлять более приятные URL с кодами стран.


Пример вместо (который изменяет язык):

https://www.mywebsite.com/index.html?lng=fr-BE

this

https://www.mywebsite.com/fr-BE


Зная, что я не могу использовать внутренний язык, такой как PHP и т. д., что я использую веб-сервер Apache и что я использую толькоi18следующий с jquery.i18следующий.

Чтобы немного подробнее описать мою проблему, как я могу быть уверен, что когда пользователь заходит на любую страницу, он добавляет код страны?Что, если в URL-адресе уже указан код страны, измените язык пользователя?

И, прежде всего, возможно ли это?

Спасибо, что прочитали мою проблему и надеетесь, что вы сможете мне помочьс моей проблемой.:)

PS: Пожалуйста, извините за мой английский

1 Ответ

0 голосов
/ 25 ноября 2018

Вполне возможно.

Итак, сначала в вашем файле .htaccess вы бы хотели что-то вроде этого:

RewriteEngine On
RewriteRule ^(\w+)\/?([\w\-]+)?$ $1.html?lng=$2

Это переписало бы URL-адрес в форме

www.example.com / index / fr-BE до www.example.com / index.html? lng = fr-BE

Так что я использую этот подход, потому что выВозможно, вы захотите считать языковой параметр необязательным и установить для него значение по умолчанию.И это правило также перенаправит

www.example.com / some_pag e на www.example.com / some_page.html

Вот такс дружественными URL.Теперь о части получения параметра языка из строки запроса.Без использования серверного языка (например, PHP) вы не можете использовать значение из параметра 'lng', но, следуя указаниям из здесь , вы можете использовать window.location.pathname для получения языковой строки, когда она присутствует,

Таким образом, для URL-адреса вида www.example.com / index / fr-BE вы можете использовать следующий код:

let params = window.location.pathname.split('/').slice(1);

if(typeof params[1] !== 'undefined') {
    console.log(params[1]); // <-- should be 'fr-BE'
    i18next.setLng(params[1]);
}

Надеюсь, что этопомогает.

...