diff options
Diffstat (limited to 'views')
39 files changed, 366 insertions, 384 deletions
diff --git a/views/404.handlebars b/views/404.handlebars index ec8fcb5..89d3f33 100755 --- a/views/404.handlebars +++ b/views/404.handlebars @@ -1,4 +1,4 @@ <main class="page"> - <h1>404 - Event not found</h1> - <p>It may have never existed, or it's been removed from the server. Don't despair - why not create a new one? I for one would love to come to your ocarina recital.</p> + <h1>{{t "views.404notfound"}}</h1> + <p>{{t "views.404desc"}}</p> </main> diff --git a/views/createEventMagicLink.handlebars b/views/createEventMagicLink.handlebars index d0a0a49..7c01ebc 100644 --- a/views/createEventMagicLink.handlebars +++ b/views/createEventMagicLink.handlebars @@ -1,5 +1,5 @@ <main class="page"> - <h2 class="mb-4">Request a link to create a new event</h2> + <h2 class="mb-4">{{t "views.createeventmagiclink.requestmltitle" }}</h2> <form action="/magic-link/event/create" @@ -8,10 +8,10 @@ hx-target="article" > <p> - The administrator of this instance has limited event creation to a set of specific email addresses. If your email address is allowed to create events, you will be sent a magic link. If not, you won't receive anything. + {{t "views.createeventmagiclink.requestmldesc" }} </p> <p> - If you run into any issues, please contact the instance administrator. + {{t "views.createeventmagiclink.requestmlcontact" }} </p> {{#if message}} <div class="alert alert-{{message.type}}" role="alert"> @@ -19,11 +19,11 @@ </div> {{/if}} <div class="form-group"> - <label for="email">Email address</label> - <input type="email" class="form-control" id="email" placeholder="Email address" required name="email"> + <label for="email">{{t "common.emailaddr" }}</label> + <input type="email" class="form-control" id="email" placeholder="{{t "common.emailaddr" }}" required name="email"> </div> <div class="form-group text-center"> - <button type="submit" class="button button--primary w-50">Request magic link</button> + <button type="submit" class="button button--primary w-50">{{t "routes.magiclink.requestmlbutton" }}</button> </div> </form> </main> diff --git a/views/emails/addEventAttendee/addEventAttendeeHtml.handlebars b/views/emails/addEventAttendee/addEventAttendeeHtml.handlebars index 48cdb48..fcd68b4 100644 --- a/views/emails/addEventAttendee/addEventAttendeeHtml.handlebars +++ b/views/emails/addEventAttendee/addEventAttendeeHtml.handlebars @@ -1,9 +1,9 @@ -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">You just marked yourself as attending an event on {{siteName}}. Thank you! We'll send you another email if there are any updates to the event. Your email will be automatically removed from the database once the event finishes.</p> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">Follow this link to open the event page any time: <a href="https://{{domain}}/{{eventID}}">https://{{domain}}/{{eventID}}</a></p> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">Need to remove yourself from this event? <a href="https://{{domain}}/event/{{eventID}}/unattend/{{removalPasswordHash}}">Click this link</a>.</p> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">You can also head to the event page and use this <strong>deletion password</strong>: {{removalPassword}}</p> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">Love,</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.addeventattendee.preface" }}</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.addeventattendee.eventlink" }}: <a href="https://{{domain}}/{{eventID}}">https://{{domain}}/{{eventID}}</a></p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.addeventattendee.toremove" }}: <a href="https://{{domain}}/event/{{eventID}}/unattend/{{removalPasswordHash}}">{{t "views.emails.addeventattendee.clicktocancel" }}</a>.</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{{t "views.emails.addeventattendee.removapasswordhtml" }}}: {{removalPassword}}</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.love" }}</p> <p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{siteName}}</p> <hr/> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;"><strong>Hold up - I have no idea what this email is about!</strong></p> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">If you didn't mark yourself as attending an event on {{siteName}}, someone may have accidentally typed your email instead of theirs. If you don't want to attend this event, use the <strong>deletion password</strong> above to remove yourself from the event page.</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;"><strong>{{t "views.emails.holdup" }}</strong></p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{{t "views.emails.addeventattendee.dontknowhtml" }}}</p> diff --git a/views/emails/addEventAttendee/addEventAttendeeText.handlebars b/views/emails/addEventAttendee/addEventAttendeeText.handlebars index 3930e28..c264989 100644 --- a/views/emails/addEventAttendee/addEventAttendeeText.handlebars +++ b/views/emails/addEventAttendee/addEventAttendeeText.handlebars @@ -1,13 +1,12 @@ -You just marked yourself as attending an event on {{siteName}}. Thank you! We'll send you another email if there are any updates to the event. Your email will be automatically removed from the database once the event finishes. +{{t "views.emails.addeventattendee.preface" }} -Follow this link to open the event page any time: https://{{domain}}/{{eventID}} +{{t "views.emails.addeventattendee.eventlink" }}: https://{{domain}}/{{eventID}} -Need to remove yourself from this event? Click this link: https://{{domain}}/event/{{eventID}}/unattend/{{removalPasswordHash}} +{{t "views.emails.addeventattendee.removelink" }}: https://{{domain}}/event/{{eventID}}/unattend/{{removalPasswordHash}} -You can also head to the event page and use this deletion password: {{removalPassword}} - -Love, +{{t "views.emails.addeventattendee.removepassword" }}: {{removalPassword}} +{{t "views.emails.love" }} {{siteName}} -If you didn't mark yourself as attending an event on {{siteName}}, someone may have accidentally typed your email instead of theirs. If you don't want to attend this event, use the deletion password above to remove yourself from the event page. +{{t "views.emails.dontknow" }}
\ No newline at end of file diff --git a/views/emails/addEventComment/addEventCommentHtml.handlebars b/views/emails/addEventComment/addEventCommentHtml.handlebars index 8ab7ec1..d15eb00 100644 --- a/views/emails/addEventComment/addEventCommentHtml.handlebars +++ b/views/emails/addEventComment/addEventCommentHtml.handlebars @@ -1,7 +1,7 @@ -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;"><strong>{{commentAuthor}}</strong> has just posted a comment on an event you're attending on {{siteName}}.</p> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">Click here to see the comment: <a href="https://{{domain}}/{{eventID}}">https://{{domain}}/{{eventID}}</a></p> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">Love,</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{{t "views.emails.addeventcomment.prefacehtml" }}}</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.addeventcomment.link" }}: <a href="https://{{domain}}/{{eventID}}">https://{{domain}}/{{eventID}}</a></p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.love" }}</p> <p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{siteName}}</p> <hr/> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;"><strong>Hold up - I have no idea what this email is about!</strong></p> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">If you didn't mark yourself as attending an event on {{siteName}}, someone may have accidentally typed your email instead of theirs. Don't worry - there isn't anything you need to do. Your email will be removed from the system when the event finishes.</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;"><strong>{{t "views.emails.holdup" }}</strong></p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.dontknow" }}</p> diff --git a/views/emails/addEventComment/addEventCommentText.handlebars b/views/emails/addEventComment/addEventCommentText.handlebars index d7c045e..ec0b87c 100644 --- a/views/emails/addEventComment/addEventCommentText.handlebars +++ b/views/emails/addEventComment/addEventCommentText.handlebars @@ -1,9 +1,9 @@ -{{commentAuthor}} has just posted a comment on an event you're attending on {{siteName}}. +{{t "views.emails.addeventcomment.preface" commentAuthor }} -Click here to see the comment: https://{{domain}}/{{eventID}} +{{t "views.emails.addeventcomment.link" }}: https://{{domain}}/{{eventID}} -Love, +{{t "views.emails.love" }} {{siteName}} -If you didn't mark yourself as attending an event on {{siteName}}, someone may have accidentally typed your email instead of theirs. Don't worry - there isn't anything you need to do. Your email will be removed from the system when the event finishes. +{{t "views.emails.dontknow" }} diff --git a/views/emails/createEvent/createEventHtml.handlebars b/views/emails/createEvent/createEventHtml.handlebars index 030ee58..9310c2a 100644 --- a/views/emails/createEvent/createEventHtml.handlebars +++ b/views/emails/createEvent/createEventHtml.handlebars @@ -1,6 +1,6 @@ -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">Your event has been created!</p> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">Use this link to share it with people: <a href="https://{{domain}}/{{eventID}}">https://{{domain}}/{{eventID}}</a></p> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">Click this button to edit your event. <strong>DO NOT SHARE THIS</strong>, as anyone with this link can edit your event.</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.createevent.preface" }}</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.createevent.sharelink" }}: <a href="https://{{domain}}/{{eventID}}">https://{{domain}}/{{eventID}}</a></p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{{t "views.emails.createeventhtml.desc" }}}</p> <table border="0" cellpadding="0" cellspacing="0" class="btn btn-primary" style="border-collapse: separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%; box-sizing: border-box;"> <tbody> @@ -9,7 +9,7 @@ <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: auto;"> <tbody> <tr> - <td style="font-family: sans-serif; font-size: 14px; vertical-align: top; background-color: #28a745; border-radius: 5px; text-align: center;"> <a href="https://{{domain}}/{{eventID}}?e={{editToken}}" target="_blank" style="display: inline-block; color: #ffffff; background-color: #28a745; border: solid 1px #28a745; border-radius: 5px; box-sizing: border-box; cursor: pointer; text-decoration: none; font-size: 14px; font-weight: bold; margin: 0; padding: 12px 25px; text-transform: capitalize; border-color: #28a745;">Edit Your Event</a> </td> + <td style="font-family: sans-serif; font-size: 14px; vertical-align: top; background-color: #28a745; border-radius: 5px; text-align: center;"> <a href="https://{{domain}}/{{eventID}}?e={{editToken}}" target="_blank" style="display: inline-block; color: #ffffff; background-color: #28a745; border: solid 1px #28a745; border-radius: 5px; box-sizing: border-box; cursor: pointer; text-decoration: none; font-size: 14px; font-weight: bold; margin: 0; padding: 12px 25px; text-transform: capitalize; border-color: #28a745;">{{t "views.emails.createeventhtml.editevent" }}</a> </td> </tr> </tbody> </table> diff --git a/views/emails/createEvent/createEventText.handlebars b/views/emails/createEvent/createEventText.handlebars index e3c3a91..7c85d5c 100644 --- a/views/emails/createEvent/createEventText.handlebars +++ b/views/emails/createEvent/createEventText.handlebars @@ -1,7 +1,6 @@ -Your event has been created! +{{t "views.emails.createevent.preface" }} -Use this link to share it with people: https://{{domain}}/{{eventID}} - -Use the following link to edit your event. DO NOT SHARE THIS, as anyone with this link can edit your event. +{{t "views.emails.createevent.sharelink" }}: https://{{domain}}/{{eventID}} +{{t "views.emails.createevent.desc" }} https://{{domain}}/{{eventID}}?e={{editToken}} diff --git a/views/emails/createEventGroup/createEventGroupHtml.handlebars b/views/emails/createEventGroup/createEventGroupHtml.handlebars index baa104d..1f73b75 100644 --- a/views/emails/createEventGroup/createEventGroupHtml.handlebars +++ b/views/emails/createEventGroup/createEventGroupHtml.handlebars @@ -1,8 +1,8 @@ -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">You just created a new event group on {{siteName}}! Thanks a bunch - we're delighted to have you.</p> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">You can edit your event group by clicking the button below, or just following this link: <a href="https://{{domain}}/group/{{eventGroupID}}?e={{editToken}}">https://{{domain}}/group/{{eventGroupID}}?e={{editToken}}</a></p> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">To add events to this group (whether brand new events or ones you've already made), click the 'This event is part of an event group' checkbox. You will need to copy the following two codes into the box which opens:</p> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;"><strong>Event group ID</strong>: {{eventGroupID}}</p> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;"><strong>Event group secret editing code</strong>: {{editToken}}</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.createeventgroup.preface" }}</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.createeventgroup.link" }}: <a href="https://{{domain}}/group/{{eventGroupID}}?e={{editToken}}">https://{{domain}}/group/{{eventGroupID}}?e={{editToken}}</a></p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.createeventgroup.eventlink" }}</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;"><strong>{{t "common.eventgroupid" }}</strong>: {{eventGroupID}}</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;"><strong>{{t "views.emails.createevent.editpswddesc" }}</strong>: {{editToken}}</p> <table border="0" cellpadding="0" cellspacing="0" class="btn btn-primary" style="border-collapse: separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%; box-sizing: border-box;"> <tbody> <tr> @@ -10,7 +10,7 @@ <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: auto;"> <tbody> <tr> - <td style="font-family: sans-serif; font-size: 14px; vertical-align: top; background-color: #28a745; border-radius: 5px; text-align: center;"> <a href="https://{{domain}}/group/{{eventGroupID}}?e={{editToken}}" target="_blank" style="display: inline-block; color: #ffffff; background-color: #28a745; border: solid 1px #28a745; border-radius: 5px; box-sizing: border-box; cursor: pointer; text-decoration: none; font-size: 14px; font-weight: bold; margin: 0; padding: 12px 25px; text-transform: capitalize; border-color: #28a745;">Edit event group</a> </td> + <td style="font-family: sans-serif; font-size: 14px; vertical-align: top; background-color: #28a745; border-radius: 5px; text-align: center;"> <a href="https://{{domain}}/group/{{eventGroupID}}?e={{editToken}}" target="_blank" style="display: inline-block; color: #ffffff; background-color: #28a745; border: solid 1px #28a745; border-radius: 5px; box-sizing: border-box; cursor: pointer; text-decoration: none; font-size: 14px; font-weight: bold; margin: 0; padding: 12px 25px; text-transform: capitalize; border-color: #28a745;">{{t "views.emails.createeventgroup.editgrouplinkhtml" }}</a> </td> </tr> </tbody> </table> @@ -18,10 +18,10 @@ </tr> </tbody> </table> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">To let others know about your event group, send them this link: <a href="https://{{domain}}/group/{{eventGroupID}}?e={{editToken}}">https://{{domain}}/group/{{eventGroupID}}</a></p> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">And that's it - have a great day!</p> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">Love,</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.createeventgroup.sharelink" }}: <a href="https://{{domain}}/group/{{eventGroupID}}?e={{editToken}}">https://{{domain}}/group/{{eventGroupID}}</a></p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.createeventgroup.done" }}</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.love" }}</p> <p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{siteName}}</p> <hr/> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;"><strong>Hold up - I have no idea what this email is about!</strong></p> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">If you didn't make an event group on {{siteName}}, someone may have accidentally typed your email instead of theirs when they were making the group. Just click on the edit link above and delete that event group, which removes your email from the system as well.</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;"><strong>{{t "views.emails.holdup" }}</strong></p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.createeventgroup.dontknow" }}</p> diff --git a/views/emails/createEventGroup/createEventGroupText.handlebars b/views/emails/createEventGroup/createEventGroupText.handlebars index d5007d9..7599bda 100644 --- a/views/emails/createEventGroup/createEventGroupText.handlebars +++ b/views/emails/createEventGroup/createEventGroupText.handlebars @@ -1,21 +1,20 @@ -You just created a new event group on {{siteName}}! Thanks a bunch - we're delighted to have you. +{{{t "views.emails.createeventgroup.preface" }}} -You can edit your event group by clicking the button below, or just following this link: https://{{domain}}/group/{{eventGroupID}}?e={{editToken}} +{{t "views.emails.createeventgroup.link" }}: https://{{domain}}/group/{{eventGroupID}}?e={{editToken}} -To add events to this group (whether brand new events or ones you've already made), click the 'This event is part of an event group' checkbox. You will need to copy the following two codes into the box which opens: +{{t "views.emails.createeventgroup.eventlink" }} -Event group ID: {{eventGroupID}} +{{t "common.eventgroupid" }}: {{eventGroupID}} -Event group secret editing code: {{editToken}} +{{t "views.emails.createevent.editpswddesc" }}: {{editToken}} -Edit the event group here: https://{{domain}}/group/{{eventGroupID}}?e={{editToken}} +{{t "views.emails.createeventgroup.editgrouplink" }}: https://{{domain}}/group/{{eventGroupID}}?e={{editToken}} -To let others know about your event group, send them this link: https://{{domain}}/group/{{eventGroupID}} +{{t "views.emails.createeventgroup.sharelink" }}: https://{{domain}}/group/{{eventGroupID}} -And that's it - have a great day! - -Love, +{{t "views.emails.createeventgroup.done" }} +{{t "views.emails.love" }} {{siteName}} -If you didn't make an event group on {{siteName}}, someone may have accidentally typed your email instead of theirs when they were making the group. Just click on the edit link above and delete that event group, which removes your email from the system as well. +{{t "views.emails.createeventgroup.dontknow" }}
\ No newline at end of file diff --git a/views/emails/createEventMagicLink/createEventMagicLinkHtml.handlebars b/views/emails/createEventMagicLink/createEventMagicLinkHtml.handlebars index 1379607..5afd37e 100644 --- a/views/emails/createEventMagicLink/createEventMagicLinkHtml.handlebars +++ b/views/emails/createEventMagicLink/createEventMagicLinkHtml.handlebars @@ -1,8 +1,8 @@ -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">Here's a magic link which will allow you to create an event on {{siteName}}.</p> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">This link will expire in 24 hours and can be used multiple times before then. Don't share it publicly, because it will allow anyone to create an event on your behalf!</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.magiclink.preface" }}</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.magiclink.link" }}</p> <p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;"><a href="https://{{domain}}/new/{{token}}">https://{{domain}}/new/{{token}}</a></p> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">Love,</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.love" }}</p> <p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{siteName}}</p> <hr/> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;"><strong>Hold up - I have no idea what this email is about!</strong></p> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">If you didn't try to create an event on {{siteName}}, someone may have accidentally typed your email instead of theirs. Don't worry - there isn't anything you need to do. Your email address will be deleted after the magic link expires.</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;"><strong>{{t "views.emails.holdup" }}</strong></p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.magiclink.dontknow" }}</p> diff --git a/views/emails/createEventMagicLink/createEventMagicLinkText.handlebars b/views/emails/createEventMagicLink/createEventMagicLinkText.handlebars index e3b4f96..7f01539 100644 --- a/views/emails/createEventMagicLink/createEventMagicLinkText.handlebars +++ b/views/emails/createEventMagicLink/createEventMagicLinkText.handlebars @@ -1,11 +1,10 @@ -Here's a magic link which will allow you to create an event on {{siteName}}. +{{t "views.emails.magiclink.preface" }} -This link will expire in 24 hours and can be used multiple times before then. Don't share it publicly, because it will allow anyone to create an event on your behalf! +{{t "views.emails.magiclink.link" }} https://{{domain}}/new/{{token}} -Love, - +{{t "views.emails.love" }} {{siteName}} -If you didn't try to create an event on {{siteName}}, someone may have accidentally typed your email instead of theirs. Don't worry - there isn't anything you need to do. Your email address will be deleted after the magic link expires. +{{t "views.emails.magiclink.dontknow" }} diff --git a/views/emails/deleteEvent/deleteEventHtml.handlebars b/views/emails/deleteEvent/deleteEventHtml.handlebars index 5a3670c..1298e9f 100644 --- a/views/emails/deleteEvent/deleteEventHtml.handlebars +++ b/views/emails/deleteEvent/deleteEventHtml.handlebars @@ -1,4 +1,4 @@ -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">The {{eventName}} event you're attending on {{siteName}} was just deleted by its creator.</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.deleteevent.preface" }}</p> <hr/> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;"><strong>Hold up - I have no idea what this email is about!</strong></p> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">If you didn't mark yourself as attending an event on {{siteName}}, someone may have accidentally typed your email instead of theirs. Don't worry - that event, and your email, is deleted from the system now.</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;"><strong>{{t "views.emails.holdup" }}</strong></p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.deleteevent.done" }}</p> diff --git a/views/emails/deleteEvent/deleteEventText.handlebars b/views/emails/deleteEvent/deleteEventText.handlebars index 77c1cc3..02ba7f6 100644 --- a/views/emails/deleteEvent/deleteEventText.handlebars +++ b/views/emails/deleteEvent/deleteEventText.handlebars @@ -1,3 +1,3 @@ -The {{eventName}} event you're attending on {{siteName}} was just deleted by its creator. +{{t "views.emails.deleteevent.preface" }} -If you didn't mark yourself as attending an event on {{siteName}}, someone may have accidentally typed your email instead of theirs. Don't worry - that event, and your email, is deleted from the system now. +{{t "views.emails.deleteevent.done" }} diff --git a/views/emails/editEvent/editEventHtml.handlebars b/views/emails/editEvent/editEventHtml.handlebars index ddb9885..269edf2 100644 --- a/views/emails/editEvent/editEventHtml.handlebars +++ b/views/emails/editEvent/editEventHtml.handlebars @@ -1,8 +1,8 @@ -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">An event you're attending on {{siteName}} has just been edited.</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.editevent.preface" }}</p> <p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{{diffText}}}</p> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">Click here to see the event: <a href="https://{{domain}}/{{eventID}}">https://{{domain}}/{{eventID}}</a></p> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">Love,</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.editevent.link" }}: <a href="https://{{domain}}/{{eventID}}">https://{{domain}}/{{eventID}}</a></p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.love" }}</p> <p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{siteName}}</p> <hr/> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;"><strong>Hold up - I have no idea what this email is about!</strong></p> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">If you didn't mark yourself as attending an event on {{siteName}}, someone may have accidentally typed your email instead of theirs. Don't worry - there isn't anything you need to do. Your email will be removed from the system when the event finishes.</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;"><strong>{{t "views.emails.holdup" }}</strong></p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.editevent.dontknow" }}</p> diff --git a/views/emails/editEvent/editEventText.handlebars b/views/emails/editEvent/editEventText.handlebars index cdcffd3..760d16d 100644 --- a/views/emails/editEvent/editEventText.handlebars +++ b/views/emails/editEvent/editEventText.handlebars @@ -1,11 +1,9 @@ -An event you're attending on {{siteName}} has just been edited. - +{{t "views.emails.editevent.preface" }} {{{diffText}}} -Click here to see the event: https://{{domain}}/{{eventID}} - -Love, +{{t "views.emails.editevent.link" }}: https://{{domain}}/{{eventID}} +{{t "views.emails.love" }} {{siteName}} -If you didn't mark yourself as attending an event on {{siteName}}, someone may have accidentally typed your email instead of theirs. Don't worry - there isn't anything you need to do. Your email will be removed from the system when the event finishes. +{{t "views.emails.editevent.dontknow" }} diff --git a/views/emails/eventGroupUpdated/eventGroupUpdatedHtml.handlebars b/views/emails/eventGroupUpdated/eventGroupUpdatedHtml.handlebars index 3231327..3cb255e 100644 --- a/views/emails/eventGroupUpdated/eventGroupUpdatedHtml.handlebars +++ b/views/emails/eventGroupUpdated/eventGroupUpdatedHtml.handlebars @@ -1,8 +1,8 @@ -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">A new event has been added to the event group '{{eventGroupName}}' on {{siteName}}.</p> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">The event is <a href="https://{{domain}}/{{eventID}}">'{{eventName}}'</a>.</p> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">Click here to see the event group: <a href="https://{{domain}}/group/{{eventGroupID}}">https://{{domain}}/group/{{eventGroupID}}</a></p> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">Love,</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.eventgroupupdate.preface" }}</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.eventgroupupdate.beforelink" }} <a href="https://{{domain}}/{{eventID}}">'{{eventName}}'</a>{{t "views.emails.eventgroupupdate.afterlink" }}.</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.eventgroupupdate.grouplink" }}: <a href="https://{{domain}}/group/{{eventGroupID}}">https://{{domain}}/group/{{eventGroupID}}</a></p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.love" }}</p> <p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{siteName}}</p> <hr/> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;"><strong>Hold up - I don't want to receive these emails any more!</strong></p> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">If you didn't subscribe yourself to this event group on {{siteName}}, someone may have accidentally typed your email instead of theirs. <a href="https://{{domain}}/unsubscribe/{{eventGroupID}}?email={{emailAddress}}">Click here to unsubscribe</a>.</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;"><strong>{{t "views.emails.eventgroupupdate.holduphtml" }}</strong></p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.eventgroupupdate.dontknow" }} <a href="https://{{domain}}/unsubscribe/{{eventGroupID}}?email={{emailAddress}}">{{t "views.emails.eventgroupupdate.unsubscribe" }}</a></p> diff --git a/views/emails/eventGroupUpdated/eventGroupUpdatedText.handlebars b/views/emails/eventGroupUpdated/eventGroupUpdatedText.handlebars index 3ed5cb2..73e7c40 100644 --- a/views/emails/eventGroupUpdated/eventGroupUpdatedText.handlebars +++ b/views/emails/eventGroupUpdated/eventGroupUpdatedText.handlebars @@ -1,11 +1,10 @@ -A new event has been added to the event group '{{eventGroupName}}' on {{siteName}}. +{{t "views.emails.eventgroupupdate.preface" }} -The event is '{{eventName}}': https://{{domain}}/{{eventID}}. +{{t "views.emails.eventgroupupdate.link" }}: https://{{domain}}/{{eventID}} {{t "views.emails.eventgroupupdate.afterlink" }}. -Click here to see the event group: https://{{domain}}/group/{{eventGroupID}} - -Love, +{{t "views.emails.eventgroupupdate.grouplink" }}: https://{{domain}}/group/{{eventGroupID}} +{{t "views.emails.love" }} {{siteName}} -If you didn't subscribe yourself to this event group on {{siteName}}, someone may have accidentally typed your email instead of theirs. Click here to unsubscribe: https://{{domain}}/unsubscribe/{{eventGroupID}}?email={{emailAddress}}. +{{t "views.emails.eventgroupupdate.dontknowhtml" }}: https://{{domain}}/unsubscribe/{{eventGroupID}}?email={{emailAddress}} diff --git a/views/emails/removeEventAttendee/removeEventAttendeeHtml.handlebars b/views/emails/removeEventAttendee/removeEventAttendeeHtml.handlebars index 66ca858..70765a1 100644 --- a/views/emails/removeEventAttendee/removeEventAttendeeHtml.handlebars +++ b/views/emails/removeEventAttendee/removeEventAttendeeHtml.handlebars @@ -1,4 +1,4 @@ -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">You have been removed from the event {{eventName}} on {{siteName}} by the organizer of the event.</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.removeeventattendee.preface" }}</p> <hr/> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;"><strong>Hold up - I have no idea what this email is about!</strong></p> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">If you didn't mark yourself as attending an event on {{siteName}}, someone may have accidentally typed your email instead of theirs. Don't worry - you won't receive any more of these emails for this event, and your email has been removed from the database.</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;"><strong>{{t "views.emails.holdup" }}</strong></p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.removeeventattendee.dontknow" }}</p> diff --git a/views/emails/removeEventAttendee/removeEventAttendeeText.handlebars b/views/emails/removeEventAttendee/removeEventAttendeeText.handlebars index 0a94121..70672d9 100644 --- a/views/emails/removeEventAttendee/removeEventAttendeeText.handlebars +++ b/views/emails/removeEventAttendee/removeEventAttendeeText.handlebars @@ -1,3 +1,3 @@ -You have been removed from the event {{eventName}} on {{siteName}} by the organizer of the event. +{{t "views.emails.remoeeventattendee.preface"} }} -If you didn't mark yourself as attending an event on {{siteName}}, someone may have accidentally typed your email instead of theirs. Don't worry - you won't receive any more of these emails for this event, and your email has been removed from the database. +{{t "views.emails.removeeventattendee.dontknow" }}
\ No newline at end of file diff --git a/views/emails/subscribed/subscribedHtml.handlebars b/views/emails/subscribed/subscribedHtml.handlebars index 3a3c4ad..343b304 100644 --- a/views/emails/subscribed/subscribedHtml.handlebars +++ b/views/emails/subscribed/subscribedHtml.handlebars @@ -1,9 +1,8 @@ -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">You have been subscribed to the event group '{{eventGroupName}}' on {{siteName}}.</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.subscribed.preface" }}</p> <p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: -0; Margin-bottom: 15px;">You will receive emails when new events are added to -the group, and can unsubscribe at any time.</p> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">Love,</p> +0; Margin-bottom: 15px;">{{t "views.emails.subscribed.desc" }}</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.love" }}</p> <p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{siteName}}</p> <hr/> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;"><strong>Hold up - I don't want to receive these emails any more!</strong></p> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">If you didn't subscribe yourself to this event group on {{siteName}}, someone may have accidentally typed your email instead of theirs. <a href="https://{{domain}}/unsubscribe/{{eventGroupID}}?email={{emailAddress}}">Click here to unsubscribe</a>.</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;"><strong>{{t "views.emails.eventgroupupdate.holduphtml" }}</strong></p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.eventgroupupdate.dontknow" }} <a href="https://{{domain}}/unsubscribe/{{eventGroupID}}?email={{emailAddress}}">{{t "views.emails.eventgroupupdate.unsubscribe" }}</a></p> diff --git a/views/emails/subscribed/subscribedText.handlebars b/views/emails/subscribed/subscribedText.handlebars index 68418bc..d9970b2 100644 --- a/views/emails/subscribed/subscribedText.handlebars +++ b/views/emails/subscribed/subscribedText.handlebars @@ -1,9 +1,7 @@ -You have been subscribed to the event group '{{eventGroupName}}' on {{siteName}}. - -You will receive emails when new events are added to the group, and can unsubscribe at any time. - -Love, +{{t "views.emails.subscribed.preface", {eventGroupName: {{eventGroupName}}} }} +{{t "views.emails.subscribed.desc" }} +{{t "views.emails.love" }} {{siteName}} -If you didn't subscribe yourself to this event group on {{siteName}}, someone may have accidentally typed your email instead of theirs. Click here to unsubscribe: https://{{domain}}/unsubscribe/{{eventGroupID}}?email={{emailAddress}}. +{{t "views.emails.eventgroupupdate.dontknowhtml" }}: https://{{domain}}/unsubscribe/{{eventGroupID}}?email={{emailAddress}} diff --git a/views/emails/unattendEvent/unattendEventHtml.handlebars b/views/emails/unattendEvent/unattendEventHtml.handlebars index bc20d27..5f59ea8 100644 --- a/views/emails/unattendEvent/unattendEventHtml.handlebars +++ b/views/emails/unattendEvent/unattendEventHtml.handlebars @@ -1,8 +1,8 @@ -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">You just removed yourself from an event on {{siteName}}. You will no longer receive update emails for this event.</p> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">If you didn't mean to do this, an admin may have removed you from the event.</p> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">Follow this link to open the event page any time: <a href="https://{{domain}}/{{eventID}}">https://{{domain}}/{{eventID}}</a></p> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">Love,</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.unattendevent.preface" }}</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.unattendevent.desc" }}</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.addeventattendee.eventlink" }}: <a href="https://{{domain}}/{{eventID}}">https://{{domain}}/{{eventID}}</a></p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.love" }}</p> <p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{siteName}}</p> <hr/> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;"><strong>Hold up - I have no idea what this email is about!</strong></p> -<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">If you didn't mark yourself as attending an event on {{siteName}}, someone may have accidentally typed your email instead of theirs, then removed it. Don't worry - you won't receive any more emails linked to this event.</p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;"><strong>{{t "views.emails.holdup" }}</strong></p> +<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{t "views.emails.unattendevent.dontknow" }}</p> diff --git a/views/emails/unattendEvent/unattendEventText.handlebars b/views/emails/unattendEvent/unattendEventText.handlebars index 7e60dbf..f936d54 100644 --- a/views/emails/unattendEvent/unattendEventText.handlebars +++ b/views/emails/unattendEvent/unattendEventText.handlebars @@ -1,11 +1,10 @@ -You just removed yourself from an event on {{siteName}}. You will no longer receive update emails for this event. +{{t "views.emails.unattendevent.preface" }} -If you didn't mean to do this, an admin may have removed you from the event. +{{t "views.emails.unattendevent.desc" }} -Follow this link to open the event page any time: https://{{domain}}/{{eventID}} - -Love, +{{t "views.emails.addeventattendee.eventlink" }}: https://{{domain}}/{{eventID}} +{{t "views.emails.love" }} {{siteName}} -If you didn't mark yourself as attending an event on {{siteName}}, someone may have accidentally typed your email instead of theirs, then removed it. Don't worry - you won't receive any more emails linked to this event. +{{t "views.emails.unattendevent.dontknow" }} diff --git a/views/event.handlebars b/views/event.handlebars index 1b1022e..703c1d4 100755 --- a/views/event.handlebars +++ b/views/event.handlebars @@ -1,4 +1,9 @@ -<main class="event"> +<main class="event{{#if editingEnabled}} event--editing{{/if}}"> +{{#if editingEnabled}} +<div class="event__editing-banner"> + {{t "views.event.currentlyediting" }} +</div> +{{/if}} {{#if eventHasCoverImage}} <div class="event-header-image" id="eventImageContainer" style="background-image: url(/events/{{eventData.image}});"></div> {{else}} @@ -11,7 +16,7 @@ </div> <div class="col-lg-3 ml-2 edit-buttons"> {{#if editingEnabled}} - <button type="button" id="editEvent" class="button button--primary ml-auto d-block" {{#if eventHasConcluded}}disabled{{/if}} data-event-id="{{eventData.id}}" data-toggle="modal" data-target="#editModal"><i class="fas fa-edit"></i> Edit event</button> + <button type="button" id="editEvent" class="button button--primary ml-auto d-block" {{#if eventHasConcluded}}disabled{{/if}} data-event-id="{{eventData.id}}" data-toggle="modal" data-target="#editModal"><i class="fas fa-edit"></i> {{t "views.event.edit" }}</button> {{/if}} </div> </div> @@ -39,7 +44,7 @@ <time class="dt-end" datetime="{{eventEndISO}}"></time> <br> <span class="text-muted"> - {{#if eventHasBegun}}{{#unless eventHasConcluded}}Started {{else}}Ended {{/unless}}{{/if}}{{fromNow}} + {{#if eventHasBegun}}{{#unless eventHasConcluded}}{{t "views.event.started"}} {{else}}{{t "views.event.ended"}} {{/unless}}{{/if}}{{fromNow}} </span> </li> {{#if eventHasHost}} @@ -47,7 +52,7 @@ <span class="fa-li"> <i class="fas fa-fw fa-user-circle"></i> </span> - <span class="text-muted">Hosted by</span> {{eventData.hostName}} + <span class="text-muted">{{{t "views.event.hostedby" }}} </li> {{/if}} {{#if eventData.eventGroup}} @@ -55,7 +60,7 @@ <span class="fa-li"> <i class="fas fa-fw fa-calendar-alt"></i> </span> - <span class="text-muted">Part of</span> <a href="/group/{{eventData.eventGroup.id}}">{{eventData.eventGroup.name}}</a> + <span class="text-muted">{{{t "views.event.partof" }}}</span> </li> {{/if}} {{#if eventData.url}} @@ -70,21 +75,21 @@ {{/if}} <li> <span class="fa-li"> - <i class="fas fa-fw fa-share-square"></i> + <i class="fas fa-fw fa-users"></i> </span> + <span class="text-muted">{{ t "views.event.publiclink" }}:</span> <a class="u-url" href="https://{{domain}}/{{eventData.id}}">https://{{domain}}/{{eventData.id}}</a> <button type="button" id="copyEventLink" class="eventInformationAction button button--outline-secondary button--sm" data-clipboard-text="https://{{domain}}/{{eventData.id}}"> - <i class="fas fa-copy"></i> Copy + <i class="fas fa-copy"></i> {{t "common.copy" }} </button> </li> {{#if isFederated}} <li> - <span class="fa-li"> - <i class="fas fa-fw fa-share-square"></i> - </span> + <span class="fa-li fa-fw fediverse-icon"><img src="/images/fediverse-icon.svg" alt="Fediverse Icon" /></span> + <span class="text-muted">{{ t "views.event.fediverselink" }}:</span> @{{eventData.id}}@{{domain}} <button type="button" id="copyAPLink" class="eventInformationAction button button--outline-secondary button--sm" data-clipboard-text="@{{eventData.id}}@{{domain}}"> - <i class="fas fa-copy"></i> Copy + <i class="fas fa-copy"></i> {{t "common.copy" }} </button> </li> {{/if}} @@ -94,42 +99,41 @@ <aside id="event__actions"> <div class="button-stack" role="group" aria-label="Event actions"> <a href="http://www.google.com/calendar/event?action=TEMPLATE&dates={{parsedStart}}%2F{{parsedEnd}}&text={{escapedName}}&location={{parsedLocation}}&ctz={{timezone}}" class="button button--outline-secondary button--sm"> - <i class="far fa-calendar-plus"></i> Add to Google Calendar + <i class="far fa-calendar-plus"></i> {{t "views.event.addtoGC" }} </a> <button type="button" id="exportICS" class="button button--outline-secondary button--sm" data-event-id="{{eventData.id}}"> - <i class="fas fa-download"></i> Export as ICS + <i class="fas fa-download"></i> {{t "views.event.ICSexport" }} </button> <a target="_blank" href="http://maps.google.com/?q={{parsedLocation}}" class="button button--outline-secondary button--sm"> - <i class="fas fa-map-marked"></i> Show on Google Maps + <i class="fas fa-map-marked"></i> {{t "views.event.showonGM" }} </a> <a target="_blank" href="https://www.openstreetmap.org/search?query={{parsedLocation}}" class="button button--outline-secondary button--sm"> - <i class="fas fa-map-marked"></i> Show on OpenStreetMap + <i class="fas fa-map-marked"></i> {{t "views.event.showonOM" }} </a> </div> {{#unless editingEnabled}} - <button type="button" id="editEvent" class="button button--outline-secondary button--sm" {{#if eventHasConcluded}}disabled{{/if}} data-event-id="{{eventData.id}}" data-toggle="modal" data-target="#editTokenModal"><i class="fas fa-edit"></i> Switch to editing mode</button> + <button type="button" id="editEvent" class="button button--outline-secondary button--sm" {{#if eventHasConcluded}}disabled{{/if}} data-event-id="{{eventData.id}}" data-toggle="modal" data-target="#editTokenModal"><i class="fas fa-edit"></i> {{t "views.eventgroup.editmode" }}</button> {{/unless}} </aside> <!-- #event__actions --> </div> {{#if eventHasConcluded}} <div class="alert alert-warning mb-4" role="alert"> - This event has concluded. It can no longer be edited{{#if eventWillBeDeleted}}, and will be automatically deleted {{daysUntilDeletion}}{{/if}}. -</div> +{{t "views.event.concludeddel" }}</div> {{/if}} {{#if firstLoad}} <div class="alert alert-success alert-dismissible fade show" role="alert"> <button type="button" class="close" data-dismiss="alert" aria-label="Close"> <span aria-hidden="true">×</span> </button> - <p>Welcome to your event!</p> - <p>Your secret editing password for this event is: <strong id="eventEditToken">{{eventData.editToken}}</strong>. It's been saved in your browser storage, and if you supplied your email, it's also been sent to you. If you didn't supply your email, you <strong>must save it somewhere safe</strong>, because it won't be shown again!</p> - <p>To share your event, use the link you can see just above this message - that way your attendees won't be able to edit or delete your event!</p> + <p>{{t "views.event.welcome" }}</p> + <p>{{{t "views.event.attention" }}}</p> + <p>{{{t "views.event.share" }}}</p> </div> {{/if}} <div class="card mb-4" id="eventDescription"> - <h5 class="card-header">About</h5> + <h5 class="card-header">{{t "views.event.about" }}</h5> <div class="card-body p-summary"> {{{parsedDescription}}} </div> @@ -137,40 +141,40 @@ {{#if eventData.usersCanAttend}} <div class="card mb-4" id="eventAttendees"> - <h5 class="card-header">Attendees {{#if numberOfAttendees}}({{numberOfAttendees}}){{/if}} + <h5 class="card-header">{{t "views.event.attendees" }} {{#if numberOfAttendees}}{{t "views.event.numberofattende" }}{{/if}} <div class="button--group" role="group" aria-label="Attendance controls"> {{#unless noMoreSpots}} - <button type="button" id="attendEvent" class="button button--primary" data-event-id="{{eventData.id}}"><i class="fas fa-user-plus"></i> Add me</button> + <button type="button" id="attendEvent" class="button button--primary" data-event-id="{{eventData.id}}"><i class="fas fa-user-plus"></i> {{t "views.event.addme" }}</button> {{/unless}} - <button type="button" id="unattendEvent" class="button button--secondary" data-toggle="modal" data-target="#unattendModal"><i class="fas fa-user-times"></i> Remove me</button> + <button type="button" id="unattendEvent" class="button button--secondary" data-toggle="modal" data-target="#unattendModal"><i class="fas fa-user-times"></i> {{t "views.event.removeme" }}</button> </div> </h5> <div class="card-body text-center"> {{#if eventData.maxAttendees}} {{#if noMoreSpots}} - <div class="alert alert-warning text-center" id="attendees-alert">This event is at capacity.</div> + <div class="alert alert-warning text-center" id="attendees-alert">{{t "views.event.capacity" }}</div> {{else}} - <div class="alert alert-warning text-center" id="attendees-alert">{{spotsRemaining}} {{plural spotsRemaining "spot(s)"}} remaining - add yourself now!</div> + <div class="alert alert-warning text-center" id="attendees-alert">{{plural "views.event.remaining" spotsRemaining }}</div> {{/if}} {{/if}} {{#if numberOfAttendees}} <ul class="attendeesList"> {{#each visibleAttendees}} - <li{{#if ../editingEnabled}} data-attendee-name="{{this.name}}" data-attendee-id="{{this._id}}"{{/if}}><span class="attendee-name">{{this.name}}</span>{{#if ../editingEnabled}} <a href="#" class="remove-attendee" data-toggle="modal" data-target="#removeAttendeeModal" title="Remove user from event"><i class="fas fa-user-times"></i></a>{{/if}}</li> + <li{{#if ../editingEnabled}} data-attendee-name="{{this.name}}" data-attendee-id="{{this._id}}"{{/if}}><span class="attendee-name">{{this.name}}</span>{{#if ../editingEnabled}} <a href="#" class="remove-attendee" data-toggle="modal" data-target="#removeAttendeeModal" title="{{t "views.event.removeuser" }}"><i class="fas fa-user-times"></i></a>{{/if}}</li> {{/each}} {{#if editingEnabled}} {{#each hiddenAttendees}} - <li{{#if ../editingEnabled}} data-attendee-name="{{this.name}}" data-attendee-id="{{this._id}}"{{/if}} class="hidden-attendee"><span class="attendee-name">{{this.name}} (hidden from public list)</span>{{#if ../editingEnabled}} <a href="#" class="remove-attendee" data-toggle="modal" data-target="#removeAttendeeModal" title="Remove user from event"><i class="fas fa-user-times"></i></a>{{/if}}</li> + <li{{#if ../editingEnabled}} data-attendee-name="{{this.name}}" data-attendee-id="{{this._id}}"{{/if}} class="hidden-attendee"><span class="attendee-name">{{this.name}} {{t "views.event.hidden" }}</span>{{#if ../editingEnabled}} <a href="#" class="remove-attendee" data-toggle="modal" data-target="#removeAttendeeModal" title="{{t "views.event.removeuser" }}"><i class="fas fa-user-times"></i></a>{{/if}}</li> {{/each}} {{/if}} </ul> {{#unless editingEnabled}} {{#if numberOfHiddenAttendees}} - <div class="hidden-attendees-message">{{numberOfHiddenAttendees}} hidden attendee{{plural numberOfHiddenAttendees ""}}</div> + <div class="hidden-attendees-message">{{plural "views.event.hiddenattendee" numberOfHiddenAttendees }}</div> {{/if}} {{/unless}} {{else}} - <p class="text-center text-muted mb-0">No attendees yet!</p> + <p class="text-center text-muted mb-0">{{t "views.event.noattendees" }}</p> {{/if}} </div> </div> @@ -179,7 +183,7 @@ <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> - <h5 class="modal-title" id="attendModalLabel">Add yourself to '{{eventData.name}}'</h5> + <h5 class="modal-title" id="attendModalLabel">{{t "views.event.addself" }}</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> @@ -187,41 +191,41 @@ <form id="attendEventForm" action="/attendevent/{{eventData.id}}" method="post"> <div class="modal-body"> <div class="form-group"> - <label for="attendeeName">Your name</label> + <label for="attendeeName">{{t "views.event.attendeename" }}</label> <div class="form-group"> - <input type="text" class="form-control" id="attendeeName" name="attendeeName" placeholder="Or an alias, perhaps..." data-validation="required length" data-validation-length="1-30"> + <input type="text" class="form-control" id="attendeeName" name="attendeeName" placeholder="{{t "views.event.attendeenamedesc" }}" data-validation="required length" data-validation-length="1-30"> </div> </div> <div class="form-group"> - <label for="attendeeName">How many people in your party?</label> + <label for="attendeeName">{{t "views.event.attendeenum" }}</label> <div class="form-group"> <input type="number" class="form-control" id="attendeeNumber" name="attendeeNumber" value="1" data-validation="required number" > </div> </div> <div class="form-group"> - <label for="attendeeEmail">Your email (optional)</label> - <p class="form-text small">If you provide your email, you will receive updates to the event.</p> + <label for="attendeeEmail">{{t "views.event.attendeeemail" }}</label> + <p class="form-text small">{{t "views.event.joinemaildesc" }}</p> <div class="form-group"> - <input type="email" class="form-control" id="attendeeEmail" name="attendeeEmail" placeholder="We won't spam you <3" data-validation="email" data-validation-optional="true"> + <input type="email" class="form-control" id="attendeeEmail" name="attendeeEmail" placeholder="{{t "views.event.nospam" }}" data-validation="email" data-validation-optional="true"> </div> </div> <div class="form-check"> <input class="form-check-input" type="checkbox" id="attendeeVisible" name="attendeeVisible" checked> <label class="form-check-label" for="attendeeVisible"> - Show my name in the public list of attendees + {{t "views.event.attendeevisible" }} </label> - <p class="form-text small">If you choose to hide your name, only the event organiser will be able to see it.</p> + <p class="form-text small">{{t "views.event.attendeevisibledesc" }}</p> </div> <div class="form-group"> - <label for="removalPassword">Deletion password</label> - <p class="form-text small">You can use this password to remove yourself from the list of event attendees. If you provided your email, you'll receive it by email. Otherwise, write it down now because it will <strong>not be shown again</strong>.</p> + <label for="removalPassword">{{t "views.event.removepswd" }}</label> + <p class="form-text small">{{{t "views.event.removepswddesc" }}}</p> <input type="text" class="form-control" readonly id="removalPassword" name="removalPassword"> </div> </div> <div class="modal-footer"> - <button type="button" class="button button--secondary" data-dismiss="modal">Close</button> - <button type="submit" class="button button--primary">Add myself</button> + <button type="button" class="button button--secondary" data-dismiss="modal">{{t "common.close" }}</button> + <button type="submit" class="button button--primary">{{t "views.event.addmyself" }}</button> </div> </form> </div> @@ -232,7 +236,7 @@ <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> - <h5 class="modal-title" id="unattendModalLabel">Remove yourself from '{{eventData.name}}'</h5> + <h5 class="modal-title" id="unattendModalLabel">{{{t "views.event.removemyselfdesc" }}}</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> @@ -240,15 +244,15 @@ <form id="unattendEventForm" x-on:submit.prevent="fetch(`/event/attendee/{{eventData.id}}?${new URLSearchParams({ p: password }).toString()}`, { method: 'DELETE' }).then(response => response.ok ? window.location.reload() : response.json()).then(data => message = data)"> <div class="modal-body"> <div class="form-group"> - <label for="removalPassword" class="form-label">Your deletion password</label> - <p class="form-text small">Lost your password? Get in touch with the event organiser.</p> + <label for="removalPassword" class="form-label">{{t "views.event.removepswd" }}</label> + <p class="form-text small">{{t "views.event.lostpswd" }}</p> <div x-bind:class="{ 'alert-danger': message?.error, 'alert-success': message?.success }" class="alert" x-text="message?.error || message?.success" x-show="message?.error || message?.success"></div> <input type="password" class="form-control" id="removalPassword" name="removalPassword" x-model="password" required> </div> </div> <div class="modal-footer"> - <button type="button" class="button button--secondary" data-dismiss="modal">Close</button> - <button type="submit" class="button button--primary">Remove myself</button> + <button type="button" class="button button--secondary" data-dismiss="modal">{{t "common.close" }}</button> + <button type="submit" class="button button--primary">{{t "views.event.removemyself" }}</button> </div> </form> </div> @@ -260,18 +264,18 @@ <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> - <h5 class="modal-title" id="removeAttendeeModalLabel">Remove attendee from '{{eventData.name}}'</h5> + <h5 class="modal-title" id="removeAttendeeModalLabel">{{{t "views.event.removeattendeedesc" }}}</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> </div> <form id="removeAttendeeForm" action="/removeattendee/{{eventData.id}}/" method="post"> <div class="modal-body"> - <p>Are you sure you want to remove this attendee from the event? This action cannot be undone.</p> + <p>{{t "views.event.confremoveattendee" }}</p> </div> <div class="modal-footer"> - <button type="button" class="button button--secondary" data-dismiss="modal">Close</button> - <button type="submit" class="button button--danger">Remove attendee</button> + <button type="button" class="button button--secondary" data-dismiss="modal">{{t "common.close" }}</button> + <button type="submit" class="button button--danger">{{t "views.event.removeAttendee" }}</button> </div> </form> </div> @@ -283,19 +287,19 @@ {{#if eventData.usersCanComment}} <div class="card mb-4" id="eventComments"> - <h5 class="card-header">Discussion</h5> + <h5 class="card-header">{{t "views.event.discussion" }}</h5> <div class="card-body"> <form id="commentForm" action="/post/comment/{{eventData.id}}/" method="post"> - <label for="commentAuthor">Name</label> + <label for="commentAuthor">{{t "views.event.commentauthor" }}</label> <div class="form-group"> - <input type="text" class="form-control" id="commentAuthor" name="commentAuthor" placeholder="Your name" required> + <input type="text" class="form-control" id="commentAuthor" name="commentAuthor" placeholder="{{t "views.event.commentauthorph" }}" required> </div> - <label for="commentContent">Comment</label> + <label for="commentContent">{{t "views.event.comment" }}</label> <div class="form-group"> <div class="d-flex flex-gap"> - <textarea class="form-control" id="commentContent" name="commentContent" style="resize: none;" placeholder="What would you like to say?" required></textarea> + <textarea class="form-control" id="commentContent" name="commentContent" style="resize: none;" placeholder="{{t "views.event.commentcontent" }}" required></textarea> <div class="input-group-append"> - <button type="submit" class="button button--primary" id="postComment">Send <i class="fas fa-chevron-right"></i></button> + <button type="submit" class="button button--primary" id="postComment">{{t "views.event.postbutton" }} <i class="fas fa-chevron-right"></i></button> </div> </div> </div> @@ -325,12 +329,12 @@ </div> <div class="col-lg-3 commentMetadata text-right"> <button type="button" class="button button--outline button--sm openReplyBox"> - <i class="fas fa-comment"></i> Reply + <i class="fas fa-comment"></i> {{t "views.event.reply" }} </button> {{#if ../editingEnabled}} <form class="d-inline" action="/deletecomment/{{../eventData.id}}/{{this._id}}/{{../eventData.editToken}}" method="post"> <button type="submit" class="button button--outline button--sm deleteComment"> - <i class="fas fa-trash"></i> Delete + <i class="fas fa-trash"></i> {{t "views.del" }} </button> </form> {{/if}} @@ -340,14 +344,14 @@ <div class="col-md"> <form id="replyForm" action="/post/reply/{{../eventData.id}}/{{this._id}}" method="post"> <div class="form-group"> - <input type="text" class="form-control form-control-sm" id="replyAuthor" name="replyAuthor" placeholder="Your name" required> + <input type="text" class="form-control form-control-sm" id="replyAuthor" name="replyAuthor" placeholder="Y{{t "views.event.attendeename" }}" required> </div> <div class="form-group"> <div class="d-flex flex-gap"> - <textarea class="form-control form-control-sm" id="replyContent" name="replyContent" style="resize: none;" placeholder="What would you like to reply?" required></textarea> + <textarea class="form-control form-control-sm" id="replyContent" name="replyContent" style="resize: none;" placeholder="{{t "views.event.replycontent" }}" required></textarea> <div class="input-group-append"> - <button type="submit" class="button button--primary button--sm" id="postReply">Reply <i class="fas fa-chevron-right"></i></button> </div> + <button type="submit" class="button button--primary button--sm" id="postReply">{{t "views.event.reply" }} <i class="fas fa-chevron-right"></i></button> </div> </div> </form> @@ -365,7 +369,7 @@ <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> - <h5 class="modal-title" id="editTokenModalLabel">Enter editing password</h5> + <h5 class="modal-title" id="editTokenModalLabel">{{t "views.edittoken" }}</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> @@ -373,9 +377,9 @@ <form id="verifyTokenForm" action="/verifytoken/event/{{eventData.id}}" method="post"> <div class="modal-body"> <div class="form-group"> - <p class="form-text small">Enter the editing password you received by email or were shown when the event was created.</p> + <p class="form-text small">{{t "views.edittokendesc" }}</p> <div class="form-group"> - <input type="text" class="form-control" id="editToken" name="editToken" placeholder="Get it right!" data-validation="required"> + <input type="text" class="form-control" id="editToken" name="editToken" placeholder="{{t "views.right" }}" data-validation="required"> </div> <div class="form-group"> <div class="alert alert-danger" style="display:none;"></div> @@ -383,8 +387,8 @@ </div> </div> <div class="modal-footer"> - <button type="button" class="button button--secondary" data-dismiss="modal">Close</button> - <button type="submit" class="button button--primary">Edit event</button> + <button type="button" class="button button--secondary" data-dismiss="modal">{{t "common.close" }}</button> + <button type="submit" class="button button--primary">{{t "views.event.edit" }}</button> </div> </form> </div> @@ -400,18 +404,18 @@ <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> - <h5 class="modal-title" id="deleteModalLabel">Delete '{{eventData.name}}'</h5> + <h5 class="modal-title" id="deleteModalLabel">{{t "views.event.deletetitle" }}</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> </div> <form id="deleteEventForm" action="/deleteevent/{{eventData.id}}/{{eventData.editToken}}" method="post"> <div class="modal-body"> - <p>Are you sure you want to delete this event? This action cannot be undone.</p> + <p>{{t "views.event.delconfirm" }}</p> </div> <div class="modal-footer"> - <button type="button" class="button button--secondary" data-dismiss="modal">Close</button> - <button type="submit" class="button button--danger">Delete event</button> + <button type="button" class="button button--secondary" data-dismiss="modal">{{t "common.close" }}</button> + <button type="submit" class="button button--danger">{{t "views.event.del" }}</button> </div> </form> </div> @@ -531,13 +535,13 @@ window.eventData = {{{ json jsonData }}}; }) }) $("#copyEventLink").click(function(){ - $(this).html('<i class="fas fa-copy"></i> Copied!'); - setTimeout(function(){ $("#copyEventLink").html('<i class="fas fa-copy"></i> Copy');}, 5000); + $(this).html('<i class="fas fa-copy"></i> {{t "common.copied" }}'); + setTimeout(function(){ $("#copyEventLink").html('<i class="fas fa-copy"></i> {{t "common.copy" }}');}, 5000); }) new ClipboardJS('#copyAPLink'); $("#copyAPLink").click(function(){ - $(this).html('<i class="fas fa-copy"></i> Copied!'); - setTimeout(function(){ $("#copyAPLink").html('<i class="fas fa-copy"></i> Copy');}, 5000); + $(this).html('<i class="fas fa-copy"></i> {{t "common.copied" }}'); + setTimeout(function(){ $("#copyAPLink").html('<i class="fas fa-copy"></i> {{t "common.copy" }}');}, 5000); }) if ($("#joinCheckbox").is(':checked')){ $("#maxAttendeesCheckboxContainer").css("display","flex"); @@ -553,7 +557,7 @@ window.eventData = {{{ json jsonData }}}; if (response.data.freeSpots !== undefined) { modal.find('#attendeeNumber') .attr('data-validation-allowing', `range[1;${response.data.freeSpots}]`) - .attr('data-validation-error-msg', `Please enter a number between 1 and ${response.data.freeSpots}`); + .attr('data-validation-error-msg', `{{t "views.event.numlimit" }}`); } modal.modal(); }) @@ -578,7 +582,7 @@ window.eventData = {{{ json jsonData }}}; } }, error: function(response, status, xhr) { - form.find('.alert').text('That editing password is incorrect. Try again.').show(); + form.find('.alert').text('{{t "views.incorrectpswd" }}').show(); } }); }); diff --git a/views/eventgroup.handlebars b/views/eventgroup.handlebars index 3151aea..5fcc6c2 100755 --- a/views/eventgroup.handlebars +++ b/views/eventgroup.handlebars @@ -1,4 +1,9 @@ <main class="event"> +{{#if editingEnabled}} +<div class="event__editing-banner"> + {{ t "views.event.currentlyediting" }} +</div> +{{/if}} {{#if eventGroupHasCoverImage}} <div class="event-header-image" id="eventImageContainer" style="background-image: url(/events/{{eventGroupData.image}});"></div> {{else}} @@ -10,7 +15,7 @@ </div> <div class="col-lg-2 ml-2 edit-buttons"> {{#if editingEnabled}} - <button type="button" id="editGroup" class="button button--primary text-nowrap ml-auto d-block" data-event-id="{{eventGroupData.id}}" data-toggle="modal" data-target="#editModal"><i class="fas fa-edit"></i> Edit group</button> + <button type="button" id="editGroup" class="button button--primary text-nowrap ml-auto d-block" data-event-id="{{eventGroupData.id}}" data-toggle="modal" data-target="#editModal"><i class="fas fa-edit"></i> {{t "views.eventgroup.edit" }}</button> {{/if}} </div> </div> @@ -20,7 +25,7 @@ <button type="button" class="close" data-dismiss="alert" aria-label="Close"> <span aria-hidden="true">×</span> </button> - Welcome to your event group! We've just sent you an email with your secret editing link, which you can also see in the address bar above. Haven't got the email? Check your spam or junk folder. To share your event group, use the link you can see just below this message - that way your attendees won't be able to edit or delete your event group! + {{{t "views.eventgroup.welcome" }}} </div> {{/if}} <div id="event__basics"> @@ -32,7 +37,7 @@ <span class="fa-li"> <i class="fas fa-fw fa-user-circle"></i> </span> - <span class="text-muted">Hosted by</span> {{eventGroupData.hostName}} + <span class="text-muted">{{{t "views.eventgroup.hostedby" }}} </li> {{/if}} {{#if eventGroupData.url}} @@ -47,11 +52,12 @@ {{/if}} <li> <span class="fa-li"> - <i class="fas fa-share-square"></i> + <i class="fas fa-users"></i> </span> + <span class="text-muted">{{t "views.event.publiclink" }}:</span> <a href="https://{{domain}}/group/{{eventGroupData.id}}">https://{{domain}}/group/{{eventGroupData.id}}</a> <button type="button" id="copyEventLink" class="eventInformationAction button button--outline-secondary button--sm" data-clipboard-text="https://{{domain}}/group/{{eventGroupData.id}}"> - <i class="fas fa-copy"></i> Copy + <i class="fas fa-copy"></i> {{t "common.copy" }} </button> </li> <li> @@ -63,10 +69,9 @@ <button type="button" id="copyFeedLink" class="eventInformationAction button button--outline-secondary button--sm" data-clipboard-text="https://{{domain}}/group/{{eventGroupData.id}}/feed.ics"> - <i class="fas fa-copy"></i> Copy + <i class="fas fa-copy"></i> {{t "common.copy" }} </button> - <p class="text-muted small">Paste this URL into your calendar app - to subscribe to a live feed of events from this group.</p> + <p class="text-muted small">{{t "views.eventgroup.feedlinkdesc" }}</p> </li> </ul> </div> <!-- /card --> @@ -76,31 +81,31 @@ <button type="button" class="button button--outline-secondary button--sm" data-event-id="{{eventGroupData.id}}" data-toggle="modal" data-target="#subscribeModal"> - <i class="fas fa-envelope"></i> Subscribe to updates + <i class="fas fa-envelope"></i> {{t "views.eventgroup.subscribetitle" }} </button> <button type="button" id="exportICS" class="button button--outline-secondary button--sm" data-event-id="{{eventGroupData.id}}"> - <i class="fas fa-download"></i> Export as ICS + <i class="fas fa-download"></i> {{t "views.eventgroup.ICSexport" }} </button> </div> {{#unless editingEnabled}} - <button type="button" id="editGroup" class="button button--outline-secondary button--sm" data-event-id="{{eventGroupData.id}}" data-toggle="modal" data-target="#editTokenModal"><i class="fas fa-edit"></i> Switch to editing mode</button> + <button type="button" id="editGroup" class="button button--outline-secondary button--sm" data-event-id="{{eventGroupData.id}}" data-toggle="modal" data-target="#editTokenModal"><i class="fas fa-edit"></i> {{t "views.eventgroup.editmode" }}</button> {{/unless}} </aside> </div> {{#if editingEnabled}} <div class="alert alert-info mb-4"> - <p>To add an event to this group, copy and paste the two codes below into the 'Event Group' box when creating a new event or editing an existing event.</p> + <p>{{t "views.eventgroup.addevent" }}</p> <div class="table-responsive"> <table style="width:100%"> <tr style="border-bottom:1px solid rgba(0,0,0,0.2)"> - <td><strong>Event group ID</strong></td> + <td><strong>{{t "common.eventgroupid" }}</strong></td> <td><span class="code" id="eventGroupID">{{eventGroupData.id}}</span></td> </tr> <tr> - <td><strong>Event group editing password</strong></td> + <td><strong>{{t "views.eventgroup.editpswd" }}</strong></td> <td><span class="code" id="eventGroupEditToken">{{eventGroupData.editToken}}</span></td> </tr> </table> @@ -110,19 +115,19 @@ {{/if}} <div class="card mb-4" id="eventDescription"> - <h5 class="card-header">About</h5> + <h5 class="card-header">{{t "views.eventgroup.about" }}</h5> <div class="card-body"> {{{parsedDescription}}} </div> </div> <div class="card mt-4 mb-4" id="upcomingEvents"> - <h5 class="card-header">Upcoming events</h5> + <h5 class="card-header">{{t "views.eventgroup.upcomingevents" }}</h5> {{> eventList upcomingEvents}} </div> <div class="card mt-4 mb-4" id="pastEvents"> - <h5 class="card-header">Past events</h5> + <h5 class="card-header">{{t "views.eventgroup.pastevents" }}</h5> {{> eventList pastEvents}} </div> </div> @@ -134,19 +139,19 @@ <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> - <h5 class="modal-title" id="deleteModalLabel">Delete '{{eventGroupData.name}}'</h5> + <h5 class="modal-title" id="deleteModalLabel">{{t "views.eventgroup.deletetitle" }}</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> </div> <form id="deleteEventGroupForm" action="/deleteeventgroup/{{eventGroupData.id}}/{{eventGroupData.editToken}}" method="post"> <div class="modal-body"> - <p>Are you sure you want to delete this event group? This action cannot be undone.</p> - <p>This will <strong>not</strong> delete the individual events contained in this group. They can be linked to another group later.</p> + <p>{{t "views.eventgroup.delconfirm" }}</p> + <p>{{{t "views.eventgroup.deldesc" }}}</p> </div> <div class="modal-footer"> - <button type="button" class="button button--secondary" data-dismiss="modal">Close</button> - <button type="submit" class="button button--danger">Delete event group</button> + <button type="button" class="button button--secondary" data-dismiss="modal">{{t "common.close" }}</button> + <button type="submit" class="button button--danger">{{t "views.eventgroup.del" }}</button> </div> </form> </div> @@ -160,7 +165,7 @@ <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> - <h5 class="modal-title" id="subscribeModalLabel">Subscribe to '{{eventGroupData.name}}'</h5> + <h5 class="modal-title" id="subscribeModalLabel">{{t "views.eventgroup.subscribe" }}</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> @@ -168,8 +173,7 @@ <form id="subscribeForm" action="/subscribe/{{eventGroupData.id}}" method="post"> <div class="modal-body"> <div class="form-group"> - <p class="form-text small">Enter your email address to receive updates - whenever a new event is created in this group.</p> + <p class="form-text small">{{t "views.eventgroup.subscribedesc" }}</p> </div> <div class="form-group"> <input type="email" class="form-control" id="emailAddress" @@ -177,8 +181,8 @@ </div> </div> <div class="modal-footer"> - <button type="button" class="button button--secondary" data-dismiss="modal">Close</button> - <button type="submit" class="button button--primary">Subscribe</button> + <button type="button" class="button button--secondary" data-dismiss="modal">{{t "common.close" }}</button> + <button type="submit" class="button button--primary">{{t "views.eventgroup.subscribebutton" }}</button> </div> </form> </div> @@ -189,7 +193,7 @@ <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> - <h5 class="modal-title" id="editTokenModalLabel">Enter editing password</h5> + <h5 class="modal-title" id="editTokenModalLabel">{{t "views.edittoken" }}</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> @@ -197,9 +201,9 @@ <form id="verifyTokenForm" action="/verifytoken/group/{{eventGroupData.id}}" method="post"> <div class="modal-body"> <div class="form-group"> - <p class="form-text small">Enter the editing password you received by email or were shown when the event was created.</p> + <p class="form-text small">{{t "views.edittokendesc" }}</p> <div class="form-group"> - <input type="text" class="form-control" id="editToken" name="editToken" placeholder="Get it right!" data-validation="required"> + <input type="text" class="form-control" id="editToken" name="editToken" placeholder="{{t "views.right" }}" data-validation="required"> </div> <div class="form-group"> <div class="alert alert-danger" style="display:none;"></div> @@ -207,8 +211,8 @@ </div> </div> <div class="modal-footer"> - <button type="button" class="button button--secondary" data-dismiss="modal">Close</button> - <button type="submit" class="button button--primary">Edit group</button> + <button type="button" class="button button--secondary" data-dismiss="modal">{{t "common.close" }}</button> + <button type="submit" class="button button--primary">{{t "views.eventgroup.edit" }}</button> </div> </form> </div> @@ -275,12 +279,12 @@ window.groupData = {{{ json jsonData }}}; }) }) $("#copyEventLink").click(function(){ - $(this).html('<i class="fas fa-copy"></i> Copied!'); - setTimeout(function(){ $("#copyEventLink").html('<i class="fas fa-copy"></i> Copy');}, 5000); + $(this).html('<i class="fas fa-copy"></i> {{t "common.copied" }}!'); + setTimeout(function(){ $("#copyEventLink").html('<i class="fas fa-copy"></i> {{t "common.copy" }}');}, 5000); }); $("#copyFeedLink").click(function(){ - $(this).html('<i class="fas fa-copy"></i> Copied!'); - setTimeout(function(){ $("#copyFeedLink").html('<i class="fas fa-copy"></i> Copy');}, 5000); + $(this).html('<i class="fas fa-copy"></i> {{t "common.copied" }}'); + setTimeout(function(){ $("#copyFeedLink").html('<i class="fas fa-copy"></i> {{t "common.copy" }}');}, 5000); }); $('#verifyTokenForm').on('submit', function(e) { @@ -298,7 +302,7 @@ window.groupData = {{{ json jsonData }}}; } }, error: function(response, status, xhr) { - form.find('.alert').text('That editing password is incorrect. Try again.').show(); + form.find('.alert').text('{{t "views.incorrectpswd" }}').show(); } }); }); diff --git a/views/home.handlebars b/views/home.handlebars index d5fdb81..4a0ab3f 100755 --- a/views/home.handlebars +++ b/views/home.handlebars @@ -1,5 +1,5 @@ <main class="page"> - <h2 class="mb-3 pb-2 text-center border-bottom">About {{siteName}}</h2> + <h2 class="mb-3 pb-2 text-center border-bottom">{{{t "views.home.about" }}}</h2> {{#if instanceDescription}} <div class="instance-description mb-4"> @@ -9,61 +9,46 @@ {{> instanceRules }} - <h2 class="mb-3 mt-5 pb-2 text-center border-bottom">About Gathio</h2> + <h2 class="mb-3 mt-5 pb-2 text-center border-bottom">{{t "views.home.aboutgathio"}}</h2> - <p class="lead text-center">Gathio is a simple, federated, privacy-first event hosting platform.</p> + <p class="lead text-center">{{t "views.home.intro"}}</p> <div id="example-event" class="text-center w-100 mt-4 mb-5"> <img - alt="An example event page for a picnic. The page shows the event's location, host, date and time, and description, as well as buttons to save the event to Google Calendar, export it, and open the location in OpenStreetMap and Google Maps." + alt="{{t "views.home.imgexample" }}" src="images/example-event-2023.png" class="img-fluid w-75 mx-auto shadow-lg rounded"> </div> - <h3>Privacy-first</h3> + <h3>{{t "views.home.privacytitle" }}</h3> - <p>There are no accounts on Gathio. When you create an event, we generate a password which allows you to edit the - event. Send all your guests the public link, and all your co-hosts the secret editing link containing the password. - </p> + <p>{{t "views.home.privdesc" }} </p> - <p>If you supply your email, we'll send you the editing password so you don't lose it - but supplying your email is - optional!</p> + <p>{{t "views.home.privmail" }}</p> - <p>If this instance automatically deletes its events, sometime after the event finishes, it's deleted from the - database for ever, and your data goes with it.</p> + <p>{{t "views.home.autodelete" }}</p> - <p>Also, Gathio doesn't show you ads, doesn't sell your data, and never sends you unnecessary emails.</p> + <p>{{t "views.home.privacy" }} </p> - <p>But remember: all events are visible to anyone who knows the link, so probably don't use Gathio to plot your - surprise birthday party or revolution. Or whatever, you do you.</p> + <p>{{t "views.home.attention" }} </p> - <h3>Configurable</h3> + <h3>{{t "views.home.conftitle" }}</h3> - <p>The <a href="https://gath.io">flagship Gathio instance at gath.io</a> is designed for anyone to create ephemeral, - hidden events. Anyone can create an event; events are never displayed anywhere public; and they're deleted 7 days - after they end.</p> + <p>{{{t "views.home.flagshipsetting" }}}</p> - <p>But if your community sets up their own instance, you can limit event creation to a specific list of people, - display events on a handy list on the homepage, and disable event deletion entirely!</p> + <p>{{t "views.home.onpre" }}</p> - <h3>Federation and self-hosting</h3> + <h3>{{t "views.home.fedtitle" }}</h3> - <p>Gathio can easily be self-hosted, and supports ActivityPub services like Mastodon, Pleroma, and Friendica, allowing - you to access events from anywhere on the Fediverse. We encourage you to spin up your own instance for your - community. Detailed instructions on <a href="https://docs.gath.io/using-gathio/fediverse/">ActivityPub access</a> - and <a href="https://docs.gath.io/running-gathio/installation/">self-hosted installation</a> - live on our GitHub wiki. + <p>{{{t "views.home.selfhost" }}}</p> - <h3>Open source</h3> + <h3>{{t "views.home.opensource" }}</h3> - <p>Gathio is delighted to be open source, and is built by a lovely group of people. Leave a question in our <a - href="https://github.com/lowercasename/gathio/issues">tracker</a> if you encounter any issues.</p> + <p>{{{t "views.home.osdesc" }}}</p> {{#if showKofi}} <div class="card border-success mt-5 mb-3 mx-auto" style="min-width:300px;max-width:50%;"> <div class="card-body"> - <p> - If you find yourself using and enjoying Gathio, consider <a href="https://github.com/sponsors/lowercasename" class="text-success">supporting Raphael via GitHub Sponsors</a>. It'll help keep the project and main site running! <i class="far fa-heart"></i> - </p> + <p>{{{t "views.home.sponsor" }}}</p> </div> </div> {{/if}} diff --git a/views/layouts/main.handlebars b/views/layouts/main.handlebars index e967019..d2eeeac 100755 --- a/views/layouts/main.handlebars +++ b/views/layouts/main.handlebars @@ -16,14 +16,14 @@ <meta property="og:type" content="website"> <meta property="og:image:width" content="260"> <meta property="og:image:height" content="260"> - <meta property="og:description" content="{{#if metadata.description}}{{metadata.description}}{{else}}An easier, quicker, and much less privacy-invading way to make and share events{{/if}}"> + <meta property="og:description" content="{{#if metadata.description}}{{metadata.description}}{{else}}{{t "views.layouts.main.defaultmetadata" }}{{/if}}"> <meta property="og:title" content="{{#if metadata.title}}{{metadata.title}} · {{siteName}}{{else}}{{siteName}}{{/if}}"> <meta property="og:url" content="{{#if metadata.url}}{{metadata.url}}{{else}}https://{{domain}}/{{/if}}"> <meta property="og:image" content="{{#if metadata.image}}{{metadata.image}}{{else}}https://{{domain}}/og-image.jpg{{/if}}"> <meta name="twitter:card" content="summary"> <meta name="twitter:title" content="{{#if metadata.title}}{{metadata.title}} · {{siteName}}{{else}}{{siteName}}{{/if}}"> - <meta name="twitter:description" content="{{#if metadata.description}}{{metadata.description}}{{else}}An easier, quicker, and much less privacy-invading way to make and share events{{/if}}"> + <meta name="twitter:description" content="{{#if metadata.description}}{{metadata.description}}{{else}}{{t "views.layouts.main.defaultmetadata" }}{{/if}}"> <meta name="twitter:image" content="{{#if metadata.image}}{{metadata.image}}{{else}}https://{{domain}}/og-image.jpg{{/if}}"> @@ -57,7 +57,7 @@ <header id="sidebar"> {{>sidebar}} </header> - <section id="content"> + <section id="content" {{#if editingEnabled}}class="content--editing"{{/if}}> {{{body}}} <footer> {{#if showInstanceInformation}} @@ -77,7 +77,7 @@ </p> {{/if}} <p class="small text-muted"> - <strong>Gathio</strong> version {{version}} · <a href="https://github.com/lowercasename/gathio">GitHub</a> · Made with <i class="far fa-heart"></i> by <a href="https://raphaelkabo.com">Raphael</a> and <a href="https://github.com/lowercasename/gathio/graphs/contributors">contributors</a> + {{{t "views.layouts.main.footnote" }}} </p> </footer> </section> diff --git a/views/newevent.handlebars b/views/newevent.handlebars index d6d7024..9de2efd 100755 --- a/views/newevent.handlebars +++ b/views/newevent.handlebars @@ -1,25 +1,25 @@ <main class="page" x-data="{currentTab: null}"> -<h2 class="mb-3 pb-2 text-center border-bottom">What would you like to do?</h2> +<h2 class="mb-3 pb-2 text-center border-bottom">{{t "views.newevent.pagetitle" }}</h2> <div class="container-fluid mb-4"> <div class="row"> <div class="col-lg-4 p-2"> - <button type="button" id="showNewEventFormButton" class="button w-100" x-bind:class="currentTab === 'event' ? 'button--primary' : 'button--secondary'" x-on:click="currentTab = 'event'"><i class="fas fa-calendar-day"></i> Create a new event</button> + <button type="button" id="showNewEventFormButton" class="button w-100" x-bind:class="currentTab === 'event' ? 'button--primary' : 'button--secondary'" x-on:click="currentTab = 'event'"><i class="fas fa-calendar-day"></i> {{t "views.newevent.neweventbutton" }}</button> </div> <div class="col-lg-4 p-2"> - <button type="button" id="showImportEventFormButton" class="button w-100" x-bind:class="currentTab === 'importEvent' ? 'button--primary' : 'button--secondary'" x-on:click="currentTab = 'importEvent'"><i class="fas fa-file-import"></i> Import an existing event</button> + <button type="button" id="showImportEventFormButton" class="button w-100" x-bind:class="currentTab === 'importEvent' ? 'button--primary' : 'button--secondary'" x-on:click="currentTab = 'importEvent'"><i class="fas fa-file-import"></i> {{t "views.newevent.importevent" }}</button> </div> <div class="col-lg-4 p-2"> - <button type="button" id="showNewEventGroupFormButton" class="button w-100" x-bind:class="currentTab === 'group' ? 'button--primary' : 'button--secondary'" x-on:click="currentTab = 'group'"><i class="fas fa-calendar-alt"></i> Create a new event group </button> + <button type="button" id="showNewEventGroupFormButton" class="button w-100" x-bind:class="currentTab === 'group' ? 'button--primary' : 'button--secondary'" x-on:click="currentTab = 'group'"><i class="fas fa-calendar-alt"></i> {{t "views.newevent.neweventgroup" }} </button> </div> </div> </div> <div class="alert alert-info mb-4 text-center" role="alert"> - <i class="fas fa-exclamation-circle"></i> Events are visible to anyone who knows the link. + <i class="fas fa-exclamation-circle"></i> {{{t "views.newevent.visiblealert" }}} </div> <div id="newEventFormContainer" x-show="currentTab === 'event'" style="display: none"> - <h4 class="mb-2">Create an event</h4> + <h4 class="mb-2">{{t "views.newevent.createnew" }}</h4> <form id="newEventForm" enctype="multipart/form-data" @@ -38,7 +38,7 @@ class="button button--primary w-50" x-bind:disabled="submitting" x-bind:class="submitting ? 'button--loading' : ''" - x-text="submitting ? 'Creating...' : 'Create'" + x-text="submitting ? '{{t "common.creating" }}' : '{{t "common.create" }}'" ></button> </div> </div> @@ -50,9 +50,9 @@ </div> <div id="newEventGroupFormContainer" x-show="currentTab === 'group'" style="display: none"> - <h4 class="mb-2">Create an event group</h4> - <p class="text-muted">An event group is a holding area for a set of linked events, like a recurring game night, a festival, or a band tour. You can share a public link to your event group just like an individual event link, and people who know the secret editing code will be able to add future events to the group.</p> - <p class="text-muted">Event groups do not get automatically removed like events do, but events which have been removed from {{siteName}} will of course not show up in an event group.</p> + <h4 class="mb-2">{{t "views.newevent.newgroup" }}</h4> + <p class="text-muted">{{t "views.newevent.groupdesc" }}</p> + <p class="text-muted">{{{t "views.newevent.groupattention" }}}</p> <form id="newEventGroupForm" enctype="multipart/form-data" x-data="newEventGroupForm()" @submit.prevent="submitForm"> {{> eventGroupForm }} <div class="form-group row"> @@ -62,7 +62,7 @@ class="button button--primary w-50" x-bind:disabled="submitting" x-bind:class="submitting ? 'button--loading' : ''" - x-text="submitting ? 'Creating...' : 'Create'" + x-text="submitting ? '{{t "common.creating" }}' : '{{t "common.create" }}'" ></button> </div> </div> diff --git a/views/optionsform.handlebars b/views/optionsform.handlebars index 85ebd9f..78e184b 100755 --- a/views/optionsform.handlebars +++ b/views/optionsform.handlebars @@ -1,46 +1,46 @@ <div class="form-group row"> - <div class="col-sm-2">Options</div> + <div class="col-sm-2">{{t "options.title" }}</div> <div class="col-sm-10"> <div class="form-check"> <input class="form-check-input" type="checkbox" id="joinCheckbox" name="joinCheckbox" {{#if data.joinCheckbox}}checked{{/if}}> <label class="form-check-label" for="joinCheckbox"> - Users can mark themselves as attending this event + {{t "views.join" }} </label> </div> <div class="form-check"> <input class="form-check-input" type="checkbox" id="guestlistCheckbox" name="guestlistCheckbox" {{#if data.guestlistCheckbox}}checked{{/if}}> <label class="form-check-label" for="guestlistCheckbox"> - Display the list of attendees + {{t "views.options.showlistattendees" }} </label> </div> <div class="form-check"> <input class="form-check-input" type="checkbox" id="interactionCheckbox" name="interactionCheckbox" {{#if data.interactionCheckbox}}checked{{/if}}> <label class="form-check-label" for="interactionCheckbox"> - Users can post comments on this event + {{t "views.interaction" }} </label> </div> </div> </div> <div class="form-group row"> - <div class="col-sm-2">Options</div> + <div class="col-sm-2">{{t "options.title" }}</div> <div class="col-sm-10"> <div class="form-check"> <input class="form-check-input" type="checkbox" id="joinCheckbox" name="joinCheckbox" {{#if eventData.usersCanAttend}}checked{{/if}}> <label class="form-check-label" for="joinCheckbox"> - Users can mark themselves as attending this event + {{t "views.join" }} </label> </div> <div class="form-check"> <input class="form-check-input" type="checkbox" id="guestlistCheckbox" name="guestlistCheckbox" {{#if eventData.showUsersList}}checked{{/if}}> <label class="form-check-label" for="guestlistCheckbox"> - Display the list of attendees + {{t "views.options.showlistattendees" }} </label> </div> <div class="form-check"> <input class="form-check-input" type="checkbox" id="interactionCheckbox" name="interactionCheckbox" {{#if eventData.usersCanComment}}checked{{/if}}> <label class="form-check-label" for="interactionCheckbox"> - Users can post comments on this event + {{t "views.interaction" }} </label> </div> </div> diff --git a/views/partials/editeventgroupmodal.handlebars b/views/partials/editeventgroupmodal.handlebars index 046d15e..8a6a347 100644 --- a/views/partials/editeventgroupmodal.handlebars +++ b/views/partials/editeventgroupmodal.handlebars @@ -2,7 +2,7 @@ <div class="modal-dialog modal-xl modal-dialog-scrollable" role="document"> <div class="modal-content"> <div class="modal-header"> - <h5 class="modal-title" id="editModalLabel">Edit '{{eventGroupData.name}}'</h5> + <h5 class="modal-title" id="editModalLabel">{{{t "views.eventgroup.edit" }}} </h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> @@ -14,23 +14,23 @@ <div class="form-group"> <div class="card border-danger mb-3"> - <div class="card-header text-danger">Delete this event group</div> + <div class="card-header text-danger">{{t "views.partials.editeventgroup.del" }}</div> <div class="card-body text-danger"> - <button type="button" id="deleteEvent" class="button button--danger" data-toggle="modal" data-target="#deleteModal"><i class="fas fa-trash"></i> Delete event group</button> + <button type="button" id="deleteEvent" class="button button--danger" data-toggle="modal" data-target="#deleteModal"><i class="fas fa-trash"></i> {{t "views.partials.editeventgroup.delbutton" }}</button> </div> </div> </div> </form> </div> <div class="modal-footer"> - <button type="button" class="button button--secondary" data-dismiss="modal">Close</button> + <button type="button" class="button button--secondary" data-dismiss="modal">{{t "common.close" }}</button> <button type="submit" class="button button--primary" @click="submitForm" x-bind:disabled="submitting" x-bind:class="submitting ? 'button--loading' : ''" - x-text="submitting ? 'Saving...' : 'Save'" + x-text="submitting ? '{{t "views.partials.saving" }}' : '{{t "views.partials.save" }}'" ></button> </div> </div> diff --git a/views/partials/editeventmodal.handlebars b/views/partials/editeventmodal.handlebars index 986da9c..2848125 100644 --- a/views/partials/editeventmodal.handlebars +++ b/views/partials/editeventmodal.handlebars @@ -7,7 +7,7 @@ <div class="modal-dialog modal-xl modal-dialog-scrollable" role="document"> <div class="modal-content"> <div class="modal-header"> - <h5 class="modal-title" id="editModalLabel">Edit '{{eventData.name}}'</h5> + <h5 class="modal-title" id="editModalLabel">{{{t "views.partials.editevent.edit" }}}</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> @@ -19,25 +19,25 @@ <div class="form-group"> <div class="card border-danger mb-3"> - <div class="card-header text-danger">Delete this event</div> + <div class="card-header text-danger">{{t "views.partials.editevent.delthis" }}</div> <div class="card-body text-danger"> <button type="button" id="deleteEvent" class="button button--danger" data-toggle="modal" data-target="#deleteModal" data-event-id="{{eventData.id}}"><i class="fas fa-trash"></i> - Delete</button> + {{t "views.del" }}</button> </div> </div> </div> </form> </div> <div class="modal-footer"> - <button type="button" class="button button--secondary" data-dismiss="modal">Close</button> + <button type="button" class="button button--secondary" data-dismiss="modal">{{t "common.close" }}</button> <button type="submit" class="button button--primary" @click="submitForm" x-bind:disabled="submitting" x-bind:class="submitting ? 'button--loading' : ''" - x-text="submitting ? 'Saving...' : 'Save'" + x-text="submitting ? '{{t "views.partials.saving" }}' : '{{t "views.partials.save" }}'" ></button> </div> </div> diff --git a/views/partials/eventForm.handlebars b/views/partials/eventForm.handlebars index 93e8e84..8714058 100755 --- a/views/partials/eventForm.handlebars +++ b/views/partials/eventForm.handlebars @@ -1,100 +1,100 @@ <input type="hidden" name="magicLinkToken" value="{{magicLinkToken}}" x-ref="magicLinkToken"> <div class="form-group"> - <label for="eventName" >Event name</label> + <label for="eventName" >{{t "common.eventname" }}</label> <div class="form-group "> - <input type="text" class="form-control" id="eventName" name="eventName" placeholder="Make it snappy." x-model="data.eventName" > + <input type="text" class="form-control" id="eventName" name="eventName" placeholder="{{t "views.partials.snappy" }}" x-model="data.eventName" > </div> </div> <div class="form-group"> - <label for="eventLocation" >Location</label> + <label for="eventLocation" >{{t "common.eventlocation" }}</label> <div class="form-group "> - <input type="text" class="form-control" id="eventLocation" name="eventLocation" placeholder="Be specific." x-model="data.eventLocation"> + <input type="text" class="form-control" id="eventLocation" name="eventLocation" placeholder="{{t "views.event.locationdesc" }}" x-model="data.eventLocation"> </div> </div> <div class="form-group"> - <label for="eventStart" >Starts</label> + <label for="eventStart" >{{t "common.eventstart" }}</label> <div class="form-group"> <input type="datetime-local" class="form-control" id="eventStart" name="eventStart" x-model="data.eventStart" x-on:blur="updateEventEnd"> </div> </div> <div class="form-group"> - <label for="eventEnd" >Ends</label> + <label for="eventEnd" >{{t "common.eventend" }}</label> <div class="form-group "> <input type="datetime-local" class="form-control" id="eventEnd" name="eventEnd" x-model="data.eventEnd"> </div> </div> <div class="form-group"> - <label for="timezone" >Timezone</label> + <label for="timezone" >{{t "common.timezone" }}</label> <div class="form-group "> <select class="select2" id="timezone" name="timezone" x-ref="timezone"></select> </div> </div> <div class="form-group"> - <label for="eventDescription" >Description</label> + <label for="eventDescription" >{{t "views.partials.eventform.eventdescription" }}</label> <div class="form-group "> - <textarea class="form-control expand" id="eventDescription" name="eventDescription" placeholder="You can always edit it later." x-model="data.eventDescription" ></textarea> - <small class="form-text"><a href="https://commonmark.org/help/">Markdown</a> formatting supported.</small> + <textarea class="form-control expand" id="eventDescription" name="eventDescription" placeholder="{{t "views.event.editlater" }}" x-model="data.eventDescription" ></textarea> + <small class="form-text">{{{t "views.partials.mdsupport" }}}</small> </div> </div> <div class="form-group"> - <label for="eventURL">Link</label> + <label for="eventURL">{{t "views.partials.eventform.eventurl" }}</label> <div class="form-group "> <input type="url" class="form-control" id="eventURL" name="eventURL" placeholder="https://example.com" x-model="data.eventURL"> - <small class="form-text">For tickets or another event page (optional).</small> + <small class="form-text">{{t "views.partials.eventform.eventurldesc" }}</small> </div> </div> <div class="form-group"> - <label for="eventImage" >Cover image</label> + <label for="eventImage" >{{t "common.coverimg" }}</label> <div class="form-group "> <div class="image-preview" id="event-image-preview"> - <label for="image-upload" id="event-image-label">Choose file</label> + <label for="image-upload" id="event-image-label">{{t "views.partials.choosefile" }}</label> <input type="file" name="imageUpload" id="event-image-upload" accept="image/jpeg,image/gif,image/png" x-ref="eventImageUpload" /> </div> - <small class="form-text">Recommended dimensions (w x h): 920px by 300px.</small> + <small class="form-text">{{t "views.partials.recommendeddimensions" }}</small> {{#if eventData.image}} <div class="form-group my-2"> - <button type="button" class="button button--danger" id="deleteImage">Delete image</button> + <button type="button" class="button button--danger" id="deleteImage">{{t "views.partials.delimg" }}</button> </div> {{/if}} </div> </div> <div class="form-group"> - <label for="hostName" >Host name</label> + <label for="hostName" >{{t "views.partials.eventform.hostname" }}</label> <div class="form-group "> - <input type="text" class="form-control" id="hostName" name="hostName" placeholder="Will be shown on the event page (optional)." x-model="data.hostName" > + <input type="text" class="form-control" id="hostName" name="hostName" placeholder="{{t "views.partials.eventform.hostnamedesc" }}" x-model="data.hostName" > </div> </div> <div class="form-group"> - <label for="creatorEmail" >Your email</label> + <label for="creatorEmail" >{{t "views.partials.eventform.creatoremail" }}</label> <div class="form-group "> - <input type="email" class="form-control" id="creatorEmail" name="creatorEmail" placeholder="Will not be shown anywhere (optional)." x-model.fill="data.creatorEmail" {{#if creatorEmail}}value="{{creatorEmail}}" readonly{{/if}}> - <small class="form-text">If you provide your email, we will send your secret editing password here, and use it to notify you of updates to the event.</small> + <input type="email" class="form-control" id="creatorEmail" name="creatorEmail" placeholder="{{t "views.partials.wontshow" }}" x-model.fill="data.creatorEmail" {{#if creatorEmail}}value="{{creatorEmail}}" readonly{{/if}}> + <small class="form-text">{{t "views.partials.creatoremaildesc" }}</small> </div> </div> <div class="form-group"> - <label>Options</label> + <label>{{t "views.partials.eventform.options" }}</label> <div > {{#if showPublicEventList}} <div class="form-check"> <input class="form-check-input" type="checkbox" id="publicEventCheckbox" name="publicCheckbox" x-model="data.publicCheckbox"> <label class="form-check-label" for="publicEventCheckbox"> - Display this event on the public event list + {{t "views.partials.eventform.publicevent" }} </label> </div> {{/if}} <div class="form-check"> <input class="form-check-input" type="checkbox" id="eventGroupCheckbox" name="eventGroupCheckbox" x-model="data.eventGroupCheckbox"> <label class="form-check-label" for="eventGroupCheckbox"> - This event is part of an event group + {{t "views.partials.eventform.eventgroup" }} </label> </div> <div class="card my-2" id="eventGroupData" x-show="data.eventGroupCheckbox"> <div class="card-header"> - <strong>Link this event to an event group</strong> + <strong>{{t "views.partials.eventform.eventgroupdata" }}</strong> </div> <div class="card-body" x-data="eventGroupLinker()"> <div class="form-group-label" x-show="data.groups.length > 0"> - <label>Choose a group you've edited before</label> + <label>{{t "views.partials.eventform.eventgrouplinker" }}</label> </div> <div class="form-group" x-show="data.groups.length > 0"> <select @@ -111,7 +111,7 @@ </select> </div> <button type="button" class="button button--outline-primary w-100 text-center" x-on:click="manualGroupInputVisible = !manualGroupInputVisible"> - Enter group details manually <i class="fas" :class="{'fa-caret-down': !manualGroupInputVisible, 'fa-caret-up': manualGroupInputVisible}"></i> + {{t "views.partials.eventform.groupbutton" }} <i class="fas" :class="{'fa-caret-down': !manualGroupInputVisible, 'fa-caret-up': manualGroupInputVisible}"></i> </button> <div class="form-group slider" @@ -120,15 +120,15 @@ :style="manualGroupInputVisible && {height: $el.scrollHeight+`px`}" :aria-hidden="!manualGroupInputVisible" > - <label for="eventGroupID" class="mt-2">Event group ID</label> + <label for="eventGroupID" class="mt-2">{{t "common.eventgroupid" }}</label> <div class="form-group"> <input type="text" class="form-control text-monospace" id="eventGroupID" name="eventGroupID" x-model="data.eventGroupID" x-on:input="resetGroupSelector"> - <small class="form-text">You can find this short string of characters in the event group's link, in your confirmation email, or on the event group's page.</small> + <small class="form-text">{{t "views.partials.eventform.eventgroupid" }}</small> </div> - <label for="eventGroupEditToken">Event group secret editing code</label> + <label for="eventGroupEditToken">{{t "views.partials.eventform.eventgroupedittoken" }}</label> <div class="form-group mb-0"> <input type="text" class="form-control text-monospace" id="eventGroupEditToken" name="eventGroupEditToken" x-model="data.eventGroupEditToken" x-on:input="resetGroupSelector"> - <small class="form-text">You can find this long string of characters in the confirmation email you received when you created the event group.</small> + <small class="form-text">{{t "views.partials.eventform.eventgroupedittoken" }}</small> </div> </div> </div> @@ -136,27 +136,27 @@ <div class="form-check"> <input class="form-check-input" type="checkbox" id="interactionCheckbox" name="interactionCheckbox" x-model="data.interactionCheckbox"> <label class="form-check-label" for="interactionCheckbox"> - Users can post comments on this event + {{t "views.interaction" }} </label> </div> <div class="form-check"> <input class="form-check-input" type="checkbox" id="joinCheckbox" name="joinCheckbox" x-model="data.joinCheckbox"> <label class="form-check-label" for="joinCheckbox"> - Users can mark themselves as attending this event + {{t "views.join" }} </label> </div> <div class="form-check" id="maxAttendeesCheckboxContainer" x-show="data.joinCheckbox"> <input class="form-check-input" type="checkbox" id="maxAttendeesCheckbox" name="maxAttendeesCheckbox" x-model="data.maxAttendeesCheckbox"> <label class="form-check-label" for="maxAttendeesCheckbox"> - Set a limit on the maximum number of attendees + {{t "views.partials.eventform.maxattendeestitle" }} </label> </div> </div> </div> <div class="form-group" id="maxAttendeesContainer" x-show="data.maxAttendeesCheckbox && data.joinCheckbox"> - <label for="maxAttendees" >Attendee limit</label> + <label for="maxAttendees" >{{t "views.partials.eventform.maxattendees" }}</label> <div class="form-group "> - <input type="number" class="form-control" id="maxAttendees" name="maxAttendees" placeholder="Enter a number." x-model="data.maxAttendees" > + <input type="number" class="form-control" id="maxAttendees" name="maxAttendees" placeholder="{{t "views.event.enternum" }}" x-model="data.maxAttendees" > </div> </div> <div class="form-group"> @@ -166,7 +166,7 @@ role="alert" x-show="errors.length > 0" > - <p><i class="fas fa-exclamation-triangle"></i> Please fix these errors:</p> + <p><i class="fas fa-exclamation-triangle"></i> {{t "views.partials.fixerrors" }}</p> <ul> <template x-for="error in errors"> <li x-html="error.message"></li> diff --git a/views/partials/eventGroupForm.handlebars b/views/partials/eventGroupForm.handlebars index 5536e49..5cc8b40 100644 --- a/views/partials/eventGroupForm.handlebars +++ b/views/partials/eventGroupForm.handlebars @@ -1,44 +1,44 @@ <input type="hidden" name="magicLinkToken" value="{{magicLinkToken}}" x-ref="magicLinkToken"> <div class="form-group"> - <label for="eventGroupName">Name</label> - <input type="text" class="form-control" id="eventGroupName" name="eventGroupName" placeholder="Make it snappy." x-model="data.eventGroupName"> + <label for="eventGroupName">{{t "common.eventgroupname" }}</label> + <input type="text" class="form-control" id="eventGroupName" name="eventGroupName" placeholder="{{t "views.partials.snappy" }}" x-model="data.eventGroupName"> </div> <div class="form-group"> - <label for="eventGroupDescription">Description</label> + <label for="eventGroupDescription">{{t "views.partials.eventgroupform.eventgroupddesc" }}</label> <textarea class="form-control" id="eventGroupDescription" name="eventGroupDescription" x-model="data.eventGroupDescription">{{eventGroupData.description}}</textarea> - <small class="form-text"><a href="https://commonmark.org/help/">Markdown</a> formatting supported.</small> + <small class="form-text">{{{t "views.partials.mdsupport" }}}</small> </div> <div class="form-group"> - <label for="eventGroupURL">Link</label> + <label for="eventGroupURL">{{t "views.partials.eventgroupform.eventgroupurl" }}</label> <input type="url" class="form-control" id="eventGroupURL" name="eventGroupURL" placeholder="https://example.com" x-model="data.eventGroupURL"> - <small class="form-text">For tickets or a page with more information (optional).</small> + <small class="form-text">{{t "views.partials.eventgroupform.eventgroupurldesc" }}</small> </div> <div class="form-group"> - <label for="hostName">Host or organisation name</label> - <input type="text" class="form-control" id="eventGroupHostName" name="hostName" placeholder="Will be shown on the event group page (optional)." x-model="data.hostName"> + <label for="hostName">{{t "views.partials.eventgroupform.hostname" }}</label> + <input type="text" class="form-control" id="eventGroupHostName" name="hostName" placeholder="{{t "views.partials.eventgroupform.isshowningroup" }}" x-model="data.hostName"> </div> <div class="form-group"> - <label for="creatorEmail">Your email</label> + <label for="creatorEmail">{{t "views.partials.eventgroupform.creatoremail" }}</label> <div class="form-group"> - <input type="email" class="form-control" id="eventGroupCreatorEmail" name="creatorEmail" placeholder="Will not be shown anywhere (optional)." x-model.fill="data.creatorEmail" {{#if creatorEmail}}value="{{creatorEmail}}" readonly{{/if}}> - <small class="form-text">If you provide your email, we will send your secret editing password here, and use it to notify you of updates to the event.</small> + <input type="email" class="form-control" id="eventGroupCreatorEmail" name="creatorEmail" placeholder="{{t "views.partials.wontshow" }}" x-model.fill="data.creatorEmail" {{#if creatorEmail}}value="{{creatorEmail}}" readonly{{/if}}> + <small class="form-text">{{t "views.partials.creatoremaildesc" }}</small> </div> </div> <div class="form-group"> - <label>Cover image</label> + <label>{{t "common.coverimg" }}</label> <div class="image-preview" id="group-image-preview"> - <label for="eventGroupImageUpload" id="group-image-label">Choose file</label> + <label for="eventGroupImageUpload" id="group-image-label">{{t "views.partials.choosefile" }}</label> <input type="file" name="imageUpload" id="group-image-upload" accept="image/jpeg,image/gif,image/png" x-ref="eventGroupImageUpload"/> </div> - <small class="form-text">Recommended dimensions (w x h): 920px by 300px.</small> + <small class="form-text">{{t "views.partials.recommendeddimensions" }}</small> </div> {{#if showPublicEventList}} <div class="form-group"> - <label>Options</label> + <label>{{{t "views.partials.eventgroup.options" }}}</label> <div class="form-check"> <input class="form-check-input" type="checkbox" id="publicGroupCheckbox" name="publicCheckbox" x-model="data.publicCheckbox"> <label class="form-check-label" for="publicGroupCheckbox"> - Display this group on the public group list + {{t "views.partials.eventgroupform.publicgroup" }} </label> </div> </div> @@ -50,7 +50,7 @@ role="alert" x-show="errors.length > 0" > - <p><i class="fas fa-exclamation-triangle"></i> Please fix these errors:</p> + <p><i class="fas fa-exclamation-triangle"></i> {{t "views.partials.fixerrors" }}</p> <ul> <template x-for="error in errors"> <li x-html="error.message"></li> diff --git a/views/partials/eventList.handlebars b/views/partials/eventList.handlebars index 6c8e7a4..b694fa3 100644 --- a/views/partials/eventList.handlebars +++ b/views/partials/eventList.handlebars @@ -17,6 +17,6 @@ {{/each}} {{/each}} {{else}} - <div class="list-group-item">No events!</div> + <div class="list-group-item">{{t "views.partials.eventlist.noevents" }}</div> {{/if}} </div> diff --git a/views/partials/importeventform.handlebars b/views/partials/importeventform.handlebars index a8c0f0e..2d91e36 100644 --- a/views/partials/importeventform.handlebars +++ b/views/partials/importeventform.handlebars @@ -1,6 +1,6 @@ -<h4 class="mb-2">Import an existing event</h4> +<h4 class="mb-2">{{t "views.newevent.importevent" }}</h4> <p> - Upload an .ics file here to instantly create an event. You can save a Facebook event as an .ics file by clicking on the context menu next to the 'Import' and 'Edit' buttons on the event page and choosing the 'Export Event' option. Then select the 'Save to calendar' option and save the file on your computer. + {{t "views.partials.importeventform.importdesc" }} </p> <img class="img-thumbnail mb-3 d-block mx-auto" src="/images/facebook-export.png" alt="Image showing the location of the export option on Facebook" /> @@ -11,15 +11,15 @@ <div class="custom-file" id="icsImportContainer"> <input required name="icsImportControl" type="file" class="custom-file-input" id="icsImportControl" aria-describedby="fileHelp" accept="text/calendar" x-ref="icsImportControl"/> <label name="icsImportLabel" class="custom-file-label" id="icsImportLabel" for="icsImportControl"> - <i class="far fa-file-alt"></i> Select file + <i class="far fa-file-alt"></i> {{t "views.partials.importevent.selectfile" }} </label> </div> </div> <div class="form-group"> - <label for="creatorEmail" class="form-label">Your email</label> + <label for="creatorEmail" class="form-label">{{t "common.youremail" }}</label> <div class="form-group"> - <input type="email" class="form-control" id="importCreatorEmail" name="creatorEmail" placeholder="Will not be shown anywhere (optional)." x-model.fill="data.creatorEmail" {{#if creatorEmail}}value="{{creatorEmail}}" readonly{{/if}}> - <small class="form-text">If you provide your email, we will send your secret editing password here, and use it to notify you of updates to the event.</small> + <input type="email" class="form-control" id="importCreatorEmail" name="creatorEmail" placeholder="{{t "views.partials.wontshow" }}" x-model.fill="data.creatorEmail" {{#if creatorEmail}}value="{{creatorEmail}}" readonly{{/if}}> + <small class="form-text">{{t "views.partials.creatoremaildesc" }}</small> </div> </div> <div class="form-group"> @@ -29,7 +29,7 @@ role="alert" x-show="errors.length > 0" > - <p><i class="fas fa-exclamation-triangle"></i> Please fix these errors:</p> + <p><i class="fas fa-exclamation-triangle"></i> {{t "views.partials.fixerrors" }}</p> <ul> <template x-for="error in errors"> <li x-html="error.message"></li> @@ -43,6 +43,6 @@ class="d-block mx-auto button button--primary w-50" x-bind:disabled="submitting" x-bind:class="submitting ? 'button--loading' : ''" - x-text="submitting ? 'Importing...' : 'Import'" + x-text="submitting ? '{{t "views.partials.importeventform.importing" }}' : '{{t "views.partials.importeventform.import" }}'" ></button> </form> diff --git a/views/partials/instanceRules.handlebars b/views/partials/instanceRules.handlebars index c7fa9be..5cf3bcf 100644 --- a/views/partials/instanceRules.handlebars +++ b/views/partials/instanceRules.handlebars @@ -1,6 +1,6 @@ <div class="card mb-4"> <div class="card-header"> - <h6 class="mb-1">Instance settings</h6> + <h6 class="mb-1">{{t "views.partials.instancerules.instancesettings" }}</h6> </div> <ul class="list-group list-group-flush"> diff --git a/views/partials/sidebar.handlebars b/views/partials/sidebar.handlebars index c1184be..ae4929d 100755 --- a/views/partials/sidebar.handlebars +++ b/views/partials/sidebar.handlebars @@ -2,10 +2,10 @@ <h1><a href="/">gathio</a></h1> <ul id="sidebar__nav"> - <li><a class="button button--primary" href="/new"><i class="far fa-calendar-plus"></i> Create an event</a></li> + <li><a class="button button--primary" href="/new"><i class="far fa-calendar-plus"></i> {{t "views.partials.sidebar.createevent" }}</a></li> {{#if showPublicEventList}} - <li><a href="/events">View events</a></li> - <li><a href="/about">About</a></li> + <li><a href="/events">{{t "views.partials.sidebar.events" }}</a></li> + <li><a href="/about">{{t "views.partials.sidebar.about" }}</a></li> {{/if}} </ul> </div> diff --git a/views/publicEventList.handlebars b/views/publicEventList.handlebars index b8cacd0..a16735b 100644 --- a/views/publicEventList.handlebars +++ b/views/publicEventList.handlebars @@ -12,39 +12,39 @@ <ul class="nav d-flex flex-gap--small"> <li> - <a id="eventsTab" class="button button--lg" x-bind:class="currentTab === 'events' ? 'button--primary' : 'button--secondary'" aria-current="page" href="#" x-on:click.prevent="currentTab = 'events'">Events</a> + <a id="eventsTab" class="button button--lg" x-bind:class="currentTab === 'events' ? 'button--primary' : 'button--secondary'" aria-current="page" href="#" x-on:click.prevent="currentTab = 'events'">{{t "views.publiceventlist.events" }}</a> </li> <li> - <a id="groupsTab" class="button button--lg" x-bind:class="currentTab === 'groups' ? 'button--primary' : 'button--secondary'" href="#" x-on:click.prevent="currentTab = 'groups'">Groups</a> + <a id="groupsTab" class="button button--lg" x-bind:class="currentTab === 'groups' ? 'button--primary' : 'button--secondary'" href="#" x-on:click.prevent="currentTab = 'groups'">{{t "views.publiceventlist.groups" }}</a> </li> </ul> <div x-show="currentTab === 'events'"> <div class="card mt-4 mb-4" id="upcomingEvents"> - <h5 class="card-header">Upcoming events</h5> + <h5 class="card-header">{{t "views.publiceventlist.upcomingevents" }}</h5> {{> eventList upcomingEvents }} </div> <div class="card mt-4 mb-4" id="pastEvents"> - <h5 class="card-header">Past events</h5> + <h5 class="card-header">{{t "views.publiceventlist.pastevents" }}</h5> {{> eventList pastEvents }} </div> </div> <div x-show="currentTab === 'groups'"> <div class="card mt-4 mb-4" id="eventGroups"> - <h5 class="card-header">Event groups</h5> + <h5 class="card-header">{{t "common.eventgroups" }}</h5> <div class="list-group list-group-flush"> {{#if eventGroups}} {{#each eventGroups}} <a href="/group/{{this.id}}" class="list-group-item list-group-item-action"> <i class="fas fa-fw fa-calendar-alt"></i> <strong>{{this.name}}</strong> - <span class="badge badge-secondary ml-2">{{this.numberOfEvents}} {{plural this.numberOfEvents "event(s)"}}</span> + <span class="badge badge-secondary ml-2">{{plural "views.publiceventlist.numoevents" this.numberOfEvents }}</span> </a> {{/each}} {{else}} - <div class="list-group-item">No groups!</div> + <div class="list-group-item">{{t "views.publiceventlist.nogroups" }}</div> {{/if}} </div> |