diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9cafb92 --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +data/ +.*.swp +*.pyc +*.egg-info/ +.coverage +.ropeproject/ +*.mo +*.pot +tags +debianmemberportfolio/model/keyringcache.db +.idea/ diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..7cb22ef --- /dev/null +++ b/ChangeLog @@ -0,0 +1,87 @@ +2020-02-22 Jan Dittberner + * Update translations + +2018-05-12 Jan Dittberner + * add patch by Paul Wise to provide Repology information links + * Update translations + +2018-02-09 Jan Dittberner + * add patch by Paul Wise to provide Salsa links + * Update translations + +2015-11-12 Jan Dittberner + * port to Python 3 and Flask + +2015-03-09 Jan Dittberner + * apply patch for DMD link by Paul Wise + +2015-02-20 Jan Dittberner + * add Jessie requirements file + * fix language check if no Accept-Language header is sent + +2014-10-14 Jan Dittberner + * add patch by Paul Wise to use to update DUCK link to new static page + * add patch by Paul Wise to remove generated files from version + control + * add patch by Paul Wise to use https in links, comments, docstrings, + etc. + +2014-04-10 Jan Dittberner + * add patch by Paul Wise to use SSL where available + * add patch by Paul Wise to fix link to the contributors site + +2014-02-09 Jan Dittberner + * renamed module from ddportfolio to debianmemberportfolio + * add patch for DUCK URL by Paul Wise + +2014-02-08 Jan Dittberner + * moved to new server + * ported to Wheezy versions of the dependencies + * applied patches by Paul Wise and Olivier Berger + * update Sphinx documentation + * check responses in controller unit tests + * update copyright years of files + +2013-02-24 Jan Dittberner + * add sphinx documentation + * applied multiple patches by Paul Wise + +2012-12-08 Jan Dittberner + + * include patch for Debian URL checker by Paul Wise + * add link to Transifex translation project + +2012-11-21 Jan Dittberner + + * add pip requirements file with Debian Squeeze versions + * add indonesian translation by Izharul Haq + +2012-06-19 Jan Dittberner + + * add portuguese (Brasil) translation by Daniel Manzano + +2012-05-18 Jan Dittberner + + * add french translation by Stéphane Aulery + +2012-03-04 Jan Dittberner + + * update debtags location + +2012-01-07 Jan Dittberner + + * rename Debian Developer to Debian Member, change URL to + portfolio.debian.net + * PEP-8 compliance + +2011-03-06 Jan Dittberner + + * add one year bug history graph URL (http://glandium.org/blog/?p=1817) + +2010-06-03 Jan Dittberner + + * add support for extra parameters forumsid and wikihomepage + * add new patterns wiki and forum to section membership + * update copyright information + * add support for non-URL type information + * add ssh commands for MIA, owned debian.net-Domains and group membership diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..5df1764 --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,2 @@ +recursive-include debianmemberportfolio/static * +recursive-include debianmemberportfolio/templates * diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..1748835 --- /dev/null +++ b/README.txt @@ -0,0 +1,11 @@ + +This is the source code for the Debian Member Portfolio Service +application [0]. + +Cf. https://debian-member-portfolio-service.readthedocs.org/ for more +documentation (or its source in docs/source/devdocs.rst), including +how to configure a development environment. + + +[0] https://wiki.debian.org/DDPortfolio + diff --git a/agpl-3.0.txt b/agpl-3.0.txt new file mode 100644 index 0000000..be3f7b2 --- /dev/null +++ b/agpl-3.0.txt @@ -0,0 +1,661 @@ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +. diff --git a/babel.cfg b/babel.cfg new file mode 100644 index 0000000..f0234b3 --- /dev/null +++ b/babel.cfg @@ -0,0 +1,3 @@ +[python: **.py] +[jinja2: **/templates/**.html] +extensions=jinja2.ext.autoescape,jinja2.ext.with_ diff --git a/config.py b/config.py new file mode 100644 index 0000000..a77f89b --- /dev/null +++ b/config.py @@ -0,0 +1,33 @@ +# -*- python -*- +# -*- coding: utf-8 -*- +# +# Debian Member Portfolio Service Flask configuration +# +# Copyright © 2015 Jan Dittberner +# +# This file is part of the Debian Member Portfolio Service. +# +# Debian Member Portfolio Service is free software: you can redistribute it +# and/or modify it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the License, +# or (at your option) any later version. +# +# Debian Member Portfolio Service is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero +# General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# + +WTF_CSRF_ENABLED = False + +# available languages +LANGUAGES = { + 'en': 'English', + 'de': 'Deutsch', + 'fr': 'Français', + 'id': 'Bahasa Indonesia', + 'pt_BR': 'Portuguese (Brazil)' +} diff --git a/ddportfolioservice/__init__.py b/ddportfolioservice/__init__.py deleted file mode 100644 index 792d600..0000000 --- a/ddportfolioservice/__init__.py +++ /dev/null @@ -1 +0,0 @@ -# diff --git a/ddportfolioservice/ddportfolio.ini b/ddportfolioservice/ddportfolio.ini deleted file mode 100644 index 888340a..0000000 --- a/ddportfolioservice/ddportfolio.ini +++ /dev/null @@ -1,51 +0,0 @@ -[overview] -urls=ddpo,alladdresses -ddpo.pattern=http://qa.debian.org/developer.php?login=%(email)s -alladdresses.pattern=http://qa.debian.org/developer.php?login=%(name)s - -[bugs] -urls=received,reported,bugstats,usertags,searchall,wnpp -received.pattern=http://bugs.debian.org/%(email)s -reported.pattern=http://bugs.debian.org/from:%(email)s -bugstats.pattern=http://asdfasdf.debian.net/~tar/bugstats/?%(email)s -usertags.pattern=http://bugs.debian.org/cgi-bin/pkgreport.cgi?users=%(email)s -searchall.pattern=http://merkel.debian.org/~don/cgi/search.cgi?phrase=%(name)s&search=search -wnpp.pattern=http://qa.debian.org/developer.php?wnpp=%(email)s - -[build] -urls=buildd,igloo,svnbuildstat -buildd.pattern=http://buildd.debian.org/pkg.cgi?maint=%(email)s -igloo.pattern=http://oldpeople.debian.org/~igloo/status.php?email=%(email)s&thin=on -svnbuildstat.pattern=http://svnbuildstat.debian.net/packages/list/%(email)s - -[qa] -urls=lintian,lintianfull,dehs -lintian.pattern=http://lintian.debian.org/maintainer/%(email)s.html -lintianfull.pattern=http://lintian.debian.org/full/%(email)s.html -dehs.pattern=http://dehs.alioth.debian.org/report.php?login=%(email)s - -[upload] -urls=keylog -keylog.pattern=http://merkel.debian.org/~enrico/keylog/%(gpgfp)s.html - -[lists] -urls=dolists,adolists,gmane -dolists.pattern=http://lists.debian.org/cgi-bin/search?author=%(name)s&sort=date -adolists.pattern=http://www.google.com/search?q=site%%3Alists.alioth.debian.org+%%22%(name)s%%22 -gmane.pattern=http://search.gmane.org/?email=%(name)s&group=gmane.linux.debian.* - -[files] -urls=people,alioth -people.pattern=http://people.debian.org/~%(username)s/ -alioth.pattern=http://alioth.debian.org/~%(username)s/ - -[membership] -urls=nm,db,alioth -nm.pattern=https://nm.debian.org/nmstatus.php?email=%(email)s -db.pattern=http://db.debian.org/search.cgi?uid=%(username)s&dosearch=Search -alioth.pattern=http://alioth.debian.org/users/%(username)s/ - -[miscellaneous] -urls=debtags,links -debtags.pattern=http://debtags.alioth.debian.org/todo.html?maint=%(email)s -links.pattern=http://www.google.com/search?hl=en&lr=&q=site%%3Adebian.org+%%22%(name)s%%22+-site%%3Anm.debian.org+-site%%3Alintian.debian.org+-site%%3Abugs.debian.org+-site%%3Alists.debian.org+-site%%3Apackages.debian.org+-site%%3Alists.alioth.debian.org+-site%%3Aftp.debian.org++-site%%3Apackages.qa.debian.org++-site%%3Aftp*.*.debian.org+-inurl%%3Adebian.org%%2Fdevel%%2Fpeople.+-inurl%%3Aindices%%2FMaintainers+-inurl%%3Adebian.org%%2Fdebian%%2Fproject++-inurl%%3A%%2Fdists%%2F&btnG=Search diff --git a/ddportfolioservice/ddportfolio.py b/ddportfolioservice/ddportfolio.py deleted file mode 100644 index a58251a..0000000 --- a/ddportfolioservice/ddportfolio.py +++ /dev/null @@ -1,68 +0,0 @@ -# -*- python -*- -# -*- coding: utf8 -*- - -from paste.request import parse_formvars -import pkg_resources -import simplejson -from ConfigParser import ConfigParser -from urllib import quote_plus - -my_config = ConfigParser() -my_config.readfp(pkg_resources.resource_stream(__name__, 'ddportfolio.ini')) - -def build_urls(fields): - result = {} - qfields = dict([(key, quote_plus(fields[key])) for key in fields]) - for section in my_config.sections(): - if my_config.has_option(section, 'urls'): - for url in my_config.get(section, 'urls').split(','): - if my_config.has_option(section, url + '.pattern'): - try: - result[section + '.' + url] = \ - my_config.get(section, url + '.pattern', - False, qfields) - except Exception, e: - print "unable to parse %s: %s" % (my_config.get(section, url + '.pattern', True), e) - return result - -def application(environ, start_response): - fields = parse_formvars(environ) - if environ['REQUEST_METHOD'] == 'POST': - data = build_urls(fields) - if ('mode' in fields and fields['mode'] == 'json'): - start_response('200 OK', [('content-type', 'text/json')]) - return [simplejson.dumps(data)] - else: - start_response('200 OK', [('content-type', 'text/html')]) - return [''' -Debian Developer Portfolio - -
    -
  • ''', '
  • '.join(['%(key)s: %(url)s' % {'key': key, 'url': data[key]} for key in data]), '
'] - else: - start_response('200 OK', [('content-type', 'text/html')]) - return [''' - - Debian Developer Portfolio - - -
-
- Debian Developer Portfolio -
-
-
-
-
-
-
-
- -
-
- -'''] - -if __name__ == '__main__': - from paste import httpserver - httpserver.serve(application, host='127.0.0.1', port='8080') diff --git a/debianmemberportfolio/__init__.py b/debianmemberportfolio/__init__.py new file mode 100644 index 0000000..1667908 --- /dev/null +++ b/debianmemberportfolio/__init__.py @@ -0,0 +1,31 @@ +# -*- python -*- +# -*- coding: utf-8 -*- +# +# Debian Member Portfolio Service package +# +# Copyright © 2009-2015 Jan Dittberner +# +# This file is part of the Debian Member Portfolio Service. +# +# Debian Member Portfolio Service is free software: you can redistribute it +# and/or modify it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the License, +# or (at your option) any later version. +# +# Debian Member Portfolio Service is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero +# General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# + +from flask import Flask +from flask_babel import Babel + +app = Flask(__name__) +babel = Babel(app) +app.config.from_object('config') + +from debianmemberportfolio import views diff --git a/debianmemberportfolio/forms.py b/debianmemberportfolio/forms.py new file mode 100644 index 0000000..24872ee --- /dev/null +++ b/debianmemberportfolio/forms.py @@ -0,0 +1,73 @@ +# -*- python -*- +# -*- coding: utf-8 -*- +# +# Debian Member Portfolio Service views +# +# Copyright © 2015-2020 Jan Dittberner +# +# This file is part of the Debian Member Portfolio Service. +# +# Debian Member Portfolio Service is free software: you can redistribute it +# and/or modify it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the License, +# or (at your option) any later version. +# +# Debian Member Portfolio Service is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero +# General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +from __future__ import unicode_literals + +from flask_babel import gettext as _ +from flask_wtf import FlaskForm +from wtforms import IntegerField, StringField, RadioField +from wtforms.validators import ( + AnyOf, DataRequired, Email, Length, Optional, Regexp +) +from string import hexdigits + + +class FingerPrint(Regexp): + def __init__(self, **kwargs): + super(FingerPrint, self).__init__(r'^[a-fA-F0-9]*$', **kwargs) + + +class PlainText(Regexp): + def __init__(self): + super(PlainText, self).__init__(r'^[a-zA-Z\-0-9]*$') + + +def gpg_fingerprint(data): + if data is not None: + return "".join([ + char for char in str(data) if char.lower() in hexdigits]) + return data + + +class DeveloperData(FlaskForm): + email = StringField('email', validators=[DataRequired(), Email()]) + name = StringField('name', validators=[Optional(), DataRequired()]) + gpgfp = StringField('gpgfp', filters=[gpg_fingerprint], validators=[ + Optional(), FingerPrint(), Length(min=32, max=40) + ]) + username = StringField('username', validators=[Optional(), PlainText()]) + nonddemail = StringField('nonddemail', validators=[Optional(), Email()]) + salsausername = StringField('salsausername', validators=[ + Optional(), PlainText() + ]) + mode = RadioField( + 'mode', default='html', choices=[ + ('json', _('JSON')), ('html', _('HTML')) + ], validators=[AnyOf(['json', 'html'])] + ) + forumsid = IntegerField('forumsid', default=None, validators=[Optional()]) + wikihomepage = StringField('wikihomepage', default=None, validators=[ + Optional()]) + + +class DeveloperDataRequest(FlaskForm): + email = StringField('email', validators=[DataRequired(), Email()]) diff --git a/debianmemberportfolio/model/.gitignore b/debianmemberportfolio/model/.gitignore new file mode 100644 index 0000000..bb8a9be --- /dev/null +++ b/debianmemberportfolio/model/.gitignore @@ -0,0 +1 @@ +keyringcache diff --git a/debianmemberportfolio/model/__init__.py b/debianmemberportfolio/model/__init__.py new file mode 100644 index 0000000..3f73c88 --- /dev/null +++ b/debianmemberportfolio/model/__init__.py @@ -0,0 +1,26 @@ +# -*- python -*- +# -*- coding: utf-8 -*- +# +# Debian Member Portfolio Service model package +# +# Copyright © 2009-2014 Jan Dittberner +# +# This file is part of the Debian Member Portfolio Service. +# +# Debian Member Portfolio Service is free software: you can redistribute it +# and/or modify it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the License, +# or (at your option) any later version. +# +# Debian Member Portfolio Service is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero +# General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +""" +Model classes and model related utilities for the Debian Member Portfolio +service. +""" diff --git a/debianmemberportfolio/model/dddatabuilder.py b/debianmemberportfolio/model/dddatabuilder.py new file mode 100644 index 0000000..c168489 --- /dev/null +++ b/debianmemberportfolio/model/dddatabuilder.py @@ -0,0 +1,57 @@ +# -*- python -*- +# -*- coding: utf-8 -*- +# +# Debian Member Portfolio Service data builder +# +# Copyright © 2009-2015 Jan Dittberner +# +# This file is part of the Debian Member Portfolio Service. +# +# Debian Member Portfolio Service is free software: you can redistribute it +# and/or modify it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the License, +# or (at your option) any later version. +# +# Debian Member Portfolio Service is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero +# General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +""" +This file contains code to build a representation of a person based on keyring +data associated to a given email address. +""" + +import logging +from debianmemberportfolio.model import keyfinder + +TYPE_NO = 0 +TYPE_DM = 1 +TYPE_DD = 2 + +log = logging.getLogger(__name__) + + +def build_data(email_address): + """Build a DD data structure from a given email address.""" + fields = dict([(field, func(str(email_address))) + for (field, func) in + [('gpgfp', keyfinder.getFingerprintByEmail), + ('name', keyfinder.getRealnameByEmail), + ('username', keyfinder.getLoginByEmail)]]) + fields['email'] = email_address + if fields['username'] and fields['gpgfp'] and fields['name']: + fields['type'] = TYPE_DD + elif fields['name'] and fields['gpgfp']: + fields['type'] = TYPE_DM + else: + fields['type'] = TYPE_NO + if fields['name']: + log.debug('generate wikihomepage from name') + fields['wikihomepage'] = "".join( + [part.capitalize() for part in fields['name'].split()]) + + return fields diff --git a/debianmemberportfolio/model/keyfinder.py b/debianmemberportfolio/model/keyfinder.py new file mode 100644 index 0000000..5129e54 --- /dev/null +++ b/debianmemberportfolio/model/keyfinder.py @@ -0,0 +1,114 @@ +# -*- python -*- +# -*- coding: utf-8 -*- +# +# Debian Member Portfolio Service key finder module +# +# Copyright © 2009-2015 Jan Dittberner +# +# This file is part of the Debian Member Portfolio Service. +# +# Debian Member Portfolio Service is free software: you can redistribute it +# and/or modify it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the License, +# or (at your option) any later version. +# +# Debian Member Portfolio Service is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero +# General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +""" +This module provides tools for finding PGP key information from a +given keyring. +""" + +import logging +import time +import sys + +db = None +cachetimestamp = 0 + + +def _get_keyring_cache(): + global db, cachetimestamp + if db is None or (time.time() - cachetimestamp) > 86300: + import dbm + import pkg_resources + import os.path + filename = pkg_resources.resource_filename(__name__, + 'keyringcache') + logging.debug('reading cache data from %s', filename) + assert ( + os.path.exists(filename + '.db') and + os.path.isfile(filename + '.db') + ) + db = dbm.open(filename, 'r') + cachetimestamp = time.time() + return db + + +def _get_cached(cachekey): + cache = _get_keyring_cache() + logging.debug('cache lookup for %s', cachekey) + if cachekey in cache: + logging.debug('found entry %s', cache[cachekey]) + return cache[cachekey].decode('utf8') + return None + + +def getFingerprintByEmail(email): + """ + Gets the fingerprints associated with the given email address if + available. + """ + return _get_cached('fpr:email:%s' % email) + + +def getRealnameByEmail(email): + """ + Gets the real names associated with the given email address if + available. + """ + return _get_cached('name:email:%s' % email) + + +def getLoginByEmail(email): + """ + Gets the logins associated with the given email address if + available. + """ + return _get_cached('login:email:%s' % email) + + +def getLoginByFingerprint(fpr): + """ + Gets the login associated with the given fingerprint if available. + """ + return _get_cached('login:fpr:%s' % fpr) + + +def _dump_cache(): + cache = _get_keyring_cache() + fprs = [] + for key in [key.decode('utf8') for key in list(cache.keys())]: + if key.startswith('email:fpr:'): + fpr = key.replace('email:fpr:', '') + if not fpr in fprs: + fprs.append(fpr) + + for fpr in fprs: + login = getLoginByFingerprint(fpr) + email = _get_cached('email:fpr:%s' % fpr) + name = _get_cached('name:fpr:%s' % fpr) + + print(fpr, login, ':') + print(' ', name, email) + + +if __name__ == '__main__': + logging.basicConfig(stream=sys.stderr, level=logging.WARNING) + _dump_cache() diff --git a/debianmemberportfolio/model/keyringanalyzer.py b/debianmemberportfolio/model/keyringanalyzer.py new file mode 100644 index 0000000..9ea3fab --- /dev/null +++ b/debianmemberportfolio/model/keyringanalyzer.py @@ -0,0 +1,185 @@ +# -*- python -*- +# -*- coding: utf-8 -*- +# +# Debian Member Portfolio Service application key ring analyzer tool +# +# Copyright © 2009-2015 Jan Dittberner +# +# This file is part of the Debian Member Portfolio Service. +# +# Debian Member Portfolio Service is free software: you can redistribute it +# and/or modify it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the License, +# or (at your option) any later version. +# +# Debian Member Portfolio Service is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero +# General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +""" +This is a tool that analyzes GPG and PGP keyrings and stores the +retrieved data in a file database. The tool was inspired by Debian +qa's carnivore. +""" + +import dbm +import pkg_resources +import glob +import configparser +import os +import os.path +import logging +import subprocess +import sys +import email.utils + + +CONFIG = configparser.ConfigParser() + + +def _get_keyrings(): + """ + Gets the available keyring files from the keyring directory + configured in portfolio.ini. + """ + keyringdir = os.path.expanduser(CONFIG.get('DEFAULT', 'keyring.dir')) + logging.debug("keyring dir is %s", keyringdir) + keyrings = glob.glob(os.path.join(keyringdir, '*.gpg')) + keyrings.extend(glob.glob(os.path.join(keyringdir, '*.pgp'))) + keyrings.sort() + return keyrings + + +def _parse_uid(uid): + """ + Parse a uid of the form 'Real Name ' into email + and realname parts. + """ + + # First try with the Python library, but it doesn't always catch everything + (name, mail) = email.utils.parseaddr(uid) + if (not name) and (not mail): + logging.warning("malformed uid %s", uid) + if (not name) or (not mail): + logging.debug("strange uid %s: '%s' - <%s>", uid, name, mail) + # Try and do better than the python library + if not '@' in mail: + uid = uid.strip() + # First, strip comment + s = uid.find('(') + e = uid.find(')') + if s >= 0 and e >= 0: + uid = uid[:s] + uid[e + 1:] + s = uid.find('<') + e = uid.find('>') + mail = None + if s >= 0 and e >= 0: + mail = uid[s + 1:e] + uid = uid[:s] + uid[e + 1:] + uid = uid.strip() + if not mail and uid.find('@') >= 0: + mail, uid = uid, mail + + name = uid + logging.debug("corrected: '%s' - <%s>", name, mail) + return (name, mail) + +resultdict = {} + + +def _get_canonical(key): + if not key in resultdict: + resultdict[key] = [] + return key + + +def _add_to_result(key, newvalue): + logging.debug("adding %s: %s", key, newvalue) + thekey = _get_canonical(key) + if newvalue not in resultdict[thekey]: + resultdict[thekey].append(newvalue) + + +def _handle_mail(mail, fpr): + if mail.endswith('@debian.org'): + login = mail[0:-len('@debian.org')] + _add_to_result('login:email:%s' % mail, login) + _add_to_result('login:fpr:%s' % fpr, login) + _add_to_result('fpr:login:%s' % login, fpr) + _add_to_result('fpr:email:%s' % mail, fpr) + _add_to_result('email:fpr:%s' % fpr, mail) + + +def _handle_uid(uid, fpr): + # Do stuff with 'uid' + if uid: + (uid, mail) = _parse_uid(uid) + if mail: + _handle_mail(mail, fpr) + if uid: + _add_to_result('name:fpr:%s' % fpr, uid) + if mail: + _add_to_result('name:email:%s' % mail, uid) + return fpr + + +def process_gpg_list_keys_line(line, fpr): + """ + Process a line of gpg --list-keys --with-colon output. + """ + items = line.split(':') + if items[0] == 'pub': + return None + if items[0] == 'fpr': + return items[9].strip() + if items[0] == 'uid': + if items[1] == 'r': + return fpr + return _handle_uid(items[9].strip(), fpr) + else: + return fpr + + +def process_keyrings(): + """Process the keyrings and store the extracted data in an anydbm + file.""" + for keyring in _get_keyrings(): + logging.debug("get data from %s", keyring) + proc = subprocess.Popen([ + "gpg", "--no-options", "--no-default-keyring", + "--homedir", os.path.expanduser( + CONFIG.get('DEFAULT', 'gnupghome')), + "--no-expensive-trust-checks", + "--keyring", keyring, "--list-keys", + "--with-colons", "--fixed-list-mode", "--with-fingerprint", + "--with-fingerprint"], + stdout=subprocess.PIPE) + fpr = None + for line in proc.stdout.readlines(): + try: + line = line.decode('utf8') + except UnicodeDecodeError: + line = line.decode('iso8859-1') + fpr = process_gpg_list_keys_line(line, fpr) + retcode = proc.wait() + if retcode != 0: + logging.error("subprocess ended with return code %d", retcode) + db = dbm.open(pkg_resources.resource_filename(__name__, + 'keyringcache'), 'c') + for key in resultdict: + db[key] = ":".join(resultdict[key]) + db.close() + + +if __name__ == '__main__': + logging.basicConfig(stream=sys.stderr, level=logging.WARNING) + CONFIG.read_string(pkg_resources.resource_string( + __name__, 'portfolio.ini').decode('utf8')) + gpghome = os.path.expanduser(CONFIG.get('DEFAULT', 'gnupghome')) + if not os.path.isdir(gpghome): + os.makedirs(gpghome, 0o700) + process_keyrings() diff --git a/debianmemberportfolio/model/portfolio.ini b/debianmemberportfolio/model/portfolio.ini new file mode 100644 index 0000000..7cf278a --- /dev/null +++ b/debianmemberportfolio/model/portfolio.ini @@ -0,0 +1,124 @@ +# +# Configuration for Debian Member Portfolio Service +# +# Copyright © 2009-2020 Jan Dittberner +# +# This file is part of the Debian Member Portfolio Service. +# +# Debian Member Portfolio Service is free software: you can redistribute it +# and/or modify it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the License, +# or (at your option) any later version. +# +# Debian Member Portfolio Service is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero +# General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +[DEFAULT] +gnupghome=~/debian/gnupghome +keyring.dir=~/debian/keyring.debian.org/keyrings +urlbuilder.sections=overview,bugs,build,qa,lists,files,membership, + miscellaneous,ssh,ubuntu + +[overview] +urls=ddpo,alladdresses +ddpo.pattern=https://qa.debian.org/developer.php?login=%(email)s +alladdresses.pattern=https://qa.debian.org/developer.php?login=%(name)s + +[bugs] +urls=received,reported,usertags,searchall,wnpp,correspondent,graph +received.pattern=https://bugs.debian.org/%(email)s +reported.pattern=https://bugs.debian.org/from:%(email)s +usertags.pattern=https://bugs.debian.org/cgi-bin/pkgreport.cgi?users=%(email)s +searchall.pattern=http://bugs-search.debian.org/cgi-bin/search.cgi?phrase=%(name)s;search=search +wnpp.pattern=https://qa.debian.org/developer.php?wnpp=%(email)s +correspondent.pattern=https://bugs.debian.org/cgi-bin/pkgreport.cgi?correspondent=%(email)s +graph.pattern=https://qa.debian.org/data/bts/graphs/by-maint/%(email)s.png + +[build] +urls=buildd +buildd.pattern=https://buildd.debian.org/status/package.php?p=%(email)s&compact=compact&comaint=yes + +[qa] +urls=lintian,lintianfull,piuparts,patchtracker,dmd,duck,janitor +dmd.pattern=https://udd.debian.org/dmd.cgi?email1=%(email)s +lintian.pattern=https://lintian.debian.org/maintainer/%(email)s.html +lintianfull.pattern=https://lintian.debian.org/full/%(email)s.html +piuparts.pattern=https://piuparts.debian.org/sid/maintainer/%(firstchar)s/%(email)s.html +patchtracker.pattern=http://patch-tracker.debian.org/email/%(email)s +duck.pattern=http://duck.debian.net/persons/%(email)s.html +janitor.pattern=https://janitor.debian.net/m/%(email)s + +[lists] +urls=dolists,adolists +dolists.pattern=https://lists.debian.org/cgi-bin/search?P="%%22%(name)s%%22&SORT=0 +adolists.pattern=https://www.google.com/search?q=site%%3Alists.alioth.debian.org+%%22%(name)s%%22 +# debconf list search has a tricky URL format +# http://lists.debconf.org/lurker/search \ +# /20100510.202949.00000000@au:%(firstname)s,au:%(lastname)s.en.html +# /YYYYMMDD.HHmmss.hashcode@au:%(firstname)s,au:%(lastname)s.en.html +# maybe this could be implemented using some custom formatter function + +[files] +urls=people +people.pattern=https://people.debian.org/~%(username)s/ +people.optional=true + +[membership] +urls=nm,dbfinger,db,webid,salsa,wiki,forum +nm.pattern=https://nm.debian.org/public/nmstatus/%(username)s +dbfinger.pattern=finger %(username)s@db.debian.org +dbfinger.type=finger +dbfinger.optional=true +db.pattern=https://db.debian.org/search.cgi?uid=%(username)s&dosearch=Search +db.optional=true +webid.pattern=http://webid.debian.net/maintainers/%(username)s +webid.optional=true +salsa.pattern=https://salsa.debian.org/%(salsausername)s +salsa.optional=true +wiki.pattern=https://wiki.debian.org/%(wikihomepage)s +forum.pattern=http://forums.debian.net/memberlist.php?mode=viewprofile&u=%(forumsid)s +forum.optional=true + +[miscellaneous] +urls=debtags,links,planetname,planetuser,website,search,gpgfinger,gpgweb,contrib,repology +debtags.pattern=https://debtags.debian.org/reports/maint/%(email)s +planetname.pattern=https://planet-search.debian.org/cgi-bin/search.cgi?terms=%%22%(name)s%%22 +planetuser.pattern=https://planet-search.debian.org/cgi-bin/search.cgi?terms=%%22%(username)s%%22 +planetuser.optional=true +links.pattern=https://www.google.com/search?hl=en&lr=&q=site%%3Adebian.org+%%22%(name)s%%22+-site%%3Anm.debian.org+-site%%3Alintian.debian.org+-site%%3Abugs.debian.org+-site%%3Alists.debian.org+-site%%3Apackages.debian.org+-site%%3Alists.alioth.debian.org+-site%%3Aftp.debian.org++-site%%3Apackages.qa.debian.org++-site%%3Aftp*.*.debian.org+-inurl%%3Adebian.org%%2Fdevel%%2Fpeople.+-inurl%%3Aindices%%2FMaintainers+-inurl%%3Adebian.org%%2Fdebian%%2Fproject++-inurl%%3A%%2Fdists%%2F&btnG=Search +website.pattern=https://www.google.com/search?q=site:www.debian.org+%(name)s +search.pattern=https://search.debian.org/cgi-bin/omega?P=%%22%(name)s%%22 +gpgfinger.pattern=finger %(username)s/key@db.debian.org +gpgfinger.type=finger +gpgfinger.optional=true +gpgweb.pattern=https://db.debian.org/fetchkey.cgi?fingerprint=%(gpgfp)s +gpgweb.optional=true +nm.pattern=https://nm.debian.org/public/person/%(username)s +contrib.pattern=https://contributors.debian.org/contributor/%(email)s +contrib.optional=true +repology.pattern=https://repology.org/maintainer/%(email)s +repology.optional=true + +[ssh] +# SSH functions +urls=owndndoms,miainfo,groupinfo +# owned *.debian.net domains +owndndoms.pattern=ldapsearch -u -x -H ldaps://db.debian.org -b dc=debian,dc=org uid=%(username)s dnsZoneEntry +owndndoms.type=ldapsearch +owndndoms.optional=true +# MIA information +miainfo.pattern=ssh qa.debian.org /srv/qa.debian.org/mia/mia-query %(emailnoq)s +miainfo.type=ssh +# Group information +groupinfo.pattern=ssh master.debian.org id %(username)s +groupinfo.type=ssh +groupinfo.optional=true + +[ubuntu] +urls=ubuntudiff +ubuntudiff.pattern=http://ubuntudiff.debian.net/q/uploaders/%(email)s diff --git a/debianmemberportfolio/model/urlbuilder.py b/debianmemberportfolio/model/urlbuilder.py new file mode 100644 index 0000000..cb2f33f --- /dev/null +++ b/debianmemberportfolio/model/urlbuilder.py @@ -0,0 +1,114 @@ +# -*- python -*- +# -*- coding: utf8 -*- +# +# Debian Member Portfolio Service url builder +# +# Copyright © 2009-2020 Jan Dittberner +# +# This file is part of the Debian Member Portfolio Service. +# +# Debian Member Portfolio Service is free software: you can redistribute it +# and/or modify it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the License, +# or (at your option) any later version. +# +# Debian Member Portfolio Service is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero +# General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +""" +This module provides the function build_urls to build personalized +URLs using the given information and the URL patterns defined in +portfolio.ini. +""" + +from configparser import ConfigParser, InterpolationMissingOptionError +from encodings.utf_8 import StreamReader as UTF8StreamReader + +import pkg_resources +from debianmemberportfolio.model import keyfinder +from urllib.parse import quote_plus +from flask_babel import gettext as _, lazy_gettext as N_ + + +my_config = ConfigParser() +my_config.read_file(UTF8StreamReader( + pkg_resources.resource_stream(__name__, 'portfolio.ini'))) + +_FIELDNAMES_MAP = { + 'email': N_('Email address'), + 'name': N_('Name'), + 'gpgfp': N_('GPG fingerprint'), + 'username': N_('Debian user name'), + 'nonddemail': N_('Non Debian email address'), + 'salsausername': N_('Salsa user name'), +} + + +class DDPortfolioEntry(object): + def __init__(self, config, section, key): + self.name = key + self.optional = config.has_option(section, key + '.optional') and \ + config.getboolean(section, key + '.optional') or False + if config.has_option(section, key + '.type'): + self.type = config.get(section, key + '.type') + else: + self.type = 'url' + + +def _build_quoted_fields(fields): + """ + Take a dictionary of raw field values and quote the values if required. + """ + qfields = {} + for key, value in fields.items(): + if value is not None: + if isinstance(value, str): + qfields[key] = quote_plus(value.encode('utf8')) + elif isinstance(value, str): + qfields[key] = quote_plus(value) + else: + qfields[key] = value + qfields[key] = str(qfields[key]).replace('%', '%%') + + if 'gpgfp' not in qfields: + fpr = keyfinder.getFingerprintByEmail(fields['email'].encode('utf8')) + if fpr: + qfields['gpgfp'] = fpr[0] + qfields['firstchar'] = fields['email'][0].encode('utf8') + qfields['emailnoq'] = fields['email'].encode('utf8') + return qfields + + +def build_urls(fields): + """Build personalized URLs using the developer information in + fields.""" + data = [] + qfields = _build_quoted_fields(fields) + for section in [section.strip() for section in + my_config.get('DEFAULT', + 'urlbuilder.sections').split(',')]: + data.append(['section', section]) + if my_config.has_option(section, 'urls'): + for entry in ([ + DDPortfolioEntry(my_config, section, url) for url in + my_config.get(section, 'urls').split(',')]): + try: + data.append( + ['url', section, entry, + my_config.get(section, entry.name + '.pattern', + raw=False, vars=qfields)]) + except InterpolationMissingOptionError as e: + if not entry.optional: + if e.reference in _FIELDNAMES_MAP: + data.append(['error', section, entry, + _('Missing input: %s') % + _(_FIELDNAMES_MAP[e.reference])]) + else: + data.append(['error', section, entry, + _('Missing input: %s') % e.reference]) + return data diff --git a/debianmemberportfolio/static/.gitignore b/debianmemberportfolio/static/.gitignore new file mode 100644 index 0000000..a059bb7 --- /dev/null +++ b/debianmemberportfolio/static/.gitignore @@ -0,0 +1 @@ +javascript diff --git a/debianmemberportfolio/static/images/agplv3-88x31.png b/debianmemberportfolio/static/images/agplv3-88x31.png new file mode 100644 index 0000000..1035191 Binary files /dev/null and b/debianmemberportfolio/static/images/agplv3-88x31.png differ diff --git a/debianmemberportfolio/static/images/openlogo-100.jpg b/debianmemberportfolio/static/images/openlogo-100.jpg new file mode 100644 index 0000000..db6caf4 Binary files /dev/null and b/debianmemberportfolio/static/images/openlogo-100.jpg differ diff --git a/debianmemberportfolio/static/robots.txt b/debianmemberportfolio/static/robots.txt new file mode 100644 index 0000000..f6e6d1d --- /dev/null +++ b/debianmemberportfolio/static/robots.txt @@ -0,0 +1,2 @@ +User-Agent: * +Allow: / diff --git a/debianmemberportfolio/static/stylesheets/style.css b/debianmemberportfolio/static/stylesheets/style.css new file mode 100644 index 0000000..b99d87d --- /dev/null +++ b/debianmemberportfolio/static/stylesheets/style.css @@ -0,0 +1,61 @@ +html, body { + font-family:sans, Arial; + font-size:10pt; +} + +#debianlogo { + float:right; +} + +#content { + clear:both; +} + +#agpllogo { + float:left; + margin-right:10px; +} + +table { + border-collapse:collapse; + width:100%; +} + +th, td { + border:1px solid grey; +} + +tr.section { + background-color: #a0a0a0; + color: #f0f0f0; +} + +tr.odd td { + background-color: #f0f0f0; +} + +tr.even td { + background-color: #e0e0ff; +} + +tr.error td { + background-color: #ffe0e0; +} + +td { + vertical-align:top; + padding:2px; +} + +td p { + padding:0; + margin:0; +} + +.errormsg { + color:red; +} + +.hidden { + display:none; +} diff --git a/debianmemberportfolio/templates/base.html b/debianmemberportfolio/templates/base.html new file mode 100644 index 0000000..82986b7 --- /dev/null +++ b/debianmemberportfolio/templates/base.html @@ -0,0 +1,48 @@ + +{# vim: ft=jinja +Base template for XHTML templates. +Copyright © 2009-2020 Jan Dittberner + +This file is part of the Debian Member Portfolio service. + +Debian Member Portfolio service is free software: you can redistribute it +and/or modify it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Debian Member Portfolio service is distributed in the hope that it will be +useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero +General Public License for more details. + +You should have received a copy of the GNU Affero General Public License along +with this program. If not, see . +#} + + + {% block title %}{{ _('Debian Member Portfolio Service') }}{% endblock %} + + {% block extrahead %}{% endblock %} + + + +
+ {% block body %}{% endblock %} +
+ + + + + diff --git a/debianmemberportfolio/templates/showform.html b/debianmemberportfolio/templates/showform.html new file mode 100644 index 0000000..a0d091a --- /dev/null +++ b/debianmemberportfolio/templates/showform.html @@ -0,0 +1,103 @@ +{% extends "base.html" %} +{# +Template for the data input form. + +Copyright © 2009-2020 Jan Dittberner + +This file is part of the Debian Member Portfolio service. + +Debian Member Portfolio service is free software: you can redistribute it +and/or modify it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Debian Member Portfolio service is distributed in the hope that it will be +useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero +General Public License for more details. + +You should have received a copy of the GNU Affero General Public License along +with this program. If not, see . +#} +{% block title %}{{ super()}} - {{ _('Enter your personal information') }}{% endblock %} +{% block extrahead %}{{ super() }} + +{% endblock %} +{% block body %}{{ super() }} +
+
+ {{ _('Debian Member Portfolio') }} +
+
+ {{ form.email }}
+
+ +
+
+ {{ form.name }} +
+
+
+ {{ form.gpgfp }} +
+
+
+ {{ form.username }} +
+
+
+ {{ form.nonddemail }} +
+
+
+ {{ form.salsausername }} +
+
+
+ {{ form.wikihomepage }} +
+
+
+ {{ form.forumsid }} +
+
+
+ {% for subfield in form.mode %} + {{ subfield.label }} {{ subfield }} + {% endfor %}
+ +
+
+
+{% endblock %} diff --git a/debianmemberportfolio/templates/showformscript.js b/debianmemberportfolio/templates/showformscript.js new file mode 100644 index 0000000..842c272 --- /dev/null +++ b/debianmemberportfolio/templates/showformscript.js @@ -0,0 +1,119 @@ +{# vim: ft=jinja +Helper JavaScript for the data input form. +Copyright © 2009-2020, Jan Dittberner + +This file is part of the Debian Member Portfolio service. + +Debian Member Portfolio service is free software: you can redistribute it +and/or modify it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Debian Member Portfolio service is distributed in the hope that it will be +useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero +General Public License for more details. + +You should have received a copy of the GNU Affero General Public License along +with this program. If not, see . +#} +var defaulthiddendivs = new Array( + '#namefield', '#gpgfpfield', '#usernamefield', '#nonddemailfield', + '#salsausernamefield', '#wikihomepagefield', '#forumsidfield'); +var maskedfielddivs = new Array( + '#namefield', '#gpgfpfield', '#usernamefield', '#nonddemailfield', + '#salsausernamefield', '#wikihomepagefield', '#forumsidfield'); +var allfielddivs = new Array( + '#namefield', '#gpgfpfield', '#usernamefield', '#nonddemailfield', + '#salsausernamefield', '#wikihomepagefield', '#forumsidfield'); + +function updateFields(data, textStatus) { + if (data.type == 2) { // DD + $('#name').prop('value', data.name).prop('readonly', 'readonly'); + $('#gpgfp').prop('value', data.gpgfp); + $('#username').prop('value', data.username).prop( + 'readonly', 'readonly'); + $('#nonddemail').prop('value', data.email).focus(); + $('#salsausername').prop('value', data.username); + $('#wikihomepage').prop('value', data.wikihomepage); + + $('#namefield').show(); + $('#gpgfpfield').show(); + $('#usernamefield').show(); + $('#nonddemailfield').show(); + $('#salsausernamefield').show(); + $('#wikihomepagefield').show(); + $('#forumsidfield').show(); + + $('#nonddemail').focus().select(); + } else if (data.type == 1) { // DM + $('#name').prop('value', data.name).prop('readonly', 'readonly'); + $('#gpgfp').prop('value', data.gpgfp); + $('#username').prop('value', ''); + $('#nonddemail').prop('value', data.email).focus(); + $('#wikihomepage').prop('value', data.wikihomepage); + + $('#namefield').show(); + $('#gpgfpfield').show(); + $('#usernamefield').hide(); + $('#nonddemailfield').hide(); + $('#salsausernamefield').show(); + $('#wikihomepagefield').show(); + $('#forumsidfield').show(); + + $('#salsausername').focus().select(); + } else { + $('#nonddemail').prop('value', data.email); + $('#name').removeAttr('readonly'); + $('#username').removeAttr('readonly').prop('value', ''); + $('#gpgfp').prop('value', ''); + + $('#usernamefield').hide(); + $('#gpgfpfield').hide(); + $('#nonddemailfield').hide(); + $('#namefield').show(); + $('#salsausernamefield').show(); + $('#wikihomepagefield').show(); + $('#forumsidfield').show(); + + $('#name').focus().select(); + } +} + +function onChangeShowAll(event) { + if ($('#showall').prop('checked')) { + for (var fielddiv in allfielddivs) { + $(allfielddivs[fielddiv]).show(); + } + } else { + for (var fielddiv in maskedfielddivs) { + $(maskedfielddivs[fielddiv]).hide(); + } + } +} + +function onBlurEmail() { + if ($.trim($('#email').prop('value')).length > 0) { + $.ajax({ + 'url' : '{{ url_for("fetchdddata") }}', + 'data' : {'email' : $('#email').prop('value')}, + 'dataType' : 'json', + 'success' : updateFields, + 'error' : function(request, textStatus, errorThrown) { + $('#email').focus(); + } + }); + } +} + +$(document).ready(function() { + for (var index in defaulthiddendivs) { + if (!$(defaulthiddendivs[index]).hasClass('witherrors')) { + $(defaulthiddendivs[index]).hide(); + } + } + + $('#showall').prop('checked', false).change(onChangeShowAll); + $('#showallfield').show(); + $('#email').blur(onBlurEmail).focus(); +}); diff --git a/debianmemberportfolio/templates/showurls.html b/debianmemberportfolio/templates/showurls.html new file mode 100644 index 0000000..4b5165b --- /dev/null +++ b/debianmemberportfolio/templates/showurls.html @@ -0,0 +1,61 @@ +{% extends "base.html" %} +{# +Template for the url output page. +Copyright © 2009-2015 Jan Dittberner + +This file is part of Debian Member Portfolio Service. + +Debian Member Portfolio Service is free software: you can redistribute it +and/or modify it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Debian Member Portfolio Service is distributed in the hope that it will be +useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero +General Public License for more details. + +You should have received a copy of the GNU Affero General Public License along +with this program. If not, see . +#} +{% block title %}{{ super() }} - {{ _('Your personal links') }}{% endblock %} +{% block body %}{{ super() }} +{% if urldata %} +
+ {{ _('Debian Member Porfolio') }} + + + + + + {% for row in urldata %} + {% if row[0] == 'section' %} + + {% set urlclass = 'odd' %} + {% elif row[0] == 'error' %} + + + + + {% else %} + + + + + {% if urlclass == "odd" %}{% set urlclass = "even" %}{% else %}{% set urlclass = "odd" %}{% endif %} + {% endif %} + {% endfor %} + +
{{ _('Usage') }}{{ _('URL') }}
{{ row[4] }}{{ _('Error during URL creation:') }} + {{ row[3]|replace("\n", "
") }}
{{ row[4]|safe }} + {% if row[2].type == 'url' %} + {{ row[3]|truncate(120) }} + {% else %} + {{ row[3] }} + {% endif %} +
+
+{% endif %} +

{{ _('Restart') }}

+{% endblock body %} + diff --git a/debianmemberportfolio/translations/de/LC_MESSAGES/messages.po b/debianmemberportfolio/translations/de/LC_MESSAGES/messages.po new file mode 100644 index 0000000..ff035df --- /dev/null +++ b/debianmemberportfolio/translations/de/LC_MESSAGES/messages.po @@ -0,0 +1,425 @@ +# German translations for the Debian Member Portfolio Service. +# +# Copyright (C) 2009-2014 Jan Dittberner +# This file is distributed under the same license as the Debian Member +# Portfolio Service project. +# Translators: +# Jan Dittberner , 2009-2014 +msgid "" +msgstr "" +"Project-Id-Version: Debian Member Portfolio Service 0.6.4\n" +"Report-Msgid-Bugs-To: jan@dittberner.info\n" +"POT-Creation-Date: 2020-10-27 08:36+0100\n" +"PO-Revision-Date: 2020-10-27 08:37+0100\n" +"Last-Translator: Jan Dittberner \n" +"Language: de\n" +"Language-Team: German \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.0\n" +"X-Generator: Poedit 2.4.1\n" + +#: debianmemberportfolio/forms.py:64 +msgid "JSON" +msgstr "JSON" + +#: debianmemberportfolio/forms.py:64 +msgid "HTML" +msgstr "HTML" + +#: debianmemberportfolio/views.py:40 +msgid "Overview" +msgstr "Überblick" + +#: debianmemberportfolio/views.py:41 +msgid "Debian Member's Package Overview" +msgstr "Paketübersicht des Debian-Mitglieds" + +#: debianmemberportfolio/views.py:42 +msgid "" +"Debian Member's Package Overview\n" +"... showing all email addresses" +msgstr "" +"Paketübersicht des Debian-Mitglieds\n" +"... mit allen E-Mailadressen" + +#: debianmemberportfolio/views.py:46 +msgid "Bugs" +msgstr "Fehler" + +#: debianmemberportfolio/views.py:47 +msgid "" +"bugs received\n" +"(note: co-maintainers not listed, see #430986)" +msgstr "" +"Erhaltene Fehlerberichte\n" +"(Anmerkung: Co-Maintainer werden nicht aufgeführt, siehe #430986)" + +#: debianmemberportfolio/views.py:51 +msgid "bugs reported" +msgstr "Berichtete Fehler" + +#: debianmemberportfolio/views.py:52 +msgid "user tags" +msgstr "User Tags" + +#: debianmemberportfolio/views.py:53 +msgid "all messages (i.e., full text search for developer name on all bug logs)" +msgstr "" +"Alle Nachrichten (d.h. Volltextsuche nach dem Entwicklernamen in allen " +"Fehlerlogs)" + +#: debianmemberportfolio/views.py:55 +msgid "WNPP" +msgstr "WNPP" + +#: debianmemberportfolio/views.py:56 +msgid "correspondent for bugs" +msgstr "Beitragender zu Fehlern" + +#: debianmemberportfolio/views.py:57 +msgid "one year open bug history graph" +msgstr "Graph der Entwicklung offener Fehlerberichte über ein Jahr" + +#: debianmemberportfolio/views.py:60 +msgid "Build" +msgstr "Build" + +#: debianmemberportfolio/views.py:61 +msgid "buildd.d.o" +msgstr "buildd.d.o" + +#: debianmemberportfolio/views.py:62 +msgid "igloo" +msgstr "Igloo" + +#: debianmemberportfolio/views.py:65 +msgid "Quality Assurance" +msgstr "Qualitätssicherung" + +#: debianmemberportfolio/views.py:66 +msgid "maintainer dashboard" +msgstr "Maintainer Dashboard" + +#: debianmemberportfolio/views.py:67 +msgid "lintian reports" +msgstr "Lintian-Berichte" + +#: debianmemberportfolio/views.py:68 +msgid "full lintian reports (i.e. including \"info\"-level messages)" +msgstr "" +"vollständige Lintian-Berichte (d.h. inklusive Meldungen der Stufe \"info\")" + +#: debianmemberportfolio/views.py:70 +msgid "piuparts" +msgstr "piuparts" + +#: debianmemberportfolio/views.py:71 +msgid "Debian patch tracking system" +msgstr "Debian Nachverfolgungssystem für Patches" + +#: debianmemberportfolio/views.py:72 +msgid "Debian Url ChecKer" +msgstr "Debian URL-Prüfer" + +#: debianmemberportfolio/views.py:73 +msgid "Debian Janitor" +msgstr "Debian Janitor" + +#: debianmemberportfolio/views.py:76 +msgid "Mailing Lists" +msgstr "Mailinglisten" + +#: debianmemberportfolio/views.py:77 +msgid "lists.d.o" +msgstr "lists.d.o" + +#: debianmemberportfolio/views.py:78 +msgid "lists.a.d.o" +msgstr "lists.a.d.o" + +#: debianmemberportfolio/views.py:81 +msgid "Files" +msgstr "Dateien" + +#: debianmemberportfolio/views.py:82 +msgid "people.d.o" +msgstr "people.d.o" + +#: debianmemberportfolio/views.py:83 +msgid "oldpeople" +msgstr "oldpeople" + +#: debianmemberportfolio/views.py:86 +msgid "Membership" +msgstr "Mitgliedschaft" + +#: debianmemberportfolio/views.py:87 +msgid "NM" +msgstr "NM" + +#: debianmemberportfolio/views.py:88 +msgid "DB information via finger" +msgstr "DB-Informationen per finger" + +#: debianmemberportfolio/views.py:89 +msgid "DB information via HTTP" +msgstr "DB-Informationen per HTTP" + +#: debianmemberportfolio/views.py:90 +msgid "FOAF profile" +msgstr "FOAF-Profil" + +#: debianmemberportfolio/views.py:91 +msgid "Salsa" +msgstr "Salsa" + +#: debianmemberportfolio/views.py:92 +msgid "Wiki" +msgstr "Wiki" + +#: debianmemberportfolio/views.py:93 +msgid "Forum" +msgstr "Forum" + +#: debianmemberportfolio/views.py:96 +msgid "Miscellaneous" +msgstr "Sonstiges" + +#: debianmemberportfolio/views.py:97 +msgid "debtags" +msgstr "debtags" + +#: debianmemberportfolio/views.py:98 +msgid "Planet Debian (name)" +msgstr "Planet Debian (Name)" + +#: debianmemberportfolio/views.py:99 +msgid "Planet Debian (username)" +msgstr "Planet Debian (Benutzername)" + +#: debianmemberportfolio/views.py:100 +msgid "links" +msgstr "Links" + +#: debianmemberportfolio/views.py:101 +msgid "Debian website" +msgstr "Debian Webseite" + +#: debianmemberportfolio/views.py:102 +msgid "Debian search" +msgstr "Debian-Suche" + +#: debianmemberportfolio/views.py:103 +msgid "GPG public key via finger" +msgstr "öffentlicher GPG-Schlüssel per finger" + +#: debianmemberportfolio/views.py:104 +msgid "GPG public key via HTTP" +msgstr "öffentlicher GPG-Schlüssel per HTTP" + +#: debianmemberportfolio/views.py:105 +msgid "NM, AM participation" +msgstr "NM-, AM-Mitwirkung" + +#: debianmemberportfolio/views.py:106 +msgid "Contribution information" +msgstr "Debian Contributor-Informationen" + +#: debianmemberportfolio/views.py:107 +msgid "Repology information" +msgstr "Repology-Informationen" + +#: debianmemberportfolio/views.py:110 +msgid "Information reachable via ssh (for Debian Members)" +msgstr "Per ssh erreichbare Informationen (für Debian Mitglieder)" + +#: debianmemberportfolio/views.py:111 +msgid "owned debian.net domains" +msgstr "Besitz von debian.net-Domains" + +#: debianmemberportfolio/views.py:112 +msgid "" +"MIA database " +"information" +msgstr "" +"Informationen in der MIA-Datenbank" + +#: debianmemberportfolio/views.py:114 +msgid "Group membership information" +msgstr "Information über Gruppenmitgliedschaften" + +#: debianmemberportfolio/views.py:117 +msgid "Ubuntu" +msgstr "Ubuntu" + +#: debianmemberportfolio/views.py:118 +msgid "Available patches from Ubuntu" +msgstr "Verfügbare Patches aus Ubuntu" + +#: debianmemberportfolio/model/urlbuilder.py:43 +msgid "Email address" +msgstr "E-Mailadresse" + +#: debianmemberportfolio/model/urlbuilder.py:44 +msgid "Name" +msgstr "Name" + +#: debianmemberportfolio/model/urlbuilder.py:45 +msgid "GPG fingerprint" +msgstr "GPG-Fingerabdruck" + +#: debianmemberportfolio/model/urlbuilder.py:46 +msgid "Debian user name" +msgstr "Debian-Benutzername" + +#: debianmemberportfolio/model/urlbuilder.py:47 +msgid "Non Debian email address" +msgstr "Nicht-Debian-E-Mailadresse" + +#: debianmemberportfolio/model/urlbuilder.py:48 +msgid "Salsa user name" +msgstr "Salsa-Benutzername" + +#: debianmemberportfolio/model/urlbuilder.py:109 +#: debianmemberportfolio/model/urlbuilder.py:113 +#, python-format +msgid "Missing input: %s" +msgstr "Fehlende Eingabe: %s" + +#: debianmemberportfolio/templates/base.html:24 +#: debianmemberportfolio/templates/base.html:31 +msgid "Debian Member Portfolio Service" +msgstr "Debian-Mitglieder-Portfolioservice" + +#: debianmemberportfolio/templates/base.html:30 +msgid "Debian Logo" +msgstr "Debian-Logo" + +#: debianmemberportfolio/templates/base.html:32 +msgid "" +"This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can " +"create a set of customized links leading to a Debian Member's or package " +"maintainer's information regarding Debian." +msgstr "" +"Dieser Dienst wurde durch Stefano Zacchirolis DDPortfolio-Seite im Debian Wiki inspiriert. Mit dem " +"Dienst können personalisierte Links zu Informationen im Bezug auf Debian für " +"Debian-Mitglieder und Paketbetreuer erzeugt werden." + +#: debianmemberportfolio/templates/base.html:39 +msgid "AGPL - Free Software" +msgstr "AGPL - Freie Software" + +#: debianmemberportfolio/templates/base.html:40 +#, python-format +msgid "" +"The service is available under the terms of the GNU Affero General Public License as published by " +"the Free Software Foundation, either version 3 of the License, or (at your " +"option) any later version. You can browse the source code or clone it from %(cloneurl)s using git. If you want to translate this service to " +"your language you can contribute at Weblate." +msgstr "" +"Dieser Dienst wird unter den Bedingungen der GNU Affero General Public License, so wie sie von " +"der Free Software Foundation veröffentlicht ist, bereitgestellt. Sie können " +"entweder Version 3 oder (auf Ihren Wunsch hin) jede spätere Version der " +"Lizenz verwenden. Sie können sich den Quelltext ansehen oder mit git von " +"%(cloneurl)s klonen. Wenn Sie diesen Service in Ihre Sprache übersetzen " +"möchten, können Sie auf Weblate dazu beitragen." + +# | msgid "Copyright © 2009-2018 Jan Dittberner" +#: debianmemberportfolio/templates/base.html:41 +#| msgid "Copyright © 2009-2019 Jan Dittberner" +msgid "Copyright © 2009-2020 Jan Dittberner" +msgstr "Copyright © 2009-2020 Jan Dittberner" + +#: debianmemberportfolio/templates/showform.html:22 +msgid "Enter your personal information" +msgstr "Eingabe der persönlichen Informationen" + +#: debianmemberportfolio/templates/showform.html:29 +msgid "Debian Member Portfolio" +msgstr "Debian-Mitglieder-Portfolioservice" + +#: debianmemberportfolio/templates/showform.html:31 +msgid "Email address:" +msgstr "E-Mailadresse:" + +#: debianmemberportfolio/templates/showform.html:40 +msgid "Show all form fields" +msgstr "Alle Formularfelder anzeigen" + +#: debianmemberportfolio/templates/showform.html:43 +msgid "Name:" +msgstr "Name:" + +#: debianmemberportfolio/templates/showform.html:50 +msgid "GPG fingerprint:" +msgstr "GPG-Fingerabdruck:" + +#: debianmemberportfolio/templates/showform.html:57 +msgid "Debian user name:" +msgstr "Debian-Benutzername:" + +#: debianmemberportfolio/templates/showform.html:64 +msgid "Non Debian email address:" +msgstr "Nicht-Debian-E-Mailadresse:" + +#: debianmemberportfolio/templates/showform.html:71 +msgid "Salsa user name:" +msgstr "Salsa-Benutzername:" + +#: debianmemberportfolio/templates/showform.html:78 +msgid "Wiki user name:" +msgstr "Wiki-Benutzername:" + +#: debianmemberportfolio/templates/showform.html:85 +msgid "Forum user id:" +msgstr "Forumsbenutzernummer:" + +#: debianmemberportfolio/templates/showform.html:92 +msgid "Output format:" +msgstr "Ausgabeformat:" + +#: debianmemberportfolio/templates/showform.html:99 +msgid "Build Debian Member Portfolio URLs" +msgstr "Debian-Mitgliedsportfolio-URLs bauen" + +#: debianmemberportfolio/templates/showurls.html:21 +msgid "Your personal links" +msgstr "Ihre personalisierten Links" + +#: debianmemberportfolio/templates/showurls.html:25 +msgid "Debian Member Porfolio" +msgstr "Debian-Mitgliederportfolio" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "Usage" +msgstr "Verwendung" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "URL" +msgstr "URL" + +#: debianmemberportfolio/templates/showurls.html:38 +msgid "Error during URL creation:" +msgstr "Fehler bei der URL-Erzeugung:" + +#: debianmemberportfolio/templates/showurls.html:59 +msgid "Restart" +msgstr "Neu beginnen" diff --git a/debianmemberportfolio/translations/el/LC_MESSAGES/messages.po b/debianmemberportfolio/translations/el/LC_MESSAGES/messages.po new file mode 100644 index 0000000..c6cffbf --- /dev/null +++ b/debianmemberportfolio/translations/el/LC_MESSAGES/messages.po @@ -0,0 +1,411 @@ +# German translations for the Debian Member Portfolio Service. +# +# Copyright (C) 2009-2014 Jan Dittberner +# This file is distributed under the same license as the Debian Member +# Portfolio Service project. +# Translators: +# Jan Dittberner , 2009-2014 +msgid "" +msgstr "" +"Project-Id-Version: Debian Member Portfolio Service 0.3.1\n" +"Report-Msgid-Bugs-To: jan@dittberner.info\n" +"POT-Creation-Date: 2018-05-12 10:32+0200\n" +"PO-Revision-Date: 2019-06-26 21:00+0000\n" +"Last-Translator: THANOS SIOURDAKIS \n" +"Language-Team: Greek \n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.7.1-dev\n" +"Generated-By: Babel 2.5.0\n" + +#: debianmemberportfolio/forms.py:67 +msgid "JSON" +msgstr "JSON" + +#: debianmemberportfolio/forms.py:67 +msgid "HTML" +msgstr "HTML" + +#: debianmemberportfolio/views.py:40 +msgid "Overview" +msgstr "Επισκόπηση" + +#: debianmemberportfolio/views.py:41 +msgid "Debian Member's Package Overview" +msgstr "" + +#: debianmemberportfolio/views.py:42 +msgid "" +"Debian Member's Package Overview\n" +"... showing all email addresses" +msgstr "" + +#: debianmemberportfolio/views.py:46 +msgid "Bugs" +msgstr "" + +#: debianmemberportfolio/views.py:47 +msgid "" +"bugs received\n" +"(note: co-maintainers not listed, see #430986)" +msgstr "" + +#: debianmemberportfolio/views.py:51 +msgid "bugs reported" +msgstr "" + +#: debianmemberportfolio/views.py:52 +msgid "user tags" +msgstr "" + +#: debianmemberportfolio/views.py:53 +msgid "all messages (i.e., full text search for developer name on all bug logs)" +msgstr "" + +#: debianmemberportfolio/views.py:55 +msgid "WNPP" +msgstr "" + +#: debianmemberportfolio/views.py:56 +msgid "correspondent for bugs" +msgstr "" + +#: debianmemberportfolio/views.py:57 +msgid "one year open bug history graph" +msgstr "" + +#: debianmemberportfolio/views.py:60 +msgid "Build" +msgstr "" + +#: debianmemberportfolio/views.py:61 +msgid "buildd.d.o" +msgstr "" + +#: debianmemberportfolio/views.py:62 +msgid "igloo" +msgstr "" + +#: debianmemberportfolio/views.py:65 +msgid "Quality Assurance" +msgstr "" + +#: debianmemberportfolio/views.py:66 +msgid "maintainer dashboard" +msgstr "" + +#: debianmemberportfolio/views.py:67 +msgid "lintian reports" +msgstr "" + +#: debianmemberportfolio/views.py:68 +msgid "full lintian reports (i.e. including \"info\"-level messages)" +msgstr "" + +#: debianmemberportfolio/views.py:70 +msgid "piuparts" +msgstr "" + +#: debianmemberportfolio/views.py:71 +msgid "Debian patch tracking system" +msgstr "" + +#: debianmemberportfolio/views.py:72 +msgid "Debian Url ChecKer" +msgstr "" + +#: debianmemberportfolio/views.py:75 +msgid "Mailing Lists" +msgstr "" + +#: debianmemberportfolio/views.py:76 +msgid "lists.d.o" +msgstr "" + +#: debianmemberportfolio/views.py:77 +msgid "lists.a.d.o" +msgstr "" + +#: debianmemberportfolio/views.py:78 +msgid "gmane" +msgstr "" + +#: debianmemberportfolio/views.py:81 +msgid "Files" +msgstr "" + +#: debianmemberportfolio/views.py:82 +msgid "people.d.o" +msgstr "" + +#: debianmemberportfolio/views.py:83 +msgid "oldpeople" +msgstr "" + +#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:93 +msgid "Alioth" +msgstr "" + +#: debianmemberportfolio/views.py:87 +msgid "Membership" +msgstr "" + +#: debianmemberportfolio/views.py:88 +msgid "NM" +msgstr "" + +#: debianmemberportfolio/views.py:89 +msgid "DB information via finger" +msgstr "" + +#: debianmemberportfolio/views.py:90 +msgid "DB information via HTTP" +msgstr "" + +#: debianmemberportfolio/views.py:91 +msgid "FOAF profile" +msgstr "" + +#: debianmemberportfolio/views.py:92 +msgid "Salsa" +msgstr "" + +#: debianmemberportfolio/views.py:94 +msgid "Wiki" +msgstr "" + +#: debianmemberportfolio/views.py:95 +msgid "Forum" +msgstr "" + +#: debianmemberportfolio/views.py:98 +msgid "Miscellaneous" +msgstr "" + +#: debianmemberportfolio/views.py:99 +msgid "debtags" +msgstr "" + +#: debianmemberportfolio/views.py:100 +msgid "Planet Debian (name)" +msgstr "" + +#: debianmemberportfolio/views.py:101 +msgid "Planet Debian (username)" +msgstr "" + +#: debianmemberportfolio/views.py:102 +msgid "links" +msgstr "" + +#: debianmemberportfolio/views.py:103 +msgid "Debian website" +msgstr "" + +#: debianmemberportfolio/views.py:104 +msgid "Debian search" +msgstr "" + +#: debianmemberportfolio/views.py:105 +msgid "GPG public key via finger" +msgstr "" + +#: debianmemberportfolio/views.py:106 +msgid "GPG public key via HTTP" +msgstr "" + +#: debianmemberportfolio/views.py:107 +msgid "NM, AM participation" +msgstr "" + +#: debianmemberportfolio/views.py:108 +msgid "Contribution information" +msgstr "" + +#: debianmemberportfolio/views.py:109 +msgid "Repology information" +msgstr "" + +#: debianmemberportfolio/views.py:112 +msgid "Information reachable via ssh (for Debian Members)" +msgstr "" + +#: debianmemberportfolio/views.py:113 +msgid "owned debian.net domains" +msgstr "" + +#: debianmemberportfolio/views.py:114 +msgid "" +"MIA database " +"information" +msgstr "" + +#: debianmemberportfolio/views.py:116 +msgid "Group membership information" +msgstr "" + +#: debianmemberportfolio/views.py:119 +msgid "Ubuntu" +msgstr "" + +#: debianmemberportfolio/views.py:120 +msgid "Available patches from Ubuntu" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:43 +msgid "Email address" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:44 +msgid "Name" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:45 +msgid "GPG fingerprint" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:46 +msgid "Debian user name" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:47 +msgid "Non Debian email address" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:48 +msgid "Salsa user name" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:49 +msgid "Alioth user name" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:110 +#: debianmemberportfolio/model/urlbuilder.py:114 +#, python-format +msgid "Missing input: %s" +msgstr "" + +#: debianmemberportfolio/templates/base.html:24 +#: debianmemberportfolio/templates/base.html:31 +msgid "Debian Member Portfolio Service" +msgstr "" + +#: debianmemberportfolio/templates/base.html:30 +msgid "Debian Logo" +msgstr "" + +#: debianmemberportfolio/templates/base.html:32 +msgid "" +"This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can " +"create a set of customized links leading to a Debian Member's or package " +"maintainer's information regarding Debian." +msgstr "" + +#: debianmemberportfolio/templates/base.html:39 +msgid "AGPL - Free Software" +msgstr "" + +#: debianmemberportfolio/templates/base.html:40 +#, python-format +msgid "" +"The service is available under the terms of the GNU Affero General Public License as published by " +"the Free Software Foundation, either version 3 of the License, or (at your " +"option) any later version. You can browse the source code or clone it from %(cloneurl)s using git. If you want to translate this service to " +"your language you can contribute at Weblate." +msgstr "" + +#: debianmemberportfolio/templates/base.html:41 +msgid "Copyright © 2009-2018 Jan Dittberner" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:22 +msgid "Enter your personal information" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:29 +msgid "Debian Member Portfolio" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:31 +msgid "Email address:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:40 +msgid "Show all form fields" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:43 +msgid "Name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:50 +msgid "GPG fingerprint:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:57 +msgid "Debian user name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:64 +msgid "Non Debian email address:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:71 +msgid "Salsa user name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:78 +msgid "Alioth user name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:85 +msgid "Wiki user name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:92 +msgid "Forum user id:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:99 +msgid "Output format:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:106 +msgid "Build Debian Member Portfolio URLs" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:21 +msgid "Your personal links" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:25 +msgid "Debian Member Porfolio" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "Usage" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "URL" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:38 +msgid "Error during URL creation:" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:59 +msgid "Restart" +msgstr "" diff --git a/debianmemberportfolio/translations/es/LC_MESSAGES/messages.po b/debianmemberportfolio/translations/es/LC_MESSAGES/messages.po new file mode 100644 index 0000000..20de512 --- /dev/null +++ b/debianmemberportfolio/translations/es/LC_MESSAGES/messages.po @@ -0,0 +1,437 @@ +# German translations for the Debian Member Portfolio Service. +# +# Copyright (C) 2009-2014 Jan Dittberner +# This file is distributed under the same license as the Debian Member +# Portfolio Service project. +# Translators: +# Jan Dittberner , 2009-2014 +msgid "" +msgstr "" +"Project-Id-Version: Debian Member Portfolio Service 0.3.1\n" +"Report-Msgid-Bugs-To: jan@dittberner.info\n" +"POT-Creation-Date: 2018-05-12 10:32+0200\n" +"PO-Revision-Date: 2019-12-19 04:21+0000\n" +"Last-Translator: Adolfo Jayme Barrientos \n" +"Language-Team: Spanish \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.10-dev\n" +"Generated-By: Babel 2.5.0\n" + +#: debianmemberportfolio/forms.py:67 +msgid "JSON" +msgstr "JSON" + +#: debianmemberportfolio/forms.py:67 +msgid "HTML" +msgstr "HTML" + +#: debianmemberportfolio/views.py:40 +msgid "Overview" +msgstr "Visión general" + +#: debianmemberportfolio/views.py:41 +msgid "Debian Member's Package Overview" +msgstr "Visión general de paquetes del miembro de Debian" + +#: debianmemberportfolio/views.py:42 +msgid "" +"Debian Member's Package Overview\n" +"... showing all email addresses" +msgstr "" +"Visión general de paquetes del miembro de Debian\n" +"… se muestran todas las direcciones de correo" + +#: debianmemberportfolio/views.py:46 +msgid "Bugs" +msgstr "Fallos" + +#: debianmemberportfolio/views.py:47 +msgid "" +"bugs received\n" +"(note: co-maintainers not listed, see #430986)" +msgstr "" +"fallos recibidos\n" +"(nota: no se muestran los corresponsables; véase el informe n.º 430986)" + +#: debianmemberportfolio/views.py:51 +msgid "bugs reported" +msgstr "fallos informados" + +#: debianmemberportfolio/views.py:52 +msgid "user tags" +msgstr "etiquetas de usuario" + +#: debianmemberportfolio/views.py:53 +msgid "all messages (i.e., full text search for developer name on all bug logs)" +msgstr "" +"todos los mensajes (esto es, búsqueda de texto completo del nombre de " +"desarrollador/a en todos los registros de informes)" + +#: debianmemberportfolio/views.py:55 +msgid "WNPP" +msgstr "WNPP" + +#: debianmemberportfolio/views.py:56 +msgid "correspondent for bugs" +msgstr "contacto para fallos" + +#: debianmemberportfolio/views.py:57 +msgid "one year open bug history graph" +msgstr "gráfico de histórico anual de informes de error abiertos" + +#: debianmemberportfolio/views.py:60 +msgid "Build" +msgstr "Generación de paquetes" + +#: debianmemberportfolio/views.py:61 +msgid "buildd.d.o" +msgstr "buildd.d.o" + +#: debianmemberportfolio/views.py:62 +msgid "igloo" +msgstr "" + +#: debianmemberportfolio/views.py:65 +msgid "Quality Assurance" +msgstr "Control de calidad" + +#: debianmemberportfolio/views.py:66 +msgid "maintainer dashboard" +msgstr "tablero de responsable" + +#: debianmemberportfolio/views.py:67 +msgid "lintian reports" +msgstr "informes de lintian" + +#: debianmemberportfolio/views.py:68 +msgid "full lintian reports (i.e. including \"info\"-level messages)" +msgstr "" +"informes íntegros de lintian (es decir, incluyen mensajes de nivel «info»)" + +#: debianmemberportfolio/views.py:70 +msgid "piuparts" +msgstr "" + +#: debianmemberportfolio/views.py:71 +msgid "Debian patch tracking system" +msgstr "Sistema de control de parches de Debian" + +#: debianmemberportfolio/views.py:72 +msgid "Debian Url ChecKer" +msgstr "Comprobador de URL de Debian (DUCK)" + +#: debianmemberportfolio/views.py:75 +msgid "Mailing Lists" +msgstr "Listas de correo" + +#: debianmemberportfolio/views.py:76 +msgid "lists.d.o" +msgstr "" + +#: debianmemberportfolio/views.py:77 +msgid "lists.a.d.o" +msgstr "" + +#: debianmemberportfolio/views.py:78 +msgid "gmane" +msgstr "" + +#: debianmemberportfolio/views.py:81 +msgid "Files" +msgstr "Archivos" + +#: debianmemberportfolio/views.py:82 +msgid "people.d.o" +msgstr "" + +#: debianmemberportfolio/views.py:83 +msgid "oldpeople" +msgstr "" + +#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:93 +msgid "Alioth" +msgstr "Alioth" + +#: debianmemberportfolio/views.py:87 +msgid "Membership" +msgstr "Membresía" + +#: debianmemberportfolio/views.py:88 +msgid "NM" +msgstr "" + +#: debianmemberportfolio/views.py:89 +msgid "DB information via finger" +msgstr "Información de BD a través de Finger" + +#: debianmemberportfolio/views.py:90 +msgid "DB information via HTTP" +msgstr "Información de BD a través de HTTP" + +#: debianmemberportfolio/views.py:91 +msgid "FOAF profile" +msgstr "Perfil de FOAF" + +#: debianmemberportfolio/views.py:92 +msgid "Salsa" +msgstr "Salsa" + +#: debianmemberportfolio/views.py:94 +msgid "Wiki" +msgstr "Wiki" + +#: debianmemberportfolio/views.py:95 +msgid "Forum" +msgstr "Foro" + +#: debianmemberportfolio/views.py:98 +msgid "Miscellaneous" +msgstr "Varios" + +#: debianmemberportfolio/views.py:99 +msgid "debtags" +msgstr "" + +#: debianmemberportfolio/views.py:100 +msgid "Planet Debian (name)" +msgstr "Planet Debian (nombre)" + +#: debianmemberportfolio/views.py:101 +msgid "Planet Debian (username)" +msgstr "Planet Debian (nombre de usuario)" + +#: debianmemberportfolio/views.py:102 +msgid "links" +msgstr "enlaces" + +#: debianmemberportfolio/views.py:103 +msgid "Debian website" +msgstr "Sitio web de Debian" + +#: debianmemberportfolio/views.py:104 +msgid "Debian search" +msgstr "Búsqueda en Debian" + +#: debianmemberportfolio/views.py:105 +msgid "GPG public key via finger" +msgstr "Clave pública de GPG a través de Finger" + +#: debianmemberportfolio/views.py:106 +msgid "GPG public key via HTTP" +msgstr "Clave pública de GPG a través de HTTP" + +#: debianmemberportfolio/views.py:107 +msgid "NM, AM participation" +msgstr "Participación en NM y AM" + +#: debianmemberportfolio/views.py:108 +msgid "Contribution information" +msgstr "Información de contribución" + +#: debianmemberportfolio/views.py:109 +msgid "Repology information" +msgstr "Información de Repology" + +#: debianmemberportfolio/views.py:112 +msgid "Information reachable via ssh (for Debian Members)" +msgstr "Información accesible a través de SSH (para miembros de Debian)" + +#: debianmemberportfolio/views.py:113 +msgid "owned debian.net domains" +msgstr "titularidad de dominios debian.net" + +#: debianmemberportfolio/views.py:114 +msgid "" +"MIA database " +"information" +msgstr "" +"Información de la base de datos MIA" + +#: debianmemberportfolio/views.py:116 +msgid "Group membership information" +msgstr "Información de membresía a grupos" + +#: debianmemberportfolio/views.py:119 +msgid "Ubuntu" +msgstr "Ubuntu" + +#: debianmemberportfolio/views.py:120 +msgid "Available patches from Ubuntu" +msgstr "Parches de Ubuntu disponibles" + +#: debianmemberportfolio/model/urlbuilder.py:43 +msgid "Email address" +msgstr "Dirección de correo" + +#: debianmemberportfolio/model/urlbuilder.py:44 +msgid "Name" +msgstr "Nombre" + +#: debianmemberportfolio/model/urlbuilder.py:45 +msgid "GPG fingerprint" +msgstr "Huella GPG" + +#: debianmemberportfolio/model/urlbuilder.py:46 +msgid "Debian user name" +msgstr "Nombre de usuario de Debian" + +#: debianmemberportfolio/model/urlbuilder.py:47 +msgid "Non Debian email address" +msgstr "Direcciones de correo no de Debian" + +#: debianmemberportfolio/model/urlbuilder.py:48 +msgid "Salsa user name" +msgstr "Nombre de usuario de Salsa" + +#: debianmemberportfolio/model/urlbuilder.py:49 +msgid "Alioth user name" +msgstr "Nombre de usuario de Alioth" + +#: debianmemberportfolio/model/urlbuilder.py:110 +#: debianmemberportfolio/model/urlbuilder.py:114 +#, python-format +msgid "Missing input: %s" +msgstr "Falta la entrada: %s" + +#: debianmemberportfolio/templates/base.html:24 +#: debianmemberportfolio/templates/base.html:31 +msgid "Debian Member Portfolio Service" +msgstr "Servicio de portafolios para miembros de Debian" + +#: debianmemberportfolio/templates/base.html:30 +msgid "Debian Logo" +msgstr "Logotipo de Debian" + +#: debianmemberportfolio/templates/base.html:32 +msgid "" +"This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can " +"create a set of customized links leading to a Debian Member's or package " +"maintainer's information regarding Debian." +msgstr "" +"La inspiración para este servicio provino de la página «DDPortfolio» del wiki de " +"Debian, ideada por Stefano Zacchiroli. Puede crear un juego de enlaces " +"personalizados que apunten a la información relacionada con Debian sobre un/" +"a miembro del proyecto o responsable de paquete." + +#: debianmemberportfolio/templates/base.html:39 +msgid "AGPL - Free Software" +msgstr "AGPL: «software» libre" + +#: debianmemberportfolio/templates/base.html:40 +#, python-format +msgid "" +"The service is available under the terms of the GNU Affero General Public License as published by " +"the Free Software Foundation, either version 3 of the License, or (at your " +"option) any later version. You can browse the source code or clone it from %(cloneurl)s using git. If you want to translate this service to " +"your language you can contribute at Weblate." +msgstr "" +"El servicio se pone a su disposición en virtud de los términos de la Licencia Pública General Affero " +"de GNU, tal como la publica al Free Software Foundation, sea bien la " +"versión 3 de la Licencia o bien cualquier otra versión posterior de su " +"preferencia. Puede explorar el código fuente o clonarlo desde %(cloneurl)s" +" sirviéndose de git. Si quiere " +"contribuir traduciendo este servicio a su lengua, puede hacerlo a través de <" +"a href=\"%(weblateurl)s\" title=\"Servicio de portafolios de miembros de " +"Debian en Weblate\">Weblate." + +#: debianmemberportfolio/templates/base.html:41 +msgid "Copyright © 2009-2018 Jan Dittberner" +msgstr "Derechos de autor © 2009-2018 Jan Dittberner" + +#: debianmemberportfolio/templates/showform.html:22 +msgid "Enter your personal information" +msgstr "Proporcione su información personal" + +#: debianmemberportfolio/templates/showform.html:29 +msgid "Debian Member Portfolio" +msgstr "Portafolio de miembro de Debian" + +#: debianmemberportfolio/templates/showform.html:31 +msgid "Email address:" +msgstr "Dirección de correo:" + +#: debianmemberportfolio/templates/showform.html:40 +msgid "Show all form fields" +msgstr "Mostrar todos los campos del formulario" + +#: debianmemberportfolio/templates/showform.html:43 +msgid "Name:" +msgstr "Nombre:" + +#: debianmemberportfolio/templates/showform.html:50 +msgid "GPG fingerprint:" +msgstr "Huella GPG:" + +#: debianmemberportfolio/templates/showform.html:57 +msgid "Debian user name:" +msgstr "Nombre de usuario de Debian:" + +#: debianmemberportfolio/templates/showform.html:64 +msgid "Non Debian email address:" +msgstr "Dirección de correo no de Debian:" + +#: debianmemberportfolio/templates/showform.html:71 +msgid "Salsa user name:" +msgstr "Nombre de usuario de Salsa:" + +#: debianmemberportfolio/templates/showform.html:78 +msgid "Alioth user name:" +msgstr "Nombre de usuario de Alioth:" + +#: debianmemberportfolio/templates/showform.html:85 +msgid "Wiki user name:" +msgstr "Nombre de usuario del wiki:" + +#: debianmemberportfolio/templates/showform.html:92 +msgid "Forum user id:" +msgstr "Identificador de usuario del foro:" + +#: debianmemberportfolio/templates/showform.html:99 +msgid "Output format:" +msgstr "Formato de salida:" + +#: debianmemberportfolio/templates/showform.html:106 +msgid "Build Debian Member Portfolio URLs" +msgstr "Crear los URL para portafolio de miembro de Debian" + +#: debianmemberportfolio/templates/showurls.html:21 +msgid "Your personal links" +msgstr "Sus enlaces personales" + +#: debianmemberportfolio/templates/showurls.html:25 +msgid "Debian Member Porfolio" +msgstr "Portafolio de miembro de Debian" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "Usage" +msgstr "Uso" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "URL" +msgstr "URL" + +#: debianmemberportfolio/templates/showurls.html:38 +msgid "Error during URL creation:" +msgstr "Se produjo un error al crear el URL:" + +#: debianmemberportfolio/templates/showurls.html:59 +msgid "Restart" +msgstr "Reiniciar" diff --git a/debianmemberportfolio/translations/fr/LC_MESSAGES/messages.po b/debianmemberportfolio/translations/fr/LC_MESSAGES/messages.po new file mode 100644 index 0000000..df08b9c --- /dev/null +++ b/debianmemberportfolio/translations/fr/LC_MESSAGES/messages.po @@ -0,0 +1,430 @@ +# French translations for the Debian Member Portfolio Service +# +# Copyright (C) 2012 Stéphane Aulery +# This file is distributed under the same license as the Debian Member +# Portfolio Service project. +# Translators: +# Stéphane Aulery , 2012. +msgid "" +msgstr "" +"Project-Id-Version: Debian Member Portfolio Service\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2018-02-09 10:14+0100\n" +"PO-Revision-Date: 2019-09-17 14:24+0000\n" +"Last-Translator: Adolfo Jayme Barrientos \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.9-dev\n" +"Generated-By: Babel 2.5.0\n" + +#: debianmemberportfolio/forms.py:67 +msgid "JSON" +msgstr "JSON" + +#: debianmemberportfolio/forms.py:67 +msgid "HTML" +msgstr "HTML" + +#: debianmemberportfolio/views.py:40 +msgid "Overview" +msgstr "Vue d'ensemble" + +#: debianmemberportfolio/views.py:41 +msgid "Debian Member's Package Overview" +msgstr "Vue d'ensemble des paquets du membre Debian" + +#: debianmemberportfolio/views.py:42 +msgid "" +"Debian Member's Package Overview\n" +"... showing all email addresses" +msgstr "" +"Vue d'ensemble des paquets du membre Debian\n" +"... affichage de tous les courriels" + +#: debianmemberportfolio/views.py:46 +msgid "Bugs" +msgstr "Bogues" + +#: debianmemberportfolio/views.py:47 +msgid "" +"bugs received\n" +"(note: co-maintainers not listed, see #430986)" +msgstr "" +"Bogues reçus\n" +"(note : co-responsables non listés, voir #430986)" + +#: debianmemberportfolio/views.py:51 +msgid "bugs reported" +msgstr "Bogues rapportés" + +#: debianmemberportfolio/views.py:52 +msgid "user tags" +msgstr "Tags utilisateur" + +#: debianmemberportfolio/views.py:53 +msgid "all messages (i.e., full text search for developer name on all bug logs)" +msgstr "" +"Tous les messages (c-à-d, recherche plein texte sur le nom du développeur dans " +"tous les journaux de bogue)" + +#: debianmemberportfolio/views.py:55 +msgid "WNPP" +msgstr "WNPP" + +#: debianmemberportfolio/views.py:56 +msgid "correspondent for bugs" +msgstr "Correspondant pour les bogues" + +#: debianmemberportfolio/views.py:57 +msgid "one year open bug history graph" +msgstr "Graphique de l'évolution des bogues ouverts sur l'année écoulée" + +#: debianmemberportfolio/views.py:60 +msgid "Build" +msgstr "Construire" + +#: debianmemberportfolio/views.py:61 +msgid "buildd.d.o" +msgstr "buildd.d.o" + +#: debianmemberportfolio/views.py:62 +msgid "igloo" +msgstr "igloo" + +#: debianmemberportfolio/views.py:65 +msgid "Quality Assurance" +msgstr "Assurance qualité" + +#: debianmemberportfolio/views.py:66 +msgid "maintainer dashboard" +msgstr "tableau de bord du mainteneur" + +#: debianmemberportfolio/views.py:67 +msgid "lintian reports" +msgstr "Rapports lintian" + +#: debianmemberportfolio/views.py:68 +msgid "full lintian reports (i.e. including \"info\"-level messages)" +msgstr "Rapports lintian complets (c-à-d incluant les messages de niveau \"info\")" + +#: debianmemberportfolio/views.py:70 +msgid "piuparts" +msgstr "Piuparts" + +#: debianmemberportfolio/views.py:71 +msgid "Debian patch tracking system" +msgstr "Système de suivi des patchs de Debian" + +#: debianmemberportfolio/views.py:72 +msgid "Debian Url ChecKer" +msgstr "Vérificateur d'Url Debian" + +#: debianmemberportfolio/views.py:75 +msgid "Mailing Lists" +msgstr "Listes de diffusion" + +#: debianmemberportfolio/views.py:76 +msgid "lists.d.o" +msgstr "lists.d.o" + +#: debianmemberportfolio/views.py:77 +msgid "lists.a.d.o" +msgstr "lists.a.d.o" + +#: debianmemberportfolio/views.py:78 +msgid "gmane" +msgstr "Gmane" + +#: debianmemberportfolio/views.py:81 +msgid "Files" +msgstr "Fichiers" + +#: debianmemberportfolio/views.py:82 +msgid "people.d.o" +msgstr "people.d.o" + +#: debianmemberportfolio/views.py:83 +msgid "oldpeople" +msgstr "anciens" + +#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:93 +msgid "Alioth" +msgstr "Alioth" + +#: debianmemberportfolio/views.py:87 +msgid "Membership" +msgstr "Adhésion" + +#: debianmemberportfolio/views.py:88 +msgid "NM" +msgstr "NM" + +#: debianmemberportfolio/views.py:89 +msgid "DB information via finger" +msgstr "BD d’informations via finger" + +#: debianmemberportfolio/views.py:90 +msgid "DB information via HTTP" +msgstr "BD d’informations via HTTP" + +#: debianmemberportfolio/views.py:91 +msgid "FOAF profile" +msgstr "profil FOAF" + +#: debianmemberportfolio/views.py:92 +msgid "Salsa" +msgstr "Salsa" + +#: debianmemberportfolio/views.py:94 +msgid "Wiki" +msgstr "Wiki" + +#: debianmemberportfolio/views.py:95 +msgid "Forum" +msgstr "Forum" + +#: debianmemberportfolio/views.py:98 +msgid "Miscellaneous" +msgstr "Divers" + +#: debianmemberportfolio/views.py:99 +msgid "debtags" +msgstr "Debtags" + +#: debianmemberportfolio/views.py:100 +msgid "Planet Debian (name)" +msgstr "Planet Debian (nom)" + +#: debianmemberportfolio/views.py:101 +msgid "Planet Debian (username)" +msgstr "Planet Debian (nom d’utilisateur)" + +#: debianmemberportfolio/views.py:102 +msgid "links" +msgstr "Liens" + +#: debianmemberportfolio/views.py:103 +msgid "Debian website" +msgstr "Site web de Debian" + +#: debianmemberportfolio/views.py:104 +msgid "Debian search" +msgstr "Recherche Debian" + +#: debianmemberportfolio/views.py:105 +msgid "GPG public key via finger" +msgstr "Clef GPG publique via finger" + +#: debianmemberportfolio/views.py:106 +msgid "GPG public key via HTTP" +msgstr "Clef GPG publique via HTTP" + +#: debianmemberportfolio/views.py:107 +msgid "NM, AM participation" +msgstr "participation NM, AM" + +#: debianmemberportfolio/views.py:108 +msgid "Contribution information" +msgstr "Informations de contribution" + +#: debianmemberportfolio/views.py:111 +msgid "Information reachable via ssh (for Debian Members)" +msgstr "Informations accessibles via ssh (pour les membres de Debian)" + +#: debianmemberportfolio/views.py:112 +msgid "owned debian.net domains" +msgstr "Propriété des domaines debian.net" + +#: debianmemberportfolio/views.py:113 +msgid "" +"MIA database " +"information" +msgstr "" +"Informations de la base de données MIA" + +#: debianmemberportfolio/views.py:115 +msgid "Group membership information" +msgstr "Information sur l’adhésion de groupe" + +#: debianmemberportfolio/views.py:118 +msgid "Ubuntu" +msgstr "Ubuntu" + +#: debianmemberportfolio/views.py:119 +msgid "Available patches from Ubuntu" +msgstr "Rustines d’Ubuntu disponibles" + +#: debianmemberportfolio/model/urlbuilder.py:43 +msgid "Email address" +msgstr "Courriel" + +#: debianmemberportfolio/model/urlbuilder.py:44 +msgid "Name" +msgstr "Nom" + +#: debianmemberportfolio/model/urlbuilder.py:45 +msgid "GPG fingerprint" +msgstr "Empreinte GPG" + +#: debianmemberportfolio/model/urlbuilder.py:46 +msgid "Debian user name" +msgstr "Nom d’utilisateur Debian" + +#: debianmemberportfolio/model/urlbuilder.py:47 +msgid "Non Debian email address" +msgstr "Courriel hors Debian" + +#: debianmemberportfolio/model/urlbuilder.py:48 +msgid "Salsa user name" +msgstr "Nom d’utilisateur Salsa" + +#: debianmemberportfolio/model/urlbuilder.py:49 +msgid "Alioth user name" +msgstr "Nom d’utilisateur Alioth" + +#: debianmemberportfolio/model/urlbuilder.py:110 +#: debianmemberportfolio/model/urlbuilder.py:114 +#, python-format +msgid "Missing input: %s" +msgstr "Entrée manquante : %s" + +#: debianmemberportfolio/templates/base.html:24 +#: debianmemberportfolio/templates/base.html:31 +msgid "Debian Member Portfolio Service" +msgstr "Service de portefeuille des membres de Debian" + +#: debianmemberportfolio/templates/base.html:30 +msgid "Debian Logo" +msgstr "Logo Debian" + +#: debianmemberportfolio/templates/base.html:32 +msgid "" +"This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can create " +"a set of customized links leading to a Debian Member's or package maintainer's " +"information regarding Debian." +msgstr "" +"Ce service a été inspiré par la " +"page DDPortfolio du Wiki de Debian de Stefano Zacchiroli. Vous pouvez créer " +"un ensemble personnalisé de liens fournissant des informations sur un membre ou " +"un mainteneur de paquet de Debian." + +#: debianmemberportfolio/templates/base.html:39 +msgid "AGPL - Free Software" +msgstr "AGPL - Logiciel libre" + +#: debianmemberportfolio/templates/base.html:40 +#, python-format +msgid "" +"The service is available under the terms of the GNU Affero General Public License as published by the " +"Free Software Foundation, either version 3 of the License, or (at your option) " +"any later version. You can browse the source code or clone it from %(cloneurl)s using git. If you want to translate this service to your language you can " +"contribute at Weblate." +msgstr "" +"Ce service est disponible sous les termes de la licence GNU Affero General Public " +"License telle que publiée par la Free Software Foundation, soit la " +"version 3 de la licence, ou (à votre choix) toute version ultérieure. Vous " +"pouvez " +"parcourir le code source ou le cloner depuis %(cloneurl)s en utilisant git. Si vous voulez traduire ce service dans votre langage, " +"vous pouvez contribuer chez Weblate." + +#: debianmemberportfolio/templates/base.html:41 +msgid "Copyright © 2009-2018 Jan Dittberner" +msgstr "Copyright © 2009-2018 Jan Dittberner" + +#: debianmemberportfolio/templates/showform.html:22 +msgid "Enter your personal information" +msgstr "Saisissez vos informations personnelles" + +#: debianmemberportfolio/templates/showform.html:29 +msgid "Debian Member Portfolio" +msgstr "Portefeuille d’un Membre de Debian" + +#: debianmemberportfolio/templates/showform.html:31 +msgid "Email address:" +msgstr "Courriel :" + +#: debianmemberportfolio/templates/showform.html:40 +msgid "Show all form fields" +msgstr "Afficher tous les champs du formulaire" + +#: debianmemberportfolio/templates/showform.html:43 +msgid "Name:" +msgstr "Nom :" + +#: debianmemberportfolio/templates/showform.html:50 +msgid "GPG fingerprint:" +msgstr "Empreinte GPG :" + +#: debianmemberportfolio/templates/showform.html:57 +msgid "Debian user name:" +msgstr "Nom d’utilisateur Debian :" + +#: debianmemberportfolio/templates/showform.html:64 +msgid "Non Debian email address:" +msgstr "Courriel hors Debian :" + +#: debianmemberportfolio/templates/showform.html:71 +msgid "Salsa user name:" +msgstr "Nom d’utilisateur Salsa :" + +#: debianmemberportfolio/templates/showform.html:78 +msgid "Alioth user name:" +msgstr "Nom d’utilisateur Alioth :" + +#: debianmemberportfolio/templates/showform.html:85 +msgid "Wiki user name:" +msgstr "Nom d’utilisateur Wiki :" + +#: debianmemberportfolio/templates/showform.html:92 +msgid "Forum user id:" +msgstr "Numéro d’utilisateur Forum :" + +#: debianmemberportfolio/templates/showform.html:99 +msgid "Output format:" +msgstr "Format de sortie :" + +#: debianmemberportfolio/templates/showform.html:106 +msgid "Build Debian Member Portfolio URLs" +msgstr "Construire les URLs du portefeuille du membre de Debian" + +#: debianmemberportfolio/templates/showurls.html:21 +msgid "Your personal links" +msgstr "Vos liens personnels" + +#: debianmemberportfolio/templates/showurls.html:25 +msgid "Debian Member Porfolio" +msgstr "Portefeuille d’un membre de Debian" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "Usage" +msgstr "Utilisation" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "URL" +msgstr "URL" + +#: debianmemberportfolio/templates/showurls.html:38 +msgid "Error during URL creation:" +msgstr "Erreur durant la création de l’URL :" + +#: debianmemberportfolio/templates/showurls.html:59 +msgid "Restart" +msgstr "Recommencer" diff --git a/debianmemberportfolio/translations/id/LC_MESSAGES/messages.po b/debianmemberportfolio/translations/id/LC_MESSAGES/messages.po new file mode 100644 index 0000000..587f9f9 --- /dev/null +++ b/debianmemberportfolio/translations/id/LC_MESSAGES/messages.po @@ -0,0 +1,435 @@ +# Indonesian translations for Debian Member Portfolio Service. +# +# Copyright (C) 2012 Izharul Haq +# This file is distributed under the same license as the Debian Member +# Portfolio Service project. +# Translators: +# Izharul Haq , 2012. +msgid "" +msgstr "" +"Project-Id-Version: Debian Member Portfolio Service\n" +"Report-Msgid-Bugs-To: atoz.chevara@yahoo.com\n" +"POT-Creation-Date: 2018-02-09 10:14+0100\n" +"PO-Revision-Date: 2018-02-09 10:29+0100\n" +"Last-Translator: Jan Dittberner \n" +"Language: id\n" +"Language-Team: Indonesian \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.5.0\n" +"X-Generator: Poedit 1.8.11\n" + +#: debianmemberportfolio/forms.py:67 +msgid "JSON" +msgstr "JSON" + +#: debianmemberportfolio/forms.py:67 +msgid "HTML" +msgstr "HTML" + +#: debianmemberportfolio/views.py:40 +msgid "Overview" +msgstr "Gambaran Umum" + +#: debianmemberportfolio/views.py:41 +msgid "Debian Member's Package Overview" +msgstr "Gambaran Umum Paket Anggota Debian" + +#: debianmemberportfolio/views.py:42 +msgid "" +"Debian Member's Package Overview\n" +"... showing all email addresses" +msgstr "" +"Gambaran Umum Paket Anggota Debian\n" +"... tampilkan semua alamat email" + +#: debianmemberportfolio/views.py:46 +msgid "Bugs" +msgstr "Kutu" + +#: debianmemberportfolio/views.py:47 +msgid "" +"bugs received\n" +"(note: co-maintainers not listed, see #430986)" +msgstr "" +"bugs diterima\n" +"(catatan: co-maintainers tidak tercantum, lihat #430986)" + +#: debianmemberportfolio/views.py:51 +msgid "bugs reported" +msgstr "melaporkan bug" + +#: debianmemberportfolio/views.py:52 +msgid "user tags" +msgstr "label pengguna" + +#: debianmemberportfolio/views.py:53 +msgid "all messages (i.e., full text search for developer name on all bug logs)" +msgstr "" +"semua pesan (yaitu, pencarian teks lengkap untuk nama pengembang pada semua " +"catatan bug)" + +#: debianmemberportfolio/views.py:55 +msgid "WNPP" +msgstr "WNPP" + +#: debianmemberportfolio/views.py:56 +msgid "correspondent for bugs" +msgstr "koresponden untuk bug" + +#: debianmemberportfolio/views.py:57 +msgid "one year open bug history graph" +msgstr "grafik perkembangan laporan bug terbuka lebih dari setahun" + +#: debianmemberportfolio/views.py:60 +msgid "Build" +msgstr "Bangun" + +#: debianmemberportfolio/views.py:61 +msgid "buildd.d.o" +msgstr "buildd.d.o" + +#: debianmemberportfolio/views.py:62 +msgid "igloo" +msgstr "igloo" + +#: debianmemberportfolio/views.py:65 +msgid "Quality Assurance" +msgstr "Jaminan Mutu" + +#: debianmemberportfolio/views.py:66 +msgid "maintainer dashboard" +msgstr "dasbor maintainer" + +#: debianmemberportfolio/views.py:67 +msgid "lintian reports" +msgstr "laporan lintian" + +#: debianmemberportfolio/views.py:68 +msgid "full lintian reports (i.e. including \"info\"-level messages)" +msgstr "seluruh pesan lintian (i.e. termasuk pesan \"info\"-level)" + +#: debianmemberportfolio/views.py:70 +msgid "piuparts" +msgstr "piuparts" + +#: debianmemberportfolio/views.py:71 +msgid "Debian patch tracking system" +msgstr "sistem pelacakan patch Debian" + +#: debianmemberportfolio/views.py:72 +msgid "Debian Url ChecKer" +msgstr "Debian Url ChecKer" + +#: debianmemberportfolio/views.py:75 +msgid "Mailing Lists" +msgstr "Milis" + +#: debianmemberportfolio/views.py:76 +msgid "lists.d.o" +msgstr "lists.d.o" + +#: debianmemberportfolio/views.py:77 +msgid "lists.a.d.o" +msgstr "lists.a.d.o" + +#: debianmemberportfolio/views.py:78 +msgid "gmane" +msgstr "gmane" + +#: debianmemberportfolio/views.py:81 +msgid "Files" +msgstr "Berkas-berkas" + +#: debianmemberportfolio/views.py:82 +msgid "people.d.o" +msgstr "people.d.o" + +#: debianmemberportfolio/views.py:83 +msgid "oldpeople" +msgstr "oldpeople" + +#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:93 +msgid "Alioth" +msgstr "Alioth" + +#: debianmemberportfolio/views.py:87 +msgid "Membership" +msgstr "Keanggotaan" + +#: debianmemberportfolio/views.py:88 +msgid "NM" +msgstr "NM" + +#: debianmemberportfolio/views.py:89 +msgid "DB information via finger" +msgstr "informasi DB melalui finger" + +#: debianmemberportfolio/views.py:90 +msgid "DB information via HTTP" +msgstr "informasi DB melalui HTTP" + +#: debianmemberportfolio/views.py:91 +msgid "FOAF profile" +msgstr "profil FOAF" + +#: debianmemberportfolio/views.py:92 +msgid "Salsa" +msgstr "Salsa" + +#: debianmemberportfolio/views.py:94 +msgid "Wiki" +msgstr "Wiki" + +#: debianmemberportfolio/views.py:95 +msgid "Forum" +msgstr "Forum" + +#: debianmemberportfolio/views.py:98 +msgid "Miscellaneous" +msgstr "Lain-Lain" + +#: debianmemberportfolio/views.py:99 +msgid "debtags" +msgstr "debtags" + +#: debianmemberportfolio/views.py:100 +msgid "Planet Debian (name)" +msgstr "Planet Debian (nama)" + +#: debianmemberportfolio/views.py:101 +#, fuzzy +msgid "Planet Debian (username)" +msgstr "Planet Debian (nama pengguna)" + +#: debianmemberportfolio/views.py:102 +msgid "links" +msgstr "tautan" + +#: debianmemberportfolio/views.py:103 +msgid "Debian website" +msgstr "website Debian" + +#: debianmemberportfolio/views.py:104 +msgid "Debian search" +msgstr "pencarian Debian" + +#: debianmemberportfolio/views.py:105 +msgid "GPG public key via finger" +msgstr "kunci publik GPG melalui finger" + +#: debianmemberportfolio/views.py:106 +msgid "GPG public key via HTTP" +msgstr "kunci publik GPG melalui HTTP" + +#: debianmemberportfolio/views.py:107 +msgid "NM, AM participation" +msgstr "partisipasi NM, AM" + +#: debianmemberportfolio/views.py:108 +#, fuzzy +msgid "Contribution information" +msgstr "Informasi kontribusi" + +#: debianmemberportfolio/views.py:111 +msgid "Information reachable via ssh (for Debian Members)" +msgstr "Informasi dicapai melalui ssh (untuk Anggota Debian)" + +#: debianmemberportfolio/views.py:112 +msgid "owned debian.net domains" +msgstr "domain debian.net sendiri" + +#: debianmemberportfolio/views.py:113 +msgid "" +"MIA database " +"information" +msgstr "" +"informasi database MIA" + +#: debianmemberportfolio/views.py:115 +msgid "Group membership information" +msgstr "Informasi keanggotaan kelompok" + +#: debianmemberportfolio/views.py:118 +msgid "Ubuntu" +msgstr "Ubuntu" + +#: debianmemberportfolio/views.py:119 +msgid "Available patches from Ubuntu" +msgstr "Tambalan dari Ubuntu yang tersedia" + +#: debianmemberportfolio/model/urlbuilder.py:43 +msgid "Email address" +msgstr "Alamat Email" + +#: debianmemberportfolio/model/urlbuilder.py:44 +msgid "Name" +msgstr "Nama" + +#: debianmemberportfolio/model/urlbuilder.py:45 +msgid "GPG fingerprint" +msgstr "sidik jari GPG" + +#: debianmemberportfolio/model/urlbuilder.py:46 +msgid "Debian user name" +msgstr "nama pengguna Debian" + +#: debianmemberportfolio/model/urlbuilder.py:47 +msgid "Non Debian email address" +msgstr "Selain alamat email Debian" + +#: debianmemberportfolio/model/urlbuilder.py:48 +#, fuzzy +msgid "Salsa user name" +msgstr "nama pengguna Salsa" + +#: debianmemberportfolio/model/urlbuilder.py:49 +msgid "Alioth user name" +msgstr "nama pengguna Alioth" + +#: debianmemberportfolio/model/urlbuilder.py:110 +#: debianmemberportfolio/model/urlbuilder.py:114 +#, python-format +msgid "Missing input: %s" +msgstr "Tidak ada masukan: %s" + +#: debianmemberportfolio/templates/base.html:24 +#: debianmemberportfolio/templates/base.html:31 +msgid "Debian Member Portfolio Service" +msgstr "Layanan Portfolio Anggota Debian" + +#: debianmemberportfolio/templates/base.html:30 +msgid "Debian Logo" +msgstr "Logo Debian" + +#: debianmemberportfolio/templates/base.html:32 +msgid "" +"This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can " +"create a set of customized links leading to a Debian Member's or package " +"maintainer's information regarding Debian." +msgstr "" +"Layanan ini terinspirasi dari halaman DDPortfolio Stefano Zacchiroli di Wiki Debian. Anda dapat " +"membuat sebuah link kustom yang mengarah ke Anggota Debian atau informasi " +"mengenai pengelola paket Debian." + +#: debianmemberportfolio/templates/base.html:39 +msgid "AGPL - Free Software" +msgstr "AGPL - Free Software" + +#: debianmemberportfolio/templates/base.html:40 +#, fuzzy, python-format +msgid "" +"The service is available under the terms of the GNU Affero General Public License as published by " +"the Free Software Foundation, either version 3 of the License, or (at your " +"option) any later version. You can browse the source code or clone it from %(cloneurl)s using git. If you want to translate this service to " +"your language you can contribute at Weblate." +msgstr "" +"Layanan ini tersedia di bawah persyaratan GNU Affero General Public License seperti yang " +"diterbitkan oleh Free Software Foundation, baik versi 3 dari Lisensi, atau " +"(dengan pilihan Anda) versi lainnya. Anda dapat menelusuri kode sumber atau klon " +"dari %(cloneurl)s " +"menggunakan git.\n" +"Jika anda ingin menerjemahkan layanan ini ke dalam bahasa anda, anda dapat " +"berkontribusi di Weblate." + +#: debianmemberportfolio/templates/base.html:41 +msgid "Copyright © 2009-2018 Jan Dittberner" +msgstr "Hak Cipta © 2009-2018 Jan Dittberner" + +#: debianmemberportfolio/templates/showform.html:22 +msgid "Enter your personal information" +msgstr "Masukkan informasi data pribadi anda" + +#: debianmemberportfolio/templates/showform.html:29 +msgid "Debian Member Portfolio" +msgstr "Portfolio Anggota Debian" + +#: debianmemberportfolio/templates/showform.html:31 +msgid "Email address:" +msgstr "Alamat surel:" + +#: debianmemberportfolio/templates/showform.html:40 +msgid "Show all form fields" +msgstr "Tampilkan semua bagian formulir" + +#: debianmemberportfolio/templates/showform.html:43 +msgid "Name:" +msgstr "Nama:" + +#: debianmemberportfolio/templates/showform.html:50 +msgid "GPG fingerprint:" +msgstr "sidik jari GPG:" + +#: debianmemberportfolio/templates/showform.html:57 +msgid "Debian user name:" +msgstr "Nama pengguna Debian:" + +#: debianmemberportfolio/templates/showform.html:64 +msgid "Non Debian email address:" +msgstr "Selain alamat email Debian:" + +#: debianmemberportfolio/templates/showform.html:71 +#, fuzzy +msgid "Salsa user name:" +msgstr "Nama pengguna Salsa:" + +#: debianmemberportfolio/templates/showform.html:78 +msgid "Alioth user name:" +msgstr "Nama pengguna Alioth:" + +#: debianmemberportfolio/templates/showform.html:85 +msgid "Wiki user name:" +msgstr "Nama pengguna Wiki:" + +#: debianmemberportfolio/templates/showform.html:92 +msgid "Forum user id:" +msgstr "ID pengguna Forum:" + +#: debianmemberportfolio/templates/showform.html:99 +msgid "Output format:" +msgstr "Format Keluaran:" + +#: debianmemberportfolio/templates/showform.html:106 +msgid "Build Debian Member Portfolio URLs" +msgstr "Membangun URL Portfolio Anggota Debian" + +#: debianmemberportfolio/templates/showurls.html:21 +msgid "Your personal links" +msgstr "Tautan pribadi anda" + +#: debianmemberportfolio/templates/showurls.html:25 +#, fuzzy +msgid "Debian Member Porfolio" +msgstr "Portfolio Anggota Debian" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "Usage" +msgstr "Penggunaan" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "URL" +msgstr "URL" + +#: debianmemberportfolio/templates/showurls.html:38 +msgid "Error during URL creation:" +msgstr "Kesalahan selama pembuatan URL:" + +#: debianmemberportfolio/templates/showurls.html:59 +msgid "Restart" +msgstr "Mulai ulang" diff --git a/debianmemberportfolio/translations/ja/LC_MESSAGES/messages.po b/debianmemberportfolio/translations/ja/LC_MESSAGES/messages.po new file mode 100644 index 0000000..540d051 --- /dev/null +++ b/debianmemberportfolio/translations/ja/LC_MESSAGES/messages.po @@ -0,0 +1,420 @@ +# German translations for the Debian Member Portfolio Service. +# +# Copyright (C) 2009-2014 Jan Dittberner +# This file is distributed under the same license as the Debian Member +# Portfolio Service project. +# Translators: +# Jan Dittberner , 2009-2014 +msgid "" +msgstr "" +"Project-Id-Version: Debian Member Portfolio Service 0.3.1\n" +"Report-Msgid-Bugs-To: jan@dittberner.info\n" +"POT-Creation-Date: 2018-05-12 10:32+0200\n" +"PO-Revision-Date: 2020-09-27 13:40+0000\n" +"Last-Translator: Shuji Sado \n" +"Language-Team: Japanese \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.3-dev\n" +"Generated-By: Babel 2.5.0\n" + +#: debianmemberportfolio/forms.py:67 +msgid "JSON" +msgstr "JSON" + +#: debianmemberportfolio/forms.py:67 +msgid "HTML" +msgstr "HTML" + +#: debianmemberportfolio/views.py:40 +msgid "Overview" +msgstr "概要" + +#: debianmemberportfolio/views.py:41 +msgid "Debian Member's Package Overview" +msgstr "Debianメンバーのパッケージ概要" + +#: debianmemberportfolio/views.py:42 +msgid "" +"Debian Member's Package Overview\n" +"... showing all email addresses" +msgstr "" +"Debianメンバーのパッケージ概要\n" +"... 全メールアドレス表示" + +#: debianmemberportfolio/views.py:46 +msgid "Bugs" +msgstr "バグ" + +#: debianmemberportfolio/views.py:47 +msgid "" +"bugs received\n" +"(note: co-maintainers not listed, see #430986)" +msgstr "" +"受領したバグ\n" +"(注: 共同メンテナーはリストされていません。#430986を参照)" + +#: debianmemberportfolio/views.py:51 +msgid "bugs reported" +msgstr "報告したバグ" + +#: debianmemberportfolio/views.py:52 +msgid "user tags" +msgstr "ユーザータグ" + +#: debianmemberportfolio/views.py:53 +msgid "all messages (i.e., full text search for developer name on all bug logs)" +msgstr "すべてのメッセージ (i.e.、全てのバグのログの開発者名による全文検索)" + +#: debianmemberportfolio/views.py:55 +msgid "WNPP" +msgstr "WNPP" + +#: debianmemberportfolio/views.py:56 +msgid "correspondent for bugs" +msgstr "" + +#: debianmemberportfolio/views.py:57 +msgid "one year open bug history graph" +msgstr "1年間にオープンしたバグの履歴グラフ" + +#: debianmemberportfolio/views.py:60 +msgid "Build" +msgstr "ビルド" + +#: debianmemberportfolio/views.py:61 +msgid "buildd.d.o" +msgstr "buildd.d.o" + +#: debianmemberportfolio/views.py:62 +msgid "igloo" +msgstr "igloo" + +#: debianmemberportfolio/views.py:65 +msgid "Quality Assurance" +msgstr "品質保証" + +#: debianmemberportfolio/views.py:66 +msgid "maintainer dashboard" +msgstr "メンテナダッシュボード" + +#: debianmemberportfolio/views.py:67 +msgid "lintian reports" +msgstr "Lintianレポート" + +#: debianmemberportfolio/views.py:68 +msgid "full lintian reports (i.e. including \"info\"-level messages)" +msgstr "" + +#: debianmemberportfolio/views.py:70 +msgid "piuparts" +msgstr "" + +#: debianmemberportfolio/views.py:71 +msgid "Debian patch tracking system" +msgstr "Debianパッチ追跡システム" + +#: debianmemberportfolio/views.py:72 +msgid "Debian Url ChecKer" +msgstr "Debian Urlチェッカー" + +#: debianmemberportfolio/views.py:75 +msgid "Mailing Lists" +msgstr "メーリングリスト" + +#: debianmemberportfolio/views.py:76 +msgid "lists.d.o" +msgstr "lists.d.o" + +#: debianmemberportfolio/views.py:77 +msgid "lists.a.d.o" +msgstr "lists.a.d.o" + +#: debianmemberportfolio/views.py:78 +msgid "gmane" +msgstr "gmane" + +#: debianmemberportfolio/views.py:81 +msgid "Files" +msgstr "ファイル" + +#: debianmemberportfolio/views.py:82 +msgid "people.d.o" +msgstr "people.d.o" + +#: debianmemberportfolio/views.py:83 +msgid "oldpeople" +msgstr "" + +#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:93 +msgid "Alioth" +msgstr "" + +#: debianmemberportfolio/views.py:87 +msgid "Membership" +msgstr "メンバーシップ" + +#: debianmemberportfolio/views.py:88 +msgid "NM" +msgstr "" + +#: debianmemberportfolio/views.py:89 +msgid "DB information via finger" +msgstr "" + +#: debianmemberportfolio/views.py:90 +msgid "DB information via HTTP" +msgstr "" + +#: debianmemberportfolio/views.py:91 +msgid "FOAF profile" +msgstr "FOAF プロファイル" + +#: debianmemberportfolio/views.py:92 +msgid "Salsa" +msgstr "" + +#: debianmemberportfolio/views.py:94 +msgid "Wiki" +msgstr "" + +#: debianmemberportfolio/views.py:95 +msgid "Forum" +msgstr "フォーラム" + +#: debianmemberportfolio/views.py:98 +msgid "Miscellaneous" +msgstr "その他" + +#: debianmemberportfolio/views.py:99 +msgid "debtags" +msgstr "" + +#: debianmemberportfolio/views.py:100 +msgid "Planet Debian (name)" +msgstr "Planet Debian (名前)" + +#: debianmemberportfolio/views.py:101 +msgid "Planet Debian (username)" +msgstr "Planet Debian (ユーザー名)" + +#: debianmemberportfolio/views.py:102 +msgid "links" +msgstr "リンク" + +#: debianmemberportfolio/views.py:103 +msgid "Debian website" +msgstr "Debian webサイト" + +#: debianmemberportfolio/views.py:104 +msgid "Debian search" +msgstr "Debian検索" + +#: debianmemberportfolio/views.py:105 +msgid "GPG public key via finger" +msgstr "finger経由のGPG公開鍵" + +#: debianmemberportfolio/views.py:106 +msgid "GPG public key via HTTP" +msgstr "HTTP経由のGPG公開鍵" + +#: debianmemberportfolio/views.py:107 +msgid "NM, AM participation" +msgstr "" + +#: debianmemberportfolio/views.py:108 +msgid "Contribution information" +msgstr "貢献情報" + +#: debianmemberportfolio/views.py:109 +msgid "Repology information" +msgstr "Repology情報" + +#: debianmemberportfolio/views.py:112 +msgid "Information reachable via ssh (for Debian Members)" +msgstr "" + +#: debianmemberportfolio/views.py:113 +msgid "owned debian.net domains" +msgstr "" + +#: debianmemberportfolio/views.py:114 +msgid "" +"MIA database " +"information" +msgstr "" +"MIA データベース情報" + +#: debianmemberportfolio/views.py:116 +msgid "Group membership information" +msgstr "" + +#: debianmemberportfolio/views.py:119 +msgid "Ubuntu" +msgstr "" + +#: debianmemberportfolio/views.py:120 +msgid "Available patches from Ubuntu" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:43 +msgid "Email address" +msgstr "Emailアドレス" + +#: debianmemberportfolio/model/urlbuilder.py:44 +msgid "Name" +msgstr "名前" + +#: debianmemberportfolio/model/urlbuilder.py:45 +msgid "GPG fingerprint" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:46 +msgid "Debian user name" +msgstr "Debian ユーザー名" + +#: debianmemberportfolio/model/urlbuilder.py:47 +msgid "Non Debian email address" +msgstr "Debian以外のメールアドレス" + +#: debianmemberportfolio/model/urlbuilder.py:48 +msgid "Salsa user name" +msgstr "Salsaユーザー名" + +#: debianmemberportfolio/model/urlbuilder.py:49 +msgid "Alioth user name" +msgstr "Aliothユーザー名" + +#: debianmemberportfolio/model/urlbuilder.py:110 +#: debianmemberportfolio/model/urlbuilder.py:114 +#, python-format +msgid "Missing input: %s" +msgstr "" + +#: debianmemberportfolio/templates/base.html:24 +#: debianmemberportfolio/templates/base.html:31 +msgid "Debian Member Portfolio Service" +msgstr "Debianメンバー・ポートフォリオ・サービス" + +#: debianmemberportfolio/templates/base.html:30 +msgid "Debian Logo" +msgstr "Debianロゴ" + +#: debianmemberportfolio/templates/base.html:32 +msgid "" +"This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can " +"create a set of customized links leading to a Debian Member's or package " +"maintainer's information regarding Debian." +msgstr "" +"このサービスは、Debian Wiki の Stefano Zacchiroli さんによる DDPortfolio ページにヒントを得ています。 Debian メンバーやパッケージメンテナの " +"Debian に関する情報につながるカスタマイズされたリンクのセットを作成することができます。" + +#: debianmemberportfolio/templates/base.html:39 +msgid "AGPL - Free Software" +msgstr "AGPL - フリーソフトウェア" + +#: debianmemberportfolio/templates/base.html:40 +#, python-format +msgid "" +"The service is available under the terms of the GNU Affero General Public License as published by " +"the Free Software Foundation, either version 3 of the License, or (at your " +"option) any later version. You can browse the source code or clone it from %(cloneurl)s using git. If you want to translate this service to " +"your language you can contribute at Weblate." +msgstr "" + +#: debianmemberportfolio/templates/base.html:41 +msgid "Copyright © 2009-2018 Jan Dittberner" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:22 +msgid "Enter your personal information" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:29 +msgid "Debian Member Portfolio" +msgstr "Debianメンバーポートフォリオ" + +#: debianmemberportfolio/templates/showform.html:31 +msgid "Email address:" +msgstr "Emailアドレス:" + +#: debianmemberportfolio/templates/showform.html:40 +msgid "Show all form fields" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:43 +msgid "Name:" +msgstr "名前:" + +#: debianmemberportfolio/templates/showform.html:50 +msgid "GPG fingerprint:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:57 +msgid "Debian user name:" +msgstr "Debianユーザー名:" + +#: debianmemberportfolio/templates/showform.html:64 +msgid "Non Debian email address:" +msgstr "Debian以外のメールアドレス:" + +#: debianmemberportfolio/templates/showform.html:71 +msgid "Salsa user name:" +msgstr "Salsaユーザー名:" + +#: debianmemberportfolio/templates/showform.html:78 +msgid "Alioth user name:" +msgstr "Aliothユーザー名:" + +#: debianmemberportfolio/templates/showform.html:85 +msgid "Wiki user name:" +msgstr "Wikiユーザー名:" + +#: debianmemberportfolio/templates/showform.html:92 +msgid "Forum user id:" +msgstr "フォーラムのユーザーID:" + +#: debianmemberportfolio/templates/showform.html:99 +msgid "Output format:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:106 +msgid "Build Debian Member Portfolio URLs" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:21 +msgid "Your personal links" +msgstr "あなたの個人的なリンク" + +#: debianmemberportfolio/templates/showurls.html:25 +msgid "Debian Member Porfolio" +msgstr "Debianメンバーポートフォリオ" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "Usage" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "URL" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:38 +msgid "Error during URL creation:" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:59 +msgid "Restart" +msgstr "" diff --git a/debianmemberportfolio/translations/mr/LC_MESSAGES/messages.po b/debianmemberportfolio/translations/mr/LC_MESSAGES/messages.po new file mode 100644 index 0000000..85a044d --- /dev/null +++ b/debianmemberportfolio/translations/mr/LC_MESSAGES/messages.po @@ -0,0 +1,413 @@ +# German translations for the Debian Member Portfolio Service. +# +# Copyright (C) 2009-2014 Jan Dittberner +# This file is distributed under the same license as the Debian Member +# Portfolio Service project. +# Translators: +# Jan Dittberner , 2009-2014 +msgid "" +msgstr "" +"Project-Id-Version: Debian Member Portfolio Service 0.3.1\n" +"Report-Msgid-Bugs-To: jan@dittberner.info\n" +"POT-Creation-Date: 2018-05-12 10:32+0200\n" +"PO-Revision-Date: 2019-12-14 20:21+0000\n" +"Last-Translator: Prachi Joshi \n" +"Language-Team: Marathi \n" +"Language: mr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.10-dev\n" +"Generated-By: Babel 2.5.0\n" + +#: debianmemberportfolio/forms.py:67 +msgid "JSON" +msgstr "JSON" + +#: debianmemberportfolio/forms.py:67 +msgid "HTML" +msgstr "एचटीएमएल" + +#: debianmemberportfolio/views.py:40 +msgid "Overview" +msgstr "आढावा" + +#: debianmemberportfolio/views.py:41 +msgid "Debian Member's Package Overview" +msgstr "डेबियन सदस्याचे पॅकेज विहंगावलोकन" + +#: debianmemberportfolio/views.py:42 +msgid "" +"Debian Member's Package Overview\n" +"... showing all email addresses" +msgstr "" +"डेबियन सदस्याचे पॅकेज विहंगावलोकन\n" +"... सर्व ईमेल पत्ते दर्शवित आहे" + +#: debianmemberportfolio/views.py:46 +msgid "Bugs" +msgstr "बग" + +#: debianmemberportfolio/views.py:47 +msgid "" +"bugs received\n" +"(note: co-maintainers not listed, see #430986)" +msgstr "" + +#: debianmemberportfolio/views.py:51 +msgid "bugs reported" +msgstr "बग नोंदवले" + +#: debianmemberportfolio/views.py:52 +msgid "user tags" +msgstr "वापरकर्ता टॅग" + +#: debianmemberportfolio/views.py:53 +msgid "all messages (i.e., full text search for developer name on all bug logs)" +msgstr "सर्व संदेश (उदा. सर्व बग लॉगवरील विकसकाच्या नावासाठी संपूर्ण मजकूर शोध)" + +#: debianmemberportfolio/views.py:55 +msgid "WNPP" +msgstr "WNPP" + +#: debianmemberportfolio/views.py:56 +msgid "correspondent for bugs" +msgstr "बग साठी संवाददाता" + +#: debianmemberportfolio/views.py:57 +msgid "one year open bug history graph" +msgstr "एक वर्षाचा ओपन बग हिस्ट्री ग्राफ" + +#: debianmemberportfolio/views.py:60 +msgid "Build" +msgstr "बांधा" + +#: debianmemberportfolio/views.py:61 +msgid "buildd.d.o" +msgstr "buildd.d.o" + +#: debianmemberportfolio/views.py:62 +msgid "igloo" +msgstr "इग्लू" + +#: debianmemberportfolio/views.py:65 +msgid "Quality Assurance" +msgstr "गुणवत्ता हमी" + +#: debianmemberportfolio/views.py:66 +msgid "maintainer dashboard" +msgstr "देखभालकर्ता डॅशबोर्ड" + +#: debianmemberportfolio/views.py:67 +msgid "lintian reports" +msgstr "" + +#: debianmemberportfolio/views.py:68 +msgid "full lintian reports (i.e. including \"info\"-level messages)" +msgstr "" + +#: debianmemberportfolio/views.py:70 +msgid "piuparts" +msgstr "" + +#: debianmemberportfolio/views.py:71 +msgid "Debian patch tracking system" +msgstr "" + +#: debianmemberportfolio/views.py:72 +msgid "Debian Url ChecKer" +msgstr "" + +#: debianmemberportfolio/views.py:75 +msgid "Mailing Lists" +msgstr "" + +#: debianmemberportfolio/views.py:76 +msgid "lists.d.o" +msgstr "" + +#: debianmemberportfolio/views.py:77 +msgid "lists.a.d.o" +msgstr "" + +#: debianmemberportfolio/views.py:78 +msgid "gmane" +msgstr "" + +#: debianmemberportfolio/views.py:81 +msgid "Files" +msgstr "" + +#: debianmemberportfolio/views.py:82 +msgid "people.d.o" +msgstr "" + +#: debianmemberportfolio/views.py:83 +msgid "oldpeople" +msgstr "" + +#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:93 +msgid "Alioth" +msgstr "" + +#: debianmemberportfolio/views.py:87 +msgid "Membership" +msgstr "" + +#: debianmemberportfolio/views.py:88 +msgid "NM" +msgstr "" + +#: debianmemberportfolio/views.py:89 +msgid "DB information via finger" +msgstr "" + +#: debianmemberportfolio/views.py:90 +msgid "DB information via HTTP" +msgstr "" + +#: debianmemberportfolio/views.py:91 +msgid "FOAF profile" +msgstr "" + +#: debianmemberportfolio/views.py:92 +msgid "Salsa" +msgstr "" + +#: debianmemberportfolio/views.py:94 +msgid "Wiki" +msgstr "" + +#: debianmemberportfolio/views.py:95 +msgid "Forum" +msgstr "" + +#: debianmemberportfolio/views.py:98 +msgid "Miscellaneous" +msgstr "" + +#: debianmemberportfolio/views.py:99 +msgid "debtags" +msgstr "" + +#: debianmemberportfolio/views.py:100 +msgid "Planet Debian (name)" +msgstr "" + +#: debianmemberportfolio/views.py:101 +msgid "Planet Debian (username)" +msgstr "" + +#: debianmemberportfolio/views.py:102 +msgid "links" +msgstr "" + +#: debianmemberportfolio/views.py:103 +msgid "Debian website" +msgstr "" + +#: debianmemberportfolio/views.py:104 +msgid "Debian search" +msgstr "" + +#: debianmemberportfolio/views.py:105 +msgid "GPG public key via finger" +msgstr "" + +#: debianmemberportfolio/views.py:106 +msgid "GPG public key via HTTP" +msgstr "" + +#: debianmemberportfolio/views.py:107 +msgid "NM, AM participation" +msgstr "" + +#: debianmemberportfolio/views.py:108 +msgid "Contribution information" +msgstr "" + +#: debianmemberportfolio/views.py:109 +msgid "Repology information" +msgstr "" + +#: debianmemberportfolio/views.py:112 +msgid "Information reachable via ssh (for Debian Members)" +msgstr "" + +#: debianmemberportfolio/views.py:113 +msgid "owned debian.net domains" +msgstr "" + +#: debianmemberportfolio/views.py:114 +msgid "" +"MIA database " +"information" +msgstr "" + +#: debianmemberportfolio/views.py:116 +msgid "Group membership information" +msgstr "" + +#: debianmemberportfolio/views.py:119 +msgid "Ubuntu" +msgstr "" + +#: debianmemberportfolio/views.py:120 +msgid "Available patches from Ubuntu" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:43 +msgid "Email address" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:44 +msgid "Name" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:45 +msgid "GPG fingerprint" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:46 +msgid "Debian user name" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:47 +msgid "Non Debian email address" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:48 +msgid "Salsa user name" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:49 +msgid "Alioth user name" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:110 +#: debianmemberportfolio/model/urlbuilder.py:114 +#, python-format +msgid "Missing input: %s" +msgstr "" + +#: debianmemberportfolio/templates/base.html:24 +#: debianmemberportfolio/templates/base.html:31 +msgid "Debian Member Portfolio Service" +msgstr "" + +#: debianmemberportfolio/templates/base.html:30 +msgid "Debian Logo" +msgstr "" + +#: debianmemberportfolio/templates/base.html:32 +msgid "" +"This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can " +"create a set of customized links leading to a Debian Member's or package " +"maintainer's information regarding Debian." +msgstr "" + +#: debianmemberportfolio/templates/base.html:39 +msgid "AGPL - Free Software" +msgstr "" + +#: debianmemberportfolio/templates/base.html:40 +#, python-format +msgid "" +"The service is available under the terms of the GNU Affero General Public License as published by " +"the Free Software Foundation, either version 3 of the License, or (at your " +"option) any later version. You can browse the source code or clone it from %(cloneurl)s using git. If you want to translate this service to " +"your language you can contribute at Weblate." +msgstr "" + +#: debianmemberportfolio/templates/base.html:41 +msgid "Copyright © 2009-2018 Jan Dittberner" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:22 +msgid "Enter your personal information" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:29 +msgid "Debian Member Portfolio" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:31 +msgid "Email address:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:40 +msgid "Show all form fields" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:43 +msgid "Name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:50 +msgid "GPG fingerprint:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:57 +msgid "Debian user name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:64 +msgid "Non Debian email address:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:71 +msgid "Salsa user name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:78 +msgid "Alioth user name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:85 +msgid "Wiki user name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:92 +msgid "Forum user id:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:99 +msgid "Output format:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:106 +msgid "Build Debian Member Portfolio URLs" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:21 +msgid "Your personal links" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:25 +msgid "Debian Member Porfolio" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "Usage" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "URL" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:38 +msgid "Error during URL creation:" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:59 +msgid "Restart" +msgstr "" diff --git a/debianmemberportfolio/translations/nb/LC_MESSAGES/messages.po b/debianmemberportfolio/translations/nb/LC_MESSAGES/messages.po new file mode 100644 index 0000000..1657c47 --- /dev/null +++ b/debianmemberportfolio/translations/nb/LC_MESSAGES/messages.po @@ -0,0 +1,429 @@ +# German translations for the Debian Member Portfolio Service. +# +# Copyright (C) 2009-2014 Jan Dittberner +# This file is distributed under the same license as the Debian Member +# Portfolio Service project. +# Translators: +# Jan Dittberner , 2009-2014 +msgid "" +msgstr "" +"Project-Id-Version: Debian Member Portfolio Service 0.3.1\n" +"Report-Msgid-Bugs-To: jan@dittberner.info\n" +"POT-Creation-Date: 2018-02-09 10:14+0100\n" +"PO-Revision-Date: 2020-08-14 22:32+0000\n" +"Last-Translator: Allan Nordhøy \n" +"Language-Team: Norwegian Bokmål \n" +"Language: nb\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.2-dev\n" +"Generated-By: Babel 2.5.0\n" + +#: debianmemberportfolio/forms.py:67 +msgid "JSON" +msgstr "JSON" + +#: debianmemberportfolio/forms.py:67 +msgid "HTML" +msgstr "HTML" + +#: debianmemberportfolio/views.py:40 +msgid "Overview" +msgstr "Oversikt" + +#: debianmemberportfolio/views.py:41 +msgid "Debian Member's Package Overview" +msgstr "Debian-medlemmers pakkeoversikt" + +#: debianmemberportfolio/views.py:42 +msgid "" +"Debian Member's Package Overview\n" +"... showing all email addresses" +msgstr "" +"Debianmedlemmers pakkeoversikt\n" +"… viser alle e-postadresser" + +#: debianmemberportfolio/views.py:46 +msgid "Bugs" +msgstr "Feil" + +#: debianmemberportfolio/views.py:47 +msgid "" +"bugs received\n" +"(note: co-maintainers not listed, see #430986)" +msgstr "" +"feilrapporter mottatt\n" +"(merk: med-vedlikeholdere er ikke listet opp, se #430986)" + +#: debianmemberportfolio/views.py:51 +msgid "bugs reported" +msgstr "feil rapportert" + +#: debianmemberportfolio/views.py:52 +msgid "user tags" +msgstr "brukermerker" + +#: debianmemberportfolio/views.py:53 +msgid "all messages (i.e., full text search for developer name on all bug logs)" +msgstr "" +"alle meldinger (med andre ord, fulltekstsøk etter utviklernavnet i alle " +"feilrapporter)" + +#: debianmemberportfolio/views.py:55 +msgid "WNPP" +msgstr "WNPP" + +#: debianmemberportfolio/views.py:56 +msgid "correspondent for bugs" +msgstr "korrespondent for feilrapporter" + +#: debianmemberportfolio/views.py:57 +msgid "one year open bug history graph" +msgstr "Graf over feilrapporter som har vært åpen mer enn et år" + +#: debianmemberportfolio/views.py:60 +msgid "Build" +msgstr "Bygg" + +#: debianmemberportfolio/views.py:61 +msgid "buildd.d.o" +msgstr "buildd.d.o" + +#: debianmemberportfolio/views.py:62 +msgid "igloo" +msgstr "iglo" + +#: debianmemberportfolio/views.py:65 +msgid "Quality Assurance" +msgstr "Kvalitetssikring" + +#: debianmemberportfolio/views.py:66 +msgid "maintainer dashboard" +msgstr "Vedlikeholdersoversikt" + +#: debianmemberportfolio/views.py:67 +msgid "lintian reports" +msgstr "lintian-rapporter" + +#: debianmemberportfolio/views.py:68 +msgid "full lintian reports (i.e. including \"info\"-level messages)" +msgstr "Komplette lintian-rapporter (dvs. også meldinger med nivå «info»)" + +#: debianmemberportfolio/views.py:70 +msgid "piuparts" +msgstr "piuparts" + +#: debianmemberportfolio/views.py:71 +msgid "Debian patch tracking system" +msgstr "Debians sporingssystem for patcher" + +#: debianmemberportfolio/views.py:72 +msgid "Debian Url ChecKer" +msgstr "Debian URL-sjekker" + +#: debianmemberportfolio/views.py:75 +msgid "Mailing Lists" +msgstr "E-postlister" + +#: debianmemberportfolio/views.py:76 +msgid "lists.d.o" +msgstr "lists.d.o" + +#: debianmemberportfolio/views.py:77 +msgid "lists.a.d.o" +msgstr "lists.a.d.o" + +#: debianmemberportfolio/views.py:78 +msgid "gmane" +msgstr "gmane" + +#: debianmemberportfolio/views.py:81 +msgid "Files" +msgstr "Filer" + +#: debianmemberportfolio/views.py:82 +msgid "people.d.o" +msgstr "people.d.o" + +#: debianmemberportfolio/views.py:83 +msgid "oldpeople" +msgstr "oldpeople" + +#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:93 +msgid "Alioth" +msgstr "Alioth" + +#: debianmemberportfolio/views.py:87 +msgid "Membership" +msgstr "Medlemskap" + +#: debianmemberportfolio/views.py:88 +msgid "NM" +msgstr "NM" + +#: debianmemberportfolio/views.py:89 +msgid "DB information via finger" +msgstr "DB-informasjon via finger" + +#: debianmemberportfolio/views.py:90 +msgid "DB information via HTTP" +msgstr "DB-informasjon via HTTP" + +#: debianmemberportfolio/views.py:91 +msgid "FOAF profile" +msgstr "FOAF-profil" + +#: debianmemberportfolio/views.py:92 +msgid "Salsa" +msgstr "Salsa" + +#: debianmemberportfolio/views.py:94 +msgid "Wiki" +msgstr "Wiki" + +#: debianmemberportfolio/views.py:95 +msgid "Forum" +msgstr "Forum" + +#: debianmemberportfolio/views.py:98 +msgid "Miscellaneous" +msgstr "Diverse" + +#: debianmemberportfolio/views.py:99 +msgid "debtags" +msgstr "debtags" + +#: debianmemberportfolio/views.py:100 +msgid "Planet Debian (name)" +msgstr "Planet Debian (navn)" + +#: debianmemberportfolio/views.py:101 +msgid "Planet Debian (username)" +msgstr "Planet Debian (brukernavn)" + +#: debianmemberportfolio/views.py:102 +msgid "links" +msgstr "lenker" + +#: debianmemberportfolio/views.py:103 +msgid "Debian website" +msgstr "Debian-nettsiden" + +#: debianmemberportfolio/views.py:104 +msgid "Debian search" +msgstr "Debian-søk" + +#: debianmemberportfolio/views.py:105 +msgid "GPG public key via finger" +msgstr "Offentlig GPG-nøkkel via finger" + +#: debianmemberportfolio/views.py:106 +msgid "GPG public key via HTTP" +msgstr "Offentlig GPG-nøkkel via HTTP" + +#: debianmemberportfolio/views.py:107 +msgid "NM, AM participation" +msgstr "NM-, AM-deltagelse" + +#: debianmemberportfolio/views.py:108 +msgid "Contribution information" +msgstr "Bidragsinformasjon" + +#: debianmemberportfolio/views.py:111 +msgid "Information reachable via ssh (for Debian Members)" +msgstr "Informasjon tilgjengelig via ssh (for Debian-medlemmer)" + +#: debianmemberportfolio/views.py:112 +msgid "owned debian.net domains" +msgstr "eide debian.net -domener" + +#: debianmemberportfolio/views.py:113 +msgid "" +"MIA database " +"information" +msgstr "" +"Informasjon i MIA-databasen" + +#: debianmemberportfolio/views.py:115 +msgid "Group membership information" +msgstr "Gruppemedlemskapsinformasjon" + +#: debianmemberportfolio/views.py:118 +msgid "Ubuntu" +msgstr "Ubuntu" + +#: debianmemberportfolio/views.py:119 +msgid "Available patches from Ubuntu" +msgstr "Tilgjengelige programfikser fra Ubuntu" + +#: debianmemberportfolio/model/urlbuilder.py:43 +msgid "Email address" +msgstr "E-postadresse" + +#: debianmemberportfolio/model/urlbuilder.py:44 +msgid "Name" +msgstr "Navn" + +#: debianmemberportfolio/model/urlbuilder.py:45 +msgid "GPG fingerprint" +msgstr "GPG-fingeravtrykk" + +#: debianmemberportfolio/model/urlbuilder.py:46 +msgid "Debian user name" +msgstr "Debian-brukernavn" + +#: debianmemberportfolio/model/urlbuilder.py:47 +msgid "Non Debian email address" +msgstr "E-postadresser utenom Debian" + +#: debianmemberportfolio/model/urlbuilder.py:48 +msgid "Salsa user name" +msgstr "Salsa-brukernavn" + +#: debianmemberportfolio/model/urlbuilder.py:49 +msgid "Alioth user name" +msgstr "Alioth-brukernavn" + +#: debianmemberportfolio/model/urlbuilder.py:110 +#: debianmemberportfolio/model/urlbuilder.py:114 +#, python-format +msgid "Missing input: %s" +msgstr "Manglende inndata: %s" + +#: debianmemberportfolio/templates/base.html:24 +#: debianmemberportfolio/templates/base.html:31 +msgid "Debian Member Portfolio Service" +msgstr "Debian-medlems portfoliotjeneste" + +#: debianmemberportfolio/templates/base.html:30 +msgid "Debian Logo" +msgstr "Debian-logo" + +#: debianmemberportfolio/templates/base.html:32 +msgid "" +"This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can " +"create a set of customized links leading to a Debian Member's or package " +"maintainer's information regarding Debian." +msgstr "" +"Denne tjenesten er inspirert av Stefano Zacchiroli sin DDPortfolio-side i Debian-wikien. Du kan lage " +"et sett med tilpassede lenker som leder til et Debian-medlems eller -" +"pakkevedlikeholders informasjon om Debian." + +#: debianmemberportfolio/templates/base.html:39 +msgid "AGPL - Free Software" +msgstr "AGPL - Fri programvare" + +#: debianmemberportfolio/templates/base.html:40 +#, python-format +msgid "" +"The service is available under the terms of the GNU Affero General Public License as published by " +"the Free Software Foundation, either version 3 of the License, or (at your " +"option) any later version. You can browse the source code or clone it from %(cloneurl)s using git. If you want to translate this service to " +"your language you can contribute at Weblate." +msgstr "" +"Tjenesten er tilgjengelig i tråd med vilkårene i GNU Affero General Public License som publisert " +"av Free Software Foundation, enten versjon 3 av lisensen eller (etter ditt " +"valg) enhver senere versjon. Du kan se igjennom kildekoden eller klode det fra %(cloneurl)s ved å bruke git. Hvis du ønsker a oversette denne " +"tjenesten til ditt språk kan du bidra ved å bruke Weblate." + +#: debianmemberportfolio/templates/base.html:41 +msgid "Copyright © 2009-2018 Jan Dittberner" +msgstr "Kopirett © 2009-2018 Jan Dittberner" + +#: debianmemberportfolio/templates/showform.html:22 +msgid "Enter your personal information" +msgstr "Skriv inn informasjon om deg selv" + +#: debianmemberportfolio/templates/showform.html:29 +msgid "Debian Member Portfolio" +msgstr "Debian-medlems portfolio" + +#: debianmemberportfolio/templates/showform.html:31 +msgid "Email address:" +msgstr "E-postadresse:" + +#: debianmemberportfolio/templates/showform.html:40 +msgid "Show all form fields" +msgstr "Vis alle felt i skjema" + +#: debianmemberportfolio/templates/showform.html:43 +msgid "Name:" +msgstr "Navn:" + +#: debianmemberportfolio/templates/showform.html:50 +msgid "GPG fingerprint:" +msgstr "GPG-fingeravtrykk:" + +#: debianmemberportfolio/templates/showform.html:57 +msgid "Debian user name:" +msgstr "Debian-brukernavn:" + +#: debianmemberportfolio/templates/showform.html:64 +msgid "Non Debian email address:" +msgstr "E-postadresse utenom Debian:" + +#: debianmemberportfolio/templates/showform.html:71 +msgid "Salsa user name:" +msgstr "Salsa-brukernavn:" + +#: debianmemberportfolio/templates/showform.html:78 +msgid "Alioth user name:" +msgstr "Alioth-brukernavn:" + +#: debianmemberportfolio/templates/showform.html:85 +msgid "Wiki user name:" +msgstr "Wiki-brukernavn:" + +#: debianmemberportfolio/templates/showform.html:92 +msgid "Forum user id:" +msgstr "Forum-brukerid:" + +#: debianmemberportfolio/templates/showform.html:99 +msgid "Output format:" +msgstr "Fremvisningsformat:" + +#: debianmemberportfolio/templates/showform.html:106 +msgid "Build Debian Member Portfolio URLs" +msgstr "Bygg Debian-medlemsportfolio-URLer" + +#: debianmemberportfolio/templates/showurls.html:21 +msgid "Your personal links" +msgstr "Dine personlige lenker" + +#: debianmemberportfolio/templates/showurls.html:25 +msgid "Debian Member Porfolio" +msgstr "Debian-medlems portfolio" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "Usage" +msgstr "Bruk" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "URL" +msgstr "URL" + +#: debianmemberportfolio/templates/showurls.html:38 +msgid "Error during URL creation:" +msgstr "Feil under oppretting av URL:" + +#: debianmemberportfolio/templates/showurls.html:59 +msgid "Restart" +msgstr "Start om igjen" diff --git a/debianmemberportfolio/translations/nl/LC_MESSAGES/messages.po b/debianmemberportfolio/translations/nl/LC_MESSAGES/messages.po new file mode 100644 index 0000000..dd420a6 --- /dev/null +++ b/debianmemberportfolio/translations/nl/LC_MESSAGES/messages.po @@ -0,0 +1,414 @@ +# German translations for the Debian Member Portfolio Service. +# +# Copyright (C) 2009-2014 Jan Dittberner +# This file is distributed under the same license as the Debian Member +# Portfolio Service project. +# Translators: +# Jan Dittberner , 2009-2014 +msgid "" +msgstr "" +"Project-Id-Version: Debian Member Portfolio Service 0.3.1\n" +"Report-Msgid-Bugs-To: jan@dittberner.info\n" +"POT-Creation-Date: 2018-02-09 10:14+0100\n" +"PO-Revision-Date: 2019-03-18 14:03+0000\n" +"Last-Translator: Frans Spiesschaert \n" +"Language-Team: Dutch \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.6-dev\n" +"Generated-By: Babel 2.5.0\n" + +#: debianmemberportfolio/forms.py:67 +msgid "JSON" +msgstr "JSON" + +#: debianmemberportfolio/forms.py:67 +msgid "HTML" +msgstr "HTML" + +#: debianmemberportfolio/views.py:40 +msgid "Overview" +msgstr "Overzicht" + +#: debianmemberportfolio/views.py:41 +msgid "Debian Member's Package Overview" +msgstr "Pakketoverzicht van Debian-leden" + +#: debianmemberportfolio/views.py:42 +msgid "" +"Debian Member's Package Overview\n" +"... showing all email addresses" +msgstr "" +"Pakketoverzicht van Debian-leden\n" +"... alle e-mailadressen worden weergegeven" + +#: debianmemberportfolio/views.py:46 +msgid "Bugs" +msgstr "Bugs" + +#: debianmemberportfolio/views.py:47 +msgid "" +"bugs received\n" +"(note: co-maintainers not listed, see #430986)" +msgstr "" +"ontvangen bugs\n" +"(let op: mede-beheerders staan niet op de lijst, zie\n" +"#430986" + +#: debianmemberportfolio/views.py:51 +msgid "bugs reported" +msgstr "gerapporteerde bugs" + +#: debianmemberportfolio/views.py:52 +msgid "user tags" +msgstr "gebruikerslabels" + +#: debianmemberportfolio/views.py:53 +msgid "all messages (i.e., full text search for developer name on all bug logs)" +msgstr "" +"alle berichten (d.w.z. zoeken in volledige tekst op de naam van de " +"ontwikkelaar in alle buglogs)" + +#: debianmemberportfolio/views.py:55 +msgid "WNPP" +msgstr "WNPP" + +#: debianmemberportfolio/views.py:56 +msgid "correspondent for bugs" +msgstr "correspondent voor bugs" + +#: debianmemberportfolio/views.py:57 +msgid "one year open bug history graph" +msgstr "grafiek van de evolutie van bugs die één jaar openstaan" + +#: debianmemberportfolio/views.py:60 +msgid "Build" +msgstr "Bouwen" + +#: debianmemberportfolio/views.py:61 +msgid "buildd.d.o" +msgstr "buildd.d.o" + +#: debianmemberportfolio/views.py:62 +msgid "igloo" +msgstr "igloo" + +#: debianmemberportfolio/views.py:65 +msgid "Quality Assurance" +msgstr "Kwaliteitsverzekering" + +#: debianmemberportfolio/views.py:66 +msgid "maintainer dashboard" +msgstr "beheerdersinstrumentenbord" + +#: debianmemberportfolio/views.py:67 +msgid "lintian reports" +msgstr "lintian-rapporten" + +#: debianmemberportfolio/views.py:68 +msgid "full lintian reports (i.e. including \"info\"-level messages)" +msgstr "" +"volledige lintian-rapporten (d.w.z. inclusief berichten van niveau \"info\")" + +#: debianmemberportfolio/views.py:70 +msgid "piuparts" +msgstr "piuparts" + +#: debianmemberportfolio/views.py:71 +msgid "Debian patch tracking system" +msgstr "Debian patchvolgsysteem" + +#: debianmemberportfolio/views.py:72 +msgid "Debian Url ChecKer" +msgstr "Debian URL-controle" + +#: debianmemberportfolio/views.py:75 +msgid "Mailing Lists" +msgstr "Mailinglijsten" + +#: debianmemberportfolio/views.py:76 +msgid "lists.d.o" +msgstr "lists.d.o" + +#: debianmemberportfolio/views.py:77 +msgid "lists.a.d.o" +msgstr "lists.a.d.o" + +#: debianmemberportfolio/views.py:78 +msgid "gmane" +msgstr "gmane" + +#: debianmemberportfolio/views.py:81 +msgid "Files" +msgstr "Bestanden" + +#: debianmemberportfolio/views.py:82 +msgid "people.d.o" +msgstr "people.d.o" + +#: debianmemberportfolio/views.py:83 +msgid "oldpeople" +msgstr "oud-medewerkers" + +#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:93 +msgid "Alioth" +msgstr "Alioth" + +#: debianmemberportfolio/views.py:87 +msgid "Membership" +msgstr "Lidmaatschap" + +#: debianmemberportfolio/views.py:88 +msgid "NM" +msgstr "NM" + +#: debianmemberportfolio/views.py:89 +msgid "DB information via finger" +msgstr "DB-informatie via finger" + +#: debianmemberportfolio/views.py:90 +msgid "DB information via HTTP" +msgstr "DB-informatie via HTTP" + +#: debianmemberportfolio/views.py:91 +msgid "FOAF profile" +msgstr "FOAF-profiel" + +#: debianmemberportfolio/views.py:92 +msgid "Salsa" +msgstr "Salsa" + +#: debianmemberportfolio/views.py:94 +msgid "Wiki" +msgstr "Wiki" + +#: debianmemberportfolio/views.py:95 +msgid "Forum" +msgstr "Forum" + +#: debianmemberportfolio/views.py:98 +msgid "Miscellaneous" +msgstr "Diversen" + +#: debianmemberportfolio/views.py:99 +msgid "debtags" +msgstr "debtags" + +#: debianmemberportfolio/views.py:100 +msgid "Planet Debian (name)" +msgstr "Planet Debian (naam)" + +#: debianmemberportfolio/views.py:101 +msgid "Planet Debian (username)" +msgstr "Planet Debian (gebruikersnaam)" + +#: debianmemberportfolio/views.py:102 +msgid "links" +msgstr "links" + +#: debianmemberportfolio/views.py:103 +msgid "Debian website" +msgstr "Debian-website" + +#: debianmemberportfolio/views.py:104 +msgid "Debian search" +msgstr "Debian-zoeken" + +#: debianmemberportfolio/views.py:105 +msgid "GPG public key via finger" +msgstr "GPG openbare sleutel via finger" + +#: debianmemberportfolio/views.py:106 +msgid "GPG public key via HTTP" +msgstr "GPG openbare sleutel via HTTP" + +#: debianmemberportfolio/views.py:107 +msgid "NM, AM participation" +msgstr "NM, AM-deelname" + +#: debianmemberportfolio/views.py:108 +msgid "Contribution information" +msgstr "Bijdrage-informatie" + +#: debianmemberportfolio/views.py:111 +msgid "Information reachable via ssh (for Debian Members)" +msgstr "Via ssh toegankelijke informatie (voor Debian-leden)" + +#: debianmemberportfolio/views.py:112 +msgid "owned debian.net domains" +msgstr "debian.net-domeinnamen in eigendom" + +#: debianmemberportfolio/views.py:113 +msgid "MIA database information" +msgstr "MIA-database-informatie" + +#: debianmemberportfolio/views.py:115 +msgid "Group membership information" +msgstr "Informatie over groepslidmaatschap" + +#: debianmemberportfolio/views.py:118 +msgid "Ubuntu" +msgstr "Ubuntu" + +#: debianmemberportfolio/views.py:119 +msgid "Available patches from Ubuntu" +msgstr "Beschikbare patches van Ubuntu" + +#: debianmemberportfolio/model/urlbuilder.py:43 +msgid "Email address" +msgstr "E-mailadres" + +#: debianmemberportfolio/model/urlbuilder.py:44 +msgid "Name" +msgstr "Naam" + +#: debianmemberportfolio/model/urlbuilder.py:45 +msgid "GPG fingerprint" +msgstr "GPG-vingerafdruk" + +#: debianmemberportfolio/model/urlbuilder.py:46 +msgid "Debian user name" +msgstr "Debian-gebruikersnaam" + +#: debianmemberportfolio/model/urlbuilder.py:47 +msgid "Non Debian email address" +msgstr "E-mailadres buiten Debian" + +#: debianmemberportfolio/model/urlbuilder.py:48 +msgid "Salsa user name" +msgstr "Salsa-gebruikersnaam" + +#: debianmemberportfolio/model/urlbuilder.py:49 +msgid "Alioth user name" +msgstr "Alioth-gebruikersnaam" + +#: debianmemberportfolio/model/urlbuilder.py:110 +#: debianmemberportfolio/model/urlbuilder.py:114 +#, python-format +msgid "Missing input: %s" +msgstr "Ontbrekende invoer: %s" + +#: debianmemberportfolio/templates/base.html:24 +#: debianmemberportfolio/templates/base.html:31 +msgid "Debian Member Portfolio Service" +msgstr "Portfoliodienst van Debian-leden" + +#: debianmemberportfolio/templates/base.html:30 +msgid "Debian Logo" +msgstr "Debian-logo" + +#: debianmemberportfolio/templates/base.html:32 +msgid "This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can create a set of customized links leading to a Debian Member's or package maintainer's information regarding Debian." +msgstr "" +"Deze dienst is geïnspireerd op Stefano Zacchiroli's DDPortfolio-pagina op de Debian-" +"wiki. U kunt een set aangepaste links creëren die leiden naar Debian-" +"gerelateerde informatie over een lid of pakketbeheerder van Debian." + +#: debianmemberportfolio/templates/base.html:39 +msgid "AGPL - Free Software" +msgstr "AGPL - Vrije software" + +#: debianmemberportfolio/templates/base.html:40 +#, python-format +msgid "The service is available under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. You can browse the source code or clone it from %(cloneurl)s using git. If you want to translate this service to your language you can contribute at Weblate." +msgstr "" +"Deze dienst is beschikbaar onder de voorwaarden van de GNU Affero General Public " +"License, zoals gepubliceerd door de Free Software Foundation, zowel " +"versie 3, als (optioneel) een hogere versie. U kunt door de broncode bladeren of " +"deze klonen van %(cloneurl)s m.b.v. git. Als u deze " +"dienst wilt vertalen naar uw eigen taal, dan kunt u bijdragen op Weblate." + +#: debianmemberportfolio/templates/base.html:41 +msgid "Copyright © 2009-2018 Jan Dittberner" +msgstr "Copyright © 2009-2018 Jan Dittberner" + +#: debianmemberportfolio/templates/showform.html:22 +msgid "Enter your personal information" +msgstr "Voer uw persoonlijke informatie in" + +#: debianmemberportfolio/templates/showform.html:29 +msgid "Debian Member Portfolio" +msgstr "Portfolio van een lid van Debian" + +#: debianmemberportfolio/templates/showform.html:31 +msgid "Email address:" +msgstr "E-mailadres:" + +#: debianmemberportfolio/templates/showform.html:40 +msgid "Show all form fields" +msgstr "Alle velden van het formulier weergeven" + +#: debianmemberportfolio/templates/showform.html:43 +msgid "Name:" +msgstr "Naam:" + +#: debianmemberportfolio/templates/showform.html:50 +msgid "GPG fingerprint:" +msgstr "GPG-vingerafdruk:" + +#: debianmemberportfolio/templates/showform.html:57 +msgid "Debian user name:" +msgstr "Debian-gebruikersnaam:" + +#: debianmemberportfolio/templates/showform.html:64 +msgid "Non Debian email address:" +msgstr "E-mailadres buiten Debian:" + +#: debianmemberportfolio/templates/showform.html:71 +msgid "Salsa user name:" +msgstr "Salsa-gebruikersnaam:" + +#: debianmemberportfolio/templates/showform.html:78 +msgid "Alioth user name:" +msgstr "Alioth-gebruikersnaam:" + +#: debianmemberportfolio/templates/showform.html:85 +msgid "Wiki user name:" +msgstr "Wiki-gebruikersnaam:" + +#: debianmemberportfolio/templates/showform.html:92 +msgid "Forum user id:" +msgstr "Forum-gebruikersid:" + +#: debianmemberportfolio/templates/showform.html:99 +msgid "Output format:" +msgstr "Uitvoerformaat:" + +#: debianmemberportfolio/templates/showform.html:106 +msgid "Build Debian Member Portfolio URLs" +msgstr "URL's bouwen voor het Debian-lid" + +#: debianmemberportfolio/templates/showurls.html:21 +msgid "Your personal links" +msgstr "Uw persoonlijke links" + +#: debianmemberportfolio/templates/showurls.html:25 +msgid "Debian Member Porfolio" +msgstr "Portfolio van een Debian-lid" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "Usage" +msgstr "Gebruik" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "URL" +msgstr "URL" + +#: debianmemberportfolio/templates/showurls.html:38 +msgid "Error during URL creation:" +msgstr "Er is een fout opgetreden tijdens de URL-creatie:" + +#: debianmemberportfolio/templates/showurls.html:59 +msgid "Restart" +msgstr "Herbeginnen" diff --git a/debianmemberportfolio/translations/pl/LC_MESSAGES/messages.po b/debianmemberportfolio/translations/pl/LC_MESSAGES/messages.po new file mode 100644 index 0000000..2ce312a --- /dev/null +++ b/debianmemberportfolio/translations/pl/LC_MESSAGES/messages.po @@ -0,0 +1,412 @@ +# German translations for the Debian Member Portfolio Service. +# +# Copyright (C) 2009-2014 Jan Dittberner +# This file is distributed under the same license as the Debian Member +# Portfolio Service project. +# Translators: +# Jan Dittberner , 2009-2014 +msgid "" +msgstr "" +"Project-Id-Version: Debian Member Portfolio Service 0.3.1\n" +"Report-Msgid-Bugs-To: jan@dittberner.info\n" +"POT-Creation-Date: 2018-05-12 10:32+0200\n" +"PO-Revision-Date: 2020-10-27 06:59+0000\n" +"Last-Translator: Jan Dittberner \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.3.2-dev\n" +"Generated-By: Babel 2.5.0\n" + +#: debianmemberportfolio/forms.py:67 +msgid "JSON" +msgstr "JSON" + +#: debianmemberportfolio/forms.py:67 +msgid "HTML" +msgstr "HTML" + +#: debianmemberportfolio/views.py:40 +msgid "Overview" +msgstr "Przegląd" + +#: debianmemberportfolio/views.py:41 +msgid "Debian Member's Package Overview" +msgstr "" + +#: debianmemberportfolio/views.py:42 +msgid "" +"Debian Member's Package Overview\n" +"... showing all email addresses" +msgstr "" + +#: debianmemberportfolio/views.py:46 +msgid "Bugs" +msgstr "Bugi" + +#: debianmemberportfolio/views.py:47 +msgid "" +"bugs received\n" +"(note: co-maintainers not listed, see #430986)" +msgstr "" + +#: debianmemberportfolio/views.py:51 +msgid "bugs reported" +msgstr "" + +#: debianmemberportfolio/views.py:52 +msgid "user tags" +msgstr "" + +#: debianmemberportfolio/views.py:53 +msgid "all messages (i.e., full text search for developer name on all bug logs)" +msgstr "" + +#: debianmemberportfolio/views.py:55 +msgid "WNPP" +msgstr "WNPP" + +#: debianmemberportfolio/views.py:56 +msgid "correspondent for bugs" +msgstr "" + +#: debianmemberportfolio/views.py:57 +msgid "one year open bug history graph" +msgstr "" + +#: debianmemberportfolio/views.py:60 +msgid "Build" +msgstr "" + +#: debianmemberportfolio/views.py:61 +msgid "buildd.d.o" +msgstr "" + +#: debianmemberportfolio/views.py:62 +msgid "igloo" +msgstr "" + +#: debianmemberportfolio/views.py:65 +msgid "Quality Assurance" +msgstr "" + +#: debianmemberportfolio/views.py:66 +msgid "maintainer dashboard" +msgstr "" + +#: debianmemberportfolio/views.py:67 +msgid "lintian reports" +msgstr "" + +#: debianmemberportfolio/views.py:68 +msgid "full lintian reports (i.e. including \"info\"-level messages)" +msgstr "" + +#: debianmemberportfolio/views.py:70 +msgid "piuparts" +msgstr "" + +#: debianmemberportfolio/views.py:71 +msgid "Debian patch tracking system" +msgstr "" + +#: debianmemberportfolio/views.py:72 +msgid "Debian Url ChecKer" +msgstr "" + +#: debianmemberportfolio/views.py:75 +msgid "Mailing Lists" +msgstr "" + +#: debianmemberportfolio/views.py:76 +msgid "lists.d.o" +msgstr "" + +#: debianmemberportfolio/views.py:77 +msgid "lists.a.d.o" +msgstr "" + +#: debianmemberportfolio/views.py:78 +msgid "gmane" +msgstr "gmane" + +#: debianmemberportfolio/views.py:81 +msgid "Files" +msgstr "Pliki" + +#: debianmemberportfolio/views.py:82 +msgid "people.d.o" +msgstr "people.d.o" + +#: debianmemberportfolio/views.py:83 +msgid "oldpeople" +msgstr "" + +#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:93 +msgid "Alioth" +msgstr "" + +#: debianmemberportfolio/views.py:87 +msgid "Membership" +msgstr "" + +#: debianmemberportfolio/views.py:88 +msgid "NM" +msgstr "NM" + +#: debianmemberportfolio/views.py:89 +msgid "DB information via finger" +msgstr "" + +#: debianmemberportfolio/views.py:90 +msgid "DB information via HTTP" +msgstr "" + +#: debianmemberportfolio/views.py:91 +msgid "FOAF profile" +msgstr "profil FOAF" + +#: debianmemberportfolio/views.py:92 +msgid "Salsa" +msgstr "Salsa" + +#: debianmemberportfolio/views.py:94 +msgid "Wiki" +msgstr "Wiki" + +#: debianmemberportfolio/views.py:95 +msgid "Forum" +msgstr "Forum" + +#: debianmemberportfolio/views.py:98 +msgid "Miscellaneous" +msgstr "" + +#: debianmemberportfolio/views.py:99 +msgid "debtags" +msgstr "" + +#: debianmemberportfolio/views.py:100 +msgid "Planet Debian (name)" +msgstr "" + +#: debianmemberportfolio/views.py:101 +msgid "Planet Debian (username)" +msgstr "" + +#: debianmemberportfolio/views.py:102 +msgid "links" +msgstr "" + +#: debianmemberportfolio/views.py:103 +msgid "Debian website" +msgstr "" + +#: debianmemberportfolio/views.py:104 +msgid "Debian search" +msgstr "" + +#: debianmemberportfolio/views.py:105 +msgid "GPG public key via finger" +msgstr "" + +#: debianmemberportfolio/views.py:106 +msgid "GPG public key via HTTP" +msgstr "" + +#: debianmemberportfolio/views.py:107 +msgid "NM, AM participation" +msgstr "" + +#: debianmemberportfolio/views.py:108 +msgid "Contribution information" +msgstr "" + +#: debianmemberportfolio/views.py:109 +msgid "Repology information" +msgstr "" + +#: debianmemberportfolio/views.py:112 +msgid "Information reachable via ssh (for Debian Members)" +msgstr "" + +#: debianmemberportfolio/views.py:113 +msgid "owned debian.net domains" +msgstr "" + +#: debianmemberportfolio/views.py:114 +msgid "" +"MIA database " +"information" +msgstr "" + +#: debianmemberportfolio/views.py:116 +msgid "Group membership information" +msgstr "" + +#: debianmemberportfolio/views.py:119 +msgid "Ubuntu" +msgstr "" + +#: debianmemberportfolio/views.py:120 +msgid "Available patches from Ubuntu" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:43 +msgid "Email address" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:44 +msgid "Name" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:45 +msgid "GPG fingerprint" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:46 +msgid "Debian user name" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:47 +msgid "Non Debian email address" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:48 +msgid "Salsa user name" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:49 +msgid "Alioth user name" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:110 +#: debianmemberportfolio/model/urlbuilder.py:114 +#, python-format +msgid "Missing input: %s" +msgstr "" + +#: debianmemberportfolio/templates/base.html:24 +#: debianmemberportfolio/templates/base.html:31 +msgid "Debian Member Portfolio Service" +msgstr "" + +#: debianmemberportfolio/templates/base.html:30 +msgid "Debian Logo" +msgstr "" + +#: debianmemberportfolio/templates/base.html:32 +msgid "" +"This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can " +"create a set of customized links leading to a Debian Member's or package " +"maintainer's information regarding Debian." +msgstr "" + +#: debianmemberportfolio/templates/base.html:39 +msgid "AGPL - Free Software" +msgstr "" + +#: debianmemberportfolio/templates/base.html:40 +#, python-format +msgid "" +"The service is available under the terms of the GNU Affero General Public License as published by " +"the Free Software Foundation, either version 3 of the License, or (at your " +"option) any later version. You can browse the source code or clone it from %(cloneurl)s using git. If you want to translate this service to " +"your language you can contribute at Weblate." +msgstr "" + +#: debianmemberportfolio/templates/base.html:41 +msgid "Copyright © 2009-2018 Jan Dittberner" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:22 +msgid "Enter your personal information" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:29 +msgid "Debian Member Portfolio" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:31 +msgid "Email address:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:40 +msgid "Show all form fields" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:43 +msgid "Name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:50 +msgid "GPG fingerprint:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:57 +msgid "Debian user name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:64 +msgid "Non Debian email address:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:71 +msgid "Salsa user name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:78 +msgid "Alioth user name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:85 +msgid "Wiki user name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:92 +msgid "Forum user id:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:99 +msgid "Output format:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:106 +msgid "Build Debian Member Portfolio URLs" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:21 +msgid "Your personal links" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:25 +msgid "Debian Member Porfolio" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "Usage" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "URL" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:38 +msgid "Error during URL creation:" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:59 +msgid "Restart" +msgstr "" diff --git a/debianmemberportfolio/translations/pt/LC_MESSAGES/messages.po b/debianmemberportfolio/translations/pt/LC_MESSAGES/messages.po new file mode 100644 index 0000000..ca0cc52 --- /dev/null +++ b/debianmemberportfolio/translations/pt/LC_MESSAGES/messages.po @@ -0,0 +1,434 @@ +# German translations for the Debian Member Portfolio Service. +# +# Copyright (C) 2009-2014 Jan Dittberner +# This file is distributed under the same license as the Debian Member +# Portfolio Service project. +# Translators: +# Jan Dittberner , 2009-2014 +msgid "" +msgstr "" +"Project-Id-Version: Debian Member Portfolio Service 0.3.1\n" +"Report-Msgid-Bugs-To: jan@dittberner.info\n" +"POT-Creation-Date: 2018-05-12 10:32+0200\n" +"PO-Revision-Date: 2020-09-22 18:40+0000\n" +"Last-Translator: ssantos \n" +"Language-Team: Portuguese \n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.3-dev\n" +"Generated-By: Babel 2.5.0\n" + +#: debianmemberportfolio/forms.py:67 +msgid "JSON" +msgstr "JSON" + +#: debianmemberportfolio/forms.py:67 +msgid "HTML" +msgstr "HTML" + +#: debianmemberportfolio/views.py:40 +msgid "Overview" +msgstr "Visão Geral" + +#: debianmemberportfolio/views.py:41 +msgid "Debian Member's Package Overview" +msgstr "Visão geral dos Pacotes dos Membros do Debian" + +#: debianmemberportfolio/views.py:42 +msgid "" +"Debian Member's Package Overview\n" +"... showing all email addresses" +msgstr "" +"Visão geral dos Pacote dos Membros do Debian\n" +"... exibindo todos os endereços de email" + +#: debianmemberportfolio/views.py:46 +msgid "Bugs" +msgstr "Bugs" + +#: debianmemberportfolio/views.py:47 +msgid "" +"bugs received\n" +"(note: co-maintainers not listed, see #430986)" +msgstr "" +"Bugs recebidos\n" +"(nota: co-mantenedores não listados, veja #430986)" + +#: debianmemberportfolio/views.py:51 +msgid "bugs reported" +msgstr "Bugs reportados" + +#: debianmemberportfolio/views.py:52 +msgid "user tags" +msgstr "Tags de utilizador" + +#: debianmemberportfolio/views.py:53 +msgid "all messages (i.e., full text search for developer name on all bug logs)" +msgstr "" +"Todas as mensagens (Ex. pesquisa completa do texto para o nome do " +"programador em todos os logs de bug)" + +#: debianmemberportfolio/views.py:55 +msgid "WNPP" +msgstr "WNPP" + +#: debianmemberportfolio/views.py:56 +msgid "correspondent for bugs" +msgstr "correspondente para bugs" + +#: debianmemberportfolio/views.py:57 +msgid "one year open bug history graph" +msgstr "Histórico gráfico de bugs abertos há um ano" + +#: debianmemberportfolio/views.py:60 +msgid "Build" +msgstr "Construção" + +#: debianmemberportfolio/views.py:61 +msgid "buildd.d.o" +msgstr "buildd.d.o" + +#: debianmemberportfolio/views.py:62 +msgid "igloo" +msgstr "Iglu" + +#: debianmemberportfolio/views.py:65 +msgid "Quality Assurance" +msgstr "Garantia de Qualidade" + +#: debianmemberportfolio/views.py:66 +msgid "maintainer dashboard" +msgstr "painel do mantenedor" + +#: debianmemberportfolio/views.py:67 +msgid "lintian reports" +msgstr "relatórios lintian" + +#: debianmemberportfolio/views.py:68 +msgid "full lintian reports (i.e. including \"info\"-level messages)" +msgstr "todos os relatórios lintian (Ex. incluindo mensagens \"info\"-level)" + +#: debianmemberportfolio/views.py:70 +msgid "piuparts" +msgstr "piuparts" + +#: debianmemberportfolio/views.py:71 +msgid "Debian patch tracking system" +msgstr "Sistema de rastreamento de patches Debian" + +#: debianmemberportfolio/views.py:72 +msgid "Debian Url ChecKer" +msgstr "Validador de Url do Debian" + +#: debianmemberportfolio/views.py:75 +msgid "Mailing Lists" +msgstr "Listas de Discussão" + +#: debianmemberportfolio/views.py:76 +msgid "lists.d.o" +msgstr "lists.d.o" + +#: debianmemberportfolio/views.py:77 +msgid "lists.a.d.o" +msgstr "lists.a.d.o" + +#: debianmemberportfolio/views.py:78 +msgid "gmane" +msgstr "gmane" + +#: debianmemberportfolio/views.py:81 +msgid "Files" +msgstr "Ficheiros" + +#: debianmemberportfolio/views.py:82 +msgid "people.d.o" +msgstr "people.d.o" + +#: debianmemberportfolio/views.py:83 +msgid "oldpeople" +msgstr "oldpeople" + +#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:93 +msgid "Alioth" +msgstr "Alioth" + +#: debianmemberportfolio/views.py:87 +msgid "Membership" +msgstr "Associação" + +#: debianmemberportfolio/views.py:88 +msgid "NM" +msgstr "NM" + +#: debianmemberportfolio/views.py:89 +msgid "DB information via finger" +msgstr "Infomações DB via finger" + +#: debianmemberportfolio/views.py:90 +msgid "DB information via HTTP" +msgstr "Informações DB via HTTP" + +#: debianmemberportfolio/views.py:91 +msgid "FOAF profile" +msgstr "perfil FOAF" + +#: debianmemberportfolio/views.py:92 +msgid "Salsa" +msgstr "Salsa" + +#: debianmemberportfolio/views.py:94 +msgid "Wiki" +msgstr "Wiki" + +#: debianmemberportfolio/views.py:95 +msgid "Forum" +msgstr "Fórum" + +#: debianmemberportfolio/views.py:98 +msgid "Miscellaneous" +msgstr "Miscelânea" + +#: debianmemberportfolio/views.py:99 +msgid "debtags" +msgstr "debtags" + +#: debianmemberportfolio/views.py:100 +msgid "Planet Debian (name)" +msgstr "Planet Debian (nome)" + +#: debianmemberportfolio/views.py:101 +msgid "Planet Debian (username)" +msgstr "Nome de utilizador Debian" + +#: debianmemberportfolio/views.py:102 +msgid "links" +msgstr "ligações" + +#: debianmemberportfolio/views.py:103 +msgid "Debian website" +msgstr "Site do Debian" + +#: debianmemberportfolio/views.py:104 +msgid "Debian search" +msgstr "Pesquisa Debian" + +#: debianmemberportfolio/views.py:105 +msgid "GPG public key via finger" +msgstr "Chave pública GPG via finger" + +#: debianmemberportfolio/views.py:106 +msgid "GPG public key via HTTP" +msgstr "Chave pública GPG via HTTP" + +#: debianmemberportfolio/views.py:107 +msgid "NM, AM participation" +msgstr "Participação NM, AM" + +#: debianmemberportfolio/views.py:108 +msgid "Contribution information" +msgstr "Insira as suas informações pessoais" + +#: debianmemberportfolio/views.py:109 +msgid "Repology information" +msgstr "Informação sobre Repology" + +#: debianmemberportfolio/views.py:112 +msgid "Information reachable via ssh (for Debian Members)" +msgstr "Informação alcançável via ssh (para membros Debian)" + +#: debianmemberportfolio/views.py:113 +msgid "owned debian.net domains" +msgstr "domínios debian.net adquiridos" + +#: debianmemberportfolio/views.py:114 +msgid "" +"MIA database " +"information" +msgstr "" +"MIA " +"informações de banco de dados" + +#: debianmemberportfolio/views.py:116 +msgid "Group membership information" +msgstr "Informações de Grupos associados" + +#: debianmemberportfolio/views.py:119 +msgid "Ubuntu" +msgstr "Ubuntu" + +#: debianmemberportfolio/views.py:120 +msgid "Available patches from Ubuntu" +msgstr "Patches por Ubuntu disponíveis" + +#: debianmemberportfolio/model/urlbuilder.py:43 +msgid "Email address" +msgstr "Endereços de email" + +#: debianmemberportfolio/model/urlbuilder.py:44 +msgid "Name" +msgstr "Nome" + +#: debianmemberportfolio/model/urlbuilder.py:45 +msgid "GPG fingerprint" +msgstr "Fingerprint GPG" + +#: debianmemberportfolio/model/urlbuilder.py:46 +msgid "Debian user name" +msgstr "Nome de utilizador Debian" + +#: debianmemberportfolio/model/urlbuilder.py:47 +msgid "Non Debian email address" +msgstr "Endereço de email não Debian" + +#: debianmemberportfolio/model/urlbuilder.py:48 +msgid "Salsa user name" +msgstr "Nome de utilizador Debian" + +#: debianmemberportfolio/model/urlbuilder.py:49 +msgid "Alioth user name" +msgstr "Nome de utilizador Alioth" + +#: debianmemberportfolio/model/urlbuilder.py:110 +#: debianmemberportfolio/model/urlbuilder.py:114 +#, python-format +msgid "Missing input: %s" +msgstr "Entrada ausente: %s" + +#: debianmemberportfolio/templates/base.html:24 +#: debianmemberportfolio/templates/base.html:31 +msgid "Debian Member Portfolio Service" +msgstr "Serviço de Portfolio dos Membros do Debian" + +#: debianmemberportfolio/templates/base.html:30 +msgid "Debian Logo" +msgstr "Logo Debian" + +#: debianmemberportfolio/templates/base.html:32 +msgid "" +"This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can " +"create a set of customized links leading to a Debian Member's or package " +"maintainer's information regarding Debian." +msgstr "" +"Este serviço tem sido inspirado por Stefano Zacchiroli's Página DDPortfolio na Debian Wiki. Pode " +"criar um conjunto de ligações customizados apontando para informações, ou de " +"membro Debian, ou de mantenedor de pacotes a respeito de Debian." + +#: debianmemberportfolio/templates/base.html:39 +msgid "AGPL - Free Software" +msgstr "AGPL - Sofware Livre" + +#: debianmemberportfolio/templates/base.html:40 +#, python-format +msgid "" +"The service is available under the terms of the GNU Affero General Public License as published by " +"the Free Software Foundation, either version 3 of the License, or (at your " +"option) any later version. You can browse the source code or clone it from %(cloneurl)s using git. If you want to translate this service to " +"your language you can contribute at Weblate." +msgstr "" +"O serviço está disponível sob os termos da Licença Pública Geral Affero GNU conforme publicado " +"pela the Free Software Foundation, tanto na versão 3 da licença, como (a seu " +"critério) qualquer versão mais recente. Pode visualizar o código fonte ou " +"cloná-lo%(cloneurl)s usando git. Se quiser " +"traduzir este serviço para o seu idioma pode contribuir em Weblate." + +#: debianmemberportfolio/templates/base.html:41 +msgid "Copyright © 2009-2018 Jan Dittberner" +msgstr "Direitos Autorais © 2009-2018 Jan Dittberner" + +#: debianmemberportfolio/templates/showform.html:22 +msgid "Enter your personal information" +msgstr "Insira as suas informações pessoais" + +#: debianmemberportfolio/templates/showform.html:29 +msgid "Debian Member Portfolio" +msgstr "Portfolio de Membro Debian" + +#: debianmemberportfolio/templates/showform.html:31 +msgid "Email address:" +msgstr "Endereço de email:" + +#: debianmemberportfolio/templates/showform.html:40 +msgid "Show all form fields" +msgstr "Mostrar todos os campos" + +#: debianmemberportfolio/templates/showform.html:43 +msgid "Name:" +msgstr "Nome:" + +#: debianmemberportfolio/templates/showform.html:50 +msgid "GPG fingerprint:" +msgstr "Fingerprint GPG:" + +#: debianmemberportfolio/templates/showform.html:57 +msgid "Debian user name:" +msgstr "Nome de utilizador Debian:" + +#: debianmemberportfolio/templates/showform.html:64 +msgid "Non Debian email address:" +msgstr "Endereço de email não Debian:" + +#: debianmemberportfolio/templates/showform.html:71 +msgid "Salsa user name:" +msgstr "nome de utilizador Salsa:" + +#: debianmemberportfolio/templates/showform.html:78 +msgid "Alioth user name:" +msgstr "Nome de utilizador Alioth:" + +#: debianmemberportfolio/templates/showform.html:85 +msgid "Wiki user name:" +msgstr "Nome de utilizador Wiki:" + +#: debianmemberportfolio/templates/showform.html:92 +msgid "Forum user id:" +msgstr "Id de utilizador do fórum:" + +#: debianmemberportfolio/templates/showform.html:99 +msgid "Output format:" +msgstr "Formato de saída:" + +#: debianmemberportfolio/templates/showform.html:106 +msgid "Build Debian Member Portfolio URLs" +msgstr "URLs de Portfolio dos Membros Debian em Construção" + +#: debianmemberportfolio/templates/showurls.html:21 +msgid "Your personal links" +msgstr "As suas ligações pessoais" + +#: debianmemberportfolio/templates/showurls.html:25 +msgid "Debian Member Porfolio" +msgstr "Portfolio de Membro Debian" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "Usage" +msgstr "Modo de uso" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "URL" +msgstr "URL" + +#: debianmemberportfolio/templates/showurls.html:38 +msgid "Error during URL creation:" +msgstr "Erro durante a criação da URL:" + +#: debianmemberportfolio/templates/showurls.html:59 +msgid "Restart" +msgstr "Reiniciar" diff --git a/debianmemberportfolio/translations/pt_BR/LC_MESSAGES/messages.po b/debianmemberportfolio/translations/pt_BR/LC_MESSAGES/messages.po new file mode 100644 index 0000000..28ae0ca --- /dev/null +++ b/debianmemberportfolio/translations/pt_BR/LC_MESSAGES/messages.po @@ -0,0 +1,430 @@ +# Portuguese (Brazil) translations for the Debian Member Portfolio Service. +# +# Copyright (C) 2012 Daniel Manzano +# This file is distributed under the same license as the Debian Member +# Portfolio Service project. +# Translators: +# Daniel Manzano , 2012. +msgid "" +msgstr "" +"Project-Id-Version: Debian Member Portfolio Service\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2018-02-09 10:14+0100\n" +"PO-Revision-Date: 2020-07-26 06:41+0000\n" +"Last-Translator: Wellington Terumi Uemura \n" +"Language-Team: Portuguese (Brazil) \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.2-dev\n" +"Generated-By: Babel 2.5.0\n" + +#: debianmemberportfolio/forms.py:67 +msgid "JSON" +msgstr "JSON" + +#: debianmemberportfolio/forms.py:67 +msgid "HTML" +msgstr "HTML" + +#: debianmemberportfolio/views.py:40 +msgid "Overview" +msgstr "Visão Geral" + +#: debianmemberportfolio/views.py:41 +msgid "Debian Member's Package Overview" +msgstr "Visão geral dos Pacotes dos Membros do Debian" + +#: debianmemberportfolio/views.py:42 +msgid "" +"Debian Member's Package Overview\n" +"... showing all email addresses" +msgstr "" +"Visão geral dos Pacote dos Membros do Debian\n" +"... exibindo todos os endereços de email" + +#: debianmemberportfolio/views.py:46 +msgid "Bugs" +msgstr "Bugs" + +#: debianmemberportfolio/views.py:47 +msgid "" +"bugs received\n" +"(note: co-maintainers not listed, see #430986)" +msgstr "" +"Bugs recebidos\n" +"(nota: co-mantenedores não listados, veja #430986)" + +#: debianmemberportfolio/views.py:51 +msgid "bugs reported" +msgstr "Bugs reportados" + +#: debianmemberportfolio/views.py:52 +msgid "user tags" +msgstr "Tags de usuário" + +#: debianmemberportfolio/views.py:53 +msgid "all messages (i.e., full text search for developer name on all bug logs)" +msgstr "" +"Todas as mensagens (Ex. pesquisa completa do texto para o nome do " +"desenvolvedor em todos os logs de bug)" + +#: debianmemberportfolio/views.py:55 +msgid "WNPP" +msgstr "WNPP" + +#: debianmemberportfolio/views.py:56 +msgid "correspondent for bugs" +msgstr "correspondente para bugs" + +#: debianmemberportfolio/views.py:57 +msgid "one year open bug history graph" +msgstr "Histórico gráfico de bugs abertos há um ano" + +#: debianmemberportfolio/views.py:60 +msgid "Build" +msgstr "Construção" + +#: debianmemberportfolio/views.py:61 +msgid "buildd.d.o" +msgstr "buildd.d.o" + +#: debianmemberportfolio/views.py:62 +msgid "igloo" +msgstr "Iglu" + +#: debianmemberportfolio/views.py:65 +msgid "Quality Assurance" +msgstr "Garantia de Qualidade" + +#: debianmemberportfolio/views.py:66 +msgid "maintainer dashboard" +msgstr "painel do mantenedor" + +#: debianmemberportfolio/views.py:67 +msgid "lintian reports" +msgstr "relatórios lintian" + +#: debianmemberportfolio/views.py:68 +msgid "full lintian reports (i.e. including \"info\"-level messages)" +msgstr "todos os relatórios lintian (Ex. incluindo mensagens \"info\"-level)" + +#: debianmemberportfolio/views.py:70 +msgid "piuparts" +msgstr "piuparts" + +#: debianmemberportfolio/views.py:71 +msgid "Debian patch tracking system" +msgstr "Sistema de rastreamento de patches Debian" + +#: debianmemberportfolio/views.py:72 +msgid "Debian Url ChecKer" +msgstr "Validador de Url do Debian" + +#: debianmemberportfolio/views.py:75 +msgid "Mailing Lists" +msgstr "Listas de Discussão" + +#: debianmemberportfolio/views.py:76 +msgid "lists.d.o" +msgstr "lists.d.o" + +#: debianmemberportfolio/views.py:77 +msgid "lists.a.d.o" +msgstr "lists.a.d.o" + +#: debianmemberportfolio/views.py:78 +msgid "gmane" +msgstr "gmane" + +#: debianmemberportfolio/views.py:81 +msgid "Files" +msgstr "Arquivos" + +#: debianmemberportfolio/views.py:82 +msgid "people.d.o" +msgstr "people.d.o" + +#: debianmemberportfolio/views.py:83 +msgid "oldpeople" +msgstr "oldpeople" + +#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:93 +msgid "Alioth" +msgstr "Alioth" + +#: debianmemberportfolio/views.py:87 +msgid "Membership" +msgstr "Associação" + +#: debianmemberportfolio/views.py:88 +msgid "NM" +msgstr "NM" + +#: debianmemberportfolio/views.py:89 +msgid "DB information via finger" +msgstr "Infomações DB via finger" + +#: debianmemberportfolio/views.py:90 +msgid "DB information via HTTP" +msgstr "Informações DB via HTTP" + +#: debianmemberportfolio/views.py:91 +msgid "FOAF profile" +msgstr "perfil FOAF" + +#: debianmemberportfolio/views.py:92 +msgid "Salsa" +msgstr "Salsa" + +#: debianmemberportfolio/views.py:94 +msgid "Wiki" +msgstr "Wiki" + +#: debianmemberportfolio/views.py:95 +msgid "Forum" +msgstr "Fórum" + +#: debianmemberportfolio/views.py:98 +msgid "Miscellaneous" +msgstr "Miscelânea" + +#: debianmemberportfolio/views.py:99 +msgid "debtags" +msgstr "debtags" + +#: debianmemberportfolio/views.py:100 +msgid "Planet Debian (name)" +msgstr "Planet Debian (nome)" + +#: debianmemberportfolio/views.py:101 +msgid "Planet Debian (username)" +msgstr "Nome de usuário Debian" + +#: debianmemberportfolio/views.py:102 +msgid "links" +msgstr "links" + +#: debianmemberportfolio/views.py:103 +msgid "Debian website" +msgstr "Site do Debian" + +#: debianmemberportfolio/views.py:104 +msgid "Debian search" +msgstr "Pesquisa Debian" + +#: debianmemberportfolio/views.py:105 +msgid "GPG public key via finger" +msgstr "Chave pública GPG via finger" + +#: debianmemberportfolio/views.py:106 +msgid "GPG public key via HTTP" +msgstr "Chave pública GPG via HTTP" + +#: debianmemberportfolio/views.py:107 +msgid "NM, AM participation" +msgstr "Participação NM, AM" + +#: debianmemberportfolio/views.py:108 +msgid "Contribution information" +msgstr "Insira as suas informações pessoais" + +#: debianmemberportfolio/views.py:111 +msgid "Information reachable via ssh (for Debian Members)" +msgstr "Informação alcançável via ssh (para membros Debian)" + +#: debianmemberportfolio/views.py:112 +msgid "owned debian.net domains" +msgstr "domínios debian.net adquiridos" + +#: debianmemberportfolio/views.py:113 +msgid "" +"MIA database " +"information" +msgstr "" +"MIA informações " +"de banco de dados" + +#: debianmemberportfolio/views.py:115 +msgid "Group membership information" +msgstr "Informações de Grupos associados" + +#: debianmemberportfolio/views.py:118 +msgid "Ubuntu" +msgstr "Ubuntu" + +#: debianmemberportfolio/views.py:119 +msgid "Available patches from Ubuntu" +msgstr "Patches por Ubuntu disponíveis" + +#: debianmemberportfolio/model/urlbuilder.py:43 +msgid "Email address" +msgstr "Endereços de email" + +#: debianmemberportfolio/model/urlbuilder.py:44 +msgid "Name" +msgstr "Nome" + +#: debianmemberportfolio/model/urlbuilder.py:45 +msgid "GPG fingerprint" +msgstr "Fingerprint GPG" + +#: debianmemberportfolio/model/urlbuilder.py:46 +msgid "Debian user name" +msgstr "Nome de usuário Debian" + +#: debianmemberportfolio/model/urlbuilder.py:47 +msgid "Non Debian email address" +msgstr "Endereço de email não Debian" + +#: debianmemberportfolio/model/urlbuilder.py:48 +msgid "Salsa user name" +msgstr "Nome de usuário Debian" + +#: debianmemberportfolio/model/urlbuilder.py:49 +msgid "Alioth user name" +msgstr "Nome de usuário Alioth" + +#: debianmemberportfolio/model/urlbuilder.py:110 +#: debianmemberportfolio/model/urlbuilder.py:114 +#, python-format +msgid "Missing input: %s" +msgstr "Entrada ausente: %s" + +#: debianmemberportfolio/templates/base.html:24 +#: debianmemberportfolio/templates/base.html:31 +msgid "Debian Member Portfolio Service" +msgstr "Serviço de Portfolio dos Membros do Debian" + +#: debianmemberportfolio/templates/base.html:30 +msgid "Debian Logo" +msgstr "Logo Debian" + +#: debianmemberportfolio/templates/base.html:32 +msgid "" +"This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can " +"create a set of customized links leading to a Debian Member's or package " +"maintainer's information regarding Debian." +msgstr "" +"Este serviço tem sido inspirado por Stefano Zacchiroli's Página DDPortfolio na Debian Wiki. Você " +"pode criar um conjunto de links customizados apontando para informações, ou " +"de membro Debian, ou de mantenedor de pacotes a respeito de Debian." + +#: debianmemberportfolio/templates/base.html:39 +msgid "AGPL - Free Software" +msgstr "AGPL - Sofware Livre" + +#: debianmemberportfolio/templates/base.html:40 +#, python-format +msgid "" +"The service is available under the terms of the GNU Affero General Public License as published by " +"the Free Software Foundation, either version 3 of the License, or (at your " +"option) any later version. You can browse the source code or clone it from %(cloneurl)s using git. If you want to translate this service to " +"your language you can contribute at Weblate." +msgstr "" +"O serviço está disponível sob os termos da Licença Pública Geral Affero GNU conforme publicado " +"pela the Free Software Foundation, tanto na versão 3 da licença, como (a seu " +"critério) qualquer versão mais recente. Você pode visualizar o código fonte " +"ou cloná-lo%(cloneurl)s usando git. Se você " +"quiser traduzir este serviço para o seu idioma você pode contribuir em Weblate." + +#: debianmemberportfolio/templates/base.html:41 +msgid "Copyright © 2009-2018 Jan Dittberner" +msgstr "Direitos Autorais © 2009-2018 Jan Dittberner" + +#: debianmemberportfolio/templates/showform.html:22 +msgid "Enter your personal information" +msgstr "Insira as suas informações pessoais" + +#: debianmemberportfolio/templates/showform.html:29 +msgid "Debian Member Portfolio" +msgstr "Portfolio de Membro Debian" + +#: debianmemberportfolio/templates/showform.html:31 +msgid "Email address:" +msgstr "Endereço de email:" + +#: debianmemberportfolio/templates/showform.html:40 +msgid "Show all form fields" +msgstr "Mostrar todos os campos" + +#: debianmemberportfolio/templates/showform.html:43 +msgid "Name:" +msgstr "Nome:" + +#: debianmemberportfolio/templates/showform.html:50 +msgid "GPG fingerprint:" +msgstr "Fingerprint GPG:" + +#: debianmemberportfolio/templates/showform.html:57 +msgid "Debian user name:" +msgstr "Nome de usuário Debian:" + +#: debianmemberportfolio/templates/showform.html:64 +msgid "Non Debian email address:" +msgstr "Endereço de email não Debian:" + +#: debianmemberportfolio/templates/showform.html:71 +msgid "Salsa user name:" +msgstr "nome de utilizador Salsa:" + +#: debianmemberportfolio/templates/showform.html:78 +msgid "Alioth user name:" +msgstr "Nome de usuário Alioth:" + +#: debianmemberportfolio/templates/showform.html:85 +msgid "Wiki user name:" +msgstr "Nome de usuário Wiki:" + +#: debianmemberportfolio/templates/showform.html:92 +msgid "Forum user id:" +msgstr "Id de usuário do fórum:" + +#: debianmemberportfolio/templates/showform.html:99 +msgid "Output format:" +msgstr "Formato de saída:" + +#: debianmemberportfolio/templates/showform.html:106 +msgid "Build Debian Member Portfolio URLs" +msgstr "URLs de Portfolio dos Membros Debian em Construção" + +#: debianmemberportfolio/templates/showurls.html:21 +msgid "Your personal links" +msgstr "Os seus links pessoais" + +#: debianmemberportfolio/templates/showurls.html:25 +msgid "Debian Member Porfolio" +msgstr "Portfolio de Membro Debian" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "Usage" +msgstr "Modo de uso" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "URL" +msgstr "URL" + +#: debianmemberportfolio/templates/showurls.html:38 +msgid "Error during URL creation:" +msgstr "Erro durante a criação da URL:" + +#: debianmemberportfolio/templates/showurls.html:59 +msgid "Restart" +msgstr "Reiniciar" diff --git a/debianmemberportfolio/translations/pt_PT/LC_MESSAGES/messages.po b/debianmemberportfolio/translations/pt_PT/LC_MESSAGES/messages.po new file mode 100644 index 0000000..ec3c994 --- /dev/null +++ b/debianmemberportfolio/translations/pt_PT/LC_MESSAGES/messages.po @@ -0,0 +1,434 @@ +# German translations for the Debian Member Portfolio Service. +# +# Copyright (C) 2009-2014 Jan Dittberner +# This file is distributed under the same license as the Debian Member +# Portfolio Service project. +# Translators: +# Jan Dittberner , 2009-2014 +msgid "" +msgstr "" +"Project-Id-Version: Debian Member Portfolio Service 0.3.1\n" +"Report-Msgid-Bugs-To: jan@dittberner.info\n" +"POT-Creation-Date: 2018-05-12 10:32+0200\n" +"PO-Revision-Date: 2020-08-23 21:36+0000\n" +"Last-Translator: ssantos \n" +"Language-Team: Portuguese (Portugal) \n" +"Language: pt_PT\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.2.1-dev\n" +"Generated-By: Babel 2.5.0\n" + +#: debianmemberportfolio/forms.py:67 +msgid "JSON" +msgstr "JSON" + +#: debianmemberportfolio/forms.py:67 +msgid "HTML" +msgstr "HTML" + +#: debianmemberportfolio/views.py:40 +msgid "Overview" +msgstr "Visão Geral" + +#: debianmemberportfolio/views.py:41 +msgid "Debian Member's Package Overview" +msgstr "Visão geral dos Pacotes dos Membros do Debian" + +#: debianmemberportfolio/views.py:42 +msgid "" +"Debian Member's Package Overview\n" +"... showing all email addresses" +msgstr "" +"Visão geral dos Pacote dos Membros do Debian\n" +"... exibindo todos os endereços de email" + +#: debianmemberportfolio/views.py:46 +msgid "Bugs" +msgstr "Bugs" + +#: debianmemberportfolio/views.py:47 +msgid "" +"bugs received\n" +"(note: co-maintainers not listed, see #430986)" +msgstr "" +"Bugs recebidos\n" +"(nota: co-mantenedores não listados, veja #430986)" + +#: debianmemberportfolio/views.py:51 +msgid "bugs reported" +msgstr "Bugs reportados" + +#: debianmemberportfolio/views.py:52 +msgid "user tags" +msgstr "Tags de utilizador" + +#: debianmemberportfolio/views.py:53 +msgid "all messages (i.e., full text search for developer name on all bug logs)" +msgstr "" +"Todas as mensagens (Ex. pesquisa completa do texto para o nome do " +"programador em todos os logs de bug)" + +#: debianmemberportfolio/views.py:55 +msgid "WNPP" +msgstr "WNPP" + +#: debianmemberportfolio/views.py:56 +msgid "correspondent for bugs" +msgstr "correspondente para bugs" + +#: debianmemberportfolio/views.py:57 +msgid "one year open bug history graph" +msgstr "Histórico gráfico de bugs abertos há um ano" + +#: debianmemberportfolio/views.py:60 +msgid "Build" +msgstr "Construção" + +#: debianmemberportfolio/views.py:61 +msgid "buildd.d.o" +msgstr "buildd.d.o" + +#: debianmemberportfolio/views.py:62 +msgid "igloo" +msgstr "Iglu" + +#: debianmemberportfolio/views.py:65 +msgid "Quality Assurance" +msgstr "Garantia de Qualidade" + +#: debianmemberportfolio/views.py:66 +msgid "maintainer dashboard" +msgstr "painel do mantenedor" + +#: debianmemberportfolio/views.py:67 +msgid "lintian reports" +msgstr "relatórios lintian" + +#: debianmemberportfolio/views.py:68 +msgid "full lintian reports (i.e. including \"info\"-level messages)" +msgstr "todos os relatórios lintian (Ex. incluindo mensagens \"info\"-level)" + +#: debianmemberportfolio/views.py:70 +msgid "piuparts" +msgstr "piuparts" + +#: debianmemberportfolio/views.py:71 +msgid "Debian patch tracking system" +msgstr "Sistema de rastreamento de patches Debian" + +#: debianmemberportfolio/views.py:72 +msgid "Debian Url ChecKer" +msgstr "Validador de Url do Debian" + +#: debianmemberportfolio/views.py:75 +msgid "Mailing Lists" +msgstr "Listas de Discussão" + +#: debianmemberportfolio/views.py:76 +msgid "lists.d.o" +msgstr "lists.d.o" + +#: debianmemberportfolio/views.py:77 +msgid "lists.a.d.o" +msgstr "lists.a.d.o" + +#: debianmemberportfolio/views.py:78 +msgid "gmane" +msgstr "gmane" + +#: debianmemberportfolio/views.py:81 +msgid "Files" +msgstr "Ficheiros" + +#: debianmemberportfolio/views.py:82 +msgid "people.d.o" +msgstr "people.d.o" + +#: debianmemberportfolio/views.py:83 +msgid "oldpeople" +msgstr "oldpeople" + +#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:93 +msgid "Alioth" +msgstr "Alioth" + +#: debianmemberportfolio/views.py:87 +msgid "Membership" +msgstr "Associação" + +#: debianmemberportfolio/views.py:88 +msgid "NM" +msgstr "NM" + +#: debianmemberportfolio/views.py:89 +msgid "DB information via finger" +msgstr "Infomações DB via finger" + +#: debianmemberportfolio/views.py:90 +msgid "DB information via HTTP" +msgstr "Informações DB via HTTP" + +#: debianmemberportfolio/views.py:91 +msgid "FOAF profile" +msgstr "perfil FOAF" + +#: debianmemberportfolio/views.py:92 +msgid "Salsa" +msgstr "Salsa" + +#: debianmemberportfolio/views.py:94 +msgid "Wiki" +msgstr "Wiki" + +#: debianmemberportfolio/views.py:95 +msgid "Forum" +msgstr "Fórum" + +#: debianmemberportfolio/views.py:98 +msgid "Miscellaneous" +msgstr "Miscelânea" + +#: debianmemberportfolio/views.py:99 +msgid "debtags" +msgstr "debtags" + +#: debianmemberportfolio/views.py:100 +msgid "Planet Debian (name)" +msgstr "Planet Debian (nome)" + +#: debianmemberportfolio/views.py:101 +msgid "Planet Debian (username)" +msgstr "Nome de utilizador Debian" + +#: debianmemberportfolio/views.py:102 +msgid "links" +msgstr "ligações" + +#: debianmemberportfolio/views.py:103 +msgid "Debian website" +msgstr "Site do Debian" + +#: debianmemberportfolio/views.py:104 +msgid "Debian search" +msgstr "Pesquisa Debian" + +#: debianmemberportfolio/views.py:105 +msgid "GPG public key via finger" +msgstr "Chave pública GPG via finger" + +#: debianmemberportfolio/views.py:106 +msgid "GPG public key via HTTP" +msgstr "Chave pública GPG via HTTP" + +#: debianmemberportfolio/views.py:107 +msgid "NM, AM participation" +msgstr "Participação NM, AM" + +#: debianmemberportfolio/views.py:108 +msgid "Contribution information" +msgstr "Insira as suas informações pessoais" + +#: debianmemberportfolio/views.py:109 +msgid "Repology information" +msgstr "" + +#: debianmemberportfolio/views.py:112 +msgid "Information reachable via ssh (for Debian Members)" +msgstr "Informação alcançável via ssh (para membros Debian)" + +#: debianmemberportfolio/views.py:113 +msgid "owned debian.net domains" +msgstr "domínios debian.net adquiridos" + +#: debianmemberportfolio/views.py:114 +msgid "" +"MIA database " +"information" +msgstr "" +"MIA " +"informações de banco de dados" + +#: debianmemberportfolio/views.py:116 +msgid "Group membership information" +msgstr "Informações de Grupos associados" + +#: debianmemberportfolio/views.py:119 +msgid "Ubuntu" +msgstr "Ubuntu" + +#: debianmemberportfolio/views.py:120 +msgid "Available patches from Ubuntu" +msgstr "Patches por Ubuntu disponíveis" + +#: debianmemberportfolio/model/urlbuilder.py:43 +msgid "Email address" +msgstr "Endereços de email" + +#: debianmemberportfolio/model/urlbuilder.py:44 +msgid "Name" +msgstr "Nome" + +#: debianmemberportfolio/model/urlbuilder.py:45 +msgid "GPG fingerprint" +msgstr "Fingerprint GPG" + +#: debianmemberportfolio/model/urlbuilder.py:46 +msgid "Debian user name" +msgstr "Nome de utilizador Debian" + +#: debianmemberportfolio/model/urlbuilder.py:47 +msgid "Non Debian email address" +msgstr "Endereço de email não Debian" + +#: debianmemberportfolio/model/urlbuilder.py:48 +msgid "Salsa user name" +msgstr "Nome de utilizador Debian" + +#: debianmemberportfolio/model/urlbuilder.py:49 +msgid "Alioth user name" +msgstr "Nome de utilizador Alioth" + +#: debianmemberportfolio/model/urlbuilder.py:110 +#: debianmemberportfolio/model/urlbuilder.py:114 +#, python-format +msgid "Missing input: %s" +msgstr "Entrada ausente: %s" + +#: debianmemberportfolio/templates/base.html:24 +#: debianmemberportfolio/templates/base.html:31 +msgid "Debian Member Portfolio Service" +msgstr "Serviço de Portfolio dos Membros do Debian" + +#: debianmemberportfolio/templates/base.html:30 +msgid "Debian Logo" +msgstr "Logo Debian" + +#: debianmemberportfolio/templates/base.html:32 +msgid "" +"This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can " +"create a set of customized links leading to a Debian Member's or package " +"maintainer's information regarding Debian." +msgstr "" +"Este serviço tem sido inspirado por Stefano Zacchiroli's Página DDPortfolio na Debian Wiki. Pode " +"criar um conjunto de ligações customizados apontando para informações, ou de " +"membro Debian, ou de mantenedor de pacotes a respeito de Debian." + +#: debianmemberportfolio/templates/base.html:39 +msgid "AGPL - Free Software" +msgstr "AGPL - Sofware Livre" + +#: debianmemberportfolio/templates/base.html:40 +#, python-format +msgid "" +"The service is available under the terms of the GNU Affero General Public License as published by " +"the Free Software Foundation, either version 3 of the License, or (at your " +"option) any later version. You can browse the source code or clone it from %(cloneurl)s using git. If you want to translate this service to " +"your language you can contribute at Weblate." +msgstr "" +"O serviço está disponível sob os termos da Licença Pública Geral Affero GNU conforme publicado " +"pela the Free Software Foundation, tanto na versão 3 da licença, como (a seu " +"critério) qualquer versão mais recente. Pode visualizar o código fonte ou " +"cloná-lo%(cloneurl)s usando git. Se quiser " +"traduzir este serviço para o seu idioma pode contribuir em Weblate." + +#: debianmemberportfolio/templates/base.html:41 +msgid "Copyright © 2009-2018 Jan Dittberner" +msgstr "Direitos Autorais © 2009-2018 Jan Dittberner" + +#: debianmemberportfolio/templates/showform.html:22 +msgid "Enter your personal information" +msgstr "Insira as suas informações pessoais" + +#: debianmemberportfolio/templates/showform.html:29 +msgid "Debian Member Portfolio" +msgstr "Portfolio de Membro Debian" + +#: debianmemberportfolio/templates/showform.html:31 +msgid "Email address:" +msgstr "Endereço de email:" + +#: debianmemberportfolio/templates/showform.html:40 +msgid "Show all form fields" +msgstr "Mostrar todos os campos" + +#: debianmemberportfolio/templates/showform.html:43 +msgid "Name:" +msgstr "Nome:" + +#: debianmemberportfolio/templates/showform.html:50 +msgid "GPG fingerprint:" +msgstr "Fingerprint GPG:" + +#: debianmemberportfolio/templates/showform.html:57 +msgid "Debian user name:" +msgstr "Nome de utilizador Debian:" + +#: debianmemberportfolio/templates/showform.html:64 +msgid "Non Debian email address:" +msgstr "Endereço de email não Debian:" + +#: debianmemberportfolio/templates/showform.html:71 +msgid "Salsa user name:" +msgstr "nome de utilizador Salsa:" + +#: debianmemberportfolio/templates/showform.html:78 +msgid "Alioth user name:" +msgstr "Nome de utilizador Alioth:" + +#: debianmemberportfolio/templates/showform.html:85 +msgid "Wiki user name:" +msgstr "Nome de utilizador Wiki:" + +#: debianmemberportfolio/templates/showform.html:92 +msgid "Forum user id:" +msgstr "Id de utilizador do fórum:" + +#: debianmemberportfolio/templates/showform.html:99 +msgid "Output format:" +msgstr "Formato de saída:" + +#: debianmemberportfolio/templates/showform.html:106 +msgid "Build Debian Member Portfolio URLs" +msgstr "URLs de Portfolio dos Membros Debian em Construção" + +#: debianmemberportfolio/templates/showurls.html:21 +msgid "Your personal links" +msgstr "As suas ligações pessoais" + +#: debianmemberportfolio/templates/showurls.html:25 +msgid "Debian Member Porfolio" +msgstr "Portfolio de Membro Debian" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "Usage" +msgstr "Modo de uso" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "URL" +msgstr "URL" + +#: debianmemberportfolio/templates/showurls.html:38 +msgid "Error during URL creation:" +msgstr "Erro durante a criação da URL:" + +#: debianmemberportfolio/templates/showurls.html:59 +msgid "Restart" +msgstr "Reiniciar" diff --git a/debianmemberportfolio/translations/ru/LC_MESSAGES/messages.po b/debianmemberportfolio/translations/ru/LC_MESSAGES/messages.po new file mode 100644 index 0000000..974aa4f --- /dev/null +++ b/debianmemberportfolio/translations/ru/LC_MESSAGES/messages.po @@ -0,0 +1,435 @@ +# German translations for the Debian Member Portfolio Service. +# +# Copyright (C) 2009-2014 Jan Dittberner +# This file is distributed under the same license as the Debian Member +# Portfolio Service project. +# Translators: +# Jan Dittberner , 2009-2014 +msgid "" +msgstr "" +"Project-Id-Version: Debian Member Portfolio Service 0.3.1\n" +"Report-Msgid-Bugs-To: jan@dittberner.info\n" +"POT-Creation-Date: 2018-05-12 10:32+0200\n" +"PO-Revision-Date: 2020-09-09 18:36+0000\n" +"Last-Translator: Nikita Epifanov \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.3-dev\n" +"Generated-By: Babel 2.5.0\n" + +#: debianmemberportfolio/forms.py:67 +msgid "JSON" +msgstr "JSON" + +#: debianmemberportfolio/forms.py:67 +msgid "HTML" +msgstr "HTML" + +#: debianmemberportfolio/views.py:40 +msgid "Overview" +msgstr "Обзор" + +#: debianmemberportfolio/views.py:41 +msgid "Debian Member's Package Overview" +msgstr "Обзор пакетов участников Debian" + +#: debianmemberportfolio/views.py:42 +msgid "" +"Debian Member's Package Overview\n" +"... showing all email addresses" +msgstr "" +"Обзор пакетов участников Debian\n" +"... отображение всех адресов электронной почты" + +#: debianmemberportfolio/views.py:46 +msgid "Bugs" +msgstr "Ошибки" + +#: debianmemberportfolio/views.py:47 +msgid "" +"bugs received\n" +"(note: co-maintainers not listed, see #430986)" +msgstr "" +"полученные ошибки\n" +"(примечание: со-сопровождающие не указаны, см. #430986)" + +#: debianmemberportfolio/views.py:51 +msgid "bugs reported" +msgstr "сообщения об ошибках" + +#: debianmemberportfolio/views.py:52 +msgid "user tags" +msgstr "теги пользователей" + +#: debianmemberportfolio/views.py:53 +msgid "all messages (i.e., full text search for developer name on all bug logs)" +msgstr "" +"все сообщения (т.е. полнотекстовый поиск имени разработчика по всем журналам " +"ошибок)" + +#: debianmemberportfolio/views.py:55 +msgid "WNPP" +msgstr "WNPP" + +#: debianmemberportfolio/views.py:56 +msgid "correspondent for bugs" +msgstr "корреспондент по вопросам ошибок" + +#: debianmemberportfolio/views.py:57 +msgid "one year open bug history graph" +msgstr "график истории открытых ошибок за один год" + +#: debianmemberportfolio/views.py:60 +msgid "Build" +msgstr "Сборка" + +#: debianmemberportfolio/views.py:61 +msgid "buildd.d.o" +msgstr "buildd.d.o" + +#: debianmemberportfolio/views.py:62 +msgid "igloo" +msgstr "иглу" + +#: debianmemberportfolio/views.py:65 +msgid "Quality Assurance" +msgstr "Гарантия качества" + +#: debianmemberportfolio/views.py:66 +msgid "maintainer dashboard" +msgstr "панель мониторинга" + +#: debianmemberportfolio/views.py:67 +msgid "lintian reports" +msgstr "Lintian отчеты" + +#: debianmemberportfolio/views.py:68 +msgid "full lintian reports (i.e. including \"info\"-level messages)" +msgstr "полные отчеты Lintian (т. е. включая сообщения уровня \"информация\")" + +#: debianmemberportfolio/views.py:70 +msgid "piuparts" +msgstr "piuparts" + +#: debianmemberportfolio/views.py:71 +msgid "Debian patch tracking system" +msgstr "Система отслеживания патчей Debian" + +#: debianmemberportfolio/views.py:72 +msgid "Debian Url ChecKer" +msgstr "Debian Url проверщик" + +#: debianmemberportfolio/views.py:75 +msgid "Mailing Lists" +msgstr "Списки рассылки" + +#: debianmemberportfolio/views.py:76 +msgid "lists.d.o" +msgstr "lists.d.o" + +#: debianmemberportfolio/views.py:77 +msgid "lists.a.d.o" +msgstr "lists.a.d.o" + +#: debianmemberportfolio/views.py:78 +msgid "gmane" +msgstr "gmane" + +#: debianmemberportfolio/views.py:81 +msgid "Files" +msgstr "Файлы" + +#: debianmemberportfolio/views.py:82 +msgid "people.d.o" +msgstr "people.d.o" + +#: debianmemberportfolio/views.py:83 +msgid "oldpeople" +msgstr "oldpeople" + +#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:93 +msgid "Alioth" +msgstr "Alioth" + +#: debianmemberportfolio/views.py:87 +msgid "Membership" +msgstr "Членство" + +#: debianmemberportfolio/views.py:88 +msgid "NM" +msgstr "NM" + +#: debianmemberportfolio/views.py:89 +msgid "DB information via finger" +msgstr "Информация о ДБ по отпечатку" + +#: debianmemberportfolio/views.py:90 +msgid "DB information via HTTP" +msgstr "Информация о ДБ по HTTP" + +#: debianmemberportfolio/views.py:91 +msgid "FOAF profile" +msgstr "Профиль FOAF" + +#: debianmemberportfolio/views.py:92 +msgid "Salsa" +msgstr "Salsa" + +#: debianmemberportfolio/views.py:94 +msgid "Wiki" +msgstr "Wiki" + +#: debianmemberportfolio/views.py:95 +msgid "Forum" +msgstr "Форум" + +#: debianmemberportfolio/views.py:98 +msgid "Miscellaneous" +msgstr "Разное" + +#: debianmemberportfolio/views.py:99 +msgid "debtags" +msgstr "debtags" + +#: debianmemberportfolio/views.py:100 +msgid "Planet Debian (name)" +msgstr "Планета Debian (имя)" + +#: debianmemberportfolio/views.py:101 +msgid "Planet Debian (username)" +msgstr "Планета Debian (имя пользователя)" + +#: debianmemberportfolio/views.py:102 +msgid "links" +msgstr "ссылки" + +#: debianmemberportfolio/views.py:103 +msgid "Debian website" +msgstr "Сайт Debian" + +#: debianmemberportfolio/views.py:104 +msgid "Debian search" +msgstr "Поиск Debian" + +#: debianmemberportfolio/views.py:105 +msgid "GPG public key via finger" +msgstr "Открытый ключ GPG через отпечаток" + +#: debianmemberportfolio/views.py:106 +msgid "GPG public key via HTTP" +msgstr "Открытый ключ GPG через HTTP" + +#: debianmemberportfolio/views.py:107 +msgid "NM, AM participation" +msgstr "NM, AM участие" + +#: debianmemberportfolio/views.py:108 +msgid "Contribution information" +msgstr "Информация о вкладе" + +#: debianmemberportfolio/views.py:109 +msgid "Repology information" +msgstr "Информация о репологии" + +#: debianmemberportfolio/views.py:112 +msgid "Information reachable via ssh (for Debian Members)" +msgstr "Информация доступна по ssh (для членов Debian)" + +#: debianmemberportfolio/views.py:113 +msgid "owned debian.net domains" +msgstr "собственные домены debian.net" + +#: debianmemberportfolio/views.py:114 +msgid "" +"MIA database " +"information" +msgstr "" +"Информация из базы данных MIA" + +#: debianmemberportfolio/views.py:116 +msgid "Group membership information" +msgstr "Информация о членстве в группе" + +#: debianmemberportfolio/views.py:119 +msgid "Ubuntu" +msgstr "Ubuntu" + +#: debianmemberportfolio/views.py:120 +msgid "Available patches from Ubuntu" +msgstr "Доступные патчи из Ubuntu" + +#: debianmemberportfolio/model/urlbuilder.py:43 +msgid "Email address" +msgstr "Адрес электронной почты" + +#: debianmemberportfolio/model/urlbuilder.py:44 +msgid "Name" +msgstr "Имя" + +#: debianmemberportfolio/model/urlbuilder.py:45 +msgid "GPG fingerprint" +msgstr "Отпечаток GPG" + +#: debianmemberportfolio/model/urlbuilder.py:46 +msgid "Debian user name" +msgstr "Имя пользователя Debian" + +#: debianmemberportfolio/model/urlbuilder.py:47 +msgid "Non Debian email address" +msgstr "Электронный адрес, отличный от Debian" + +#: debianmemberportfolio/model/urlbuilder.py:48 +msgid "Salsa user name" +msgstr "Имя пользователя Salsa" + +#: debianmemberportfolio/model/urlbuilder.py:49 +msgid "Alioth user name" +msgstr "Имя пользователя Alioth" + +#: debianmemberportfolio/model/urlbuilder.py:110 +#: debianmemberportfolio/model/urlbuilder.py:114 +#, python-format +msgid "Missing input: %s" +msgstr "Пропущенный ввод: %s" + +#: debianmemberportfolio/templates/base.html:24 +#: debianmemberportfolio/templates/base.html:31 +msgid "Debian Member Portfolio Service" +msgstr "Служба портфолио участников Debian" + +#: debianmemberportfolio/templates/base.html:30 +msgid "Debian Logo" +msgstr "Логотип Debian" + +#: debianmemberportfolio/templates/base.html:32 +msgid "" +"This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can " +"create a set of customized links leading to a Debian Member's or package " +"maintainer's information regarding Debian." +msgstr "" +"Этот сервис был вдохновлен страницей Стефано Заккироли DDPortfolio в Debian Wiki. Вы можете создать " +"набор настраиваемых ссылок, ведущих к информации участника Debian или " +"сопровождающего пакета относительно Debian." + +#: debianmemberportfolio/templates/base.html:39 +msgid "AGPL - Free Software" +msgstr "AGPL - Свободное программное обеспечение" + +#: debianmemberportfolio/templates/base.html:40 +#, python-format +msgid "" +"The service is available under the terms of the GNU Affero General Public License as published by " +"the Free Software Foundation, either version 3 of the License, or (at your " +"option) any later version. You can browse the source code or clone it from %(cloneurl)s using git. If you want to translate this service to " +"your language you can contribute at Weblate." +msgstr "" +"Служба доступна на условиях Стандартной общественной лицензии GNU опубликованной Фондом " +"свободного программного обеспечения, либо 3 версии Лицензии, либо (по вашему " +"выбору) любой более поздней версии. Вы можете просмотреть исходный код или " +"клонировать его из %(cloneurl)s используя git. Если " +"вы хотите перевести эту услугу на свой язык, вы можете внести свой вклад по " +"ссылке Weblate." + +#: debianmemberportfolio/templates/base.html:41 +msgid "Copyright © 2009-2018 Jan Dittberner" +msgstr "Copyright © 2009-2018 Jan Dittberner" + +#: debianmemberportfolio/templates/showform.html:22 +msgid "Enter your personal information" +msgstr "Введите вашу личную информацию" + +#: debianmemberportfolio/templates/showform.html:29 +msgid "Debian Member Portfolio" +msgstr "Портфолио участников Debian" + +#: debianmemberportfolio/templates/showform.html:31 +msgid "Email address:" +msgstr "Адрес электронной почты:" + +#: debianmemberportfolio/templates/showform.html:40 +msgid "Show all form fields" +msgstr "Показать все поля формы" + +#: debianmemberportfolio/templates/showform.html:43 +msgid "Name:" +msgstr "Имя:" + +#: debianmemberportfolio/templates/showform.html:50 +msgid "GPG fingerprint:" +msgstr "Отпечаток GPG:" + +#: debianmemberportfolio/templates/showform.html:57 +msgid "Debian user name:" +msgstr "Имя пользователя Debian:" + +#: debianmemberportfolio/templates/showform.html:64 +msgid "Non Debian email address:" +msgstr "Электронный адрес, отличный от Debian:" + +#: debianmemberportfolio/templates/showform.html:71 +msgid "Salsa user name:" +msgstr "Имя пользователя Salsa:" + +#: debianmemberportfolio/templates/showform.html:78 +msgid "Alioth user name:" +msgstr "Имя пользователя Alioth:" + +#: debianmemberportfolio/templates/showform.html:85 +msgid "Wiki user name:" +msgstr "Имя пользователя Wiki:" + +#: debianmemberportfolio/templates/showform.html:92 +msgid "Forum user id:" +msgstr "ID пользователя форума:" + +#: debianmemberportfolio/templates/showform.html:99 +msgid "Output format:" +msgstr "Формат вывода:" + +#: debianmemberportfolio/templates/showform.html:106 +msgid "Build Debian Member Portfolio URLs" +msgstr "Создание URL-адресов портфолио участников Debian" + +#: debianmemberportfolio/templates/showurls.html:21 +msgid "Your personal links" +msgstr "Ваши личные ссылки" + +#: debianmemberportfolio/templates/showurls.html:25 +msgid "Debian Member Porfolio" +msgstr "Портфолио участников Debian" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "Usage" +msgstr "Использование" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "URL" +msgstr "URL" + +#: debianmemberportfolio/templates/showurls.html:38 +msgid "Error during URL creation:" +msgstr "Ошибка при создании URL:" + +#: debianmemberportfolio/templates/showurls.html:59 +msgid "Restart" +msgstr "Перезапустить" diff --git a/debianmemberportfolio/translations/sv/LC_MESSAGES/messages.po b/debianmemberportfolio/translations/sv/LC_MESSAGES/messages.po new file mode 100644 index 0000000..55783fd --- /dev/null +++ b/debianmemberportfolio/translations/sv/LC_MESSAGES/messages.po @@ -0,0 +1,433 @@ +# German translations for the Debian Member Portfolio Service. +# +# Copyright (C) 2009-2014 Jan Dittberner +# This file is distributed under the same license as the Debian Member +# Portfolio Service project. +# Translators: +# Jan Dittberner , 2009-2014 +msgid "" +msgstr "" +"Project-Id-Version: Debian Member Portfolio Service 0.3.1\n" +"Report-Msgid-Bugs-To: jan@dittberner.info\n" +"POT-Creation-Date: 2018-05-12 10:32+0200\n" +"PO-Revision-Date: 2019-10-17 17:52+0000\n" +"Last-Translator: Mattias Münster \n" +"Language-Team: Swedish \n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.9\n" +"Generated-By: Babel 2.5.0\n" + +#: debianmemberportfolio/forms.py:67 +msgid "JSON" +msgstr "JSON" + +#: debianmemberportfolio/forms.py:67 +msgid "HTML" +msgstr "HTML" + +#: debianmemberportfolio/views.py:40 +msgid "Overview" +msgstr "Översikt" + +#: debianmemberportfolio/views.py:41 +msgid "Debian Member's Package Overview" +msgstr "Debian-medlemspaketets översikt" + +#: debianmemberportfolio/views.py:42 +msgid "" +"Debian Member's Package Overview\n" +"... showing all email addresses" +msgstr "" +"Debian-medlemspaketets översikt\n" +"... visar alla e-postadresser" + +#: debianmemberportfolio/views.py:46 +msgid "Bugs" +msgstr "Buggar" + +#: debianmemberportfolio/views.py:47 +msgid "" +"bugs received\n" +"(note: co-maintainers not listed, see #430986)" +msgstr "" +"buggar mottagna\n" +"(Obs: medansvariga som inte finns listade, se #430986)" + +#: debianmemberportfolio/views.py:51 +msgid "bugs reported" +msgstr "buggar rapporterade" + +#: debianmemberportfolio/views.py:52 +msgid "user tags" +msgstr "användartaggar" + +#: debianmemberportfolio/views.py:53 +msgid "all messages (i.e., full text search for developer name on all bug logs)" +msgstr "" +"alla meddelanden (dvs. fulltextsökning efter utvecklarnamn i alla felloggar)" + +#: debianmemberportfolio/views.py:55 +msgid "WNPP" +msgstr "WNPP" + +#: debianmemberportfolio/views.py:56 +msgid "correspondent for bugs" +msgstr "korrespondent för buggar" + +#: debianmemberportfolio/views.py:57 +msgid "one year open bug history graph" +msgstr "ett års öppen bugghistorik diagram" + +#: debianmemberportfolio/views.py:60 +msgid "Build" +msgstr "Bygge" + +#: debianmemberportfolio/views.py:61 +msgid "buildd.d.o" +msgstr "bygged.d.o" + +#: debianmemberportfolio/views.py:62 +msgid "igloo" +msgstr "igloo" + +#: debianmemberportfolio/views.py:65 +msgid "Quality Assurance" +msgstr "Kvalitetssäkring" + +#: debianmemberportfolio/views.py:66 +msgid "maintainer dashboard" +msgstr "instrumentpanel för underhållare" + +#: debianmemberportfolio/views.py:67 +msgid "lintian reports" +msgstr "lintian rapporter" + +#: debianmemberportfolio/views.py:68 +msgid "full lintian reports (i.e. including \"info\"-level messages)" +msgstr "" +"fullständiga lintianrapporter (dvs. inklusive \"info\" -nivåmeddelanden)" + +#: debianmemberportfolio/views.py:70 +msgid "piuparts" +msgstr "piuparts" + +#: debianmemberportfolio/views.py:71 +msgid "Debian patch tracking system" +msgstr "Debian patch-spårningssystem" + +#: debianmemberportfolio/views.py:72 +msgid "Debian Url ChecKer" +msgstr "Debian URL-kontroll" + +#: debianmemberportfolio/views.py:75 +msgid "Mailing Lists" +msgstr "Sändlistor" + +#: debianmemberportfolio/views.py:76 +msgid "lists.d.o" +msgstr "lists.d.o" + +#: debianmemberportfolio/views.py:77 +msgid "lists.a.d.o" +msgstr "lists.a.d.o" + +#: debianmemberportfolio/views.py:78 +msgid "gmane" +msgstr "gmane" + +#: debianmemberportfolio/views.py:81 +msgid "Files" +msgstr "Filer" + +#: debianmemberportfolio/views.py:82 +msgid "people.d.o" +msgstr "people.d.o" + +#: debianmemberportfolio/views.py:83 +msgid "oldpeople" +msgstr "oldpeople" + +#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:93 +msgid "Alioth" +msgstr "Alioth" + +#: debianmemberportfolio/views.py:87 +msgid "Membership" +msgstr "Medlemskap" + +#: debianmemberportfolio/views.py:88 +msgid "NM" +msgstr "NM" + +#: debianmemberportfolio/views.py:89 +msgid "DB information via finger" +msgstr "DB-information via finger" + +#: debianmemberportfolio/views.py:90 +msgid "DB information via HTTP" +msgstr "DB-information via HTTP" + +#: debianmemberportfolio/views.py:91 +msgid "FOAF profile" +msgstr "FOAF-profil" + +#: debianmemberportfolio/views.py:92 +msgid "Salsa" +msgstr "Salsa" + +#: debianmemberportfolio/views.py:94 +msgid "Wiki" +msgstr "Wiki" + +#: debianmemberportfolio/views.py:95 +msgid "Forum" +msgstr "Forum" + +#: debianmemberportfolio/views.py:98 +msgid "Miscellaneous" +msgstr "Diverse" + +#: debianmemberportfolio/views.py:99 +msgid "debtags" +msgstr "debtags" + +#: debianmemberportfolio/views.py:100 +msgid "Planet Debian (name)" +msgstr "Planet Debian (namn)" + +#: debianmemberportfolio/views.py:101 +msgid "Planet Debian (username)" +msgstr "Planet Debian (användarnamn)" + +#: debianmemberportfolio/views.py:102 +msgid "links" +msgstr "länkar" + +#: debianmemberportfolio/views.py:103 +msgid "Debian website" +msgstr "Debian webbplats" + +#: debianmemberportfolio/views.py:104 +msgid "Debian search" +msgstr "Debian sökning" + +#: debianmemberportfolio/views.py:105 +msgid "GPG public key via finger" +msgstr "GPG offentlig nyckel via finger" + +#: debianmemberportfolio/views.py:106 +msgid "GPG public key via HTTP" +msgstr "GPG offentlig nyckel via HTTP" + +#: debianmemberportfolio/views.py:107 +msgid "NM, AM participation" +msgstr "NM, AM deltagande" + +#: debianmemberportfolio/views.py:108 +msgid "Contribution information" +msgstr "Information om bidrag" + +#: debianmemberportfolio/views.py:109 +msgid "Repology information" +msgstr "Information om repologi" + +#: debianmemberportfolio/views.py:112 +msgid "Information reachable via ssh (for Debian Members)" +msgstr "Information som kan nås via SSH (för Debianmedlemmar)" + +#: debianmemberportfolio/views.py:113 +msgid "owned debian.net domains" +msgstr "ägda debian.net domäner" + +#: debianmemberportfolio/views.py:114 +msgid "" +"MIA database " +"information" +msgstr "" +"MIA " +"databasinformation" + +#: debianmemberportfolio/views.py:116 +msgid "Group membership information" +msgstr "Information om gruppmedlemskap" + +#: debianmemberportfolio/views.py:119 +msgid "Ubuntu" +msgstr "Ubuntu" + +#: debianmemberportfolio/views.py:120 +msgid "Available patches from Ubuntu" +msgstr "Tillgängliga patchar från Ubuntu" + +#: debianmemberportfolio/model/urlbuilder.py:43 +msgid "Email address" +msgstr "E-postadress" + +#: debianmemberportfolio/model/urlbuilder.py:44 +msgid "Name" +msgstr "Namn" + +#: debianmemberportfolio/model/urlbuilder.py:45 +msgid "GPG fingerprint" +msgstr "GPG-fingeravtryck" + +#: debianmemberportfolio/model/urlbuilder.py:46 +msgid "Debian user name" +msgstr "Debian användarnamn" + +#: debianmemberportfolio/model/urlbuilder.py:47 +msgid "Non Debian email address" +msgstr "Icke Debian e-postadress" + +#: debianmemberportfolio/model/urlbuilder.py:48 +msgid "Salsa user name" +msgstr "Salsa användarnamn" + +#: debianmemberportfolio/model/urlbuilder.py:49 +msgid "Alioth user name" +msgstr "Alioth användarnamn" + +#: debianmemberportfolio/model/urlbuilder.py:110 +#: debianmemberportfolio/model/urlbuilder.py:114 +#, python-format +msgid "Missing input: %s" +msgstr "Saknad inmatning: %s" + +#: debianmemberportfolio/templates/base.html:24 +#: debianmemberportfolio/templates/base.html:31 +msgid "Debian Member Portfolio Service" +msgstr "Debian medlemsportföljtjänst" + +#: debianmemberportfolio/templates/base.html:30 +msgid "Debian Logo" +msgstr "Debian logotyp" + +#: debianmemberportfolio/templates/base.html:32 +msgid "" +"This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can " +"create a set of customized links leading to a Debian Member's or package " +"maintainer's information regarding Debian." +msgstr "" +"Den här tjänsten har inspirerats av Stefano Zacchirolis DDPortfolio-sida i Debian Wiki. Du " +"kan skapa en uppsättning anpassade länkar som leder till information om en " +"Debian-medlem eller paketunderhållare om Debian." + +#: debianmemberportfolio/templates/base.html:39 +msgid "AGPL - Free Software" +msgstr "AGPL - fri programvara" + +#: debianmemberportfolio/templates/base.html:40 +#, python-format +msgid "" +"The service is available under the terms of the GNU Affero General Public License as published by " +"the Free Software Foundation, either version 3 of the License, or (at your " +"option) any later version. You can browse the source code or clone it from %(cloneurl)s using git. If you want to translate this service to " +"your language you can contribute at Weblate." +msgstr "" +"Tjänsten är tillgänglig under villkoren i GNU Affero General Public License som publiceras av " +"Free Software Foundation, antingen version 3 i licensen, eller (efter eget " +"val) någon senare version. Du kan bläddra i källkoden eller klona den från %(cloneurl)s med git. Om du vill översätta den här tjänsten till " +"ditt språk kan du bidra till Weblate." + +#: debianmemberportfolio/templates/base.html:41 +msgid "Copyright © 2009-2018 Jan Dittberner" +msgstr "Copyright © 2009-2018 Jan Dittberner" + +#: debianmemberportfolio/templates/showform.html:22 +msgid "Enter your personal information" +msgstr "Ange din personliga information" + +#: debianmemberportfolio/templates/showform.html:29 +msgid "Debian Member Portfolio" +msgstr "Debian medlemsportfölj" + +#: debianmemberportfolio/templates/showform.html:31 +msgid "Email address:" +msgstr "E-postadress:" + +#: debianmemberportfolio/templates/showform.html:40 +msgid "Show all form fields" +msgstr "Visa alla formulärfält" + +#: debianmemberportfolio/templates/showform.html:43 +msgid "Name:" +msgstr "Namn:" + +#: debianmemberportfolio/templates/showform.html:50 +msgid "GPG fingerprint:" +msgstr "GPG-fingeravtryck:" + +#: debianmemberportfolio/templates/showform.html:57 +msgid "Debian user name:" +msgstr "Debian användarnamn:" + +#: debianmemberportfolio/templates/showform.html:64 +msgid "Non Debian email address:" +msgstr "Icke Debian e-postadress:" + +#: debianmemberportfolio/templates/showform.html:71 +msgid "Salsa user name:" +msgstr "Salsa användarnamn:" + +#: debianmemberportfolio/templates/showform.html:78 +msgid "Alioth user name:" +msgstr "Alioth användarnamn:" + +#: debianmemberportfolio/templates/showform.html:85 +msgid "Wiki user name:" +msgstr "Wiki användarnamn:" + +#: debianmemberportfolio/templates/showform.html:92 +msgid "Forum user id:" +msgstr "Forum användar-id:" + +#: debianmemberportfolio/templates/showform.html:99 +msgid "Output format:" +msgstr "Utdataformat:" + +#: debianmemberportfolio/templates/showform.html:106 +msgid "Build Debian Member Portfolio URLs" +msgstr "Bygg webbadresser till Debian medlemsportfölj" + +#: debianmemberportfolio/templates/showurls.html:21 +msgid "Your personal links" +msgstr "Dina personliga länkar" + +#: debianmemberportfolio/templates/showurls.html:25 +msgid "Debian Member Porfolio" +msgstr "Debian medlemsportfölj" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "Usage" +msgstr "Användning" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "URL" +msgstr "URL" + +#: debianmemberportfolio/templates/showurls.html:38 +msgid "Error during URL creation:" +msgstr "Fel under skapandet av URL:" + +#: debianmemberportfolio/templates/showurls.html:59 +msgid "Restart" +msgstr "Starta om" diff --git a/debianmemberportfolio/translations/zh_CN/LC_MESSAGES/messages.po b/debianmemberportfolio/translations/zh_CN/LC_MESSAGES/messages.po new file mode 100644 index 0000000..e330f24 --- /dev/null +++ b/debianmemberportfolio/translations/zh_CN/LC_MESSAGES/messages.po @@ -0,0 +1,422 @@ +# German translations for the Debian Member Portfolio Service. +# Copyright (C) 2009-2014 Jan Dittberner +# This file is distributed under the same license as the Debian Member +# Portfolio Service project. +# Translators: +# Jan Dittberner , 2009-2014 +msgid "" +msgstr "" +"Project-Id-Version: Debian Member Portfolio Service 0.3.1\n" +"Report-Msgid-Bugs-To: jan@dittberner.info\n" +"POT-Creation-Date: 2018-02-09 10:14+0100\n" +"PO-Revision-Date: 2020-10-15 10:26+0000\n" +"Last-Translator: tao wang \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.3-dev\n" +"Generated-By: Babel 2.5.0\n" + +#: debianmemberportfolio/forms.py:67 +msgid "JSON" +msgstr "JSON" + +#: debianmemberportfolio/forms.py:67 +msgid "HTML" +msgstr "HTML" + +#: debianmemberportfolio/views.py:40 +msgid "Overview" +msgstr "概述" + +#: debianmemberportfolio/views.py:41 +msgid "Debian Member's Package Overview" +msgstr "Debian 成员的软件包概览" + +#: debianmemberportfolio/views.py:42 +msgid "" +"Debian Member's Package Overview\n" +"... showing all email addresses" +msgstr "" +"Debian 成员的软件包概览\n" +"... 显示所有邮件地址" + +#: debianmemberportfolio/views.py:46 +msgid "Bugs" +msgstr "缺陷" + +#: debianmemberportfolio/views.py:47 +msgid "" +"bugs received\n" +"(note: co-maintainers not listed, see #430986)" +msgstr "" +"bugs 接收\n" +"(注意: 合作维护者未列入, 详见 #430986)" + +#: debianmemberportfolio/views.py:51 +msgid "bugs reported" +msgstr "bugs 报告" + +#: debianmemberportfolio/views.py:52 +msgid "user tags" +msgstr "用户标签" + +#: debianmemberportfolio/views.py:53 +msgid "all messages (i.e., full text search for developer name on all bug logs)" +msgstr "所有信息 (即,开发者名下所有缺陷日志的全文搜索)" + +#: debianmemberportfolio/views.py:55 +msgid "WNPP" +msgstr "" +"需要支持的和未来应有的包(WNPP)" + +#: debianmemberportfolio/views.py:56 +msgid "correspondent for bugs" +msgstr "bug的通信者" + +#: debianmemberportfolio/views.py:57 +msgid "one year open bug history graph" +msgstr "一年处理Bug历史图表" + +#: debianmemberportfolio/views.py:60 +msgid "Build" +msgstr "构建" + +#: debianmemberportfolio/views.py:61 +msgid "buildd.d.o" +msgstr "buildd.d.o" + +#: debianmemberportfolio/views.py:62 +msgid "igloo" +msgstr "冰屋(igloo)" + +#: debianmemberportfolio/views.py:65 +msgid "Quality Assurance" +msgstr "质量保证" + +#: debianmemberportfolio/views.py:66 +msgid "maintainer dashboard" +msgstr "维护者面板" + +#: debianmemberportfolio/views.py:67 +msgid "lintian reports" +msgstr "Lintian报告" + +#: debianmemberportfolio/views.py:68 +msgid "full lintian reports (i.e. including \"info\"-level messages)" +msgstr "全部Lintian报告(即包括\"info\"级信息)" + +#: debianmemberportfolio/views.py:70 +msgid "piuparts" +msgstr "piuparts" + +#: debianmemberportfolio/views.py:71 +msgid "Debian patch tracking system" +msgstr "Debian补丁追踪系统(Debian patch tracking system)" + +#: debianmemberportfolio/views.py:72 +msgid "Debian Url ChecKer" +msgstr "Debian链接检查器(Debian Url Checker)" + +#: debianmemberportfolio/views.py:75 +msgid "Mailing Lists" +msgstr "邮件列表" + +#: debianmemberportfolio/views.py:76 +msgid "lists.d.o" +msgstr "lists.d.o" + +#: debianmemberportfolio/views.py:77 +msgid "lists.a.d.o" +msgstr "lists.a.d.o" + +#: debianmemberportfolio/views.py:78 +msgid "gmane" +msgstr "gmane" + +#: debianmemberportfolio/views.py:81 +msgid "Files" +msgstr "文件" + +#: debianmemberportfolio/views.py:82 +msgid "people.d.o" +msgstr "people.d.o" + +#: debianmemberportfolio/views.py:83 +msgid "oldpeople" +msgstr "老人" + +#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:93 +msgid "Alioth" +msgstr "北斗五(Alioth)" + +#: debianmemberportfolio/views.py:87 +msgid "Membership" +msgstr "成员关系" + +#: debianmemberportfolio/views.py:88 +msgid "NM" +msgstr "NM" + +#: debianmemberportfolio/views.py:89 +msgid "DB information via finger" +msgstr "DB信息,通过finger" + +#: debianmemberportfolio/views.py:90 +msgid "DB information via HTTP" +msgstr "DB信息,通过HTTP" + +#: debianmemberportfolio/views.py:91 +msgid "FOAF profile" +msgstr "FOAF档案" + +#: debianmemberportfolio/views.py:92 +msgid "Salsa" +msgstr "Salsa" + +#: debianmemberportfolio/views.py:94 +msgid "Wiki" +msgstr "Wiki" + +#: debianmemberportfolio/views.py:95 +msgid "Forum" +msgstr "论坛" + +#: debianmemberportfolio/views.py:98 +msgid "Miscellaneous" +msgstr "杂项" + +#: debianmemberportfolio/views.py:99 +msgid "debtags" +msgstr "包标签" + +#: debianmemberportfolio/views.py:100 +msgid "Planet Debian (name)" +msgstr "Planet Debian (名字)" + +#: debianmemberportfolio/views.py:101 +msgid "Planet Debian (username)" +msgstr "Planet Debian (用户名)" + +#: debianmemberportfolio/views.py:102 +msgid "links" +msgstr "链接" + +#: debianmemberportfolio/views.py:103 +msgid "Debian website" +msgstr "Debian网站" + +#: debianmemberportfolio/views.py:104 +msgid "Debian search" +msgstr "Debian搜索" + +#: debianmemberportfolio/views.py:105 +msgid "GPG public key via finger" +msgstr "GPG公钥,通过finger" + +#: debianmemberportfolio/views.py:106 +msgid "GPG public key via HTTP" +msgstr "GPG公钥,通过HTTP" + +#: debianmemberportfolio/views.py:107 +msgid "NM, AM participation" +msgstr "NM, AM 参加" + +#: debianmemberportfolio/views.py:108 +msgid "Contribution information" +msgstr "贡献信息" + +#: debianmemberportfolio/views.py:111 +msgid "Information reachable via ssh (for Debian Members)" +msgstr "信息可获取,通过ssh(DM专用)" + +#: debianmemberportfolio/views.py:112 +msgid "owned debian.net domains" +msgstr "拥有 debian.net 领域" + +#: debianmemberportfolio/views.py:113 +msgid "" +"MIA database " +"information" +msgstr "" +"MIA 数据库信息" + +#: debianmemberportfolio/views.py:115 +msgid "Group membership information" +msgstr "群组会员信息" + +#: debianmemberportfolio/views.py:118 +msgid "Ubuntu" +msgstr "Ubuntu" + +#: debianmemberportfolio/views.py:119 +msgid "Available patches from Ubuntu" +msgstr "来自Ubuntu的可用补丁" + +#: debianmemberportfolio/model/urlbuilder.py:43 +msgid "Email address" +msgstr "邮件地址" + +#: debianmemberportfolio/model/urlbuilder.py:44 +msgid "Name" +msgstr "姓名" + +#: debianmemberportfolio/model/urlbuilder.py:45 +msgid "GPG fingerprint" +msgstr "GPG指纹" + +#: debianmemberportfolio/model/urlbuilder.py:46 +msgid "Debian user name" +msgstr "Debian用户名" + +#: debianmemberportfolio/model/urlbuilder.py:47 +msgid "Non Debian email address" +msgstr "非Debian邮件地址" + +#: debianmemberportfolio/model/urlbuilder.py:48 +msgid "Salsa user name" +msgstr "Salsa用户名" + +#: debianmemberportfolio/model/urlbuilder.py:49 +msgid "Alioth user name" +msgstr "Alioth用户名" + +#: debianmemberportfolio/model/urlbuilder.py:110 +#: debianmemberportfolio/model/urlbuilder.py:114 +#, python-format +msgid "Missing input: %s" +msgstr "缺少输入: %s" + +#: debianmemberportfolio/templates/base.html:24 +#: debianmemberportfolio/templates/base.html:31 +msgid "Debian Member Portfolio Service" +msgstr "Debian 成员职责目录(Member Portfolio)服务" + +#: debianmemberportfolio/templates/base.html:30 +msgid "Debian Logo" +msgstr "Debian Logo" + +#: debianmemberportfolio/templates/base.html:32 +msgid "" +"This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can " +"create a set of customized links leading to a Debian Member's or package " +"maintainer's information regarding Debian." +msgstr "" +"这个服务由 Stefano Zacchiroli的 DDPortfolio 的 Debian Wiki页面 得到灵感. 你可以创建一个指向 Debian " +"Member 的或包维护者的关于Debian的信息的定制链接集合." + +#: debianmemberportfolio/templates/base.html:39 +msgid "AGPL - Free Software" +msgstr "AGPL - 自由软件" + +#: debianmemberportfolio/templates/base.html:40 +#, python-format +msgid "" +"The service is available under the terms of the GNU Affero General Public License as published by " +"the Free Software Foundation, either version 3 of the License, or (at your " +"option) any later version. You can browse the source code or clone it from %(cloneurl)s using git. If you want to translate this service to " +"your language you can contribute at Weblate." +msgstr "" +"这个服务在由自由软件基金会(FSF)发布的 GNU " +"Affero General Public License 第三版或(可选)更高版本协议下可用,可以点击 查看源代码,或从 %(cloneurl)s 使用 git 来克隆。如果想将这个服务翻译为你的语言,可以在这里投稿 Weblate。" + +#: debianmemberportfolio/templates/base.html:41 +msgid "Copyright © 2009-2018 Jan Dittberner" +msgstr "Copyright © 2009-2018 Jan Dittberner" + +#: debianmemberportfolio/templates/showform.html:22 +msgid "Enter your personal information" +msgstr "输入你的个人信息" + +#: debianmemberportfolio/templates/showform.html:29 +msgid "Debian Member Portfolio" +msgstr "Debian Member Portfolio" + +#: debianmemberportfolio/templates/showform.html:31 +msgid "Email address:" +msgstr "邮件地址:" + +#: debianmemberportfolio/templates/showform.html:40 +msgid "Show all form fields" +msgstr "显示所有字段" + +#: debianmemberportfolio/templates/showform.html:43 +msgid "Name:" +msgstr "姓名:" + +#: debianmemberportfolio/templates/showform.html:50 +msgid "GPG fingerprint:" +msgstr "GPG指纹:" + +#: debianmemberportfolio/templates/showform.html:57 +msgid "Debian user name:" +msgstr "Debian用户名:" + +#: debianmemberportfolio/templates/showform.html:64 +msgid "Non Debian email address:" +msgstr "非Debian邮件地址:" + +#: debianmemberportfolio/templates/showform.html:71 +msgid "Salsa user name:" +msgstr "Salsa用户名:" + +#: debianmemberportfolio/templates/showform.html:78 +msgid "Alioth user name:" +msgstr "Alioth用户名:" + +#: debianmemberportfolio/templates/showform.html:85 +msgid "Wiki user name:" +msgstr "Wiki用户名:" + +#: debianmemberportfolio/templates/showform.html:92 +msgid "Forum user id:" +msgstr "论坛用户id:" + +#: debianmemberportfolio/templates/showform.html:99 +msgid "Output format:" +msgstr "输出格式:" + +#: debianmemberportfolio/templates/showform.html:106 +msgid "Build Debian Member Portfolio URLs" +msgstr "构建Debian Member Prortfolio链接" + +#: debianmemberportfolio/templates/showurls.html:21 +msgid "Your personal links" +msgstr "你的个人链接" + +#: debianmemberportfolio/templates/showurls.html:25 +msgid "Debian Member Porfolio" +msgstr "Debian 成员职责目录" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "Usage" +msgstr "使用" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "URL" +msgstr "URL" + +#: debianmemberportfolio/templates/showurls.html:38 +msgid "Error during URL creation:" +msgstr "在 URL 创建过程中的错误:" + +#: debianmemberportfolio/templates/showurls.html:59 +msgid "Restart" +msgstr "重启" diff --git a/debianmemberportfolio/translations/zh_Hant/LC_MESSAGES/messages.po b/debianmemberportfolio/translations/zh_Hant/LC_MESSAGES/messages.po new file mode 100644 index 0000000..ba13785 --- /dev/null +++ b/debianmemberportfolio/translations/zh_Hant/LC_MESSAGES/messages.po @@ -0,0 +1,413 @@ +# German translations for the Debian Member Portfolio Service. +# +# Copyright (C) 2009-2014 Jan Dittberner +# This file is distributed under the same license as the Debian Member +# Portfolio Service project. +# Translators: +# Jan Dittberner , 2009-2014 +msgid "" +msgstr "" +"Project-Id-Version: Debian Member Portfolio Service 0.3.1\n" +"Report-Msgid-Bugs-To: jan@dittberner.info\n" +"POT-Creation-Date: 2018-05-12 10:32+0200\n" +"PO-Revision-Date: 2019-01-20 15:12+0000\n" +"Last-Translator: Louies \n" +"Language-Team: Chinese (Traditional) \n" +"Language: zh_Hant\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 3.4-dev\n" +"Generated-By: Babel 2.5.0\n" + +#: debianmemberportfolio/forms.py:67 +msgid "JSON" +msgstr "JSON" + +#: debianmemberportfolio/forms.py:67 +msgid "HTML" +msgstr "HTML" + +#: debianmemberportfolio/views.py:40 +msgid "Overview" +msgstr "總覽" + +#: debianmemberportfolio/views.py:41 +msgid "Debian Member's Package Overview" +msgstr "Debian 會員的套餐總覽" + +#: debianmemberportfolio/views.py:42 +msgid "" +"Debian Member's Package Overview\n" +"... showing all email addresses" +msgstr "" +"Debian 會員套件概述\n" +"...顯示所有電子郵件地址" + +#: debianmemberportfolio/views.py:46 +msgid "Bugs" +msgstr "錯誤" + +#: debianmemberportfolio/views.py:47 +msgid "" +"bugs received\n" +"(note: co-maintainers not listed, see #430986)" +msgstr "" + +#: debianmemberportfolio/views.py:51 +msgid "bugs reported" +msgstr "錯誤回報" + +#: debianmemberportfolio/views.py:52 +msgid "user tags" +msgstr "用戶標籤" + +#: debianmemberportfolio/views.py:53 +msgid "all messages (i.e., full text search for developer name on all bug logs)" +msgstr "" + +#: debianmemberportfolio/views.py:55 +msgid "WNPP" +msgstr "WNPP" + +#: debianmemberportfolio/views.py:56 +msgid "correspondent for bugs" +msgstr "" + +#: debianmemberportfolio/views.py:57 +msgid "one year open bug history graph" +msgstr "" + +#: debianmemberportfolio/views.py:60 +msgid "Build" +msgstr "建構" + +#: debianmemberportfolio/views.py:61 +msgid "buildd.d.o" +msgstr "建構公司" + +#: debianmemberportfolio/views.py:62 +msgid "igloo" +msgstr "igloo" + +#: debianmemberportfolio/views.py:65 +msgid "Quality Assurance" +msgstr "品質保證" + +#: debianmemberportfolio/views.py:66 +msgid "maintainer dashboard" +msgstr "維護人員儀錶板" + +#: debianmemberportfolio/views.py:67 +msgid "lintian reports" +msgstr "lintian 報導" + +#: debianmemberportfolio/views.py:68 +msgid "full lintian reports (i.e. including \"info\"-level messages)" +msgstr "" + +#: debianmemberportfolio/views.py:70 +msgid "piuparts" +msgstr "" + +#: debianmemberportfolio/views.py:71 +msgid "Debian patch tracking system" +msgstr "Debian 補丁追踪系統" + +#: debianmemberportfolio/views.py:72 +msgid "Debian Url ChecKer" +msgstr "Debian URL檢查器" + +#: debianmemberportfolio/views.py:75 +msgid "Mailing Lists" +msgstr "郵遞清單" + +#: debianmemberportfolio/views.py:76 +msgid "lists.d.o" +msgstr "" + +#: debianmemberportfolio/views.py:77 +msgid "lists.a.d.o" +msgstr "" + +#: debianmemberportfolio/views.py:78 +msgid "gmane" +msgstr "gmane" + +#: debianmemberportfolio/views.py:81 +msgid "Files" +msgstr "檔案" + +#: debianmemberportfolio/views.py:82 +msgid "people.d.o" +msgstr "" + +#: debianmemberportfolio/views.py:83 +msgid "oldpeople" +msgstr "" + +#: debianmemberportfolio/views.py:84 debianmemberportfolio/views.py:93 +msgid "Alioth" +msgstr "" + +#: debianmemberportfolio/views.py:87 +msgid "Membership" +msgstr "" + +#: debianmemberportfolio/views.py:88 +msgid "NM" +msgstr "" + +#: debianmemberportfolio/views.py:89 +msgid "DB information via finger" +msgstr "" + +#: debianmemberportfolio/views.py:90 +msgid "DB information via HTTP" +msgstr "" + +#: debianmemberportfolio/views.py:91 +msgid "FOAF profile" +msgstr "" + +#: debianmemberportfolio/views.py:92 +msgid "Salsa" +msgstr "" + +#: debianmemberportfolio/views.py:94 +msgid "Wiki" +msgstr "" + +#: debianmemberportfolio/views.py:95 +msgid "Forum" +msgstr "" + +#: debianmemberportfolio/views.py:98 +msgid "Miscellaneous" +msgstr "" + +#: debianmemberportfolio/views.py:99 +msgid "debtags" +msgstr "" + +#: debianmemberportfolio/views.py:100 +msgid "Planet Debian (name)" +msgstr "" + +#: debianmemberportfolio/views.py:101 +msgid "Planet Debian (username)" +msgstr "" + +#: debianmemberportfolio/views.py:102 +msgid "links" +msgstr "" + +#: debianmemberportfolio/views.py:103 +msgid "Debian website" +msgstr "" + +#: debianmemberportfolio/views.py:104 +msgid "Debian search" +msgstr "" + +#: debianmemberportfolio/views.py:105 +msgid "GPG public key via finger" +msgstr "" + +#: debianmemberportfolio/views.py:106 +msgid "GPG public key via HTTP" +msgstr "" + +#: debianmemberportfolio/views.py:107 +msgid "NM, AM participation" +msgstr "" + +#: debianmemberportfolio/views.py:108 +msgid "Contribution information" +msgstr "" + +#: debianmemberportfolio/views.py:109 +msgid "Repology information" +msgstr "" + +#: debianmemberportfolio/views.py:112 +msgid "Information reachable via ssh (for Debian Members)" +msgstr "" + +#: debianmemberportfolio/views.py:113 +msgid "owned debian.net domains" +msgstr "" + +#: debianmemberportfolio/views.py:114 +msgid "" +"MIA database " +"information" +msgstr "" + +#: debianmemberportfolio/views.py:116 +msgid "Group membership information" +msgstr "" + +#: debianmemberportfolio/views.py:119 +msgid "Ubuntu" +msgstr "" + +#: debianmemberportfolio/views.py:120 +msgid "Available patches from Ubuntu" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:43 +msgid "Email address" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:44 +msgid "Name" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:45 +msgid "GPG fingerprint" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:46 +msgid "Debian user name" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:47 +msgid "Non Debian email address" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:48 +msgid "Salsa user name" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:49 +msgid "Alioth user name" +msgstr "" + +#: debianmemberportfolio/model/urlbuilder.py:110 +#: debianmemberportfolio/model/urlbuilder.py:114 +#, python-format +msgid "Missing input: %s" +msgstr "" + +#: debianmemberportfolio/templates/base.html:24 +#: debianmemberportfolio/templates/base.html:31 +msgid "Debian Member Portfolio Service" +msgstr "" + +#: debianmemberportfolio/templates/base.html:30 +msgid "Debian Logo" +msgstr "" + +#: debianmemberportfolio/templates/base.html:32 +msgid "" +"This service has been inspired by Stefano Zacchiroli's DDPortfolio page in the Debian Wiki. You can " +"create a set of customized links leading to a Debian Member's or package " +"maintainer's information regarding Debian." +msgstr "" + +#: debianmemberportfolio/templates/base.html:39 +msgid "AGPL - Free Software" +msgstr "" + +#: debianmemberportfolio/templates/base.html:40 +#, python-format +msgid "" +"The service is available under the terms of the GNU Affero General Public License as published by " +"the Free Software Foundation, either version 3 of the License, or (at your " +"option) any later version. You can browse the source code or clone it from %(cloneurl)s using git. If you want to translate this service to " +"your language you can contribute at Weblate." +msgstr "" + +#: debianmemberportfolio/templates/base.html:41 +msgid "Copyright © 2009-2018 Jan Dittberner" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:22 +msgid "Enter your personal information" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:29 +msgid "Debian Member Portfolio" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:31 +msgid "Email address:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:40 +msgid "Show all form fields" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:43 +msgid "Name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:50 +msgid "GPG fingerprint:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:57 +msgid "Debian user name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:64 +msgid "Non Debian email address:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:71 +msgid "Salsa user name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:78 +msgid "Alioth user name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:85 +msgid "Wiki user name:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:92 +msgid "Forum user id:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:99 +msgid "Output format:" +msgstr "" + +#: debianmemberportfolio/templates/showform.html:106 +msgid "Build Debian Member Portfolio URLs" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:21 +msgid "Your personal links" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:25 +msgid "Debian Member Porfolio" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "Usage" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:28 +msgid "URL" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:38 +msgid "Error during URL creation:" +msgstr "" + +#: debianmemberportfolio/templates/showurls.html:59 +msgid "Restart" +msgstr "" diff --git a/debianmemberportfolio/views.py b/debianmemberportfolio/views.py new file mode 100644 index 0000000..15df188 --- /dev/null +++ b/debianmemberportfolio/views.py @@ -0,0 +1,220 @@ +# -*- python -*- +# -*- coding: utf-8 -*- +# +# Debian Member Portfolio Service views +# +# Copyright © 2015-2020 Jan Dittberner +# +# This file is part of the Debian Member Portfolio Service. +# +# Debian Member Portfolio Service is free software: you can redistribute it +# and/or modify it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the License, +# or (at your option) any later version. +# +# Debian Member Portfolio Service is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero +# General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +import json +import logging + +from debianmemberportfolio import app, babel +from flask import g, make_response, request, render_template, abort +# noinspection PyPep8Naming +from flask_babel import lazy_gettext as N_ +from config import LANGUAGES +from .forms import DeveloperData, DeveloperDataRequest +from .model import dddatabuilder +from .model.urlbuilder import build_urls + +log = logging.getLogger(__name__) + +#: This dictionary defines groups of labeled portfolio items. +_LABELS = { + 'overview': { + 'label': N_('Overview'), + 'ddpo': N_("Debian Member's Package Overview"), + 'alladdresses': N_("""Debian Member's Package Overview +... showing all email addresses"""), + }, + 'bugs': { + 'label': N_('Bugs'), + 'received': N_('''bugs received +(note: co-maintainers not listed, see \ +#430986)'''), + 'reported': N_('bugs reported'), + 'usertags': N_('user tags'), + 'searchall': N_('all messages (i.e., full text search for \ +developer name on all bug logs)'), + 'wnpp': N_('WNPP'), + 'correspondent': N_('correspondent for bugs'), + 'graph': N_('one year open bug history graph'), + }, + 'build': { + 'label': N_('Build'), + 'buildd': N_('buildd.d.o'), + 'igloo': N_('igloo'), + }, + 'qa': { + 'label': N_('Quality Assurance'), + 'dmd': N_('maintainer dashboard'), + 'lintian': N_('lintian reports'), + 'lintianfull': N_('full lintian reports (i.e. including \ +"info"-level messages)'), + 'piuparts': N_('piuparts'), + 'patchtracker': N_('Debian patch tracking system'), + 'duck': N_('Debian Url ChecKer'), + 'janitor': N_('Debian Janitor'), + }, + 'lists': { + 'label': N_('Mailing Lists'), + 'dolists': N_('lists.d.o'), + 'adolists': N_('lists.a.d.o'), + }, + 'files': { + 'label': N_('Files'), + 'people': N_('people.d.o'), + 'oldpeople': N_('oldpeople'), + }, + 'membership': { + 'label': N_('Membership'), + 'nm': N_('NM'), + 'dbfinger': N_('DB information via finger'), + 'db': N_('DB information via HTTP'), + 'webid': N_('FOAF profile'), + 'salsa': N_('Salsa'), + 'wiki': N_('Wiki'), + 'forum': N_('Forum'), + }, + 'miscellaneous': { + 'label': N_('Miscellaneous'), + 'debtags': N_('debtags'), + 'planetname': N_('Planet Debian (name)'), + 'planetuser': N_('Planet Debian (username)'), + 'links': N_('links'), + 'website': N_('Debian website'), + 'search': N_('Debian search'), + 'gpgfinger': N_('GPG public key via finger'), + 'gpgweb': N_('GPG public key via HTTP'), + 'nm': N_('NM, AM participation'), + 'contrib': N_('Contribution information'), + 'repology': N_('Repology information'), + }, + 'ssh': { + 'label': N_('Information reachable via ssh (for Debian Members)'), + 'owndndoms': N_('owned debian.net domains'), + 'miainfo': N_('MIA database information'), + 'groupinfo': N_('Group membership information'), + }, + 'ubuntu': { + 'label': N_('Ubuntu'), + 'ubuntudiff': N_('Available patches from Ubuntu'), + }, +} + +#: list of field name tuples for Debian Maintainers +DM_TUPLES = (('name', 'name'), + ('gpgfp', 'gpgfp'), + ('nonddemail', 'email')) + +#: list of field name tuples for Debian Developers +DD_TUPLES = (('username', 'username'), + ('salsausername', 'username')) + + +def _get_label(section, url=None): + if section in _LABELS: + if url: + if url in _LABELS[section]: + return _LABELS[section][url] + elif 'label' in _LABELS[section]: + return _LABELS[section]['label'] + if url: + return "%s.%s" % (section, url) + return section + + +@babel.localeselector +def get_locale(): + return request.accept_languages.best_match(LANGUAGES.keys()) + + +@app.before_request +def before_request(): + g.locale = get_locale() + + +@app.route('/') +def index(): + form = DeveloperData() + return render_template('showform.html', form=form) + + +@app.route('/result') +def urllist(): + form = DeveloperData(request.values) + if form.validate(): + fields = dddatabuilder.build_data(form.data['email']) + + form_data = form.data.copy() + + if fields['type'] in (dddatabuilder.TYPE_DD, dddatabuilder.TYPE_DM): + for dmtuple in DM_TUPLES: + if not form_data[dmtuple[0]]: + form_data[dmtuple[0]] = fields[dmtuple[1]] + if fields['type'] == dddatabuilder.TYPE_DD: + for ddtuple in DD_TUPLES: + if not form_data[ddtuple[0]]: + form_data[ddtuple[0]] = fields[ddtuple[1]] + if not form_data['wikihomepage']: + log.debug('generate wikihomepage from name') + form_data['wikihomepage'] = "".join([ + part.capitalize() for part in form_data['name'].split() + ]) + + data = build_urls(form_data) + + if form_data['mode'] == 'json': + response = make_response(json.dumps(dict( + [("{}.{}".format(entry[1], entry[2].name), entry[3]) + for entry in data if entry[0] == 'url']))) + response.headers['Content-Type'] = 'application/json' + return response + + for entry in data: + if entry[0] in ('url', 'error'): + entry.append(_get_label(entry[1], entry[2].name)) + elif entry[0] == 'section': + entry.append(_get_label(entry[1])) + + return render_template('showurls.html', urldata=data) + return render_template('showform.html', form=form) + + +@app.route('/htmlformhelper.js') +def formhelper_js(): + response = make_response(render_template('showformscript.js')) + response.headers['Content-Type'] = 'text/javascript; charset=utf-8' + return response + + +@app.route('/showformscripts/fetchdddata/') +def fetchdddata(): + form = DeveloperDataRequest(request.values) + if form.validate(): + fields = dddatabuilder.build_data(form.data['email']) + log.debug(fields) + response = make_response(json.dumps(fields)) + response.headers['Content-Type'] = 'application/json' + return response + abort( + 400, + "\n".join(["%s: %s" % (key, form.errors[key]) for key in form.errors]) + ) diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 0000000..567609b --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1 @@ +build/ diff --git a/docs/source/conf.py b/docs/source/conf.py new file mode 100644 index 0000000..d715c3e --- /dev/null +++ b/docs/source/conf.py @@ -0,0 +1,114 @@ +# -*- coding: utf-8 -*- +# +# Debian Member Portfolio Service documentation build configuration file, +# created by sphinx-quickstart on Tue Jan 20 22:27:21 2009. +# +# This file is execfile()d with the current directory set to its containing +# dir. +# +# The contents of this file are pickled, so don't put values in the namespace +# that aren't pickleable (module imports are okay, they're removed +# automatically). +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +import sys +import os + +# If your extensions are in another directory, add it here. If the directory +# is relative to the documentation root, use os.path.abspath to make it +# absolute, like shown here. +sys.path.append( + os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..'))) + +# General configuration +# --------------------- + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones. +extensions = ['sphinx.ext.autodoc', 'sphinx.ext.viewcode'] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The encoding of source files. +#source_encoding = 'utf-8' + +# General information about the project. +project = 'Debian Member Portfolio Service' +copyright = '2009-2020, Jan Dittberner' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The short X.Y version. +version = '0.6.4' +# The full version, including alpha/beta/rc tags. +release = version + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +language = 'en' + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + + +# ----------------------- + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# If false, no module index is generated. +html_use_modindex = False + +# If false, no index is generated. +#html_use_index = True +html_theme = 'alabaster' + +# Output file base name for HTML help builder. +htmlhelp_basename = 'DebianMemberPortfolioServicedoc' + +# Options for LaTeX output +# ------------------------ + +# The paper size ('letter' or 'a4'). +#latex_paper_size = 'letter' + +# The font size ('10pt', '11pt' or '12pt'). +#latex_font_size = '10pt' + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, author, document class +# [howto/manual]). +latex_documents = [ + ('index', + 'DebianMemberPortfolioService.tex', + 'Debian Member Portfolio Service Documentation', + 'Jan Dittberner', + 'manual'), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +#latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +#latex_use_parts = False + +# Additional stuff for the LaTeX preamble. +#latex_preamble = '' + +# Documents to append as an appendix to all manuals. +#latex_appendices = [] + +# If false, no module index is generated. +#latex_use_modindex = True diff --git a/docs/source/credits.rst b/docs/source/credits.rst new file mode 100644 index 0000000..2744e27 --- /dev/null +++ b/docs/source/credits.rst @@ -0,0 +1,23 @@ +Credits +======= + +The Debian Member Portfolio Service contains contributions from several people. + +Code +---- + + * Jan Dittberner + * Paul Wise + * Olivier Berger + +Translations +------------ + + * Jan Dittberner + * Daniel Manzano (Brazilian Portuguese) + * Izharul Haq (Indonesian) + * Stéphane Aulery (French) + +If you think your name is missing please tell me (Jan Dittberner) about your +contribution and I'll add you. + diff --git a/docs/source/devdocs.rst b/docs/source/devdocs.rst new file mode 100644 index 0000000..01b77ba --- /dev/null +++ b/docs/source/devdocs.rst @@ -0,0 +1,154 @@ +Development of Debian Member Portfolio Service +============================================== + +The Debian Member Portfolio Service is implemented in `Python 3 +`_ using the `Flask `_ web +application framework. + +The following sections describe how to setup a local development environment +for the Debian Member Portfolio Service. + +All instructions assume that you work on a Debian system. You should use Python +3 for development. + +Setup of a local development +---------------------------- + +To start working on the source code you need to have `git`_ installed:: + + sudo aptitude install git + +.. _git: http://www.git-scm.com/ + +The canonical git repository for the Debian Member Portfolio Service is +available at https://debianstuff.dittberner.info/git/debianmemberportfolio.git. +To get a clone of the source code you change to a directory of your choice and +invoke git clone:: + + cd ~/src + git clone https://debianstuff.dittberner.info/git/debianmemberportfolio.git + +You should use `venv`_ to separate the development environment from your +system wide Python installation. You can install virtualenv using:: + + sudo aptitude install python3-venv + +.. _venv: https://docs.python.org/3/library/venv.html + +When you have :command:`pyvenv` installed you should create a virtual +environment for Debian Member Portfolio Service development and install the +requirements using `pip `_:: + + mkdir ~/.virtualenvs + pyvenv ~/.virtualenvs/dmportfolio + . ~/.virtualenvs/dmportfolio/bin/activate + cd ~/src/debianmemberportfolio + pip install -r stretchreq.pip + +.. note:: + + The Debian Member Portfolio Service instance at http://portfolio.debian.net/ + is running on a Debian Stretch server, therefore :file:`stretchreq.pip` + contains dependency versions matching that Debian release. + +The dependency download and installation into the virtual environment takes +some time. + +Debian Member Portfolio Service needs the JQuery JavaScript library to function +properly. The JQuery library is not included in the git clone and must be +copied into the subdirectory +:file:`debianmemberportfolio/static/javascript/jquery`. On Debian systems you +can install the package libjs-jquery and place a symlink to the directory +:file:`/usr/share/javascript` into :file:`debianmemberportfolio/static`: :: + + sudo aptitude install libjs-jquery + ln -s /usr/share/javascript debianmemberportfolio/static + +Prepare for first startup +~~~~~~~~~~~~~~~~~~~~~~~~~ + +The Debian Member Portfolio Service uses data from the Debian keyring to get +information regarding PGP keys and names related to email addresses. Before you +can run the service you need to fetch a copy of the keyring and prepare it for +use by the code. + +.. note:: + + You need rsync and gnupg for these tasks:: + + sudo aptitude install rsync gnupg + +When you have both installed you can run:: + + . ~/.virtualenvs/dmportfolio/bin/activate + ./synckeyrings.sh + python debianmemberportfolio/model/keyringanalyzer.py + +The first synchronizes the keyrings in :file:`$HOME/debian/keyring.debian.org` +with files on the `keyring.debian.org `_ host. And +the second generates a key/value database in +:file:`debianmemberportfolio/model/keyringcache.db` that is used by the code. + +Run a development server +~~~~~~~~~~~~~~~~~~~~~~~~ + +You can run a development server using:: + + python3 run.py + +The output of this command should look like the following:: + + * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) + * Restarting with stat + +You can now access your development server at the URL that is printed by the command. + +If you want to stop the development server press :kbd:`Ctrl + C`. + +Common development tasks +------------------------ + +Add new URL +~~~~~~~~~~~ + +Debian Member Portfolio Service uses a ini style configuration file +:file:`debianmemberportfolio/model/portfolio.ini` to configure the generated URL +patterns. The actual URL generation is done in +:py:func:`~debianmemberportfolio.views.urllist`. + +If you want to add a new URL type you have to add a line in +:file:`portfolio.ini` and an entry in :py:mod:`~debianmemberportfolio.views`'s +:py:attr:`~debianmemberportfolio.views._LABELS` dictionary. The top level +dictionary keys correspond to sections in the ini file. The dictionary values +are dictionaries themselves that contain a special key ``label`` that defines +the label of the section in the output and keys for each entry to be rendered +in that section. The values in these sub-dictionaries are strings marked for +translation using the :py:func:`~flask_babel.lazy_gettext` function from +:py:mod:`flask_babel`. + +The patterns in :file:`portfolio.ini` can contain the following placeholders +that are filled at runtime: + +================== ======================================== +Placeholder Replacement +================== ======================================== +%(salsausername)s user name on `salsa.debian.org`_ +%(email)s email address (URL encoded) +%(emailnoq)s email address +%(firstchar)s first character of the email address +%(forumsid)s forum user id +%(gpgfp)s GNUPG/PGP key fingerprint +%(name)s full name (i.e. John Smith) +%(username)s Debian user name +%(wikihomepage)s full name in camel case (i.e. JohnSmith) +================== ======================================== + +.. _salsa.debian.org: https://salsa.debian.org/ + +The replacement of placeholders is performed in the +:py:func:`~debianmemberportfolio.views.urllist` function. And uses data from +the Debian keyring. Access to the pre-parsed keyring data is performed using +the :py:func:`~debianmemberportfolio.model.dddatabuilder.build_data` function +of the module :py:mod:`debianmemberportfolio.model.dddatabuilder`, which uses +several helper functions from :py:mod:`debianmemberportfolio.model.keyfinder` +to access the key information. diff --git a/docs/source/index.rst b/docs/source/index.rst new file mode 100644 index 0000000..cfdc5d3 --- /dev/null +++ b/docs/source/index.rst @@ -0,0 +1,28 @@ +.. Debian Member Portfolio Service documentation master file, created by + sphinx-quickstart on Tue Jan 20 22:27:21 2009. You can adapt this file + completely to your liking, but it should at least contain the root `toctree` + directive. + +Debian Member Portfolio Service +=============================== + +The Debian Member Portfolio Service is a web application that provides links to +information regarding the activities of a person related to the `Debian Project +`_. + +The service was originally implemented and is hosted by Jan Dittberner at +http://portfolio.debian.net/. + +.. toctree:: + :maxdepth: 2 + + devdocs + sourcecode + credits + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`search` + diff --git a/docs/source/sourcecode.rst b/docs/source/sourcecode.rst new file mode 100644 index 0000000..1c5dd88 --- /dev/null +++ b/docs/source/sourcecode.rst @@ -0,0 +1,47 @@ +Source documentation +==================== + +The sections below contain mostly autogenerated documentation of the source +code of the Debian Member Portfolio Service. + +Forms +----- + +.. automodule:: debianmemberportfolio.forms + :members: + +Views +----- + +.. automodule:: debianmemberportfolio.views + :members: + +Model +----- + +.. automodule:: debianmemberportfolio.model + :members: + +dddatabuilder +~~~~~~~~~~~~~ + +.. automodule:: debianmemberportfolio.model.dddatabuilder + :members: + +keyfinder +~~~~~~~~~ + +.. automodule:: debianmemberportfolio.model.keyfinder + :members: + +keyringanalyzer +~~~~~~~~~~~~~~~ + +.. automodule:: debianmemberportfolio.model.keyringanalyzer + :members: + +urlbuilder +~~~~~~~~~~ + +.. automodule:: debianmemberportfolio.model.urlbuilder + :members: diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..db22cd6 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,11 @@ +Flask==0.12.2 +Jinja2==2.9.6 +MarkupSafe==1.0 +Werkzeug==0.12.2 +itsdangerous==0.24 +Babel==2.5.0 +Flask-Babel==0.11.2 +pytz==2017.2 +speaklater==1.3 +Flask-WTF==0.14.2 +WTForms==2.1 diff --git a/run.py b/run.py new file mode 100755 index 0000000..dca85bb --- /dev/null +++ b/run.py @@ -0,0 +1,28 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# -*- python -*- +# +# Debian Member Portfolio Service Flask runner +# +# Copyright © 2015 Jan Dittberner +# +# This file is part of the Debian Member Portfolio Service. +# +# Debian Member Portfolio Service is free software: you can redistribute it +# and/or modify it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the License, +# or (at your option) any later version. +# +# Debian Member Portfolio Service is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero +# General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +from debianmemberportfolio import app + +if __name__ == '__main__': + app.debug = True + app.run() diff --git a/setup.cfg b/setup.cfg index 01bb954..00c4a19 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,3 +1,39 @@ [egg_info] tag_build = dev tag_svn_revision = true + +[build_sphinx] +source-dir = docs/source +build-dir = docs/build +all_files = 1 + +[publish] +doc-dir=docs/html +make-dirs=1 + +[nosetests] +cover-package = debianmemberportfolio + +# Babel configuration +[compile_catalog] +domain = messages +directory = debianmemberportfolio/translations +statistics = true + +[extract_messages] +charset = UTF-8 +add_comments = TRANSLATORS: +output_file = messages.pot +width = 80 +msgid_bugs_address = jan@dittberner.info + +[init_catalog] +domain = messages +input_file = messages.pot +output_dir = debianmemberportfolio/translations + +[update_catalog] +domain = messages +input_file = messages.pot +output_dir = debianmemberportfolio/translations +previous = true diff --git a/setup.py b/setup.py index a8f5f46..314736c 100644 --- a/setup.py +++ b/setup.py @@ -1,38 +1,62 @@ -from setuptools import setup, find_packages -import sys, os +# -*- python -*- +# -*- coding: utf-8 -*- +# +# Debian Member Portfolio Service setup +# Copyright © 2009-2020 Jan Dittberner +# +# This file is part of the Debian Member Portfolio Service. +# +# Debian Member Portfolio Service is free software: you can redistribute it +# and/or modify it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the License, +# or (at your option) any later version. +# +# Debian Member Portfolio Service is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero +# General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public +# License along with this program. If not, see . +# +try: + from setuptools import setup, find_packages +except ImportError: + # noinspection PyUnresolvedReferences + from ez_setup import use_setuptools + use_setuptools() + from setuptools import setup, find_packages -version = '0.1' - -setup(name='ddportfolioservice', - version=version, - description="service to create DDPortfolio URLs", - long_description="""This is a service implementation that -returns a set of personalized URLs as outlined in -http://wiki.debian.org/DDPortfolio. It takes the Debian developers -full name and email address as input and returns a JSON formatted -array of URLs.""", - # Get strings from http://pypi.python.org/pypi?%3Aaction=list_classifiers - classifiers=['Development Status :: 3 - Alpha', - 'Environment :: Web Environment', - 'License :: DFSG approved', - 'License :: OSI approved :: ' + - 'GNU Affero General Public License v3', - 'Programming Language :: Python'], - keywords='Debian service JSON', - author='Jan Dittberner', - author_email='jan@dittberner.info', - url='http://debian-stuff.dittberner.info/ddportfolioservice/', - license='AGPLv3', - packages=find_packages(exclude=['ez_setup', 'examples', 'tests']), - include_package_data=True, - zip_safe=False, - package_data= { - 'ddportfolioservice' : ['*.ini'], - }, - install_requires=[ - # -*- Extra requirements: -*- - 'Paste', - 'PasteDeploy', - 'simplejson' - ], - ) +setup( + name='debianmemberportfolio', + version='0.6.4', + description='service to create Debian Member Portfolio URLs', + long_description="""This is a service implementation that returns a set of + personalized URLs as outlined in https://wiki.debian.org/DDPortfolio. It + takes the Debian Member's full name and email address as input and returns + a JSON formatted array of URLs.""", + # Get strings from https://pypi.python.org/pypi?%3Aaction=list_classifiers + classifiers=['Development Status :: 5 - Production/Stable', + 'Environment :: Web Environment', + 'License :: DFSG approved', + 'License :: OSI approved :: ' + + 'GNU Affero General Public License v3', + 'Programming Language :: Python'], + keywords='Debian service JSON', + author='Jan Dittberner', + author_email='jan@dittberner.info', + url='http://debian-stuff.dittberner.info/debianmemberportfolio', + license='AGPL-3.0+', + install_requires=["Flask>=0.12.2", 'Babel>=2.5.0', 'Flask-Babel>=0.11.2', 'wtforms'], + packages=find_packages(exclude=['ez_setup']), + include_package_data=True, + test_suite='nose.collector', + package_data={'debianmemberportfolio': + ['*.ini', 'translations/*/LC_MESSAGES/*.mo']}, + message_extractors={'debianmemberportfolio': [ + ('**.py', 'python', None), + ('templates/**.html', 'jinja2', None), + ('templates/**.js', 'jinja2', None), + ('static/**', 'ignore', None)]}, + zip_safe=False, +) diff --git a/stretch.pip b/stretch.pip new file mode 100644 index 0000000..a4fa1d3 --- /dev/null +++ b/stretch.pip @@ -0,0 +1,10 @@ +Flask==0.12 +Jinja2==2.8 +MarkupSafe==0.23 +Werkzeug==0.11.15 +itsdangerous==0.24 +Babel==2.3.4 +Flask-Babel==0.11.1 +pytz==2016.7 +Flask-WTF==0.12 +WTForms==2.1 diff --git a/synckeyrings.sh b/synckeyrings.sh new file mode 100755 index 0000000..20d11f4 --- /dev/null +++ b/synckeyrings.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +# Copyright (C) 2009 Jan Dittberner and others This +# little script is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; version 3. +# +# On Debian systems, the complete text of the GNU General Public +# License can be found in /usr/share/common-licenses/GPL-3 file. +# +# This script syncs local copies of the debian-keyring with +# keyring.d.o (the keyring package is too old). +# +# ~/debian/keyring.debian.org/keyrings/ will be created if it doesn't exist. + +# Always exit if there is an error +set -e + +# For the rsync of the debian keyrings and for the nm.gpg +DESTDIR="${DEBHOME:-"$HOME/debian"}/keyring.debian.org/keyrings" +# For the following calls use LANG=C - some output is used for +# reports to a list / for an english report. +LANG=C +export LANG + +test -d $DESTDIR || mkdir -p $DESTDIR + +rsync -qcltz --block-size=8192 --partial --progress --exclude='emeritus-*' --exclude='removed-*' 'keyring.debian.org::keyrings/keyrings/*' $DESTDIR/.