Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
MODX Cloud web rules example for Babel with two languages.In this example, German is the default language with resources in the 'web' context; English is the secondary language, set up in the 'en' context.This technique is based on the "SEO Friendly Multilingual Websites" article archived here: https://web.archive.org/web/20180927220103/http://w…
<?php
if($modx->context->get('key') != "mgr"){
/* grab the current langauge from the cultureKey request var */
switch ($_REQUEST['cultureKey']) {
case 'en':
/* switch the context */
$modx->switchContext('en');
break;
default:
/* Set the default context here */
$modx->switchContext('web');
break;
}
/* unset GET var to avoid
* appending cultureKey=xy to URLs by other components */
unset($_GET['cultureKey']);
}
site_url http://site.com/de/
base_url /de/
cultureKey de
--- also recommended to provide resource ids for the following settings
error_page (id)
site_start (id)
site_url http://site.com/en/
base_url /en/
cultureKey en
--- also recommended to provide resource ids for the following settings
error_page (id)
site_start (id)
set $lang de;
# choose the language that appears first in the accept_language header
if ($http_accept_language ~* "(de|en)") {
set $lang $1;
}
location ~ ^/$ {
rewrite ^ $lang/ redirect;
}
location ~ ^/(de|en) {
# redirect favicon.ico and assets/* requests to site root
rewrite ^/(de|en)/(favicon.ico|assets.*)$ /$2 redirect;
# main Babel rewrite
rewrite ^/(de|en)/(.*)$ /?cultureKey=$1&q=$2 break;
# MODX rewrite
try_files $uri $uri/ @modx-rewrite;
}
location / {
try_files $uri $uri/ @modx-rewrite;
}
@neehad

This comment has been minimized.

Copy link

commented Jan 3, 2018

Thank you. You made my day!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.