#, fuzzy msgid "" msgstr "" "Project-Id-Version: I18n Contributor Guide\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-10-01 18:45+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../../source/about.rst:3 msgid "About this guide" msgstr "" #: ../../source/about.rst:5 msgid "" "This page describes the conventions and tips on writing this guide itself." msgstr "" #: ../../source/about.rst:8 msgid "Convention" msgstr "" #: ../../source/about.rst:10 msgid "" "The guide is written in reStructuredText (RST) markup syntax with Sphinx " "extensions. Most conventions follow `those of the openstack-manuals project " "`__." msgstr "" #: ../../source/about.rst:15 msgid "The followings are useful links when writing documents in RST." msgstr "" #: ../../source/about.rst:17 msgid "" "`Sphinx documentation `__" msgstr "" #: ../../source/about.rst:18 msgid "" "`Quick reStructuredText `__" msgstr "" #: ../../source/about.rst:21 msgid "Titles" msgstr "" #: ../../source/about.rst:23 msgid "The convention for heading levels is as follows::" msgstr "" #: ../../source/about.rst:43 msgid "Translation" msgstr "" #: ../../source/about.rst:45 msgid "" "This guide itself is I18n-ed and you can translate it into your language. To " "translate it, visit `i18n `__ project in `Zanata `__. Document " "**doc** in **i18n** project corresponds to this guide. You can translate it " "in the same way as you do for other projects like dashboard or manuals. Once " "the translation progress becomes higher than the threshold (For more " "information on the threshold, see :ref:`translation-jobs`), the translated " "version of the guide will be published." msgstr "" #: ../../source/atc-stats.rst:3 msgid "ATC Statistics in past releases" msgstr "" #: ../../source/atc-stats.rst:9 msgid "" "You can see detail member-level statistics data on `HTML version of the page " "`_." msgstr "" #: ../../source/atc-stats.rst:13 msgid "Train cycle" msgstr "" #: ../../source/atc-stats.rst:15 msgid "No detail data." msgstr "" #: ../../source/atc-stats.rst:18 msgid "Stein cycle" msgstr "" #: ../../source/atc-stats.rst:20 msgid "Period: 2018-07-10 to 2019-01-25" msgstr "" #: ../../source/atc-stats.rst:21 msgid "Patch on governance repository: https://review.opendev.org/633398" msgstr "" #: ../../source/atc-stats.rst:22 ../../source/atc-stats.rst:37 #: ../../source/atc-stats.rst:52 ../../source/atc-stats.rst:67 msgid "" "Foundation membership was validated by calling a REST API in https://" "openstackid-resources.openstack.org" msgstr "" #: ../../source/atc-stats.rst:33 msgid "Rocky cycle" msgstr "" #: ../../source/atc-stats.rst:35 msgid "Period: 2018-01-11 to 2018-07-09" msgstr "" #: ../../source/atc-stats.rst:36 msgid "Patch on governance repository: https://review.opendev.org/586751" msgstr "" #: ../../source/atc-stats.rst:48 msgid "Queens cycle" msgstr "" #: ../../source/atc-stats.rst:50 msgid "Period: 2017-07-01 to 2018-01-10" msgstr "" #: ../../source/atc-stats.rst:51 msgid "Patch on governance repository: https://review.opendev.org/532982" msgstr "" #: ../../source/atc-stats.rst:63 msgid "Pike cycle" msgstr "" #: ../../source/atc-stats.rst:65 msgid "Period: 2017-01-06 to 2017-06-30" msgstr "" #: ../../source/atc-stats.rst:66 msgid "Patch on governance repository: https://review.opendev.org/483452" msgstr "" #: ../../source/atc-stats.rst:78 msgid "Ocata cycle" msgstr "" #: ../../source/atc-stats.rst:80 msgid "Period: 2016-08-01 to 2017-01-05" msgstr "" #: ../../source/atc-stats.rst:81 msgid "" "Patch on governance repository: https://review.opendev.org/#/c/417569/ " "(`diff `__)" msgstr "" #: ../../source/atc-stats.rst:83 msgid "Note: the period is relative short because of release cycle change" msgstr "" #: ../../source/atc-stats.rst:85 msgid "" "More information: https://releases.openstack.org/ocata/schedule.html & https:" "//ttx.re/splitting-out-design-summit.html" msgstr "" #: ../../source/atc-stats.rst:88 msgid "" "[ianychoi] Note: only \"translated\" metric was considered to follow the " "description in I18n contributor guide. After more detail investigation on " "previous ATC criteria, review metrics were also considered. Fortunately, the " "three translators (jftalta - 117 translated & 2897 reviews, myamamot - 725 " "reviews, mucahit - 1241 reviews) are also regarded ATCs from Newton cycle :) " "- I keep it as record for the next ATC list changes." msgstr "" #: ../../source/atc-stats.rst:103 msgid "Newton cycle" msgstr "" #: ../../source/atc-stats.rst:105 msgid "Period: 2016-02-01 to 2016-07-31" msgstr "" #: ../../source/atc-stats.rst:106 msgid "" "Patch on governance repository: https://review.opendev.org/#/c/351480/ " "(`diff `__)" msgstr "" #: ../../source/atc-stats.rst:117 msgid "Mitaka cycle" msgstr "" #: ../../source/atc-stats.rst:119 msgid "Period: 2015-08-01 to 2016-01-30" msgstr "" #: ../../source/atc-stats.rst:120 msgid "" "Patch on governance repository: https://review.opendev.org/#/c/281145/ " "(`diff `__)" msgstr "" #: ../../source/atc-stats.rst:122 msgid "" "This following statistics data is calculated using up-to-date " "`translation_team.yaml `__ (date: Jan 15, 2017)." msgstr "" #: ../../source/atc-stats.rst:125 msgid "" "When proposing extra ATCs at that time, some translators were not included " "in `translation_team.yaml `__ file. It seems that 1) new translators were joined and the " "statistics was calculated but the file was already created, or 2) there " "might be some lack of communication with language coordinators, since I18n " "encouraged each language coordinator to update this file." msgstr "" #: ../../source/atc-stats.rst:131 msgid "" "[ianychoi] Although one year was already passed (as of now: Jan 15, 2017), I " "really would like to say those translators also contributed translations " "with I18n team members. For acknowledgement purpose, I write their Zanata " "ID, name, and language team in here :" msgstr "" #: ../../source/atc-stats.rst:136 msgid "Zbyněk Schwarz (id: tsbook) - Czech" msgstr "" #: ../../source/atc-stats.rst:137 msgid "Rob Cresswell (id: robcresswell) - English (United Kingdom)" msgstr "" #: ../../source/atc-stats.rst:138 msgid "Heleno Jimenez de la Cruz (id: heleno_jimenez) - Spanish (Mexico)" msgstr "" #: ../../source/atc-stats.rst:139 msgid "Jori Kuusinen (id: nuyori) - Finnish (Finland)" msgstr "" #: ../../source/atc-stats.rst:140 msgid "Masaki Matsushita (id: mmasaki) - Japanese" msgstr "" #: ../../source/atc-stats.rst:141 msgid "Amandeep Singh Saini (jimidar) - Punjabi (India)" msgstr "" #: ../../source/atc-stats.rst:142 msgid "Łukasz Jernas (id: deejay1) - Polish (Poland)" msgstr "" #: ../../source/atc-stats.rst:152 msgid "Liberty cycle" msgstr "" #: ../../source/atc-stats.rst:154 msgid "Period: from 2014-11-01 to 2015-07-16" msgstr "" #: ../../source/atc-stats.rst:156 msgid "" "Patch on governance repository: https://review.opendev.org/#/c/213989/ " "(`diff `__)" msgstr "" #: ../../source/atc-stats.rst:158 msgid "" "exported the translators contribution statistics from Transifex since 2014-" "11-01 to 2015-07-16" msgstr "" #: ../../source/atc-stats.rst:160 msgid "" "ATC candidates are translators who has translated more than 200 words and " "reported their e-mail and name to language coordinators, and also signed " "ICLA." msgstr "" #: ../../source/atc-stats.rst:163 msgid "" "More information on mailing list: http://lists.openstack.org/pipermail/" "openstack-i18n/2015-July/001220.html" msgstr "" #: ../../source/atc-stats.rst:165 msgid "" "Statistics are available through: https://docs.google.com/spreadsheets/d/" "1YpDJU_uNA4I5fzFG69T6L9gpFsy5yNtA9a-lSxnqeAY/edit#gid=1366189722" msgstr "" #: ../../source/bug_report.rst:5 msgid "Reporting translation bugs" msgstr "" #: ../../source/bug_report.rst:7 msgid "This page describes how end users can report translation bugs." msgstr "" #: ../../source/bug_report.rst:9 msgid "" "Finding and reporting translation bugs is an important step towards better " "quality of translations in OpenStack." msgstr "" #: ../../source/bug_report.rst:12 msgid "" "When you are using OpenStack (including the dashboard, API or CLI) or are " "reading translated documentations, if you find something wrong, something " "you cannot understand, something you cannot agree, or something to be " "improved, please consider reporting it." msgstr "" #: ../../source/bug_report.rst:18 msgid "Where can I report a bug?" msgstr "" #: ../../source/bug_report.rst:20 msgid "" "OpenStack I18n team uses `Launchpad `_ for the bug tracking." msgstr "" #: ../../source/bug_report.rst:24 msgid "Translation bugs in all languages can be reported here." msgstr "" #: ../../source/bug_report.rst:27 msgid "How can I report a bug?" msgstr "" #: ../../source/bug_report.rst:29 msgid "" "If you visit `openstack-i18n launchpad `_, we can find **Report a bug** at the right-upper corner. Click to " "report a bug." msgstr "" #: ../../source/bug_report.rst:32 msgid "You can report a bug in your language (or English)." msgstr "" #: ../../source/bug_report.rst:34 msgid "It is highly recommended to include the following information." msgstr "" #: ../../source/bug_report.rst:36 msgid "Where you find a bug you are reporting?" msgstr "" #: ../../source/bug_report.rst:38 msgid "For documentations, URL and a detail place would be great." msgstr "" #: ../../source/bug_report.rst:39 msgid "For the dashboard, panel or form name." msgstr "" #: ../../source/bug_report.rst:41 msgid "What is wrong? What should be improved?" msgstr "" #: ../../source/bug_report.rst:42 msgid "" "**Make sure to include your English language name in a bug summary**. It is " "also suggested to write a bug summary in English. For example:" msgstr "" #: ../../source/bug_report.rst:50 msgid "(optional) Put your language name as bug tag." msgstr "" #: ../../source/bug_report.rst:53 msgid "Who can help you?" msgstr "" #: ../../source/bug_report.rst:55 msgid "Everyone in the OpenStack community is glad to help you." msgstr "" #: ../../source/bug_report.rst:57 msgid "" "`Language translation team `_:" " you can ask in your language :-)" msgstr "" #: ../../source/bug_report.rst:58 msgid "OpenStack I18n team: See :ref:`label-i18n-team-contact`" msgstr "" #: ../../source/check_translation.rst:3 msgid "How to check translations" msgstr "" #: ../../source/check_translation.rst:5 msgid "" "It is important to validate your translations by applying them in a real " "situation where they are rendered and visualized. This page describes how to " "check your translations." msgstr "" #: ../../source/check_translation.rst:11 msgid "" "``translation check`` refers to build OpenStack artifacts with translated " "strings and check how the translated strings are shown on an actual screen " "as part of the translation process." msgstr "" #: ../../source/check_translation.rst:16 msgid "Documentation" msgstr "" #: ../../source/check_translation.rst:18 msgid "" "Translated documents are available at the OpenStack Documentation site. It " "is updated daily. Most contents are linked from:" msgstr "" #: ../../source/check_translation.rst:21 msgid "" "https://docs.openstack.org/ contains released documents. Follow " "\"Languages\" in https://docs.openstack.org/." msgstr "" #: ../../source/check_translation.rst:24 msgid "" "The documents are maintained in the ``doc`` directory using " "`reStructuredText `__ and built by " "`Sphinx `__. Translated strings are stored as " "`Gettext PO file format `__ in ``locale//LC_MESSAGES`` directory." msgstr "" #: ../../source/check_translation.rst:31 msgid "Documents on openstack-manuals" msgstr "" #: ../../source/check_translation.rst:33 msgid "" "For OpenStack documentation, `openstack-manuals git repository `_ hosts essential OpenStack " "documents such as `Installation Guide `_, and `Virtual Machine Image Guide `_." msgstr "" #: ../../source/check_translation.rst:39 msgid "" "To build a translated document on this repository, you need to update the " "file ``doc-tools-check-languages.conf`` in each repository, and add an entry " "to ``BOOKS`` like ``[\"ja\"]=\"install-guide\"``." msgstr "" #: ../../source/check_translation.rst:43 msgid "" "For a document in a stable branch, such as the installation guide for " "Liberty, you need to update the file ``doc-tools-check-languages.conf`` in " "the target stable branch directly." msgstr "" #: ../../source/check_translation.rst:47 msgid "" "You can check a generated document for a specified branch on ``https://docs." "openstack.org///``. For example, the link of " "Japanese Ubuntu Installation Guide for Liberty is https://docs.openstack.org/" "liberty/ja/install-guide-ubuntu/." msgstr "" #: ../../source/check_translation.rst:52 msgid "" "To add a link to a generated document, you need to update the file ``www/" "/index.html`` in the ``master`` branch of the ``openstack-manuals`` " "repository. Note that the web pages are published from ``master`` branch, " "which contains the pages for all releases, such as Liberty. Therefore, you " "don't need to update the file ``www//index.html`` in the stable branch." "" msgstr "" #: ../../source/check_translation.rst:60 msgid "You can also check:" msgstr "" #: ../../source/check_translation.rst:62 msgid "" "`build status for publishing on Zuul `__" msgstr "" #: ../../source/check_translation.rst:63 msgid "" "`checkbuild with drafts on Zuul `__" msgstr "" #: ../../source/check_translation.rst:67 msgid "OpenStack project documentation" msgstr "" #: ../../source/check_translation.rst:69 msgid "" "Currently, we support translations for small set of OpenStack project " "documentations like Horizon, OpenStack-Ansible, and OpenStack-Helm upon " "requests and available bandwidth. Top-level directory structure on ``doc/" "source/`` follows with `Documentation Contributor Guide - Project guide " "setup `_ " "and the corresponding generated documents for ``master`` branch are " "available at ``https://docs.openstack.org//latest//" "`` URL. For project team documents in stable branch, you can check " "the documents with ``https://docs.openstack.org///" "/`` URL." msgstr "" #: ../../source/check_translation.rst:79 msgid "Here are sample document links as examples:" msgstr "" #: ../../source/check_translation.rst:81 msgid "" "`Korean OpenStack-Helm Installation Guide (no branch) `_" msgstr "" #: ../../source/check_translation.rst:82 msgid "" "`German OpenStack-Ansible User Guide for 2023.1 `_" msgstr "" #: ../../source/check_translation.rst:85 msgid "OpenStack Dashboard" msgstr "" #: ../../source/check_translation.rst:88 msgid "Running OpenStack-Ansible" msgstr "" #: ../../source/check_translation.rst:90 msgid "" "`OpenStack-Ansible (OSA) `__ provides Ansible playbooks and roles for the deployment and " "configuration of an OpenStack environment. As part of the project a feature " "named 'Translation Check Site' is developed. An OSA instance will fetch " "translation strings from `translation platform `__, compile and serve these strings in Horizon. You need a machine " "with two or four CPU cores, at least 8 GB memory and 70 GB disk to run OSA." msgstr "" #: ../../source/check_translation.rst:106 msgid "" "You can set the components of your AIO installation in ``tests/vars/" "bootstrap-aio-vars.yml``. Dependly on your environment the installation " "takes 1-2 hours. For more details on the AIO configuration, please see `OSA " "AIO documentation `_." msgstr "" #: ../../source/check_translation.rst:111 msgid "" "To fetch translated files regularly, execute this command manually or as a " "cron:" msgstr "" #: ../../source/check_translation.rst:123 msgid "Running DevStack" msgstr "" #: ../../source/check_translation.rst:125 msgid "" "Another convenient way is to check dashboard translations is to run DevStack " "in your local environment. To run DevStack, you need to prepare ``local." "conf`` file, but no worries. Several ``local.conf`` files are shared on the " "Internet and a minimum example is shown below. From our experience, you need " "a machine with two or four CPU cores, 8 GB memory and 20 GB disk to run " "DevStack comfortably. If you enable just major OpenStack projects, the " "machine requirement would be much smaller like 2~4GB memory." msgstr "" #: ../../source/check_translation.rst:143 msgid "" "Replace ``$BRANCH`` with an appropriate branch such as ``master``, ``stable/" "newton`` or ``stable/mitaka``." msgstr "" #: ../../source/check_translation.rst:146 msgid "" "The following is an example of ``local.conf`` for Newton release which runs " "core components (keystone, nova, glance, neutron, cinder), horizon, swift " "and heat. The components which the main horizon code supports are chosen." msgstr "" #: ../../source/check_translation.rst:154 msgid "Import latest translations" msgstr "" #: ../../source/check_translation.rst:156 msgid "" "Translations are being imported into a project repository daily, so in most " "cases you do not need to pull translations from Zanata manually. What you " "need is to pull the latest horizon code." msgstr "" #: ../../source/check_translation.rst:160 msgid "If you have a machine running DevStack, there are two ways." msgstr "" #: ../../source/check_translation.rst:162 msgid "" "One way is to update the horizon code only. The following shell script " "fetches the latest horizon code, compiles translation message catalogs and " "reloads the apache httpd server. Replace ``$BRANCH`` with an appropriate " "branch such as ``master``, ``stable/newton`` or ``stable/mitaka``." msgstr "" #: ../../source/check_translation.rst:171 msgid "" "The other way is to rerun DevStack. Ensure to include ``RECLONE=True`` in " "your ``local.conf`` before running ``stack.sh`` again so that DevStack " "retrieve the latest codes of horizon and other projects." msgstr "" #: ../../source/check_translation.rst:184 msgid "CLI (command line interface)" msgstr "" #: ../../source/check_translation.rst:186 #: ../../source/check_translation.rst:191 msgid "TBD" msgstr "" #: ../../source/check_translation.rst:189 msgid "Server projects" msgstr "" #: ../../source/contributing.rst:3 msgid "Contributing" msgstr "" #: ../../source/contributing.rst:5 msgid "The I18n team welcomes any kinds of contribution." msgstr "" #: ../../source/contributing.rst:7 ../../source/contributing.rst:12 msgid "Translations" msgstr "" #: ../../source/contributing.rst:8 ../../source/contributing.rst:39 msgid "Translation tools" msgstr "" #: ../../source/contributing.rst:9 ../../source/contributing.rst:30 msgid "Fixing I18n bugs" msgstr "" #: ../../source/contributing.rst:14 msgid "" "To help with translation, :doc:`become an official translator " "` and join your language team. Then go to `translation " "website `_ to start translation. You can " "find prioritized translation jobs as I18n team at the top of the page." msgstr "" #: ../../source/contributing.rst:20 msgid "" ":doc:`Your language team ` may have useful information to help " "our translation efforts including translation guidelines, priorities, " "communication tools and so on. It is worth visited. You can find your " "language team page at https://wiki.openstack.org/wiki/I18nTeam/team. If you " "have questions, you can contact your coordinators." msgstr "" #: ../../source/contributing.rst:27 msgid "To report translation errors, see :doc:`bug_report`." msgstr "" #: ../../source/contributing.rst:32 msgid "" "If you want to help fix I18n bugs of OpenStack, we can find them in the " "following places:" msgstr "" #: ../../source/contributing.rst:35 msgid "" "`openstack-i18n in Launchpad `_" msgstr "" #: ../../source/contributing.rst:36 msgid "" "`Horizon I18n bugs `_" msgstr "" #: ../../source/contributing.rst:41 msgid "" "Go to the :doc:`translation tools ` page to understand the tools and " "scripts which support our translation platform." msgstr "" #: ../../source/contributing.rst:45 msgid "" "If you want to help to report bugs, add more wishlists, and improve them, " "you can report and fix bugs at `openstack-i18n in Launchpad `_. Mark bugs with a tag \"tools\"." msgstr "" #: ../../source/glossary.rst:3 msgid "Glossary Management" msgstr "" #: ../../source/glossary.rst:5 msgid "" "Zanata provides suggestions for translation based on a glossary of your " "language. The glossary is maintained in the i18n repository." msgstr "" #: ../../source/glossary.rst:9 msgid "Glossary of your language" msgstr "" #: ../../source/glossary.rst:11 msgid "" "A glossary file of your language is found at ``glossary/locale//" "LC_MESSAGES/glossary.po`` in the i18n repository. The file is a usual PO " "file." msgstr "" #: ../../source/glossary.rst:15 msgid "" "When you want to update a glossary of your language, edit a corresponding " "glossary file using your favorite editor and propose a change to the Gerrit " "review system." msgstr "" #: ../../source/glossary.rst:19 msgid "" "Once your change is merged, the updated glossary will be uploaded to Zanata. " "Note that the upload to Zanata is a **manual** process now. Only the Zanata " "administrator (usually the I18n SIG Chair and some limited folks like core " "reviewers) can upload a glossary. If your glossary is not uploaded, contact " "the I18n team or the SIG Chair via the i18n mailing list." msgstr "" #: ../../source/glossary.rst:27 msgid "" "Discuss and review glossary changes in your language team before you propose " "changes to the Gerrit review system. Reviewers in the Gerrit review system " "cannot understand your language in most cases, so they can only check syntax " "or conventions." msgstr "" #: ../../source/glossary.rst:33 msgid "Master glossary" msgstr "" #: ../../source/glossary.rst:35 msgid "" "When you add a new entry to the glossary, it is highly recommended to add " "the entry to the master glossary ``glossary/locale/glossary.pot``. By doing " "this, all language teams can share the glossary." msgstr "" #: ../../source/glossary.rst:39 msgid "" "The master glossary is an usual POT file. You can edit it in your favorite " "editor as usual." msgstr "" #: ../../source/glossary.rst:42 msgid "" "After you edit the master glossary, ensure to reflect the change to all " "language glossary files. To do this, run the following command." msgstr "" #: ../../source/glossary.rst:49 msgid "" "Finally, propose a patch including all of the above changes to the Gerrit " "review system." msgstr "" #: ../../source/handling_bugs.rst:3 msgid "Handling translation bugs" msgstr "" #: ../../source/handling_bugs.rst:5 msgid "" "If you are a translator or a person involved in I18n effort, you may be " "interested in triaging and fixing translation bugs :)" msgstr "" #: ../../source/handling_bugs.rst:8 msgid "" "The bug triaging process are following the `general bug triaging process " "`_. If you want to help bug " "triaging tasks, join the `OpenStack I18n bug team `_ first." msgstr "" #: ../../source/handling_bugs.rst:13 msgid "" "Bugs in translated documents or dashboard are mainly classified into the " "following areas:" msgstr "" #: ../../source/handling_bugs.rst:16 msgid "translation bugs" msgstr "" #: ../../source/handling_bugs.rst:17 msgid "bugs in a source project" msgstr "" #: ../../source/handling_bugs.rst:18 msgid "bugs in tool chains" msgstr "" #: ../../source/handling_bugs.rst:21 msgid "Translation bugs" msgstr "" #: ../../source/handling_bugs.rst:23 msgid "" "If a bug reports translation errors of a certain language, it could be " "called **translation bug**. The translation bug should be fixed in the " "translation tool." msgstr "" #: ../../source/handling_bugs.rst:27 msgid "If you are a speaker of this language, you could help" msgstr "" #: ../../source/handling_bugs.rst:29 msgid "tag the bug with a language name" msgstr "" #: ../../source/handling_bugs.rst:30 msgid "confirm the bug or mark it as incomplete" msgstr "" #: ../../source/handling_bugs.rst:31 ../../source/handling_bugs.rst:80 msgid "prioritize the bug" msgstr "" #: ../../source/handling_bugs.rst:33 msgid "If you are a translator of this language, you could help" msgstr "" #: ../../source/handling_bugs.rst:35 msgid "" "assign the bug to you or a member of your language team, and then mark it as " "\"In Progress\"" msgstr "" #: ../../source/handling_bugs.rst:37 msgid "" "fix it by visiting a corresponding resource in Zanata and correcting " "translations." msgstr "" #: ../../source/handling_bugs.rst:42 msgid "" "As a translator, if reported bugs turns out beyond a translation bug, it is " "better to ask I18n team members via the mailing list or the IRC channel. " "They can handle such bugs." msgstr "" #: ../../source/handling_bugs.rst:47 msgid "Bugs in a source project" msgstr "" #: ../../source/handling_bugs.rst:49 msgid "" "The translatable strings are extracted from a source project. So some i18n " "bugs might be caused by bugs in the original strings/source codes of a " "source project which contains these translatable strings. Those kind of bugs " "should be fixed in the source project." msgstr "" #: ../../source/handling_bugs.rst:54 msgid "In most cases, a source project would be one of:" msgstr "" #: ../../source/handling_bugs.rst:56 msgid "`OpenStack manuals `_" msgstr "" #: ../../source/handling_bugs.rst:57 msgid "`Horizon (OpenStack dashboard) `_" msgstr "" #: ../../source/handling_bugs.rst:59 msgid "" "You must determine whether bugs are **translation bugs** or **bugs in a " "source project**. Typical i18n bugs in the source project include:" msgstr "" #: ../../source/handling_bugs.rst:62 msgid "Original string or message is not correct." msgstr "" #: ../../source/handling_bugs.rst:63 msgid "" "Missed translations. Missed translations might be caused by not extracting " "English strings from the source project, or be caused by real missed " "translations. If the translations are missed in two different languages, " "they are probably bugs in the source project. Or else, they are real missed " "translations." msgstr "" #: ../../source/handling_bugs.rst:68 msgid "" "Bugs to report English strings are hard to translate in your language. For " "example, translators cannot control the order of words, or a plural form is " "not supported. Usually, this kind of bugs are in the original strings and " "cannot be fixed just by changing the strings and more work is needed." msgstr "" #: ../../source/handling_bugs.rst:74 msgid "" "If a reported bug turns out to be bugs in a source project, You could help" msgstr "" #: ../../source/handling_bugs.rst:77 msgid "tag it with the project name, for example \"horizon\" or \"docs\"." msgstr "" #: ../../source/handling_bugs.rst:78 msgid "add the source project to \"Also affects project\" of this bug." msgstr "" #: ../../source/handling_bugs.rst:79 msgid "confirm the bug" msgstr "" #: ../../source/handling_bugs.rst:83 msgid "Bugs in tool chains" msgstr "" #: ../../source/handling_bugs.rst:85 msgid "" "If you encounter more complicated things including translation tool chains " "or something others, the most recommended way is to ask it in the I18n " "mailing list ``openstack-i18n@lists.openstack.org``. Of course, you can file " "a bug against a related project directly." msgstr "" #: ../../source/i18n_team_meeting.rst:3 msgid "I18n team meeting" msgstr "" #: ../../source/i18n_team_meeting.rst:5 msgid "" "The I18n team holds weekly Team Meetings on Wednesdays at alternating weekly " "basis in #openstack-i18n IRC channel. To download ICS file, please visit " "`OpenDev - IRC channels and meetings `_ page." msgstr "" #: ../../source/i18n_team_meeting.rst:10 msgid "" "One week: `13:30 UTC, Wednesday `_" msgstr "" #: ../../source/i18n_team_meeting.rst:11 msgid "" "The other week: `23:15 UTC, Wednesday `_" msgstr "" #: ../../source/i18n_team_meeting.rst:15 msgid "" "Odd and even values are calculated based on `ISO week numbers `_." msgstr "" #: ../../source/i18n_team_meeting.rst:18 msgid "Meeting agenda" msgstr "" #: ../../source/i18n_team_meeting.rst:20 msgid "" "Everybody can propose agenda topics on `I18nTeamMeeting Wiki Page `_. " "If there are no topics proposed, the meeting might be canceled for that week." "" msgstr "" #: ../../source/i18n_team_meeting.rst:23 msgid "Usual topics" msgstr "" #: ../../source/i18n_team_meeting.rst:25 msgid "Review of action items from the previous meeting" msgstr "" #: ../../source/i18n_team_meeting.rst:26 msgid "Translation activities with plans from language teams" msgstr "" #: ../../source/i18n_team_meeting.rst:27 msgid "Launchpad bugs, Gerrit reviews, and broken Zuul jobs" msgstr "" #: ../../source/i18n_team_meeting.rst:28 msgid "Open discussion" msgstr "" #: ../../source/i18n_team_meeting.rst:30 msgid "Handy links (always sort of on the agenda)" msgstr "" #: ../../source/i18n_team_meeting.rst:32 msgid "`Translation plan `_" msgstr "" #: ../../source/i18n_team_meeting.rst:33 msgid "" "`Translation statistics `_" msgstr "" #: ../../source/i18n_team_meeting.rst:34 msgid "`Bug lists `_" msgstr "" #: ../../source/i18n_team_meeting.rst:35 msgid "" "`Open reviews in openstack/i18n `_" msgstr "" #: ../../source/i18n_team_meeting.rst:36 msgid "" "`Broken Translation Jobs on Zuul `_" msgstr "" #: ../../source/i18n_team_meeting.rst:39 msgid "Previous meetings" msgstr "" #: ../../source/i18n_team_meeting.rst:41 msgid "" "You can refer to `previous meeting logs with their notes `_." msgstr "" #: ../../source/i18n_team_meeting.rst:45 msgid "IRC web client" msgstr "" #: ../../source/i18n_team_meeting.rst:47 msgid "" "If you are not familiar with IRC, please read `Contributor Guide `_. You can " "simply use the web client for OFTC to come to `#openstack-i18n channel " "`_." msgstr "" #: ../../source/i18n_team_meeting.rst:52 msgid "IRC meeting commands" msgstr "" #: ../../source/i18n_team_meeting.rst:54 msgid "This is a useful commands for the IRC meeting." msgstr "" #: ../../source/index.rst:3 msgid "OpenStack I18n Guide" msgstr "" #: ../../source/index.rst:9 msgid "" "Internationalization (I18n) is essential to make OpenStack ubiquitous. The " "mission of OpenStack I18n team is to make OpenStack ubiquitously accessible " "to people of all language backgrounds, by enhancing OpenStack software " "internationalization, providing translation, maintaining a translation " "platform and managing translation process for better quality of outcomes." msgstr "" #: ../../source/index.rst:16 msgid "" "This guide provides detailed instructions on the I18n contribution workflow " "and conventions to be considered by all contributors." msgstr "" #: ../../source/index.rst:20 msgid "Contents" msgstr "" #: ../../source/index.rst:47 msgid "Getting in touch" msgstr "" #: ../../source/index.rst:50 msgid "Language translation team" msgstr "" #: ../../source/index.rst:52 msgid "" "Each language team has useful information to help our translation efforts. " "It is worth visited. You can find your language team at https://wiki." "openstack.org/wiki/I18nTeam/team." msgstr "" #: ../../source/index.rst:60 msgid "OpenStack I18n team" msgstr "" #: ../../source/index.rst:62 msgid "" "Mailing List: `openstack-i18n@lists.openstack.org `_" msgstr "" #: ../../source/index.rst:64 msgid "IRC channel: ``#openstack-i18n`` on OFTC" msgstr "" #: ../../source/index.rst:69 msgid "Search in this guide" msgstr "" #: ../../source/index.rst:71 msgid ":ref:`search`" msgstr "" #: ../../source/index.rst:-1 msgid "OpenStack i18n mascot" msgstr "" #: ../../source/infra-debug.rst:3 msgid "Debugging job scripts" msgstr "" #: ../../source/infra-debug.rst:5 msgid "" "While it would be rare, you may would like to debug the translation job " "scripts. This section describes tips for such cases. " "``propose_translation_update.sh`` is mainly covered." msgstr "" #: ../../source/infra-debug.rst:11 msgid "" "It is not a complete document for debugging. It was just written as a note. " "Feel free to add more topics." msgstr "" #: ../../source/infra-debug.rst:15 msgid "Environment" msgstr "" #: ../../source/infra-debug.rst:17 msgid "" "It is better to use the same environment (e.g., Linux distribution version) " "used in the translation job. To find the information, check ``nodeset`` of " "the ``propose-translation-update`` job definition in `zuul configuration " "`__ in openstack/project-config repository. As of Feb 2021, ``ubuntu-" "bionic`` is used." msgstr "" #: ../../source/infra-debug.rst:25 msgid "Preparations" msgstr "" #: ../../source/infra-debug.rst:27 msgid "" "You can prepare dependencies by following `prepare-zanata-client role `__." msgstr "" #: ../../source/infra-debug.rst:30 msgid "What you need are:" msgstr "" #: ../../source/infra-debug.rst:32 msgid "" "Installing Zanata CLI and its dependencies. Ensure ``zanata-cli`` command is " "found in your path." msgstr "" #: ../../source/infra-debug.rst:34 msgid "" "Prepare ``~/.config/zanata.ini``. See :ref:`Zanata CLI ` for " "more detail." msgstr "" #: ../../source/infra-debug.rst:36 msgid "" "Copy the translation scripts to your working directory from `openstack-zuul-" "jobs/roles/prepare-zanata-client/files `__. " "In addition, you need to copy ``common.sh`` from `project-config/roles/copy-" "proposal-common-scripts/files `__ to the same " "working directory." msgstr "" #: ../../source/infra-debug.rst:43 msgid "Commenting out CI-specific codes" msgstr "" #: ../../source/infra-debug.rst:45 msgid "" "The job scripts contain codes specific to OpenStack CI. For example, there " "is a code to communicate with OpenStack gerrit and the account is hardcoded. " "It looks convenient to comment out such code blocks to debug the scripts in " "a local env. It should be useful unless you are debuging a CI-specific issue." "" msgstr "" #: ../../source/infra-debug.rst:52 msgid "Code blocks which look better to be commented out are:" msgstr "" #: ../../source/infra-debug.rst:54 msgid "common_translation_update.sh" msgstr "" #: ../../source/infra-debug.rst:56 msgid "" "``trap \"finish\" EXIT`` (It depends on testrepository and usually fails in " "local envs)" msgstr "" #: ../../source/infra-debug.rst:59 msgid "propose_translation_update.sh" msgstr "" #: ../../source/infra-debug.rst:61 msgid "" "``setup_review`` and a logic to check an existing change (It is unnecessary " "as we do not propose a real change to gerrit. The account used is hardcoded " "and it always fails in local runs.)" msgstr "" #: ../../source/infra-debug.rst:64 msgid "" "``send_patch`` (It is unnecessary as we do not want to propose a real change " "to gerrit.)" msgstr "" #: ../../source/infra-debug.rst:66 msgid "" "(optional) The main logic (from ``case \"$PROJECT\" in`` to " "``filter_commits``) (we will debug the main logic, so perhaps we would like " "to run the script piece by piece.)" msgstr "" #: ../../source/infra-debug.rst:71 msgid "The diff would be like http://paste.openstack.org/show/802260/." msgstr "" #: ../../source/infra-debug.rst:74 msgid "Copying upper-constraints.txt" msgstr "" #: ../../source/infra-debug.rst:76 msgid "" "The job scripts assume that upper-constraints.txt exists in the top " "directory of the target project repository." msgstr "" #: ../../source/infra-debug.rst:84 msgid "" "Note that you need to adjust the URL of the upper-constraints file when you " "work on a stable branch." msgstr "" #: ../../source/infra-debug.rst:88 msgid "Creating ~/.venv virtualenv" msgstr "" #: ../../source/infra-debug.rst:90 msgid "" "The job scripts assume that required python modules are installed in ``~/." "venv`` virtualenv. In the zuul job, this virtualenv is prepared via ``ensure-" "sphinx`` and ``ensure-babel`` roles in zuul/zuul-jobs. You need to do the " "same." msgstr "" #: ../../source/infra-debug.rst:95 msgid "" "Note that doc/requirements.txt in most projects are almost samer so perhaps " "you can reuse this virtualenv for most projects. If it does not work, " "consider recreating the virtualenv." msgstr "" #: ../../source/infra-debug.rst:112 msgid "Loading scripts" msgstr "" #: ../../source/infra-debug.rst:124 msgid "Simulating translation changes" msgstr "" #: ../../source/infra-debug.rst:126 msgid "" "If you would like to simulate translation changes, you can download " "translations in advance (using zanata-cli) and modify them as you want. In " "such case, you can modify the script as follows:" msgstr "" #: ../../source/infra-debug.rst:145 msgid "" "You can download translations as below. ``zanata.xml`` will be created once " "you run the propose_translation_update.sh (or you can prepare it by " "following :ref:`zanata-cli` \"Project configuration\")." msgstr "" #: ../../source/infra.rst:3 msgid "Translation infrastructure" msgstr "" #: ../../source/infra.rst:5 msgid "" "A series of tasks in OpenStack infrastructure is used to manage translation " "changes in Zanata. Without running the tasks, translation changes will not " "be reflected into OpenStack projects. This page explains how the " "infrastructure tasks run actual scripts as `Zuul `_ jobs and monitor the job status." msgstr "" #: ../../source/infra.rst:14 msgid "Translation jobs" msgstr "" #: ../../source/infra.rst:16 msgid "" "We have two types of Zuul jobs for translations: syncing source strings into " "Zanata with the latest repositories and pushing translations from Zanata " "into the repositories. The first job is for Zanata-side updates. Up-to-date " "source strings to be translated are compared and updated between OpenStack " "project repositories and Zanata. If source texts in OpenStack project " "repositories are changed, then change sets are pushed into Zanata so " "translators deal with up-to-date source strings. On the other hand, the " "second job is aimed to reflect changes in translated strings in Zanata " "(after translators do translation activities) into corresponding OpenStack " "project repositories. The job will propose changes as :doc:`Translation " "Import ` Gerrit patches." msgstr "" #: ../../source/infra.rst:29 msgid "" "Update jobs for Zanata start after patches are merged on OpenStack project " "repositories, and Zuul starts to run tasks everyday at **6:00 UTC** for the " "updates on OpenStack project repositories." msgstr "" #: ../../source/infra.rst:33 msgid "" "Note that not all translation changes are the target for translation jobs. " "The goal is to have consistent translated programs, UIs, and documentation. " "There is not much sense if only a few lines are translated. The team has " "decided that files that have at least 75 percent of messages translated will " "be in the git repositories." msgstr "" #: ../../source/infra.rst:39 msgid "" "To not have too much churn and last minute string fixes lead to files get " "removed, there is also a lower threshold for releases of **66 percent** of " "messages translated as policy - which is only manually enforced." msgstr "" #: ../../source/infra.rst:44 msgid "" "The OpenStack infra scripts executed by tasks currently download new files " "that are at least **75 percent** translated and if files grow over time but " "do not get new translations (or strings change too much), they will be " "removed again automatically from the project with a lower threshold of " "currently **40 percent**." msgstr "" #: ../../source/infra.rst:53 msgid "Monitoring translation jobs status" msgstr "" #: ../../source/infra.rst:55 msgid "" "The `Zuul Builds Page `__ " "provides us a convenient way to check the translation job status." msgstr "" #: ../../source/infra.rst:58 msgid "" "`Post jobs - Syncing to Zanata `__" msgstr "" #: ../../source/infra.rst:59 msgid "" "`Periodic jobs: Syncing into repos `__" msgstr "" #: ../../source/infra.rst:64 msgid "Translation infrastructure tasks and scripts" msgstr "" #: ../../source/infra.rst:66 msgid "" "Translation infrastructure tasks are stored and managed in `openstack/" "project-config `__ repository." " The translation infrastructure scripts are stored and managed in `openstack/" "openstack-zuul-jobs `__ " "repository." msgstr "" #: ../../source/infra.rst:71 msgid "" "`upstream-translation-update.yaml `__" msgstr "" #: ../../source/infra.rst:73 msgid "" "Implements the first Zuul job (Syncing to Zanata) by executing " "`upstream_translation_update.sh `__" msgstr "" #: ../../source/infra.rst:76 msgid "" "`propose-translation-update.yaml `__" msgstr "" #: ../../source/infra.rst:78 msgid "" "Carries out the second Zuul job (Syncing into repos) by executing " "`propose_translation_update.sh `__" msgstr "" #: ../../source/infra.rst:80 msgid "" "This job renames Chinese locales in Zanata (``zh-cn`` and ``zh-tw``) to ``zh-" "hans`` and ``zh-hant`` for horizon related projects. For other projects and " "documentations (including docs in horizon related projects), ``zh-cn`` and " "``zh-tw`` are used as-is. For more details, see :ref:" "`handling_horizon_projects`." msgstr "" #: ../../source/infra.rst:86 msgid "" "`common_translation_update.sh `__" msgstr "" #: ../../source/infra.rst:88 msgid "" "Common code used by **propose_translation_update.sh** and " "**upstream_translation_update.sh**" msgstr "" #: ../../source/infra.rst:91 msgid "" "`create-zanata-xml.py `__" msgstr "" #: ../../source/infra.rst:93 msgid "Python script to setup projects for Zanata" msgstr "" #: ../../source/infra.rst:95 msgid "" "`releasenotes/pre.yaml `__" msgstr "" #: ../../source/infra.rst:96 msgid "" "`releasenotes/run.yaml `__" msgstr "" #: ../../source/infra.rst:98 msgid "" "Builds release notes in both the original (English) version and translated " "versions (if any)." msgstr "" #: ../../source/infra.rst:101 msgid "" "Note that the scripts in the tasks use `zanata-cli `__ to pull and push translation content." msgstr "" #: ../../source/infra.rst:107 msgid "See :doc:`infra-debug`." msgstr "" #: ../../source/lang_team.rst:3 msgid "Language Team" msgstr "" #: ../../source/lang_team.rst:5 msgid "" "OpenStack I18n team is a team to coordinate all language translations and " "cooperation with the I18n team and the development teams. I18n team usually " "has a working plan." msgstr "" #: ../../source/lang_team.rst:9 msgid "" "Although each language team could follow the I18n team working plan, your " "team may also decide your own work items and priorities as a language team." msgstr "" #: ../../source/lang_team.rst:13 msgid "" "Each language team may have useful information to help our translation " "efforts including translation guidelines, priorities, communication tools " "and so on. It is worth visited. You can find your language team page at " "https://wiki.openstack.org/wiki/I18nTeam/team. If you have questions, you " "can contact your coordinators." msgstr "" #: ../../source/lang_team.rst:20 msgid "" "If you cannot find your local team, you can request to :ref:`create a local " "translation team `." msgstr "" #: ../../source/lang_team.rst:24 msgid "Roles in a Language Team" msgstr "" #: ../../source/lang_team.rst:26 msgid "There are three different roles in a translation team:" msgstr "" #: ../../source/lang_team.rst:29 msgid "A person who can submit translations." msgstr "" #: ../../source/lang_team.rst:29 msgid "Member (translator)" msgstr "" #: ../../source/lang_team.rst:32 msgid "" "A person who can proofread translations and mark them as reviewed (approved) " "or rejected." msgstr "" #: ../../source/lang_team.rst:33 msgid "Reviewer" msgstr "" #: ../../source/lang_team.rst:36 msgid "" "A privileged member in a translation team who can help in team management " "tasks, such as approving new members and reviewing contributions to that " "language. We also have task coordinators for specific tasks." msgstr "" #: ../../source/lang_team.rst:39 msgid "Coordinator" msgstr "" #: ../../source/lang_team.rst:42 msgid "Managing a Language Team" msgstr "" #: ../../source/lang_team.rst:44 msgid "" "This section tries to share best practices on how team coordinators manages " "their language team. Feel free to add useful information!" msgstr "" #: ../../source/lang_team.rst:47 msgid "" "When a new member request is received, a coordinator approves (or rarely " "rejects) the request. At the moment, Zanata provides no way to communicate " "with language team members, so it is better to inform the new member of ways " "usually used in the language team." msgstr "" #: ../../source/lang_team.rst:51 msgid "" "When a translation period towards a new OpenStack release approaches, it is " "recommended to coordinate and prioritize translation efforts." msgstr "" #: ../../source/lang_team.rst:53 msgid "" "Setting up a communication channel among team members is recommended. It " "encourage team communications to discuss various translation related topics." msgstr "" #: ../../source/lang_team.rst:56 msgid "" "It is a good idea to organize glossaries and initiate related discussion." msgstr "" #: ../../source/lang_team.rst:57 msgid "..." msgstr "" #: ../../source/lang_team.rst:59 msgid "" "Of course there is no need that team coordinators do all items. You can " "collaborate your team members and share ideas." msgstr "" #: ../../source/lang_team.rst:65 msgid "Creating a Language Team" msgstr "" #: ../../source/lang_team.rst:67 msgid "" "If you want to create a language team and you want to be a coordinator, " "please follow below steps:" msgstr "" #: ../../source/lang_team.rst:70 msgid "" "Follow :doc:`the step ` to register an ID in the " "translation website." msgstr "" #: ../../source/lang_team.rst:73 msgid "" "Write an email to \"openstack-i18n@lists.openstack.org\" to introduce " "yourself and the language team you want to create, together with your ID on " "Zanata." msgstr "" #: ../../source/lang_team.rst:77 msgid "" "When your request is approved, add an item in \"Local Translation Teams\" in " "the wiki page, create a wiki page under page `I18nTeam `_ (for example, I18nTeam/team/zh_cn) to " "introduce your team, with the following information at least: the contact " "information, the web page, and the work items." msgstr "" #: ../../source/lang_team.rst:84 msgid "" "Then, your locale translation team is created successfully. You can enroll " "more people to join and start your translation work." msgstr "" #: ../../source/lang_team.rst:87 msgid "" "Keep in mind to work with your `local user group `_ and the `OpenStack Ambassadors `_ to raise awareness and gather members :)" msgstr "" #: ../../source/official_translator.rst:3 msgid "Official OpenStack translator" msgstr "" #: ../../source/official_translator.rst:6 msgid "Steps to become a OpenStack translator" msgstr "" #: ../../source/official_translator.rst:8 msgid "" "Translation is another kind of important contribution to OpenStack community." " If you want to become a official translator, you need to finish following " "steps:" msgstr "" #: ../../source/official_translator.rst:12 msgid "" "Before you start contribution, you'll have to `agree to the contributor " "license agreement `_. (You can preview " "the full text of the `OpenInfra Foundation Individual Contributor License " "Agreement `_ first if you want.)" msgstr "" #: ../../source/official_translator.rst:21 msgid "" "If you want to become a translator only, simply speaking, you need to `join " "The OpenInfra Foundation - Individual `_. You " "can see more details at `Contributor Guide - Account Setup `_." msgstr "" #: ../../source/official_translator.rst:26 msgid "Register a user ID in Zanata" msgstr "" #: ../../source/official_translator.rst:28 msgid "Go to `Zanata server `_" msgstr "" #: ../../source/official_translator.rst:29 msgid "Click \"Log in\" button." msgstr "" #: ../../source/official_translator.rst:30 msgid "" "If you don't have OpenInfra ID (previously, OpenStack ID), `register one " "`_." msgstr "" #: ../../source/official_translator.rst:32 msgid "" "After you log in with OpenInfra ID, you will be requested to fill in your " "profile." msgstr "" #: ../../source/official_translator.rst:37 msgid "" "You are encouraged to register with your business email, which will help " "your company to get the credit. If you don't want to, use your personal " "email will be OK too." msgstr "" #: ../../source/official_translator.rst:41 msgid "Request to join a translation team" msgstr "" #: ../../source/official_translator.rst:43 msgid "Click \"Languages\" on the top, all languages will be listed." msgstr "" #: ../../source/official_translator.rst:44 msgid "" "Click the language you want to translate, the language page will be shown." msgstr "" #: ../../source/official_translator.rst:46 msgid "Click \"...\" on the right, and select \"Request to join team\"." msgstr "" #: ../../source/official_translator.rst:47 msgid "" "Input a short introduction of yourself, including your name, as \"Additional " "information\", then click \"Send message\"." msgstr "" #: ../../source/official_translator.rst:52 msgid "" "Make sure to include a short introduction because it is the only information " "which language coordinators can use to determine your join request is valid " "or not." msgstr "" #: ../../source/official_translator.rst:56 msgid "When your request is approved, you will get an email notification." msgstr "" #: ../../source/official_translator.rst:60 msgid "" "If your request is pending for long days, you can reach to your language " "coordinator through Zanata, to `I18n people `_ through `IRC `_ , or to `I18n SIG Chair `_ directly." msgstr "" #: ../../source/official_translator.rst:67 msgid "" "Now you can start your translation. You can actually become an OpenStack " "official translator by contributing translations. You can find :doc:`various " "ways of contributions `." msgstr "" #: ../../source/official_translator.rst:75 msgid "Active Contributor status in I18n project" msgstr "" #: ../../source/official_translator.rst:77 msgid "" "The I18n team is one of official OpenStack SIGs (Special Interest Groups), " "so official translators who have contributed translations to the strings in " "code (e.g., Horizon) or documentations in official `OpenStack projects " "`_ or " "`OpenStack SIGs `_ in a specific " "period are regarded as \"AC\" (Active Contributor) of the I18n SIG. AC can " "vote for OpenStack TC (Technical Committee). For more detail on AC and TC, " "see `OpenStack Technical Committee Charter `_." msgstr "" #: ../../source/official_translator.rst:88 msgid "" "AC is a renamed term from \"ATC\" (Active Technical Contributor) which are " "the same. You can see more details on `2021-06-02 'OpenStack ATC' definition " "`_. This page also uses ATC term to mention old calculation and " "statistics." msgstr "" #: ../../source/official_translator.rst:93 msgid "" "As of now, AC of official translators are treated as extra ACs as we have no " "way to collect statistics automatically now. The list of extra ACs is " "maintained by the SIG Chair and is usually updated short before the deadline " "of extra ACs nomination in each release cycle. The deadline of extra ACs " "nomination can be checked in the release schedule page at http://releases." "openstack.org/ (for example, http://releases.openstack.org/bobcat/schedule." "html)." msgstr "" #: ../../source/official_translator.rst:101 msgid "" "Translators who translate and review 300 and more words combinedly in the " "last six months until the deadline of extra ACs nomination are nominated as " "ACs, and the AC status of translators is valid for one year. Translation " "count and review count can be added up. The detail period is determined by " "the SIG Chair in each cycle. For Newton cycle, the six month period was from " "2016-02-01 to 2016-07-31, and the ATC status expired on July 2017 for the " "translators and reviewers with no additional contributions." msgstr "" #: ../../source/official_translator.rst:112 msgid "" "I18n SIG Chair updates the list using Zanata API and translator list. Detail " "statistics data is available :ref:`below `." msgstr "" #: ../../source/official_translator.rst:115 msgid "" "If you have a question, feel free to ask it to the SIG Chair or the i18n " "list." msgstr "" #: ../../source/official_translator.rst:117 msgid "" "Note that code or documentation contributors to openstack/i18n repository " "are acknowledged as AC automatically in the same way as for most OpenStack " "projects and/or SIGs." msgstr "" #: ../../source/official_translator.rst:124 msgid "AC members of I18n project" msgstr "" #: ../../source/official_translator.rst:126 msgid "" "A current list all ACs is available at ``i18n`` part in https://opendev.org/" "openstack/governance/src/branch/master/reference/sigs-repos.yaml." msgstr "" #: ../../source/official_translator.rst:129 msgid "" "The statistics are calculated using `a Python script `__ powered by `Zanata " "statistics API `__ Translator list is maintained by " "`translation_team.yaml `__ stored in `openstack/i18n git repository `__." msgstr "" #: ../../source/official_translator.rst:138 msgid "ATC members of I18n project" msgstr "" #: ../../source/official_translator.rst:140 msgid "" "Before the transition to I18n SIG, I18n team was formed as one of official " "OpenStack projects and the ATC list was maintained by proposing a patch to " "`projects.yaml on governance repository `_." msgstr "" #: ../../source/official_translator.rst:147 msgid "" "On June 2021, ATC was renamed to AC. More information is available at `one " "TC resolution `_." msgstr "" #: ../../source/project_setup.rst:3 msgid "Project Repository Setup to Enable Translation Infrastructure" msgstr "" #: ../../source/project_setup.rst:5 msgid "" "This document was moved from OpenStack Project Creators Guide who want to " "enable translation infrastructure for their project. Before proceeding, " "target translation project with corresponding versions (master and stable " "branches) should be created on Zanata and I18n team will help with this." msgstr "" #: ../../source/project_setup.rst:11 msgid "" "Once you have your project repository set up, you might want to enable " "translations. For this, you first need to mark all strings so that they can " "be localized, for Python projects use `oslo.i18n`_ for this and follow the " "`guidelines`_." msgstr "" #: ../../source/project_setup.rst:19 msgid "" "Note that this is just enabling translations, the actual translations are " "done by the i18n team, and they have to prioritize which projects to " "translate." msgstr "" #: ../../source/project_setup.rst:23 msgid "" "First enable translation in your project, depending on whether it is a " "Django project, a Python project or a ReactJS project." msgstr "" #: ../../source/project_setup.rst:28 msgid "" "The infra scripts consider a project as a Django project when your " "repository name ends with ``-dashboard``, ``-ui``, ``horizon`` or " "``django_openstack_auth``. Otherwise your project will be recognized as a " "Python project. Projects using ReactJS need special treatment." msgstr "" #: ../../source/project_setup.rst:33 msgid "" "If your repository structure is more complex, for example, with multiple " "python modules, or with both Django and Python projects, see :ref:" "`translation-setup-complex-case` as well." msgstr "" #: ../../source/project_setup.rst:38 msgid "Python Projects" msgstr "" #: ../../source/project_setup.rst:40 msgid "" "For translation of strings in Python files, only a few changes are needed " "inside a project." msgstr "" #: ../../source/project_setup.rst:44 msgid "" "Previously ``setup.cfg`` needed sections ``compile_catalog``, " "``update_catalog``, and ``extract_messages`` and a ``babel.cfg`` file. These " "are not needed anymore and can be removed." msgstr "" #: ../../source/project_setup.rst:48 ../../source/project_setup.rst:68 msgid "" "Update your ``setup.cfg`` file. It should contain a ``packages`` entry in " "the ``files`` section:" msgstr "" #: ../../source/project_setup.rst:57 msgid "" "Replace ``${MODULENAME}`` with the name of your main module like ``nova`` or " "``novaclient``. Your i18n setup file, normally named ``_i18n.py``, should " "use the name of your module as domain name:" msgstr "" #: ../../source/project_setup.rst:66 msgid "Django Projects" msgstr "" #: ../../source/project_setup.rst:76 msgid "Create file ``babel-django.cfg`` with the following content:" msgstr "" #: ../../source/project_setup.rst:84 msgid "Create file ``babel-djangojs.cfg`` with the following content:" msgstr "" #: ../../source/project_setup.rst:92 msgid "ReactJS Projects" msgstr "" #: ../../source/project_setup.rst:94 msgid "" "Three new dependencies are required : ``react-intl``, ``babel-plugin-react-" "intl``, and ``react-intl-po``." msgstr "" #: ../../source/project_setup.rst:97 msgid "" "Update your ``package.json`` file. It should contain references to the " "``json2pot`` and ``po2json`` commands." msgstr "" #: ../../source/project_setup.rst:108 msgid "" "The translated PO files will converted into JSON and placed into the ``./" "i18n/locales`` directory." msgstr "" #: ../../source/project_setup.rst:111 msgid "" "You need to update the infra scripts as well to mark a repository as ReactJS " "project for translation, for details see :ref:`translation_scripts`." msgstr "" #: ../../source/project_setup.rst:116 msgid "Add Translation Server Support" msgstr "" #: ../../source/project_setup.rst:118 msgid "" "Propose a change to the ``openstack/project-config`` repository including " "the following changes:" msgstr "" #: ../../source/project_setup.rst:121 msgid "Set up the project on the translation server." msgstr "" #: ../../source/project_setup.rst:123 msgid "Edit file ``gerrit/projects.yaml`` and add the ``translate`` option:" msgstr "" #: ../../source/project_setup.rst:133 msgid "Add the jobs to your pipelines." msgstr "" #: ../../source/project_setup.rst:135 msgid "" "Edit file ``zuul.d/projects.yaml`` and add a template which defines " "translation jobs to your repository:" msgstr "" #: ../../source/project_setup.rst:145 msgid "" "The translation team is translating stable branches only for GUI projects, " "so for horizon and its plugins." msgstr "" #: ../../source/project_setup.rst:148 msgid "" "If the repository is a GUI project, use the ``translation-jobs-master-" "stable`` template. Otherwise use the ``translation-jobs-master-only`` " "template." msgstr "" #: ../../source/project_setup.rst:152 msgid "" "When submitting the change to ``openstack/project-config`` for review, use " "the ``translation_setup`` topic so it receives the appropriate attention:" msgstr "" #: ../../source/project_setup.rst:160 msgid "" "With these changes merged, the strings marked for translation are sent to " "the translation server after each merge to your project. Also, a periodic " "job is set up that checks daily whether there are translated strings and " "proposes them to your project together with translation source files. Note " "that the daily job will only propose translated files where the majority of " "the strings are translated." msgstr "" #: ../../source/project_setup.rst:168 msgid "Checking Translation Imports" msgstr "" #: ../../source/project_setup.rst:170 msgid "" "As a minimal check that the translation files that are imported are valid, " "you can add to your lint target (``pep8`` or ``linters``) a simple " "``msgfmt`` test:" msgstr "" #: ../../source/project_setup.rst:179 msgid "" "Note that the infra scripts run the same test, so adding it to your project " "is optional." msgstr "" #: ../../source/project_setup.rst:186 msgid "More complex cases" msgstr "" #: ../../source/project_setup.rst:188 msgid "The infra scripts for translation setup work as follows:" msgstr "" #: ../../source/project_setup.rst:190 msgid "" "The infra scripts recognize a project type based on its repository name. If " "the repository name ends with ``-dashboard``, ``-ui``, ``horizon`` or " "``django_openstack_auth``, it is treated as a Django project. Otherwise it " "is treated as a Python project." msgstr "" #: ../../source/project_setup.rst:194 msgid "" "If your repository declares multiple python modules in ``packages`` entry in " "``[files]`` section in ``setup.cfg``, the infra scripts run translation jobs " "for each python module." msgstr "" #: ../../source/project_setup.rst:198 msgid "" "We strongly recommend to follow the above guideline, but in some cases this " "behavior does not satisfy your project structure. For example," msgstr "" #: ../../source/project_setup.rst:201 msgid "Your repository contains both Django and Python code." msgstr "" #: ../../source/project_setup.rst:202 msgid "" "Your repository defines multiple python modules, but you just want to run " "the translation jobs for specific module(s)." msgstr "" #: ../../source/project_setup.rst:205 msgid "" "In such cases you can declare how each python module should be handled " "manually in ``setup.cfg``. Python modules declared in ``django_modules`` and " "``python_modules`` are treated as Django project and Python project " "respectively. If ``django_modules`` or ``python_modules`` entry does not " "exist, it is interpreted that there are no such modules." msgstr "" #: ../../source/project_setup.rst:217 msgid "" "You also need to setup your repository following the instruction for Python " "and/or Django project above appropriately." msgstr "" #: ../../source/project_setup.rst:221 msgid "Project Documentation Translation" msgstr "" #: ../../source/project_setup.rst:223 msgid "" "Documents on the project following with `OpenStack documentation structure " "`_ can be " "translated into multiple languages. List of project repositories for " "documentation translation is maintained in the ``DOC_TARGETS`` variable " "within `common_translation_update.sh `_ translation infrastructure script file." msgstr "" #: ../../source/release_management.rst:3 msgid "Team activities with release" msgstr "" #: ../../source/release_management.rst:5 msgid "" "This page documents what I18n team concerns and which things are needed to " "do with OpenStack releases. Each OpenStack release has around 6-month cycle " "and the corresponding schedule is available on https://releases.openstack." "org/ (e.g., https://releases.openstack.org/ocata/schedule.html describes " "Ocata release schedule)." msgstr "" #: ../../source/release_management.rst:11 msgid "" "One of main goals in I18n team is to incorporate translated strings into a " "new release so that more global users experience translated version of " "OpenStack. To accomplish this goal, some of team activities need to be " "aligned with a release schedule." msgstr "" #: ../../source/release_management.rst:18 msgid "" "I18n team sets target projects to be translated and prioritizes during " "around the `PTG `_. Current translation plan and " "priority are available on `translation dashboard `_." msgstr "" #: ../../source/release_management.rst:25 msgid "" "The terms in this page follow release schedule pages. You can see how " "OpenStack project teams product artifacts with release management on " "`Release Management `_ document." msgstr "" #: ../../source/release_management.rst:31 msgid "Projects affecting StringFreezes" msgstr "" #: ../../source/release_management.rst:33 msgid "" "Horizon and Horizon plugins are the main targets which affect StringFreezes. " "Note that StringFreezes are applied to I18n team target projects and with " "``cycle-with-rc`` or ``cycle-with-intermediary`` release model." msgstr "" #: ../../source/release_management.rst:37 msgid "[Project] Release milestone-3. ``Soft StringFreeze`` is in effect." msgstr "" #: ../../source/release_management.rst:38 msgid "[Translator] Start translations for the release." msgstr "" #: ../../source/release_management.rst:40 msgid "Translate **master** version on Zanata." msgstr "" #: ../../source/release_management.rst:42 msgid "[I18n SIG Chair] Call for translation" msgstr "" #: ../../source/release_management.rst:44 msgid "" "[I18n SIG Chair] Coordinate release and translation import schedule of " "individual projects with SIG Chair or I18n liaison." msgstr "" #: ../../source/release_management.rst:47 msgid "" "[Project] Release RC1 and create a stable branch. ``Hard StringFreeze`` is " "in effect." msgstr "" #: ../../source/release_management.rst:50 msgid "" "[Translator] It is suggested to complete translation work by Monday or " "Tuesday of the Final RC week." msgstr "" #: ../../source/release_management.rst:53 msgid "" "It is encouraged to share translation progress with I18n team and/or " "corresponding project team(s) to make sure shipping the translation." msgstr "" #: ../../source/release_management.rst:56 msgid "" "[Project] RC2 or RC3 release will be shipped with latest translations. Final " "RC release will happen one week before the official release week." msgstr "" #: ../../source/release_management.rst:59 msgid "[Project] Official release!" msgstr "" #: ../../source/release_management.rst:61 msgid "[Zanata admin] Create a stable version after release." msgstr "" #: ../../source/release_management.rst:63 msgid "" "[Infra] Setup translation jobs such as ``translation-jobs-newton`` to import " "translations for stable branches." msgstr "" #: ../../source/release_management.rst:66 msgid "This should be done after a stable version on Zanata is created." msgstr "" #: ../../source/release_management.rst:68 msgid "" "After the official release, translating master version is welcome for " "upstream translation contribution, but the original strings may be changed " "frequently due to upstream development on the projects." msgstr "" #: ../../source/release_management.rst:72 msgid "" "On the other hand, translating stable version as upstream contribution is " "not encouraged after the translated strings are packaged with releases. The " "stable version will be closed earlier than or around EOL." msgstr "" #: ../../source/release_management.rst:76 msgid "" "If there is a translation bug on a stable version in Zanata, it is highly " "recommended to fix the same translation bug on the corresponding string in " "the master version." msgstr "" #: ../../source/release_management.rst:81 msgid "Documentation projects" msgstr "" #: ../../source/release_management.rst:83 msgid "" "All upstream OpenStack documents in ``openstack-manuals`` and project " "repositories use ``master`` branch and can have stable branches depending on " "release models and maintaining documents in different project teams. Cross-" "project liaisons are strongly encouraged to communicate with I18n team so " "that I18n team can discuss and decide which stable documents are the target " "in I18n team and when translators start to translate stable documents." msgstr "" #: ../../source/release_management.rst:91 msgid "" "Translations on master version in Zanata are normally recommended for " "upstream contribution." msgstr "" #: ../../source/release_management.rst:94 msgid "" "After the documents are translated and reviewed well, updating existing " "``www//index.html`` or creating a new language landing page is needed." msgstr "" #: ../../source/release_management.rst:99 msgid "Other projects supported with translation jobs" msgstr "" #: ../../source/release_management.rst:101 msgid "" "I18n team helps release activities on other projects if the projects have " "cross-project liaison on I18n team and upon request." msgstr "" #: ../../source/reviewing-translation-import.rst:3 msgid "Reviewing translation imports" msgstr "" #: ../../source/reviewing-translation-import.rst:5 msgid "" "This document explains to reviewers details about the automatic import of " "translations from Zanata." msgstr "" #: ../../source/reviewing-translation-import.rst:8 msgid "" "If you are unfamiliar with translations in OpenStack, read the `Project Team " "Guide on Internationalization and Translation `_ first." msgstr "" #: ../../source/reviewing-translation-import.rst:14 msgid "This document gives additional information." msgstr "" #: ../../source/reviewing-translation-import.rst:18 msgid "How are translations handled?" msgstr "" #: ../../source/reviewing-translation-import.rst:20 msgid "" "Translators translate repositories using the `translation server `_ which runs the Zanata software." msgstr "" #: ../../source/reviewing-translation-import.rst:23 msgid "" "Every day, new translations get imported into the repositories using a " "proposal job. These need to have a review on whether the bot worked properly." " You can see all open reviews in `Gerrit `_. The subject of these patches " "is always \"Imported Translations from Zanata\"." msgstr "" #: ../../source/reviewing-translation-import.rst:31 msgid "Reviewing" msgstr "" #: ../../source/reviewing-translation-import.rst:33 msgid "If you are reviewing these translations, keep the following in mind:" msgstr "" #: ../../source/reviewing-translation-import.rst:35 msgid "" "The change is done by a bot. If anything looks wrong with it, you need to " "actively reach out to the :ref:`OpenStack I18n team ` " "and point the problem out." msgstr "" #: ../../source/reviewing-translation-import.rst:38 msgid "" "The goal of the review is that the structure of the change is fine, it's not " "that the strings are translated properly. The review of translated strings " "is done by teams using the translation server." msgstr "" #: ../../source/reviewing-translation-import.rst:41 msgid "" "If you notice bad translations in a language, file a bug (see :ref:" "`reporting_translation_bugs`). Then the translation team will update the " "translation. We recommend to still import this change as is and import later " "the fix to not block other valid translations to merge." msgstr "" #: ../../source/reviewing-translation-import.rst:46 msgid "" "Nobody should change translation files (the `.po` files in the `locale` " "directory) besides the bot. The next automatic import will override any " "change again. Therefore, leave a ``-1`` vote on any such changes and point " "developer to this document." msgstr "" #: ../../source/reviewing-translation-import.rst:50 msgid "" "The proposal bot also removes files, it removes files that have very few " "translations in them. Note that no translations will be lost, they are still " "in the translation server." msgstr "" #: ../../source/reviewing-translation-import.rst:54 msgid "" "Also, release notes translations are only needed on master since release " "notes are published only from master, the translations get removed on stable " "branches." msgstr "" #: ../../source/reviewing-translation-import.rst:57 msgid "" "Most teams have single approval for translation imports instead of two core " "reviewers." msgstr "" #: ../../source/sig_chair.rst:3 msgid "I18n SIG Chair Guide" msgstr "" #: ../../source/sig_chair.rst:5 msgid "" "This chapter describes tasks for I18n SIG Chair and gives some useful hints. " "If you want to be I18n SIG Chair or you new in this role, please read " "carefully. For all other is this chapter informal." msgstr "" #: ../../source/sig_chair.rst:11 msgid "" "Since I18n team previously followed as a form of official projects, some of " "the below description may assume detail tasks as PTL responsibility. See " "`Project Team Guide `_ which is a reference for PTLs for more information, and I18n team " "now follows as a form of working group defined as SIGs (Special Interest " "Groups)." msgstr "" #: ../../source/sig_chair.rst:20 msgid "Cross Project Liaisons" msgstr "" #: ../../source/sig_chair.rst:22 msgid "" "I18n team participates in various cross project liaisons like Release " "Management, Documentation and Infrastructure tasks. Many other teams are " "liaisons in I18n. Visit the `Cross Project Liaisons Wiki Page `__ and designate a person for the " "I18n team. Note that such liaison roles do not have to be I18n SIG Chair. " "Active I18n cores are highly encouraged." msgstr "" #: ../../source/sig_chair.rst:29 msgid "Project Goals And Translation Plan" msgstr "" #: ../../source/sig_chair.rst:31 msgid "" "In the beginning of each cycle it is a good idea to think about goals for " "the project in the next months and establish a translation plan. Goals are " "maybe still left from the last cycle and are to be reviewed. New goals are " "to be defined on `PTG `__ or an equivalent " "event. Orient the team to the `OpenStack-wide goals `__." msgstr "" #: ../../source/sig_chair.rst:38 msgid "" "The translation plan is announced on `Zanata `__ and contains the projects with the highest priority in translation. " "Usually these are all user-visible projects, like Horizon." msgstr "" #: ../../source/sig_chair.rst:44 msgid "I18n Core Team" msgstr "" #: ../../source/sig_chair.rst:46 msgid "" "The SIG Chair is supported in the work by the `I18n core team `__. The person designates " "such kind of project team members and reviews the list from time to time. " "The usual work of the core team is described in the `Project Team Guide " "`__. Of course, core " "team member be can also proposed by the project team." msgstr "" #: ../../source/sig_chair.rst:53 msgid "Launchpad I18n Core Team" msgstr "" #: ../../source/sig_chair.rst:55 msgid "" "As with I18n Core Team, the same things apply here. Launchpad I18n Core Team " "focuses on determining the importance of a translation and/or I18n bug and " "triaging bug priorities. You can find the member list on `Launchpad I18n " "Core Member list `__." msgstr "" #: ../../source/sig_chair.rst:61 msgid "Release Management" msgstr "" #: ../../source/sig_chair.rst:63 msgid "" "The work for SIG Chair and Zanata administrator is described in chapter :doc:" "`release_management`. This covers also questions about string freezes and " "work with stable branches." msgstr "" #: ../../source/sig_chair.rst:68 msgid "Extra-ACs Deadline" msgstr "" #: ../../source/sig_chair.rst:70 msgid "" "Each cycle has a date set for Extra-ACs, e.g. `Queens Cycle `__. Maintenance on " "I18n site is described in chapter :ref:`project-maintenance`. All the " "OpenStack members can propose extra ACs, but I18n SIG Chair is highly " "encouraged to report the list in each cycle. Here are some useful proposals " "as example:" msgstr "" #: ../../source/sig_chair.rst:77 msgid "" "`https://review.opendev.org/#/c/488226/ `__" msgstr "" #: ../../source/sig_chair.rst:78 msgid "" "`https://review.opendev.org/#/c/483452/ `__" msgstr "" #: ../../source/sig_chair.rst:79 msgid "" "`https://review.opendev.org/#/c/451625/ `__" msgstr "" #: ../../source/sig_chair.rst:81 msgid "" "This `Script in I18n repo `__ collects all users and their activities." msgstr "" #: ../../source/sig_chair.rst:85 msgid "Daily Work" msgstr "" #: ../../source/sig_chair.rst:88 msgid "Translation Job Control" msgstr "" #: ../../source/sig_chair.rst:90 msgid "" "Translated strings are automatically synced between translation server and " "Openstack infrastructure. The procedure is robust, but sometimes something " "can go wrong. For this reason there is a section :ref:`monitoring-" "translation-job-status` in the infrastructure chapter." msgstr "" #: ../../source/sig_chair.rst:95 msgid "" "You can check on `Gerrit `__, if the translated strings " "are imported by the project teams. Core reviewers in each repository are " "strong encouraged to approve translation sync patches but do not be sad if " "the translations are not accepted. Zanata Sync jobs are repeated every day " "until they are merged." msgstr "" #: ../../source/sig_chair.rst:102 msgid "Open reviews I18n repository" msgstr "" #: ../../source/sig_chair.rst:104 msgid "" "Check from time to time open reviews on `I18n repo `__. In addition to the PTL, the " "core reviewers are responsible." msgstr "" #: ../../source/sig_chair.rst:109 msgid "Launchpad bugs & blueprints" msgstr "" #: ../../source/sig_chair.rst:111 msgid "" "Translation bugs are tracked on `Launchpad `__. Often only the language teams are able to handle " "translation bugs, e.g. wrong translation words or senses. PTL fits thereon " "or designates bug triage liaison." msgstr "" #: ../../source/sig_chair.rst:116 msgid "" "I18n blueprints are listed also on `Launchpad `__. In normal case a blueprint has an assignee and " "describes a larger course of a process." msgstr "" #: ../../source/sig_chair.rst:121 msgid "I18n Mailing List Management" msgstr "" #: ../../source/sig_chair.rst:123 msgid "" "In addition to IRC, I18n team communication takes place via a mailing list. " "The `Mailing List Administrator `__ is watching new subscribers, not allowed posts, and " "all the other things that come with the operation of such a list." msgstr "" #: ../../source/tools.rst:3 msgid "Tools" msgstr "" #: ../../source/tools.rst:5 msgid "This page covers various operations around i18n activities." msgstr "" #: ../../source/tools.rst:10 msgid "Zanata CLI" msgstr "" #: ../../source/tools.rst:12 msgid "" "OpenStack uses Zanata as a translation platform. While most operations " "around the translation platform are automated, if you want to communicate " "with the translation platform manually, you can use `Zanata CLI `__." msgstr "" #: ../../source/tools.rst:18 msgid "User configuration" msgstr "" #: ../../source/tools.rst:20 msgid "" "You need to create a configuration file in ``$HOME/.config/zanata.ini`` that " "contains user-specific configuration. For information on how to create a " "configuration file, see `Zanata CLI configuration `__." msgstr "" #: ../../source/tools.rst:26 msgid "Project configuration" msgstr "" #: ../../source/tools.rst:28 msgid "" "To communicate with the translation platform, you need to prepare a project " "configuration file named ``zanata.xml`` in the top directory of a project " "you are interested in. OpenStack projects does not contain ``zanata.xml`` in " "their git repositories, so you need to create it manually." msgstr "" #: ../../source/tools.rst:34 msgid "" "The following is an example of ``zanata.xml``. In most cases, what you need " "to edit are **project** and **project-version**." msgstr "" #: ../../source/tools.rst:53 msgid "Pull translations from Zanata" msgstr "" #: ../../source/tools.rst:55 msgid "" "To download translations from Zanata, run the following command after going " "into a project directory. You are usually interested in only a few of " "languages, so ``--locales`` option would be useful. For more options, see " "the output of ``zanata pull --help``." msgstr "" #: ../../source/tools.rst:66 msgid "Handling documentation projects" msgstr "" #: ../../source/tools.rst:70 msgid "" "This is written about openstack-manuals project. As of the end of Pike " "development cycle, `the document migration community-wide effort `__ is being done. The process documented here might be changed in near " "future." msgstr "" #: ../../source/tools.rst:76 msgid "" "OpenStack documents are using RST format. The steps to translate RST " "documents include:" msgstr "" #: ../../source/tools.rst:79 msgid "Slicing: generate PO templates from RST documents" msgstr "" #: ../../source/tools.rst:80 msgid "Uploading: Upload the translation resources to Zanata" msgstr "" #: ../../source/tools.rst:81 msgid "" "Translating: manage the translation in Zanata, including the translation " "memory and glossary management" msgstr "" #: ../../source/tools.rst:83 msgid "Downloading: Download the translated results by automation scripts." msgstr "" #: ../../source/tools.rst:84 msgid "Building: Build HTML from RST documents and the translated results." msgstr "" #: ../../source/tools.rst:86 msgid "" "Sphinx is a tool to translate RST source files to various output formats, " "including POT and HTML. You need to install Sphinx before you go to below " "steps. Almost all projects have ``test-requirements.txt`` in their " "repositories and you can check the required version of Sphinx by checking " "this file." msgstr "" #: ../../source/tools.rst:95 msgid "Or, more convenient way would be:" msgstr "" #: ../../source/tools.rst:102 msgid "Slicing" msgstr "" #: ../../source/tools.rst:104 msgid "" "We use sphinx-build to translate RST files to POT files. Because we want to " "have a single POT file per document, we use msgcat to merge those POTs after " "sphinx-build." msgstr "" #: ../../source/tools.rst:114 ../../source/tools.rst:188 #: ../../source/tools.rst:251 msgid "Uploading" msgstr "" #: ../../source/tools.rst:116 msgid "" "We use :ref:`Zanata CLI ` to upload the POT file to the " "translate platform." msgstr "" #: ../../source/tools.rst:120 ../../source/tools.rst:195 #: ../../source/tools.rst:258 msgid "Downloading" msgstr "" #: ../../source/tools.rst:122 msgid "" "We use :ref:`Zanata CLI ` to download the translated PO files " "from the translation platform." msgstr "" #: ../../source/tools.rst:126 msgid "Building" msgstr "" #: ../../source/tools.rst:128 msgid "" "Before use sphinx-build to build HTML file, we need to feed the translations " "from the single PO file into those small PO files. For example:" msgstr "" #: ../../source/tools.rst:137 msgid "" "Then, for every PO file, we should execute the following command to build " "into MO file:" msgstr "" #: ../../source/tools.rst:145 msgid "Finally, we could generate HTML files by" msgstr "" #: ../../source/tools.rst:153 msgid "Handling python projects" msgstr "" #: ../../source/tools.rst:155 msgid "" "For most of the Python projects, the preferred tools for I18N are gettext " "and babel. The gettext module provides internationalization (I18N) and " "localization (L10N) services for your Python modules and applications. Babel " "are a collection of tools for internationalizing Python applications." msgstr "" #: ../../source/tools.rst:161 ../../source/tools.rst:230 msgid "Extracting" msgstr "" #: ../../source/tools.rst:163 msgid "" "You can extract the messages in code to PO template (POT) with pybabel, " "where **PROJECT** is a project name like ``nova`` and **VERSION** is a " "version number. Note that you can omit ``--project`` and ``--version`` " "options if you just use them locally as they are just used in the POT file " "header." msgstr "" #: ../../source/tools.rst:177 msgid "For example, in case of nova," msgstr "" #: ../../source/tools.rst:190 msgid "" "For each Python project in OpenStack, there is an automation job to extract " "the messages , generate PO template and upload to Zanata, which is triggered " "by the \"commit\" event. See :doc:`here `." msgstr "" #: ../../source/tools.rst:197 msgid "" "For each Python project in OpenStack, there is an automation job daily to " "download the translations in PO file to the \"locale\" folder under the " "source folder of each project. See :doc:`here `. It will generate a " "review request in Gerrit. After :doc:`review `, the translation in PO file will be merged." msgstr "" #: ../../source/tools.rst:204 ../../source/tools.rst:275 msgid "Using translations" msgstr "" #: ../../source/tools.rst:206 msgid "" "To display translated messages in python server projects, you need to " "compile message catalogs and also need to configure your server services " "following instructions described at `oslo.i18n documentation `__." msgstr "" #: ../../source/tools.rst:214 msgid "Handling horizon projects" msgstr "" #: ../../source/tools.rst:216 msgid "" "For horizon related projects, Django, a framework which horizon is built on, " "provides integrated translation support." msgstr "" #: ../../source/tools.rst:221 msgid "" "Unlike documentations and python projects, horizon and plugins use ``zh-" "hans`` and ``zh-hant`` for Chinese locales instead of ``zh-cn`` and ``zh-" "tw`` respectively since Wallaby release. This follows the Django " "recommendation which happened in `Django 1.7 `__. The details are " "found in `the mailing list post `__." msgstr "" #: ../../source/tools.rst:232 msgid "" "horizon provides a command to extract the messages in code to PO template " "(POT). Run the following command in your repository." msgstr "" #: ../../source/tools.rst:239 msgid "" "where **MODULE_NAME** is a python module name of horizon or its plugin." msgstr "" #: ../../source/tools.rst:241 msgid "For example, in case of manila-ui," msgstr "" #: ../../source/tools.rst:247 msgid "" "The above command is a wrapper for pybabel and the translation job uses " "pybabel directly." msgstr "" #: ../../source/tools.rst:253 msgid "" "For each horizon related project in OpenStack, there is an automation job to " "extract the messages , generate PO template and upload to Zanata, which is " "triggered by the \"commit\" event. See :doc:`here `." msgstr "" #: ../../source/tools.rst:260 msgid "" "For each horizon related project in OpenStack, there is an automation job " "daily to download the translations in PO file to the \"locale\" folder under " "the source folder of each project. See :doc:`here `. It will generate " "a review request in Gerrit. After :doc:`review `, the translation in PO file will be merged." msgstr "" #: ../../source/tools.rst:268 msgid "" "As noted above, in Wallaby or later releases, ``zh-hans`` and ``zh-hant`` " "are used for Chinese locales. On the other hand, ``zh-cn`` and ``zh-tw`` " "continues to be used in Zanata. When the job downloads translations from " "Zanata, the job stores translations for ``zh-cn`` and ``zh-tw`` to ``zh-" "hans`` and ``zh-hant`` directories under ``locale``." msgstr "" #: ../../source/tools.rst:277 msgid "" "To display translated messages in OpenStack dashboard, you need to compile " "message catalogs. Django picks up translated messages automatically once " "they are compiled. The following command compiles messages in your project." msgstr "" #: ../../source/tools.rst:288 msgid "Project maintenance" msgstr "" #: ../../source/tools.rst:292 msgid "" "The scripts below depend on several python modules. To install these " "dependencies, run ``pip install -e requirements.txt``." msgstr "" #: ../../source/tools.rst:295 msgid "" "More convenient way is to use **tox** like ``tox -e venv -- python ``." msgstr "" #: ../../source/tools.rst:298 msgid "" "**tox** is available on PyPI and also available in various Linux " "distribution. ``pip install tox`` or ``apt-get install python-tox`` (in case " "of Ubuntu) installs **tox**." msgstr "" #: ../../source/tools.rst:305 msgid "Sync the translator list with Zanata" msgstr "" #: ../../source/tools.rst:307 msgid "" "The I18n project maintains a list of language teams and their members. The " "list is used by Stackalytics to gather translation statistics (See :ref:" "`stats-stackalytics` for detail). It is also used by the scripts below." msgstr "" #: ../../source/tools.rst:312 msgid "The filename of the list is ``tools/translation_team.yaml``." msgstr "" #: ../../source/tools.rst:314 msgid "" "This list is a cache of information on Zanata, and we need to keep it synced " "with Zanata." msgstr "" #: ../../source/tools.rst:317 msgid "To sync the translator list, run the following command:" msgstr "" #: ../../source/tools.rst:323 msgid "The above run the following internally:" msgstr "" #: ../../source/tools.rst:330 msgid "Retrieve translation statistics" msgstr "" #: ../../source/tools.rst:332 msgid "" ":ref:`AC status in I18n project ` is determined based on " "translation statistics in a specific period." msgstr "" #: ../../source/tools.rst:335 msgid "" "The script ``tools/zanata/zanata_stats.py`` helps retrieving translation " "statistics from Zanata." msgstr "" #: ../../source/tools.rst:338 msgid "To run the script:" msgstr "" #: ../../source/tools.rst:344 msgid "``--help`` option shows the detail usage." msgstr "" #: ../../source/tools.rst:347 msgid "Extract Zanata user information" msgstr "" #: ../../source/tools.rst:349 msgid "" "At the moment, the I18n SIG Chair needs to maintain the AC list of the I18n " "project manually around the end of each release cycle. This requires name " "and e-mail address of individual translators." msgstr "" #: ../../source/tools.rst:353 msgid "" "The script ``tools/zanata/zanata_userinfo.py`` helps this. It generates a " "CSV file by reading a YAML file which contains the list of translators (e.g." ", ``translation_team.yaml``) with user name and e-mail addresses by " "interacting with Zanata API." msgstr "" #: ../../source/tools.rst:360 msgid "This script requires Zanata admin privilege." msgstr "" #: ../../source/translation_stats.rst:3 msgid "Translation Statistics" msgstr "" #: ../../source/translation_stats.rst:5 msgid "There are several ways to know your translation activity." msgstr "" #: ../../source/translation_stats.rst:10 msgid "Zanata" msgstr "" #: ../../source/translation_stats.rst:12 msgid "Zanata provides ways to know your activity on Zanata." msgstr "" #: ../../source/translation_stats.rst:14 msgid "" "`Dashboard `__ page shows your " "recent activity statistics this month and detail activity." msgstr "" #: ../../source/translation_stats.rst:16 msgid "" "`Profile `__ page provides more " "nice statistics view. It shows your statistics in this month and last month." msgstr "" #: ../../source/translation_stats.rst:20 msgid "" "Note that you need to log into Zanata to see your activity in the above " "pages." msgstr "" #: ../../source/translation_stats.rst:25 msgid "Stackalytics" msgstr "" #: ../../source/translation_stats.rst:27 msgid "" "`Stackalytics `__ is a popular web site which " "allows us to know various statistics related to OpenStack. It supports " "translation statistics :)" msgstr "" #: ../../source/translation_stats.rst:31 msgid "" "Visit `Stackalytics `__ and choose " "``Translations`` as ``Metric`` dropdown menu at the upper-right." msgstr "" #: ../../source/translation_stats.rst:35 msgid "FAQ: I cannot find my name in Stackalytics" msgstr "" #: ../../source/translation_stats.rst:37 msgid "" "There are cases where you cannot see your translation statistics in " "Stackalytics even after you translate strings in Zanata." msgstr "" #: ../../source/translation_stats.rst:40 msgid "Here is the check list for such case:" msgstr "" #: ../../source/translation_stats.rst:42 msgid "" "Is your Zanata ID included in the `translator list `__?" msgstr "" #: ../../source/translation_stats.rst:44 msgid "Is your Zanata ID different from your launchpad ID?" msgstr "" #: ../../source/translation_stats.rst:46 msgid "" "If your Zanata ID is not included in the translator list, you need to update " "the list to include your Zanata ID. Contact your language coordinator, email " "the i18n mailing list. You can also submit a patch to update the list by " "yourself (For detail, see :ref:`sync-translator-list`)." msgstr "" #: ../../source/translation_stats.rst:58 msgid "" "If your Zanata ID is different from your launchpad ID, Stackalytics will not " "find your translation statistics. You need to let Stackalytics know your ID " "mappings. To do this, you need to add your user data into ``detault_data." "json`` in `the Stackalytics repository `__." msgstr "" #: ../../source/translation_stats.rst:64 msgid "" "If you are lucky to use a same name for launchpad and Zanata IDs, you do not " "need to do the above. Stackalytics will find your statistics automatically." msgstr "" #: ../../source/translation_tips.rst:3 msgid "Translation tips" msgstr "" #: ../../source/translation_tips.rst:5 msgid "This page collects small tips and tricks around translations." msgstr "" #: ../../source/translation_tips.rst:7 msgid "If you have any, don't hesitate to share it :)" msgstr "" #: ../../source/translation_tips.rst:10 msgid "Where a string is used in source code?" msgstr "" #: ../../source/translation_tips.rst:12 msgid "" "It is important to understand how an original string is used in the source " "code with contextual knowledge for better quality of translations. " "Unfortunately Zanata translation interface does not show where a target " "string is used in a source code correspondingly." msgstr "" #: ../../source/translation_tips.rst:17 msgid "You can find the location in a source code by checking the POT file." msgstr "" #: ../../source/translation_tips.rst:19 msgid "" "The POT file is found under ``http://tarballs.openstack.org/translation-" "source////." "pot``, where:" msgstr "" #: ../../source/translation_tips.rst:23 msgid "```` is Zanata project name," msgstr "" #: ../../source/translation_tips.rst:24 msgid "" "```` is Zanata project version such as ``master`` or " "``stable-mitaka``," msgstr "" #: ../../source/translation_tips.rst:26 msgid "" "```` is a path of a document such as ``nova/locale``, " "``openstack_dashboard/locale`` or ``releasenotes/source/locale``," msgstr "" #: ../../source/translation_tips.rst:28 msgid "```` is a document name in Zanata." msgstr "" #: ../../source/translation_tips.rst:30 msgid "" "The easiest way would be to open http://tarballs.openstack.org/translation-" "source and then follow ````, ```` and " "corresponding links." msgstr "" #: ../../source/translation_tips.rst:34 msgid "" "Open a POT file you find and search a string you are interested in. Then you " "can find an entry like:" msgstr "" #: ../../source/translation_tips.rst:44 msgid "" "Once you find location(s) of a string you would like to check, you can check " "more detail context where the string is used by looking at the code in the " "git repository. Zanata project and git repository are one-to-one " "relationship. If Zanata project name is ````, the " "corresponding git repository location is ``https://opendev.org/openstack/" "/``. For example, if you are translating ``horizon``, " "the git repository is found at https://opendev.org/openstack/horizon/." msgstr "" #: ../../source/translation_tips.rst:56 msgid "" "POT files are no longer stored in git repositories. The change was made at " "the beginning of Newton development cycle [#]_." msgstr "" #: ../../source/translation_tips.rst:59 msgid "" "http://lists.openstack.org/pipermail/openstack-dev/2016-May/094215.html" msgstr "" #: ../../source/translation_tips.rst:62 msgid "Where a string is used in Dashboard UI?" msgstr "" #: ../../source/translation_tips.rst:64 msgid "" "During translating a dashboard related project, you may want to know \"where " "is this string used in the dashboard?\"." msgstr "" #: ../../source/translation_tips.rst:67 msgid "" "You can estimate where a string is used from a location in a source code. " "(See the previous entry on how to find a location.)" msgstr "" #: ../../source/translation_tips.rst:71 msgid "" "This means \"Aggregates\" menu in \"Admin\" group in the left side menu. In " "Horizon code, the second level corresponds to a dashboard group like " "\"Project\" or \"Admin\" and the third level corresponds to a panel like " "\"Aggregates\" (in this example), \"Instances\" or \"Networks\"." msgstr "" #: ../../source/translation_tips.rst:74 msgid "``dashboards/admin/aggregates/views.py:104``" msgstr "" #: ../../source/translation_tips.rst:77 msgid "" "When a filename is ``workflows.py`` or ``forms.py``, it means it is used in " "a form for creating or editing something." msgstr "" #: ../../source/translation_tips.rst:78 msgid "``dashboards/project/loadbalancers/workflows.py:44``" msgstr "" #: ../../source/translation_tips.rst:81 msgid "" "A template is a skeleton of static HTML files. In this case, the string is " "perhaps used in \"Update\" form in \"Container\" menu." msgstr "" #: ../../source/translation_tips.rst:81 msgid "``dashboards/project/containers/templates/containers/_update.html:21``" msgstr ""