版本 0.8.0 – Attack of the APIs

When APIs fight

Well ahead of the deadline posed by Google Translate API to stop working, we were finally able to compile this new release. This one followed a long period of problems that were presented by the older version, mainly because of the fact that Google decided to pose limitations on usage before their deadline which caused the previous versions support requests to surge to new heights. The Google change also triggered an API limit in the Bing translation API, since users were switching engines, which overloaded the Transposh hard coded API key for Bing.

不过, we survived this period to provide you with our latest and greatest version. This version fixes these problems be providing a bypass (Proxy for Google and temp keys for MSN) and it also allows you to use your own key directly (thanks to Randy from spyware help center for providing us with his key for testing) which will take precedence over those other methods. While doing this we were able to dramatically improve the infrastructure of the plugin, changing the way AJAX calls were performed to a method that is native to WordPress (例句. if your admin page works, it should probably work as well). While doing that we were able to reduce javascript code needed for the backend while allowing the translate all feature to work much faster (and supporting Apertium too!).

At this point we had a solid version, which seemed like a good thing to release, but no, we had to have some other features in, so we finally decided to tackle the issue of multiple widgets support (and title selection too, yippee!). Seems quite straight forward? but no, this caused a major rewrite of our widget infrastructure as well. Actually improving it quite drastically with changing the way css was added, and the way the widgets notified the servers of change in language (we now avoid a useless POST call to the server). While writing that we were lucky enough to stumble upon a PHP5.3 to PHP5.2 incompatibility issue with a set of other problems which held our release back another week. We want to thank the many users that have put up with our beta releases and helped us find problems that were hidden under layers of code and complexity.

We also took this opportunity to change our terms slightly, if you are displaying Google ads from AdSense on your translated pages, we will take 1/1000 of that space for use with our own adsense code, so if Transposh is helping you generate a revenue of $10K you will be buying us coffee! So thanks! To clarify things a bit, we don’t create additional ad space on your page, and we won’t insert any ads or change your layout, if you have no ads, we do nothing. If you think that this is asking too much, you may simply delete our plugin, whistle a soft tune, and be on your way. If you want a commercial license, we don’t sell them yet, but they’ll probably cost more.

Other changes to this version include:

  • Added Catalan and Hindi support for Bingspeaks for itself.
  • Dropdown widget improved cssit actually looks much better now.
  • Support for Memcachedif APC and other opcode caches were too much for you, now you may use memcached and have a lot of fun.
  • Better 404 page handling (don’t create new links to non-existing pages) – meaning the google crawler will hassle your site less.
  • Fix caching on rackspace cloudsitesthey had x-cache installed for opcode cache, but with no user memory, which caused a surge in logfilesnow fixed.
  • Many more minor fixesWe might count those, but we don’t have enough fingers.
  • Turkish Translation by Semih Yeşilyurt.

我哋希望你会钟意呢个版本, and as always, waiting for your comments, ideas, suggestions and flames.

附笔 – Tested on WordPress 3.3 beta4, 伟大嘅作品.


  1. Short code call transposh widget does not work and causes fatal error

    Fatal error: Call to undefined method transposh_plugin_widget:: transposh_widget () in on line 407

    How do I fix this? The whole site is not working after the update because of this error 🙁

    • 你好,

      系嘅, a bugplease replace the 407 line with:
      $GLOBALS['my_transposh_plugin']->widget->widget($args, $instance);
      and try again,

      It might also be worthwhile to know that you can send a param now defining the look of the plugin inside the $instance variable

        • SInce I guess you are calling it like:
          You should now call it something like:
          transposh_widget(array(), array('title' => 'Translation', 'widget_file' => 'flags/tpw_flags.php'));

          • its in the transposh_widget.php in the wp directory of the plugin, if you can’t manage, use the contact us form on this site and we’ll send you a fixed version

          • asf

            多谢。, but how to load CSS?
            I use transposh_widget(阵列(), 阵列(‘title’ => ‘Translation’, ‘widget_file’ => ‘flags/tpw_flags.php’));
            Flags are now, 不过, does not load tpw_flags.css.

          • 系嘅, this is a tricky part,

            there are two ways to handle this, one is that I will think of some way to correct it (clueless) and the other is to add the widget to a sidebar you are not displaying which will force the addition of the css.
            This code was indeed quite tricky because now css is added (and aggregates) for all active widgets, and there is no way to know for sure which sidebars will display on which page, so active widgets are considered.
            an alternative way will be to force the addition of the correct css in the actual correct place in the execution of the page, which means adding an action on wp_print_scripts and for which executing the widget class add_transposh_widget_cssI think this will be too much work, so going with the hackerish way is not such a bad idea.

            good night

    • 弗斯特, I will clarify that you currently do not need any keys and everything will work.
      I can tell you that the best way to find the keys is to use a search engine to find them, just look forX translate API Keywhere X is the name of your favorite one,
      I am not posting direct links because:
      1. They constantly change their urls, and don’t bother to update anybody, so I don’t want to mislead future readers
      2. I am not getting paid for referring to them, nor do I think it is needed that you do that
      3. I am being a bit lazy 😉


  2. yann

    Really much more quick, congratulations.
    Nevertheless, I have a problem to create a sitemap who will consider all the languages. Do you have a solution for this problem?

    • I promise there will be new bugs in 0.8.1 😉 but seriously, you can write me and I’ll send you a patched version, or patch it yourself. 再者 – most users are not using this feature, which can also be replaced by placing a widget copy in a sidebar and instead of inserting the widget code directly, inserting the sidebar

  3. 你好, first of all thanks for your wonderful plugin. 二, after the last update I’m unable to edit my translation. When I clich the edit button the page change in translate mode but I don’t have any popup window to modify. Can you help me?


  4. Matt

    Hi there. I’ve corrected the bug but I can’t change the dropdown back to flags. Do I add the above code to the bottom of the widget.php or a different file?

  5. Hi guys,

    I am greatful for all the work you have put into the new release, considering how hard the google API crisis might have been to deal with at first. WELL DONE!

    What I am curious about is how can I ensure my site is being listed in international search engines, in multiple language? I mean, thanks to transposh my site is now readable in 3 我钟意喺大嘅翻译colnect, but is that the same as if it werehostedin thoe languages or do I need to do something (like cache each page or create a multisite?)

    Thanks for the new release, and API fix.

    The Red Bicycle

  6. Cant edit text with ver. 0.8, whats wrong?

    At this site http://www.wcafeasia.com have installed the plugin but can not edit any text at all?

    Have another site with an erlier version that works good, I have usel same settings with this one (0.8), but cant edit.

    I have insert à api key from Google (for browser)

    Anyone who knows?

  7. Re-installed .80 version per instructions, and the site is still 100% broken if I enable the plugin.

    Word of cautiondo not install this version, it may break your site like it did mine.

    I deleted the plugin folder, unzipped a fresh copy of 0.80 and still the entire site goes belly up. Nothing displaysit will become a white browser screen.

    • 你好,

      我同意, never install any upgrades, everything might break, but to your point, look at the FAQ, this is probably the memory limit issue, but not that we see a reason why it should be connected to the upgrade.

      而家, if you want to get this issue resolved, try contacting us directly, we normally try to help. Sometimes we don’t


  8. Thumbs up guys!
    The plugin is playing perfect than never before!
    Few things to clarify:
    1. Could you please explain how to add translated pages to sitemap? (I didn’t get it when you said about it in the previous comments).
    2. Is this okay with WP Super Cache?


  9. 弗斯特, let me say, you have a great plugin. I am in the USA, working on a directory site in Morocco. The default language on the site is French. On this site, businesses may add a listing to the directory (standard post type) using a different language. For instance if a business were to add a listing in English, the plugin will translate the post (listing) into all the active languages, except the default language (because it believes it is French?). In other words, the English version and the French translation are both actually the same English version. The site owners want all of the posts to display in the default language; and be available in each of the active languages. Is there a shortcode to wrap the entire listing in, so it will display in the default language? (如 [tp translate="FR"]你好[/TP] and it will display Bonjour. Or, is there some other way to accomplish this?


  10. 嗯, I didnt hear anything back. 不过, I did figure out how to accomplish what I wanted to be able to do. Simply wrap the content in a div tag with a class of mylang.

    再者, FWIW, for anyone looking through the comments for any information on whether or not this plugin will translate custom post types. Even though the plugin does not recognize a theme’s custom post types, you can convert the plugin to work with custom post types, fairly quickly. You need to edit two files. You need to edit the on_ajax_tp_translate_all() function in transposh_admin.php and the on_admin_menu() function, in transposh_postpublish.php.


  11. 你好:



  12. Stacy & James

    millions thanks Ofer for sharing your project.

    Apart from straight translation it does accept multi-languages domains if more than 1 default language is used in a domain.

    Thanks also for private help for small troubleshooting we had.

    all the best

  13. 你好我還在找方法解決問題

    “我哋唔系随机存取记忆体缓存引擎中揾到个支持嘅, 安装一个可唔可以提高效能. 检查大常见问题。”




    • 你好,
      To your questions:
      1. You can safely ignore this warning, it only regards performance, the plugin will work without this
      2. The permalink structure will be kept.


  14. 你好





    • 你好,

      To put the plugin in the sidebar, go to your appearance menu and drag the transposh widget to the sidebar, choose the widget style you want and the title and that’s it

  15. 感謝你終於可以顯示了




  16. 不好意思!




  17. 不好意思可以請你再幫我看看我的網頁是什麼問題嗎?




  18. 乔凡尼

    I’d like to continue to use your great plugin, but this sends the server on overload.
    I installed memcached and W3 Total Cache (only database cache enabled), but the results are disappointing.
    If active Transposh on a blog having 7.000 posts, this alone is enough to crash the CPU.


你嘅电子邮件地址将唔会畀出版. 所使资料栏识认 *