WordPress.org

Ready to get started?Download WordPress

Plugin Directory

!This plugin hasn't been updated in over 2 years. It may no longer be maintained or supported and may have compatibility issues when used with more recent versions of WordPress.

GTS Translation Plugin

This plugin is guaranteed to drive more international traffic to your site by providing high quality translation, and SEO of your translated content.

Uninstalling

Simply click the "Delete" link in the plugin management window. This will delete all of your translated data, so please be careful!

Virtual Host Setup

How to setup the Virtual Host feature on the GTS Plugin

By default, the translated versions of your website/blog resolves to a URL address which is a subdirectory of your site’s URL address. For example, the Spanish version of your site resolves to http://mywebsite.com/language/es.

With the GTS Translation Plugin Virtual Host feature you can publish translated versions of yor website/blog under a separate subdomain or top-level domain (TLD). So for example, if your blog is http://www.mywebsite.com you can serve the Spanish version from http://www.mywebsite.es. Alternately, you can use subdomains (e.g. es.mywebsite.com) so that you don't have to buy a domain for each language.

To implement the virtual hosts feature, follow these steps:

1. Configure DNS

For Top Level Domains:

  1. Register your new domain (e.g. http://www.mywebsite.es.) with a recognized domain registrar.
  2. In your DNS zone, set the A record for http://www.mywebsite.es to point to the IP address of your web server.

For Subdomains:

  1. Create a CNAME alias for your web server (e.g. es.mywebsite.com)

How to complete these steps will depend on your hosting provider. If you get stuck, please follow up with your support team.

2. Configure your Web Server

Please note that all of the translated blogs will be hosted from the same WordPress installation as your current blog.

For Hosted Blogs:

Your hosting provider will provide a control panel to map a hostname to a Document Root. For each translated host name, enter the exact same Document Root as your blog.

For Self-hosted Blogs:

These instructions are only valid for Apache. If you use IIS or another web server, please consult the relevant documentation.

First off, you need to be set up with Name Based Virtual Hosts (http://httpd.apache.org/docs/2.0/vhosts/name-based.html). Once you have your blog's virtual host set up, add the new hostname to the ServerAlias directive.

<VirtualHost *:80>

  ServerName     http://www.mywebsite.com
  ServerAlias    http://www.mywebsite.es
  DocumentRoot   /path/to/wordpress/install

  # Other configuration here...

</VirtualHost>

If you have multiple aliases, remember that the ServerAlias can be a list or can include wildcards…it can save time!

3. Configure the GTS Plugin

This is the easiest part:

  1. Go to the "GTS Settings" admin page.
  2. Enter the host name in the "Virtual Host" input next to the desired language.
  3. Click the "Save Changes" button.

Voila, translated links will point to your new host!

Security

While providing high quality translation with our crowdsourced post-editing functionality, it's of the utmost importance to ensure the security of your blog. We provide functionality that is out-of-band of the traditional WordPress publishing cycle. As such, our plugin adds a hook into your blog that allows GTS to programmatically update the translated content in your local WordPress database. We've put a lot of thought into ensuring that our system can use this hook while locking it against any potential malicious users.

The first step to securing our system is to make sure that it's really you and your blog requesting that your blog be signed up for translation. First, we only accept registration requests that originate from the WP admin page of the blog that will be translated. When the user clicks off of the admin page, a digital fingerprint is created and saved to your WP database, and then it's sent over an SSL-encrypted channel to our server. When the registration request reaches our server, we will open an HTTP connection back to the requesting blog and verify that a) it has our plugin installed, and b) using an encryption technique called hashing, that the fingerprint matches. If one of those checks fail, we won't register the blog for translation.

Now that we've verified the blog, we'll assign you a Blog ID and an API Access Key. These will be automatically added to your configuration panel via the registration panel, plus they will be sent to your administrator email address. We will use these two strings for identifying your blog and to ensure that information isn't tampered either en-route to us. It will also be used by your blog to verify that translated content posted back to your blog is legitimate. Again, we use an encryption technique called hashing. Whenever your blog sends a translation request to us or we send translated content back to you, we create a signature (or hash) of that content PLUS the API Access Key (if you're really interested in details, using the SHA-1 algorithm). Provided that the API Access Key is kept secret, this technique is extremely secure and resistant to tampering. The odds of a malicious person guessing your API key are astronomical : more than 1 in 10^229. However, as with any password, security depends on keeping it secret. If at any time, you think that your key has been compromised, GTS will deactivate the current key and issue you a new one.

Other measures we take to secure data coming back to your blog include using a whitelist of IP addresses that are allowed to use the hook for posting translated content and limiting the size of the post to ~250KB so that, even if all other measures fail, an attacker can't eat up all the memory on your machine.

We have dedicated lots of thought to locking down this system, and we are very confident that it's secure. After reading this, we hope you will be too!

Requires: 3.0 or higher
Compatible up to: 3.4.2
Last Updated: 2012-8-23
Downloads: 32,786

Ratings

3 stars
3.6 out of 5 stars

Support

Got something to say? Need help?

Compatibility

+
=
Not enough data

0 people say it works.
0 people say it's broken.

0,1,0
100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,2,2 100,2,2 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
67,3,2 100,2,2 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1
100,2,2 100,2,2 100,2,2
100,1,1 100,1,1
100,2,2
67,6,4
0,1,0 100,1,1
57,7,4
100,2,2 100,3,3
50,2,1 100,1,1
50,2,1
100,1,1
0,1,0