Home » Blog » New features » Handling Untranslated Content

Handling Untranslated Content

August 25th, 2011 by

Almost every multilingual site has some untranslated content. This has always been a problem when using WPML, as untranslated content doesn’t show up in other languages. Let’s see if we can do something about it.

WPML keeps strict separation between languages. Every post or page is unique in the database and includes content in its own language only.

When switching languages, WPML displays only content in that language.

This means that the site’s navigation will show only pages, categories and posts in the current language. If you switch to content in another language, the language switches and now you see the navigation in that language. Clicking on other links will lead you to content in the other language.

Different Languages for Content and Navigation is Problematic

Folks have asked us to allow showing content in one language but keep the navigation in another. This is super-problematic and we don’t see a way to do it.

It means hooking to a gazillion places and making WordPress think it’s on a different page than it actually is. It will add a huge amount of code and increase the number of database queries significantly.

Instead – Auto-Duplicate Untranslated Content

While we can’t show content in one language and navigation in another, we can certainly duplicate content to all languages. This is what I’m thinking about:

  • The Translation Dashboard screen will have a new button for duplicating content. Instead of just ‘send to translation‘, it will also have ‘duplicate content‘. This means that you can use all the filtering power of the Translation Dashboard to choose what you want to duplicate.
  • When you duplicate content, WPML will automatically adjust links in the duplicated posts and pages. This means that inline links will retain the current language.
  • WPML will show duplicate and translated content differently. This way, if you later decide to translate content that you duplicated, you can still locate it and send to translation.

We will also a way to tell WPML to auto-duplicate new or updated content. This will save you the hassle of going through the Translation Dashboard every time you create or change something.

Pros

There’s no performance penalty – all this operation is done in the WordPress Admin once, and not every time visitors come to your site. For me, this is the major advantage.

It will work – this change doesn’t require any additional filtering or hooking and is not sensitive to future changes in WordPress. It’s also theme-friendly.

It’s selective – you decide which content to duplicate and when.

Cons

It’s not a fully automated solution in the sense that you tell WPML to do it once and it just happens.

Duplicate content will sit in your database and increase its size (but it’s not as bad as it sounds). The WordPress revisions system takes far more memory than this and is not a big deal either.

What do you think?

This is a fairly big job and we’ve been hesitant about it. Now that we have more developers, we can tackle greater challenges.

Before we jump on this, I’d like to see what you’re thinking and make sure that we’re not forgetting anything. Leave your comments and lets see!

41 Responses to “Handling Untranslated Content”

  1. Andrea says:

    Please, jump! :)

  2. suzie says:

    This idea sounds great and could be really helpful for my site. Please definitely work on it.

  3. Dear friends,
    I was looking for a solution for this problem yesterday, and finally your staff member told me about this blog post. I’m happy that you’re aware of the problem and I hope that you’ll come out soon with the a solution. Since I’m not a programmer, I thought, that it shouldn’t be too complicated to change the “WPML-> Languages->Blog posts to display: All posts (display translation if it exists or posts in default language otherwise.)” option into a “display translation if exists or posts in ORIGINAL language otherwise” option. But since you say it is, I will be happy with your solution. I have just a little remark: WPML is multilingual, not bilingual, so please make the solution multiplying, not just duplicating the posts. I’m creating my second portal in four languages (the first was with typo3), and the multilingual part is by far the most challenging and laborious one. So I would like to thank you again for the good work and wish you good luck and high jumps onto this milestone of WPML.

    Cheers, Pascal

    • amir says:

      It’s easy to change the label of that control, but very complicated to actually make it work :-)

      Once we have this new option, we’ll probably discontinue the blog ‘all posts’ option, as it will become irrelevant.

      When I say ‘duplicate’, I mean copy to all languages, not necessarily to only one language.

  4. Matthias Krok says:

    Yes, please!

  5. bas says:

    In my opinion it’s a good thing to only show what’s translated in the chosen language. My English and Dutch content is always different and being local oriented the English is secondary – and less content.

  6. Baden says:

    Excellent! Please add this much-needed feature.

    You make a valid point. The revision system adds much more to the DB than this awesome idea of a duplication across all languages option ever would.

    The ability to have un-translated post types simply duplicated across all languages would be a huge help, and the best solution my my opinion for handeling mixed language content without dealing with crazy db calls and url rewrite trickery.

    Thank you WPML!

  7. Baden says:

    One more though: It would be very smart to allow the user to choose which post types should be duplicated. Not just default to duplicating all not-translated post types, as post types can be used as something other than a typical post/page content element.

  8. Zsolt says:

    I would like to ask you what impact is going to have the duplicate content in SEO point of view?

  9. Maciej says:

    Great idea! Pls go for it!

  10. David says:

    Yes ths would be great.

  11. Lars Koudal says:

    I would love to see WPML implement a solution for this problem, and I think you are on to the right track.

    Having digged in a bit deeper recently on a project I understand the complications you have to face, but I think you are the team to do it.

    I look forward to hearing more about what and when, it would be a perfect solution to a problem I am facing right now for a customer.

    Keep up the good work.

  12. Julian says:

    I vote absolutely, positively, definitely YES.

    Please.

    I have had to write small admin scripts to do this for me on client sites with 100’s if not 1000’s of items, some of which will never be translated but MUST show in the default language.

  13. Tom says:

    A very big +1 on this feature!

  14. Mario Berges says:

    Yes, please. If this feature is implemented, I will come back and use WPML. I stopped using it precisely because of this problem.

  15. Paul says:

    Just right now we need it very bad for our multilingual (4 lang.) multi-site network.
    One of the sections (blog) is important but contains only the content in native language. We don’t want to hide it, but to duplicate it manually every time for every language seems not to be the greatest solution.

    Thank you for your thoughts about this ‘problem’ and good luck!

    To buy your plug-in was one of the best decisions i’ve made so far.
    Your support and your big ambition make many people very happy. :)

  16. MediaPlexa says:

    We are running a website with 4 languages and it is really difficault to get everything translated wel

    We have a lot of problems with unussual non wordpress related strings

    • amir says:

      It would be best to open threads about specific issues in our forum and let our support people try to help you with them.

  17. Wally says:

    This feature is an important one, and it would be great to have.

  18. Livio says:

    the “duplicate content” button will have a very good impact on users around the world who also had the problem of functionality because translations ware not existent.
    Congrats for the WPML, is a realy great tool.

  19. John says:

    I was reading this thread but I’m a bit confused. I don’t have (yet) your plugin. I just wanted to confirm two things:

    1 – If I want to write a post let’s say in Polish, should I leave the content for English blank? And what happens when people switch from the Post in Polish to English? Will they get some kind of a message saying “This article is only available in [Name of the language]

    2- How will the translated browser url look like? Will it be http://www.example.com/pl

    Thank you.

    • amir says:

      This new functionality in WPML allows the same content to appear in several languages. Each language get its own URLs.

      • Hugo says:

        But don’t we have to do it manually in the “Translation management” page? Is there a way to do it automatic? Meaning, each time a post is insert is automatically duplicated.

        • Amir says:

          We don’t have something for that yet. It’s a sensible feature suggestion, but right now WPML doesn’t have GUI to automatically duplicate content. Besides the Translation Management screen, you will find a duplicate option when editing posts. There, you can indicate that you want to duplicate the current post to all, or certain languages. Once it’s duplicated, WPML will synchronize and update all languages when the original changes.

          • Hugo says:

            The thing is: the post are being written in the front end… So they have no translation (it uses the language that it’s written), but everything else in the website has translation. The automatic duplication will fit like a glove in this.

          • Hugo says:

            Amir, I’ve found the solution! Talking in the support forum with Brooks, and following some tips he gave me, I studied the function “ajax_calls” and saw how it deal with the data received. Here’s the code:I did this in the the function that creates the post in the front-end:

            // Include the class file
            include(ABSPATH.’/wp-content/plugins/sitepress-multilingual-cms/inc/translation-management/translation-management.class.php’);

            // Initialize the class
            $class = new TranslationManagement();

            // Call the function
            $class->ajax_calls(‘make_duplicates’, array(‘post_id’ => $post_id, ‘langs’ => $langs_codes));

            where $post_id is the post ID (obviously) and $langs_codes is a string with all language codes separated by comma (fr,en,it).

            It works perfectly :)

          • Mei Yin says:

            Is the automatic Content duplication suggested by Hugo implemented yet? I think this should be something really sensible as most site accepting member user submissions won’t have translate content but we all want to keep the default ocntent in all languages to avoid strange redirection, can we do that ourself by modifying code? But Hugo’s solution is for frontend submiision only right? Then are there ways to make it an option to all backend content, preferably by post type as well? e.g. For custom post type user_recipe is automatically duplicated no matter what? Really looking forward to your response, this is a problem I did’t use wmpl but this plugin is awesome apart from it.

            • Amir says:

              Not yet. It’s on our todo list, but we had to push ahead other issues for WordPress 3.6, in the last few weeks.

              We’re planning to do this in the WordPress admin, not via front-end translation.

  20. John says:

    I think I wasn’t clear (:

    I’m not interested in having English content on the Polish website. So, what happens when I only have content in Polish for a certain post?

    What will display there?

    Thanks

  21. Arjan says:

    Is this functionality already implemented? I can’t seem to find it..

    • Arjan says:

      Ah found it, however, I’d like to copy the taxonomies, I see this isn’t possible yet (I’m talking about 300+ taxonomies which need translations). Is there any way I can do this?

      • amir says:

        Taxonomies will be copied together with the posts that belong to them. If you don’t have any post that holds these taxonomy terms, create a dummy one. Include all the taxonomy with that post and duplicate it. Then, you can delete that post. That dummy post can start as draft too.

        • Edouard says:

          Hi,

          This is working for categories but not for tags.
          Running v2.4.2

          Any advise on batch duplicating all my tags from a language to another?

          Regards.
          Tazintosh.

  22. Tobias says:

    I translated a page from my dashboard list of pages by finding the original Spanish page and then clicking on the blue plus sign. In the language option to the right of my page it shows the language English (all good) and below the article I’m translating (also good) but after translating and updating, publishing it loses the automated sync to the article I’m translating. If I go back to the drop down to choose it, it isn’t available. In fact a huge list of my pages aren’t available.

    I did however have this warning at the top of the page I was translating:

    You are trying to edit a translation that is currently in the process of being added using WPML.

    Please refer to the Translation management dashboard for the exact status of this translation.

    Any ideas what I’m doing wrong?

    Thanks

    • Amir says:

      We need more info and to look at your database. Please start a thread about this in our forum. On of the support folks will need to contact you and get your DB dump, to see the status of these pages.

  23. Tobias says:

    Hi

    I can’t find where to create a new thread? Could you direct me please.

    Thanks

  24. Tobias says:

    BTW – Works fine with posts, issue lies with Pages only should that help… I see ‘this is a translation of’ whatever page I am translating but just after saving its no longer there and unavailable from the drop down.

  25. Kristin says:

    I would like the options to have untranslated content:

    1. Redirect to the homepage in the same language
    2. Redirect to the same page in the default language

    Thanks!