{"action":"created","issue":{"url":"https://api.github.com/repos/TryGhost/Ghost/issues/6075","labels_url":"https://api.github.com/repos/TryGhost/Ghost/issues/6075/labels{/name}","comments_url":"https://api.github.com/repos/TryGhost/Ghost/issues/6075/comments","events_url":"https://api.github.com/repos/TryGhost/Ghost/issues/6075/events","html_url":"https://github.com/TryGhost/Ghost/issues/6075","id":116768149,"number":6075,"title":"i18n: Harvesting client-side strings","user":{"login":"kevinkucharczyk","id":3127419,"avatar_url":"https://avatars.githubusercontent.com/u/3127419?v=3","gravatar_id":"","url":"https://api.github.com/users/kevinkucharczyk","html_url":"https://github.com/kevinkucharczyk","followers_url":"https://api.github.com/users/kevinkucharczyk/followers","following_url":"https://api.github.com/users/kevinkucharczyk/following{/other_user}","gists_url":"https://api.github.com/users/kevinkucharczyk/gists{/gist_id}","starred_url":"https://api.github.com/users/kevinkucharczyk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kevinkucharczyk/subscriptions","organizations_url":"https://api.github.com/users/kevinkucharczyk/orgs","repos_url":"https://api.github.com/users/kevinkucharczyk/repos","events_url":"https://api.github.com/users/kevinkucharczyk/events{/privacy}","received_events_url":"https://api.github.com/users/kevinkucharczyk/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/TryGhost/Ghost/labels/ember","name":"ember","color":"e1563f"},{"url":"https://api.github.com/repos/TryGhost/Ghost/labels/i18n","name":"i18n","color":"94D3DE"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":6,"created_at":"2015-11-13T13:25:22Z","updated_at":"2016-01-27T17:33:35Z","closed_at":null,"body":"This is part of the i18n project described in #5345. I'd love to see some progress on this :smile: \r\n\r\nHarvesting server side strings is already in progress (see issue #5617), but we also need to start isolating strings inside the Ember app. This should be done using the [ember-intl](http://formatjs.io/ember/) addon.\r\n\r\nThis is a big job, as we have lots of templates and .js files that have English strings which need to be moved to a translations file and hooked up with ember-intl.\r\n\r\nSo, the first thing to do is to setup the Ghost Ember app to work with ember-intl. I believe we should use the 2.0 branch of the project (as @morficus showed in his proof of concept). Once this is done, we can start working on translating individual files.\r\n\r\nI've checked which files contain strings needing translating and this is what I found:\r\n\r\n- [ ] /core/client/app/assets/lib/uploader.js\r\n- [ ] /core/client/app/components\r\n  - [ ] gh-search-input.js\r\n  - [ ] gh-upload-modal.js\r\n  - [ ] gh-user-invited.js\r\n- [ ] /core/client/app/controllers/modals (multiple files)\r\n- [ ] /core/client/app/controllers/settings/labs.js\r\n- [ ] /core/client/app/controllers/setup (multiple files)\r\n- [ ] /core/client/app/controllers/team/user.js\r\n- [ ] /core/client/app/controllers/error.js\r\n- [ ] /core/client/app/controllers/post-settings-menu.js\r\n- [ ] /core/client/app/controllers/signin.js\r\n- [ ] /core/client/app/controllers/signup.js\r\n- [ ] /core/client/app/html (multiple files)\r\n- [ ] /core/client/app/mixins\r\n  - [ ] editor-base-controller.js\r\n  - [ ] pagination-route.js\r\n- [ ] /core/client/app/models/user.js\r\n- [ ] /core/client/app/routes (most routes have a `titleToken` that should be translated + some have alerts/other strings)\r\n- [ ] /core/client/app/services/notifications.js\r\n- [ ] /core/client/app/templates (pretty much all template files have English strings that need to be isolated)\r\n- [ ] /core/client/app/utils\r\n  - [ ] ajax.js\r\n  - [ ] titleize.js (how would we handle this util in regards to i18n?)\r\n- [ ] /core/client/app/validators (multiple files)\r\n\r\nAs you can see, there's a lot to do here. If you're willing to work on this, feel free to leave a comment stating the files you're translating.\r\n\r\nIf there's anything I missed - please let me know!\r\n\r\nTo the Ghost Core team - if this is not the right time for translating client-side strings, then we could close this issue for now and open it up again later."},"comment":{"url":"https://api.github.com/repos/TryGhost/Ghost/issues/comments/175759312","html_url":"https://github.com/TryGhost/Ghost/issues/6075#issuecomment-175759312","issue_url":"https://api.github.com/repos/TryGhost/Ghost/issues/6075","id":175759312,"user":{"login":"qLb","id":1850546,"avatar_url":"https://avatars.githubusercontent.com/u/1850546?v=3","gravatar_id":"","url":"https://api.github.com/users/qLb","html_url":"https://github.com/qLb","followers_url":"https://api.github.com/users/qLb/followers","following_url":"https://api.github.com/users/qLb/following{/other_user}","gists_url":"https://api.github.com/users/qLb/gists{/gist_id}","starred_url":"https://api.github.com/users/qLb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/qLb/subscriptions","organizations_url":"https://api.github.com/users/qLb/orgs","repos_url":"https://api.github.com/users/qLb/repos","events_url":"https://api.github.com/users/qLb/events{/privacy}","received_events_url":"https://api.github.com/users/qLb/received_events","type":"User","site_admin":false},"created_at":"2016-01-27T17:33:35Z","updated_at":"2016-01-27T17:33:35Z","body":"i'd be glad to help on that, just point me in the right direction @kevinkucharczyk"}}