We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 36461
    • 102 Posts
    I followed this tutorial for multi language implementation - http://designfromwithin.com/995/modx-multilingual-setting-up-babel/

    I carefully followed every step of this tutorial and did the following,

    1. Made necessary changes to .htaccess
    2. Created "gateway" plugin as described in tutorial
    3. Created 2 new contexts - English and Russian.

    These are settings for contexts:

    web
    Base URL
    Key: base_url
    Name: Base URL
    Area Lexicon Entry: language
    Value: /
    Culture key
    Key: cultureKey
    Name: Culture key
    Area Lexicon Entry: language
    Value: lv
    Site start
    Key: site_start
    Name: Site start
    Area Lexicon Entry: language
    Value: 1
    Site URL
    Key: site_url
    Name: Site URL
    Area Lexicon Entry: language
    Value: http://www.site.com/

    English
    Key: base_url
    Name: Base URL
    Area Lexicon Entry: language
    Value: /en
    Culture key
    Key: cultureKey
    Name: Culture key
    Area Lexicon Entry: language
    Value: en
    Site start
    Key: site_start
    Name: Site start
    Area Lexicon Entry: language
    Value: 12
    Site URL
    Key: site_url
    Name: Site URL
    Area Lexicon Entry: language
    Value: http://www.site.com/en

    Russian
    Key: base_url
    Name: Base URL
    Area Lexicon Entry: language
    Value: /ru
    Culture key
    Key: cultureKey
    Name: Culture key
    Area Lexicon Entry: language
    Value: ru
    Site start
    Key: site_start
    Name: Site start
    Area Lexicon Entry: language
    Value: 12
    Site URL
    Key: site_url
    Name: Site URL
    Area Lexicon Entry: language
    Value: http://www.site.com/ru

    After this I wanted to check out how site works so I typed in url, but site automatically gets redirected to site.com/en and page with id 12 gets opened. Although page with id 1 is set to default in modx settings and in context settings.

    Gateway plugin:
    <?php
    //make sure the plugin does not run on the mgr context (the manager)  
            if ( $modx->context->get( 'key' ) != 'mgr') {  
                /**  
                * grab the current context from the request "c" parameter (or context_param_alias from system settings)  
                * the alternative .htaccess friendly URL rewrite rule must be activated  
                */  
                $cntxt_param = $modx->getOption('context_param_alias', null, 'cultureKey');  
                if ( isset( $_REQUEST[$cntxt_param] ) && $_REQUEST[$cntxt_param] != '' ) {  
                    switch ( $_REQUEST[$cntxt_param] ) {  
          
                        case 'en':  
                        $modx->switchContext('English');  
                        break;  
          
                        case 'ru':  
                        $modx->switchContext('Russian');  
                        break;  
          
                        default:  
                        // nothing because web is default  
                        break;  
                    }  
                }  
            }


    .htaccess
    # MODX supports Friendly URLs via this .htaccess file. You must serve web
    # pages via Apache with mod_rewrite to use this functionality, and you must
    # change the file name from ht.access to .htaccess.
    #
    # Make sure RewriteBase points to the directory where you installed MODX.
    # E.g., "/modx" if your installation is in a "modx" subdirectory.
    #
    # You may choose to make your URLs non-case-sensitive by adding a NC directive
    # to your rule: RewriteRule ^(.*)$ index.php?q=$1 [L,QSA,NC]
    
    RewriteEngine On
    RewriteBase /
    
    
    
    # Rewrite www.domain.com -> domain.com -- used with SEO Strict URLs plugin
    # RewriteCond %{HTTP_HOST} .
    # RewriteCond %{HTTP_HOST} !^mysite\.com [NC]
    # RewriteRule (.*) http://mysite.com/$1 [R=301,L]
    #
    # or for the opposite domain.com -> www.domain.com use the following
    # DO NOT USE BOTH
    #
    #RewriteCond %{HTTP_HOST} .
    #RewriteCond %{HTTP_HOST} !^www\.example-domain-please-change\.com [NC]
    #RewriteRule (.*) http://www.example-domain-please-change.com/$1 [R=301,L]
    
    
    
    # Rewrite secure requests properly to prevent SSL cert warnings, e.g. prevent 
    # https://www.domain.com when your cert only allows https://secure.domain.com
    #RewriteCond %{SERVER_PORT} !^443
    #RewriteRule (.*) https://example-domain-please-change.com.com/$1 [R=301,L]
    
    
    
    # The Friendly URLs part  
    # detect language when requesting the root (/)  
    RewriteCond %{HTTP:Accept-Language} !^(lv|en|ru) [NC]  
    RewriteRule ^$ lv/ [R=301,L]
    RewriteRule ^$ en/ [R=301,L]  
    RewriteRule ^$ ru/ [R=301,L]  
      
    # Rewrite www.domain.com -> domain.com -- used with SEO Strict URLs plugin  
    RewriteCond %{HTTP_HOST} .  
    RewriteCond %{HTTP_HOST} !^mysite\.com [NC]  
    RewriteRule (.*) http://mysite.com/$1 [R=301,L]  
      
    # redirect all requests to /en/favicon.ico and /ru/favicon.ico  
    # to /favicon.ico  
    RewriteCond %{REQUEST_FILENAME} !-d  
    RewriteCond %{REQUEST_FILENAME} !-f  
    RewriteRule ^(lv|en|ru)/favicon.ico$ favicon.ico [L,QSA]  
      
    # redirect all requests to /en/assets* and /ru/assets* to /assets*  
    RewriteCond %{REQUEST_FILENAME} !-d  
    RewriteCond %{REQUEST_FILENAME} !-f  
    RewriteRule ^(lv|en|ru)/assets(.*)$ assets$2 [L,QSA]  
      
    # redirect all other requests to /en/* and /ru/*  
    # to index.php and set the cultureKey parameter  
    RewriteCond %{REQUEST_FILENAME} !-f  
    RewriteCond %{REQUEST_FILENAME} !-d  
    RewriteRule ^(lv|en|ru)?/?(.*)$ index.php?cultureKey=$1&q=$2 [L,QSA]
    
    
    
    # Make sure .htc files are served with the proper MIME type, which is critical
    # for XP SP2. Un-comment if your host allows htaccess MIME type overrides.
    
    #AddType text/x-component .htc
    
    
    
    # If your server is not already configured as such, the following directive
    # should be uncommented in order to set PHP's register_globals option to OFF.
    # This closes a major security hole that is abused by most XSS (cross-site
    # scripting) attacks. For more information: http://php.net/register_globals
    #
    # To verify that this option has been set to OFF, open the Manager and choose
    # Reports -> System Info and then click the phpinfo() link. Do a Find on Page
    # for "register_globals". The Local Value should be OFF. If the Master Value
    # is OFF then you do not need this directive here.
    #
    # IF REGISTER_GLOBALS DIRECTIVE CAUSES 500 INTERNAL SERVER ERRORS :
    #
    # Your server does not allow PHP directives to be set via .htaccess. In that
    # case you must make this change in your php.ini file instead. If you are
    # using a commercial web host, contact the administrators for assistance in
    # doing this. Not all servers allow local php.ini files, and they should
    # include all PHP configurations (not just this one), or you will effectively
    # reset everything to PHP defaults. Consult www.php.net for more detailed
    # information about setting PHP directives.
    
    #php_flag register_globals Off
    
    
    
    # For servers that support output compression, you should pick up a bit of
    # speed by un-commenting the following lines.
    
    #php_flag zlib.output_compression On
    #php_value zlib.output_compression_level 5
    
    
    
    # The following directives stop screen flicker in IE on CSS rollovers. If
    # needed, un-comment the following rules. When they're in place, you may have
    # to do a force-refresh in order to see changes in your designs.
    
    #ExpiresActive On
    #ExpiresByType image/gif A2592000
    #ExpiresByType image/jpeg A2592000
    #ExpiresByType image/png A2592000
    #BrowserMatch "MSIE" brokenvary=1
    #BrowserMatch "Mozilla/4.[0-9]{2}" brokenvary=1
    #BrowserMatch "Opera" !brokenvary
    #SetEnvIf brokenvary 1 force-no-vary
    
    [ed. note: viltnieks last edited this post 12 years, 7 months ago.]
      • 36461
      • 102 Posts
      Maybe there are other, easy methods how to do this ?

      I've been searching web and modx forums, but those methods seemed much harder.
        • 37073
        • 12 Posts
        Viltnieks,

        were you able to resolve?

        Another thing i was trying to find is how to get automatic translation of site made already in english. Is that possible?

        Thnx
          • 36613
          • 328 Posts
          I have the problem with the path of image nel tinymce. When add an image add /en or /ru or /it alter directory images.
          Example:
          image is in:
          /images
          modx revo add en/images.
            • 36613
            • 328 Posts
            I have the problem with the path of image nel tinymce. When add an image add /en or /ru or /it alter directory images.
            Example:
            image is in:
            /images
            modx revo add en/images.
            • Hi,
              as regards resources you can add some directive in htaccess, i.e. if you want images correctly displayed you can add these lines to your htaccess:

              RewriteCond %{REQUEST_FILENAME} !-d
              RewriteCond %{REQUEST_FILENAME} !-f
              RewriteRule ^(fr|it|en)/images(.*)$ images$2 [L,QSA]


              While I have the same problem of viltnieks, when I open http://www.mysite.com automatically it goes to http://www.mysite.com/en that is not the starting resource...
              how did you solve it?
                TilliLab | MODX Ambassador
                website