Unverified Commit 98340b55 authored by Tharyrok's avatar Tharyrok
Browse files

Use i18n

parent 356dd3c2
......@@ -4,8 +4,10 @@ import locale
import re
from flask import Flask, redirect, request, render_template
app = Flask(__name__)
from flask.ext.babel import Babel, gettext
app = Flask(__name__)
babel = Babel(app)
LANGUAGE_CODES = ('fr', 'en', 'nl')
......@@ -96,6 +98,20 @@ def parse_http_accept_language(accept):
return None
@babel.localeselector
def get_locale():
lang = None
# HttpAcceptLanguageMiddleware
if lang is None:
lang = parse_http_accept_language(request.headers.get('Accept-Language', ''))
# DefaultLanguageMiddleware
if lang is None:
lang = 'en'
return lang
@app.route('/')
def language_detection():
lang = None
......
[jinja2: **/templates/**.html]
extensions=jinja2.ext.autoescape,jinja2.ext.with_
<section id="diyisp" class="bigfat diyisp">
<div class="slogan">
<div class="wow bounceInUp black-title" data-wow-delay="0.3s">
<h3>Neutrinet is part of the <a href="http://www.diyisp.org/">diy-isp</a> movement.</h3>
<h4>See some of the other members at <a href="https://db.ffdn.org/">db.ffdn.org</a></h4>
</div>
</div>
</section>
\ No newline at end of file
<section class="footer">
<div class="wow fadeInUp" data-wow-delay="0.5s">
<div class="page-scroll marginbot-30">
<a href="#intro" id="totop" class="btn btn-circle">
<i class="fa fa-angle-double-up animated"></i>
</a>
</div>
<div class="container">
<div class="row">
<div class="wow fadeInDown col-xs-6" data-wow-delay="0.5s">
<small>
<p><a href="https://creativecommons.org/licenses/by-sa/2.0/"><img src="{{ url_for('static', filename='img/by-sa.png') }}" /></a></p>
Pinguins is CC-BY by <a href="http://www.flickr.com/photos/tubby/435313920/">Ben Tubby</a>
<br>
Panda is CC-BY-SA by <a href="https://www.flickr.com/photos/fortherock/3898359035">fortherock</a>
<br>
Double rainbow is CC-BY by <a href="http://commons.wikimedia.org/wiki/Rainbow#/media/File:Double-Rainbow.jpg">Leonardo Weiss</a>
</small>
</div>
<div class="wow fadeInDown col-xs-6" data-wow-delay="0.5s">
<h4><br><a href="https://github.com/neutrinet/frontend">Source code</a></h4>
<h4><a href="mailto:contact@neutrinet.be">Contact</a><br></h4>
</div>
</div>
</div>
</div>
</section>
\ No newline at end of file
<section id="fritedombox" class="fritedombox">
<div class="slogan">
<div class="wow fadeInDown black-title" data-wow-delay="0.1s">
<h2>The Internet Cube</h2>
<h3>Your own part of the <span class="invert">Internet</span></h3>
</div>
<div class="wow fadeInUp" data-wow-delay="0.4s">
<div class="vpn-promotion">
<h3 class="boxed-grey" style="text-transform: none">We are working hard to provide you with a <span class="invert">plug'n'play</span> and <span class="invert">easy to use</span> self hosting server which enables you to manage your emails, your website and many other Internet services
while keeping all your personal data on your own box at home.
<br>
<br>
<i><small>Everything is inplemented using free softwares like <a href="https://yunohost.org/">YUNOHOST</a> and an open hardware board from <a href="https://www.olimex.com/">Olimex</a></small></i>. <br/><a href="https://internetcu.be/">More details</a></h3>
</div>
</div>
</div>
<div style="margin-top: 70px" class="wow fadeInUp" data-wow-delay="0.5s">
<a href="https://cube.neutrinet.be" class="btn btn-lg btn-primary">Participate to the group order</a>
</div>
<div class="fritedombox-friends">
<div class="wow fadeInUp" data-wow-delay="0.6s">
<h5>In association with</h5>
<a href="https://yunohost.org/"><img src="{{ url_for('static', filename='img/yunohost.png') }}" style="padding-right: 7px;"></a>
<a href="https://ldn-fai.net/"><img src="{{ url_for('static', filename='img/ldn.png') }}"></a>
<h6>And many others &lt;3</h6>
</div>
</div>
</section>
\ No newline at end of file
<section id="getinvolved" class="getinvolved home-section text-center bg-gray">
<div class="heading-about">
<div class="container">
<div class="row">
<div class="col-lg-8 col-lg-offset-2">
<div class="wow bounceInDown" data-wow-delay="0.4s">
<div class="section-heading">
<h2>Get involved!</h2>
<h3>Like any free software, Neutrinet is what you make of it, join us in our adventure!</h3>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="organisation">
<div class="col-sm-4 col-md-4">
<div class="well">
<h3>Structure</h3>
<p>Neutrinet is structured in a series of different hubs each one being focused on different part of our activities. The idea is to makes what is happening in Neutrinet more obvious rather than creating rigid entities.</p>
<p>For now, we have 4 hubs but some additional ones might be added in the future (like one for communication).</p>
</div>
</div>
<div class="col-sm-4 col-md-4">
<div class="well">
<h3>Coordinator</h3>
<p>Each hub have a coordinator, someone responsible for communication between the hub and everything else, introducing new volunteers and making sure that everything is moving smoothly.</p>
<p>The coordinator isn't especially an expert on the subject.</p>
</div>
</div>
<div class="col-sm-4 col-md-4">
<div class="well">
<h3>How to participate</h3>
<p>If you want to give a hand or get involve into a hub, simply contact its coordinator. You don't have to be 100% sure about what you want to do, the coordinator is here to help and guide you even if you don't know what you can do.</p>
<p>If you are not sure about what you can do or simply what were are doing every hub has a link to its own page with more informations (details activities, todo list, who is involve).</p>
<p>You can also ask on <a href="http://lists.entransition.be/wws/subscribe/neutrinet">the mailing list</a>, on <a href="mailto:contact@neutrinet.be">contact@neutrinet.be</a>, talk with a coordinator of a hub or come at <a href="#meetings">a meeting</a>.</p>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-2 col-lg-offset-5">
<hr class="marginbot-50">
</div>
</div>
<div class="row">
<div class="col-sm-3 col-md-3">
<div class="wow fadeInLeft" data-wow-delay="0.1s">
<div class="service-box">
<div class="service-icon">
<span class="fa fa-edit">
</div>
<div class="service-desc">
<h5>Administrative Hub</h5>
<p class="description">This hub is responsible for everything regarding administrative work, both reactive (accounting, ASBL/VZW stuff, banks, ...) and proactive (member listing, financial planing, ...) and the software development of our backoffice.</p>
<p style="margin-bottom: 5px;">
<b>Coordinator:</b> Bram <a
href="mailto:administrative@worlddomination.be">contact</a><br> <b>Mailing list:</b><br><a
href="http://lists.entransition.be/wws/subscribe/neutrinet-admin">neutrinet-admin@lists.entransition.be</a><br> <b>Required knowledge:</b> none<br> <b>Good to have knowledge:</b>
</p>
<ul>
<li>ASBL/VZW handling</li>
<li>accounting (basic)</li>
<li>banks</li>
<li>for backoffice tools development: python/django</li>
</ul>
</div>
</div>
</div>
</div>
<div class="col-sm-3 col-md-3">
<div class="wow fadeInUp" data-wow-delay="0.1s">
<div class="service-box">
<div class="service-icon">
<span class="fa fa-cube">
</div>
<div class="service-desc">
<h5>Internet Cube Hub</h5>
<p class="description">This hub handle to mission of providing our (future) members with a running <a href="http://internetcu.be">Internet Cube</a> and support.<br>This include: group order, communication with the participants, logistic, installation and support</p>
<p style="margin-bottom: 5px;">
<b>Coordinator:</b> Bram <a href="mailto:cube@worlddomination.be">contact</a><br> <b>Mailing list:</b><br><a
href="http://lists.entransition.be/wws/subscribe/neutrinet-cube">neutrinet-cube@lists.entransition.be</a><br> <b>Required knowledge:</b> none<br> <b>Good to have knowledge:</b>
</p>
<ul>
<li>how to talk about the project and answering common questions</li>
<li>for installation: basic linux system administration skill (using of a shell, dd, nmap)
</li>
<li>know the classical bugs and how to fix it or who to reach</li>
<li>for backoffice tools development: python/django and java</li>
</ul>
</div>
</div>
</div>
</div>
<div class="col-sm-3 col-md-3">
<div class="wow fadeInUp" data-wow-delay="0.1s">
<div class="service-box">
<div class="service-icon">
<span class="fa fa-server">
</div>
<div class="service-desc">
<h5>Infrastructure Hub</h5>
<p class="description">This hub is responsible for maintaining our technical infrastructure up and running and its evolution (installing new services, configuring new servers, exploring hosting possibilities).</p>
<p style="margin-bottom: 5px;">
<b>Coordinator:</b> Tharyrok <a
href="mailto:tharyrok-neutrinet@mixmail.fr">contact</a><br> <b>Mailing list:</b><br><a
href="http://lists.entransition.be/wws/subscribe/neutrinet-tech">neutrinet-tech@lists.entransition.be</a><br> <b>Required knowledge:</b> linux system administration (debian)<br> <b>Good to have knowledge:</b>
</p>
<ul>
<li>openvpn</li>
<li>networking skill (rooting, bgp, iptables)</li>
<li>classical deployement workflow (php, python, ruby, other)</li>
<li>jvm administration (zookeeper, maven) (for ISP-ng for the VPN)</li>
</ul>
</div>
</div>
</div>
</div>
<div class="col-sm-3 col-md-3">
<div class="wow fadeInRight" data-wow-delay="0.1s">
<div class="service-box">
<div class="service-icon">
<span class="fa fa-database">
</div>
<div class="service-desc">
<h5>Datacenter Hub</h5>
<p class="description">This hub explore and make do-able the possibilities of having a presence in a datacenter.</p>
<p style="margin-bottom: 5px;">
<b>Coordinator:</b> Quentin<br> <b>Mailing list:</b><br><a
href="http://lists.entransition.be/wws/subscribe/neutrinet-dc">neutrinet-dc@lists.entransition.be</a><br> <b>Required knowledge:</b> either how to handle to human part of the technical part
</p>
</div>
</div>
</div>
</div>
</div>
<div class="row getinvolved-links">
<div class="col-sm-3 col-md-3">
<div class="wow fadeInLeft" data-wow-delay="0.1s">
<div class="service-box">
<div class="service-desc">
<a class="btn btn-primary" href="hubs/administrative.html">More information</a>
</div>
</div>
</div>
</div>
<div class="col-sm-3 col-md-3">
<div class="wow fadeInUp" data-wow-delay="0.1s">
<div class="service-box">
<div class="service-desc">
<div class="page-scroll marginbot-30">
<a class="btn btn-primary" href="hubs/internet_cube.html">More information</a>
</div>
</div>
</div>
</div>
</div>
<div class="col-sm-3 col-md-3">
<div class="wow fadeInUp" data-wow-delay="0.1s">
<div class="service-box">
<div class="service-desc">
<div class="page-scroll marginbot-30">
<a class="btn btn-primary" href="hubs/infrastructure.html">More information</a>
</div>
</div>
</div>
</div>
</div>
<div class="col-sm-3 col-md-3">
<div class="wow fadeInRight" data-wow-delay="0.1s">
<div class="service-box">
<div class="service-desc">
<a class="btn btn-primary" href="hubs/dc.html">More information</a>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="heading-about">
<div class="container">
<div class="row">
<div class="col-lg-8 col-lg-offset-2">
<div class="wow bounceInDown" data-wow-delay="0.4s">
<div class="section-heading">
<hr>
<h3>And our general means of communication:</h3>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-lg-2 col-lg-offset-5">
<hr class="marginbot-50">
</div>
</div>
<div class="row">
<div class="col-sm-3 col-md-3">
<div class="wow fadeInLeft" data-wow-delay="0.1s">
<div class="service-box">
<div class="service-icon">
<span class="glyphicon glyphicon-envelope">
</div>
<div class="service-desc">
<h5>Subscribe to our mailing list</h5>
<p>Our mailing list is one of our central communication media, where everything is announced, don't hesitate to join and introduce yourself!</p>
</div>
</div>
</div>
</div>
<div class="col-sm-3 col-md-3">
<div class="wow fadeInUp" data-wow-delay="0.1s">
<div class="service-box">
<div class="service-icon">
<span class="glyphicon glyphicon-heart" style="color: pink">
</div>
<div class="service-desc">
<h5>Come to our meetings</h5>
<p>We meet every 2 to 3 weeks to talk about our progress and keep our motivation. Everyone is free to join!</p>
</div>
</div>
</div>
</div>
<div class="col-sm-3 col-md-3">
<div class="wow fadeInUp" data-wow-delay="0.1s">
<div class="service-box">
<div class="service-icon">
<span class="glyphicon glyphicon-user">
</div>
<div class="service-desc">
<h5>Become a member</h5>
<p>Becoming a member of Neutrinet is both a way for you to get involved easily, gaining vote possibility and a way to support a bit our, your, project financially.</p>
</div>
</div>
</div>
</div>
<div class="col-sm-3 col-md-3">
<div class="wow fadeInRight" data-wow-delay="0.1s">
<div class="service-box">
<div class="service-icon">
<span class="glyphicon glyphicon-list-alt">
</div>
<div class="service-desc">
<!-- <h5>Talk with us on IRC</h5>
<p>Another place of life of our community is our <a href="https://en.wikipedia.org/wiki/Internet_Relay_Chat">IRC</a> channel. Feel free to join anytime! (We make sure that all important discussion reach the mailing list ultimately)</p> -->
<!-- oops, wiki link is missing: quick hack to the rescue! -->
<h5>Contribute to our Wiki</h5>
<p>Our wiki is our main tool of organisation, we centralise all the important information on it and use it to manage activities like our meetings.</p>
</div>
</div>
</div>
</div>
</div>
<div class="row getinvolved-links">
<div class="col-sm-3 col-md-3">
<div class="wow fadeInLeft" data-wow-delay="0.1s">
<div class="service-box">
<div class="service-desc">
<a class="btn btn-primary" target="_blank"
href="http://lists.entransition.be/wws/subscribe/neutrinet">Subscribe</a>
</div>
</div>
</div>
</div>
<div class="col-sm-3 col-md-3">
<div class="wow fadeInUp" data-wow-delay="0.1s">
<div class="service-box">
<div class="service-desc">
<div class="page-scroll marginbot-30">
<a class="btn btn-primary" href="#meetings">See the next meeting</a>
</div>
</div>
</div>
</div>
</div>
<div class="col-sm-3 col-md-3">
<div class="wow fadeInUp" data-wow-delay="0.1s">
<div class="service-box">
<div class="service-desc">
<div class="page-scroll marginbot-30">
<a class="btn btn-primary" href="#howtobecomeamember">How to become a member</a>
</div>
</div>
</div>
</div>
</div>
<div class="col-sm-3 col-md-3">
<div class="wow fadeInRight" data-wow-delay="0.1s">
<div class="service-box">
<div class="service-desc">
<!-- <a class="btn btn-primary" target="_blank" href="https://webchat.freenode.net/?channels=%23neutrinet&uio=d4">freenode#neutrinet</a> -->
<a class="btn btn-primary" target="_blank" href="//neutrinet.be/index.php">Go on our wiki</a>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
\ No newline at end of file
<section id="howtobecomeamember" class="howtobecomeamember home-section text-center bg-gray">
<div class="heading-about">
<div class="container">
<div class="row">
<div class="col-lg-8 col-lg-offset-2">
<div class="wow fadeInDown" data-wow-delay="0.4s">
<div class="section-heading">
<h2>Become a member</h2>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="container blabla">
<div class="row">
<div class="col-md-5 col-md-offset-2">
<div class="wow fadeInLeft" data-wow-delay="0.3s">
<h3>It's easy!</h3>
<div class="details">
<p>Becoming a member of Neutrinet is simple: pay your annual membership fee (25€ or more) either:</p>
<ul>
<li>to a member of our administrative council at a <a href="#meetings">meeting</a></li>
<li>to our bank by wire transfer - see the information on the right - and tell us <a href="mailto:contact@neutrinet.be">by email</a>.</li>
</ul>
</div>
</div>
</div>
<div class="col-md-3">
<div class="wow fadeInRight" data-wow-delay="0.3s">
<div class="bank">
<h4>Bank details:</h4>
<p>
Bank: RecordBank<br>
Name: Neutrinet ASBL<br>
Communication: cotisation of ...<br>
IBAN: BE52 6528 3497 8409<br>
BIC: HBKABE22<br>
</p>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="wow fadeInUp" data-wow-delay="0.4s">
<div class="details">
<center>
<p><a href="http://www.ejustice.just.fgov.be/cgi_loi/loi_a1.pl?language=fr&la=F&table_name=loi&cn=1921062701&&caller=list&F&fromtab=loi&tri=dd+AS+RANK&rech=1&numero=1&sql=(text+contains+(%27%27))#Art.10" target="_blank">Belgium law</a> requires us to ask you for your <b>first name</b>, <b>last name</b> and <b>home address</b>.</p>
</center>
<hr>
<p>While we are not expecting spontaneous unknown new members, we recommended that before becoming a member of the Neutrinet ASBL/VZW you spend a bit of time discovering what we are doing and in the same time letting us know you a bit better :)</p>
<p><b>It is not mandatory to be a member of the ASBL/VZW to contribute and participate in the life of Neutrinet</b> but this is a nice way to support us. It is mandatory if you want to subscribe to one of our services.</p>
<p><i>If you have subscribed to the VPN service, you are already a member and don't need to pay your the membership fee separately.</i></p>
</div>
</div>
</div>
</div>
</div>
</section>
\ No newline at end of file
<section id="meetings" class="meetings text-center">
<div class="slogan">
</div>
<div class="container">
<div class="row">
<div class="col-md-6">
<div class="wow fadeInUp" data-wow-delay="0.3s">
<h3>Next meeting</h3>
<div class="row">
<div id="next-meetings" class="col-md-10 col-md-offset-1">
</div>
</div>
<h3>Previous meetings</h3>
<div class="row">
<div id="previous-meetings" class="col-md-10 col-md-offset-1">
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="wow fadeInUp" data-wow-delay="0.3s">
<h3>Common meeting locations</h3>
<div id="osm"></div>
</div>
</div>
</div>
</div>
</section>
\ No newline at end of file
<nav class="navbar navbar-custom navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header page-scroll">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-main-collapse">
<i class="fa fa-bars"></i>
</button>
<a class="navbar-brand" href="index.html">
<img id="neutrinet-logo" title="neutrinet logo" class="svg" src="{{ url_for('static', filename='img/logo-neutrinet.svg') }}" />
</a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse navbar-right navbar-main-collapse">
<ul class="nav navbar-nav">
<li class="active"><a href="#intro">Home</a></li>
<li><a href="#what">What</a></li>
<li><a href="#fritedombox">Cube</a></li>
<li><a href="#vpn">VPN</a></li>
<li><a href="#getinvolved">Get involved!</a></li>
<li><a href="#meetings">Meetings</a></li>
<li><a href="#howtobecomeamember">Membership</a></li>
<li><a href="/fr">FR</a></li>
<li><a href="/nl">NL</a></li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
<!-- /.container -->
</nav>
\ No newline at end of file
<section id="panda" class="bigfat panda">
<div class="slogan">
<div class="wow fadeInUp" data-wow-delay="0.3s">
<h4>Wannes wanted a panda</h4>
</div>
</div>
</section>
\ No newline at end of file
<section id="principles" class="home-section text-center bg-gray">
<div class="wow fadeInDown" data-wow-delay="0.1s">
<h1>principles</h1>
</div>
<div class="wow fadeInUp" data-wow-delay="0.1s">
<div class="citation">
<blockquote>The association aims at maintaining, developing and promoting the use of information exchange networks, in accordance with the principle of <b>network neutrality</b> and defense of <b>fundamental human rights</b>, notably the rights to
freedom of speech, access to information and respect for privacy by supporting and empowering both individuals and communities.</blockquote>
</div>
</div>
<h5 class="under-citation">Article number 4 of our <a href="https://neutrinet.be/index.php?title=Statuts">statutes</a></h5>
<br>
<hr>
<br>
<div class="container">
<div class="row">
<div class="col-md-5">
<div class="wow fadeInDown" data-wow-delay="0.5s">
<img src="img/ffdn.png" style="width: 90%">
</div>
</div>
<div class="col-md-7">
<div class="wow fadeInDown text-left" data-wow-delay="0.5s">
<h3>Neutrinet is a member of <a href="https://www.ffdn.org/">FDN Federation</a> and has ratified <a href="https://www.ffdn.org/fr/charte">its chart</a></h3>
<p>The FDN Federation is a federation of Non-Profit Internet Service Providers sharing common values: volunteer-based, solidarity-driven, democratic and non-profit working; defense and promotion of Net neutrality.</p>
</div>
</div>
</div>
</div>
</section>
\ No newline at end of file
<section id="intro" class="bigfat intro">
<div class="slogan">
<h2>Neutrinet</h2>
<h4>A Belgian associative Internet Service Provider, by its users for its users</h4>
</div>
</section>
\ No newline at end of file
<title>Neutrinet − Belgium associative ISP</title>
<section id="vpn" class="vpn">
<div class="slogan">
<div class="wow fadeInUp black-title" style="background: rgba(0,0,0,0.9)" data-wow-delay="0.1s">
<h1 class="vpn-title">VPN</h1>
<div class="container">
<div class="row">
<div class="col-lg-6">
<h3 class="vpn-line2">Trapped on a non-neutral Internet connection?</h2>
</div>
<div class="col-lg-6">
<h3 class="vpn-line1">Want a public IP address but your provider won't give you one?</h2>
</div>
</div>
</div>
<h3 class="solution invert">Neutrinet has the solution for you!</h3>
</div>
<div class="wow bounceInUp" data-wow-delay="0.4s">
<div class="vpn-promotion">
<h3 class="boxed-grey">Get your own <span class="invert">Net-Neutralizer VPN connection™</span> with your own public IP space for 8€/month!</h3>
</div>
</div>
</div>