{"action":"created","issue":{"url":"https://api.github.com/repos/borgbackup/borg/issues/305","labels_url":"https://api.github.com/repos/borgbackup/borg/issues/305/labels{/name}","comments_url":"https://api.github.com/repos/borgbackup/borg/issues/305/comments","events_url":"https://api.github.com/repos/borgbackup/borg/issues/305/events","html_url":"https://github.com/borgbackup/borg/pull/305","id":111994552,"number":305,"title":"I18n","user":{"login":"anarcat","id":796623,"avatar_url":"https://avatars.githubusercontent.com/u/796623?v=3","gravatar_id":"","url":"https://api.github.com/users/anarcat","html_url":"https://github.com/anarcat","followers_url":"https://api.github.com/users/anarcat/followers","following_url":"https://api.github.com/users/anarcat/following{/other_user}","gists_url":"https://api.github.com/users/anarcat/gists{/gist_id}","starred_url":"https://api.github.com/users/anarcat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/anarcat/subscriptions","organizations_url":"https://api.github.com/users/anarcat/orgs","repos_url":"https://api.github.com/users/anarcat/repos","events_url":"https://api.github.com/users/anarcat/events{/privacy}","received_events_url":"https://api.github.com/users/anarcat/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/borgbackup/borg/labels/later","name":"later","color":"888888"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":6,"created_at":"2015-10-18T01:43:56Z","updated_at":"2015-10-18T14:12:39Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/borgbackup/borg/pulls/305","html_url":"https://github.com/borgbackup/borg/pull/305","diff_url":"https://github.com/borgbackup/borg/pull/305.diff","patch_url":"https://github.com/borgbackup/borg/pull/305.patch"},"body":"with this pull request, borg becomes translatable, basically: dates are displayed in the current locale, and gettext `.po` files can be generated from the template to translate all user-visible strings.\r\n\r\nthose strings were painstakingly selected by hand (actually with emacs `query-replace-regex`'s pattern: `'\\([^']*\\)' -> _('\\1')`), and some may be missing, but i believe this is fairly complete.\r\n\r\nof course, the next step is to actually translate borg. this can be outsourced in a community effort, using something like [weblate](https://weblate.org/) which works with git and gettext pretty transparently. i have used it with good success with [monkeysign](https://hosted.weblate.org/projects/monkeysphere/monkeysign/) - this is how the tcheck and spanish translations got in! (oh and look at that, an italian translation too! `/me pulls` :))\r\n\r\nthis is a reroll of #287"},"comment":{"url":"https://api.github.com/repos/borgbackup/borg/issues/comments/149019621","html_url":"https://github.com/borgbackup/borg/pull/305#issuecomment-149019621","issue_url":"https://api.github.com/repos/borgbackup/borg/issues/305","id":149019621,"user":{"login":"ThomasWaldmann","id":356103,"avatar_url":"https://avatars.githubusercontent.com/u/356103?v=3","gravatar_id":"","url":"https://api.github.com/users/ThomasWaldmann","html_url":"https://github.com/ThomasWaldmann","followers_url":"https://api.github.com/users/ThomasWaldmann/followers","following_url":"https://api.github.com/users/ThomasWaldmann/following{/other_user}","gists_url":"https://api.github.com/users/ThomasWaldmann/gists{/gist_id}","starred_url":"https://api.github.com/users/ThomasWaldmann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ThomasWaldmann/subscriptions","organizations_url":"https://api.github.com/users/ThomasWaldmann/orgs","repos_url":"https://api.github.com/users/ThomasWaldmann/repos","events_url":"https://api.github.com/users/ThomasWaldmann/events{/privacy}","received_events_url":"https://api.github.com/users/ThomasWaldmann/received_events","type":"User","site_admin":false},"created_at":"2015-10-18T14:12:39Z","updated_at":"2015-10-18T14:12:39Z","body":"burden: it is way more than wrapping all strings in `_()`. What I meant is having to setup and maintain the infrastructure (e.g. integrating some service), chasing inactive translators / finding new ones, having to cause a much higher effort involving ALL translators whenever changing any original string (as it will invalidate all translations it already had), dealing with languages that have more than one flavour, dealing with non-ascii console or log output, dealing with languages we do not even understand, dealing with scripts we can't even read, dealing with right-to-left languages, dealing with different plural forms, having to translate the docs also so it keeps matching the code, keeping everything up-to-date and matching, ........\r\n\r\ndiagnostics: LANG=C doesn't help you if it wasn't configured like this and just happened once. of course we can read the traceback (if there is one), but if there is just an error message, would you like to deal with bug reports containing non-english error messages you can not understand?\r\n\r\ntranslation scope: good to agree about not translating commandline option long names. but isn't it feeling inconsistent then if you speak english with the tool and the tool speaks french to you?\r\n\r\ntranslation quality: often there isn't that much peer review (and as developers, we often would have to deal with translations we do not understand at all). I agree this is no fundamental argument against translations, but it is just a sad fact that there are many bad translations due to lack of qualified peer review.\r\n\r\ntranslation user benefits: if this were a GUI project, I'ld agree. But in fact it is a commandline tool and it requires root to do a full system backup - and that already limits the audience to users and system admins who know how to operate a commandline and deal with mostly english text user interfaces and docs.\r\n\r\nanother thing that I didn't mention yet is priorities: we have quite a lot to fix aside from translation until borg works perfectly. by introducing translation, it will just slow down all the other efforts to make it a good working backup tool (see \"burden\")."}}