discourse/test/javascripts/fixtures/topic_fixtures.js

2 lines
No EOL
59 KiB
JavaScript

/*jshint maxlen:10000000 */
Discourse.URL_FIXTURES["/t/280.json"] = {"post_stream":{"posts":[{"id":398,"post_number":1,"post_type":1,"created_at":"2013-02-05T16:29:00-05:00","updated_at":"2013-02-05T16:29:00-05:00","reply_count":0,"reply_to_post_number":null,"quote_count":0,"avg_time":22,"incoming_link_count":0,"reads":331,"score":99.3,"yours":false,"topic_slug":"internationalization-localization","topic_id":280,"display_username":"Uwe Keim","version":1,"can_edit":null,"can_delete":null,"can_recover":false,"link_counts":[{"url":"http://meta.discourse.org/t/language-mirrors/2378/2","internal":true,"reflection":true,"title":"Language mirrors","clicks":30},{"url":"http://meta.discourse.org/t/roadplan-for-discourse/2939/5","internal":true,"reflection":true,"title":"Roadplan for Discourse","clicks":18},{"url":"http://meta.discourse.org/t/internationalization-i18n-provided-for-discourse-/2073/2","internal":true,"reflection":true,"title":"Internationalization I18n provided for discourse ?","clicks":17},{"url":"http://meta.discourse.org/t/solving-xda-developer-style-forums/4368/4","internal":true,"reflection":true,"title":"Solving XDA-Developer style forums","clicks":6},{"url":"http://meta.discourse.org/t/how-to-change-language/6900/2","internal":true,"reflection":true,"title":"How to change language?","clicks":5},{"url":"http://meta.discourse.org/t/translation-workflow/6102","internal":true,"reflection":true,"title":"Translation workflow","clicks":3},{"url":"http://meta.discourse.org/t/bookmark-last-read-sometimes-doesn-t-go-to-the-end-of-a-topic/4825/9","internal":true,"reflection":true,"title":"Bookmark/last read sometimes doesn't go to the end of a topic","clicks":3},{"url":"http://meta.discourse.org/t/comrades-let-s-join-our-efforts-on-ukrainian-and-russian-translations/4403/5","internal":true,"reflection":true,"title":"Comrades let's join our efforts on ukrainian and russian translations","clicks":3},{"url":"http://meta.discourse.org/t/suggestion-translation-on-admin-panel/6923/5","internal":true,"reflection":true,"title":"Suggestion: Translation on admin panel","clicks":2},{"url":"http://meta.discourse.org/t/missing-user-value-in-chinese-localized-page/7406/6","internal":true,"reflection":true,"title":"[missing {{user}} value] in Chinese localized page","clicks":1},{"url":"http://meta.discourse.org/t/when-will-discourse-provide-an-local-language-configuration/7068/2","internal":true,"reflection":true,"title":"When will discourse provide an local language configuration","clicks":1},{"url":"http://meta.discourse.org/t/suggestion-translation-on-admin-panel/6923/6","internal":true,"reflection":true,"title":"Suggestion: Translation on admin panel","clicks":0},{"url":"http://meta.discourse.org/t/i-like-discourse-want-join-discourse-translation-team/6679/3","internal":true,"reflection":true,"title":"I like discourse,want join discourse translation team","clicks":0}],"cooked":"<p>Any plans to support localization of UI elements, so that I (for example) could set up a completely German speaking forum?</p>","read":false,"username":"uwe_keim","name":"Uwe Keim","user_title":null,"actions_summary":[{"id":2,"count":0,"hidden":false,"can_act":null},{"id":3,"count":0,"hidden":false,"can_act":null},{"id":4,"count":0,"hidden":false,"can_act":null},{"id":5,"count":0,"hidden":true,"can_act":null},{"id":6,"count":0,"hidden":false,"can_act":null},{"id":7,"count":0,"hidden":false,"can_act":null},{"id":8,"count":0,"hidden":false,"can_act":null}],"moderator":false,"staff":false,"avatar_template":"https://www.gravatar.com/avatar/53a82f701ae492808834e621de2586eb.png?s={size}&r=pg&d=identicon","user_id":255,"hidden":false,"hidden_reason_id":null,"deleted_at":null,"trust_level":1},{"id":419,"post_number":2,"post_type":1,"created_at":"2013-02-05T16:32:47-05:00","updated_at":"2013-02-06T05:15:27-05:00","reply_count":0,"reply_to_post_number":null,"quote_count":0,"avg_time":26,"incoming_link_count":10,"reads":325,"score":236.3,"yours":false,"topic_slug":"internationalization-localization","topic_id":280,"display_username":"Tim Stone","version":2,"can_edit":null,"can_delete":null,"can_recover":false,"link_counts":[{"url":"https://github.com/discourse/discourse/blob/master/config/locales/en.yml","internal":false,"reflection":false,"clicks":71}],"cooked":"<p>The application strings <a href=\"https://github.com/discourse/discourse/blob/master/config/locales/en.yml\">are externalized</a>, so localization should be entirely possible with enough translation effort.</p>","read":false,"username":"tms","name":"Tim Stone","user_title":null,"actions_summary":[{"id":2,"count":3,"hidden":false,"can_act":null},{"id":3,"count":0,"hidden":false,"can_act":null},{"id":4,"count":0,"hidden":false,"can_act":null},{"id":5,"count":0,"hidden":true,"can_act":null},{"id":6,"count":0,"hidden":false,"can_act":null},{"id":7,"count":0,"hidden":false,"can_act":null},{"id":8,"count":0,"hidden":false,"can_act":null}],"moderator":false,"staff":false,"avatar_template":"https://www.gravatar.com/avatar/3981cd271c302f5cba628c6b6d2b32ee.png?s={size}&r=pg&d=identicon","user_id":9,"hidden":false,"hidden_reason_id":null,"deleted_at":null,"trust_level":2},{"id":1060,"post_number":3,"post_type":1,"created_at":"2013-02-05T21:26:24-05:00","updated_at":"2013-06-18T22:58:28-04:00","reply_count":3,"reply_to_post_number":null,"quote_count":0,"avg_time":35,"incoming_link_count":4,"reads":319,"score":145.55,"yours":false,"topic_slug":"internationalization-localization","topic_id":280,"display_username":"Jeff Atwood","version":3,"can_edit":null,"can_delete":null,"can_recover":false,"link_counts":[{"url":"https://github.com/discourse/discourse/blob/master/config/locales","internal":false,"reflection":false,"clicks":3}],"cooked":"<p>Yep, all strings are going through a lookup table.*</p>\n\n<p><a href=\"https://github.com/discourse/discourse/blob/master/config/locales\" target=\"_blank\">https://github.com/discourse/discourse/blob/master/config/locales</a></p>\n\n<p>So you could replace that lookup table with the \"de\" one to get German.</p>\n\n<p><sub>* we didn't get all the strings into the lookup table for launch, but the vast, vast majority of them are and the ones that are not, we will fix as we go!</sub></p>","read":false,"username":"codinghorror","name":"Jeff Atwood","user_title":null,"actions_summary":[{"id":2,"count":3,"hidden":false,"can_act":null},{"id":3,"count":0,"hidden":false,"can_act":null},{"id":4,"count":0,"hidden":false,"can_act":null},{"id":5,"count":0,"hidden":true,"can_act":null},{"id":6,"count":0,"hidden":false,"can_act":null},{"id":7,"count":0,"hidden":false,"can_act":null},{"id":8,"count":0,"hidden":false,"can_act":null}],"moderator":false,"staff":true,"avatar_template":"https://www.gravatar.com/avatar/51d623f33f8b83095db84ff35e15dbe8.png?s={size}&r=pg&d=identicon","user_id":32,"hidden":false,"hidden_reason_id":null,"deleted_at":null,"trust_level":2},{"id":3623,"post_number":4,"post_type":1,"created_at":"2013-02-07T07:55:33-05:00","updated_at":"2013-02-07T07:55:33-05:00","reply_count":0,"reply_to_post_number":null,"quote_count":0,"avg_time":21,"incoming_link_count":10,"reads":277,"score":241.45,"yours":false,"topic_slug":"internationalization-localization","topic_id":280,"display_username":"Shade","version":1,"can_edit":null,"can_delete":null,"can_recover":false,"link_counts":[{"url":"http://meta.discourse.org/t/hi-support-chinese/4393/6","internal":true,"reflection":true,"title":"Hi, support Chinese?","clicks":12}],"cooked":"<p>Is it a coincidence that the strings file is 1337 lines long? :D</p>","read":false,"username":"shade","name":"Shade","user_title":null,"actions_summary":[{"id":2,"count":7,"hidden":false,"can_act":null},{"id":3,"count":0,"hidden":false,"can_act":null},{"id":4,"count":0,"hidden":false,"can_act":null},{"id":5,"count":0,"hidden":true,"can_act":null},{"id":6,"count":0,"hidden":false,"can_act":null},{"id":7,"count":0,"hidden":false,"can_act":null},{"id":8,"count":0,"hidden":false,"can_act":null}],"moderator":false,"staff":false,"avatar_template":"https://www.gravatar.com/avatar/02c3f1806f6962f56168c7bd9f8924b8.png?s={size}&r=pg&d=identicon","user_id":1808,"hidden":false,"hidden_reason_id":null,"deleted_at":null,"trust_level":1},{"id":3651,"post_number":5,"post_type":1,"created_at":"2013-02-07T09:02:07-05:00","updated_at":"2013-02-07T09:05:42-05:00","reply_count":2,"reply_to_post_number":3,"quote_count":1,"avg_time":24,"incoming_link_count":6,"reads":271,"score":155.4,"yours":false,"topic_slug":"internationalization-localization","topic_id":280,"display_username":"Pekka Gaiser","version":1,"can_edit":null,"can_delete":null,"can_recover":false,"link_counts":[{"url":"http://stackoverflow.com/questions/4232922/why-do-people-use-plain-english-as-translation-placeholders","internal":false,"reflection":false,"clicks":47},{"url":"/users/codinghorror","internal":true,"reflection":false,"clicks":5}],"cooked":"<p></p><aside class=\"quote\" data-post=\"3\" data-topic=\"280\"><div class=\"title\">\n <div class=\"quote-controls\"></div>\n <img width=\"20\" height=\"20\" src=\"http://www.gravatar.com/avatar/51d623f33f8b83095db84ff35e15dbe8.png?s=40&amp;r=pg&amp;d=identicon\" class=\"avatar \" title=\"\">\n codinghorror\n said:\n </div>\n <blockquote>So you could replace that lookup table with the \"de\" one to get German.</blockquote>\n</aside><p></p>\n\n<p>The problem I see here is that this file is likely two grow and change massively over the next couple months, and tracking these changes in order to keep a localized file up to date is going to be a <em>bitch</em>. </p>\n\n<p>I wonder where there is a tool that can compare two yml structures and point out which nodes are missing? That would help keep track of new strings.</p>\n\n<p>Re keeping track of <em>changed</em> strings, <a href=\"/users/codinghorror\" class=\"mention\">@codinghorror</a> I found this very interesting: <a href=\"http://stackoverflow.com/questions/4232922/why-do-people-use-plain-english-as-translation-placeholders\">http://stackoverflow.com/questions/4232922/why-do-people-use-plain-english-as-translation-placeholders</a> if plain English placeholders were used, any change in strings would lead to a <em>new</em> node in the yml file, making keeping the translation up to date easier. Maybe worth thinking about in the future.</p>","read":false,"username":"pekka","name":"Pekka Gaiser","user_title":null,"actions_summary":[{"id":2,"count":1,"hidden":false,"can_act":null},{"id":3,"count":0,"hidden":false,"can_act":null},{"id":4,"count":0,"hidden":false,"can_act":null},{"id":5,"count":0,"hidden":true,"can_act":null},{"id":6,"count":0,"hidden":false,"can_act":null},{"id":7,"count":0,"hidden":false,"can_act":null},{"id":8,"count":0,"hidden":false,"can_act":null}],"moderator":false,"staff":false,"avatar_template":"https://www.gravatar.com/avatar/100a6c42a31a56e882475725d65537f8.png?s={size}&r=pg&d=identicon","user_id":7,"hidden":false,"hidden_reason_id":null,"deleted_at":null,"trust_level":2},{"id":3654,"post_number":6,"post_type":1,"created_at":"2013-02-07T09:05:39-05:00","updated_at":"2013-02-07T09:05:39-05:00","reply_count":1,"reply_to_post_number":5,"quote_count":0,"avg_time":20,"incoming_link_count":1,"reads":243,"score":74.6,"yours":false,"topic_slug":"internationalization-localization","topic_id":280,"display_username":"Sam Saffron","version":1,"can_edit":null,"can_delete":null,"can_recover":false,"link_counts":[{"url":"https://github.com/SlexAxton/messageformat.js","internal":false,"reflection":false,"clicks":34},{"url":"https://github.com/SlexAxton","internal":false,"reflection":false,"clicks":8}],"cooked":"<p>Yes, I really like the concept of fuzzy matching for localization, perhaps you can chase up <a href=\"https://github.com/SlexAxton\">alex sexton</a> he was meaning to upload a localization tool for this kind of stuff. </p>\n\n<p>Also, I am a big fan of <a href=\"https://github.com/SlexAxton/messageformat.js\">ICU message format</a>, but it is not the \"Rails way (tm)\". </p>","read":false,"username":"sam","name":"Sam Saffron","user_title":"Chief Waffle","reply_to_user":{"username":"pekka","name":"Pekka Gaiser"},"actions_summary":[{"id":2,"count":1,"hidden":false,"can_act":null},{"id":3,"count":0,"hidden":false,"can_act":null},{"id":4,"count":0,"hidden":false,"can_act":null},{"id":5,"count":0,"hidden":true,"can_act":null},{"id":6,"count":0,"hidden":false,"can_act":null},{"id":7,"count":0,"hidden":false,"can_act":null},{"id":8,"count":0,"hidden":false,"can_act":null}],"moderator":false,"staff":true,"avatar_template":"https://www.gravatar.com/avatar/3dcae8378d46c244172a115c28ca49ce.png?s={size}&r=pg&d=identicon","user_id":1,"hidden":false,"hidden_reason_id":null,"deleted_at":null,"trust_level":2},{"id":3655,"post_number":7,"post_type":1,"created_at":"2013-02-07T09:08:17-05:00","updated_at":"2013-02-07T09:12:02-05:00","reply_count":1,"reply_to_post_number":6,"quote_count":1,"avg_time":18,"incoming_link_count":0,"reads":245,"score":69.9,"yours":false,"topic_slug":"internationalization-localization","topic_id":280,"display_username":"Pekka Gaiser","version":1,"can_edit":null,"can_delete":null,"can_recover":false,"link_counts":[{"url":"http://translate.wordpress.org/projects/bbpress/dev","internal":false,"reflection":false,"clicks":13}],"cooked":"<p>Looks interesting, I'll take a peek.</p>\n\n<p>As said on dev, the best tool I can see in terms of giving translators a proper interface <em>and</em> quality control would be something like <a href=\"http://translate.wordpress.org/projects/bbpress/dev\">GlotPress</a>. It's based on the PO messages format (is that somehow related to ICU?) but looks pretty great.</p>\n\n<p></p><aside class=\"quote\" data-post=\"6\" data-topic=\"280\"><div class=\"title\">\n <div class=\"quote-controls\"></div>\n <img width=\"20\" height=\"20\" src=\"http://www.gravatar.com/avatar/3dcae8378d46c244172a115c28ca49ce.png?s=40&amp;r=pg&amp;d=identicon\" class=\"avatar \" title=\"\">\n sam\n said:\n </div>\n <blockquote>fuzzy matching for localization</blockquote>\n</aside><p></p>\n\n<p>I'm not familiar with the term in this context, you mean keeping the English version in the code base (instead of a generic code like <code>message_error_nametooshort</code> ?)</p>","read":false,"username":"pekka","name":"Pekka Gaiser","user_title":null,"actions_summary":[{"id":2,"count":1,"hidden":false,"can_act":null},{"id":3,"count":0,"hidden":false,"can_act":null},{"id":4,"count":0,"hidden":false,"can_act":null},{"id":5,"count":0,"hidden":true,"can_act":null},{"id":6,"count":0,"hidden":false,"can_act":null},{"id":7,"count":0,"hidden":false,"can_act":null},{"id":8,"count":0,"hidden":false,"can_act":null}],"moderator":false,"staff":false,"avatar_template":"https://www.gravatar.com/avatar/100a6c42a31a56e882475725d65537f8.png?s={size}&r=pg&d=identicon","user_id":7,"hidden":false,"hidden_reason_id":null,"deleted_at":null,"trust_level":2},{"id":3658,"post_number":8,"post_type":1,"created_at":"2013-02-07T09:12:22-05:00","updated_at":"2013-02-07T09:12:22-05:00","reply_count":1,"reply_to_post_number":7,"quote_count":0,"avg_time":12,"incoming_link_count":0,"reads":222,"score":65.0,"yours":false,"topic_slug":"internationalization-localization","topic_id":280,"display_username":"Sam Saffron","version":1,"can_edit":null,"can_delete":null,"can_recover":false,"link_counts":[{"url":"http://meta.discourse.org/t/what-i-love-about-wordpress-plugins/5697","internal":true,"reflection":true,"title":"What I love about WordPress plugins","clicks":7}],"cooked":"<p>ICU Message format is basically Gettext on steroids, Gettext has been around for so many years and actually works pretty well, being super prevalent in Linux. </p>\n\n<p>Trouble is you need a fuzzy matcher for translators if you are going to store stuff like <code>mf.compile( 'This is a message.' )</code> in source, one letter change and all your translators need to validate it.</p>","read":false,"username":"sam","name":"Sam Saffron","user_title":"Chief Waffle","reply_to_user":{"username":"pekka","name":"Pekka Gaiser"},"actions_summary":[{"id":2,"count":1,"hidden":false,"can_act":null},{"id":3,"count":0,"hidden":false,"can_act":null},{"id":4,"count":0,"hidden":false,"can_act":null},{"id":5,"count":0,"hidden":true,"can_act":null},{"id":6,"count":0,"hidden":false,"can_act":null},{"id":7,"count":0,"hidden":false,"can_act":null},{"id":8,"count":0,"hidden":false,"can_act":null}],"moderator":false,"staff":true,"avatar_template":"https://www.gravatar.com/avatar/3dcae8378d46c244172a115c28ca49ce.png?s={size}&r=pg&d=identicon","user_id":1,"hidden":false,"hidden_reason_id":null,"deleted_at":null,"trust_level":2},{"id":3660,"post_number":9,"post_type":1,"created_at":"2013-02-07T09:14:12-05:00","updated_at":"2013-02-07T09:18:09-05:00","reply_count":1,"reply_to_post_number":8,"quote_count":1,"avg_time":11,"incoming_link_count":0,"reads":221,"score":64.75,"yours":false,"topic_slug":"internationalization-localization","topic_id":280,"display_username":"Pekka Gaiser","version":1,"can_edit":null,"can_delete":null,"can_recover":false,"cooked":"<p></p><aside class=\"quote\" data-post=\"8\" data-topic=\"280\"><div class=\"title\">\n <div class=\"quote-controls\"></div>\n <img width=\"20\" height=\"20\" src=\"http://www.gravatar.com/avatar/3dcae8378d46c244172a115c28ca49ce.png?s=40&amp;r=pg&amp;d=identicon\" class=\"avatar \" title=\"\">\n sam\n said:\n </div>\n <blockquote>one letter change and all your translators need to validate it.</blockquote>\n</aside><p></p>\n\n<p>Yeah, that's why I've always been a friend of <code>message_error_nametooshort</code> placeholders, until I asked the SO question linked above. The accepted answer makes a good argument against those placeholders: you <em>want</em> translations to break even on small changes in the English original because the translations will probably need to reflect the change, too. Maybe that's not the case right now as new stuff is being checked in pretty much every couple of hours, but in the long run, it'll be overwhelmingly true.</p>","read":false,"username":"pekka","name":"Pekka Gaiser","user_title":null,"actions_summary":[{"id":2,"count":1,"hidden":false,"can_act":null},{"id":3,"count":0,"hidden":false,"can_act":null},{"id":4,"count":0,"hidden":false,"can_act":null},{"id":5,"count":0,"hidden":true,"can_act":null},{"id":6,"count":0,"hidden":false,"can_act":null},{"id":7,"count":0,"hidden":false,"can_act":null},{"id":8,"count":0,"hidden":false,"can_act":null}],"moderator":false,"staff":false,"avatar_template":"https://www.gravatar.com/avatar/100a6c42a31a56e882475725d65537f8.png?s={size}&r=pg&d=identicon","user_id":7,"hidden":false,"hidden_reason_id":null,"deleted_at":null,"trust_level":2},{"id":3667,"post_number":10,"post_type":1,"created_at":"2013-02-07T09:25:16-05:00","updated_at":"2013-02-07T09:25:16-05:00","reply_count":1,"reply_to_post_number":9,"quote_count":0,"avg_time":8,"incoming_link_count":0,"reads":211,"score":62.6,"yours":false,"topic_slug":"internationalization-localization","topic_id":280,"display_username":"Tim Stone","version":1,"can_edit":null,"can_delete":null,"can_recover":false,"cooked":"<p>Hmm...You could theoretically also build something into the development process that would monitor changes to the English locale file and make a translator-friendly list of changes between versions.</p>","read":false,"username":"tms","name":"Tim Stone","user_title":null,"reply_to_user":{"username":"pekka","name":"Pekka Gaiser"},"actions_summary":[{"id":2,"count":1,"hidden":false,"can_act":null},{"id":3,"count":0,"hidden":false,"can_act":null},{"id":4,"count":0,"hidden":false,"can_act":null},{"id":5,"count":0,"hidden":true,"can_act":null},{"id":6,"count":0,"hidden":false,"can_act":null},{"id":7,"count":0,"hidden":false,"can_act":null},{"id":8,"count":0,"hidden":false,"can_act":null}],"moderator":false,"staff":false,"avatar_template":"https://www.gravatar.com/avatar/3981cd271c302f5cba628c6b6d2b32ee.png?s={size}&r=pg&d=identicon","user_id":9,"hidden":false,"hidden_reason_id":null,"deleted_at":null,"trust_level":2},{"id":3673,"post_number":11,"post_type":1,"created_at":"2013-02-07T09:30:21-05:00","updated_at":"2013-02-07T09:30:21-05:00","reply_count":1,"reply_to_post_number":10,"quote_count":0,"avg_time":8,"incoming_link_count":0,"reads":207,"score":61.8,"yours":false,"topic_slug":"internationalization-localization","topic_id":280,"display_username":"Sam Saffron","version":1,"can_edit":null,"can_delete":null,"can_recover":false,"cooked":"<p>Yeah, totally, also we could build tools for dev that make introducing string less annoying and make it possible to garbage collect old unused strings, I hate trudging through that file.</p>","read":false,"username":"sam","name":"Sam Saffron","user_title":"Chief Waffle","reply_to_user":{"username":"tms","name":"Tim Stone"},"actions_summary":[{"id":2,"count":1,"hidden":false,"can_act":null},{"id":3,"count":0,"hidden":false,"can_act":null},{"id":4,"count":0,"hidden":false,"can_act":null},{"id":5,"count":0,"hidden":true,"can_act":null},{"id":6,"count":0,"hidden":false,"can_act":null},{"id":7,"count":0,"hidden":false,"can_act":null},{"id":8,"count":0,"hidden":false,"can_act":null}],"moderator":false,"staff":true,"avatar_template":"https://www.gravatar.com/avatar/3dcae8378d46c244172a115c28ca49ce.png?s={size}&r=pg&d=identicon","user_id":1,"hidden":false,"hidden_reason_id":null,"deleted_at":null,"trust_level":2},{"id":3675,"post_number":12,"post_type":1,"created_at":"2013-02-07T09:33:38-05:00","updated_at":"2013-02-07T09:34:39-05:00","reply_count":1,"reply_to_post_number":11,"quote_count":1,"avg_time":9,"incoming_link_count":1,"reads":206,"score":66.65,"yours":false,"topic_slug":"internationalization-localization","topic_id":280,"display_username":"Pekka Gaiser","version":1,"can_edit":null,"can_delete":null,"can_recover":false,"cooked":"<p></p><aside class=\"quote\" data-post=\"11\" data-topic=\"280\" data-full=\"true\"><div class=\"title\">\n <div class=\"quote-controls\"></div>\n <img width=\"20\" height=\"20\" src=\"http://www.gravatar.com/avatar/3dcae8378d46c244172a115c28ca49ce.png?s=40&amp;r=pg&amp;d=identicon\" class=\"avatar \" title=\"\">\n sam\n said:\n </div>\n <blockquote>Yeah, totally, also we could build tools for dev that make introducing string less annoying and make it possible to garbage collect old unused strings, I hate trudging through that file.</blockquote>\n</aside><p></p>\n\n<p>As said, I'd look into whether WP's tools can't be reused for this with some tweaking. They seem to be able to scan a code base for new strings, and make them available automatically to translators.</p>\n\n<p>They're PHP based which isn't ideal, but it looks like they've done a crapload of work to take the hassle out of translations.</p>","read":false,"username":"pekka","name":"Pekka Gaiser","user_title":null,"actions_summary":[{"id":2,"count":1,"hidden":false,"can_act":null},{"id":3,"count":0,"hidden":false,"can_act":null},{"id":4,"count":0,"hidden":false,"can_act":null},{"id":5,"count":0,"hidden":true,"can_act":null},{"id":6,"count":0,"hidden":false,"can_act":null},{"id":7,"count":0,"hidden":false,"can_act":null},{"id":8,"count":0,"hidden":false,"can_act":null}],"moderator":false,"staff":false,"avatar_template":"https://www.gravatar.com/avatar/100a6c42a31a56e882475725d65537f8.png?s={size}&r=pg&d=identicon","user_id":7,"hidden":false,"hidden_reason_id":null,"deleted_at":null,"trust_level":2},{"id":3690,"post_number":13,"post_type":1,"created_at":"2013-02-07T10:05:35-05:00","updated_at":"2013-02-07T10:05:35-05:00","reply_count":0,"reply_to_post_number":null,"quote_count":0,"avg_time":8,"incoming_link_count":9,"reads":212,"score":117.8,"yours":false,"topic_slug":"internationalization-localization","topic_id":280,"display_username":"Valts","version":1,"can_edit":null,"can_delete":null,"can_recover":false,"cooked":"<p>This site looks so nice with all the little tweaks like \"10 minutes ago\" instead of simply time, etc - I wonder if there will also be support for proper pluralization in other languages? That's a pretty hard task though, I don't think I've ever seen a website that has done that. But it would be <em>awesome</em>.</p>","read":false,"username":"Vilx","name":"Valts","user_title":null,"actions_summary":[{"id":2,"count":2,"hidden":false,"can_act":null},{"id":3,"count":0,"hidden":false,"can_act":null},{"id":4,"count":0,"hidden":false,"can_act":null},{"id":5,"count":0,"hidden":true,"can_act":null},{"id":6,"count":0,"hidden":false,"can_act":null},{"id":7,"count":0,"hidden":false,"can_act":null},{"id":8,"count":0,"hidden":false,"can_act":null}],"moderator":false,"staff":false,"avatar_template":"https://www.gravatar.com/avatar/7bd2e50770e937761cfc3811a332bccc.png?s={size}&r=pg&d=identicon","user_id":1216,"hidden":false,"hidden_reason_id":null,"deleted_at":null,"trust_level":2},{"id":3925,"post_number":14,"post_type":1,"created_at":"2013-02-07T14:37:06-05:00","updated_at":"2013-02-07T14:37:06-05:00","reply_count":1,"reply_to_post_number":12,"quote_count":1,"avg_time":9,"incoming_link_count":0,"reads":201,"score":120.65,"yours":false,"topic_slug":"internationalization-localization","topic_id":280,"display_username":"Eric Kidd","version":1,"can_edit":null,"can_delete":null,"can_recover":false,"link_counts":[{"url":"http://www.localeapp.com/","internal":false,"reflection":false,"clicks":44}],"cooked":"<p></p><aside class=\"quote\" data-post=\"12\" data-topic=\"280\"><div class=\"title\">\n <div class=\"quote-controls\"></div>\n <img width=\"20\" height=\"20\" src=\"http://www.gravatar.com/avatar/100a6c42a31a56e882475725d65537f8.png?s=40&amp;r=pg&amp;d=identicon\" class=\"avatar \" title=\"\">\n pekka\n said:\n </div>\n <blockquote>As said, I'd look into whether WP's tools can't be reused for this with some tweaking. They seem to be able to scan a code base for new strings, and make them available automatically to translators.</blockquote>\n</aside><p></p>\n\n<p>I've had pretty decent luck using Localeapp to localize Rails applications:</p>\n\n<p><a href=\"http://www.localeapp.com/\" class=\"onebox\">http://www.localeapp.com/</a></p>\n\n<p>The developer workflow took me about an hour to really get used to, and there were a few minor glitches. But the non-technical translators had very few problems. One limitation: It insists on rewriting all those yaml files full of strings.</p>\n\n<p>Anyway, it's worth a look, and it's free for open source, if I recall correctly. Certainly easier than doing a whole bunch of toolsmithing from scratch.</p>","read":false,"username":"emk","name":"Eric Kidd","user_title":null,"actions_summary":[{"id":2,"count":3,"hidden":false,"can_act":null},{"id":3,"count":0,"hidden":false,"can_act":null},{"id":4,"count":0,"hidden":false,"can_act":null},{"id":5,"count":0,"hidden":true,"can_act":null},{"id":6,"count":0,"hidden":false,"can_act":null},{"id":7,"count":0,"hidden":false,"can_act":null},{"id":8,"count":0,"hidden":false,"can_act":null}],"moderator":false,"staff":false,"avatar_template":"https://www.gravatar.com/avatar/528ca205857ff8f648359dcd3e74c84a.png?s={size}&r=pg&d=identicon","user_id":1860,"hidden":false,"hidden_reason_id":null,"deleted_at":null,"trust_level":1},{"id":3938,"post_number":15,"post_type":1,"created_at":"2013-02-07T14:52:13-05:00","updated_at":"2013-02-07T14:52:13-05:00","reply_count":1,"reply_to_post_number":14,"quote_count":1,"avg_time":8,"incoming_link_count":0,"reads":190,"score":58.4,"yours":false,"topic_slug":"internationalization-localization","topic_id":280,"display_username":"Pekka Gaiser","version":1,"can_edit":null,"can_delete":null,"can_recover":false,"cooked":"<p></p><aside class=\"quote\" data-post=\"14\" data-topic=\"280\"><div class=\"title\">\n <div class=\"quote-controls\"></div>\n <img width=\"20\" height=\"20\" src=\"http://www.gravatar.com/avatar/528ca205857ff8f648359dcd3e74c84a.png?s=40&amp;r=pg&amp;d=identicon\" class=\"avatar \" title=\"\">\n emk\n said:\n </div>\n <blockquote>I've had pretty decent luck using Localeapp to localize Rails applications</blockquote>\n</aside><p></p>\n\n<p>Ohhh. Looking sexy. <em>droool</em></p>","read":false,"username":"pekka","name":"Pekka Gaiser","user_title":null,"actions_summary":[{"id":2,"count":1,"hidden":false,"can_act":null},{"id":3,"count":0,"hidden":false,"can_act":null},{"id":4,"count":0,"hidden":false,"can_act":null},{"id":5,"count":0,"hidden":true,"can_act":null},{"id":6,"count":0,"hidden":false,"can_act":null},{"id":7,"count":0,"hidden":false,"can_act":null},{"id":8,"count":0,"hidden":false,"can_act":null}],"moderator":false,"staff":false,"avatar_template":"https://www.gravatar.com/avatar/100a6c42a31a56e882475725d65537f8.png?s={size}&r=pg&d=identicon","user_id":7,"hidden":false,"hidden_reason_id":null,"deleted_at":null,"trust_level":2},{"id":3982,"post_number":16,"post_type":1,"created_at":"2013-02-07T15:52:22-05:00","updated_at":"2013-02-07T15:52:22-05:00","reply_count":1,"reply_to_post_number":15,"quote_count":1,"avg_time":8,"incoming_link_count":0,"reads":185,"score":57.4,"yours":false,"topic_slug":"internationalization-localization","topic_id":280,"display_username":"Eric Kidd","version":1,"can_edit":null,"can_delete":null,"can_recover":false,"cooked":"<p></p><aside class=\"quote\" data-post=\"15\" data-topic=\"280\"><div class=\"title\">\n <div class=\"quote-controls\"></div>\n <img width=\"20\" height=\"20\" src=\"http://www.gravatar.com/avatar/100a6c42a31a56e882475725d65537f8.png?s=40&amp;r=pg&amp;d=identicon\" class=\"avatar \" title=\"\">\n pekka\n said:\n </div>\n <blockquote>Ohhh. Looking sexy. droool</blockquote>\n</aside><p></p>\n\n<p>Yeah, it's pretty. :-) But there were still some rough edges as of a few months ago.</p>\n\n<p>Whether or not those rough edges are a deal-breaker will probably depends on whether or not localization is already a source of acute pain. If you're already hurting, Localeapp is a pretty useful tool, especially when it comes to enlisting non-technical translators.</p>\n\n<p>But it does require changing how you work with text, and adding one new tool to the mix. So for projects that just don't want to know about non-English languages, it's not yet seamless the way Unicode is these days.</p>\n\n<p>(Sweet forum software, by the way. I was just testing out Egyptian hieroglyphics on the test server, because they're well off the Basic Multilingual Plane, and tend to flush Unicode bugs. Everything worked flawlessly.)</p>","read":false,"username":"emk","name":"Eric Kidd","user_title":null,"actions_summary":[{"id":2,"count":1,"hidden":false,"can_act":null},{"id":3,"count":0,"hidden":false,"can_act":null},{"id":4,"count":0,"hidden":false,"can_act":null},{"id":5,"count":0,"hidden":true,"can_act":null},{"id":6,"count":0,"hidden":false,"can_act":null},{"id":7,"count":0,"hidden":false,"can_act":null},{"id":8,"count":0,"hidden":false,"can_act":null}],"moderator":false,"staff":false,"avatar_template":"https://www.gravatar.com/avatar/528ca205857ff8f648359dcd3e74c84a.png?s={size}&r=pg&d=identicon","user_id":1860,"hidden":false,"hidden_reason_id":null,"deleted_at":null,"trust_level":1},{"id":3989,"post_number":17,"post_type":1,"created_at":"2013-02-07T16:04:15-05:00","updated_at":"2013-02-07T16:04:15-05:00","reply_count":2,"reply_to_post_number":16,"quote_count":1,"avg_time":8,"incoming_link_count":0,"reads":188,"score":63.0,"yours":false,"topic_slug":"internationalization-localization","topic_id":280,"display_username":"Pekka Gaiser","version":1,"can_edit":null,"can_delete":null,"can_recover":false,"cooked":"<p></p><aside class=\"quote\" data-post=\"16\" data-topic=\"280\"><div class=\"title\">\n <div class=\"quote-controls\"></div>\n <img width=\"20\" height=\"20\" src=\"http://www.gravatar.com/avatar/528ca205857ff8f648359dcd3e74c84a.png?s=40&amp;r=pg&amp;d=identicon\" class=\"avatar \" title=\"\">\n emk\n said:\n </div>\n <blockquote>But it does require changing how you work with text, and adding one new tool to the mix. So for projects that just don't want to know about non-English languages, it's not yet seamless the way Unicode is these days.</blockquote>\n</aside><p></p>\n\n<p>Interesting, thanks for the insight. I don't think localization is seriously on their table right now, there's likely to be many other things on the table before it... but it will become an issue sooner or later.</p>","read":false,"username":"pekka","name":"Pekka Gaiser","user_title":null,"actions_summary":[{"id":2,"count":1,"hidden":false,"can_act":null},{"id":3,"count":0,"hidden":false,"can_act":null},{"id":4,"count":0,"hidden":false,"can_act":null},{"id":5,"count":0,"hidden":true,"can_act":null},{"id":6,"count":0,"hidden":false,"can_act":null},{"id":7,"count":0,"hidden":false,"can_act":null},{"id":8,"count":0,"hidden":false,"can_act":null}],"moderator":false,"staff":false,"avatar_template":"https://www.gravatar.com/avatar/100a6c42a31a56e882475725d65537f8.png?s={size}&r=pg&d=identicon","user_id":7,"hidden":false,"hidden_reason_id":null,"deleted_at":null,"trust_level":2},{"id":3996,"post_number":18,"post_type":1,"created_at":"2013-02-07T16:12:06-05:00","updated_at":"2013-02-07T16:12:06-05:00","reply_count":2,"reply_to_post_number":17,"quote_count":0,"avg_time":9,"incoming_link_count":0,"reads":191,"score":108.65,"yours":false,"topic_slug":"internationalization-localization","topic_id":280,"display_username":"Sam Saffron","version":1,"can_edit":null,"can_delete":null,"can_recover":false,"cooked":"<p>I had an idea ... what if in dev mode, you could right-click on a page and get access to all the translations on the page, make your edits and have it refreshed live. </p>\n\n<p>I think it would be awesome, very doable technically.</p>","read":false,"username":"sam","name":"Sam Saffron","user_title":"Chief Waffle","reply_to_user":{"username":"pekka","name":"Pekka Gaiser"},"actions_summary":[{"id":2,"count":4,"hidden":false,"can_act":null},{"id":3,"count":0,"hidden":false,"can_act":null},{"id":4,"count":0,"hidden":false,"can_act":null},{"id":5,"count":0,"hidden":true,"can_act":null},{"id":6,"count":0,"hidden":false,"can_act":null},{"id":7,"count":0,"hidden":false,"can_act":null},{"id":8,"count":0,"hidden":false,"can_act":null}],"moderator":false,"staff":true,"avatar_template":"https://www.gravatar.com/avatar/3dcae8378d46c244172a115c28ca49ce.png?s={size}&r=pg&d=identicon","user_id":1,"hidden":false,"hidden_reason_id":null,"deleted_at":null,"trust_level":2},{"id":4009,"post_number":19,"post_type":1,"created_at":"2013-02-07T16:18:47-05:00","updated_at":"2013-02-07T16:22:10-05:00","reply_count":0,"reply_to_post_number":18,"quote_count":0,"avg_time":9,"incoming_link_count":0,"reads":181,"score":51.65,"yours":false,"topic_slug":"internationalization-localization","topic_id":280,"display_username":"Pekka Gaiser","version":1,"can_edit":null,"can_delete":null,"can_recover":false,"cooked":"<p>That would be fricking cool. There'd still be some leftovers (like error messages that normally never show up, etc.) but you could corral those up on a specific page.</p>\n\n<p>It could have a dropdown giving you all the languages that you have a .yml for in the locale directory, and write the changes into the one selected. I'm sure people would love it.</p>","read":false,"username":"pekka","name":"Pekka Gaiser","user_title":null,"reply_to_user":{"username":"sam","name":"Sam Saffron"},"actions_summary":[{"id":2,"count":1,"hidden":false,"can_act":null},{"id":3,"count":0,"hidden":false,"can_act":null},{"id":4,"count":0,"hidden":false,"can_act":null},{"id":5,"count":0,"hidden":true,"can_act":null},{"id":6,"count":0,"hidden":false,"can_act":null},{"id":7,"count":0,"hidden":false,"can_act":null},{"id":8,"count":0,"hidden":false,"can_act":null}],"moderator":false,"staff":false,"avatar_template":"https://www.gravatar.com/avatar/100a6c42a31a56e882475725d65537f8.png?s={size}&r=pg&d=identicon","user_id":7,"hidden":false,"hidden_reason_id":null,"deleted_at":null,"trust_level":2},{"id":4012,"post_number":20,"post_type":1,"created_at":"2013-02-07T16:22:46-05:00","updated_at":"2013-02-07T16:22:46-05:00","reply_count":0,"reply_to_post_number":null,"quote_count":0,"avg_time":11,"incoming_link_count":1,"reads":181,"score":56.75,"yours":false,"topic_slug":"internationalization-localization","topic_id":280,"display_username":"Marco Ceppi","version":1,"can_edit":null,"can_delete":null,"can_recover":false,"link_counts":[{"url":"https://translations.launchpad.net/","internal":false,"reflection":false,"clicks":7}],"cooked":"<p>If you use gettext format you could leverage <a href=\"https://translations.launchpad.net/\">Launchpad</a> translations and the community behind it.</p>","read":false,"username":"marcoceppi","name":"Marco Ceppi","user_title":null,"actions_summary":[{"id":2,"count":1,"hidden":false,"can_act":null},{"id":3,"count":0,"hidden":false,"can_act":null},{"id":4,"count":0,"hidden":false,"can_act":null},{"id":5,"count":0,"hidden":true,"can_act":null},{"id":6,"count":0,"hidden":false,"can_act":null},{"id":7,"count":0,"hidden":false,"can_act":null},{"id":8,"count":0,"hidden":false,"can_act":null}],"moderator":false,"staff":false,"avatar_template":"https://www.gravatar.com/avatar/4ddc8924e79bcec03256821af65fca91.png?s={size}&r=pg&d=identicon","user_id":761,"hidden":false,"hidden_reason_id":null,"deleted_at":null,"trust_level":2},{"id":4025,"post_number":21,"post_type":1,"created_at":"2013-02-07T16:36:14-05:00","updated_at":"2013-02-07T16:36:14-05:00","reply_count":0,"reply_to_post_number":18,"quote_count":2,"avg_time":19,"incoming_link_count":2,"reads":190,"score":153.95,"yours":false,"topic_slug":"internationalization-localization","topic_id":280,"display_username":"Eric Kidd","version":1,"can_edit":null,"can_delete":null,"can_recover":false,"link_counts":[{"url":"http://www.localeapp.com/projects/1537/translations?utf8=%E2%9C%93&search=source_code","internal":false,"reflection":false,"clicks":17}],"cooked":"<p></p><aside class=\"quote\" data-post=\"18\" data-topic=\"280\"><div class=\"title\">\n <div class=\"quote-controls\"></div>\n <img width=\"20\" height=\"20\" src=\"http://www.gravatar.com/avatar/3dcae8378d46c244172a115c28ca49ce.png?s=40&amp;r=pg&amp;d=identicon\" class=\"avatar \" title=\"\">\n sam\n said:\n </div>\n <blockquote>I had an idea ... what if in dev mode, you could right-click on a page and get access to all the translations on the page, make your edits and have it refreshed live.</blockquote>\n</aside><p></p>\n\n<p>One of the modes in LocaleApp is actually pretty great for this sort of work. When I'm coding, I just type something like like the following:</p>\n\n<pre><code> link_to t('.source_code'), langforums_github_url\n</code></pre>\n\n<p>Then I reload the page, and I see a bunch of <a href=\"http://www.localeapp.com/projects/1537/translations?utf8=%E2%9C%93&amp;search=source_code\">empty boxes on this page here (this link is real)</a>:</p>\n\n<p><img src=\"http://cdn.discourse.org/uploads/meta_discourse/155/capture2.png\" width=\"436\" height=\"282\"></p>\n\n<p>Then I fill in the two languages that I allegedly speak, and everything shows up automatically on the next reload. I can sync the translations back down into my local yaml file with one command, or ask for it to happen automagically.</p>\n\n<p>So it's definitely a little more work than just typing \"Source code langforums.org\" directly into the view source. But if you need to localize, it's really pretty reasonable. And the interface for translators is quite easy to use.</p>\n\n<p>As of a few months ago, LocaleApp was far-and-away the best option for Rails localization. But as you can see, it takes a couple of extra steps.</p>\n\n<p></p><aside class=\"quote\" data-post=\"17\" data-topic=\"280\"><div class=\"title\">\n <div class=\"quote-controls\"></div>\n <img width=\"20\" height=\"20\" src=\"http://www.gravatar.com/avatar/100a6c42a31a56e882475725d65537f8.png?s=40&amp;r=pg&amp;d=identicon\" class=\"avatar \" title=\"\">\n pekka\n said:\n </div>\n <blockquote>I don't think localization is seriously on their table right now, there's likely to be many other things on the table before it... but it will become an issue sooner or later.</blockquote>\n</aside><p></p>\n\n<p>I'm generally in favor of localization, especially for big open source projects. I think most of the groundwork has already been laid, actually. And if you give translators halfway-decent tools, it's easy to find volunteers.</p>","read":false,"username":"emk","name":"Eric Kidd","user_title":null,"actions_summary":[{"id":2,"count":3,"hidden":false,"can_act":null},{"id":3,"count":0,"hidden":false,"can_act":null},{"id":4,"count":0,"hidden":false,"can_act":null},{"id":5,"count":0,"hidden":true,"can_act":null},{"id":6,"count":0,"hidden":false,"can_act":null},{"id":7,"count":0,"hidden":false,"can_act":null},{"id":8,"count":0,"hidden":false,"can_act":null}],"moderator":false,"staff":false,"avatar_template":"https://www.gravatar.com/avatar/528ca205857ff8f648359dcd3e74c84a.png?s={size}&r=pg&d=identicon","user_id":1860,"hidden":false,"hidden_reason_id":null,"deleted_at":null,"trust_level":1}],"stream":[398,419,1060,3623,3651,3654,3655,3658,3660,3667,3673,3675,3690,3925,3938,3982,3989,3996,4009,4012,4025,4056,4058,4093,4129,6288,6302,6683,6687,7059,7078,7197,7445,7448,7524,7528,7784,8379,8426,8427,8569,8570,8577,8861,8992,8999,9000,9002,9015,9048,9052,9104,9408,9435,9625,9631,9655,9896,10386,10400,10547,10671,10700,10710,10714,10753,10786,10846,10893,10994,11001,11107,11221,11225,11229,11251,11660,12453,12454,12462,12624,12625,12627,12628,12629,12630,12918,13501,13507,17251,17252,17977,20706,21397]},"draft":null,"draft_key":"topic_280","draft_sequence":null,"pinned":false,"details":{"auto_close_at":null,"created_by":{"id":255,"username":"uwe_keim","avatar_template":"https://www.gravatar.com/avatar/53a82f701ae492808834e621de2586eb.png?s={size}&r=pg&d=identicon"},"last_poster":{"id":5683,"username":"AndreKR","avatar_template":"https://www.gravatar.com/avatar/3ad32697402bb21379768728e8640a22.png?s={size}&r=pg&d=identicon"},"participants":[{"id":212,"username":"alxndr","avatar_template":"https://www.gravatar.com/avatar/51c9cfe3d5ebd64a79983aa3117f4aed.png?s={size}&r=pg&d=identicon","post_count":11},{"id":1,"username":"sam","avatar_template":"https://www.gravatar.com/avatar/3dcae8378d46c244172a115c28ca49ce.png?s={size}&r=pg&d=identicon","post_count":11},{"id":7,"username":"pekka","avatar_template":"https://www.gravatar.com/avatar/100a6c42a31a56e882475725d65537f8.png?s={size}&r=pg&d=identicon","post_count":7},{"id":461,"username":"kuba","avatar_template":"https://www.gravatar.com/avatar/1835cb6a5f35bd4089e416a99af90f5f.png?s={size}&r=pg&d=identicon","post_count":7},{"id":2995,"username":"tattoo","avatar_template":"https://www.gravatar.com/avatar/645454e097898e3f0d9a54c699995678.png?s={size}&r=pg&d=identicon","post_count":6},{"id":2540,"username":"jgourdon","avatar_template":"https://www.gravatar.com/avatar/3f0ee7e17ec820c458958ed7b0e8538b.png?s={size}&r=pg&d=identicon","post_count":5},{"id":1860,"username":"emk","avatar_template":"https://www.gravatar.com/avatar/528ca205857ff8f648359dcd3e74c84a.png?s={size}&r=pg&d=identicon","post_count":4},{"id":1275,"username":"dacap","avatar_template":"https://www.gravatar.com/avatar/ec0ebc7c17f649d03ee78d4eba56ef73.png?s={size}&r=pg&d=identicon","post_count":4},{"id":19,"username":"eviltrout","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","post_count":3},{"id":3704,"username":"mojzis","avatar_template":"https://www.gravatar.com/avatar/90847dfc44c19a250e9000bcfc7d1507.png?s={size}&r=pg&d=identicon","post_count":3},{"id":1895,"username":"maciek","avatar_template":"https://www.gravatar.com/avatar/e3fe0c49f509994d67045602f49808ee.png?s={size}&r=pg&d=identicon","post_count":3},{"id":3190,"username":"gururea","avatar_template":"https://www.gravatar.com/avatar/5ffb222c9c1bd2d99d9267c1557ca984.png?s={size}&r=pg&d=identicon","post_count":3},{"id":9,"username":"tms","avatar_template":"https://www.gravatar.com/avatar/3981cd271c302f5cba628c6b6d2b32ee.png?s={size}&r=pg&d=identicon","post_count":2},{"id":3620,"username":"potthast","avatar_template":"https://www.gravatar.com/avatar/1753724263a5dee3e38790e6ac3d685c.png?s={size}&r=pg&d=identicon","post_count":2},{"id":1979,"username":"Superuser","avatar_template":"https://www.gravatar.com/avatar/a7f1529299c8fb9a263b8e8afcab23da.png?s={size}&r=pg&d=identicon","post_count":2},{"id":22,"username":"splattne","avatar_template":"https://www.gravatar.com/avatar/7847006dbf49f1722b07c8da396f1275.png?s={size}&r=pg&d=identicon","post_count":2},{"id":3818,"username":"Tudor","avatar_template":"https://www.gravatar.com/avatar/8f367608e1d013beed72a8941bb768ca.png?s={size}&r=pg&d=identicon","post_count":2},{"id":32,"username":"codinghorror","avatar_template":"https://www.gravatar.com/avatar/51d623f33f8b83095db84ff35e15dbe8.png?s={size}&r=pg&d=identicon","post_count":2},{"id":255,"username":"uwe_keim","avatar_template":"https://www.gravatar.com/avatar/53a82f701ae492808834e621de2586eb.png?s={size}&r=pg&d=identicon","post_count":1},{"id":2753,"username":"mikl","avatar_template":"https://www.gravatar.com/avatar/2c3b9882e6898958b892a218b5493af9.png?s={size}&r=pg&d=identicon","post_count":1},{"id":5052,"username":"vulkanino","avatar_template":"https://www.gravatar.com/avatar/811bf232b634245aebba5323462d885c.png?s={size}&r=pg&d=identicon","post_count":1},{"id":761,"username":"marcoceppi","avatar_template":"https://www.gravatar.com/avatar/4ddc8924e79bcec03256821af65fca91.png?s={size}&r=pg&d=identicon","post_count":1},{"id":2316,"username":"pakl","avatar_template":"https://www.gravatar.com/avatar/42910619ef3d550e37f7150caa0d94ff.png?s={size}&r=pg&d=identicon","post_count":1},{"id":5564,"username":"Sjors","avatar_template":"https://www.gravatar.com/avatar/2fb09bd6501779802459a171d3f8fbd9.png?s={size}&r=pg&d=identicon","post_count":1}],"suggested_topics":[{"id":2231,"fancy_title":"Post history - saving individual versions of edited posts","slug":"post-history-saving-individual-versions-of-edited-posts","posts_count":6,"reply_count":1,"highest_post_number":6,"image_url":null,"created_at":"2013-02-07T15:09:30-05:00","last_posted_at":"2013-02-14T03:20:42-05:00","bumped":true,"bumped_at":"2013-02-14T03:20:42-05:00","unseen":false,"title":"Post history - saving individual versions of edited posts","pinned":false,"visible":true,"closed":false,"archived":false,"archetype":"regular","like_count":2,"views":90,"category":{"id":2,"name":"feature","color":"0E76BD","text_color":"FFFFFF","slug":"feature","topic_count":389,"description":"Discussion about features or potential features of Discourse: how they work, why they work, etc.","topic_url":"/t/category-definition-for-feature/11","hotness":5.0,"secure":false,"groups":[],"available_groups":["admins","moderators","my_group","staff","trust_level_1","trust_level_2","trust_level_3","trust_level_4","trust_level_5"],"auto_close_days":null}},{"id":6765,"fancy_title":"Discourse as a livetweet/stream chat alternative","slug":"discourse-as-a-livetweet-stream-chat-alternative","posts_count":8,"reply_count":4,"highest_post_number":8,"image_url":null,"created_at":"2013-05-21T10:31:14-04:00","last_posted_at":"2013-05-28T09:27:10-04:00","bumped":true,"bumped_at":"2013-05-28T09:27:10-04:00","unseen":false,"title":"Discourse as a livetweet/stream chat alternative","pinned":false,"visible":true,"closed":false,"archived":false,"archetype":"regular","like_count":1,"views":179,"category":{"id":2,"name":"feature","color":"0E76BD","text_color":"FFFFFF","slug":"feature","topic_count":389,"description":"Discussion about features or potential features of Discourse: how they work, why they work, etc.","topic_url":"/t/category-definition-for-feature/11","hotness":5.0,"secure":false,"groups":[],"available_groups":["admins","moderators","my_group","staff","trust_level_1","trust_level_2","trust_level_3","trust_level_4","trust_level_5"],"auto_close_days":null}},{"id":5838,"fancy_title":"Mini Onebox support","slug":"mini-onebox-support","posts_count":2,"reply_count":0,"highest_post_number":2,"image_url":null,"created_at":"2013-04-12T18:59:32-04:00","last_posted_at":"2013-04-15T18:01:09-04:00","bumped":true,"bumped_at":"2013-04-15T18:01:09-04:00","unseen":false,"title":"Mini Onebox support","pinned":false,"visible":true,"closed":false,"archived":false,"archetype":"regular","like_count":5,"views":158,"category":{"id":2,"name":"feature","color":"0E76BD","text_color":"FFFFFF","slug":"feature","topic_count":389,"description":"Discussion about features or potential features of Discourse: how they work, why they work, etc.","topic_url":"/t/category-definition-for-feature/11","hotness":5.0,"secure":false,"groups":[],"available_groups":["admins","moderators","my_group","staff","trust_level_1","trust_level_2","trust_level_3","trust_level_4","trust_level_5"],"auto_close_days":null}},{"id":7664,"fancy_title":"Topic Progress Bar Shading Too Faint","slug":"topic-progress-bar-shading-too-faint","posts_count":4,"reply_count":2,"highest_post_number":4,"image_url":"https://www.gravatar.com/avatar/51d623f33f8b83095db84ff35e15dbe8.png?s=40&r=pg&d=identicon","created_at":"2013-06-20T15:21:33-04:00","last_posted_at":"2013-06-21T13:47:59-04:00","bumped":true,"bumped_at":"2013-06-21T13:47:59-04:00","unseen":false,"title":"Topic Progress Bar Shading Too Faint","pinned":false,"visible":true,"closed":false,"archived":false,"archetype":"regular","like_count":2,"views":59,"category":{"id":2,"name":"feature","color":"0E76BD","text_color":"FFFFFF","slug":"feature","topic_count":389,"description":"Discussion about features or potential features of Discourse: how they work, why they work, etc.","topic_url":"/t/category-definition-for-feature/11","hotness":5.0,"secure":false,"groups":[],"available_groups":["admins","moderators","my_group","staff","trust_level_1","trust_level_2","trust_level_3","trust_level_4","trust_level_5"],"auto_close_days":null}},{"id":7417,"fancy_title":"Oneboxing &ldquo;non-traditional&rdquo; URLs","slug":"oneboxing-non-traditional-urls","posts_count":9,"reply_count":7,"highest_post_number":9,"image_url":null,"created_at":"2013-06-12T11:42:19-04:00","last_posted_at":"2013-06-12T21:19:07-04:00","bumped":true,"bumped_at":"2013-06-12T21:19:07-04:00","unseen":false,"title":"Oneboxing \"non-traditional\" URLs","pinned":false,"visible":true,"closed":false,"archived":false,"archetype":"regular","like_count":4,"views":94,"category":{"id":2,"name":"feature","color":"0E76BD","text_color":"FFFFFF","slug":"feature","topic_count":389,"description":"Discussion about features or potential features of Discourse: how they work, why they work, etc.","topic_url":"/t/category-definition-for-feature/11","hotness":5.0,"secure":false,"groups":[],"available_groups":["admins","moderators","my_group","staff","trust_level_1","trust_level_2","trust_level_3","trust_level_4","trust_level_5"],"auto_close_days":null}}],"links":[{"url":"https://github.com/discourse/discourse/blob/master/config/locales/en.yml","title":null,"fancy_title":null,"internal":false,"reflection":false,"clicks":"71","user_id":9},{"url":"http://stackoverflow.com/questions/4232922/why-do-people-use-plain-english-as-translation-placeholders","title":null,"fancy_title":null,"internal":false,"reflection":false,"clicks":"47","user_id":7},{"url":"http://www.localeapp.com/","title":null,"fancy_title":null,"internal":false,"reflection":false,"clicks":"44","user_id":1860},{"url":"https://github.com/SlexAxton/messageformat.js","title":null,"fancy_title":null,"internal":false,"reflection":false,"clicks":"34","user_id":1},{"url":"http://meta.discourse.org/t/language-mirrors/2378/2","title":"Language mirrors","fancy_title":null,"internal":true,"reflection":true,"clicks":"30","user_id":32},{"url":"https://github.com/berk/tr8n","title":null,"fancy_title":null,"internal":false,"reflection":false,"clicks":"18","user_id":1},{"url":"http://meta.discourse.org/t/roadplan-for-discourse/2939/5","title":"Roadplan for Discourse","fancy_title":null,"internal":true,"reflection":true,"clicks":"18","user_id":32},{"url":"http://meta.discourse.org/t/internationalization-i18n-provided-for-discourse-/2073/2","title":"Internationalization I18n provided for discourse ?","fancy_title":null,"internal":true,"reflection":true,"clicks":"17","user_id":114},{"url":"http://www.localeapp.com/projects/1537/translations?utf8=%E2%9C%93&search=source_code","title":null,"fancy_title":null,"internal":false,"reflection":false,"clicks":"17","user_id":1860},{"url":"https://translations.launchpad.net/","title":null,"fancy_title":null,"internal":false,"reflection":false,"clicks":"14","user_id":761},{"url":"https://www.transifex.com/","title":null,"fancy_title":null,"internal":false,"reflection":false,"clicks":"14","user_id":1979},{"url":"http://translate.wordpress.org/projects/bbpress/dev","title":null,"fancy_title":null,"internal":false,"reflection":false,"clicks":"13","user_id":7},{"url":"http://meta.discourse.org/t/hi-support-chinese/4393/6","title":"Hi, support Chinese?","fancy_title":null,"internal":true,"reflection":true,"clicks":"12","user_id":2014},{"url":"http://weblate.org","title":null,"fancy_title":null,"internal":false,"reflection":false,"clicks":"11","user_id":2316},{"url":"https://github.com/SlexAxton","title":null,"fancy_title":null,"internal":false,"reflection":false,"clicks":"8","user_id":1},{"url":"https://github.com/discourse/discourse/pull/493","title":null,"fancy_title":null,"internal":false,"reflection":false,"clicks":"7","user_id":2753},{"url":"http://meta.discourse.org/t/what-i-love-about-wordpress-plugins/5697","title":"What I love about WordPress plugins","fancy_title":null,"internal":true,"reflection":true,"clicks":"7","user_id":1},{"url":"http://meta.discourse.org/t/solving-xda-developer-style-forums/4368/4","title":"Solving XDA-Developer style forums","fancy_title":null,"internal":true,"reflection":true,"clicks":"6","user_id":639},{"url":"https://github.com/gururea/discourse/tree/master/config/locales","title":null,"fancy_title":null,"internal":false,"reflection":false,"clicks":"6","user_id":3190},{"url":"http://www.getlocalization.com/","title":null,"fancy_title":null,"internal":false,"reflection":false,"clicks":"5","user_id":22},{"url":"http://tr8n.github.com/","title":null,"fancy_title":null,"internal":false,"reflection":false,"clicks":"5","user_id":212},{"url":"/users/codinghorror","title":null,"fancy_title":null,"internal":true,"reflection":false,"clicks":"5","user_id":7},{"url":"http://meta.discourse.org/t/how-to-change-language/6900/2","title":"How to change language?","fancy_title":null,"internal":true,"reflection":true,"clicks":"5","user_id":1995},{"url":"https://github.com/discourse/discourse/blob/master/config/locales/client.en.yml#L691","title":null,"fancy_title":null,"internal":false,"reflection":false,"clicks":"4","user_id":461},{"url":"https://github.com/dacap/discourse/tree/spanish","title":null,"fancy_title":null,"internal":false,"reflection":false,"clicks":"4","user_id":1275},{"url":"https://github.com/discourse/discourse/blob/master/config/locales/client.nl.yml","title":null,"fancy_title":null,"internal":false,"reflection":false,"clicks":"4","user_id":461},{"url":"http://meta.discourse.org/t/translation-workflow/6102","title":"Translation workflow","fancy_title":null,"internal":true,"reflection":true,"clicks":"3","user_id":4702},{"url":"http://translate.sourceforge.net/wiki/virtaal/index","title":null,"fancy_title":null,"internal":false,"reflection":false,"clicks":"3","user_id":1979},{"url":"http://meta.discourse.org/t/bookmark-last-read-sometimes-doesn-t-go-to-the-end-of-a-topic/4825/9","title":"Bookmark/last read sometimes doesn't go to the end of a topic","fancy_title":null,"internal":true,"reflection":true,"clicks":"3","user_id":3681},{"url":"https://github.com/discourse/discourse/blob/master/config/locales","title":null,"fancy_title":null,"internal":false,"reflection":false,"clicks":"3","user_id":32},{"url":"https://github.com/discourse/discourse/commit/c5761eae8afe37e20cec0d0f9d14b85b6e585bda","title":null,"fancy_title":null,"internal":false,"reflection":false,"clicks":"3","user_id":212},{"url":"http://meta.discourse.org/t/failed-to-create-new-category-when-set-the-default-locale-to-zh-cn/4703","title":"Failed to create new category when set the default_locale to zh_CN","fancy_title":null,"internal":true,"reflection":false,"clicks":"3","user_id":2995},{"url":"http://meta.discourse.org/t/comrades-let-s-join-our-efforts-on-ukrainian-and-russian-translations/4403/5","title":"Comrades let's join our efforts on ukrainian and russian translations","fancy_title":null,"internal":true,"reflection":true,"clicks":"3","user_id":3417},{"url":"http://en.lichess.org/@/Hellball","title":null,"fancy_title":null,"internal":false,"reflection":false,"clicks":"2","user_id":1979},{"url":"http://www.youtube.com/watch?v=MqqdzJ98q7s","title":null,"fancy_title":null,"internal":false,"reflection":false,"clicks":"2","user_id":212},{"url":"https://github.com/alxndr/discourse/blob/i18n-chinese/config/locales/server.zh.yml","title":null,"fancy_title":null,"internal":false,"reflection":false,"clicks":"2","user_id":212},{"url":"http://pootle.locamotion.org/","title":null,"fancy_title":null,"internal":false,"reflection":false,"clicks":"2","user_id":3190},{"url":"http://www.madanalogy.com/2012/06/rails-i18n-translations-in-yaml.html","title":null,"fancy_title":null,"internal":false,"reflection":false,"clicks":"2","user_id":3190},{"url":"http://meta.discourse.org/t/suggestion-translation-on-admin-panel/6923/5","title":"Suggestion: Translation on admin panel","fancy_title":null,"internal":true,"reflection":true,"clicks":"2","user_id":1},{"url":"https://poeditor.com/","title":null,"fancy_title":null,"internal":false,"reflection":false,"clicks":"2","user_id":1979},{"url":"http://www.slideshare.net/HeatherRivers/linguistic-potluck-crowdsourcing-localization-with-rails","title":null,"fancy_title":null,"internal":false,"reflection":false,"clicks":"2","user_id":212},{"url":"http://blog.discourse.org/2013/04/discourse-as-your-first-rails-app/","title":null,"fancy_title":null,"internal":false,"reflection":false,"clicks":"2","user_id":1995},{"url":"http://meta.discourse.org/t/missing-user-value-in-chinese-localized-page/7406/6","title":"[missing {{user}} value] in Chinese localized page","fancy_title":null,"internal":true,"reflection":true,"clicks":"1","user_id":1},{"url":"http://meta.discourse.org/t/translation-workflow/6102/6","title":"Translation workflow","fancy_title":null,"internal":true,"reflection":false,"clicks":"1","user_id":1995},{"url":"http://en.wikipedia.org/wiki/T%E2%80%93V_distinction","title":null,"fancy_title":null,"internal":false,"reflection":false,"clicks":"1","user_id":3620},{"url":"http://meta.discourse.org/t/when-will-discourse-provide-an-local-language-configuration/7068/2","title":"When will discourse provide an local language configuration","fancy_title":null,"internal":true,"reflection":true,"clicks":"1","user_id":3987},{"url":"https://github.com/discourse/discourse/blob/master/app/assets/javascripts/locales/date_locales.js","title":null,"fancy_title":null,"internal":false,"reflection":false,"clicks":"0","user_id":461},{"url":"http://meta.discourse.org/t/translation-tools-transifex-localeapp/7763","title":"Translation Tools: Transifex? Localeapp?","fancy_title":null,"internal":true,"reflection":true,"clicks":"0","user_id":2},{"url":"http://meta.discourse.org/t/suggestion-translation-on-admin-panel/6923/6","title":"Suggestion: Translation on admin panel","fancy_title":null,"internal":true,"reflection":true,"clicks":"0","user_id":1},{"url":"http://sugarjs.com/dates#date_locales","title":null,"fancy_title":null,"internal":false,"reflection":false,"clicks":"0","user_id":461},{"url":"http://meta.discourse.org/t/i-like-discourse-want-join-discourse-translation-team/6679/3","title":"I like discourse,want join discourse translation team","fancy_title":null,"internal":true,"reflection":true,"clicks":"0","user_id":1995},{"url":"http://guides.rubyonrails.org/i18n.html#the-public-i18n-api","title":null,"fancy_title":null,"internal":false,"reflection":false,"clicks":"0","user_id":1895}]},"highest_post_number":95,"id":280,"title":"Internationalization / localization","fancy_title":"Internationalization / localization","posts_count":94,"created_at":"2013-02-05T16:29:00-05:00","views":2314,"reply_count":65,"last_posted_at":"2013-06-25T21:50:28-04:00","visible":true,"closed":false,"archived":false,"has_best_of":true,"archetype":"regular","slug":"internationalization-localization","category_id":2};