PageSourceSearch

https://www.passbolt.com/docs/assets/js/d0bc2b9a.71a812c2.js

js passbolt.com collected 2026-09-24 08:42:17 UTC 6,100 bytes, 1 lines download raw bytes

1"use strict";(globalThis.webpackChunkpassbolt_docs||=[]).push([[2376],{96341(t,e,o){o.r(e),o.d(e,{assets:()=>d,contentTitle:()=>c,default:()=>u,frontMatter:()=>l,metadata:()=>r,toc:()=>h});const r=JSON.parse('{"id":"contribute/translator/proofread","title":"How to proofread translations","description":"Learn how to review and approve Passbolt translations","source":"@site/docs/contribute/translator/proofread.mdx","sourceDirName":"contribute/translator","slug":"/contribute/translator/proofread","permalink":"/docs/contribute/translator/proofread","draft":false,"unlisted":false,"editUrl":"https://github.com/passbolt/passbolt-docs/blob/main/docs/contribute/translator/proofread.mdx","tags":[],"version":"current","lastUpdatedAt":1765964507000,"sidebarPosition":2,"frontMatter":{"title":"How to proofread translations","description":"Learn how to review and approve Passbolt translations","sidebar_position":2},"sidebar":"contributeGuideSidebar","previous":{"title":"Translation","permalink":"/docs/contribute/translator/translate"},"next":{"title":"Externalizing Strings","permalink":"/docs/contribute/translator/externalize"}}');var n=o(74848),s=o(28453),a=o(42987),i=o(28774);const l={title:"How to proofread translations",description:"Learn how to review and approve Passbolt translations",sidebar_position:2},c=void 0,d={},h=[{value:"Become a proofreader",id:"become-a-proofreader",level:2},{value:"Access to the proofreading editor",id:"access-to-the-proofreading-editor",level:2},{value:"Proofread strings",id:"proofread-strings",level:2}];function p(t){const e={a:"a",h2:"h2",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...t.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(e.p,{children:"The proofreading of passbolt is central in the translation process, it helps to keep a translation accurate and\nguarantee a global homogeneity of it. As for the translation the proofreading step is entirely managed by Crowdin."}),"\n",(0,n.jsx)(e.h2,{id:"become-a-proofreader",children:"Become a proofreader"}),"\n",(0,n.jsxs)(e.p,{children:["The proofreader role can be requested to the passbolt team by email at ",(0,n.jsx)(i.A,{to:"mailto:[email protected]",children:(0,n.jsx)(e.a,{href:"mailto:[email protected]",children:"[email protected]"})}),"\n."]}),"\n",(0,n.jsx)(e.p,{children:"The role attribution is made as per the following rules:"}),"\n",(0,n.jsxs)(e.ul,{children:["\n",(0,n.jsxs)(e.li,{children:["\n",(0,n.jsx)(e.p,{children:"Contributors should have already proposed translations for the language they want to help with proofreading. If no\ntranslation made on passbolt, the contributors can show contributions made on another open source project."}),"\n"]}),"\n",(0,n.jsxs)(e.li,{children:["\n",(0,n.jsx)(e.p,{children:"The already proposed translations should reflect the attention to details of the contributors and meet with the quality\nstandard of passbolt."}),"\n"]}),"\n",(0,n.jsxs)(e.li,{children:["\n",(0,n.jsxs)(e.p,{children:["The contributors should have proven good communication skills in their previous exchanges with the passbolt team as\nwell as other contributors. See the ",(0,n.jsx)(e.a,{href:"https://www.passbolt.com/code_of_conduct",children:"passbolt code of conduct"})," to know\nmore about what is expected from the passbolt community members."]}),"\n"]}),"\n"]}),"\n",(0,n.jsx)(e.h2,{id:"access-to-the-proofreading-editor",children:"Access to the proofreading editor"}),"\n",(0,n.jsx)(e.p,{children:"To access to the proofreading editor from the translation editor:"}),"\n",(0,n.jsxs)(e.ol,{children:["\n",(0,n.jsx)(e.li,{children:"Click on the hamburger \u2630 in the top left of the CrowdIn translation editor."}),"\n",(0,n.jsx)(e.li,{children:"Click on workflow."}),"\n",(0,n.jsx)(e.li,{children:"Click on Proofreading."}),"\n"]}),"\n",(0,n.jsx)(a.A,{src:"/img/help/2021/05/crowdin-switch-proofreading-workflow.png",caption:"fig. Crowdin editors switch",alt:"Crowdin editors switch"}),"\n",(0,n.jsx)(e.h2,{id:"proofread-strings",children:"Proofread strings"}),"\n",(0,n.jsx)(e.p,{children:"Once you have switched to the proofreading workflow you can start to review and approve translated strings."}),"\n",(0,n.jsx)(a.A,{src:"/img/help/2021/05/crowdin-proofreading-editor.png",caption:"fig. proofreading editor",alt:"proofreading editor"}),"\n",(0,n.jsxs)(e.p,{children:[(0,n.jsx)(e.strong,{children:"Select"})," a string that needs validation in the central panel \u2460."]}),"\n",(0,n.jsxs)(e.p,{children:["If the translation is correct, you can ",(0,n.jsx)(e.strong,{children:"approve"})," it \u2461. Sometimes multiple translations are proposed and are\navailable in the right panel, in that case you can ",(0,n.jsx)(e.strong,{children:"arbitrate"})," them \u2462 and select the one that works the best."]}),"\n",(0,n.jsxs)(e.p,{children:["If none of the translations are correct for the selected string you can either ",(0,n.jsx)(e.strong,{children:"translate"})," the string \u2463 yourself\nor move to the next string."]})]})}function u(t={}){const{wrapper:e}={...(0,s.R)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(p,{...t})}):p(t)}},42987(t,e,o){o.d(e,{A:()=>c});var r=o(86025),n=o(5556),s=o.n(n);const a="root_Qk78";var i=o(74848);const l=({src:t,alt:e,caption:o=null,size:n={}})=>{const s=(0,r.Ay)(t),l=n.width||n.height?{width:n.width,height:n.height}:{};return(0,i.jsxs)("figure",{className:a,children:[(0,i.jsx)("img",{src:s,alt:e,style:l}),o&&(0,i.jsx)("figcaption",{children:o})]})};l.propTypes={src:s().string.isRequired,alt:s().string.isRequired,caption:s().string,
1size:s().shape({width:s().oneOfType([s().string,s().number]),height:s().oneOfType([s().string,s().number])})};const c=l},28453(t,e,o){o.d(e,{R:()=>a,x:()=>i});var r=o(96540);const n={},s=r.createContext(n);function a(t){const e=r.useContext(s);return r.useMemo(function(){return"function"==typeof t?t(e):{...e,...t}},[e,t])}function i(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(n):t.components||n:a(t.components),r.createElement(s.Provider,{value:e},t.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.