)]}'
{"specs/translation_setup.rst":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"db9a9d3fc9f851a12588558354b1ff747f213d2d","unresolved":false,"context_lines":[{"line_number":70,"context_line":"#. Instead of using ``$repo/locale/$repo.pot``, we use"},{"line_number":71,"context_line":"   ``$modulename/locale/$modulename.pot``."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"#. Repositories using the django framework use two domains, one called"},{"line_number":74,"context_line":"   ``django.pot`` for strings from Python files and one called"},{"line_number":75,"context_line":"   ``djangojs.pot`` for strings from Javascript files."},{"line_number":76,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa69d971_b5529565","line":73,"updated":"2016-01-11 19:16:31.000000000","message":"One thing that isn\u0027t clear to me is if we would use the same pybabel process described below for the non django repos as well. If possible I think we should so that we are consistent across all projects as far as what command is run and how that command is configured. Maybe we can be a bit more explicit about this in the spec.","commit_id":"718bc44c763894abebd1d95f364f64f34e237d48"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"db9a9d3fc9f851a12588558354b1ff747f213d2d","unresolved":false,"context_lines":[{"line_number":127,"context_line":"   environment for calling ``pybabel``."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"#. All repositories ending in ``-ui`` or ``-dashboard`` will get the"},{"line_number":130,"context_line":"   treadment from the previous step."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"   Note that the ``horizon`` repository which has two modules, all"},{"line_number":133,"context_line":"   other repositories have only one module."}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa69d971_b524d50c","line":130,"updated":"2016-01-11 19:16:31.000000000","message":"Minor typo, should be \"treatment\". Not a -1.","commit_id":"718bc44c763894abebd1d95f364f64f34e237d48"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6dab351b0adb8ce3582e23e61b84907ea7809a08","unresolved":false,"context_lines":[{"line_number":41,"context_line":"#. For \"python\" repositories, we expect that the locale file is"},{"line_number":42,"context_line":"   located at ``$repo/locale/$repo.pot`` - without any change possible."},{"line_number":43,"context_line":"   This leads to python-novaclient/locale/python-novaclient.pot and"},{"line_number":44,"context_line":"   oslo.log/locale/oslo.log.i18n - in both cases the python module has"},{"line_number":45,"context_line":"   a different name, novaclient and oslo_log."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"   Currently everybody makes it wrong and we have to help them using"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa69d971_c82beb80","line":44,"range":{"start_line":44,"start_character":19,"end_line":44,"end_character":32},"updated":"2016-01-11 22:26:20.000000000","message":"-\u003e oslo.log.pot","commit_id":"686585b35571cae421dc176612e87127d5b6d44a"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"d0b4d71514f6d680193567e701d2cbd38ff927f3","unresolved":false,"context_lines":[{"line_number":41,"context_line":"#. For \"python\" repositories, we expect that the locale file is"},{"line_number":42,"context_line":"   located at ``$repo/locale/$repo.pot`` - without any change possible."},{"line_number":43,"context_line":"   This leads to python-novaclient/locale/python-novaclient.pot and"},{"line_number":44,"context_line":"   oslo.log/locale/oslo.log.i18n - in both cases the python module has"},{"line_number":45,"context_line":"   a different name, novaclient and oslo_log."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"   Currently everybody makes it wrong and we have to help them using"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da6ed579_d2e7a33e","line":44,"range":{"start_line":44,"start_character":19,"end_line":44,"end_character":32},"in_reply_to":"fa69d971_c82beb80","updated":"2016-01-12 19:23:49.000000000","message":"Done","commit_id":"686585b35571cae421dc176612e87127d5b6d44a"},{"author":{"_account_id":10980,"name":"Doug Wiegley","email":"dougwig@parkside.io","username":"dougw"},"change_message_id":"b4ee7d44b8051f3bfb42ec85de8af4b894e10a8c","unresolved":false,"context_lines":[{"line_number":45,"context_line":"   a different name, novaclient and oslo_log."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"   Currently everybody makes it wrong and we have to help them using"},{"line_number":48,"context_line":"   the proper file names."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"   There\u0027s also an inconsistency on how the gettext ``domainname`` is"},{"line_number":51,"context_line":"   set, file ``setup.cfg`` contains an entry and also oslo.i18n\u0027s"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa69d971_885bb385","line":48,"range":{"start_line":48,"start_character":19,"end_line":48,"end_character":24},"updated":"2016-01-11 21:03:16.000000000","message":"Not to mention that it destroys tab completion and slowly drives some of us insane.","commit_id":"686585b35571cae421dc176612e87127d5b6d44a"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"89bd6f8c6c242af453d8a0f5cc0e06f469572975","unresolved":false,"context_lines":[{"line_number":68,"context_line":"   ``packages`` entry in the ``[files]`` section is used as name for"},{"line_number":69,"context_line":"   the module. If there is more than one entry, the first one is used."},{"line_number":70,"context_line":"   If the entry contains \"/\", \"\\\", or \".\", the initial string  before"},{"line_number":71,"context_line":"   these special characters is used."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"#. Instead of using ``$repo/locale/$repo.pot``, the CI scripts will use"},{"line_number":74,"context_line":"   ``$modulename/locale/$modulename.pot`` as location for POT files of"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa69d971_a22d76ff","line":71,"updated":"2016-01-11 20:12:47.000000000","message":"/ and \\ are invalid in packages entries. Please file a bug on pbr - we should be logging warnings on that.\n\nWhy use only the first part of the string? That will break with namespace packages, which we still have some of AIUI (long tail and all). It will also break neutron extensions by folding them into neutron and overwriting each others files.\n\nIn fact its quite possible that we have bogus data throughout the system, as packages is really only relevant for pbr for built files which few if any project use today - we don\u0027t use the provides distutils feature, and we autoinclude git contents.\n\nIn the longer term I\u0027d like to be doing away with the use of packages as parameter in setup.cfg and autogenerating it from git data. This would lead to having (e.g. for swift) multiple top level entries. So I think you should blacklist the regex \u0027tests.*\u0027 from the entries you consider, and rather than taking first, sort them and take the shortest (foo will then be before foo.bar)  - I don\u0027t know if this works for horizon or not?","commit_id":"686585b35571cae421dc176612e87127d5b6d44a"},{"author":{"_account_id":10980,"name":"Doug Wiegley","email":"dougwig@parkside.io","username":"dougw"},"change_message_id":"b4ee7d44b8051f3bfb42ec85de8af4b894e10a8c","unresolved":false,"context_lines":[{"line_number":68,"context_line":"   ``packages`` entry in the ``[files]`` section is used as name for"},{"line_number":69,"context_line":"   the module. If there is more than one entry, the first one is used."},{"line_number":70,"context_line":"   If the entry contains \"/\", \"\\\", or \".\", the initial string  before"},{"line_number":71,"context_line":"   these special characters is used."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"#. Instead of using ``$repo/locale/$repo.pot``, the CI scripts will use"},{"line_number":74,"context_line":"   ``$modulename/locale/$modulename.pot`` as location for POT files of"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa69d971_68e67fb1","line":71,"in_reply_to":"fa69d971_052ecc8b","updated":"2016-01-11 21:03:16.000000000","message":"Is there a way to invoke python on setup.py to get the module name instead of parsing? If it\u0027s easier/saner long-term.","commit_id":"686585b35571cae421dc176612e87127d5b6d44a"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"d0b4d71514f6d680193567e701d2cbd38ff927f3","unresolved":false,"context_lines":[{"line_number":68,"context_line":"   ``packages`` entry in the ``[files]`` section is used as name for"},{"line_number":69,"context_line":"   the module. If there is more than one entry, the first one is used."},{"line_number":70,"context_line":"   If the entry contains \"/\", \"\\\", or \".\", the initial string  before"},{"line_number":71,"context_line":"   these special characters is used."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"#. Instead of using ``$repo/locale/$repo.pot``, the CI scripts will use"},{"line_number":74,"context_line":"   ``$modulename/locale/$modulename.pot`` as location for POT files of"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da6ed579_32495f32","line":71,"in_reply_to":"fa69d971_68e67fb1","updated":"2016-01-12 19:23:49.000000000","message":"I\u0027m not aware of any.","commit_id":"686585b35571cae421dc176612e87127d5b6d44a"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"383f082c79268d14037e5d5de844a872beae2ffe","unresolved":false,"context_lines":[{"line_number":68,"context_line":"   ``packages`` entry in the ``[files]`` section is used as name for"},{"line_number":69,"context_line":"   the module. If there is more than one entry, the first one is used."},{"line_number":70,"context_line":"   If the entry contains \"/\", \"\\\", or \".\", the initial string  before"},{"line_number":71,"context_line":"   these special characters is used."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"#. Instead of using ``$repo/locale/$repo.pot``, the CI scripts will use"},{"line_number":74,"context_line":"   ``$modulename/locale/$modulename.pot`` as location for POT files of"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa69d971_052ecc8b","line":71,"in_reply_to":"fa69d971_a22d76ff","updated":"2016-01-11 20:18:16.000000000","message":"https://bugs.launchpad.net/pbr/+bug/1532933 filed.\n\nRegarding the packages parameter - I\u0027m not getting yet what you propose","commit_id":"686585b35571cae421dc176612e87127d5b6d44a"},{"author":{"_account_id":10980,"name":"Doug Wiegley","email":"dougwig@parkside.io","username":"dougw"},"change_message_id":"b4ee7d44b8051f3bfb42ec85de8af4b894e10a8c","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"#. Instead of using ``$repo/locale/$repo.pot``, the CI scripts will use"},{"line_number":74,"context_line":"   ``$modulename/locale/$modulename.pot`` as location for POT files of"},{"line_number":75,"context_line":"   python projects."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"#. Repositories using the django framework use two domains, one called"},{"line_number":78,"context_line":"   ``django.pot`` for strings from Python files and one called"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa69d971_08f6e35c","line":75,"range":{"start_line":75,"start_character":10,"end_line":75,"end_character":18},"updated":"2016-01-11 21:03:16.000000000","message":"Any provisions for supporting the old names for a period of time during transition? Or how will you handle that upgrade?","commit_id":"686585b35571cae421dc176612e87127d5b6d44a"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"cf996878c26dfb44d80fcc6fd5ff8953a10ec0e5","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"#. Instead of using ``$repo/locale/$repo.pot``, the CI scripts will use"},{"line_number":74,"context_line":"   ``$modulename/locale/$modulename.pot`` as location for POT files of"},{"line_number":75,"context_line":"   python projects."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"#. Repositories using the django framework use two domains, one called"},{"line_number":78,"context_line":"   ``django.pot`` for strings from Python files and one called"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa69d971_8ba64d0d","line":75,"range":{"start_line":75,"start_character":10,"end_line":75,"end_character":18},"in_reply_to":"fa69d971_08f6e35c","updated":"2016-01-11 21:07:19.000000000","message":"We have to figure out how to do this migration properly, I plan to start with one or two repos first and then go from there...","commit_id":"686585b35571cae421dc176612e87127d5b6d44a"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6dab351b0adb8ce3582e23e61b84907ea7809a08","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"   Since these jobs run on a slave that has access to passwords, we"},{"line_number":82,"context_line":"   will not call scripts inside the repositories but let the CI"},{"line_number":83,"context_line":"   scripts do the work."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"   We will update the CI scripts to call pybabel directly like the"},{"line_number":86,"context_line":"   following:"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da6ed579_092f89a2","line":83,"updated":"2016-01-11 22:26:20.000000000","message":"Even though the CI scripts directly call pybabel, it is better to have a similar script in each repository. It helps developers (and operators). It might be out-of-scope of this patch.","commit_id":"686585b35571cae421dc176612e87127d5b6d44a"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"d0b4d71514f6d680193567e701d2cbd38ff927f3","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"   Since these jobs run on a slave that has access to passwords, we"},{"line_number":82,"context_line":"   will not call scripts inside the repositories but let the CI"},{"line_number":83,"context_line":"   scripts do the work."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"   We will update the CI scripts to call pybabel directly like the"},{"line_number":86,"context_line":"   following:"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da6ed579_32707f72","line":83,"in_reply_to":"da6ed579_092f89a2","updated":"2016-01-12 19:23:49.000000000","message":"I\u0027ll added a recommendation sentence, please review next revision.","commit_id":"686585b35571cae421dc176612e87127d5b6d44a"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6dab351b0adb8ce3582e23e61b84907ea7809a08","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"   This uses the ``Babel``, ``django-babel``, and ``horizon``"},{"line_number":131,"context_line":"   packages, these will be installed by the CI scripts in a virtual"},{"line_number":132,"context_line":"   environment for calling ``pybabel``."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"#. All repositories ending in ``-ui`` or ``-dashboard`` will get the"},{"line_number":135,"context_line":"   treatment from the previous step. Projects that do not have special"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa69d971_0b17bd45","line":132,"updated":"2016-01-11 22:26:20.000000000","message":"Question: Does it mean that each django repository does not require to install horizon?\n\nhorizon depends on Babel and django-babel. What we need to do is just to install horizon.","commit_id":"686585b35571cae421dc176612e87127d5b6d44a"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"d0b4d71514f6d680193567e701d2cbd38ff927f3","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"   This uses the ``Babel``, ``django-babel``, and ``horizon``"},{"line_number":131,"context_line":"   packages, these will be installed by the CI scripts in a virtual"},{"line_number":132,"context_line":"   environment for calling ``pybabel``."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"#. All repositories ending in ``-ui`` or ``-dashboard`` will get the"},{"line_number":135,"context_line":"   treatment from the previous step. Projects that do not have special"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da6ed579_7214b7f4","line":132,"in_reply_to":"fa69d971_0b17bd45","updated":"2016-01-12 19:23:49.000000000","message":"Repos will not need to install horizon if they did it only for the purpose of translation extraction.","commit_id":"686585b35571cae421dc176612e87127d5b6d44a"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6dab351b0adb8ce3582e23e61b84907ea7809a08","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"   Note that the ``horizon`` repository has to be treated special"},{"line_number":140,"context_line":"   since it has two modules, all other repositories have only one"},{"line_number":141,"context_line":"   module."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"   This Django setup will be used for the following repositories that"},{"line_number":144,"context_line":"   are currently setup (or planned to be setup) in ``project-config``"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa69d971_963c34e2","line":141,"updated":"2016-01-11 22:26:20.000000000","message":"In horizon repo, we have two entries in setup.cfg [1].\nIf we determine module names from setup.cfg, we don\u0027t need to handle the horizon repo specially.\n\n[1] https://github.com/openstack/horizon/blob/master/setup.cfg#L28-L31","commit_id":"686585b35571cae421dc176612e87127d5b6d44a"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"d0b4d71514f6d680193567e701d2cbd38ff927f3","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"   Note that the ``horizon`` repository has to be treated special"},{"line_number":140,"context_line":"   since it has two modules, all other repositories have only one"},{"line_number":141,"context_line":"   module."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"   This Django setup will be used for the following repositories that"},{"line_number":144,"context_line":"   are currently setup (or planned to be setup) in ``project-config``"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da6ed579_722b5731","line":141,"in_reply_to":"fa69d971_963c34e2","updated":"2016-01-12 19:23:49.000000000","message":"I reviewed many other repos and this will not work.","commit_id":"686585b35571cae421dc176612e87127d5b6d44a"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6dab351b0adb8ce3582e23e61b84907ea7809a08","unresolved":false,"context_lines":[{"line_number":144,"context_line":"   are currently setup (or planned to be setup) in ``project-config``"},{"line_number":145,"context_line":"   repository for translations: horizon, django_openstack_auth,"},{"line_number":146,"context_line":"   designate-dashboard, horizon-cisco-ui, magnum-ui, murano-dashboard,"},{"line_number":147,"context_line":"   trove-dashboard, zaqar-ui."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da6ed579_8cf2a705","line":147,"updated":"2016-01-11 22:26:20.000000000","message":"More complex situation is happening in neutron subjects (described below).\n\nI think you oppose this way. The input from the infra side would be appreciated.\n\nThey want to have their own dashboard in their repositories.\nThis means we have both normal python POT and dashboard POT files in a single repository.\n\nhttp://lists.openstack.org/pipermail/openstack-dev/2015-December/thread.html#81050\nhttp://lists.openstack.org/pipermail/openstack-dev/2015-November/thread.html#80441\n\nThis leads to a situation that we have POT files in multiple places:\n- \u003cmodulename\u003e/locale/*.pot (for python project)\n- dashboard/locale/{django,djangojs}.pot (for dashboard)\n\nHonestly I don\u0027t have a good idea how to handle them.\nShould we stop this way which most neutron folks prefers?\nI would like to have input from the infra perspective to the above discussion.","commit_id":"686585b35571cae421dc176612e87127d5b6d44a"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"d0b4d71514f6d680193567e701d2cbd38ff927f3","unresolved":false,"context_lines":[{"line_number":144,"context_line":"   are currently setup (or planned to be setup) in ``project-config``"},{"line_number":145,"context_line":"   repository for translations: horizon, django_openstack_auth,"},{"line_number":146,"context_line":"   designate-dashboard, horizon-cisco-ui, magnum-ui, murano-dashboard,"},{"line_number":147,"context_line":"   trove-dashboard, zaqar-ui."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da6ed579_321e3f0d","line":147,"in_reply_to":"da6ed579_1ae9fb1a","updated":"2016-01-12 19:23:49.000000000","message":"I\u0027ll add a paragraph for these. thanks for bringing this to my attention!","commit_id":"686585b35571cae421dc176612e87127d5b6d44a"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"2a80abdf93248cbfb07bd507f24e3cf7b3ed3779","unresolved":false,"context_lines":[{"line_number":144,"context_line":"   are currently setup (or planned to be setup) in ``project-config``"},{"line_number":145,"context_line":"   repository for translations: horizon, django_openstack_auth,"},{"line_number":146,"context_line":"   designate-dashboard, horizon-cisco-ui, magnum-ui, murano-dashboard,"},{"line_number":147,"context_line":"   trove-dashboard, zaqar-ui."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da6ed579_1ae9fb1a","line":147,"in_reply_to":"da6ed579_374f3a94","updated":"2016-01-12 07:51:24.000000000","message":"AFAIK there is no such repositories yet.\n\nI think extracting messages works by checking \u0027dashboard\u0027 directory (for example), but I haven\u0027t checked other operations like pushing/pulling translations to/from Zanata and so on.","commit_id":"686585b35571cae421dc176612e87127d5b6d44a"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"04dd21dda603019cb4be9a654184ec468ab36852","unresolved":false,"context_lines":[{"line_number":144,"context_line":"   are currently setup (or planned to be setup) in ``project-config``"},{"line_number":145,"context_line":"   repository for translations: horizon, django_openstack_auth,"},{"line_number":146,"context_line":"   designate-dashboard, horizon-cisco-ui, magnum-ui, murano-dashboard,"},{"line_number":147,"context_line":"   trove-dashboard, zaqar-ui."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da6ed579_374f3a94","line":147,"in_reply_to":"da6ed579_8cf2a705","updated":"2016-01-12 07:41:53.000000000","message":"Do we have already a repository setup the way as you mention above? I\u0027d like to see how this could work...","commit_id":"686585b35571cae421dc176612e87127d5b6d44a"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6dab351b0adb8ce3582e23e61b84907ea7809a08","unresolved":false,"context_lines":[{"line_number":161,"context_line":"-----------"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Primary assignee:"},{"line_number":164,"context_line":"  jaegerandi"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Gerrit Topic"},{"line_number":167,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa69d971_a876b7a1","line":164,"updated":"2016-01-11 22:26:20.000000000","message":"I can help this effort.","commit_id":"686585b35571cae421dc176612e87127d5b6d44a"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"d0b4d71514f6d680193567e701d2cbd38ff927f3","unresolved":false,"context_lines":[{"line_number":161,"context_line":"-----------"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Primary assignee:"},{"line_number":164,"context_line":"  jaegerandi"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Gerrit Topic"},{"line_number":167,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da6ed579_b2d8ef54","line":164,"in_reply_to":"fa69d971_a876b7a1","updated":"2016-01-12 19:23:49.000000000","message":"Great!","commit_id":"686585b35571cae421dc176612e87127d5b6d44a"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"89bd6f8c6c242af453d8a0f5cc0e06f469572975","unresolved":false,"context_lines":[{"line_number":181,"context_line":"* Update the Infra scripts. Implement the new setup for one or two"},{"line_number":182,"context_line":"  repositories and test everything, then add further repositories. As"},{"line_number":183,"context_line":"  part of this we need to rename modules in Zanata and in"},{"line_number":184,"context_line":"  repositories. "},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"  There might be a freeze for translations sync while the renaming"},{"line_number":187,"context_line":"  happens."}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa69d971_c27e6ae3","line":184,"updated":"2016-01-11 20:12:47.000000000","message":"trailing whitespace nit","commit_id":"686585b35571cae421dc176612e87127d5b6d44a"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"383f082c79268d14037e5d5de844a872beae2ffe","unresolved":false,"context_lines":[{"line_number":181,"context_line":"* Update the Infra scripts. Implement the new setup for one or two"},{"line_number":182,"context_line":"  repositories and test everything, then add further repositories. As"},{"line_number":183,"context_line":"  part of this we need to rename modules in Zanata and in"},{"line_number":184,"context_line":"  repositories. "},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"  There might be a freeze for translations sync while the renaming"},{"line_number":187,"context_line":"  happens."}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa69d971_655548f8","line":184,"in_reply_to":"fa69d971_c27e6ae3","updated":"2016-01-11 20:18:16.000000000","message":"will fix, thanks","commit_id":"686585b35571cae421dc176612e87127d5b6d44a"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6dab351b0adb8ce3582e23e61b84907ea7809a08","unresolved":false,"context_lines":[{"line_number":193,"context_line":"    http://docs.openstack.org/infra/system-config/translate.html ."},{"line_number":194,"context_line":"  - for projects on how to enable translations, we should add a new"},{"line_number":195,"context_line":"    section to the Creator\u0027s Guide of the `Infra Manual"},{"line_number":196,"context_line":"    \u003chttp://docs.openstack.org/infra/manual/creators.html\u003e`__."},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"Repositories"},{"line_number":199,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa69d971_e8602fd1","line":196,"updated":"2016-01-11 22:26:20.000000000","message":"It is better to update the project cookiecutter too.","commit_id":"686585b35571cae421dc176612e87127d5b6d44a"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"d0b4d71514f6d680193567e701d2cbd38ff927f3","unresolved":false,"context_lines":[{"line_number":193,"context_line":"    http://docs.openstack.org/infra/system-config/translate.html ."},{"line_number":194,"context_line":"  - for projects on how to enable translations, we should add a new"},{"line_number":195,"context_line":"    section to the Creator\u0027s Guide of the `Infra Manual"},{"line_number":196,"context_line":"    \u003chttp://docs.openstack.org/infra/manual/creators.html\u003e`__."},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"Repositories"},{"line_number":199,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da6ed579_d29fa35d","line":196,"in_reply_to":"fa69d971_e8602fd1","updated":"2016-01-12 19:23:49.000000000","message":"Ok, will add.","commit_id":"686585b35571cae421dc176612e87127d5b6d44a"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"102e7cd10beb1e25c39741a282bac217bc182aaf","unresolved":false,"context_lines":[{"line_number":33,"context_line":"translations for libraries like oslo.i18n, for python clients like"},{"line_number":34,"context_line":"python-novaclient or python-openstackclient, for dashboard plug-ins"},{"line_number":35,"context_line":"like designate-dashboard, or for networking plug-ins like"},{"line_number":36,"context_line":"netwokring-l2gw or networking-ovn."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Setting up translations for new projects currently has the following"},{"line_number":39,"context_line":"challenges:"}],"source_content_type":"text/x-rst","patch_set":13,"id":"da6ed579_56098794","line":36,"updated":"2016-01-12 11:04:44.000000000","message":"Typo: \"netwokring\" -\u003e \"networking\"","commit_id":"abb6e1828186fa6d5dea39539bbfc442b4f5460f"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"725775a65015f8e3f54fe8b8ae219d0d63090285","unresolved":false,"context_lines":[{"line_number":33,"context_line":"translations for libraries like oslo.i18n, for python clients like"},{"line_number":34,"context_line":"python-novaclient or python-openstackclient, for dashboard plug-ins"},{"line_number":35,"context_line":"like designate-dashboard, or for networking plug-ins like"},{"line_number":36,"context_line":"netwokring-l2gw or networking-ovn."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Setting up translations for new projects currently has the following"},{"line_number":39,"context_line":"challenges:"}],"source_content_type":"text/x-rst","patch_set":13,"id":"da6ed579_f2b6673c","line":36,"in_reply_to":"da6ed579_56098794","updated":"2016-01-12 19:13:36.000000000","message":"Done","commit_id":"abb6e1828186fa6d5dea39539bbfc442b4f5460f"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"102e7cd10beb1e25c39741a282bac217bc182aaf","unresolved":false,"context_lines":[{"line_number":44,"context_line":"   oslo.log/locale/oslo.log.i18n - in both cases the python module has"},{"line_number":45,"context_line":"   a different name, novaclient and oslo_log."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"   Currently everybody makes it wrong and we have to help them using"},{"line_number":48,"context_line":"   the proper file names."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"   There\u0027s also an inconsistency on how the gettext ``domainname`` is"}],"source_content_type":"text/x-rst","patch_set":13,"id":"da6ed579_f6343b4b","line":47,"updated":"2016-01-12 11:04:44.000000000","message":"\"using\" -\u003e \"use\"","commit_id":"abb6e1828186fa6d5dea39539bbfc442b4f5460f"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"725775a65015f8e3f54fe8b8ae219d0d63090285","unresolved":false,"context_lines":[{"line_number":44,"context_line":"   oslo.log/locale/oslo.log.i18n - in both cases the python module has"},{"line_number":45,"context_line":"   a different name, novaclient and oslo_log."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"   Currently everybody makes it wrong and we have to help them using"},{"line_number":48,"context_line":"   the proper file names."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"   There\u0027s also an inconsistency on how the gettext ``domainname`` is"}],"source_content_type":"text/x-rst","patch_set":13,"id":"da6ed579_92828b51","line":47,"in_reply_to":"da6ed579_f6343b4b","updated":"2016-01-12 19:13:36.000000000","message":"Done","commit_id":"abb6e1828186fa6d5dea39539bbfc442b4f5460f"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"102e7cd10beb1e25c39741a282bac217bc182aaf","unresolved":false,"context_lines":[{"line_number":141,"context_line":"   requirements will continue to use ``python setup.py"},{"line_number":142,"context_line":"   extract_messages``."},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"   Note that the ``horizon`` repository has to be treated special"},{"line_number":145,"context_line":"   since it has two modules, all other repositories have only one"},{"line_number":146,"context_line":"   module."},{"line_number":147,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"da6ed579_791d9c65","line":144,"updated":"2016-01-12 11:04:44.000000000","message":"\"special\" -\u003e \"specially\"","commit_id":"abb6e1828186fa6d5dea39539bbfc442b4f5460f"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"725775a65015f8e3f54fe8b8ae219d0d63090285","unresolved":false,"context_lines":[{"line_number":141,"context_line":"   requirements will continue to use ``python setup.py"},{"line_number":142,"context_line":"   extract_messages``."},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"   Note that the ``horizon`` repository has to be treated special"},{"line_number":145,"context_line":"   since it has two modules, all other repositories have only one"},{"line_number":146,"context_line":"   module."},{"line_number":147,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"da6ed579_527c1372","line":144,"in_reply_to":"da6ed579_791d9c65","updated":"2016-01-12 19:13:36.000000000","message":"Done","commit_id":"abb6e1828186fa6d5dea39539bbfc442b4f5460f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"8ec5ba6b5bf8b62f53b7625f1a501fd9d79b761a","unresolved":false,"context_lines":[{"line_number":59,"context_line":"#. There\u0027s also discussion going on to add to the various networking plug-in"},{"line_number":60,"context_line":"   repositories also dashboard content so that they contain both"},{"line_number":61,"context_line":"   python and Django directories. We should define how to translate"},{"line_number":62,"context_line":"   these."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Proposed Change"},{"line_number":65,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":14,"id":"da6ed579_b667314c","line":62,"updated":"2016-01-14 02:55:16.000000000","message":"vitrage-dashboard is also in this category. A single repository contains a regular server project code and a dashboard code.","commit_id":"b869926dc602bb58d98d02cee96cb9816069df7d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"8ec5ba6b5bf8b62f53b7625f1a501fd9d79b761a","unresolved":false,"context_lines":[{"line_number":145,"context_line":"   ``extractmessages`` and it should use pybabel like the CI scripts"},{"line_number":146,"context_line":"   do."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"#. All repositories ending in ``-ui`` or ``-dashboard`` will get the"},{"line_number":149,"context_line":"   treatment from the previous step. Projects that do not have special"},{"line_number":150,"context_line":"   requirements will continue to use ``python setup.py"},{"line_number":151,"context_line":"   extract_messages``."}],"source_content_type":"text/x-rst","patch_set":14,"id":"da6ed579_5b5a9e2b","line":148,"updated":"2016-01-14 02:55:16.000000000","message":"I noticed some repositories use \u0027-horizon\u0027 as suffix: astara-horizon and tacker-horizon.","commit_id":"b869926dc602bb58d98d02cee96cb9816069df7d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"8ec5ba6b5bf8b62f53b7625f1a501fd9d79b761a","unresolved":false,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":"   Note that the ``horizon`` repository has to be treated specially"},{"line_number":154,"context_line":"   since it has two modules, all other repositories have only one"},{"line_number":155,"context_line":"   module."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"   This Django setup will be used for the following repositories that"},{"line_number":158,"context_line":"   are currently setup (or planned to be setup) in ``project-config``"}],"source_content_type":"text/x-rst","patch_set":14,"id":"da6ed579_3672617c","line":155,"updated":"2016-01-14 02:55:16.000000000","message":"We extract","commit_id":"b869926dc602bb58d98d02cee96cb9816069df7d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"d2da6e93ec93a91b82c4fa3720ed705d68e343eb","unresolved":false,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":"   Note that the ``horizon`` repository has to be treated specially"},{"line_number":154,"context_line":"   since it has two modules, all other repositories have only one"},{"line_number":155,"context_line":"   module."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"   This Django setup will be used for the following repositories that"},{"line_number":158,"context_line":"   are currently setup (or planned to be setup) in ``project-config``"}],"source_content_type":"text/x-rst","patch_set":14,"id":"da6ed579_9b280d88","line":155,"in_reply_to":"da6ed579_3672617c","updated":"2016-01-14 07:05:07.000000000","message":"I cannot remember what I would like to comment.\nPerhaps I would like to mention we can support in a same way as others if we can extract a list of modules from setup.cfg.","commit_id":"b869926dc602bb58d98d02cee96cb9816069df7d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"8ec5ba6b5bf8b62f53b7625f1a501fd9d79b761a","unresolved":false,"context_lines":[{"line_number":164,"context_line":"   both Python and Django code will all be treated the same way. The"},{"line_number":165,"context_line":"   CI scripts will run both Python and Django translations extraction."},{"line_number":166,"context_line":"   The exact way to configure the names of the Python module and the"},{"line_number":167,"context_line":"   Django directory will be evaluated and documented."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Alternatives"},{"line_number":170,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":14,"id":"da6ed579_b69c1110","line":167,"updated":"2016-01-14 02:55:16.000000000","message":"This is a case where a single repository contains a regular server project code and a dashboard code.\n\nWe need to define a guideline on this case.\n\nMy idea is to have two modules, one for a regular server project and anther one for dashboard. We need to prepare POT files for a server project and a dashboard and files should not be overlapped. Having separate python modules makes easy extract strings.\n\nThought?","commit_id":"b869926dc602bb58d98d02cee96cb9816069df7d"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"17c3497e4a58a62b3e1dd43b4a3bc1c67d637f33","unresolved":false,"context_lines":[{"line_number":164,"context_line":"   both Python and Django code will all be treated the same way. The"},{"line_number":165,"context_line":"   CI scripts will run both Python and Django translations extraction."},{"line_number":166,"context_line":"   The exact way to configure the names of the Python module and the"},{"line_number":167,"context_line":"   Django directory will be evaluated and documented."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Alternatives"},{"line_number":170,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":14,"id":"ba63e191_a298d26b","line":167,"in_reply_to":"da6ed579_502594be","updated":"2016-01-18 18:48:58.000000000","message":"I was trying to avoid this since this is one thing less to setup. But this might be a nice idea for a fallback.","commit_id":"b869926dc602bb58d98d02cee96cb9816069df7d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"3e784b4befd5bfb48e1f98451aef607840a69fa5","unresolved":false,"context_lines":[{"line_number":164,"context_line":"   both Python and Django code will all be treated the same way. The"},{"line_number":165,"context_line":"   CI scripts will run both Python and Django translations extraction."},{"line_number":166,"context_line":"   The exact way to configure the names of the Python module and the"},{"line_number":167,"context_line":"   Django directory will be evaluated and documented."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Alternatives"},{"line_number":170,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":14,"id":"da6ed579_502594be","line":167,"in_reply_to":"da6ed579_b69c1110","updated":"2016-01-14 07:03:08.000000000","message":"BTW, can we add some entries which specifies django modules (and regular python modules) in setup.cfg. I think it would be helpful for a repository which has both regular server project and dashboard code.\n\nFor example,\n\n  [openstack_translations]\n  django_modules \u003d\n    module1\n  regular_modules \u003d\n    module2\n    module3\n\nIf this entry is found, this entry is honored.\nOtherwise, a repository name is used to determine a module type.\n\nThought?","commit_id":"b869926dc602bb58d98d02cee96cb9816069df7d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"8ec5ba6b5bf8b62f53b7625f1a501fd9d79b761a","unresolved":false,"context_lines":[{"line_number":208,"context_line":"  repositories."},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"  There might be a freeze for translations sync while the renaming"},{"line_number":211,"context_line":"  happens."},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"* Update documentation:"},{"line_number":214,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"da6ed579_f62a898f","line":211,"updated":"2016-01-14 02:55:16.000000000","message":"Good idea. It makes our work easy.","commit_id":"b869926dc602bb58d98d02cee96cb9816069df7d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"8ec5ba6b5bf8b62f53b7625f1a501fd9d79b761a","unresolved":false,"context_lines":[{"line_number":217,"context_line":"    http://docs.openstack.org/infra/system-config/translate.html ."},{"line_number":218,"context_line":"  - for projects on how to enable translations, we should add a new"},{"line_number":219,"context_line":"    section to the Creator\u0027s Guide of the `Infra Manual"},{"line_number":220,"context_line":"    \u003chttp://docs.openstack.org/infra/manual/creators.html\u003e`__."},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"* Review cookiecutter projects and see whether those need to be"},{"line_number":223,"context_line":"  updated for these changes."}],"source_content_type":"text/x-rst","patch_set":14,"id":"da6ed579_f6012907","line":220,"updated":"2016-01-14 02:55:16.000000000","message":"For Horizon plugins, I can add a description in Horizon devref and link it from the infra manual.","commit_id":"b869926dc602bb58d98d02cee96cb9816069df7d"},{"author":{"_account_id":9981,"name":"Doug Fish","email":"drfish@us.ibm.com","username":"doug-fish"},"change_message_id":"e8d3a9c882bacc169cabfd6d1f6a2727e2f30d64","unresolved":false,"context_lines":[{"line_number":59,"context_line":"#. There\u0027s also discussion going on to add to the various networking plug-in"},{"line_number":60,"context_line":"   repositories also dashboard content so that they contain both"},{"line_number":61,"context_line":"   python and Django directories. The vitrage-dashboard repository is"},{"line_number":62,"context_line":"   an existing one that is set up this way but not yet translated. We"},{"line_number":63,"context_line":"   should define how to translate these."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"Proposed Change"}],"source_content_type":"text/x-rst","patch_set":15,"id":"ba63e191_df579f00","line":62,"updated":"2016-01-19 21:20:12.000000000","message":"What about configuring 3 files for this case - a babel.cfg for service strings, a babel-django.cfg for django python based strings, and a babel-djangojs.cfg for javascript strings? What other options are being discussed?\n\nI\u0027m thinking that each of the babel*.cfg files could be checked for regardless of the name ending in -ui or -dashboard. That is for each babel*.cfg file if it exists, use it\u0027s processing rules on it, if it doesn\u0027t exist, just skip -- this way the vitrage-dashboard approach doesn\u0027t require custom handling - and every other project can be made a subset of this.","commit_id":"6003db8190bf41918951206c9ef724fd54a965ae"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"7f8c32a0fea6f77e13895b93b74862d4cbc9a77f","unresolved":false,"context_lines":[{"line_number":59,"context_line":"#. There\u0027s also discussion going on to add to the various networking plug-in"},{"line_number":60,"context_line":"   repositories also dashboard content so that they contain both"},{"line_number":61,"context_line":"   python and Django directories. The vitrage-dashboard repository is"},{"line_number":62,"context_line":"   an existing one that is set up this way but not yet translated. We"},{"line_number":63,"context_line":"   should define how to translate these."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"Proposed Change"}],"source_content_type":"text/x-rst","patch_set":15,"id":"9a68dd71_f9ee288a","line":62,"in_reply_to":"9a68dd71_041207b5","updated":"2016-01-21 19:51:22.000000000","message":"Let\u0027s start implementing and then see how we can do this - and then update the spec to reflect it.\n\nI\u0027m not sure we can use packages for all repos but if we can, it would be great!","commit_id":"6003db8190bf41918951206c9ef724fd54a965ae"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"f42859ffa1fd089c005919361d3a88e06fbfc7b3","unresolved":false,"context_lines":[{"line_number":59,"context_line":"#. There\u0027s also discussion going on to add to the various networking plug-in"},{"line_number":60,"context_line":"   repositories also dashboard content so that they contain both"},{"line_number":61,"context_line":"   python and Django directories. The vitrage-dashboard repository is"},{"line_number":62,"context_line":"   an existing one that is set up this way but not yet translated. We"},{"line_number":63,"context_line":"   should define how to translate these."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"Proposed Change"}],"source_content_type":"text/x-rst","patch_set":15,"id":"9a68dd71_041207b5","line":62,"in_reply_to":"ba63e191_df579f00","updated":"2016-01-20 15:16:24.000000000","message":"Thanks for suggestions, Doug. It is a nice idea.\nIt is a good alternative to L.149.\n\nL.164 and vitrage-dashboard case is more complicated.\n\nWe actually have two problems.\n- (a) we need to know which types of processing are required.\n- (b) we need to determine where we should place POT/PO files with what name.\n\nIn case of a repository with a single python module, your approach works.\n\nOne exception is a case where there is one python module and both babel.cfg and babel-django*.cfg exist. In this case, there is no way to determine what files are related to normal python code and what files are related to Django python code.\n\nMy suggestion for the above exception is to use multiple python modules in a single repository. For example,\n\n  [files]\n  packages \u003d \n     xxxx\n     xxxx-dashboard","commit_id":"6003db8190bf41918951206c9ef724fd54a965ae"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b9d988e4dac73e7b769d808a16e6c1588312efb3","unresolved":false,"context_lines":[{"line_number":81,"context_line":"   an exact modulename - but this should be a rare exception."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"#. Instead of using ``$repo/locale/$repo.pot``, the CI scripts will use"},{"line_number":84,"context_line":"   ``$modulename/locale/$modulename.pot`` as location for POT files of"},{"line_number":85,"context_line":"   python projects."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"#. Repositories using the django framework use two domains, one called"}],"source_content_type":"text/x-rst","patch_set":15,"id":"9a68dd71_91c4d340","line":84,"range":{"start_line":84,"start_character":3,"end_line":84,"end_character":41},"updated":"2016-01-21 03:43:15.000000000","message":"If we use $modulename/locale/$repo.pot as POT filename,\nwe can avoid:\n\n- Resource renamng in Zanata\n- Domain renaming in $modulename/_i18n.py\n\nIn addition, there is no need to change setup.cfg at the same time\nbecause we specify --output-file to python setup.py extract_messages.\n\nThis means we can move the effort forward without proposing a change to each repository (except babel*.cfg setup).\nDuring testing script change, I start to think it makes the effort much simpler.\n\nThought?","commit_id":"6003db8190bf41918951206c9ef724fd54a965ae"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"7f8c32a0fea6f77e13895b93b74862d4cbc9a77f","unresolved":false,"context_lines":[{"line_number":81,"context_line":"   an exact modulename - but this should be a rare exception."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"#. Instead of using ``$repo/locale/$repo.pot``, the CI scripts will use"},{"line_number":84,"context_line":"   ``$modulename/locale/$modulename.pot`` as location for POT files of"},{"line_number":85,"context_line":"   python projects."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"#. Repositories using the django framework use two domains, one called"}],"source_content_type":"text/x-rst","patch_set":15,"id":"9a68dd71_d93ec4d9","line":84,"range":{"start_line":84,"start_character":3,"end_line":84,"end_character":41},"in_reply_to":"9a68dd71_91c4d340","updated":"2016-01-21 19:51:22.000000000","message":"I proposed $modulename/locale/$modulename to reduce confusion, I thought it\u0027s easier to remember and setup. What do you think about that?\n\nI like the implications of your idea, I suggest we evaluate this a bit more and then update the spec on what we decided.","commit_id":"6003db8190bf41918951206c9ef724fd54a965ae"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b9d988e4dac73e7b769d808a16e6c1588312efb3","unresolved":false,"context_lines":[{"line_number":215,"context_line":"----------"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"* Freeze adding of new translation setup for repositories until the"},{"line_number":218,"context_line":"  spec is finished."},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"* Update the Infra scripts. Implement the new setup for one or two"},{"line_number":221,"context_line":"  repositories and test everything, then add further repositories. As"}],"source_content_type":"text/x-rst","patch_set":15,"id":"9a68dd71_9177f301","line":218,"updated":"2016-01-21 03:43:15.000000000","message":"As I commented above, If we use $modulename/locale/$repo.pot as POT filename, we no longer need to freeze translation setup (except a few exception like django_openstack_auth resource renaming).\n\nDuring migration period, an existing repo like python-novaclient has two locale directory (novaclient/locale and python-novaclient/locale) but we can clean up the old locale dir any time we want. There is no need to sync the change with the infra script change.","commit_id":"6003db8190bf41918951206c9ef724fd54a965ae"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"7f8c32a0fea6f77e13895b93b74862d4cbc9a77f","unresolved":false,"context_lines":[{"line_number":215,"context_line":"----------"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"* Freeze adding of new translation setup for repositories until the"},{"line_number":218,"context_line":"  spec is finished."},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"* Update the Infra scripts. Implement the new setup for one or two"},{"line_number":221,"context_line":"  repositories and test everything, then add further repositories. As"}],"source_content_type":"text/x-rst","patch_set":15,"id":"9a68dd71_b420b79c","line":218,"in_reply_to":"9a68dd71_9177f301","updated":"2016-01-21 19:51:22.000000000","message":"Yes, that would be a great side effect.\n\nBut this needs some testing as well, not sure what the zanata push script does with two locale directories using the same name.","commit_id":"6003db8190bf41918951206c9ef724fd54a965ae"}]}
