Answers.Body: <p>This string has <a href="https://github.com/civicrm/civicrm-core/commit/e364c7621f10c8d6b9fa8b1fc2309ed15d94c6fa#diff-fc454d9ef40ac8417cb3c056269d4cccL34" rel="nofollow noreferrer">changed in core</a>, somewhat recently, so it has broken the translation.</p>
  
  <p>The short answer, is that the new string had not been yet pushed to Transifex, and this relies on a manual intervention by project admins. It has now been updated today.</p>
  
  <p>This process has been somewhat problematic for a while. It was not much of an issue because user-facing strings do not change that often, but recently as we tweak more the interface, it has become more apparently. We definitely need to further automate this process.</p>
  
  <p>I started restructuring <a href="https://lab.civicrm.org/dev/translation/wikis/Pushing-new-strings-to-transifex" rel="nofollow noreferrer">the documentation on the translation wiki</a>. Hopefully we can make the process clearer and simpler, so that we can automate it at some point.</p>
  
  <p>If you would like to help improve this process, please join us in the CiviCRM <a href="https://chat.civicrm.org/civicrm/channels/translation" rel="nofollow noreferrer">translation channel</a>.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-06-06T16:31:30.547Z
Answers.LastActivityDate: 2019-06-07T00:52:53.330Z
Answers.LastEditDate: 2019-06-07T00:52:53.330Z
Answers.UserDisplayName: bgm
Answers.Body: <p>I'm not super familiar with translation but I think the issue is the use of ts() in that file.</p>
  
  <p>The string it's expecting is <code>To complete this transaction, click the &lt;strong&gt;%1&lt;/strong&gt; button below.</code></p>
  
  <p>So it's expecting ts() to be used with a placeholder and second parameter, but I'm not sure how that would work here because you also want to translate the word "Continue" right?</p>
  
  <p>But just to check, if you change that line to:</p>
  
  <p><code>return ts('To complete your contribution, click the &lt;strong&gt;%1&lt;/strong&gt; button below.', array(1 =&gt; 'Continue'));</code></p>
  
  <p>does it work?</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-06-06T12:58:09.967Z
Answers.Text: Thanks Demerit, I will give a try.
Answers.UserDisplayName: Guillaume Sorel
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-06-06T13:08:11.813Z
Answers.Text: See also my comment above under the question - on second glance I'm thinking this exact string was never translated?
Answers.UserDisplayName: Demerit
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-05-31T17:51:24.347Z
Answers.LastActivityDate: 2019-05-31T17:51:24.347Z
Answers.UserDisplayName: Demerit
Body: <p>I'm still having some English mixed with French even though these strings are translated since years in transifex.
  Like in this example:</p>
  
  <blockquote>
    <p>Veuillez vérifier attentivement les informations ci-dessous. Cliquez sur Retour si vous avez besoin d'y apporter des changements. To complete your contribution, click the Continue button below. </p>
  </blockquote>
  
  <p>And forcing to translate in word replacement doesn't work either. Of course I cleared all caches.</p>
  
  <p>The concerned file is /sites/all/modules/civicrm/CRM/Core/Payment/Manual.php line 255</p>
  
  <p>Any idea?</p>
  
  <p>POST : I'm getting confused. The text</p>
  
  <blockquote>
    <p>To complete your contribution, click the %1 button below.</p>
  </blockquote>
  
  <p>is supposed to be translated since 8 years but should appear in </p>
  
  <blockquote>
    <p>templates/CRM/Contribute/Form/Contribution/Confirm.tpl</p>
  </blockquote>
  
  <p>when it's not and is to be find in </p>
  
  <blockquote>
    <p>/sites/all/modules/civicrm/CRM/Core/Payment/Manual.php line 255</p>
  </blockquote>
  
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2019-06-06T00:15:50.187Z
Comments.Text: My answer below might be wrong, but just want to clarify something first: Where are you seeing that it has been translated already? I'm asking because on second glance I don't think that exact string is in the .po files? Are you seeing it there?
Comments.UserDisplayName: Demerit
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2019-06-06T13:50:11.983Z
Comments.Text: I checked in Transifex and the string was tranlated years ago
Comments.UserDisplayName: Guillaume Sorel
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2019-06-06T13:52:41.397Z
Comments.Text: Which po file? I expected to see it in common-base.po where the other Core/Payment/XXX strings are but I don't see it anywhere?
Comments.UserDisplayName: Demerit
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2019-06-06T14:03:25.233Z
Comments.Text: I haven't checked there
Comments.UserDisplayName: Guillaume Sorel
Tags: <translation>
Title: How do I solve a string extractor issue?
ThreadText: # How do I solve a string extractor issue?
  
  (Asked by: username_0 on 2019-05-31)
  
  I'm still having some English mixed with French even though these strings are translated since years in transifex.
  Like in this example:
  
  > Veuillez vérifier attentivement les informations ci-dessous. Cliquez sur Retour si vous avez besoin d'y apporter des changements. To complete your contribution, click the Continue button below.
  
  And forcing to translate in word replacement doesn't work either. Of course I cleared all caches.
  
  The concerned file is /sites/all/modules/civicrm/CRM/Core/Payment/Manual.php line 255
  
  Any idea?
  
  POST : I'm getting confused. The text
  
  > To complete your contribution, click the %1 button below.
  
  is supposed to be translated since 8 years but should appear in
  
  > templates/CRM/Contribute/Form/Contribution/Confirm.tpl
  
  when it's not and is to be find in
  
  > /sites/all/modules/civicrm/CRM/Core/Payment/Manual.php line 255
  
  **Tags:** translation
  
  > **Comments:**
  > **username_1**: My answer below might be wrong, but just want to clarify something first: Where are you seeing that it has been translated already? I'm asking because on second glance I don't think that exact string is in the .po files? Are you seeing it there?  
  > **username_0**: I checked in Transifex and the string was tranlated years ago  
  > **username_1**: Which po file? I expected to see it in common-base.po where the other Core/Payment/XXX strings are but I don't see it anywhere?  
  > **username_0**: I haven't checked there  
  
  ---
  
  ## 2 answers
  
  ### Answer by username_2 on 2019-06-06. Score: 2 | Accepted answer
  
  This string has [changed in core](https://github.com/civicrm/civicrm-core/commit/e364c7621f10c8d6b9fa8b1fc2309ed15d94c6fa#diff-fc454d9ef40ac8417cb3c056269d4cccL34), somewhat recently, so it has broken the translation.
  
  The short answer, is that the new string had not been yet pushed to Transifex, and this relies on a manual intervention by project admins. It has now been updated today.
  
  This process has been somewhat problematic for a while. It was not much of an issue because user-facing strings do not change that often, but recently as we tweak more the interface, it has become more apparently. We definitely need to further automate this process.
  
  I started restructuring [the documentation on the translation wiki](https://lab.civicrm.org/dev/translation/wikis/Pushing-new-strings-to-transifex). Hopefully we can make the process clearer and simpler, so that we can automate it at some point.
  
  If you would like to help improve this process, please join us in the CiviCRM [translation channel](https://chat.civicrm.org/civicrm/channels/translation).
  
  
  ---
  
  ### Answer by username_1 on 2019-05-31. Score: 0
  
  I'm not super familiar with translation but I think the issue is the use of ts() in that file.
  
  The string it's expecting is `To complete this transaction, click the <strong>%1</strong> button below.`
  
  So it's expecting ts() to be used with a placeholder and second parameter, but I'm not sure how that would work here because you also want to translate the word "Continue" right?
  
  But just to check, if you change that line to:
  
  `return ts('To complete your contribution, click the <strong>%1</strong> button below.', array(1 => 'Continue'));`
  
  does it work?
  
  > **Comments:**
  > **username_0**: Thanks username_1, I will give a try.  
  > **username_1**: See also my comment above under the question - on second glance I'm thinking this exact string was never translated?  
  
  ---
  
  