mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-04-29 10:10:19 +00:00
networks: Fix i18n for wizard forms
- Using Markup on format_lazy objects seems to convert negate their lazy behavior. - Extend the format_lazy() utility method to handle markup. Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
This commit is contained in:
parent
9fda18b859
commit
1ba55e793f
@ -2,12 +2,11 @@
|
|||||||
|
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.core import validators
|
from django.core import validators
|
||||||
from django.utils.translation import ugettext_lazy as _, ugettext_lazy
|
from django.utils.translation import ugettext_lazy as _
|
||||||
from markupsafe import Markup
|
|
||||||
|
|
||||||
from plinth import cfg
|
from plinth import cfg, network
|
||||||
from plinth import network
|
|
||||||
from plinth.utils import format_lazy, import_from_gi
|
from plinth.utils import format_lazy, import_from_gi
|
||||||
|
|
||||||
nm = import_from_gi('NM', '1.0')
|
nm = import_from_gi('NM', '1.0')
|
||||||
|
|
||||||
|
|
||||||
@ -39,12 +38,11 @@ class ConnectionForm(forms.Form):
|
|||||||
choices=[('external', _('External')), ('internal', _('Internal'))])
|
choices=[('external', _('External')), ('internal', _('Internal'))])
|
||||||
ipv4_method = forms.ChoiceField(
|
ipv4_method = forms.ChoiceField(
|
||||||
label=_('IPv4 Addressing Method'), help_text=format_lazy(
|
label=_('IPv4 Addressing Method'), help_text=format_lazy(
|
||||||
ugettext_lazy(
|
_('"Automatic" method will make {box_name} acquire '
|
||||||
'"Automatic" method will make {box_name} acquire '
|
'configuration from this network making it a client. "Shared" '
|
||||||
'configuration from this network making it a client. "Shared" '
|
'method will make {box_name} act as a router, configure '
|
||||||
'method will make {box_name} act as a router, configure '
|
'clients on this network and share its Internet connection.'),
|
||||||
'clients on this network and share its Internet connection.'),
|
box_name=_(cfg.box_name)),
|
||||||
box_name=ugettext_lazy(cfg.box_name)),
|
|
||||||
choices=[('auto', _('Automatic (DHCP)')), ('shared', _('Shared')),
|
choices=[('auto', _('Automatic (DHCP)')), ('shared', _('Shared')),
|
||||||
('manual', _('Manual')), ('disabled', _('Disabled'))])
|
('manual', _('Manual')), ('disabled', _('Disabled'))])
|
||||||
ipv4_address = forms.CharField(
|
ipv4_address = forms.CharField(
|
||||||
@ -72,10 +70,9 @@ class ConnectionForm(forms.Form):
|
|||||||
validators=[validators.validate_ipv4_address], required=False)
|
validators=[validators.validate_ipv4_address], required=False)
|
||||||
ipv6_method = forms.ChoiceField(
|
ipv6_method = forms.ChoiceField(
|
||||||
label=_('IPv6 Addressing Method'), help_text=format_lazy(
|
label=_('IPv6 Addressing Method'), help_text=format_lazy(
|
||||||
ugettext_lazy(
|
_('"Automatic" methods will make {box_name} acquire '
|
||||||
'"Automatic" methods will make {box_name} acquire '
|
'configuration from this network making it a client.'),
|
||||||
'configuration from this network making it a client.'),
|
box_name=_(cfg.box_name)),
|
||||||
box_name=ugettext_lazy(cfg.box_name)),
|
|
||||||
choices=[('auto', _('Automatic')), ('dhcp', _('Automatic, DHCP only')),
|
choices=[('auto', _('Automatic')), ('dhcp', _('Automatic, DHCP only')),
|
||||||
('manual', _('Manual')), ('ignore', _('Ignore'))])
|
('manual', _('Manual')), ('ignore', _('Ignore'))])
|
||||||
ipv6_address = forms.CharField(
|
ipv6_address = forms.CharField(
|
||||||
@ -298,7 +295,7 @@ class InternetConnectionTypeForm(forms.Form):
|
|||||||
label=_('Choose your internet connection type'),
|
label=_('Choose your internet connection type'),
|
||||||
choices=[
|
choices=[
|
||||||
('dynamic_public_ip',
|
('dynamic_public_ip',
|
||||||
Markup(
|
format_lazy(
|
||||||
_('I have a public IP address that may change over time'
|
_('I have a public IP address that may change over time'
|
||||||
'<p class="help-block">This means that devices on the '
|
'<p class="help-block">This means that devices on the '
|
||||||
'internet can reach you when you are connected on the '
|
'internet can reach you when you are connected on the '
|
||||||
@ -307,33 +304,34 @@ class InternetConnectionTypeForm(forms.Form):
|
|||||||
'different IP address, especially after some offline time. '
|
'different IP address, especially after some offline time. '
|
||||||
'Many ISPs offer this type of connectivity. If you have a '
|
'Many ISPs offer this type of connectivity. If you have a '
|
||||||
'public IP address but are unsure if it changes over time '
|
'public IP address but are unsure if it changes over time '
|
||||||
'or not, it is safer to choose this option.</p>'))),
|
'or not, it is safer to choose this option.</p>'),
|
||||||
|
allow_markup=True)),
|
||||||
('static_public_ip',
|
('static_public_ip',
|
||||||
Markup(format_lazy(
|
format_lazy(
|
||||||
_('I have a public IP address that does not change overtime '
|
_('I have a public IP address that does not change overtime '
|
||||||
'(recommended)'
|
'(recommended)'
|
||||||
'<p class="help-block">This means that devices on the '
|
'<p class="help-block">This means that devices on the '
|
||||||
'Internet can reach you when you are connected on the '
|
'Internet can reach you when you are connected on the '
|
||||||
'Internet. Every time you connect to the Internet with '
|
'Internet. Every time you connect to the Internet with '
|
||||||
'your Internet Service Provider (ISP), you always get the '
|
'your Internet Service Provider (ISP), you always get the '
|
||||||
'same IP address. This is the most trouble free setup for '
|
'same IP address. This is the most trouble-free setup for '
|
||||||
'many {box_name} services but very few ISPs offer this. '
|
'many {box_name} services but very few ISPs offer this. '
|
||||||
'You may be able to get this service from your ISP by '
|
'You may be able to get this service from your ISP by '
|
||||||
'making an additional payment.</p>'),
|
'making an additional payment.</p>'), box_name=cfg.box_name,
|
||||||
box_name=cfg.box_name))),
|
allow_markup=True)),
|
||||||
('private_ip',
|
('private_ip',
|
||||||
Markup(format_lazy(
|
format_lazy(
|
||||||
_('I dont have a public IP address'
|
_('I dont have a public IP address'
|
||||||
'<p class="help-block">This means that devices on the '
|
'<p class="help-block">This means that devices on the '
|
||||||
'Internet <b>can not</b> reach you when you are connected '
|
'Internet <b>can not</b> reach you when you are connected '
|
||||||
'to the Internet. Every time you connect to the Internet '
|
'to the Internet. Every time you connect to the Internet '
|
||||||
'with your Internet Service Provider (ISP), you get an IP '
|
'with your Internet Service Provider (ISP), you get an IP '
|
||||||
'address that is only relevant for local networks. '
|
'address that is only relevant for local networks. '
|
||||||
'Many ISPs offer this type of connectivity. This is the '
|
'Many ISPs offer this type of connectivity. This is the '
|
||||||
'most troublesome situation for hosting services at home. '
|
'most troublesome situation for hosting services at home. '
|
||||||
'{box_name} provides many workaround solutions but each '
|
'{box_name} provides many workaround solutions but each '
|
||||||
'solution has some limitations.</p>'),
|
'solution has some limitations.</p>'),
|
||||||
box_name=cfg.box_name))),
|
box_name=cfg.box_name, allow_markup=True)),
|
||||||
],
|
],
|
||||||
required=True,
|
required=True,
|
||||||
widget=forms.RadioSelect,
|
widget=forms.RadioSelect,
|
||||||
@ -351,7 +349,7 @@ class RouterConfigurationWizardForm(forms.Form):
|
|||||||
choices=[
|
choices=[
|
||||||
(
|
(
|
||||||
'dmz',
|
'dmz',
|
||||||
Markup(format_lazy(
|
format_lazy(
|
||||||
_('Use DMZ feature to forward all traffic'
|
_('Use DMZ feature to forward all traffic'
|
||||||
'<p class="help-block">Most routers provide a '
|
'<p class="help-block">Most routers provide a '
|
||||||
'configuration setting called DMZ. This will allow the '
|
'configuration setting called DMZ. This will allow the '
|
||||||
@ -359,37 +357,31 @@ class RouterConfigurationWizardForm(forms.Form):
|
|||||||
'internet to a single IP address such as the '
|
'internet to a single IP address such as the '
|
||||||
'{box_name}\'s address. First remember to configure a '
|
'{box_name}\'s address. First remember to configure a '
|
||||||
'static local IP address for your {box_name} in your '
|
'static local IP address for your {box_name} in your '
|
||||||
'router\'s configuration.</p>'),
|
'router\'s configuration.</p>'), box_name=cfg.box_name,
|
||||||
box_name=cfg.box_name
|
allow_markup=True),
|
||||||
)),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
'port_forwarding',
|
|
||||||
Markup(format_lazy(
|
|
||||||
_('Forward Specific Traffic as needed by each '
|
|
||||||
'application'
|
|
||||||
'<p class="help-block">You may alternatively choose to '
|
|
||||||
'forward only specific traffic to your {box_name}. '
|
|
||||||
'This is ideal if you have other servers like '
|
|
||||||
'{box_name} in your network or if your router does not '
|
|
||||||
'support DMZ feature. All applications that provide a '
|
|
||||||
'web interface need you to forward traffic from ports '
|
|
||||||
'80 and 443 to work. Each of the other applications '
|
|
||||||
'will suggest which port(s) need to be forwarded '
|
|
||||||
'for that application to work.</p>'),
|
|
||||||
box_name=cfg.box_name
|
|
||||||
))
|
|
||||||
),
|
|
||||||
(
|
|
||||||
'not_configured',
|
|
||||||
Markup(
|
|
||||||
_('Router is currently unconfigured'
|
|
||||||
'<p class="help-block">Choose this if you have not '
|
|
||||||
'configured or are unable to configure the router '
|
|
||||||
'currently and wish to be reminded later. Some of '
|
|
||||||
'the other configuration steps may fail.</p>')
|
|
||||||
)
|
|
||||||
),
|
),
|
||||||
|
('port_forwarding',
|
||||||
|
format_lazy(
|
||||||
|
_('Forward Specific Traffic as needed by each '
|
||||||
|
'application'
|
||||||
|
'<p class="help-block">You may alternatively choose to '
|
||||||
|
'forward only specific traffic to your {box_name}. '
|
||||||
|
'This is ideal if you have other servers like '
|
||||||
|
'{box_name} in your network or if your router does not '
|
||||||
|
'support DMZ feature. All applications that provide a '
|
||||||
|
'web interface need you to forward traffic from ports '
|
||||||
|
'80 and 443 to work. Each of the other applications '
|
||||||
|
'will suggest which port(s) need to be forwarded '
|
||||||
|
'for that application to work.</p>'), box_name=cfg.box_name,
|
||||||
|
allow_markup=True)),
|
||||||
|
('not_configured',
|
||||||
|
format_lazy(
|
||||||
|
_('Router is currently unconfigured'
|
||||||
|
'<p class="help-block">Choose this if you have not '
|
||||||
|
'configured or are unable to configure the router '
|
||||||
|
'currently and wish to be reminded later. Some of '
|
||||||
|
'the other configuration steps may fail.</p>'),
|
||||||
|
allow_markup=True)),
|
||||||
],
|
],
|
||||||
required=True,
|
required=True,
|
||||||
widget=forms.RadioSelect,
|
widget=forms.RadioSelect,
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import re
|
|||||||
import string
|
import string
|
||||||
from distutils.version import LooseVersion
|
from distutils.version import LooseVersion
|
||||||
|
|
||||||
|
import markupsafe
|
||||||
import ruamel.yaml
|
import ruamel.yaml
|
||||||
from django.utils.functional import lazy
|
from django.utils.functional import lazy
|
||||||
|
|
||||||
@ -33,8 +34,13 @@ def import_from_gi(library, version):
|
|||||||
|
|
||||||
def _format_lazy(string, *args, **kwargs):
|
def _format_lazy(string, *args, **kwargs):
|
||||||
"""Lazily format a lazy string."""
|
"""Lazily format a lazy string."""
|
||||||
|
allow_markup = kwargs.pop('allow_markup', False)
|
||||||
string = str(string)
|
string = str(string)
|
||||||
return string.format(*args, **kwargs)
|
string = string.format(*args, **kwargs)
|
||||||
|
if allow_markup:
|
||||||
|
string = markupsafe.Markup(string)
|
||||||
|
|
||||||
|
return string
|
||||||
|
|
||||||
|
|
||||||
format_lazy = lazy(_format_lazy, str)
|
format_lazy = lazy(_format_lazy, str)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user