We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 52032
    • 3 Posts
    Hello,

    I tried to set up a two language (en|de) website using Babel. As I am quite new to this, I tried to follow this tutorial: https://anyscreensize.com/blog/modx-multilingual

    Unfortunately I am running into a few problems. The english part of the website works perfectly. When I try to access myurl.com/de/site.html (via BabelLinks or directly), I am getting an empty/blank page (Firefox) or a server error 500 (Chrome).

    Edit:
    Here a few more information:
    My server logs the following error message:
    mod_fcgid: stderr: PHP Fatal error: Call to a member function get() on a non-object in /var/www/vhosts/myserverurl.net/httpdocs/core/model/modx/modrequest.class.php on line 192


    The line 192 in modrequest.class.php looks like this:
    $cacheKey = $this->modx->context->get('key') . "/resources/{$resourceId}";


    The $resourceId seems to be wrong as well (I am getting resource id 1, where I should get id 2), but the real problem producing the error is $this->modx->context->get('key').

    I set up the following context keys:
    Name: Website, Key: web
    base_url ——— /
    cultureKey ——— en
    site_start ——— 1
    site_url ——— myurl.com/
    
    Name: Deutsch, Key: de
    base_url ——— /de/
    cultureKey ——— de
    site_start ——— 2
    site_url ——— myurl.com/de/


    This is my .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} !^myurl\.com [NC]
    RewriteRule (.*) http://myurl.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/$1 [R=301,L]
    
    
    
    # The Friendly URLs part
    #RewriteCond %{REQUEST_FILENAME} !-f
    #RewriteCond %{REQUEST_FILENAME} !-d
    #RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
    
    # redirect all requests to /de/favicon.ico
    # to /favicon.ico
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(en|de)/favicon.ico$ favicon.ico [L,QSA]
    						  
    # redirect all requests to /de/assets* to /assets*
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(en|de)/assets(.*)$ assets$2 [L,QSA]
    						 
    # redirect all other requests to /de/*
    # to index.php and set the cultureKey parameter
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(en|de)?/?(.*)$ 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


    Let me know if you need more information to help me!

    Thanks a lot!

    This question has been answered by kgoedel. See the first response.

    [ed. note: kgoedel last edited this post 8 years, 1 month ago.]
    • discuss.answer
      • 52032
      • 3 Posts
      Ok, I solved it myself. It was a really stupid mistake in the gateway plugin. I had the wrong context name there.
      Sorry for the inconvenience.
      • That is why I prefer to use the XRouting plugin, and not have to deal with the .htaccess file at all. https://modx.today/posts/2015/05/using-xrouting-for-multilingual-websites-in-modx
          Studying MODX in the desert - http://sottwell.com
          Tips and Tricks from the MODX Forums and Slack Channels - http://modxcookbook.com
          Join the Slack Community - http://modx.org
          • 52032
          • 3 Posts
          Thanks! I'll have a look at XRouting, it actually looks good.
            • 51347
            • 82 Posts
            Thanks for this reason! I had the same mistake in the getaway plugin..