{"id":1042,"date":"2010-12-24T21:53:36","date_gmt":"2010-12-24T20:53:36","guid":{"rendered":"https:\/\/www.entropywins.wtf\/blog\/?p=1042"},"modified":"2010-12-24T21:53:36","modified_gmt":"2010-12-24T20:53:36","slug":"new-mediawiki-extension-live-translate","status":"publish","type":"post","link":"https:\/\/www.entropywins.wtf\/blog\/2010\/12\/24\/new-mediawiki-extension-live-translate\/","title":{"rendered":"New MediaWiki extension: Live Translate"},"content":{"rendered":"<p>I&#8217;m happy to announce the release of a new MediaWiki extension I&#8217;ve been working on over the past two weeks. It&#8217;s titled <a href=\"https:\/\/secure.wikimedia.org\/wikipedia\/mediawiki\/wiki\/Extension:Live_Translate\">Live Translate<\/a> and allows live page translation via the <a href=\"http:\/\/translate.google.com\/\">Google Translate<\/a> API. It also enables you to define a &#8220;dictionary&#8221; of certain words or phrases  and their translations; any word or phrase in the original text found  in the &#8220;dictionary&#8221; will be translated using that dictionary, instead of  using Google Translate.<\/p>\n<p><strong>The main features are:<\/strong><\/p>\n<ul>\n<li>Live translation of page contents using Google Translate.<\/li>\n<li>Ability to define translations of special words in-wiki that will then be left alone by Google Translate.<\/li>\n<\/ul>\n<p><strong>Some screenshots<\/strong><\/p>\n<p>A wiki page with the translation control of the Live Translate extension at the right top corner:<\/p>\n<p><a href=\"https:\/\/secure.wikimedia.org\/wikipedia\/mediawiki\/wiki\/Extension:Live_Translate\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1043\" title=\"A wiki page with the translation control of the Live Translate extension at the right top corner.\" src=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/12\/lte-article.png\" alt=\"A wiki page with the translation control of the Live Translate extension at the right top corner.\" width=\"939\" height=\"578\" \/><\/a><\/p>\n<p>The same page after translating it to Dutch:<\/p>\n<p><a href=\"https:\/\/secure.wikimedia.org\/wikipedia\/mediawiki\/wiki\/Extension:Live_Translate\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1044\" title=\"The same page after translating it to Dutch\" src=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/12\/lte-article-translated.png\" alt=\"The same page after translating it to Dutch\" width=\"936\" height=\"609\" \/><\/a><\/p>\n<p>The dictionary page briefly summarizing how many words and languages it contains:<\/p>\n<p><a href=\"https:\/\/secure.wikimedia.org\/wikipedia\/mediawiki\/wiki\/Extension:Live_Translate\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1045\" title=\"The dictionary page briefly summarizing how many words and languages it contains.\" src=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/12\/lte-dictionary-page.png\" alt=\"The dictionary page briefly summarizing how many words and languages it contains.\" width=\"633\" height=\"150\" \/><\/a><\/p>\n<p>Editing the special words dictionary works just like editing any other page:<\/p>\n<p><a href=\"https:\/\/secure.wikimedia.org\/wikipedia\/mediawiki\/wiki\/Extension:Live_Translate\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1046\" title=\"Editing the special words dictionary works just like editing any other page.\" src=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/12\/lte-dictionary-edit.png\" alt=\"Editing the special words dictionary works just like editing any other page.\" width=\"635\" height=\"180\" \/><\/a><\/p>\n<p><strong>Funding<\/strong><\/p>\n<p>I created this extension as <a href=\"http:\/\/www.wikiworks.com\/\">WikiWorks<\/a> consultant for Texas Instruments. Thanks to TI for funding this and allowing licensing under the GNU GPL.<\/p>\n<p><a href=\"http:\/\/www.wikiworks.com\/\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1047\" title=\"WikiWorks, MediaWiki consulting\" src=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/12\/wikiworks-header-logo1.png\" alt=\"WikiWorks, MediaWiki consulting\" width=\"429\" height=\"91\" \/><\/a><\/p>\n<p><strong>Points of interest<\/strong><\/p>\n<p>For me the most interesting part of creating this extension was figuring out how to walk through the page DOM and send only the actual text to the Google Translate API using JavaScript (and jQuery). This step was needed because the GT API limits translation requests to 500 characters, so it&#8217;s not definitely possible to send the whole page. It took me a while to figure this out, and I still think it&#8217;s a rather lame limit, as it leads to loss of context, and thus worse translations.<\/p>\n<p>The rest of the extension is rather simple and does not contain anything I haven\u2019t done before. The special words dictionary is stored in a simple db table (fields: word id, word text, word language and word primary) and can be accessed via 2 API modules. One is to query a list of the special words that are defined for a language, the other is to get translations of a set of special words from one language to the other. When you request your first translation of a page, the first API module is hit and the result is used to insert notranslate spans, which make Google Translate ignore stuff, around the special words. After that the other module is hit, the special words are replaced by their translations, and finally the script sends a ton of requests to the GT API.<\/p>\n<p>Ah, and not to forgot, I used a XOR. I kid you not, <a href=\"http:\/\/svn.wikimedia.org\/viewvc\/mediawiki\/trunk\/extensions\/LiveTranslate\/includes\/LiveTranslate_Functions.php?revision=78968&amp;view=markup\">source code or it didn&#8217;t happen<\/a> (see the last function).<\/p>\n<p><strong>State and future<\/strong><\/p>\n<p>Live Translate is currently at version 0.2 and contains all the features initially requested by TI. It appears to be stable, and ready for production usage. Of course, if  bugs pop up, they will be addressed and a new minor version will be  released. A cool new feature I&#8217;ve been considering, and might add at some point, is having  __LIVETRANSLATE__ and __NOLIVETRANSLATE__ magic words, that allow per-page showing or hiding of the translation control. <a href=\"http:\/\/www.yaronkoren.com\/\">Yaron<\/a> suggested also having a per-namespace setting. If you have some cool new features in mind, feel free to suggest them on the <a href=\"https:\/\/secure.wikimedia.org\/wikipedia\/mediawiki\/wiki\/Extension_talk:Live_Translate\">Live Translate discussion page<\/a> (where you also can ask for support and point out bugs). If you want to fund any new functionality, please contact WikiWorks.<\/p>\n<p>You can obtain the latest version of Live Translate <a href=\"https:\/\/code.google.com\/p\/livetranslate\/downloads\/list\">here<\/a>.<\/p>\n<div id=\"_mcePaste\" style=\"position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;\">I&#8217;m happy to announce the release of a new <a href=\"http:\/\/www.mediawiki.org\/wiki\/\">MediaWiki<\/a> extension I&#8217;ve been working on over the past two weeks.<\/div>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;m happy to announce the release of a new MediaWiki extension I&#8217;ve been working on over the past two weeks.&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[7,8],"tags":[136,138,152,156,157,181,195,197,262,288,298],"class_list":["post-1042","post","type-post","status-publish","format-standard","hentry","category-programming","category-software","tag-javascript","tag-jquery","tag-live-translate","tag-mediawiki","tag-mediawiki-extensions","tag-open-source","tag-php","tag-planet-wikimedia","tag-translating","tag-wikiworks","tag-xor"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>New MediaWiki extension: Live Translate - Blog of Jeroen De Dauw<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.entropywins.wtf\/blog\/2010\/12\/24\/new-mediawiki-extension-live-translate\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"New MediaWiki extension: Live Translate - Blog of Jeroen De Dauw\" \/>\n<meta property=\"og:description\" content=\"I&#8217;m happy to announce the release of a new MediaWiki extension I&#8217;ve been working on over the past two weeks.&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.entropywins.wtf\/blog\/2010\/12\/24\/new-mediawiki-extension-live-translate\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog of Jeroen De Dauw\" \/>\n<meta property=\"article:published_time\" content=\"2010-12-24T20:53:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/12\/lte-article.png\" \/>\n<meta name=\"author\" content=\"Jeroen\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/JeroenDeDauw\" \/>\n<meta name=\"twitter:site\" content=\"@JeroenDeDauw\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeroen\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2010\\\/12\\\/24\\\/new-mediawiki-extension-live-translate\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2010\\\/12\\\/24\\\/new-mediawiki-extension-live-translate\\\/\"},\"author\":{\"name\":\"Jeroen\",\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#\\\/schema\\\/person\\\/4e2ef14f2ca7dc3a0ac137d1692b66b7\"},\"headline\":\"New MediaWiki extension: Live Translate\",\"datePublished\":\"2010-12-24T20:53:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2010\\\/12\\\/24\\\/new-mediawiki-extension-live-translate\\\/\"},\"wordCount\":601,\"commentCount\":3,\"publisher\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#\\\/schema\\\/person\\\/4e2ef14f2ca7dc3a0ac137d1692b66b7\"},\"image\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2010\\\/12\\\/24\\\/new-mediawiki-extension-live-translate\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/wp-content\\\/uploads\\\/2010\\\/12\\\/lte-article.png\",\"keywords\":[\"JavaScript\",\"jQuery\",\"Live Translate\",\"MediaWiki\",\"MediaWiki extensions\",\"Open Source\",\"PHP\",\"Planet Wikimedia\",\"Translating\",\"WikiWorks\",\"XOR\"],\"articleSection\":[\"Programming\",\"Software\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2010\\\/12\\\/24\\\/new-mediawiki-extension-live-translate\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2010\\\/12\\\/24\\\/new-mediawiki-extension-live-translate\\\/\",\"url\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2010\\\/12\\\/24\\\/new-mediawiki-extension-live-translate\\\/\",\"name\":\"New MediaWiki extension: Live Translate - Blog of Jeroen De Dauw\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2010\\\/12\\\/24\\\/new-mediawiki-extension-live-translate\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2010\\\/12\\\/24\\\/new-mediawiki-extension-live-translate\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/wp-content\\\/uploads\\\/2010\\\/12\\\/lte-article.png\",\"datePublished\":\"2010-12-24T20:53:36+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2010\\\/12\\\/24\\\/new-mediawiki-extension-live-translate\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2010\\\/12\\\/24\\\/new-mediawiki-extension-live-translate\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2010\\\/12\\\/24\\\/new-mediawiki-extension-live-translate\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/wp-content\\\/uploads\\\/2010\\\/12\\\/lte-article.png\",\"contentUrl\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/wp-content\\\/uploads\\\/2010\\\/12\\\/lte-article.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2010\\\/12\\\/24\\\/new-mediawiki-extension-live-translate\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"New MediaWiki extension: Live Translate\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/\",\"name\":\"Entropy Wins\",\"description\":\"A blog on Software Architecture, Design and Craftsmanship\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#\\\/schema\\\/person\\\/4e2ef14f2ca7dc3a0ac137d1692b66b7\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#\\\/schema\\\/person\\\/4e2ef14f2ca7dc3a0ac137d1692b66b7\",\"name\":\"Jeroen\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g\",\"caption\":\"Jeroen\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g\"},\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/jeroendedauw\\\/\",\"https:\\\/\\\/x.com\\\/https:\\\/\\\/twitter.com\\\/JeroenDeDauw\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"New MediaWiki extension: Live Translate - Blog of Jeroen De Dauw","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.entropywins.wtf\/blog\/2010\/12\/24\/new-mediawiki-extension-live-translate\/","og_locale":"en_US","og_type":"article","og_title":"New MediaWiki extension: Live Translate - Blog of Jeroen De Dauw","og_description":"I&#8217;m happy to announce the release of a new MediaWiki extension I&#8217;ve been working on over the past two weeks.&hellip;","og_url":"https:\/\/www.entropywins.wtf\/blog\/2010\/12\/24\/new-mediawiki-extension-live-translate\/","og_site_name":"Blog of Jeroen De Dauw","article_published_time":"2010-12-24T20:53:36+00:00","og_image":[{"url":"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/12\/lte-article.png","type":"","width":"","height":""}],"author":"Jeroen","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/JeroenDeDauw","twitter_site":"@JeroenDeDauw","twitter_misc":{"Written by":"Jeroen","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/12\/24\/new-mediawiki-extension-live-translate\/#article","isPartOf":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/12\/24\/new-mediawiki-extension-live-translate\/"},"author":{"name":"Jeroen","@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7"},"headline":"New MediaWiki extension: Live Translate","datePublished":"2010-12-24T20:53:36+00:00","mainEntityOfPage":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/12\/24\/new-mediawiki-extension-live-translate\/"},"wordCount":601,"commentCount":3,"publisher":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7"},"image":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/12\/24\/new-mediawiki-extension-live-translate\/#primaryimage"},"thumbnailUrl":"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/12\/lte-article.png","keywords":["JavaScript","jQuery","Live Translate","MediaWiki","MediaWiki extensions","Open Source","PHP","Planet Wikimedia","Translating","WikiWorks","XOR"],"articleSection":["Programming","Software"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.entropywins.wtf\/blog\/2010\/12\/24\/new-mediawiki-extension-live-translate\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/12\/24\/new-mediawiki-extension-live-translate\/","url":"https:\/\/www.entropywins.wtf\/blog\/2010\/12\/24\/new-mediawiki-extension-live-translate\/","name":"New MediaWiki extension: Live Translate - Blog of Jeroen De Dauw","isPartOf":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/12\/24\/new-mediawiki-extension-live-translate\/#primaryimage"},"image":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/12\/24\/new-mediawiki-extension-live-translate\/#primaryimage"},"thumbnailUrl":"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/12\/lte-article.png","datePublished":"2010-12-24T20:53:36+00:00","breadcrumb":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/12\/24\/new-mediawiki-extension-live-translate\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.entropywins.wtf\/blog\/2010\/12\/24\/new-mediawiki-extension-live-translate\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/12\/24\/new-mediawiki-extension-live-translate\/#primaryimage","url":"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/12\/lte-article.png","contentUrl":"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/12\/lte-article.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/12\/24\/new-mediawiki-extension-live-translate\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.entropywins.wtf\/blog\/"},{"@type":"ListItem","position":2,"name":"New MediaWiki extension: Live Translate"}]},{"@type":"WebSite","@id":"https:\/\/www.entropywins.wtf\/blog\/#website","url":"https:\/\/www.entropywins.wtf\/blog\/","name":"Entropy Wins","description":"A blog on Software Architecture, Design and Craftsmanship","publisher":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.entropywins.wtf\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7","name":"Jeroen","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g","caption":"Jeroen"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g"},"sameAs":["https:\/\/www.linkedin.com\/in\/jeroendedauw\/","https:\/\/x.com\/https:\/\/twitter.com\/JeroenDeDauw"]}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p74TBF-gO","jetpack-related-posts":[{"id":1222,"url":"https:\/\/www.entropywins.wtf\/blog\/2011\/06\/16\/live-translate-1-1-released\/","url_meta":{"origin":1042,"position":0},"title":"Live Translate 1.1 released","author":"Jeroen","date":"2011-06-16","format":false,"excerpt":"I just released a new version of the Live Translate extension for MediaWiki. Live Translate is a simple extension that allows live translation of wiki pages using Google Translate or (as of version 1.1) Microsoft Translator. It also enables you to define a \u201cdictionary\u201d of certain words or phrases and\u2026","rel":"","context":"Similar post","block_context":{"text":"Similar post","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1238,"url":"https:\/\/www.entropywins.wtf\/blog\/2011\/08\/17\/live-translate-1-2\/","url_meta":{"origin":1042,"position":1},"title":"Live Translate 1.2","author":"Jeroen","date":"2011-08-17","format":false,"excerpt":"A few days ago I released version 1.2 of the Live Translate MediaWiki extension, which is a major update bringing mainly under-the-hood improvements. I\u2019ve worked on this for about 3 days in my free time, mainly to try out some JavaScript techniques I had not utilized yet. These are the\u2026","rel":"","context":"Similar post","block_context":{"text":"Similar post","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1109,"url":"https:\/\/www.entropywins.wtf\/blog\/2011\/05\/30\/new-mediawiki-extension-spark\/","url_meta":{"origin":1042,"position":2},"title":"New MediaWiki extension: Spark","author":"Jeroen","date":"2011-05-30","format":false,"excerpt":"Yesterday I quickly wrote up a simple (but awesome) MediaWiki extension that allows you to make use of the Spark library in your wiki. Spark as described on the Spark website: The web is not only growing in sheer size, but it also grows in how much it is interconnected.\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"Spark logo","src":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2011\/05\/spark-logo.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":1244,"url":"https:\/\/www.entropywins.wtf\/blog\/2011\/11\/08\/contest-extension-for-mediawiki\/","url_meta":{"origin":1042,"position":3},"title":"Contest extension for MediaWiki","author":"Jeroen","date":"2011-11-08","format":false,"excerpt":"As it\u2019s been 2 months since my last blog post, I figured it was time for another one. Quite a few things I could write about (SMWCon, my new awesome laptop, Stanfords AI and ML classes, me moving to Berlin, \u2026), but I decided to give some introduction to my\u2026","rel":"","context":"Similar post","block_context":{"text":"Similar post","link":""},"img":{"alt_text":"Contest welcome interface","src":"https:\/\/i0.wp.com\/web.archive.org\/web\/20121017212310im_\/https%3A\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2011\/11\/800px-Contest-welcome-click.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/web.archive.org\/web\/20121017212310im_\/https%3A\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2011\/11\/800px-Contest-welcome-click.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/web.archive.org\/web\/20121017212310im_\/https%3A\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2011\/11\/800px-Contest-welcome-click.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/web.archive.org\/web\/20121017212310im_\/https%3A\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2011\/11\/800px-Contest-welcome-click.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":1799,"url":"https:\/\/www.entropywins.wtf\/blog\/2016\/08\/31\/maps-3-8-for-mediawiki-released\/","url_meta":{"origin":1042,"position":4},"title":"Maps 3.8 for MediaWiki released","author":"Jeroen","date":"2016-08-31","format":false,"excerpt":"I\u2019m happy to announce the immediate availability of Maps 3.8. This feature release brings several enhancements and new features. Added Leaflet marker clustering (by Peter Grassberger) markercluster: Enables clustering, multiple markers are merged into one marker. clustermaxzoom: The maximum zoom level where clusters may exist. clusterzoomonclick: Whether clicking on a\u2026","rel":"","context":"In &quot;Software&quot;","block_context":{"text":"Software","link":"https:\/\/www.entropywins.wtf\/blog\/category\/software\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/08\/leaflet-clusters.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/08\/leaflet-clusters.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/08\/leaflet-clusters.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/08\/leaflet-clusters.jpg?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":1835,"url":"https:\/\/www.entropywins.wtf\/blog\/2016\/11\/09\/maps-4-0-0-rc1-released\/","url_meta":{"origin":1042,"position":5},"title":"Maps 4.0.0-RC1 released!","author":"Jeroen","date":"2016-11-09","format":false,"excerpt":"I'm happy to announce the first release candidate for Maps 4.0. Maps is a MediaWiki extension to work with and visualize geographical information. Maps 4.0 is the first major release of the extension since January 2014, and it brings a ton of \"new\" functionality. First off, this blog post is\u2026","rel":"","context":"In &quot;Software&quot;","block_context":{"text":"Software","link":"https:\/\/www.entropywins.wtf\/blog\/category\/software\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts\/1042","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/comments?post=1042"}],"version-history":[{"count":0,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts\/1042\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/media?parent=1042"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/categories?post=1042"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/tags?post=1042"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}