feat(02-registration-dictionary-phrases): dictionary-backed registration text

Phase 2 complete:

- Seed registration dictionary phrases

- Update public and admin registration templates to use translations

- Document PAUL plan, apply, summary, and changelog
This commit is contained in:
2026-04-24 21:35:17 +02:00
parent 2cf4715914
commit 6ef8b0029d
13 changed files with 1033 additions and 189 deletions

View File

@@ -52,7 +52,7 @@
</div>
<div class="cb"></div>
<div class="entry">
<div><h5 align="center">Dane do wystawienia faktury:</h5></div>
<div><h5 align="center">{translate word='registration_invoice_data'}:</h5></div>
</div>
<div class="entry">
<div class="label">{translate word='Instytucja'}:</div>
@@ -76,14 +76,14 @@
</div>
<div class="cb"></div>
<div class="entry">
<div class="label">Zgłaszam referat</div>
<div class="label">{translate word='registration_submit_talk'}</div>
<div class="value" title="s">
<label class="control control--radio">Tak
<label class="control control--radio">{translate word='registration_yes'}
<input type="radio" name="referat" class="referat" value="1" />
<div class="control__indicator"></div>
</label>
<label class="control control--radio">Nie
<label class="control control--radio">{translate word='registration_no'}
<input type="radio" name="referat" class="referat" value="2" />
<div class="control__indicator"></div>
</label>
@@ -91,14 +91,14 @@
</div>
<div class="cb"></div>
<div class="entry">
<div class="label">Zgłaszam poster</div>
<div class="label">{translate word='registration_submit_poster'}</div>
<div class="value" title="s">
<label class="control control--radio">Tak
<label class="control control--radio">{translate word='registration_yes'}
<input type="radio" name="poster" value="1" />
<div class="control__indicator"></div>
</label>
<label class="control control--radio">Nie
<label class="control control--radio">{translate word='registration_no'}
<input type="radio" name="poster" value="2" />
<div class="control__indicator"></div>
</label>
@@ -136,11 +136,11 @@
<div class="label">{translate word='Opłata'}: </div>
<div class="value">
<div class="confOption">
<label class="control control--radio">Opłata obniżona (płatność do 03.10.2026)
<label class="control control--radio">{translate word='registration_fee_discount_2026'}
<input type="radio" name="conference_fee_disc" id="conference_fee_disc" checked="true" class="conference_fee_disc" value="1" onclick="calculatePrice();"/>
<div class="control__indicator"></div>
</label>
<label class="control control--radio">Opłata zwykła (płatność po 03.10.2026)
<label class="control control--radio">{translate word='registration_fee_normal_2026'}
<input type="radio" name="conference_fee_disc" id="conference_fee_norm" class="conference_fee_disc" value="2" onclick="calculatePrice();"/>
<div class="control__indicator"></div>
</label>
@@ -148,7 +148,7 @@
</div>
</div>
<div class="entry">
<div class="label">Cała konferencja: </div>
<div class="label">{translate word='registration_full_conference_label'}: </div>
<div class="value">
<input type="hidden" name="participation_option" id="participation_option" value="full" />
<input type="hidden" name="one_day_lodging" id="one_day_lodging" value="0" />
@@ -160,24 +160,24 @@
$('#conference_2').hide(); calculatePrice();" />
<div class="control__indicator"></div>
</label>
<span>Biorę udział w całej konferencji</span>
<span>{translate word='registration_participation_full_cta'}</span>
</div>
<div style="width:100%; display:flex; flex-wrap:no-wrap; align-items:start; gap;10px; margin-bottom:30px;">
<label class="control control--radio">&nbsp;
<input type="radio" name="conference_fee" id="conference_fee_1_lodging" class="conference_fee" value="5" onclick="calculatePrice()" />
<div class="control__indicator"></div>
</label>
<span>Biorę udział w jednym dniu konferencji (z noclegiem)</span>
<span>{translate word='registration_participation_one_day_lodging_cta'}</span>
</div>
<div style="width:100%; display:flex; flex-wrap:no-wrap; align-items:start; gap;10px; margin-bottom:30px;">
<label class="control control--radio">&nbsp;
<input type="radio" name="conference_fee" id="conference_fee_1" class="conference_fee" value="5" onclick="calculatePrice()" />
<div class="control__indicator"></div>
</label>
<span>Biorę udział w jednym dniu konferencji (bez noclegu)</span>
<span>{translate word='registration_participation_one_day_no_lodging_cta'}</span>
</div>
<div class="show--day-select" id="one-day-lodging-days" style="display:none; width:100%; margin-bottom:30px; flex-direction:column; gap:10px;">
<span>Proszę zaznaczyć dzień:</span>
<span>{translate word='registration_select_day'}:</span>
<label class="control control--radio">3/4 listopada
<input type="radio" name="participation_days" value="3/4 listopada" />
<div class="control__indicator"></div>
@@ -188,7 +188,7 @@
</label>
</div>
<div class="show--day-select" id="one-day-no-lodging-days" style="display:none; width:100%; margin-bottom:30px; flex-direction:column; gap:10px;">
<span>Proszę zaznaczyć dzień:</span>
<span>{translate word='registration_select_day'}:</span>
<label class="control control--radio">3 listopada
<input type="radio" name="participation_days" value="3 listopada" />
<div class="control__indicator"></div>
@@ -303,11 +303,11 @@
{/literal}
</script>
<div class="confOptionContainer" id="conference_1">
<label class="control control--checkbox" > Dopłata do pokoju 1-osobowego
<label class="control control--checkbox" > {translate word='registration_single_room_surcharge'}
<input type="checkbox" name="fee_room1" class="price_plus_room" id="price_plus_room" data-theme="d" value="2" onchange="calculatePrice();" >
<div class="control__indicator"></div>
</label>
<label class="control control--checkbox" > Opłata za pobyt osoby towarzyszącej lub kierowcy w pokoju dwuosobowym
<label class="control control--checkbox" > {translate word='registration_accompanying_driver_fee'}
<input type="checkbox" name="fee_room_add_person" id="price_plus_person" data-theme="d" onclick="$('#price_plus_room').prop
("checked", true);" value="3" onchange="calculatePrice();" >
<div class="control__indicator"></div>
@@ -355,24 +355,24 @@
</div>
</div>
<div class="entry">
<div class="label">Preferencje żywieniowe:</div>
<div class="label">{translate word='registration_diet_preferences'}:</div>
<div class="value">
<label class="control control--radio">dieta standardowa
<label class="control control--radio">{translate word='registration_diet_standard'}
<input type="radio" name="diet" value="1" checked="checked" onclick="$('#diet_special_container').hide(); $('#diet_special').val('');" />
<div class="control__indicator"></div>
</label>
<label class="control control--radio">dieta specjalna
<label class="control control--radio">{translate word='registration_diet_special'}
<input type="radio" name="diet" value="2" onclick="$('#diet_special_container').show();" />
<div class="control__indicator"></div>
</label>
<div id="diet_special_container" style="display:none; margin-top:10px;">
<label for="diet_special">Jaka?</label>
<label for="diet_special">{translate word='registration_diet_which'}</label>
<input type="text" name="diet_special" id="diet_special" />
</div>
</div>
</div>
<div class="entry">
<div class="label">Cena za konferencję</div>
<div class="label">{translate word='registration_conference_price'}</div>
<div class="value"><p class="price_full_fee" style="margin: 0px;">&nbsp;</p></div>
</div>

View File

@@ -1,4 +1,12 @@
<div style="text-align: left;">
{assign var=registrationYes value='registration_yes'|translate}
{assign var=registrationNo value='registration_no'|translate}
{assign var=registrationMissing value='registration_missing'|translate}
{assign var=registrationParticipationFull value='registration_participation_full'|translate}
{assign var=registrationParticipationLodging value='registration_participation_one_day_lodging'|translate}
{assign var=registrationParticipationNoLodging value='registration_participation_one_day_no_lodging'|translate}
{assign var=registrationDietStandard value='registration_diet_standard'|translate}
{assign var=registrationDietSpecial value='registration_diet_special'|translate}
<h2>Dziękujemy za rejestrację na II Kongres Surowcowy</h2>
<p><b>Termin: 36 listopada 2025 r.</b></p>
<p><b>Miejsce kongresu: Krynica-Zdrój</b></p>
@@ -11,45 +19,45 @@
<!-- Dane uczestnika -->
<div class="divTableFormRow">
<div class="divTableFormCell"><h3>Dane uczestnika:</h3>
<div class="divTableFormCell"><h3>{'registration_participant_data'|translate}:</h3>
Imię: {$objParticipant->getName()}<br>
Nazwisko: {$objParticipant->getSurname()}<br>
Tytuł/stop. naukowy: {$objParticipant->getDegree()}<br>
Stanowisko: {$objParticipant->getPosition()|default:'brak'}<br>
Stanowisko: {$objParticipant->getPosition()|default:$registrationMissing}<br>
Telefon: {$objParticipant->getPhone()}<br>
Fax: {$objParticipant->getFax()|default:'brak'}<br>
Fax: {$objParticipant->getFax()|default:$registrationMissing}<br>
Email: {$objParticipant->getEmail()}<br>
</div>
</div>
<!-- Dane instytucji -->
<div class="divTableFormRow">
<div class="divTableFormCell"><h3>Dane instytucji:</h3>
Instytucja: {$objParticipant->getInstitution()|default:'brak'}<br>
Ulica i numer: {$objParticipant->getAddress()|default:'brak'}<br>
Kod pocztowy: {$objParticipant->getPostCode()|default:'brak'}<br>
Miejscowość: {$objParticipant->getCity()|default:'brak'}<br>
NIP Instytucji: {$objParticipant->getNip()|default:'brak'}<br>
<div class="divTableFormCell"><h3>{'registration_institution_data'|translate}:</h3>
Instytucja: {$objParticipant->getInstitution()|default:$registrationMissing}<br>
Ulica i numer: {$objParticipant->getAddress()|default:$registrationMissing}<br>
Kod pocztowy: {$objParticipant->getPostCode()|default:$registrationMissing}<br>
Miejscowość: {$objParticipant->getCity()|default:$registrationMissing}<br>
NIP Instytucji: {$objParticipant->getNip()|default:$registrationMissing}<br>
</div>
</div>
<!-- Wystąpienie -->
<div class="divTableFormRow">
<div class="divTableFormCell"><h3>Dane wystąpienia:</h3>
Referat: {$objParticipant->getReferat()|replace:1:'Tak'|replace:2:'Nie'|replace:0:'Nie'}<br>
Poster: {$objParticipant->getPoster()|replace:1:'Tak'|replace:2:'Nie'|replace:0:'Nie'}<br>
<p>Tytuł referatu/posteru: {$objParticipant->getMessage()|default:'brak'}</p>
<p>Autor: {$objParticipant->getAutor()|default:'brak'}</p>
<div class="divTableFormCell"><h3>{'registration_presentation_data'|translate}:</h3>
Referat: {$objParticipant->getReferat()|replace:1:$registrationYes|replace:2:$registrationNo|replace:0:$registrationNo}<br>
Poster: {$objParticipant->getPoster()|replace:1:$registrationYes|replace:2:$registrationNo|replace:0:$registrationNo}<br>
<p>Tytuł referatu/posteru: {$objParticipant->getMessage()|default:$registrationMissing}</p>
<p>{'registration_author'|translate}: {$objParticipant->getAutor()|default:$registrationMissing}</p>
</div>
</div>
<!-- Informacja o kwocie -->
<div class="divTableFormRow">
<div class="divTableFormCell"><h3>Informacja o kwocie do zapłaty:</h3>
<div class="divTableFormCell"><h3>{'registration_amount_information'|translate}:</h3>
{if $discPrice == 2}
Opłata zwykła (płatność <b>po 03.10.2026</b>)
{'registration_fee_normal_2026'|translate}
{else}
Opłata obniżona (płatność <b>do 03.10.2026</b>)
{'registration_fee_discount_2026'|translate}
{/if}
<ul>
{foreach $arrayObjParameters as $objParam}
@@ -60,14 +68,14 @@
{if $discPrice == 2}
{assign var="netto" value=$objParam->GetPrice()}
Cena netto: {$netto|number_format:2:",":" "} PLN<br>
{'registration_net_price'|translate}: {$netto|number_format:2:",":" "} PLN<br>
{else}
{assign var="netto" value=$objParam->GetPriceProm()}
Cena netto (bez VAT): {$netto|number_format:2:",":" "} PLN<br>
{'registration_net_price_no_vat'|translate}: {$netto|number_format:2:",":" "} PLN<br>
{/if}
{assign var="vat" value=$netto * 1.23}
Cena brutto: {$vat|number_format:2:",":" "} PLN<br>
{'registration_gross_price'|translate}: {$vat|number_format:2:",":" "} PLN<br>
</li>
{/if}
{/foreach}
@@ -75,11 +83,11 @@
<h3>Razem do zapłaty:</h3>
<h3>{'registration_total_to_pay'|translate}:</h3>
{assign var="resultPrice" value=$objParticipant->getPrice()}
Cena netto: {$resultPrice|number_format:2:",":" "} PLN<br>
{'registration_net_price'|translate}: {$resultPrice|number_format:2:",":" "} PLN<br>
{assign var="resultPriceVat" value=$resultPrice * 1.23}
Cena brutto: {$resultPriceVat|number_format:2:",":" "} PLN<br>
{'registration_gross_price'|translate}: {$resultPriceVat|number_format:2:",":" "} PLN<br>
<p><b>{'klauzula_ceny'|translate}</b></p>
</div>
@@ -87,25 +95,25 @@
<!-- Zgody -->
<div class="divTableFormRow">
<div class="divTableFormCell"><h3>Wyrażono zgody:</h3>
<p>Zgoda na przetwarzanie danych {$objParticipant->getAgree1()|replace:1:'Tak'|replace:'on':'Tak'|replace:0:'Nie'}</p>
<p>Zgoda na przetwarzanie wizerunku {$objParticipant->getAgree2()|replace:1:'Tak'|replace:'on':'Tak'|replace:0:'Nie'}</p>
<div class="divTableFormCell"><h3>{'registration_consents_expressed'|translate}:</h3>
<p>{'registration_consent_data'|translate} - {$objParticipant->getAgree1()|replace:1:$registrationYes|replace:'on':$registrationYes|replace:0:$registrationNo}</p>
<p>{'registration_consent_image'|translate} - {$objParticipant->getAgree2()|replace:1:$registrationYes|replace:'on':$registrationYes|replace:0:$registrationNo}</p>
</div>
</div>
<div class="divTableFormRow">
<div class="divTableFormCell"><h3>Wybrana opcja udziału:</h3>
<p><b>Typ udziału:</b> {$objParticipant->getParticipationOption()|replace:'full':'cała konferencja'|replace:'one_day_lodging':'jeden dzień konferencji (z noclegiem)'|replace:'one_day_no_lodging':'jeden dzień konferencji (bez noclegu)'|default:'cała konferencja'}</p>
<div class="divTableFormCell"><h3>{'registration_selected_participation_option'|translate}:</h3>
<p><b>{'registration_participation_type'|translate}:</b> {$objParticipant->getParticipationOption()|replace:'full':$registrationParticipationFull|replace:'one_day_lodging':$registrationParticipationLodging|replace:'one_day_no_lodging':$registrationParticipationNoLodging|default:$registrationParticipationFull}</p>
{if $days}
<p><b>Wskazane dni obecności:</b> {$days}</p>
<p><b>{'registration_selected_presence_days'|translate}:</b> {$days}</p>
{elseif $objParticipant->getParticipationDays()}
<p><b>Wskazane dni obecności:</b> {$objParticipant->getParticipationDays()}</p>
<p><b>{'registration_selected_presence_days'|translate}:</b> {$objParticipant->getParticipationDays()}</p>
{else}
<p><b>Obecność podczas całej konferencji.</b></p>
<p><b>{'registration_full_conference_presence'|translate}</b></p>
{/if}
<p><b>Dopłata do pokoju 1-osobowego:</b> {$objParticipant->getFeeRoom1()|replace:1:'Tak'|replace:0:'Nie'|default:'Nie'}</p>
<p><b>Osoba towarzysząca/kierowca:</b> {$objParticipant->getFeeRoomAddPerson()|replace:1:'Tak'|replace:0:'Nie'|default:'Nie'}</p>
<p><b>Preferencje żywieniowe:</b> {$objParticipant->getDiet()|replace:1:'dieta standardowa'|replace:2:'dieta specjalna'|default:'dieta standardowa'} {if $objParticipant->getDietSpecial()}- {$objParticipant->getDietSpecial()}{/if}</p>
<p><b>{'registration_single_room_surcharge'|translate}:</b> {$objParticipant->getFeeRoom1()|replace:1:$registrationYes|replace:0:$registrationNo|default:$registrationNo}</p>
<p><b>{'registration_accompanying_driver'|translate}:</b> {$objParticipant->getFeeRoomAddPerson()|replace:1:$registrationYes|replace:0:$registrationNo|default:$registrationNo}</p>
<p><b>{'registration_diet_preferences'|translate}:</b> {$objParticipant->getDiet()|replace:1:$registrationDietStandard|replace:2:$registrationDietSpecial|default:$registrationDietStandard} {if $objParticipant->getDietSpecial()}- {$objParticipant->getDietSpecial()}{/if}</p>
</div>
</div>