import I18n from "I18n"; /*jshint maxlen:10000000 */ export default { "/t/280/1.json": { pending_posts: [], post_stream: { posts: [ { id: 398, name: "Uwe Keim", username: "uwe_keim", avatar_template: "/images/avatar.png", uploaded_avatar_id: 5697, created_at: "2013-02-05T21:29:00.280Z", cooked: "

Any plans to support localization of UI elements, so that I (for example) could set up a completely German speaking forum?

", post_number: 1, post_type: 1, updated_at: "2013-02-05T21:29:00.280Z", like_count: 0, reply_count: 1, reply_to_post_number: null, quote_count: 0, incoming_link_count: 314, reads: 475, score: 1702.25, yours: false, topic_id: 280, topic_slug: "internationalization-localization", display_username: "Uwe Keim", primary_group_name: null, version: 1, can_edit: true, can_delete: false, can_recover: true, link_counts: [ { url: "https://meta.discourse.org/t/language-mirrors/2378/2", internal: true, reflection: true, title: "Language mirrors", clicks: 3 }, { url: "https://meta.discourse.org/t/translation-workflow/6102", internal: true, reflection: true, title: "Translation workflow", clicks: 2 }, { url: "https://meta.discourse.org/t/solving-xda-developer-style-forums/4368/4", internal: true, reflection: true, title: "Solving XDA-Developer style forums", clicks: 2 }, { url: "https://meta.discourse.org/t/comrades-lets-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: 1 }, { url: "https://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: 0 }, { url: "https://meta.discourse.org/t/roadplan-for-discourse/2939/5", internal: true, reflection: true, title: "Roadplan for Discourse 2013", clicks: 0 } ], read: true, user_title: null, actions_summary: [ { id: 2, count: 0, hidden: false, can_act: true }, { id: 3, count: 0, hidden: false, can_act: true }, { id: 4, count: 0, hidden: false, can_act: true }, { id: 5, count: 0, hidden: true, can_act: true }, { id: 6, count: 0, hidden: false, can_act: true }, { id: 7, count: 0, hidden: false, can_act: true }, { id: 8, count: 0, hidden: false, can_act: true } ], moderator: false, admin: false, staff: false, user_id: 255, hidden: false, hidden_reason_id: null, trust_level: 2, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false }, { id: 419, name: "Tim Stone", username: "tms", avatar_template: "/images/avatar.png", uploaded_avatar_id: 40181, created_at: "2013-02-05T21:32:47.649Z", cooked: '

The application strings are externalized, so localization should be entirely possible with enough translation effort.

', post_number: 2, post_type: 1, updated_at: "2013-02-06T10:15:27.965Z", like_count: 4, reply_count: 0, reply_to_post_number: null, quote_count: 0, incoming_link_count: 16, reads: 460, score: 308.35, yours: false, topic_id: 280, topic_slug: "internationalization-localization", display_username: "Tim Stone", primary_group_name: null, version: 2, can_edit: true, can_delete: true, can_recover: true, link_counts: [ { url: "https://github.com/discourse/discourse/blob/master/config/locales/en.yml", internal: false, reflection: false, clicks: 118 } ], read: true, user_title: "Great contributor", actions_summary: [ { id: 2, count: 4, hidden: false, can_act: true }, { id: 3, count: 0, hidden: false, can_act: true }, { id: 4, count: 0, hidden: false, can_act: true }, { id: 5, count: 0, hidden: true, can_act: true }, { id: 6, count: 0, hidden: false, can_act: true }, { id: 7, count: 0, hidden: false, can_act: true }, { id: 8, count: 0, hidden: false, can_act: true } ], moderator: false, admin: false, staff: false, user_id: 9, hidden: false, hidden_reason_id: null, trust_level: 2, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false }, { id: 1060, name: "Jeff Atwood", username: "codinghorror", avatar_template: "/images/avatar.png", uploaded_avatar_id: 5297, created_at: "2013-02-06T02:26:24.922Z", cooked: '

Yep, all strings are going through a lookup table.*

\n\n

master/config/locales

\n\n

So you could replace that lookup table with the "de" one to get German.

\n\n

* 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!

', post_number: 3, post_type: 1, updated_at: "2014-02-24T05:23:39.211Z", like_count: 4, reply_count: 3, reply_to_post_number: null, quote_count: 0, incoming_link_count: 5, reads: 449, score: 191.45, yours: false, topic_id: 280, topic_slug: "internationalization-localization", display_username: "Jeff Atwood", primary_group_name: "discourse", version: 4, can_edit: true, can_delete: true, can_recover: true, link_counts: [ { url: "https://github.com/discourse/discourse/blob/master/config/locales", internal: false, reflection: false, title: "discourse/config/locales at master · discourse/discourse · GitHub", clicks: 62 }, { url: "https://meta.discourse.org/t/github-onebox-rendering-issue/7616", internal: true, reflection: true, title: "GitHub OneBox Rendering Issue", clicks: 0 } ], read: true, user_title: "co-founder", actions_summary: [ { id: 2, count: 4, hidden: false, can_act: true }, { id: 3, count: 0, hidden: false, can_act: true }, { id: 4, count: 0, hidden: false, can_act: true }, { id: 5, count: 0, hidden: true, can_act: true }, { id: 6, count: 1, hidden: false, can_act: true }, { id: 7, count: 0, hidden: false, can_act: true }, { id: 8, count: 0, hidden: false, can_act: true } ], moderator: true, admin: true, staff: true, user_id: 32, hidden: false, hidden_reason_id: null, trust_level: 3, deleted_at: null, user_deleted: false, edit_reason: "", can_view_edit_history: true, wiki: false }, { id: 3623, name: "Shade", username: "shade", avatar_template: "/images/avatar.png", uploaded_avatar_id: 8306, created_at: "2013-02-07T12:55:33.129Z", cooked: '

Is it a coincidence that the strings file is 1337 lines long? smiley

', post_number: 4, post_type: 1, updated_at: "2013-02-07T12:55:33.129Z", like_count: 7, reply_count: 0, reply_to_post_number: null, quote_count: 0, incoming_link_count: 15, reads: 401, score: 291.2, yours: false, topic_id: 280, topic_slug: "internationalization-localization", display_username: "Shade", primary_group_name: null, version: 1, can_edit: true, can_delete: true, can_recover: true, link_counts: [ { url: "https://meta.discourse.org/t/hi-support-chinese/4393/6", internal: true, reflection: true, title: "Hi, support Chinese?", clicks: 0 } ], read: true, user_title: null, actions_summary: [ { id: 2, count: 7, hidden: false, can_act: true }, { id: 3, count: 0, hidden: false, can_act: true }, { id: 4, count: 0, hidden: false, can_act: true }, { id: 5, count: 0, hidden: true, can_act: true }, { id: 6, count: 0, hidden: false, can_act: true }, { id: 7, count: 0, hidden: false, can_act: true }, { id: 8, count: 0, hidden: false, can_act: true } ], moderator: false, admin: false, staff: false, user_id: 1808, hidden: false, hidden_reason_id: null, trust_level: 1, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false }, { id: 3651, name: "Pekka Gaiser", username: "pekka", avatar_template: "/images/avatar.png", uploaded_avatar_id: 5253, created_at: "2013-02-07T14:02:07.869Z", cooked: '

\n\n

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 bitch.

\n\n

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.

\n\n

Re keeping track of changed strings, @eviltrout I found this very interesting: http://stackoverflow.com/questions/4232922/why-do-people-use-plain-english-as-translation-placeholders if plain English placeholders were used, any change in strings would lead to a new node in the yml file, making keeping the translation up to date easier. Maybe worth thinking about in the future.

', post_number: 5, post_type: 1, updated_at: "2013-02-07T14:05:42.328Z", like_count: 2, reply_count: 2, reply_to_post_number: 3, quote_count: 1, incoming_link_count: 10, reads: 386, score: 213.3, yours: false, topic_id: 280, topic_slug: "internationalization-localization", display_username: "Pekka Gaiser", primary_group_name: null, version: 1, can_edit: true, can_delete: true, can_recover: true, link_counts: [ { url: "http://stackoverflow.com/questions/4232922/why-do-people-use-plain-english-as-translation-placeholders", internal: false, reflection: false, title: "internationalization - Why do people use plain english as translation placeholders? - Stack Overflow", clicks: 63 } ], read: true, user_title: null, actions_summary: [ { id: 2, count: 2, hidden: false, can_act: true }, { id: 3, count: 0, hidden: false, can_act: true }, { id: 4, count: 0, hidden: false, can_act: true }, { id: 5, count: 0, hidden: true, can_act: true }, { id: 6, count: 0, hidden: false, can_act: true }, { id: 7, count: 0, hidden: false, can_act: true }, { id: 8, count: 0, hidden: false, can_act: true } ], moderator: false, admin: false, staff: false, user_id: 7, hidden: false, hidden_reason_id: null, trust_level: 2, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false }, { id: 3654, name: "Sam Saffron", username: "sam", avatar_template: "/images/avatar.png", uploaded_avatar_id: 5243, created_at: "2013-02-07T14:05:39.910Z", cooked: '

Yes, I really like the concept of fuzzy matching for localization, perhaps you can chase up alex sexton he was meaning to upload a localization tool for this kind of stuff.

\n\n

Also, I am a big fan of ICU message format, but it is not the "Rails way (tm)".

', post_number: 6, post_type: 1, updated_at: "2013-02-07T14:05:39.910Z", like_count: 1, reply_count: 1, reply_to_post_number: 5, quote_count: 0, incoming_link_count: 4, reads: 329, score: 106.65, yours: false, topic_id: 280, topic_slug: "internationalization-localization", display_username: "Sam Saffron", primary_group_name: "discourse", version: 1, can_edit: true, can_delete: true, can_recover: true, link_counts: [ { url: "https://github.com/SlexAxton/messageformat.js", internal: false, reflection: false, title: "SlexAxton/messageformat.js · GitHub", clicks: 46 }, { url: "https://github.com/SlexAxton", internal: false, reflection: false, title: "SlexAxton (Alex Sexton) · GitHub", clicks: 10 } ], read: true, user_title: "co-founder", reply_to_user: { username: "pekka", avatar_template: "/images/avatar.png", uploaded_avatar_id: 5253 }, actions_summary: [ { id: 2, count: 1, hidden: false, can_act: true }, { id: 3, count: 0, hidden: false, can_act: true }, { id: 4, count: 0, hidden: false, can_act: true }, { id: 5, count: 0, hidden: true, can_act: true }, { id: 6, count: 0, hidden: false, can_act: true }, { id: 7, count: 0, hidden: false, can_act: true }, { id: 8, count: 0, hidden: false, can_act: true } ], moderator: true, admin: true, staff: true, user_id: 1, hidden: false, hidden_reason_id: null, trust_level: 4, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false }, { id: 3655, name: "Pekka Gaiser", username: "pekka", avatar_template: "/images/avatar.png", uploaded_avatar_id: 5253, created_at: "2013-02-07T14:08:17.493Z", cooked: '

Looks interesting, I\'ll take a peek.

\n\n

As said on dev, the best tool I can see in terms of giving translators a proper interface and quality control would be something like GlotPress. It\'s based on the PO messages format (is that somehow related to ICU?) but looks pretty great.

\n\n

\n\n

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 message_error_nametooshort ?)

', post_number: 7, post_type: 1, updated_at: "2013-02-07T14:12:02.965Z", like_count: 1, reply_count: 1, reply_to_post_number: 6, quote_count: 1, incoming_link_count: 0, reads: 326, score: 86.0, yours: false, topic_id: 280, topic_slug: "internationalization-localization", display_username: "Pekka Gaiser", primary_group_name: null, version: 1, can_edit: true, can_delete: true, can_recover: true, link_counts: [ { url: "http://translate.wordpress.org/projects/bbpress/dev", internal: false, reflection: false, title: "WordPress › Development < GlotPress", clicks: 16 } ], read: true, user_title: null, actions_summary: [ { id: 2, count: 1, hidden: false, can_act: true }, { id: 3, count: 0, hidden: false, can_act: true }, { id: 4, count: 0, hidden: false, can_act: true }, { id: 5, count: 0, hidden: true, can_act: true }, { id: 6, count: 0, hidden: false, can_act: true }, { id: 7, count: 0, hidden: false, can_act: true }, { id: 8, count: 0, hidden: false, can_act: true } ], moderator: false, admin: false, staff: false, user_id: 7, hidden: false, hidden_reason_id: null, trust_level: 2, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false }, { id: 3658, name: "Sam Saffron", username: "sam", avatar_template: "/images/avatar.png", uploaded_avatar_id: 5243, created_at: "2013-02-07T14:12:22.582Z", cooked: "

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.

\n\n

Trouble is you need a fuzzy matcher for translators if you are going to store stuff like mf.compile( 'This is a message.' ) in source, one letter change and all your translators need to validate it.

", post_number: 8, post_type: 1, updated_at: "2013-02-07T14:12:22.582Z", like_count: 1, reply_count: 1, reply_to_post_number: 7, quote_count: 0, incoming_link_count: 2, reads: 296, score: 89.75, yours: false, topic_id: 280, topic_slug: "internationalization-localization", display_username: "Sam Saffron", primary_group_name: "discourse", version: 1, can_edit: true, can_delete: true, can_recover: true, link_counts: [ { url: "https://meta.discourse.org/t/what-i-love-about-wordpress-plugins/5697", internal: true, reflection: true, title: "What I love about WordPress plugins", clicks: 0 } ], read: true, user_title: "co-founder", reply_to_user: { username: "pekka", avatar_template: "/images/avatar.png", uploaded_avatar_id: 5253 }, actions_summary: [ { id: 2, count: 1, hidden: false, can_act: true }, { id: 3, count: 0, hidden: false, can_act: true }, { id: 4, count: 0, hidden: false, can_act: true }, { id: 5, count: 0, hidden: true, can_act: true }, { id: 6, count: 0, hidden: false, can_act: true }, { id: 7, count: 0, hidden: false, can_act: true }, { id: 8, count: 0, hidden: false, can_act: true } ], moderator: true, admin: true, staff: true, user_id: 1, hidden: false, hidden_reason_id: null, trust_level: 4, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false }, { id: 3660, name: "Pekka Gaiser", username: "pekka", avatar_template: "/images/avatar.png", uploaded_avatar_id: 5253, created_at: "2013-02-07T14:14:12.666Z", cooked: '

\n\n

Yeah, that\'s why I\'ve always been a friend of message_error_nametooshort placeholders, until I asked the SO question linked above. The accepted answer makes a good argument against those placeholders: you want 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.

', post_number: 9, post_type: 1, updated_at: "2013-02-07T14:18:09.569Z", like_count: 1, reply_count: 1, reply_to_post_number: 8, quote_count: 1, incoming_link_count: 0, reads: 293, score: 79.1, yours: false, topic_id: 280, topic_slug: "internationalization-localization", display_username: "Pekka Gaiser", primary_group_name: null, version: 1, can_edit: true, can_delete: true, can_recover: true, read: true, user_title: null, actions_summary: [ { id: 2, count: 1, hidden: false, can_act: true }, { id: 3, count: 0, hidden: false, can_act: true }, { id: 4, count: 0, hidden: false, can_act: true }, { id: 5, count: 0, hidden: true, can_act: true }, { id: 6, count: 0, hidden: false, can_act: true }, { id: 7, count: 0, hidden: false, can_act: true }, { id: 8, count: 0, hidden: false, can_act: true } ], moderator: false, admin: false, staff: false, user_id: 7, hidden: false, hidden_reason_id: null, trust_level: 2, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false }, { id: 3667, name: "Tim Stone", username: "tms", avatar_template: "/images/avatar.png", uploaded_avatar_id: 40181, created_at: "2013-02-07T14:25:16.859Z", cooked: "

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.

", post_number: 10, post_type: 1, updated_at: "2013-02-07T14:25:16.859Z", like_count: 1, reply_count: 1, reply_to_post_number: 9, quote_count: 0, incoming_link_count: 0, reads: 275, score: 75.35, yours: false, topic_id: 280, topic_slug: "internationalization-localization", display_username: "Tim Stone", primary_group_name: null, version: 1, can_edit: true, can_delete: true, can_recover: true, read: true, user_title: "Great contributor", reply_to_user: { username: "pekka", avatar_template: "/images/avatar.png", uploaded_avatar_id: 5253 }, actions_summary: [ { id: 2, count: 1, hidden: false, can_act: true }, { id: 3, count: 0, hidden: false, can_act: true }, { id: 4, count: 0, hidden: false, can_act: true }, { id: 5, count: 0, hidden: true, can_act: true }, { id: 6, count: 0, hidden: false, can_act: true }, { id: 7, count: 0, hidden: false, can_act: true }, { id: 8, count: 0, hidden: false, can_act: true } ], moderator: false, admin: false, staff: false, user_id: 9, hidden: false, hidden_reason_id: null, trust_level: 2, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false }, { id: 3673, name: "Sam Saffron", username: "sam", avatar_template: "/images/avatar.png", uploaded_avatar_id: 5243, created_at: "2013-02-07T14:30:21.401Z", cooked: "

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.

", post_number: 11, post_type: 1, updated_at: "2013-02-07T14:30:21.401Z", like_count: 1, reply_count: 1, reply_to_post_number: 10, quote_count: 0, incoming_link_count: 1, reads: 273, score: 79.95, yours: false, topic_id: 280, topic_slug: "internationalization-localization", display_username: "Sam Saffron", primary_group_name: "discourse", version: 1, can_edit: true, can_delete: true, can_recover: true, read: true, user_title: "co-founder", reply_to_user: { username: "tms", avatar_template: "/images/avatar.png", uploaded_avatar_id: 40181 }, actions_summary: [ { id: 2, count: 1, hidden: false, can_act: true }, { id: 3, count: 0, hidden: false, can_act: true }, { id: 4, count: 0, hidden: false, can_act: true }, { id: 5, count: 0, hidden: true, can_act: true }, { id: 6, count: 0, hidden: false, can_act: true }, { id: 7, count: 0, hidden: false, can_act: true }, { id: 8, count: 0, hidden: false, can_act: true } ], moderator: true, admin: true, staff: true, user_id: 1, hidden: false, hidden_reason_id: null, trust_level: 4, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false }, { id: 3675, name: "Pekka Gaiser", username: "pekka", avatar_template: "/images/avatar.png", uploaded_avatar_id: 5253, created_at: "2013-02-07T14:33:38.280Z", cooked: '

\n\n

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.

\n\n

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.

', post_number: 12, post_type: 1, updated_at: "2013-02-07T14:34:39.910Z", like_count: 1, reply_count: 1, reply_to_post_number: 11, quote_count: 1, incoming_link_count: 2, reads: 273, score: 84.95, yours: false, topic_id: 280, topic_slug: "internationalization-localization", display_username: "Pekka Gaiser", primary_group_name: null, version: 1, can_edit: true, can_delete: true, can_recover: true, read: true, user_title: null, actions_summary: [ { id: 2, count: 1, hidden: false, can_act: true }, { id: 3, count: 0, hidden: false, can_act: true }, { id: 4, count: 0, hidden: false, can_act: true }, { id: 5, count: 0, hidden: true, can_act: true }, { id: 6, count: 0, hidden: false, can_act: true }, { id: 7, count: 0, hidden: false, can_act: true }, { id: 8, count: 0, hidden: false, can_act: true } ], moderator: false, admin: false, staff: false, user_id: 7, hidden: false, hidden_reason_id: null, trust_level: 2, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false }, { id: 3690, name: "Valts", username: "Vilx", avatar_template: "/images/avatar.png", uploaded_avatar_id: 7299, created_at: "2013-02-07T15:05:35.867Z", cooked: "

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 awesome.

", post_number: 13, post_type: 1, updated_at: "2013-02-07T15:05:35.867Z", like_count: 3, reply_count: 0, reply_to_post_number: null, quote_count: 0, incoming_link_count: 11, reads: 290, score: 158.35, yours: false, topic_id: 280, topic_slug: "internationalization-localization", display_username: "Valts", primary_group_name: null, version: 1, can_edit: true, can_delete: true, can_recover: true, read: true, user_title: null, actions_summary: [ { id: 2, count: 3, hidden: false, can_act: true }, { id: 3, count: 0, hidden: false, can_act: true }, { id: 4, count: 0, hidden: false, can_act: true }, { id: 5, count: 0, hidden: true, can_act: true }, { id: 6, count: 0, hidden: false, can_act: true }, { id: 7, count: 0, hidden: false, can_act: true }, { id: 8, count: 0, hidden: false, can_act: true } ], moderator: false, admin: false, staff: false, user_id: 1216, hidden: false, hidden_reason_id: null, trust_level: 2, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false }, { id: 3925, name: "Eric Kidd", username: "emk", avatar_template: "/images/avatar.png", uploaded_avatar_id: 8400, created_at: "2013-02-07T19:37:06.194Z", cooked: '

\n\n

I\'ve had pretty decent luck using Localeapp to localize Rails applications:

\n\n

http://www.localeapp.com/

\n\n

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.

\n\n

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.

', post_number: 14, post_type: 1, updated_at: "2013-02-07T19:37:06.194Z", like_count: 3, reply_count: 1, reply_to_post_number: 12, quote_count: 1, incoming_link_count: 0, reads: 283, score: 137.05, yours: false, topic_id: 280, topic_slug: "internationalization-localization", display_username: "Eric Kidd", primary_group_name: null, version: 1, can_edit: true, can_delete: true, can_recover: true, link_counts: [ { url: "http://www.localeapp.com/", internal: false, reflection: false, title: "Easy localization for Rails apps | Locale", clicks: 69 } ], read: true, user_title: null, actions_summary: [ { id: 2, count: 3, hidden: false, can_act: true }, { id: 3, count: 0, hidden: false, can_act: true }, { id: 4, count: 0, hidden: false, can_act: true }, { id: 5, count: 0, hidden: true, can_act: true }, { id: 6, count: 0, hidden: false, can_act: true }, { id: 7, count: 0, hidden: false, can_act: true }, { id: 8, count: 0, hidden: false, can_act: true } ], moderator: false, admin: false, staff: false, user_id: 1860, hidden: false, hidden_reason_id: null, trust_level: 1, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false }, { id: 3938, name: "Pekka Gaiser", username: "pekka", avatar_template: "/images/avatar.png", uploaded_avatar_id: 5253, created_at: "2013-02-07T19:52:13.748Z", cooked: '

\n\n

Ohhh. Looking sexy. droool

', post_number: 15, post_type: 1, updated_at: "2013-02-07T19:52:13.748Z", like_count: 1, reply_count: 1, reply_to_post_number: 14, quote_count: 1, incoming_link_count: 0, reads: 260, score: 72.35, yours: false, topic_id: 280, topic_slug: "internationalization-localization", display_username: "Pekka Gaiser", primary_group_name: null, version: 1, can_edit: true, can_delete: true, can_recover: true, read: true, user_title: null, actions_summary: [ { id: 2, count: 1, hidden: false, can_act: true }, { id: 3, count: 0, hidden: false, can_act: true }, { id: 4, count: 0, hidden: false, can_act: true }, { id: 5, count: 0, hidden: true, can_act: true }, { id: 6, count: 0, hidden: false, can_act: true }, { id: 7, count: 0, hidden: false, can_act: true }, { id: 8, count: 0, hidden: false, can_act: true } ], moderator: false, admin: false, staff: false, user_id: 7, hidden: false, hidden_reason_id: null, trust_level: 2, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false }, { id: 3982, name: "Eric Kidd", username: "emk", avatar_template: "/images/avatar.png", uploaded_avatar_id: 8400, created_at: "2013-02-07T20:52:22.454Z", cooked: '

\n\n

Yeah, it\'s pretty. smile But there were still some rough edges as of a few months ago.

\n\n

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.

\n\n

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.

\n\n

(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.)

', post_number: 16, post_type: 1, updated_at: "2013-02-07T20:52:22.454Z", like_count: 1, reply_count: 1, reply_to_post_number: 15, quote_count: 1, incoming_link_count: 0, reads: 254, score: 71.15, yours: false, topic_id: 280, topic_slug: "internationalization-localization", display_username: "Eric Kidd", primary_group_name: null, version: 1, can_edit: true, can_delete: true, can_recover: true, read: true, user_title: null, actions_summary: [ { id: 2, count: 1, hidden: false, can_act: true }, { id: 3, count: 0, hidden: false, can_act: true }, { id: 4, count: 0, hidden: false, can_act: true }, { id: 5, count: 0, hidden: true, can_act: true }, { id: 6, count: 0, hidden: false, can_act: true }, { id: 7, count: 0, hidden: false, can_act: true }, { id: 8, count: 0, hidden: false, can_act: true } ], moderator: false, admin: false, staff: false, user_id: 1860, hidden: false, hidden_reason_id: null, trust_level: 1, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false }, { id: 3989, name: "Pekka Gaiser", username: "pekka", avatar_template: "/images/avatar.png", uploaded_avatar_id: 5253, created_at: "2013-02-07T21:04:15.405Z", cooked: '

\n\n

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.

', post_number: 17, post_type: 1, updated_at: "2013-02-07T21:04:15.405Z", like_count: 1, reply_count: 2, reply_to_post_number: 16, quote_count: 1, incoming_link_count: 0, reads: 255, score: 76.35, yours: false, topic_id: 280, topic_slug: "internationalization-localization", display_username: "Pekka Gaiser", primary_group_name: null, version: 1, can_edit: true, can_delete: true, can_recover: true, read: true, user_title: null, actions_summary: [ { id: 2, count: 1, hidden: false, can_act: true }, { id: 3, count: 0, hidden: false, can_act: true }, { id: 4, count: 0, hidden: false, can_act: true }, { id: 5, count: 0, hidden: true, can_act: true }, { id: 6, count: 0, hidden: false, can_act: true }, { id: 7, count: 0, hidden: false, can_act: true }, { id: 8, count: 0, hidden: false, can_act: true } ], moderator: false, admin: false, staff: false, user_id: 7, hidden: false, hidden_reason_id: null, trust_level: 2, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false }, { id: 3996, name: "Sam Saffron", username: "sam", avatar_template: "/images/avatar.png", uploaded_avatar_id: 5243, created_at: "2013-02-07T21:12:06.575Z", cooked: "

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.

\n\n

I think it would be awesome, very doable technically.

", post_number: 18, post_type: 1, updated_at: "2013-02-07T21:12:06.575Z", like_count: 7, reply_count: 2, reply_to_post_number: 17, quote_count: 0, incoming_link_count: 0, reads: 264, score: 168.2, yours: false, topic_id: 280, topic_slug: "internationalization-localization", display_username: "Sam Saffron", primary_group_name: "discourse", version: 1, can_edit: true, can_delete: true, can_recover: true, read: true, user_title: "co-founder", reply_to_user: { username: "pekka", avatar_template: "/images/avatar.png", uploaded_avatar_id: 5253 }, actions_summary: [ { id: 2, count: 7, hidden: false, can_act: true }, { id: 3, count: 0, hidden: false, can_act: true }, { id: 4, count: 0, hidden: false, can_act: true }, { id: 5, count: 0, hidden: true, can_act: true }, { id: 6, count: 0, hidden: false, can_act: true }, { id: 7, count: 0, hidden: false, can_act: true }, { id: 8, count: 0, hidden: false, can_act: true } ], moderator: true, admin: true, staff: true, user_id: 1, hidden: false, hidden_reason_id: null, trust_level: 4, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false }, { id: 4009, name: "Pekka Gaiser", username: "pekka", avatar_template: "/images/avatar.png", uploaded_avatar_id: 5253, created_at: "2013-02-07T21:18:47.422Z", cooked: "

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.

\n\n

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.

", post_number: 19, post_type: 1, updated_at: "2013-02-07T21:22:10.692Z", like_count: 1, reply_count: 0, reply_to_post_number: 18, quote_count: 0, incoming_link_count: 1, reads: 241, score: 68.6, yours: false, topic_id: 280, topic_slug: "internationalization-localization", display_username: "Pekka Gaiser", primary_group_name: null, version: 1, can_edit: true, can_delete: true, can_recover: true, read: true, user_title: null, reply_to_user: { username: "sam", avatar_template: "/images/avatar.png", uploaded_avatar_id: 5243 }, actions_summary: [ { id: 2, count: 1, hidden: false, can_act: true }, { id: 3, count: 0, hidden: false, can_act: true }, { id: 4, count: 0, hidden: false, can_act: true }, { id: 5, count: 0, hidden: true, can_act: true }, { id: 6, count: 0, hidden: false, can_act: true }, { id: 7, count: 0, hidden: false, can_act: true }, { id: 8, count: 0, hidden: false, can_act: true } ], moderator: false, admin: false, staff: false, user_id: 7, hidden: false, hidden_reason_id: null, trust_level: 2, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false }, { id: 4012, name: "Marco Ceppi", username: "marcoceppi", avatar_template: "/images/avatar.png", uploaded_avatar_id: 6552, created_at: "2013-02-07T21:22:46.376Z", cooked: '

If you use gettext format you could leverage Launchpad translations and the community behind it.

', post_number: 20, post_type: 1, updated_at: "2013-02-07T21:22:46.376Z", like_count: 1, reply_count: 0, reply_to_post_number: null, quote_count: 0, incoming_link_count: 2, reads: 244, score: 74.25, yours: false, topic_id: 280, topic_slug: "internationalization-localization", display_username: "Marco Ceppi", primary_group_name: null, version: 1, can_edit: true, can_delete: true, can_recover: true, link_counts: [ { url: "https://translations.launchpad.net/", internal: false, reflection: false, title: "Launchpad Translations", clicks: 13 } ], read: true, user_title: null, actions_summary: [ { id: 2, count: 1, hidden: false, can_act: true }, { id: 3, count: 0, hidden: false, can_act: true }, { id: 4, count: 0, hidden: false, can_act: true }, { id: 5, count: 0, hidden: true, can_act: true }, { id: 6, count: 0, hidden: false, can_act: true }, { id: 7, count: 0, hidden: false, can_act: true }, { id: 8, count: 0, hidden: false, can_act: true } ], moderator: false, admin: false, staff: false, user_id: 761, hidden: false, hidden_reason_id: null, trust_level: 2, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false } ], stream: [ 398, 419, 1060, 3623, 3651, 3654, 3655, 3658, 3660, 3667, 3673, 3675, 3690, 3925, 3938, 3982, 3989, 3996, 4009, 4012 ], gaps: { before: {}, after: { 398: [4012] } } }, id: 280, title: "Internationalization / localization", fancy_title: "Internationalization / localization", posts_count: 103, created_at: "2013-02-05T21:29:00.174Z", views: 5211, reply_count: 67, participant_count: 40, like_count: 135, last_posted_at: "2015-03-04T15:07:10.487Z", visible: true, closed: false, archived: false, has_summary: true, archetype: "regular", slug: "internationalization-localization", category_id: 2, word_count: 6198, deleted_at: null, draft: null, draft_key: "topic_280", draft_sequence: 4, posted: true, unpinned: null, pinned_globally: false, pinned: false, pinned_at: null, details: { can_publish_page: true, can_invite_via_email: true, auto_close_at: null, auto_close_hours: null, auto_close_based_on_last_post: false, created_by: { id: 255, username: "uwe_keim", uploaded_avatar_id: 5697, avatar_template: "/images/avatar.png" }, last_poster: { id: 14091, username: "Luciano_Fantuzzi", uploaded_avatar_id: 39484, avatar_template: "/images/avatar.png" }, participants: [ { id: 212, username: "alxndr", uploaded_avatar_id: 5619, avatar_template: "/images/avatar.png", post_count: 11 }, { id: 1, username: "sam", uploaded_avatar_id: 5243, avatar_template: "/images/avatar.png", post_count: 11 }, { id: 7, username: "pekka", uploaded_avatar_id: 5253, avatar_template: "/images/avatar.png", post_count: 8 }, { id: 461, username: "kuba", uploaded_avatar_id: 6049, avatar_template: "/images/avatar.png", post_count: 7 }, { id: 2995, username: "tattoo", uploaded_avatar_id: null, avatar_template: "/images/avatar.png", post_count: 6 }, { id: 2540, username: "jgourdon", uploaded_avatar_id: 9537, avatar_template: "/images/avatar.png", post_count: 5 }, { id: 1860, username: "emk", uploaded_avatar_id: 8400, avatar_template: "/images/avatar.png", post_count: 4 }, { id: 1275, username: "dacap", uploaded_avatar_id: 7401, avatar_template: "/images/avatar.png", post_count: 4 }, { id: 19, username: "eviltrout", uploaded_avatar_id: 5275, avatar_template: "/images/avatar.png", post_count: 4 }, { id: 5, username: "charlie", uploaded_avatar_id: 5275, avatar_template: "/images/avatar.png", post_count: 1 }, { id: 3704, username: "mojzis", uploaded_avatar_id: 31201, avatar_template: "/images/avatar.png", post_count: 3 }, { id: 3190, username: "gururea", uploaded_avatar_id: 10663, avatar_template: "/images/avatar.png", post_count: 3 }, { id: 1895, username: "maciek", uploaded_avatar_id: 8463, avatar_template: "/images/avatar.png", post_count: 3 }, { id: 22, username: "splattne", uploaded_avatar_id: 5280, avatar_template: "/images/avatar.png", post_count: 2 }, { id: 1979, username: "Superuser", uploaded_avatar_id: 8604, avatar_template: "/images/avatar.png", post_count: 2 }, { id: 3818, username: "Tudor", uploaded_avatar_id: 11675, avatar_template: "/images/avatar.png", post_count: 2 }, { id: 32, username: "codinghorror", uploaded_avatar_id: 5297, avatar_template: "/images/avatar.png", post_count: 2 }, { id: 3620, username: "potthast", uploaded_avatar_id: 11363, avatar_template: "/images/avatar.png", post_count: 2 }, { id: 9, username: "tms", uploaded_avatar_id: 40181, avatar_template: "/images/avatar.png", post_count: 2 }, { id: 14091, username: "Luciano_Fantuzzi", uploaded_avatar_id: 39484, avatar_template: "/images/avatar.png", post_count: 1 }, { id: 255, username: "uwe_keim", uploaded_avatar_id: 5697, avatar_template: "/images/avatar.png", post_count: 1 }, { id: 9006, username: "berk", uploaded_avatar_id: 19348, avatar_template: "/images/avatar.png", post_count: 1 }, { id: 754, username: "danneu", uploaded_avatar_id: 6540, avatar_template: "/images/avatar.png", post_count: 1 }, { id: 761, username: "marcoceppi", uploaded_avatar_id: 6552, avatar_template: "/images/avatar.png", post_count: 1 }, { id: 2753, username: "mikl", uploaded_avatar_id: 9918, avatar_template: "/images/avatar.png", post_count: 1 } ], links: [ { url: "https://github.com/discourse/discourse/blob/master/config/locales/en.yml", title: null, fancy_title: null, internal: false, reflection: false, clicks: 118, user_id: 9, domain: "github.com" }, { url: "http://www.localeapp.com/", title: "Easy localization for Rails apps | Locale", fancy_title: null, internal: false, reflection: false, clicks: 69, user_id: 1860, domain: "www.localeapp.com" }, { url: "http://stackoverflow.com/questions/4232922/why-do-people-use-plain-english-as-translation-placeholders", title: "internationalization - Why do people use plain english as translation placeholders? - Stack Overflow", fancy_title: null, internal: false, reflection: false, clicks: 63, user_id: 7, domain: "stackoverflow.com" }, { url: "https://github.com/discourse/discourse/blob/master/config/locales", title: "discourse/config/locales at master · discourse/discourse · GitHub", fancy_title: null, internal: false, reflection: false, clicks: 62, user_id: 32, domain: "github.com" }, { url: "https://github.com/SlexAxton/messageformat.js", title: "SlexAxton/messageformat.js · GitHub", fancy_title: null, internal: false, reflection: false, clicks: 46, user_id: 1, domain: "github.com" }, { url: "http://www.localeapp.com/projects/1537/translations?utf8=%E2%9C%93&search=source_code", title: "langforums | Locale", fancy_title: null, internal: false, reflection: false, clicks: 25, user_id: 1860, domain: "www.localeapp.com" }, { url: "https://translations.launchpad.net/", title: "Launchpad Translations", fancy_title: null, internal: false, reflection: false, clicks: 23, user_id: 761, domain: "translations.launchpad.net" }, { url: "https://www.transifex.com/", title: "Transifex - Continuous Localization Platform", fancy_title: null, internal: false, reflection: false, clicks: 22, user_id: 1979, domain: "www.transifex.com" }, { url: "https://github.com/berk/tr8n", title: "berk/tr8n · GitHub", fancy_title: null, internal: false, reflection: false, clicks: 22, user_id: 1, domain: "github.com" }, { url: "http://translate.wordpress.org/projects/bbpress/dev", title: "WordPress › Development < GlotPress", fancy_title: null, internal: false, reflection: false, clicks: 16, user_id: 7, domain: "translate.wordpress.org" }, { url: "http://weblate.org", title: "Weblate - web-based translation", fancy_title: null, internal: false, reflection: false, clicks: 15, user_id: 2316, domain: "weblate.org" }, { url: "https://github.com/discourse/discourse/tree/master/config/locales", title: "discourse/config/locales at master · discourse/discourse · GitHub", fancy_title: null, internal: false, reflection: false, clicks: 14, user_id: 19, domain: "github.com" }, { url: "https://github.com/discourse/discourse/pull/493", title: "Danish translation. by mikl · Pull Request #493 · discourse/discourse · GitHub", fancy_title: null, internal: false, reflection: false, clicks: 12, user_id: 2753, domain: "github.com" }, { url: "https://github.com/SlexAxton", title: "SlexAxton (Alex Sexton) · GitHub", fancy_title: null, internal: false, reflection: false, clicks: 10, user_id: 1, domain: "github.com" }, { url: "https://github.com/gururea/discourse/tree/master/config/locales", title: "discourse/config/locales at master · gururea/discourse · GitHub", fancy_title: null, internal: false, reflection: false, clicks: 9, user_id: 3190, domain: "github.com" }, { url: "https://github.com/discourse/discourse/blob/master/config/locales/client.en.yml#L691", title: "discourse/config/locales/client.en.yml at master · discourse/discourse · GitHub", fancy_title: null, internal: false, reflection: false, clicks: 7, user_id: 461, domain: "github.com" }, { url: "https://github.com/dacap/discourse/tree/spanish", title: "dacap/discourse · GitHub", fancy_title: null, internal: false, reflection: false, clicks: 7, user_id: 1275, domain: "github.com" }, { url: "https://github.com/discourse/discourse/blob/master/config/locales/client.nl.yml", title: "discourse/config/locales/client.nl.yml at master · discourse/discourse · GitHub", fancy_title: null, internal: false, reflection: false, clicks: 7, user_id: 461, domain: "github.com" }, { url: "https://github.com/discourse/discourse/commit/c5761eae8afe37e20cec0d0f9d14b85b6e585bda", title: "Support for Simplified Chinese thanks to tangramor · c5761ea · discourse/discourse · GitHub", fancy_title: null, internal: false, reflection: false, clicks: 6, user_id: 212, domain: "github.com" }, { url: "http://tr8n.github.com/", title: "tr8n", fancy_title: null, internal: false, reflection: false, clicks: 6, user_id: 212, domain: "tr8n.github.com" }, { url: "http://www.getlocalization.com/", title: "Crowdsourced, Social and Collaborative App & Website Translation - Get Localization", fancy_title: null, internal: false, reflection: false, clicks: 6, user_id: 22, domain: "www.getlocalization.com" }, { url: "http://blog.discourse.org/2013/04/discourse-as-your-first-rails-app/", title: "Discourse as Your First Rails App", fancy_title: null, internal: false, reflection: false, clicks: 5, user_id: 1995, domain: "blog.discourse.org" }, { url: "https://github.com/alxndr/discourse/blob/i18n-chinese/config/locales/server.zh.yml", title: null, fancy_title: null, internal: false, reflection: false, clicks: 5, user_id: 212, domain: "github.com" }, { url: "http://translate.sourceforge.net/wiki/virtaal/index", title: "Easy-to-use and powerful offline translation tool | Virtaal", fancy_title: null, internal: false, reflection: false, clicks: 4, user_id: 1979, domain: "translate.sourceforge.net" }, { url: "https://poeditor.com/", title: "POEditor - online software localization tool", fancy_title: null, internal: false, reflection: false, clicks: 4, user_id: 1979, domain: "poeditor.com" }, { url: "http://en.lichess.org/@/Hellball", title: null, fancy_title: null, internal: false, reflection: false, clicks: 3, user_id: 1979, domain: "en.lichess.org" }, { url: "http://en.wikipedia.org/wiki/T%E2%80%93V_distinction", title: "T–V distinction - Wikipedia, the free encyclopedia", fancy_title: null, internal: false, reflection: false, clicks: 3, user_id: 3620, domain: "en.wikipedia.org" }, { url: "http://www.slideshare.net/HeatherRivers/linguistic-potluck-crowdsourcing-localization-with-rails", title: "Linguistic Potluck: Crowdsourcing localization with Rails", fancy_title: null, internal: false, reflection: false, clicks: 3, user_id: 212, domain: "www.slideshare.net" }, { url: "https://meta.discourse.org/t/language-mirrors/2378/2", title: "Language mirrors", fancy_title: null, internal: true, reflection: true, clicks: 3, user_id: 32, domain: "meta.discourse.org" }, { url: "http://www.madanalogy.com/2012/06/rails-i18n-translations-in-yaml.html", title: "Mad Analogy: Rails i18n translations in Yaml: translation tool support", fancy_title: null, internal: false, reflection: false, clicks: 3, user_id: 3190, domain: "www.madanalogy.com" }, { url: "https://github.com/tr8n", title: "Translation Exchange · GitHub", fancy_title: null, internal: false, reflection: false, clicks: 3, user_id: 9006, domain: "github.com" }, { url: "http://pootle.locamotion.org/", title: "Main | Pootle Demo", fancy_title: null, internal: false, reflection: false, clicks: 2, user_id: 3190, domain: "pootle.locamotion.org" }, { url: "http://www.youtube.com/watch?v=MqqdzJ98q7s", title: "GoGaRuCo 2012 - Linguistic Potluck: Crowdsourcing Localization in Rails by Heather Rivers - YouTube", fancy_title: null, internal: false, reflection: false, clicks: 2, user_id: 212, domain: "www.youtube.com" }, { url: "https://meta.discourse.org/t/translation-workflow/6102", title: "Translation workflow", fancy_title: null, internal: true, reflection: true, clicks: 2, user_id: 4702, domain: "meta.discourse.org" }, { url: "https://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: 2, user_id: 639, domain: "meta.discourse.org" }, { url: "https://tr8nhub.com", title: "TranslationExchange", fancy_title: null, internal: false, reflection: false, clicks: 2, user_id: 9006, domain: "tr8nhub.com" }, { url: "https://meta.discourse.org/t/roadplan-for-discourse/2939/3", title: "Roadplan for Discourse 2013", fancy_title: null, internal: true, reflection: true, clicks: 1, user_id: 2540, domain: "meta.discourse.org" }, { url: "http://sugarjs.com/dates#date_locales", title: "Dates - Sugar", fancy_title: null, internal: false, reflection: false, clicks: 1, user_id: 461, domain: "sugarjs.com" }, { url: "http://blog.discourse.org/2013/03/localizing-discourse/", title: "Localizing Discourse", fancy_title: null, internal: false, reflection: false, clicks: 1, user_id: 893, domain: "blog.discourse.org" }, { 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: 1, user_id: 461, domain: "github.com" }, { url: "http://transifex.com/projects/p/discourse-pt-br/", title: "Discourse-Translations-Project localization", fancy_title: null, internal: false, reflection: false, clicks: 1, user_id: 893, domain: "transifex.com" }, { url: "https://github.com/discourse/discourse/issues/279", title: null, fancy_title: null, internal: false, reflection: false, clicks: 1, user_id: 893, domain: "github.com" }, { url: "https://meta.discourse.org/t/comrades-lets-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: 1, user_id: 3417, domain: "meta.discourse.org" }, { url: "https://meta.discourse.org/t/translation-workflow/6102/6", title: "Translation workflow", fancy_title: null, internal: true, reflection: false, clicks: 0, user_id: 1995, domain: "meta.discourse.org" }, { url: "https://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: 0, user_id: 3681, domain: "meta.discourse.org" }, { url: "https://github.com/discourse/discourse/blob/master/config/locales/client.de.yml", title: "discourse/config/locales/client.de.yml at master · discourse/discourse · GitHub", fancy_title: null, internal: false, reflection: false, clicks: 0, user_id: 2, domain: "github.com" }, { url: "https://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: 0, user_id: 1, domain: "meta.discourse.org" }, { url: "https://meta.discourse.org/t/github-onebox-rendering-issue/7616", title: "GitHub OneBox Rendering Issue", fancy_title: null, internal: true, reflection: true, clicks: 0, user_id: 5372, domain: "meta.discourse.org" }, { url: "https://github.com/discourse/discourse/blob/master/config/locales/server.de.yml", title: "discourse/config/locales/server.de.yml at master · discourse/discourse · GitHub", fancy_title: null, internal: false, reflection: false, clicks: 0, user_id: 2, domain: "github.com" }, { url: "https://meta.discourse.org/t/roadplan-for-discourse/2939/5", title: "Roadplan for Discourse 2013", fancy_title: null, internal: true, reflection: true, clicks: 0, user_id: 32, domain: "meta.discourse.org" }, { url: "https://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, domain: "meta.discourse.org" }, { url: "http://guides.rubyonrails.org/i18n.html#the-public-i18n-api", title: "Rails Internationalization (I18n) API — Ruby on Rails Guides", fancy_title: null, internal: false, reflection: false, clicks: 0, user_id: 1895, domain: "guides.rubyonrails.org" }, { url: "https://meta.discourse.org/t/hi-support-chinese/4393/6", title: "Hi, support Chinese?", fancy_title: null, internal: true, reflection: true, clicks: 0, user_id: 2014, domain: "meta.discourse.org" }, { url: "https://meta.discourse.org/t/translation-tools-transifex-localeapp/7763/41", title: "Translation Tools: Transifex? Localeapp?", fancy_title: null, internal: true, reflection: false, clicks: 0, user_id: 6626, domain: "meta.discourse.org" } ], notification_level: 2, notifications_reason_id: 4, can_move_posts: true, can_edit: true, can_delete: true, can_recover: true, can_remove_allowed_users: true, can_invite_to: true, can_create_post: true, can_reply_as_new_topic: true, can_flag_topic: true }, highest_post_number: 10, last_read_post_number: 10, deleted_by: null, has_deleted: true, actions_summary: [ { id: 4, count: 0, hidden: false, can_act: true }, { id: 7, count: 0, hidden: false, can_act: true }, { id: 8, count: 0, hidden: false, can_act: true } ], chunk_size: 20, bookmarked: false, suggested_topics: [ { id: 27331, title: "Polls are still very buggy", fancy_title: "Polls are still very buggy", slug: "polls-are-still-very-buggy", posts_count: 4, reply_count: 1, highest_post_number: 4, image_url: "/uploads/default/_optimized/cd1/b8c/c162528887_690x401.png", created_at: "2015-04-08T09:51:00.357Z", last_posted_at: "2015-04-08T15:59:16.258Z", bumped: true, bumped_at: "2015-04-08T16:05:09.842Z", unseen: false, last_read_post_number: 3, unread: 0, new_posts: 1, pinned: false, unpinned: null, visible: true, closed: false, archived: false, notification_level: 2, bookmarked: false, liked: false, archetype: "regular", like_count: 11, views: 55, category_id: 1, posters: [ { extras: "latest single", description: "Original Poster, Most Recent Poster", user: { id: 1, username: "test", avatar_template: "/images/avatar.png" } } ] }, { id: 27343, title: "Mobile theme doesn't show last activity time for topics on category page", fancy_title: "Mobile theme doesn’t show last activity time for topics on category page", slug: "mobile-theme-doesnt-show-last-activity-time-for-topics-on-category-page", posts_count: 4, reply_count: 2, highest_post_number: 4, image_url: "/uploads/default/_optimized/13e/25c/bd30b466be_281x500.png", created_at: "2015-04-08T14:20:51.177Z", last_posted_at: "2015-04-08T15:40:30.037Z", bumped: true, bumped_at: "2015-04-08T15:40:30.037Z", unseen: false, last_read_post_number: 2, unread: 0, new_posts: 2, pinned: false, unpinned: null, visible: true, closed: false, archived: false, notification_level: 2, bookmarked: false, liked: false, archetype: "regular", like_count: 3, views: 23, category_id: 9, posters: [ { extras: "latest single", description: "Original Poster, Most Recent Poster", user: { id: 1, username: "test", avatar_template: "/images/avatar.png" } } ] }, { id: 27346, title: 'Reply+{messagekey}@... optionaly in header "from" in addition to "reply-to"', fancy_title: "Reply+{messagekey}@… optionaly in header “from” in addition to “reply-to”", slug: "reply-messagekey-optionaly-in-header-from-in-addition-to-reply-to", posts_count: 1, reply_count: 0, highest_post_number: 1, image_url: null, created_at: "2015-04-08T16:05:13.103Z", last_posted_at: "2015-04-08T16:05:13.415Z", bumped: true, bumped_at: "2015-04-08T16:05:13.415Z", unseen: true, pinned: false, unpinned: null, visible: true, closed: false, archived: false, bookmarked: null, liked: null, archetype: "regular", like_count: 0, views: 8, category_id: 2, posters: [ { extras: "latest single", description: "Original Poster, Most Recent Poster", user: { id: 1, username: "test", avatar_template: "/images/avatar.png" } } ] }, { id: 19670, title: "Parsing (Oneboxing) IMDB links", fancy_title: "Parsing (Oneboxing) IMDB links", slug: "parsing-oneboxing-imdb-links", posts_count: 8, reply_count: 1, highest_post_number: 8, image_url: null, created_at: "2014-09-05T07:19:26.161Z", last_posted_at: "2015-04-07T09:21:21.570Z", bumped: true, bumped_at: "2015-04-07T09:21:21.570Z", unseen: false, last_read_post_number: 8, unread: 0, new_posts: 0, pinned: false, unpinned: null, visible: true, closed: false, archived: false, notification_level: 2, bookmarked: false, liked: false, archetype: "regular", like_count: 4, views: 253, category_id: 2, posters: [ { extras: "latest single", description: "Original Poster, Most Recent Poster", user: { id: 1, username: "test", avatar_template: "/images/avatar.png" } } ] }, { id: 7512, title: "Support for Piwik Analytics as an alternative to Google Analytics", fancy_title: "Support for Piwik Analytics as an alternative to Google Analytics", slug: "support-for-piwik-analytics-as-an-alternative-to-google-analytics", posts_count: 53, reply_count: 41, highest_post_number: 65, image_url: "/plugins/emoji/images/smile.png", created_at: "2013-06-16T01:32:30.596Z", last_posted_at: "2015-02-22T13:46:26.845Z", bumped: true, bumped_at: "2015-02-22T13:46:26.845Z", unseen: false, last_read_post_number: 65, unread: 0, new_posts: 0, pinned: false, unpinned: null, visible: true, closed: false, archived: false, notification_level: 2, bookmarked: false, liked: false, archetype: "regular", like_count: 62, views: 1877, category_id: 2, posters: [ { extras: "latest single", description: "Original Poster, Most Recent Poster", user: { id: 1, username: "test", avatar_template: "/images/avatar.png" } } ] }, { id: 25480, title: "CSS admin-contents reloaded", fancy_title: "CSS admin-contents reloaded", slug: "css-admin-contents-reloaded", posts_count: 22, reply_count: 15, highest_post_number: 22, image_url: null, created_at: "2015-02-21T12:15:57.707Z", last_posted_at: "2015-03-02T23:24:18.899Z", bumped: true, bumped_at: "2015-03-02T23:24:18.899Z", unseen: false, pinned: false, unpinned: null, visible: true, closed: false, archived: false, bookmarked: null, liked: null, archetype: "regular", like_count: 21, views: 185, category_id: 2, posters: [ { extras: "latest single", description: "Original Poster, Most Recent Poster", user: { id: 1, username: "test", avatar_template: "/images/avatar.png" } } ] }, { id: 26576, title: "Badge timestamp should be the time the badge was granted?", fancy_title: "Badge timestamp should be the time the badge was granted?", slug: "badge-timestamp-should-be-the-time-the-badge-was-granted", posts_count: 2, reply_count: 0, highest_post_number: 2, image_url: null, created_at: "2015-03-20T13:22:08.266Z", last_posted_at: "2015-03-21T00:33:52.243Z", bumped: true, bumped_at: "2015-03-21T00:33:52.243Z", unseen: false, last_read_post_number: 1, unread: 0, new_posts: 0, pinned: false, unpinned: null, visible: true, closed: false, archived: false, notification_level: 1, bookmarked: false, liked: false, archetype: "regular", like_count: 9, views: 87, category_id: 2, posters: [ { extras: "latest single", description: "Original Poster, Most Recent Poster", user: { id: 1, username: "test", avatar_template: "/images/avatar.png" } } ] } ], tags: null }, "/t/28830/1.json": { post_stream: { posts: [ { id: 118591, name: "spends too much time on WTDWTF", username: "RaceProUK", avatar_template: "/images/avatar.png", uploaded_avatar_id: 40071, created_at: "2015-05-14T20:18:17.954Z", cooked: '

Normally, actions such as Liking are rate-limited, and when you hit the limit, you get a message telling you you\'ve hit the limit. However, in 1.3.0beta9, it seems those popups are no longer appearing.

\n\n

Edit: Possibly linked to this issue?

', post_number: 1, post_type: 1, updated_at: "2015-05-14T20:21:42.825Z", like_count: 6, reply_count: 0, reply_to_post_number: null, quote_count: 0, incoming_link_count: 14, reads: 24, score: 224.6, yours: false, topic_id: 28830, topic_slug: "1-3-0beta9-no-rate-limit-popups", display_username: "spends too much time on WTDWTF", primary_group_name: null, version: 1, can_edit: false, can_delete: false, can_recover: false, link_counts: [ { url: "https://meta.discourse.org/t/post-reply-on-different-topic-no-longer-works/28825", internal: true, reflection: false, title: "Post reply on different topic no longer works", clicks: 6 } ], read: true, user_title: "Contributor", actions_summary: [ { id: 2, count: 6, hidden: false, can_act: false }, { id: 3, count: 0, hidden: false, can_act: false }, { id: 4, count: 0, hidden: false, can_act: false }, { id: 5, count: 0, hidden: true, can_act: false }, { id: 6, count: 0, hidden: false, can_act: false }, { id: 7, count: 0, hidden: false, can_act: false }, { id: 8, count: 0, hidden: false, can_act: false } ], moderator: false, admin: false, staff: false, user_id: 14169, hidden: false, hidden_reason_id: null, trust_level: 2, deleted_at: null, user_deleted: false, edit_reason: "", can_view_edit_history: true, wiki: false }, { id: 118597, name: "Sam", username: "Yuun", avatar_template: "/images/avatar.png", uploaded_avatar_id: null, created_at: "2015-05-14T20:35:03.793Z", cooked: "

I'm seeing this issue as well. When you hit the rate limit, any further likes look like the forum is attempting and failing to apply them - the text saying 'you liked this' comes into place before quickly being removed.

\n\n

This makes it look (to the user) like the forum software is running into errors instead of said user hitting an intentional limit, which is a bit unfortunate.

", post_number: 2, post_type: 1, updated_at: "2015-05-14T20:35:03.793Z", like_count: 0, reply_count: 0, reply_to_post_number: null, quote_count: 0, incoming_link_count: 6, reads: 22, score: 34.2, yours: false, topic_id: 28830, topic_slug: "1-3-0beta9-no-rate-limit-popups", display_username: "Sam", primary_group_name: null, version: 1, can_edit: false, can_delete: false, can_recover: false, read: true, user_title: null, actions_summary: [ { id: 2, count: 0, hidden: false, can_act: false }, { id: 3, count: 0, hidden: false, can_act: false }, { id: 4, count: 0, hidden: false, can_act: false }, { id: 5, count: 0, hidden: true, can_act: false }, { id: 6, count: 0, hidden: false, can_act: false }, { id: 7, count: 0, hidden: false, can_act: false }, { id: 8, count: 0, hidden: false, can_act: false } ], moderator: false, admin: false, staff: false, user_id: 14795, hidden: false, hidden_reason_id: null, trust_level: 2, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false }, { id: 118601, name: "Kane York", username: "riking", avatar_template: "/images/avatar.png", uploaded_avatar_id: 40212, created_at: "2015-05-14T21:05:19.837Z", cooked: "

I'm going to guess that the bootbox library got broken somehow?

", post_number: 3, post_type: 1, updated_at: "2015-05-14T21:05:19.837Z", like_count: 0, reply_count: 1, reply_to_post_number: null, quote_count: 0, incoming_link_count: 0, reads: 14, score: 7.2, yours: false, topic_id: 28830, topic_slug: "1-3-0beta9-no-rate-limit-popups", display_username: "Kane York", primary_group_name: null, version: 1, can_edit: false, can_delete: false, can_recover: false, read: true, user_title: "team summer intern 2014", actions_summary: [ { id: 2, count: 0, hidden: false, can_act: false }, { id: 3, count: 0, hidden: false, can_act: false }, { id: 4, count: 0, hidden: false, can_act: false }, { id: 5, count: 0, hidden: true, can_act: false }, { id: 6, count: 0, hidden: false, can_act: false }, { id: 7, count: 0, hidden: false, can_act: false }, { id: 8, count: 0, hidden: false, can_act: false } ], moderator: false, admin: false, staff: false, user_id: 6626, hidden: false, hidden_reason_id: null, trust_level: 4, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false }, { id: 118606, name: "Jeff Atwood", username: "codinghorror", avatar_template: "/images/avatar.png", uploaded_avatar_id: 5297, created_at: "2015-05-14T21:15:41.612Z", cooked: '

Yeah maybe another Ember 1.10 regression for @eviltrout ?

', post_number: 4, post_type: 1, updated_at: "2015-05-14T21:15:41.612Z", like_count: 0, reply_count: 0, reply_to_post_number: null, quote_count: 0, incoming_link_count: 6, reads: 12, score: 31.6, yours: false, topic_id: 28830, topic_slug: "1-3-0beta9-no-rate-limit-popups", display_username: "Jeff Atwood", primary_group_name: "discourse", version: 1, can_edit: false, can_delete: false, can_recover: false, read: true, user_title: "co-founder", actions_summary: [ { id: 2, count: 0, hidden: false, can_act: false }, { id: 3, count: 0, hidden: false, can_act: false }, { id: 4, count: 0, hidden: false, can_act: false }, { id: 5, count: 0, hidden: true, can_act: false }, { id: 6, count: 0, hidden: false, can_act: false }, { id: 7, count: 0, hidden: false, can_act: false }, { id: 8, count: 0, hidden: false, can_act: false } ], moderator: true, admin: true, staff: true, user_id: 32, hidden: false, hidden_reason_id: null, trust_level: 4, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false }, { id: 118612, name: "TDWTF member", username: "Onyx", avatar_template: "/images/avatar.png", uploaded_avatar_id: 33015, created_at: "2015-05-14T21:23:09.562Z", cooked: '\n\n

You mean the popup box library, guessing by the name? Still shows up when you want to cancel a post, so it\'s not all popups it seems.

', post_number: 5, post_type: 1, updated_at: "2015-05-14T21:23:09.562Z", like_count: 1, reply_count: 0, reply_to_post_number: 3, quote_count: 1, incoming_link_count: 0, reads: 11, score: 16.0, yours: false, topic_id: 28830, topic_slug: "1-3-0beta9-no-rate-limit-popups", display_username: "TDWTF member", primary_group_name: null, version: 1, can_edit: false, can_delete: false, can_recover: false, read: true, user_title: null, actions_summary: [ { id: 2, count: 1, hidden: false, can_act: false }, { id: 3, count: 0, hidden: false, can_act: false }, { id: 4, count: 0, hidden: false, can_act: false }, { id: 5, count: 0, hidden: true, can_act: false }, { id: 6, count: 0, hidden: false, can_act: false }, { id: 7, count: 0, hidden: false, can_act: false }, { id: 8, count: 0, hidden: false, can_act: false } ], moderator: false, admin: false, staff: false, user_id: 10886, hidden: false, hidden_reason_id: null, trust_level: 2, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false } ], stream: [118591, 118597, 118601, 118606, 118612] }, id: 28830, title: "1.3.0beta9: No rate-limit popups", fancy_title: "1.3.0beta9: No rate-limit popups", posts_count: 5, created_at: "2015-05-14T20:18:17.877Z", views: 38, reply_count: 1, participant_count: 5, like_count: 7, last_posted_at: "2015-05-14T21:23:09.562Z", visible: true, closed: false, archived: false, has_summary: false, archetype: "regular", slug: "1-3-0beta9-no-rate-limit-popups", category_id: 1, word_count: 198, deleted_at: null, draft: null, draft_key: "topic_28830", draft_sequence: null, unpinned: null, pinned_globally: false, pinned: false, pinned_at: null, details: { auto_close_at: null, auto_close_hours: null, auto_close_based_on_last_post: false, created_by: { id: 14169, username: "RaceProUK", uploaded_avatar_id: 40071, avatar_template: "/images/avatar.png" }, last_poster: { id: 10886, username: "Onyx", uploaded_avatar_id: 33015, avatar_template: "/images/avatar.png" }, participants: [ { id: 14795, username: "Yuun", uploaded_avatar_id: null, avatar_template: "/images/avatar.png", post_count: 1 }, { id: 10886, username: "Onyx", uploaded_avatar_id: 33015, avatar_template: "/images/avatar.png", post_count: 1 }, { id: 14169, username: "RaceProUK", uploaded_avatar_id: 40071, avatar_template: "/images/avatar.png", post_count: 1 }, { id: 6626, username: "riking", uploaded_avatar_id: 40212, avatar_template: "/images/avatar.png", post_count: 1 }, { id: 32, username: "codinghorror", uploaded_avatar_id: 5297, avatar_template: "/images/avatar.png", post_count: 1 } ], suggested_topics: [ { id: 2890, title: "Expanded quoted text not highlighting when text is formatted", fancy_title: "Expanded quoted text not highlighting when text is formatted", slug: "expanded-quoted-text-not-highlighting-when-text-is-formatted", posts_count: 8, reply_count: 5, highest_post_number: 8, image_url: null, created_at: "2013-02-12T12:18:02.181Z", last_posted_at: "2013-02-14T15:59:40.014Z", bumped: true, bumped_at: "2013-02-14T15:59:40.014Z", unseen: false, pinned: false, unpinned: null, visible: true, closed: false, archived: false, bookmarked: null, liked: null, archetype: "regular", like_count: 3, views: 361, category_id: 1 }, { id: 14213, title: "Plugins not being parsed in correct javascript context when loaded for jobs", fancy_title: "Plugins not being parsed in correct javascript context when loaded for jobs", slug: "plugins-not-being-parsed-in-correct-javascript-context-when-loaded-for-jobs", posts_count: 2, reply_count: 0, highest_post_number: 2, image_url: "/plugins/emoji/images/frowning.png", created_at: "2014-03-27T23:57:00.974Z", last_posted_at: "2015-03-20T04:56:03.982Z", bumped: true, bumped_at: "2015-03-20T04:56:03.982Z", unseen: false, pinned: false, unpinned: null, visible: true, closed: false, archived: false, bookmarked: null, liked: null, archetype: "regular", like_count: 0, views: 156, category_id: 1 }, { id: 22544, title: "Like count on profile off by one", fancy_title: "Like count on profile off by one", slug: "like-count-on-profile-off-by-one", posts_count: 7, reply_count: 2, highest_post_number: 7, image_url: null, created_at: "2014-11-26T08:15:39.802Z", last_posted_at: "2014-11-27T07:23:37.638Z", bumped: true, bumped_at: "2014-11-27T07:23:37.638Z", unseen: false, pinned: false, unpinned: null, visible: true, closed: false, archived: false, bookmarked: null, liked: null, archetype: "regular", like_count: 18, views: 192, category_id: 1 }, { id: 27670, title: "Using back still shows unread indicator on the topic", fancy_title: "Using back still shows unread indicator on the topic", slug: "using-back-still-shows-unread-indicator-on-the-topic", posts_count: 2, reply_count: 0, highest_post_number: 2, image_url: null, created_at: "2015-04-16T23:21:42.739Z", last_posted_at: "2015-04-17T02:43:08.447Z", bumped: true, bumped_at: "2015-04-17T02:43:08.447Z", unseen: false, pinned: false, unpinned: null, visible: true, closed: false, archived: false, bookmarked: null, liked: null, archetype: "regular", like_count: 1, views: 85, category_id: 1 }, { id: 26628, title: "Embed blocklist selector is broken", fancy_title: "Embed blocklist selector is broken", slug: "embed-blocklist-selector-is-broken", posts_count: 11, reply_count: 7, highest_post_number: 11, image_url: null, created_at: "2015-03-22T11:21:14.825Z", last_posted_at: "2015-04-20T09:11:38.999Z", bumped: true, bumped_at: "2015-04-20T09:11:38.999Z", unseen: false, pinned: false, unpinned: null, visible: true, closed: false, archived: false, bookmarked: null, liked: null, archetype: "regular", like_count: 1, views: 247, category_id: 1 }, { id: 18027, title: "Minor: delete/undelete needs a rate limit", fancy_title: "Minor: delete/undelete needs a rate limit", slug: "minor-delete-undelete-needs-a-rate-limit", posts_count: 4, reply_count: 1, highest_post_number: 4, image_url: null, created_at: "2014-07-25T02:51:41.158Z", last_posted_at: "2014-07-25T04:01:15.343Z", bumped: true, bumped_at: "2014-07-25T11:06:46.213Z", unseen: false, pinned: false, unpinned: null, visible: true, closed: false, archived: false, bookmarked: null, liked: null, archetype: "regular", like_count: 1, views: 165, category_id: 1 }, { id: 17396, title: "Bad Reply Key when pulling Autoforwarded Emails to Discourse", fancy_title: "Bad Reply Key when pulling Autoforwarded Emails to Discourse", slug: "bad-reply-key-when-pulling-autoforwarded-emails-to-discourse", posts_count: 20, reply_count: 15, highest_post_number: 20, image_url: null, created_at: "2014-07-09T18:34:57.114Z", last_posted_at: "2014-10-21T15:08:50.441Z", bumped: true, bumped_at: "2014-10-21T15:08:50.441Z", unseen: false, pinned: false, unpinned: null, visible: true, closed: false, archived: false, bookmarked: null, liked: null, archetype: "regular", like_count: 7, views: 542, category_id: 1 } ], links: [ { url: "https://meta.discourse.org/t/post-reply-on-different-topic-no-longer-works/28825", title: "Post reply on different topic no longer works", fancy_title: null, internal: true, reflection: false, clicks: 6, user_id: 14169, domain: "meta.discourse.org" } ], notification_level: 1, can_flag_topic: false }, highest_post_number: 5, deleted_by: null, actions_summary: [ { id: 4, count: 0, hidden: false, can_act: false }, { id: 7, count: 0, hidden: false, can_act: false }, { id: 8, count: 0, hidden: false, can_act: false } ], chunk_size: 20, bookmarked: null, tags: null }, "/t/9/1.json": { post_stream: { posts: [ { id: 18, username: "eviltrout", avatar_template: "/images/avatar.png", name: "Evil Trout", uploaded_avatar_id: 9, created_at: "2015-08-13T14:49:11.840Z", cooked: "

This is the first post.

", post_number: 1, post_type: 1, updated_at: "2015-08-13T14:49:11.840Z", reply_count: 0, reply_to_post_number: null, quote_count: 0, incoming_link_count: 0, reads: 1, score: 0, yours: true, topic_id: 9, topic_slug: "this-is-a-test-topic", display_username: "", primary_group_name: null, version: 1, can_edit: true, can_delete: false, can_recover: true, read: true, user_title: null, actions_summary: [ { id: 3, can_act: true }, { id: 4, can_act: true }, { id: 5, hidden: true, can_act: true }, { id: 7, can_act: true }, { id: 8, can_act: true } ], moderator: false, admin: true, staff: true, user_id: 1, hidden: false, hidden_reason_id: null, trust_level: 4, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false }, { id: 19, username: "eviltrout", avatar_template: "/images/avatar.png", name: "Evil Trout", uploaded_avatar_id: 9, created_at: "2015-08-13T14:49:18.231Z", cooked: "

This is the second post.

", post_number: 2, post_type: 1, updated_at: "2015-08-13T14:49:18.231Z", reply_count: 0, reply_to_post_number: null, quote_count: 0, incoming_link_count: 0, reads: 1, score: 0, yours: true, topic_id: 9, topic_slug: "this-is-a-test-topic", display_username: "", primary_group_name: null, version: 1, can_edit: true, can_delete: true, can_recover: true, read: true, user_title: null, actions_summary: [ { id: 3, can_act: true }, { id: 4, can_act: true }, { id: 5, hidden: true, can_act: true }, { id: 7, can_act: true }, { id: 8, can_act: true } ], moderator: false, admin: true, staff: true, user_id: 1, hidden: false, hidden_reason_id: null, trust_level: 4, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false }, { id: 20, username: "eviltrout", avatar_template: "/images/avatar.png", name: "Evil Trout", uploaded_avatar_id: 9, created_at: "2015-08-13T14:49:23.927Z", cooked: "

This is the third post.

", post_number: 3, post_type: 1, updated_at: "2015-08-13T14:49:23.927Z", reply_count: 0, reply_to_post_number: null, quote_count: 0, incoming_link_count: 0, reads: 1, score: 0, yours: true, topic_id: 9, topic_slug: "this-is-a-test-topic", display_username: "", primary_group_name: null, version: 1, can_edit: true, can_delete: true, can_recover: true, read: true, user_title: null, actions_summary: [ { id: 3, can_act: true }, { id: 4, can_act: true }, { id: 5, hidden: true, can_act: true }, { id: 7, can_act: true }, { id: 8, can_act: true } ], moderator: false, admin: true, staff: true, user_id: 1, hidden: false, hidden_reason_id: null, trust_level: 4, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false } ], stream: [18, 19, 20] }, id: 9, title: "This is a test topic!", fancy_title: "This is a test topic!", posts_count: 3, created_at: "2015-08-13T14:49:11.720Z", views: 1, reply_count: 0, participant_count: 1, like_count: 0, last_posted_at: "2015-08-13T14:49:23.927Z", visible: true, closed: false, archived: false, has_summary: false, archetype: "regular", slug: "this-is-a-test-topic", category_id: 24, word_count: 15, deleted_at: null, user_id: 1, draft: null, draft_key: "topic_9", draft_sequence: 3, posted: true, unpinned: null, pinned_globally: false, pinned: false, pinned_at: null, pinned_until: null, details: { auto_close_at: null, auto_close_hours: null, auto_close_based_on_last_post: false, created_by: { id: 1, username: "tgxworld", uploaded_avatar_id: 9, avatar_template: "/images/avatar.png" }, last_poster: { id: 1, username: "tgxworld", uploaded_avatar_id: 9, avatar_template: "/images/avatar.png" }, participants: [ { id: 1, username: "tgxworld", uploaded_avatar_id: 9, avatar_template: "/images/avatar.png", post_count: 3 } ], suggested_topics: [ { id: 8, title: "This is a new and awesome topic!", fancy_title: "This is a new and awesome topic!", slug: "this-is-a-new-and-awesome-topic", posts_count: 3, reply_count: 0, highest_post_number: 5, image_url: null, created_at: "2015-08-13T05:17:00.000Z", last_posted_at: "2015-08-13T10:14:34.799Z", bumped: true, bumped_at: "2015-08-13T10:14:34.799Z", unseen: false, last_read_post_number: 5, unread: 0, new_posts: 0, pinned: false, unpinned: null, visible: true, closed: false, archived: false, notification_level: 2, bookmarked: false, liked: false, archetype: "regular", like_count: 0, views: 2, category_id: 1 }, { id: 7, title: "This is a test category!", fancy_title: "This is a test category!", slug: "this-is-a-test-category", posts_count: 3, reply_count: 0, highest_post_number: 3, image_url: null, created_at: "2015-08-10T13:40:38.439Z", last_posted_at: "2015-08-13T01:59:44.928Z", bumped: true, bumped_at: "2015-08-13T01:58:35.206Z", unseen: false, last_read_post_number: 3, unread: 0, new_posts: 0, pinned: false, unpinned: null, visible: true, closed: false, archived: false, notification_level: 3, bookmarked: false, liked: false, archetype: "regular", like_count: 0, views: 2, category_id: 1 } ], notification_level: 3, notifications_reason_id: 1, can_move_posts: true, can_edit: true, can_delete: true, can_recover: true, can_remove_allowed_users: true, can_invite_to: true, can_create_post: true, can_reply_as_new_topic: true, can_flag_topic: true }, highest_post_number: 3, last_read_post_number: 3, deleted_by: null, has_deleted: false, actions_summary: [ { id: 4, count: 0, hidden: false, can_act: true }, { id: 7, count: 0, hidden: false, can_act: true }, { id: 8, count: 0, hidden: false, can_act: true } ], chunk_size: 20, bookmarked: false, destination_category_id: 3 }, "/t/12/1.json": { suggested_topics: [ { id: 8, title: "This is a new and awesome topic!", fancy_title: "This is a new and awesome topic!", slug: "this-is-a-new-and-awesome-topic", posts_count: 3, reply_count: 0, highest_post_number: 5, image_url: null, created_at: "2015-08-13T05:17:00.000Z", last_posted_at: "2015-08-13T10:14:34.799Z", bumped: true, bumped_at: "2015-08-13T10:14:34.799Z", unseen: false, last_read_post_number: 5, unread: 0, new_posts: 0, pinned: false, unpinned: null, visible: true, closed: false, archived: false, notification_level: 2, bookmarked: false, liked: false, archetype: "regular", like_count: 0, views: 2, category_id: 1, posters: [ { extras: "latest single", description: "Original Poster, Most Recent Poster", user: { id: 1, username: "test", avatar_template: "/images/avatar.png" } } ] } ], post_stream: { posts: [ { id: 15, name: null, username: "test", avatar_template: "/images/avatar.png", created_at: "2017-01-27T03:53:58.394Z", cooked: "

I have a pen, I have an apple

", post_number: 1, post_type: 1, updated_at: "2017-01-27T03:53:58.394Z", reply_count: 0, reply_to_post_number: null, quote_count: 0, incoming_link_count: 0, reads: 1, score: 0, yours: true, topic_id: 12, topic_slug: "pm-for-testing", display_username: null, primary_group_name: null, primary_group_flair_url: null, primary_group_flair_bg_color: null, primary_group_flair_color: null, version: 1, can_edit: true, can_delete: false, can_recover: true, can_wiki: true, read: true, user_title: null, actions_summary: [ { id: 3, can_act: true }, { id: 4, can_act: true }, { id: 5, hidden: true, can_act: true }, { id: 7, can_act: true }, { id: 8, can_act: true } ], moderator: false, admin: true, staff: true, user_id: 1, hidden: false, hidden_reason_id: null, trust_level: 4, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false, can_translate: false }, { id: 16, name: null, username: "test", avatar_template: "/images/avatar.png", created_at: "2017-01-27T04:10:02.941Z", cooked: "", post_number: 2, post_type: 3, updated_at: "2017-01-27T04:10:02.941Z", reply_count: 0, reply_to_post_number: null, quote_count: 0, incoming_link_count: 0, reads: 1, score: 0, yours: true, topic_id: 12, topic_slug: "pm-for-testing", display_username: null, primary_group_name: null, primary_group_flair_url: null, primary_group_flair_bg_color: null, primary_group_flair_color: null, version: 1, can_edit: true, can_delete: true, can_recover: true, can_wiki: true, read: true, user_title: null, actions_summary: [ { id: 3, can_act: true }, { id: 4, can_act: true }, { id: 5, hidden: true, can_act: true }, { id: 7, can_act: true }, { id: 8, can_act: true } ], moderator: false, admin: true, staff: true, user_id: 1, hidden: false, hidden_reason_id: null, trust_level: 4, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false, action_code: "invited_group", action_code_who: "Group", can_translate: false } ], stream: [15, 16] }, timeline_lookup: [[1, 0]], id: 12, title: "PM for testing", fancy_title: "PM for testing", posts_count: 2, created_at: "2017-01-27T03:53:58.360Z", views: 1, reply_count: 0, participant_count: 1, like_count: 0, last_posted_at: "2017-01-27T04:10:02.941Z", visible: true, closed: false, archived: false, has_summary: false, archetype: "private_message", slug: "pm-for-testing", category_id: null, word_count: 8, deleted_at: null, user_id: 1, draft: null, draft_key: "topic_12", draft_sequence: 2, posted: true, unpinned: null, pinned_globally: false, pinned: false, pinned_at: null, pinned_until: null, details: { auto_close_at: null, auto_close_hours: null, auto_close_based_on_last_post: false, created_by: { id: 1, username: "test", avatar_template: "/images/avatar.png" }, last_poster: { id: 1, username: "test", avatar_template: "/images/avatar.png" }, allowed_groups: [ { id: 41, automatic: false, name: "Group", user_count: 0, alias_level: 99, visible: true, automatic_membership_email_domains: "", primary_group: false, title: null, grant_trust_level: null, incoming_email: null, has_messages: false, flair_url: null, flair_bg_color: null, flair_color: null, bio_raw: null, bio_cooked: null, public: false, allow_membership_requests: false, full_name: null } ], allowed_users: [ { id: 2, username: "someguy", avatar_template: "/images/avatar.png" }, { id: 1, username: "test", avatar_template: "/images/avatar.png" } ], participants: [ { id: 1, username: "test", avatar_template: "/images/avatar.png", post_count: 2, primary_group_name: null, primary_group_flair_url: null, primary_group_flair_color: null, primary_group_flair_bg_color: null } ], suggested_topics: [ { id: 11, title: "This is a very important announcement", fancy_title: "This is a very important announcement", slug: "this-is-a-very-important-announcement", posts_count: 1, reply_count: 0, highest_post_number: 1, image_url: null, created_at: "2017-01-27T03:52:02.061Z", last_posted_at: "2017-01-27T03:52:02.119Z", bumped: true, bumped_at: "2017-01-27T03:52:02.119Z", unseen: false, last_read_post_number: 1, unread: 0, new_posts: 0, pinned: false, unpinned: null, visible: true, closed: false, archived: false, notification_level: 3, bookmarked: false, liked: false, archetype: "private_message", like_count: 0, views: 1, category_id: null, featured_link: null, posters: [ { extras: "latest single", description: "Original Poster, Most Recent Poster", user: { id: 1, username: "test", avatar_template: "/images/avatar.png" } } ] } ], notification_level: 3, notifications_reason_id: 1, can_move_posts: true, can_edit: true, can_delete: true, can_recover: true, can_remove_allowed_users: true, can_invite_to: true, can_create_post: true, can_reply_as_new_topic: true, can_flag_topic: true }, highest_post_number: 2, last_read_post_number: 2, last_read_post_id: 16, deleted_by: null, has_deleted: false, actions_summary: [ { id: 4, count: 0, hidden: false, can_act: true }, { id: 7, count: 0, hidden: false, can_act: true }, { id: 8, count: 0, hidden: false, can_act: true } ], chunk_size: 20, bookmarked: false, message_archived: false, featured_link: null }, "/t/299/1.json": { post_stream: { posts: [ { id: 18, username: "eviltrout", avatar_template: "/images/avatar.png", name: "Evil Trout", uploaded_avatar_id: 9, created_at: "2015-08-13T14:49:11.840Z", cooked: "

This is the first post.

", post_number: 1, post_type: 1, updated_at: "2015-08-13T14:49:11.840Z", reply_count: 0, reply_to_post_number: null, quote_count: 0, incoming_link_count: 0, reads: 1, score: 0, yours: true, topic_id: 9, topic_slug: "this-is-a-test-topic", display_username: "", primary_group_name: null, version: 1, can_edit: true, can_delete: false, can_recover: true, read: true, user_title: null, actions_summary: [ { id: 3, can_act: true }, { id: 4, can_act: true }, { id: 5, hidden: true, can_act: true }, { id: 7, can_act: true }, { id: 8, can_act: true } ], moderator: false, admin: true, staff: true, user_id: 1, hidden: false, hidden_reason_id: null, trust_level: 4, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false }, { id: 19, username: "eviltrout", avatar_template: "/images/avatar.png", name: "Evil Trout", uploaded_avatar_id: 9, created_at: "2015-08-13T14:49:18.231Z", cooked: "

This is the second post.

", post_number: 2, post_type: 1, updated_at: "2015-08-13T14:49:18.231Z", reply_count: 0, reply_to_post_number: null, quote_count: 0, incoming_link_count: 0, reads: 1, score: 0, yours: true, topic_id: 9, topic_slug: "this-is-a-test-topic", display_username: "", primary_group_name: null, version: 1, can_edit: true, can_delete: true, can_recover: true, read: true, user_title: null, actions_summary: [ { id: 3, can_act: true }, { id: 4, can_act: true }, { id: 5, hidden: true, can_act: true }, { id: 7, can_act: true }, { id: 8, can_act: true } ], moderator: false, admin: true, staff: true, user_id: 1, hidden: false, hidden_reason_id: null, trust_level: 4, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false }, { id: 20, username: "eviltrout", avatar_template: "/images/avatar.png", name: "Evil Trout", uploaded_avatar_id: 9, created_at: "2015-08-13T14:49:23.927Z", cooked: "

This is the third post.

", post_number: 3, post_type: 1, updated_at: "2015-08-13T14:49:23.927Z", reply_count: 0, reply_to_post_number: null, quote_count: 0, incoming_link_count: 0, reads: 1, score: 0, yours: true, topic_id: 9, topic_slug: "this-is-a-test-topic", display_username: "", primary_group_name: null, version: 1, can_edit: true, can_delete: true, can_recover: true, read: true, user_title: null, actions_summary: [ { id: 3, can_act: true }, { id: 4, can_act: true }, { id: 5, hidden: true, can_act: true }, { id: 7, can_act: true }, { id: 8, can_act: true } ], moderator: false, admin: true, staff: true, user_id: 1, hidden: false, hidden_reason_id: null, trust_level: 4, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false } ], stream: [18, 19, 20] }, id: 299, title: "Look at this link", fancy_title: "Look at this link", posts_count: 3, created_at: "2015-08-13T14:49:11.720Z", views: 1, reply_count: 0, participant_count: 1, like_count: 0, last_posted_at: "2015-08-13T14:49:23.927Z", visible: true, closed: false, archived: false, has_summary: false, archetype: "regular", slug: "this-is-a-test-topic", category_id: 1, word_count: 15, deleted_at: null, user_id: 1, draft: null, draft_key: "topic_9", draft_sequence: 3, posted: true, unpinned: null, pinned_globally: false, pinned: false, pinned_at: null, pinned_until: null, featured_link: "http://www.example.com/has-title.html", details: { auto_close_at: null, auto_close_hours: null, auto_close_based_on_last_post: false, created_by: { id: 1, username: "tgxworld", uploaded_avatar_id: 9, avatar_template: "/images/avatar.png" }, last_poster: { id: 1, username: "tgxworld", uploaded_avatar_id: 9, avatar_template: "/images/avatar.png" }, participants: [ { id: 1, username: "tgxworld", uploaded_avatar_id: 9, avatar_template: "/images/avatar.png", post_count: 3 } ], suggested_topics: [ { id: 8, title: "This is a new and awesome topic!", fancy_title: "This is a new and awesome topic!", slug: "this-is-a-new-and-awesome-topic", posts_count: 3, reply_count: 0, highest_post_number: 5, image_url: null, created_at: "2015-08-13T05:17:00.000Z", last_posted_at: "2015-08-13T10:14:34.799Z", bumped: true, bumped_at: "2015-08-13T10:14:34.799Z", unseen: false, last_read_post_number: 5, unread: 0, new_posts: 0, pinned: false, unpinned: null, visible: true, closed: false, archived: false, notification_level: 2, bookmarked: false, liked: false, archetype: "regular", like_count: 0, views: 2, category_id: 1 }, { id: 7, title: "This is a test category!", fancy_title: "This is a test category!", slug: "this-is-a-test-category", posts_count: 3, reply_count: 0, highest_post_number: 3, image_url: null, created_at: "2015-08-10T13:40:38.439Z", last_posted_at: "2015-08-13T01:59:44.928Z", bumped: true, bumped_at: "2015-08-13T01:58:35.206Z", unseen: false, last_read_post_number: 3, unread: 0, new_posts: 0, pinned: false, unpinned: null, visible: true, closed: false, archived: false, notification_level: 3, bookmarked: false, liked: false, archetype: "regular", like_count: 0, views: 2, category_id: 1 } ], notification_level: 3, notifications_reason_id: 1, can_move_posts: true, can_edit: true, can_delete: true, can_recover: true, can_remove_allowed_users: true, can_invite_to: true, can_create_post: true, can_reply_as_new_topic: true, can_flag_topic: true }, highest_post_number: 3, last_read_post_number: 3, deleted_by: null, has_deleted: false, actions_summary: [ { id: 4, count: 0, hidden: false, can_act: true }, { id: 7, count: 0, hidden: false, can_act: true }, { id: 8, count: 0, hidden: false, can_act: true } ], chunk_size: 20, bookmarked: false }, "/t/301/1.json": { post_stream: { posts: [ { id: 18, username: "eviltrout", avatar_template: "/images/avatar.png", name: "Evil Trout", uploaded_avatar_id: 9, created_at: "2015-08-13T14:49:11.840Z", cooked: '

This is the first post. @discourse

', post_number: 1, post_type: 1, updated_at: "2015-08-13T14:49:11.840Z", reply_count: 0, reply_to_post_number: null, quote_count: 0, incoming_link_count: 0, reads: 1, score: 0, yours: true, topic_id: 9, topic_slug: "this-is-a-test-topic", display_username: "", primary_group_name: null, version: 1, can_edit: true, can_delete: false, can_recover: true, read: true, user_title: null, actions_summary: [ { id: 3, can_act: true }, { id: 4, can_act: true }, { id: 5, hidden: true, can_act: true }, { id: 7, can_act: true }, { id: 8, can_act: true } ], moderator: false, admin: true, staff: true, user_id: 1, hidden: false, hidden_reason_id: null, trust_level: 4, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false }, { id: 19, username: "eviltrout", avatar_template: "/images/avatar.png", name: "Evil Trout", uploaded_avatar_id: 9, created_at: "2015-08-13T14:49:18.231Z", cooked: "

This is the second post.

", post_number: 2, post_type: 1, updated_at: "2015-08-13T14:49:18.231Z", reply_count: 0, reply_to_post_number: null, quote_count: 0, incoming_link_count: 0, reads: 1, score: 0, yours: true, topic_id: 9, topic_slug: "this-is-a-test-topic", display_username: "", primary_group_name: null, version: 1, can_edit: true, can_delete: true, can_recover: true, read: true, user_title: null, actions_summary: [ { id: 3, can_act: true }, { id: 4, can_act: true }, { id: 5, hidden: true, can_act: true }, { id: 7, can_act: true }, { id: 8, can_act: true } ], moderator: false, admin: true, staff: true, user_id: 1, hidden: false, hidden_reason_id: null, trust_level: 4, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false }, { id: 20, username: "eviltrout", avatar_template: "/images/avatar.png", name: "Evil Trout", uploaded_avatar_id: 9, created_at: "2015-08-13T14:49:23.927Z", cooked: "

This is the third post.

", post_number: 3, post_type: 1, updated_at: "2015-08-13T14:49:23.927Z", reply_count: 0, reply_to_post_number: null, quote_count: 0, incoming_link_count: 0, reads: 1, score: 0, yours: true, topic_id: 9, topic_slug: "this-is-a-test-topic", display_username: "", primary_group_name: null, version: 1, can_edit: true, can_delete: true, can_recover: true, read: true, user_title: null, actions_summary: [ { id: 3, can_act: true }, { id: 4, can_act: true }, { id: 5, hidden: true, can_act: true }, { id: 7, can_act: true }, { id: 8, can_act: true } ], moderator: false, admin: true, staff: true, user_id: 1, hidden: false, hidden_reason_id: null, trust_level: 4, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false } ], stream: [18, 19, 20] }, id: 299, title: "Look at this link", fancy_title: "Look at this link", posts_count: 3, created_at: "2015-08-13T14:49:11.720Z", views: 1, reply_count: 0, participant_count: 1, like_count: 0, last_posted_at: "2015-08-13T14:49:23.927Z", visible: true, closed: false, archived: false, has_summary: false, archetype: "regular", slug: "this-is-a-test-topic", category_id: 1, word_count: 15, deleted_at: null, user_id: 1, draft: null, draft_key: "topic_9", draft_sequence: 3, posted: true, unpinned: null, pinned_globally: false, pinned: false, pinned_at: null, pinned_until: null, featured_link: "http://www.example.com/has-title.html", details: { auto_close_at: null, auto_close_hours: null, auto_close_based_on_last_post: false, created_by: { id: 1, username: "tgxworld", uploaded_avatar_id: 9, avatar_template: "/images/avatar.png" }, last_poster: { id: 1, username: "tgxworld", uploaded_avatar_id: 9, avatar_template: "/images/avatar.png" }, participants: [ { id: 1, username: "tgxworld", uploaded_avatar_id: 9, avatar_template: "/images/avatar.png", post_count: 3 } ], suggested_topics: [ { id: 8, title: "This is a new and awesome topic!", fancy_title: "This is a new and awesome topic!", slug: "this-is-a-new-and-awesome-topic", posts_count: 3, reply_count: 0, highest_post_number: 5, image_url: null, created_at: "2015-08-13T05:17:00.000Z", last_posted_at: "2015-08-13T10:14:34.799Z", bumped: true, bumped_at: "2015-08-13T10:14:34.799Z", unseen: false, last_read_post_number: 5, unread: 0, new_posts: 0, pinned: false, unpinned: null, visible: true, closed: false, archived: false, notification_level: 2, bookmarked: false, liked: false, archetype: "regular", like_count: 0, views: 2, category_id: 1 }, { id: 7, title: "This is a test category!", fancy_title: "This is a test category!", slug: "this-is-a-test-category", posts_count: 3, reply_count: 0, highest_post_number: 3, image_url: null, created_at: "2015-08-10T13:40:38.439Z", last_posted_at: "2015-08-13T01:59:44.928Z", bumped: true, bumped_at: "2015-08-13T01:58:35.206Z", unseen: false, last_read_post_number: 3, unread: 0, new_posts: 0, pinned: false, unpinned: null, visible: true, closed: false, archived: false, notification_level: 3, bookmarked: false, liked: false, archetype: "regular", like_count: 0, views: 2, category_id: 1 } ], notification_level: 3, notifications_reason_id: 1, can_move_posts: true, can_edit: true, can_delete: true, can_recover: true, can_remove_allowed_users: true, can_invite_to: true, can_create_post: true, can_reply_as_new_topic: true, can_flag_topic: true }, highest_post_number: 3, last_read_post_number: 3, deleted_by: null, has_deleted: false, actions_summary: [ { id: 4, count: 0, hidden: false, can_act: true }, { id: 7, count: 0, hidden: false, can_act: true }, { id: 8, count: 0, hidden: false, can_act: true } ], chunk_size: 20, bookmarked: false }, "/t/34/1.json": { post_stream: { posts: [ { id: 98737532, name: null, username: "tim.lange", avatar_template: "/images/avatar.png", created_at: "2019-03-28T07:57:50.527Z", cooked: "

I am writing this private message to you

", ignored: false, post_number: 1, post_type: 1, updated_at: "2019-03-28T07:57:50.527Z", reply_count: 0, reply_to_post_number: null, quote_count: 0, incoming_link_count: 0, reads: 2, score: 1.15, yours: true, topic_id: 34, topic_slug: "test-pm", display_username: null, primary_group_name: null, primary_group_flair_url: null, primary_group_flair_bg_color: null, primary_group_flair_color: null, version: 1, can_edit: true, can_delete: false, can_recover: null, can_wiki: true, read: true, user_title: null, actions_summary: [ { id: 3, can_act: true }, { id: 4, can_act: true }, { id: 8, can_act: true }, { id: 7, can_act: true } ], moderator: false, admin: true, staff: true, user_id: 1, hidden: false, trust_level: 1, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false }, { id: 419, name: "Tim Lange", username: "vox", avatar_template: "/images/avatar.png", created_at: "2019-03-28T08:04:16.790Z", cooked: "

Have a reply for your pm

", ignored: false, post_number: 3, post_type: 1, updated_at: "2019-03-28T08:04:16.790Z", reply_count: 0, reply_to_post_number: null, quote_count: 0, incoming_link_count: 0, reads: 2, score: 1.2, yours: false, topic_id: 34, topic_slug: "test-pm", display_username: "Tim Lange", primary_group_name: null, primary_group_flair_url: null, primary_group_flair_bg_color: null, primary_group_flair_color: null, version: 1, can_edit: true, can_delete: true, can_recover: null, can_wiki: true, read: true, user_title: null, actions_summary: [ { id: 3, can_act: true }, { id: 4, can_act: true }, { id: 8, can_act: true }, { id: 7, can_act: true } ], moderator: false, admin: false, staff: false, user_id: 2, hidden: false, trust_level: 1, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false, notice_type: "new-user" } ], stream: [25, 26, 27] }, timeline_lookup: [[1, 0]], id: 34, title: "Test PM", fancy_title: "Test PM", posts_count: 3, created_at: "2019-03-28T07:57:50.266Z", views: 2, reply_count: 0, like_count: 0, last_posted_at: "2019-03-28T08:04:16.790Z", visible: true, closed: false, archived: false, has_summary: false, archetype: "private_message", slug: "test-pm", category_id: null, word_count: 23, deleted_at: null, pending_posts_count: 0, user_id: 1, featured_link: null, pinned_globally: false, pinned_at: null, pinned_until: null, draft: null, draft_key: "topic_34", draft_sequence: 2, posted: true, unpinned: null, pinned: false, details: { created_by: { id: 1, username: "tim.lange", name: null, avatar_template: "/images/avatar.png" }, last_poster: { id: 2, username: "vox", name: "Tim Lange", avatar_template: "/images/avatar.png" }, allowed_groups: [], allowed_users: [ { id: 2, username: "vox", name: "Tim Lange", avatar_template: "/images/avatar.png" }, { id: 1, username: "tim.lange", name: null, avatar_template: "/images/avatar.png" } ], participants: [ { id: 1, username: "tim.lange", name: null, avatar_template: "/images/avatar.png", post_count: 2, primary_group_name: null, primary_group_flair_url: null, primary_group_flair_color: null, primary_group_flair_bg_color: null }, { id: 2, username: "vox", name: "Tim Lange", avatar_template: "/images/avatar.png", post_count: 1, primary_group_name: null, primary_group_flair_url: null, primary_group_flair_color: null, primary_group_flair_bg_color: null } ], notification_level: 3, notifications_reason_id: 1, can_move_posts: true, can_edit: true, can_delete: true, can_remove_allowed_users: true, can_remove_self_id: 1, can_invite_to: true, can_invite_via_email: true, can_create_post: true, can_reply_as_new_topic: true, can_flag_topic: true, can_convert_topic: true }, current_post_number: 1, highest_post_number: 3, last_read_post_number: 3, last_read_post_id: 27, deleted_by: null, has_deleted: false, actions_summary: [ { id: 4, count: 0, hidden: false, can_act: true }, { id: 8, count: 0, hidden: false, can_act: true }, { id: 7, count: 0, hidden: false, can_act: true } ], chunk_size: 20, bookmarked: false, message_archived: false, topic_timer: null, message_bus_last_id: 7, participant_count: 2, pm_with_non_human_user: false }, "/t/2480/1.json": { post_stream: { posts: [ { id: 41, name: "", username: "group_moderator", avatar_template: "/images/avatar.png", created_at: "2020-07-24T17:48:55.419Z", cooked: "

Here is my new topic. I am a group category moderator!

", post_number: 1, post_type: 1, updated_at: "2020-07-24T17:48:55.419Z", reply_count: 0, reply_to_post_number: null, quote_count: 0, incoming_link_count: 0, reads: 2, readers_count: 1, score: 0, yours: true, topic_id: 2480, topic_slug: "a-topic-with-group-category-moderators", display_username: "", primary_group_name: "group_moderators", primary_group_flair_url: "cheese", primary_group_flair_bg_color: "ff0", primary_group_flair_color: "", version: 1, can_edit: true, can_delete: false, can_recover: false, can_wiki: false, read: true, user_title: "a title", title_is_group: false, bookmarked: false, actions_summary: [ { id: 3, can_act: true }, { id: 4, can_act: true }, { id: 8, can_act: true }, { id: 7, can_act: true } ], moderator: false, admin: false, staff: false, group_moderator: true, user_id: 3, hidden: false, trust_level: 1, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false, reviewable_id: 0, reviewable_score_count: 0, reviewable_score_pending_count: 0 }, { id: 42, name: "", username: "normal_user", avatar_template: "/images/avatar.png", created_at: "2020-07-24T17:50:01.263Z", cooked: "

A fascinating topic worthy of discussion.

", post_number: 2, post_type: 1, updated_at: "2020-07-24T17:50:01.263Z", reply_count: 0, reply_to_post_number: null, quote_count: 0, incoming_link_count: 0, reads: 2, readers_count: 1, score: 0, yours: false, topic_id: 2480, topic_slug: "a-topic-with-group-category-moderators", display_username: "", primary_group_name: null, primary_group_flair_url: null, primary_group_flair_bg_color: null, primary_group_flair_color: null, version: 1, can_edit: false, can_delete: false, can_recover: false, can_wiki: false, read: true, user_title: null, bookmarked: false, actions_summary: [ { id: 2, can_act: true }, { id: 3, can_act: true }, { id: 4, can_act: true }, { id: 8, can_act: true }, { id: 6, can_act: true }, { id: 7, can_act: true } ], moderator: false, admin: false, staff: false, user_id: 2, hidden: false, trust_level: 1, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false, reviewable_id: 0, reviewable_score_count: 0, reviewable_score_pending_count: 0 }, { id: 43, name: "", username: "group_moderator", avatar_template: "/images/avatar.png", created_at: "2020-07-24T17:50:17.274Z", cooked: "

Thank you for your reply!

", post_number: 3, post_type: 1, updated_at: "2020-07-24T17:50:17.274Z", reply_count: 0, reply_to_post_number: null, quote_count: 0, incoming_link_count: 0, reads: 2, readers_count: 1, score: 0, yours: true, topic_id: 2480, topic_slug: "a-topic-with-group-category-moderators", display_username: "", primary_group_name: "group_moderators", primary_group_flair_url: "cheese", primary_group_flair_bg_color: "ff0", primary_group_flair_color: "", version: 1, can_edit: true, can_delete: true, can_recover: false, can_wiki: false, read: true, user_title: "a title", title_is_group: false, bookmarked: false, actions_summary: [ { id: 3, can_act: true }, { id: 4, can_act: true }, { id: 8, can_act: true }, { id: 7, can_act: true } ], moderator: false, admin: false, staff: false, group_moderator: true, user_id: 3, hidden: false, trust_level: 1, deleted_at: null, user_deleted: false, edit_reason: null, can_view_edit_history: true, wiki: false, reviewable_id: 0, reviewable_score_count: 0, reviewable_score_pending_count: 0 } ], stream: [41, 42, 43] }, timeline_lookup: [[1, 0]], id: 2480, title: "A Topic with Group Category Moderators", fancy_title: "A Topic with Group Category Moderators", posts_count: 3, created_at: "2020-07-24T17:48:54.986Z", views: 2, reply_count: 0, like_count: 0, last_posted_at: "2020-07-24T17:50:17.274Z", visible: true, closed: false, archived: false, has_summary: false, archetype: "regular", slug: "a-topic-with-group-category-moderators", category_id: 5, word_count: 22, deleted_at: null, user_id: 3, featured_link: null, pinned_globally: false, pinned_at: null, pinned_until: null, image_url: null, draft: null, draft_key: "topic_2480", draft_sequence: 1, posted: true, unpinned: null, pinned: false, current_post_number: 3, highest_post_number: 3, last_read_post_number: 3, last_read_post_id: 43, deleted_by: null, actions_summary: [ { id: 4, count: 0, hidden: false, can_act: true }, { id: 8, count: 0, hidden: false, can_act: true }, { id: 7, count: 0, hidden: false, can_act: true } ], chunk_size: 20, bookmarked: false, topic_timer: null, message_bus_last_id: 4, participant_count: 2, show_read_indicator: false, thumbnails: null, details: { notification_level: 3, notifications_reason_id: 1, can_edit: true, can_create_post: true, can_move_posts: true, can_reply_as_new_topic: true, can_flag_topic: true, can_review_topic: true, can_close_topic: true, can_archive_topic: true, can_split_merge_topic: true, can_edit_staff_notes: true, participants: [ { id: 3, username: "group_moderator", name: "", avatar_template: "/images/avatar.png", post_count: 2, primary_group_name: "group_moderators", primary_group_flair_url: "cheese", primary_group_flair_color: "", primary_group_flair_bg_color: "ff0" }, { id: 2, username: "normal_user", name: "", avatar_template: "/images/avatar.png", post_count: 1, primary_group_name: null, primary_group_flair_url: null, primary_group_flair_color: null, primary_group_flair_bg_color: null } ], created_by: { id: 3, username: "group_moderator", name: "", avatar_template: "/images/avatar.png" }, last_poster: { id: 3, username: "group_moderator", name: "", avatar_template: "/images/avatar.png" } } } };