diff --git a/c3l_membership/forms.py b/c3l_membership/forms.py --- a/c3l_membership/forms.py +++ b/c3l_membership/forms.py @@ -1,5 +1,6 @@ from datetime import date +from flask_babel import lazy_gettext from flask_wtf import FlaskForm from wtforms import BooleanField, DateField, RadioField, StringField, SubmitField from wtforms.validators import Email, InputRequired, Length, Optional @@ -8,84 +9,96 @@ from wtforms.validators import Email, In class MembershipForm(FlaskForm): username = StringField( - "Username", - validators=[InputRequired("This field is required!"), Length(max=255)], + lazy_gettext("Username"), + validators=[ + InputRequired(lazy_gettext("This field is required!")), + Length(max=255), + ], ) email = StringField( - "E-Mail", validators=[InputRequired("This field is required!"), Email()] + lazy_gettext("E-Mail"), + validators=[InputRequired(lazy_gettext("This field is required!")), Email()], ) fullname = StringField( - "Full Name", - validators=[InputRequired("This field is required!"), Length(max=65536)], + lazy_gettext("Full Name"), + validators=[ + InputRequired(lazy_gettext("This field is required!")), + Length(max=65536), + ], ) membership = RadioField( - "Membership Plan", - validators=[InputRequired("Please select one of the options!")], + lazy_gettext("Membership Plan"), + validators=[InputRequired(lazy_gettext("Please select one of the options!"))], choices=[ ( "regular", - "Regular membership - Membership with voting rights on the general assembly.", + lazy_gettext( + "Regular membership - Membership with voting rights on the general assembly." + ), ), ( "supporting", - "Supporting membership - Membership without voting rights on the general assembly.", + lazy_gettext( + "Supporting membership - Membership without voting rights on the general assembly." + ), ), ], ) student = BooleanField( - ("I am a student and would like to have the reduced membership fees."), + lazy_gettext( + "I am a student and would like to have the reduced membership fees." + ), ) starving = BooleanField( - ( + lazy_gettext( "I am a starving hacker and cannot afford the membership! (Please get in touch with us at info@c3l.lu before filling out this membership form)" ) ) payment = RadioField( - "Payment Options", - validators=[InputRequired("Please select one of the options!")], + lazy_gettext("Payment Options"), + validators=[InputRequired(lazy_gettext("Please select one of the options!"))], ) - birthday = DateField("Birthday") + birthday = DateField(lazy_gettext("Birthday")) street = StringField( - "Nr., Street", + lazy_gettext("Nr., Street"), validators=[Length(max=4000)], ) zip = StringField( - "Postal Code", + lazy_gettext("Postal Code"), validators=[Length(max=30)], ) city = StringField( - "City/Town", + lazy_gettext("City/Town"), validators=[Length(max=500)], ) state = StringField( - "State/County/Province", + lazy_gettext("State/County/Province"), validators=[Length(max=500)], ) country = StringField( - "Country", + lazy_gettext("Country"), validators=[Length(max=500)], ) terms = BooleanField( - ( - "By submitting this membership application, you agree to have read and understood " - 'the statutes of the Chaos Computer Club Lëtzebuerg A.S.B.L.' + lazy_gettext( + 'By submitting this membership application, you agree to have read and understood the statutes of the Chaos Computer Club Lëtzebuerg A.S.B.L.' ), validators=[InputRequired()], ) minor_member = BooleanField( - ( + lazy_gettext( "I am under 18 years of age and have the approval of my legal representative." - ), + ) ) - submit = SubmitField("Become a member") + submit = SubmitField(lazy_gettext("Become a member")) diff --git a/c3l_membership/templates/index.html b/c3l_membership/templates/index.html --- a/c3l_membership/templates/index.html +++ b/c3l_membership/templates/index.html @@ -3,7 +3,7 @@ - C3L Membership Application + {% trans %}C3L Membership Application{% endtrans %} @@ -15,12 +15,14 @@
-

Membership Application

-

How to use this form

+

{% trans %}Membership Application{% endtrans %}

+

{% trans %}How to use this form{% endtrans %}

- Fill out this form and click on "Become a member". Afterwards you will be presented with a PDF, which you have - to send to info@c3l.lu or bring it to one of our next events. Print it or save it to your local hardware, - because we don't save a copy on our servers for data protection reasons! + {% trans %} + Fill out this form and click on "Become a member". Afterwards you will be presented with a PDF, which you have + to send to info@c3l.lu or bring it to one of our next events. Print it or save it to your local hardware, + because we don't save a copy on our servers for data protection reasons! + {% endtrans %}

{% if form.errors %} {% for fieldname, errors in form.errors.items() %} @@ -32,7 +34,7 @@
{{ form.hidden_tag() }} - Required information + {% trans %}Required information{% endtrans %}
{{ form.username.label }} @@ -73,101 +75,107 @@
-

What's difference between the different membership options?

-

All the options include to following benefits:

+

{% trans %}What's difference between the different membership options?{% endtrans %}

+

{% trans %}All the options include to following benefits:{% endtrans %}

-

Becoming a regular member gives you these additional benefits:

-
    -
  • Voting rights on general assemblys
  • -
  • Access to our internal mailinglist
  • -
-

- You can read more on the membership - here. -

-

What are the membership fees?

-

- The membership fee for the regular membership is {{ config["REGULAR_FEE"] }}€ per year. The membership - fee for the supporting membership is {{ config["SUPPORTING_FEE"] }}€ per year. If you are a student, - all membership fees are {{ config["SUPPORTING_FEE"] }}€ per year. For that please select the - corresponding option. -

-

I cannot afford the membership?

-

- If you cannot afford the membership, please contact us via info@c3l.lu first, before filling out the - membership form. We will try to find a solution together. -

-
- -
-
- {{ form.payment.label }} - {% for option in form.payment %} - - {% endfor %} -
-
- Additional information -
-
- {{ form.birthday.label }} - {{ form.birthday(class="pure-u-1-1") }} -
-
-
-
- {{ form.street.label }} - {{ form.street(class="pure-u-1-1") }} -
-
-
-
- {{ form.zip.label }} - {{ form.zip(class="pure-u-1-1") }} -
-
-
-
- {{ form.city.label }} - {{ form.city(class="pure-u-1-1") }} -
-
-
-
- {{ form.state.label }} - {{ form.state(class="pure-u-1-1") }} -
-
-
-
- {{ form.country.label }} - {{ form.country(class="pure-u-1-1") }} -
-
- - - -
{{ form.submit }}
- - - -
- - - +

{% trans %}Becoming a regular member gives you these additional benefits:{% endtrans%}

+

+

+ {% trans %} + You can read more on the membership here. + {% endtrans %} +

+

{% trans %}What are the membership fees?{% endtrans %}

+

+ {% trans regular_fee=config["REGULAR_FEE"], supporting_fee=config["SUPPORTING_FEE"] %} + The membership fee for the regular membership is {{ regular_fee }}€ per year. The membership + fee for the supporting membership is {{ supporting_fee }}€ per year. If you are a student, + all membership fees are {{ supporting_fee }}€ per year. For that please select the + corresponding option. + {% endtrans %} +

+

{% trans %}I cannot afford the membership?{% endtrans %}

+

+ {% trans %} + If you cannot afford the membership, please contact us via info@c3l.lu first, before filling out the + membership form. We will try to find a solution together. + {% endtrans %} +

+ + +
+
+ {{ form.payment.label }} + {% for option in form.payment %} + + {% endfor %} +
+
+ {% trans %}Additional information{% endtrans %} +
+
+ {{ form.birthday.label }} + {{ form.birthday(class="pure-u-1-1") }} +
+
+
+
+ {{ form.street.label }} + {{ form.street(class="pure-u-1-1") }} +
+
+
+
+ {{ form.zip.label }} + {{ form.zip(class="pure-u-1-1") }} +
+
+
+
+ {{ form.city.label }} + {{ form.city(class="pure-u-1-1") }} +
+
+
+
+ {{ form.state.label }} + {{ form.state(class="pure-u-1-1") }} +
+
+
+
+ {{ form.country.label }} + {{ form.country(class="pure-u-1-1") }} +
+
+ + + +
{{ form.submit }}
+ + + +
+ + + diff --git a/c3l_membership/templates/member.html b/c3l_membership/templates/member.html --- a/c3l_membership/templates/member.html +++ b/c3l_membership/templates/member.html @@ -1,7 +1,7 @@ - Membership Application - {{ form.username.data }} + {% trans username=form.username.data %}Membership Application - {{ username }}{% endtrans %} @@ -13,88 +13,88 @@ -

Membership Application

+

{% trans %}Membership Application{% endtrans %}

-
Username:
+
{% trans %}Username:{% endtrans %}
{{ form.username.data }}
-
E-Mail:
+
{% trans %}E-Mail:{% endtrans %}
{{ form.email.data }}
-
Full Name:
+
{% trans %}Full Name:{% endtrans %}
{{ form.fullname.data }}
-
Birthday:
+
{% trans %}Birthday:{% endtrans %}
{{ form.birthday.data }}
-
Street:
-
{{ form.street.data if form.street.data else "Not specified"|safe }}
+
{% trans %}Street:{% endtrans %}
+
{{ form.street.data if form.street.data else ("" + _("Not specified") + "")|safe }}
-
ZIP-Code:
-
{{ form.zip.data if form.zip.data else "Not specified"|safe }}
+
{% trans %}ZIP-Code:{% endtrans %}
+
{{ form.zip.data if form.zip.data else ("" + _("Not specified") + "")|safe }}
-
City:
-
{{ form.city.data if form.city.data else "Not specified"|safe }}
+
{% trans %}City:{% endtrans %}
+
{{ form.city.data if form.city.data else ("" + _("Not specified") + "")|safe }}
-
State/County/Province:
-
{{ form.state.data if form.state.data else "Not specified"|safe }}
+
{% trans %}State/County/Province:{% endtrans %}
+
{{ form.state.data if form.state.data else ("" + _("Not specified") + "")|safe }}
-
Country:
-
{{ form.country.data if form.country.data else "Not specified"|safe }}
+
{% trans %}Country:{% endtrans %}
+
{{ form.country.data if form.country.data else ("" + _("Not specified") + "")|safe }}
-
Membership Plan:
+
{% trans %}Membership Plan:{% endtrans%}
{{ form.membership.data }}
-
Student:
-
{{ "Yes" if form.student.data else "No" }}
+
{% trans %}Student:{% endtrans %}
+
{{ _("Yes") if form.student.data else _("No") }}
-
Starving:
-
{{ "Yes" if form.starving.data else "No" }}
+
{% trans %}Starving:{% endtrans %}
+
{{ _("Yes") if form.starving.data else _("No") }}
-
Payment:
+
{% trans %}Payment:{% endtrans %}
{{ form.payment.data }}
-
Agreed to Terms & Conditions:
-
{{ "Yes" if form.terms.data else "No" }}
+
{% trans %}Agreed to Terms & Conditions:{% endtrans %}
+
{{ _("Yes") if form.terms.data else _("No") }}
-
Minor Member:
-
{{ "Yes" if form.minor_member.data else "No" }}
+
{% trans %}Minor Member:{% endtrans %}
+
{{ _("Yes") if form.minor_member.data else _("No") }}
-

Send this document to the Chaos Computer Club Lëtzebuerg!

+

{% trans %}Send this document to the Chaos Computer Club Lëtzebuerg!{% endtrans %}

{% if form.payment.data == 'wire transfer' %} {% elif form.payment.data == 'cash' %} -

Please bring {{ price }}€ with you the next time you meet us!

+

{% trans %}Please bring {{ price }}€ with you the next time you meet us!{% endtrans %}

{% elif form.payment.data == 'bitcoin' %}
{% set bitcoin_url="bitcoin:" + config["BITCOIN_ADDRESS"] + "?amount={amount}&label=Membership Fee {year} {username}&message=Membership Fee {year} {username}".format(amount=price, year=year, username=form.username.data) %} @@ -104,10 +104,10 @@
    -
  • Address: {{ config["ETHEREUM_ADDRESS"] }}
  • -
  • Label: Membership Fee
  • -
  • Message: {{ year }} {{ form.username.data }}
  • -
  • Amount: {{ price }} ETH
  • +
  • {% trans %}Address:{% endtrans %} {{ config["ETHEREUM_ADDRESS"] }}
  • +
  • {% trans %}Label:{% endtrans %} Membership Fee
  • +
  • {% trans %}Message:{% endtrans %} {{ year }} {{ form.username.data }}
  • +
  • {% trans %}Amount:{% endtrans %} {{ price }} ETH
{% set ethereum_url=config["ETHEREUM_ADDRESS"] %} @@ -117,46 +117,46 @@
    -
  • Address: {{ config["MONERO_ADDRESS"] }}
  • -
  • Label: Membership Fee
  • -
  • Message: {{ year }} {{ form.username.data }}
  • -
  • Amount: {{ price }} XMR
  • -
-
- {% set monero_url=config["MONERO_ADDRESS"] %} -
-
- {% elif form.payment.data == 'zcash' %} -
-
-
    -
  • Address: {{ config["ZCASH_ADDRESS"] }}
  • -
  • Label: Membership Fee
  • -
  • Message: {{ year }} {{ form.username.data }}
  • -
  • Amount: {{ price }} ZEC
  • -
-
- {% set zcash_url=config["ZCASH_ADDRESS"] %} -
-
- {% elif form.payment.data == 'digicash' %} -
- {% set digicash_url='https://pos.digica.sh/qrcode/generator?merchantId=CHAOSPC1&amount={amount}&transactionReference=Membership_{username}'.format(amount=price, username=form.username.data) %} -

Pay with digicash!

-
-
- {% endif %} -
-

Luxembourg, the

-

- {{ "Signature of your legal representative" if form.minor_member.data else "Your signature" }} -

-
-
-
- Chaos Computer Club Lëtzebuerg A.S.B.L.
- Halle Victor Hugo - 60 Avenue Victor Hugo L-1750 Luxembourg (Europe)
- info@c3l.lu - http://c3l.lu -
- - +
  • {% trans %}Address:{% endtrans %} {{ config["MONERO_ADDRESS"] }}
  • +
  • {% trans %}Label:{% endtrans %} Membership Fee
  • +
  • {% trans %}Message:{% endtrans %} {{ year }} {{ form.username.data }}
  • +
  • {% trans %}Amount:{% endtrans %2} {{ price }} XMR
  • + +
    + {% set monero_url=config["MONERO_ADDRESS"] %} +
    +
    + {% elif form.payment.data == 'zcash' %} +
    +
    + +
    + {% set zcash_url=config["ZCASH_ADDRESS"] %} +
    +
    + {% elif form.payment.data == 'digicash' %} +
    + {% set digicash_url='https://pos.digica.sh/qrcode/generator?merchantId=CHAOSPC1&amount={amount}&transactionReference=Membership_{username}'.format(amount=price, username=form.username.data) %} +

    {% trans %}Pay with digicash!{% endtrans %}

    +
    +
    + {% endif %} +
    +

    {% trans %}Luxembourg, the{% endtrans %}

    +

    + {{ _("Signature of your legal representative") if form.minor_member.data else _("Your signature") }} +

    +
    + + + diff --git a/c3l_membership/views.py b/c3l_membership/views.py --- a/c3l_membership/views.py +++ b/c3l_membership/views.py @@ -3,6 +3,7 @@ import subprocess from datetime import date from flask import Blueprint, current_app, g, render_template, request +from flask_babel import gettext from flask_weasyprint import HTML, render_pdf from .forms import MembershipForm @@ -26,14 +27,17 @@ def pull_lang_code(endpoint, values): def index(): form = MembershipForm() - choices = [("cash", "by cash"), ("wire transfer", "by wire transfer")] + choices = [ + ("cash", gettext("by cash")), + ("wire transfer", gettext("by wire transfer")), + ] for k, v in ( - ("DIGICASH_ENABLED", ("digicash", "by DigiCash")), - ("BITCOIN_ENABLED", ("bitcoin", "by bitcoin")), - ("ETHEREUM_ENABLED", ("ethereum", "by ethereum")), - ("MONERO_ENABLED", ("monero", "by monero")), - ("ZCASH_ENABLED", ("zcash", "by zcash")), + ("DIGICASH_ENABLED", ("digicash", gettext("by DigiCash"))), + ("BITCOIN_ENABLED", ("bitcoin", gettext("by bitcoin"))), + ("ETHEREUM_ENABLED", ("ethereum", gettext("by ethereum"))), + ("MONERO_ENABLED", ("monero", gettext("by monero"))), + ("ZCASH_ENABLED", ("zcash", gettext("by zcash"))), ): if current_app.config[k]: choices.append(v)