From a0a4fbdfbe9afc30a2b6b8fb79ef4e62afcf262a Mon Sep 17 00:00:00 2001 From: Antoine Martin Date: Thu, 3 Apr 2025 15:57:14 -0400 Subject: [PATCH 1/2] join: migrate registration form to Forgejo backend --- ikiwiki.setup | 3 +- join.fr.mo | Bin 12916 -> 8315 bytes join.fr.po | 14 +++--- join.html | 2 +- join.pot | 4 +- js/join.js => join/join-en.html | 26 +++++------ join/join-fr.html | 77 ++++++++++++++++++++++++++++++++ 7 files changed, 104 insertions(+), 22 deletions(-) rename js/join.js => join/join-en.html (71%) create mode 100644 join/join-fr.html diff --git a/ikiwiki.setup b/ikiwiki.setup index 75d756a..29a6b57 100644 --- a/ikiwiki.setup +++ b/ikiwiki.setup @@ -46,6 +46,7 @@ add_plugins: - typography - sidebar2 - po +- inline # plugins to disable disable_plugins: - htmlscrubber @@ -411,7 +412,7 @@ po_master_language: en|English po_slave_languages: - fr|Français # configures what pages are translatable -po_translatable_pages: 'index or footer or platforms or sidebar or join or recentchanges or shortcuts' +po_translatable_pages: 'index or platforms or join or sidebar' # used to decide how internal links should be generated, depending on web server features and site-specific preferences. po_link_to: current diff --git a/join.fr.mo b/join.fr.mo index 84b5f10e829e310b96c47ef7e648488c8497f1c3..28c6171a96ce201663e04bf1af16b9e154b4c125 100644 GIT binary patch delta 512 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 XUlJuUBcSYiT&Y>>2lfB24Wa)9$5D-v diff --git a/join.fr.po b/join.fr.po index 5d0c73c..0a8640f 100644 --- a/join.fr.po +++ b/join.fr.po @@ -7,19 +7,20 @@ msgid "" msgstr "" "Project-Id-Version: ilot.io\n" -"POT-Creation-Date: 2024-10-08 11:35-0400\n" -"PO-Revision-Date: 2024-10-08 11:29-0400\n" +"POT-Creation-Date: 2025-04-03 18:26-0400\n" +"PO-Revision-Date: 2025-04-03 18:27-0400\n" "Last-Translator: \n" "Language-Team: dev@ayakael.net\n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.4.3\n" +"X-Generator: Poedit 3.5\n" #. type: Content of: outside any tag (error?) -msgid "[[!meta title=\"Join\"]]" -msgstr "[[!meta title=\"Se joindre\"]]" +msgid "[[!meta title=\"Join\"]] [[!inline pages=\"join/join-en\" raw=\"yes\"]]" +msgstr "" +"[[!meta title=\"Join\"]] [[!inline pages=\"join/join-fr\" raw=\"yes\"]]" #. type: Content of:

msgid "Registration Form" @@ -220,6 +221,9 @@ msgstr "" "maxlength=\"50\">

" +#~ msgid "[[!meta title=\"Join\"]]" +#~ msgstr "[[!meta title=\"Se joindre\"]]" + #~ msgid "" #~ "async function checkDuplicate() { var url='https://lab.ilot.io/api/v4/" #~ "projects/99/issues'; var email = document.getElementById(\"email\")." diff --git a/join.html b/join.html index 416afe4..9f36dc4 100644 --- a/join.html +++ b/join.html @@ -1,6 +1,6 @@ [[!meta title="Join"]] - +[[!inline pages="join/join-en" raw="yes"]]

Registration Form

diff --git a/join.pot b/join.pot index 157eb78..be0b1f9 100644 --- a/join.pot +++ b/join.pot @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2024-10-08 11:35-0400\n" +"POT-Creation-Date: 2025-04-03 18:27-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,7 +17,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" #. type: Content of: outside any tag (error?) -msgid "[[!meta title=\"Join\"]]" +msgid "[[!meta title=\"Join\"]] [[!inline pages=\"join/join-en\" raw=\"yes\"]]" msgstr "" #. type: Content of:

diff --git a/js/join.js b/join/join-en.html similarity index 71% rename from js/join.js rename to join/join-en.html index db9e888..f5abb63 100644 --- a/js/join.js +++ b/join/join-en.html @@ -1,10 +1,11 @@ + diff --git a/join/join-fr.html b/join/join-fr.html new file mode 100644 index 0000000..32424fa --- /dev/null +++ b/join/join-fr.html @@ -0,0 +1,77 @@ + From a579bf22f96bae32fc23345eb1ed072100b4ef9d Mon Sep 17 00:00:00 2001 From: Antoine Martin Date: Thu, 3 Apr 2025 15:57:14 -0400 Subject: [PATCH 2/2] join: migrate registration form to Forgejo backend --- ikiwiki.setup | 3 +- join.fr.mo | Bin 12916 -> 8321 bytes join.fr.po | 14 +++--- join.html | 2 +- join.pot | 4 +- js/join.js => join/join-en.html | 26 +++++------ join/join-fr.html | 77 ++++++++++++++++++++++++++++++++ 7 files changed, 104 insertions(+), 22 deletions(-) rename js/join.js => join/join-en.html (71%) create mode 100644 join/join-fr.html diff --git a/ikiwiki.setup b/ikiwiki.setup index 75d756a..29a6b57 100644 --- a/ikiwiki.setup +++ b/ikiwiki.setup @@ -46,6 +46,7 @@ add_plugins: - typography - sidebar2 - po +- inline # plugins to disable disable_plugins: - htmlscrubber @@ -411,7 +412,7 @@ po_master_language: en|English po_slave_languages: - fr|Français # configures what pages are translatable -po_translatable_pages: 'index or footer or platforms or sidebar or join or recentchanges or shortcuts' +po_translatable_pages: 'index or platforms or join or sidebar' # used to decide how internal links should be generated, depending on web server features and site-specific preferences. po_link_to: current diff --git a/join.fr.mo b/join.fr.mo index 84b5f10e829e310b96c47ef7e648488c8497f1c3..efd408c22b28598bd1326da10a1f149ad6552cd1 100644 GIT binary patch delta 505 zcmaKoKS%;$7{;F~D>cmglW8Sgx0Ym@QGtUk4bDNJ4pvurg^40%Q6lt@tffO}HJght zT5^rnn!{*rXb6X<=sBEPdb#KO-SfWR_uhM7W2q3zzgcx9FznO-RioTgRN%sRCd1SV zrO>-ufe-SSOpqBJa7xz6Zc=FjI>{YU^GBqEXD`Tk`kQtjORw($ets*2DjKs^w`oV^*^)!3_bp=cTwBaxv*ay^lh#Z-Jn&IBc8Bas}{7LS~i#B_W! xDCOjg6pN_~PM;~@@s4}EesOGa+CQO|op&t(qxvo^R%@bQmeYT_;TPNDS-SuL delta 4963 zcmeHLUuYaf7@ughwh~i|)mr~BIW)JSxxJ<>)udi)OoN8nHl)#%Qk1#fxw}dBcGlV1 zOH&Dp6n&{x@DP3U4@m2q)OW%7CW7FT6hvPI--;kY@i)77m%H>5Ew*`T$mW}w{l1y+ z-+bS1^VZlkH~wY&rVj~zcHns&&v$s9z~lAc4}N|HJ&NZyJad@m?k41S(2qd{==n{A zybJmV=r+)E_YiVF=mk(S{|NM9$X)_Hh50x45)xs)b2A~=35m&j_Yo4{#loKG;jhJ9z*71K1FBx{r{*AS*!s#N63Q$XW26eiU+;|FnycYoL>l zrHUScbr&(e1Zs>u04sOkeDX2|=HMb|1{-M5Gnjw$Bq3j6ehqXl=ogfb53v4oKePw+ zGK6foi;%ZLuj2jtPZ6>e^Z5ZnKF9l-m3nm7AR*7esAoXImYfAbw&UroS9>=1?5IaQ zM|&SKi}*3#BUgUtxzHOE7B2b@Ek(Ygh4iUY;m-V#DDZ^CG`9xno3zFhjg(i&R3(8(W!#BQt2%m>2Pb)RBIusp4UP0f!`8U_#Rp*G|QP8bi>i!kNoeIErC*YI^e3 zv6+e7%!#8D$Frj}TlNB`bJI+oJ~{jPzEj64^DnC5k@*9&wd@ehj!R$T?A**^z`-47 zS&-Tau`nnb0tM8~DeQ|h~sqcaFzBTlV|m=n^#CR-;vPbBH@FyEJ&7C8bR=*2eS zxLvx#yZr^48OfwtCR@!a>6fYDq0A2#xN6&`eV6pUth&byy-ed980*)aCDM2MH%V!cV~trxB7%+H4$u#I*y5lvSUV!c0X&Ch?PI14xjP!~B6}eD?XWaFy2Tv|xYI8x{DcjtpL&u@)OLBou()0jRcvsxg6u`O7VN-T( zWl@Slt`b$_u2tE}NGE4_+BAitExB~iJg5<`69MB3%Sz>cq(zu-;^Air48)>$E0Y zSGaFAdy#1{&2ghIp?$S@lJ<27HL1hIlab@_kcY-T2!jcxF|Sb%lRHnts8|(RbJwP0 zbU~_lfeKVsG74~Cszv0`g77?w=8vsHx+o)sz1nJNSdmJ5i}k-Z&mIq>Ai(VT268Yr z$8=d6;X-HUN=c+-yPC<8m7OqejF!n95=%z1e!g#S@BZBIp4^^i>G1IA-jVvZeP3_d zZ|~b$|FOrpa&_CezB}ON4!G$CP49r4TLW&!ao?5T9`!j5IGShx+_3zmR-D#^%QG=9 zY8Q~SKFm4Bq8bx`ylVM!`Uzn8moMY5KvlXK&=aqPdaTSiM>T9{e6d2aa=S~4FR z5sYym2>1>PE+Dq9r~W(O0l2ym@oXUAiC4jwMx)*^z!Rf+-+*{F5b(q;c-BHLYeLi8 z0eIpS6alc61ik~s+-|@Vx8ar+;@LpJ6W`>=_^k#!aW}-%74RHsT=-B%Rn#7vzTzhc z2bIi?QpA%~1AHT*IC=PnLaE@2(V8^XPWUU(*2Tve{wWaB!0U@bT2#CgngZi7Q6GFH Nm|6vc?Ei^_$Uh(YL;3&! diff --git a/join.fr.po b/join.fr.po index 5d0c73c..e779ed8 100644 --- a/join.fr.po +++ b/join.fr.po @@ -7,19 +7,20 @@ msgid "" msgstr "" "Project-Id-Version: ilot.io\n" -"POT-Creation-Date: 2024-10-08 11:35-0400\n" -"PO-Revision-Date: 2024-10-08 11:29-0400\n" +"POT-Creation-Date: 2025-04-03 18:26-0400\n" +"PO-Revision-Date: 2025-04-03 18:36-0400\n" "Last-Translator: \n" "Language-Team: dev@ayakael.net\n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.4.3\n" +"X-Generator: Poedit 3.5\n" #. type: Content of: outside any tag (error?) -msgid "[[!meta title=\"Join\"]]" -msgstr "[[!meta title=\"Se joindre\"]]" +msgid "[[!meta title=\"Join\"]] [[!inline pages=\"join/join-en\" raw=\"yes\"]]" +msgstr "" +"[[!meta title=\"Se joindre\"]] [[!inline pages=\"join/join-fr\" raw=\"yes\"]]" #. type: Content of:

msgid "Registration Form" @@ -220,6 +221,9 @@ msgstr "" "maxlength=\"50\">

" +#~ msgid "[[!meta title=\"Join\"]]" +#~ msgstr "[[!meta title=\"Se joindre\"]]" + #~ msgid "" #~ "async function checkDuplicate() { var url='https://lab.ilot.io/api/v4/" #~ "projects/99/issues'; var email = document.getElementById(\"email\")." diff --git a/join.html b/join.html index 416afe4..9f36dc4 100644 --- a/join.html +++ b/join.html @@ -1,6 +1,6 @@ [[!meta title="Join"]] - +[[!inline pages="join/join-en" raw="yes"]]

Registration Form

diff --git a/join.pot b/join.pot index 157eb78..be0b1f9 100644 --- a/join.pot +++ b/join.pot @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2024-10-08 11:35-0400\n" +"POT-Creation-Date: 2025-04-03 18:27-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,7 +17,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" #. type: Content of: outside any tag (error?) -msgid "[[!meta title=\"Join\"]]" +msgid "[[!meta title=\"Join\"]] [[!inline pages=\"join/join-en\" raw=\"yes\"]]" msgstr "" #. type: Content of:

diff --git a/js/join.js b/join/join-en.html similarity index 71% rename from js/join.js rename to join/join-en.html index db9e888..f5abb63 100644 --- a/js/join.js +++ b/join/join-en.html @@ -1,10 +1,11 @@ + diff --git a/join/join-fr.html b/join/join-fr.html new file mode 100644 index 0000000..32424fa --- /dev/null +++ b/join/join-fr.html @@ -0,0 +1,77 @@ +