From d495988a7c1bd10552696e17edb480c7c60d2464 Mon Sep 17 00:00:00 2001 From: Alexander Burdeiny Date: Thu, 19 May 2016 21:40:10 +0300 Subject: [PATCH] =?UTF-8?q?1327:=20=D0=AD=D1=82=D0=B0=D0=BF=20=E2=84=963?= =?UTF-8?q?=20-=20=D0=9F=D0=B5=D1=80=D0=B5=D0=B2=D0=BE=D0=B4=D1=87=D0=B8?= =?UTF-8?q?=D0=BA=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=BE=D0=BD=D0=B0?= =?UTF-8?q?=D0=BB=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- accounts/admin.py | 2 +- accounts/edit_forms.py | 4 +- accounts/forms.py | 20 +- accounts/models.py | 12 +- article/admin.py | 1 + article/forms.py | 48 +- city/admin.py | 3 +- city/forms.py | 39 +- city/models.py | 4 +- city/search_indexes.py | 2 +- company/admin.py | 1 + company/forms.py | 77 +- company/models.py | 30 +- conference/forms.py | 93 +- conference/models.py | 74 +- conference/views.py | 7 +- core/forms.py | 2 + core/models.py | 11 +- core/simple_views.py | 34 +- country/forms.py | 58 +- country/models.py | 4 +- django_messages/admin.py | 10 +- emencia/django/newsletter/admin_forms.py | 10 +- emencia/django/newsletter/forms.py | 24 +- .../newsletter/announce_template.html | 27 +- .../newsletter/templates/newsletter/base.html | 6 +- .../newsletter/mailing_list_unsubscribe.html | 8 +- .../newsletter_link_unsubscribe.html | 2 +- .../django/newsletter/views/admin_views.py | 4 +- .../django/newsletter/views/mailing_list.py | 3 +- expobanner/admin.py | 8 +- expobanner/forms.py | 60 +- expobanner/models.py | 60 +- expobanner/stat_views.py | 5 +- exposition/forms.py | 154 +- exposition/models.py | 128 +- exposition/views.py | 16 +- file/forms.py | 26 +- file/models.py | 18 +- functions/custom_views.py | 6 +- functions/form_check.py | 3 +- functions/model_mixin.py | 3 +- import_xls/admin.py | 5 +- import_xls/export_forms.py | 23 +- import_xls/import_forms.py | 19 +- import_xls/utils.py | 17 +- locale/en/LC_MESSAGES/django.mo | Bin 49138 -> 0 bytes locale/en/LC_MESSAGES/django.po | Bin 382336 -> 328498 bytes locale/ru/LC_MESSAGES/django.mo | Bin 0 -> 1457 bytes locale/ru/LC_MESSAGES/django.po | 10308 ++++++++++++++++ meta/forms.py | 11 +- meta/models.py | 12 +- news/forms.py | 33 +- news/models.py | 20 +- organiser/forms.py | 71 +- organiser/models.py | 38 +- .../password_reset/recovery_email_expo.html | 29 +- photologue/forms.py | 15 +- photologue/migrations/0002_photosize_data.py | 2 +- photoreport/forms.py | 11 +- place_conference/forms.py | 94 +- place_exposition/forms.py | 102 +- place_exposition/models.py | 8 +- proj/admin_urls.py | 2 +- proj/settings.py | 2 +- review/models.py | 7 +- seminar/forms.py | 69 +- seminar/models.py | 51 +- service/forms.py | 33 +- service/models.py | 19 +- settings/forms.py | 5 +- specialist_catalog/models.py | 45 +- templates/admin/expobanner/link_list.html | 13 +- templates/admin/includes/admin_nav.html | 1 + templates/client/404_test.html | 11 +- .../accounts/translators/translator_city.html | 2 +- .../translators/translator_country.html | 6 +- .../translators/translator_profile.html | 4 +- templates/client/article/article.html | 2 +- templates/client/city/city.html | 4 +- templates/client/country/country.html | 2 +- .../includes/accounts/blocked_user.html | 5 +- .../includes/accounts/current_user.html | 6 +- .../includes/company/company_blocked.html | 5 +- .../client/includes/company/company_edit.html | 12 +- templates/client/includes/event_list.html | 6 +- .../client/includes/exposition/expo_paid.html | 2 +- .../exposition/exposition_object.html | 2 +- .../client/includes/exposition/programm.html | 6 +- templates/client/includes/page_filter.html | 5 +- .../newsletters/activation_complete.html | 14 +- .../newsletters/activation_template.html | 19 +- templates/client/organiser/add_event.html | 90 +- templates/client/photoreport.html | 28 +- templates/client/popups/advertise.html | 6 +- templates/client/popups/callback.html | 4 +- templates/client/popups/register.html | 4 +- templates/client/popups/theme.html | 4 +- templates/client/search/search.html | 12 +- templates/client/service/participation.html | 8 +- templates/client/service/remotely.html | 6 +- templates/client/service/thank_u_page.html | 19 +- templates/client/service/tickets.html | 6 +- templates/client/service/tour.html | 6 +- templates/client/service/translator.html | 10 +- .../client/simple_pages/expo_seminar.html | 94 +- .../simple_pages/participation_landing.html | 16 +- templates/client/wizard/first_step.html | 46 +- templates/client/wizard/second_step.html | 54 +- templates/client/wizard/third_step.html | 25 +- templates/client/wizard/wizard.html | 10 +- templates/registration/acquire_email.html | 15 +- templates/registration/activate.html | 14 +- templates/registration/activation_email.html | 29 +- templates/registration/base.html | 5 +- templates/registration/login.html | 16 +- templates/registration/logout.html | 9 +- .../registration/registration_complete.html | 9 +- templates/registration/registration_form.html | 27 +- .../social_registration_complete.html | 9 +- theme/forms.py | 31 +- theme/models.py | 10 +- translator/forms.py | 33 +- webinar/forms.py | 57 +- webinar/models.py | 45 +- wizard/forms.py | 51 +- 126 files changed, 11729 insertions(+), 1364 deletions(-) delete mode 100644 locale/en/LC_MESSAGES/django.mo create mode 100644 locale/ru/LC_MESSAGES/django.mo create mode 100644 locale/ru/LC_MESSAGES/django.po diff --git a/accounts/admin.py b/accounts/admin.py index fd3ac63f..ac23916f 100644 --- a/accounts/admin.py +++ b/accounts/admin.py @@ -198,7 +198,7 @@ def change_password(request): #user.set_password(form.cleaned_data.get('new_password')) #user.save() success['success'] = True - success['message'] = _(u'Пароль именен') + success['message'] = _(u'Пароль изменен') return HttpResponse(json.dumps(success), content_type='application/json') else: errors = {'errors': [_(u'Не правильный пароль')]} diff --git a/accounts/edit_forms.py b/accounts/edit_forms.py index cb687a90..320935a1 100644 --- a/accounts/edit_forms.py +++ b/accounts/edit_forms.py @@ -30,7 +30,7 @@ class NameForm(forms.ModelForm): class HomeForm(forms.ModelForm): - city = forms.CharField(label='Город', required=False, + city = forms.CharField(label=_(u'Город'), required=False, widget=forms.HiddenInput(attrs={'class': 'select2'})) country = forms.ChoiceField(label=_(u'Страна'), choices=[(c.id, c.name) for c in Country.objects.all()], required=False, widget=forms.Select(attrs={'class': 'select2'})) @@ -150,4 +150,4 @@ class AboutForm(forms.ModelForm): class Meta: model = Profile - fields = ('about',) \ No newline at end of file + fields = ('about',) diff --git a/accounts/forms.py b/accounts/forms.py index d47d65c3..36da7fc9 100644 --- a/accounts/forms.py +++ b/accounts/forms.py @@ -27,8 +27,8 @@ def clean_relation_field(inst, field_name, model): class UserCreationForm(forms.ModelForm): - password1 = forms.CharField(label='Пароль', widget=forms.PasswordInput(render_value=False)) - password2 = forms.CharField(label='Повторите пароль', widget=forms.PasswordInput(render_value=False)) + password1 = forms.CharField(label=_(u'Пароль'), widget=forms.PasswordInput(render_value=False)) + password2 = forms.CharField(label=_(u'Повторите пароль'), widget=forms.PasswordInput(render_value=False)) class Meta: model = User @@ -43,14 +43,14 @@ class UserCreationForm(forms.ModelForm): User.objects.get(email=email) except User.DoesNotExist: return email - raise forms.ValidationError('Пользователь с таким email уже существует') + raise forms.ValidationError(_(u'Пользователь с таким email уже существует')) def clean_password2(self): password1 = self.cleaned_data.get('password1') password2 = self.cleaned_data.get('password2') if password1 and password2 and password1 != password2: - raise forms.ValidationError('Пароли не совпадают') + raise forms.ValidationError(_(u'Пароли не совпадают')) return password2 def save(self, commit=True): @@ -65,10 +65,10 @@ class UserCreationForm(forms.ModelForm): class UserForm(forms.ModelForm): # email = forms.EmailField(widget=forms.TextInput(attrs={'disabled' : True}), required=False) - country = forms.ChoiceField(label='Страна', choices=[(item.id, item.name) for item in Country.objects.language().all()], + country = forms.ChoiceField(label=_(u'Страна'), choices=[(item.id, item.name) for item in Country.objects.language().all()], required=False) - city = forms.CharField(label='Город', widget=forms.HiddenInput(), required=False) - company = forms.ChoiceField(label='Компания', + city = forms.CharField(label=_(u'Город'), widget=forms.HiddenInput(), required=False) + company = forms.ChoiceField(label=_(u'Компания'), choices=[(item.id, item.name) for item in Company.objects.language().all()], required=False) @@ -149,7 +149,7 @@ class UserForm(forms.ModelForm): if phone.isdigit(): return phone else: - raise forms.ValidationError('Введите правильный код страны') + raise forms.ValidationError(_(u'Введите правильный код страны')) class ChangePasswordForm(forms.Form): @@ -201,9 +201,9 @@ class EmailAnnouncementForm(forms.Form): class RegistrationCompleteForm(forms.ModelForm): - country = forms.ModelChoiceField(label='Страна', queryset=Country.objects.all(), + country = forms.ModelChoiceField(label=_(u'Страна'), queryset=Country.objects.all(), widget=forms.Select(attrs={'class': 'select2'})) - city = forms.CharField(label='Город', widget=forms.HiddenInput()) + city = forms.CharField(label=_(u'Город'), widget=forms.HiddenInput()) url = forms.CharField(widget=forms.TextInput(attrs={'placeholder': _(u'url(обязательно)')})) # code_country = forms.ChoiceField(label=_(u'код страны'), initial='70', diff --git a/accounts/models.py b/accounts/models.py index 413b9560..a49485c7 100644 --- a/accounts/models.py +++ b/accounts/models.py @@ -22,7 +22,7 @@ class UserManager(BaseUserManager): def create_user(self, email, first_name, last_name, password=None, **extra_fields): now = timezone.now() if not email: - raise ValueError('Вы должни ввести электронную почту') + raise ValueError(_(u'Вы должни ввести электронную почту')) user = self.model( email=UserManager.normalize_email(email), @@ -38,7 +38,7 @@ class UserManager(BaseUserManager): def create_superuser(self, username, first_name, last_name, password, **extra_fields): if not username: - raise ValueError('Вы должни ввести электронную почту') + raise ValueError(_(u'Вы должни ввести электронную почту')) username = UserManager.normalize_email(username) @@ -82,7 +82,7 @@ class User(AbstractBaseUser, PermissionsMixin, GetURLorPK): #unique = True, db_index=True, ) - username = models.CharField(verbose_name='Email', max_length=255, unique=True, db_index=True) + username = models.CharField(verbose_name=_(u'Email'), max_length=255, unique=True, db_index=True) first_name = models.CharField(verbose_name=_(u'First name'), max_length=255) last_name = models.CharField(verbose_name=_(u'Last name'), max_length=255) rating = models.IntegerField(verbose_name=_(u'Рейтинг'), default=100)# добавить индекс в базе @@ -94,15 +94,15 @@ class User(AbstractBaseUser, PermissionsMixin, GetURLorPK): date_registered = models.DateTimeField(verbose_name=_(u'Дата регистрации'), blank=True, null=True) date_modified = models.DateTimeField(verbose_name=_(u'Изменен'), auto_now=True) #relations - organiser = models.ForeignKey('organiser.Organiser', verbose_name='Организатор', blank=True, null=True, + organiser = models.ForeignKey('organiser.Organiser', verbose_name=_(u'Организатор'), blank=True, null=True, unique=True, on_delete=models.PROTECT) - translator = models.ForeignKey('translator.Translator', verbose_name='Переводчик', blank=True, null=True, + translator = models.ForeignKey('translator.Translator', verbose_name=_(u'Переводчик'), blank=True, null=True, unique=True, on_delete=models.PROTECT, related_name='user') company = models.ForeignKey('company.Company', verbose_name=_(u'Компания'), blank=True, null=True, related_name='users') - position = models.CharField(verbose_name='Должность', max_length=255, blank=True) + position = models.CharField(verbose_name=_(u'Должность'), max_length=255, blank=True) blocked = models.BooleanField(verbose_name=_(u'Заблокирован?'), default=False) objects = UserManager() diff --git a/article/admin.py b/article/admin.py index 70698ca5..bd780402 100644 --- a/article/admin.py +++ b/article/admin.py @@ -15,6 +15,7 @@ from file.forms import FileModelForm, FileForm #custom views from functions.custom_views import objects_list, add_object_with_file, delete_object from functions.views_help import get_referer +from django.utils.translation import ugettext_lazy as _ class ArticleDeleteView(DeleteView): diff --git a/article/forms.py b/article/forms.py index 9fc5304c..52b4f190 100644 --- a/article/forms.py +++ b/article/forms.py @@ -16,12 +16,12 @@ from conference.models import Conference class _BlogForm(forms.Form): type = Article.blog - theme = forms.ModelMultipleChoiceField(label='Тематики', queryset=ThemeBlog.objects.all(), required=False, + theme = forms.ModelMultipleChoiceField(label=_(u'Тематики'), queryset=ThemeBlog.objects.all(), required=False, widget=forms.SelectMultiple(attrs={'style':'width: 550px'})) - slug = forms.SlugField(label=u'URL', max_length=255, min_length=1, required=False) - publish_date = forms.DateField(label=u'Дата публикации', input_formats=['%Y-%m-%d', '%d.%m.%Y'], required=False) - tag = forms.CharField(label=u'Теги', widget=forms.HiddenInput(), required=False) - logo = forms.ImageField(label=u'Лого', required=False) + slug = forms.SlugField(label=_(u'URL'), max_length=255, min_length=1, required=False) + publish_date = forms.DateField(label=_(u'Дата публикации'), input_formats=['%Y-%m-%d', '%d.%m.%Y'], required=False) + tag = forms.CharField(label=_(u'Теги'), widget=forms.HiddenInput(), required=False) + logo = forms.ImageField(label=_(u'Лого'), required=False) def __init__(self, *args, **kwargs): """ @@ -35,15 +35,15 @@ class _BlogForm(forms.Form): # uses enumerate for detect iteration number # first iteration is a default lang so it required fields required = True if lid == 0 else False - self.fields['main_title_%s' % code] = forms.CharField(label='Заголовок', required=required) - self.fields['preview_%s' % code] = forms.CharField(label='Превью', required=False, widget=CKEditorWidget) - self.fields['description_%s' % code] = forms.CharField(label='Описание', required=False, widget=CKEditorWidget) + self.fields['main_title_%s' % code] = forms.CharField(label=_(u'Заголовок'), required=required) + self.fields['preview_%s' % code] = forms.CharField(label=_(u'Превью'), required=False, widget=CKEditorWidget) + self.fields['description_%s' % code] = forms.CharField(label=_(u'Описание'), required=False, widget=CKEditorWidget) #meta data - self.fields['title_%s' % code] = forms.CharField(label='Тайтл', required=False, max_length=255, + self.fields['title_%s' % code] = forms.CharField(label=_(u'Тайтл'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['keywords_%s' % code] = forms.CharField(label='Кейвордс', required=False, max_length=255, + self.fields['keywords_%s' % code] = forms.CharField(label=_(u'Кейвордс'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['descriptions_%s' % code] = forms.CharField(label='Дескрипшен', required=False, max_length=255, + self.fields['descriptions_%s' % code] = forms.CharField(label=_(u'Дескрипшен'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) def save(self, author, article=None, commit=True): @@ -107,9 +107,9 @@ class BlogForm(_BlogForm): class NewsForm(_BlogForm): type = Article.news - exposition = forms.CharField(label=u'Выставка', widget=forms.HiddenInput(), required=False) - conference = forms.CharField(label=u'Конференция', widget=forms.HiddenInput(), required=False) - theme = forms.ModelMultipleChoiceField(label='Тематики', queryset=Theme.objects.all(), required=False, + exposition = forms.CharField(label=_(u'Выставка'), widget=forms.HiddenInput(), required=False) + conference = forms.CharField(label=_(u'Конференция'), widget=forms.HiddenInput(), required=False) + theme = forms.ModelMultipleChoiceField(label=_(u'Тематики'), queryset=Theme.objects.all(), required=False, widget=forms.SelectMultiple(attrs={'style':'width: 550px'})) def save(self, author, article=None): @@ -151,12 +151,12 @@ class ArticleForm(forms.Form): save function saves data in Article object. If it doesnt exist create new object """ #users that have organiser profile - author = forms.ModelChoiceField(label='Автор',queryset=User.objects.exclude(organiser__isnull=True)) + author = forms.ModelChoiceField(label=_(u'Автор'),queryset=User.objects.exclude(organiser__isnull=True)) key = forms.CharField(required=False, widget=forms.HiddenInput()) - theme = forms.ModelMultipleChoiceField(label='Тематики', queryset=Theme.objects.all()) + theme = forms.ModelMultipleChoiceField(label=_(u'Тематики'), queryset=Theme.objects.all()) #creates select input with empty choices cause it will be filled with ajax - tag = forms.MultipleChoiceField(label='Теги', required=False) + tag = forms.MultipleChoiceField(label=_(u'Теги'), required=False) article_id = forms.CharField(required=False, widget=forms.HiddenInput()) @@ -172,15 +172,15 @@ class ArticleForm(forms.Form): # uses enumerate for detect iteration number # first iteration is a default lang so it required fields required = True if lid == 0 else False - self.fields['main_title_%s' % code] = forms.CharField(label='Заголовок', required=required) - self.fields['preview_%s' % code] = forms.CharField(label='Превью', required=required, widget=CKEditorWidget) - self.fields['description_%s' % code] = forms.CharField(label='Описание', required=required, widget=CKEditorWidget) + self.fields['main_title_%s' % code] = forms.CharField(label=_(u'Заголовок'), required=required) + self.fields['preview_%s' % code] = forms.CharField(label=_(u'Превью'), required=required, widget=CKEditorWidget) + self.fields['description_%s' % code] = forms.CharField(label=_(u'Описание'), required=required, widget=CKEditorWidget) #meta data - self.fields['title_%s' % code] = forms.CharField(label='Тайтл', required=False, max_length=255, + self.fields['title_%s' % code] = forms.CharField(label=_(u'Тайтл'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['keywords_%s' % code] = forms.CharField(label='Дескрипшен', required=False, max_length=255, + self.fields['keywords_%s' % code] = forms.CharField(label=_(u'Дескрипшен'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['descriptions_%s' % code] = forms.CharField(label='Кейвордс', required=False, max_length=255, + self.fields['descriptions_%s' % code] = forms.CharField(label=_(u'Кейвордс'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) def save(self, id=None): @@ -229,7 +229,7 @@ class ArticleForm(forms.Form): article = Article.objects.filter(url=translit_with_separator(main_title_ru)) if article and str(article[0].id) != id: - msg = 'Статья с таким названием уже существует' + msg = _(u'Статья с таким названием уже существует') self._errors['main_title_ru'] = ErrorList([msg]) del self.cleaned_data['main_title_ru'] diff --git a/city/admin.py b/city/admin.py index b2642e36..753c81b3 100644 --- a/city/admin.py +++ b/city/admin.py @@ -13,6 +13,7 @@ from file.forms import FileModelForm #custom views from functions.custom_views import objects_list, add_object_with_file, delete_object from functions.admin_views import AdminListView +from django.utils.translation import ugettext_lazy as _ def city_all(request): @@ -110,4 +111,4 @@ def search_city(request): class CityListView(AdminListView): template_name = 'admin/city/city_list.html' form_class = CityFilterForm - model = City \ No newline at end of file + model = City diff --git a/city/forms.py b/city/forms.py index 8843c223..82251063 100644 --- a/city/forms.py +++ b/city/forms.py @@ -14,6 +14,7 @@ from functions.translate import fill_with_signal from functions.form_check import is_positive_integer, translit_with_separator from functions.files import check_tmp_files from functions.admin_forms import AdminFilterForm +from django.utils.translation import ugettext_lazy as _ class CityForm(forms.Form): @@ -25,16 +26,16 @@ class CityForm(forms.Form): save function saves data in City object. If it doesnt exist create new object """ - country = forms.ModelChoiceField(label='Страна', + country = forms.ModelChoiceField(label=_(u'Страна'), queryset=Country.objects.filter(translations__language_code=lang()).order_by('translations__name'), empty_label=None) - population = forms.CharField(label='Население', required=False, - widget=forms.TextInput(attrs={'placeholder':'Население'})) - phone_code = forms.CharField(label='Код города', required=False, - widget=forms.TextInput(attrs={'placeholder':'Код города'})) - code_IATA = forms.ModelChoiceField(label='Код IATA', queryset=Iata.objects.all(), empty_label=None, required=False) - inflect = forms.CharField(label='Inflect', required=False) - logo = forms.ImageField(label='Logo', required=False) + population = forms.CharField(label=_(u'Население'), required=False, + widget=forms.TextInput(attrs={'placeholder':_(u'Население')})) + phone_code = forms.CharField(label=_(u'Код города'), required=False, + widget=forms.TextInput(attrs={'placeholder':_(u'Код города')})) + code_IATA = forms.ModelChoiceField(label=_(u'Код IATA'), queryset=Iata.objects.all(), empty_label=None, required=False) + inflect = forms.CharField(label=_(u'Inflect'), required=False) + logo = forms.ImageField(label=_(u'Logo'), required=False) #field for comparing tmp files key = forms.CharField(required=False, widget=forms.HiddenInput()) # @@ -53,20 +54,20 @@ class CityForm(forms.Form): # uses enumerate for detect iteration number # first iteration is a default lang so it required fields required = True if lid == 0 else False - self.fields['name_%s' % code] = forms.CharField(label='Название', required=required) - self.fields['region_%s' % code] = forms.CharField(label='Регион', required=False) - self.fields['description_%s' % code] = forms.CharField(label='Описание', + self.fields['name_%s' % code] = forms.CharField(label=_(u'Название'), required=required) + self.fields['region_%s' % code] = forms.CharField(label=_(u'Регион'), required=False) + self.fields['description_%s' % code] = forms.CharField(label=_(u'Описание'), required=False, widget=CKEditorWidget) - self.fields['famous_places_%s' % code] = forms.CharField(label='Знаменитые места', + self.fields['famous_places_%s' % code] = forms.CharField(label=_(u'Знаменитые места'), required=False, widget=CKEditorWidget()) - self.fields['shoping_%s' % code] = forms.CharField(label='Шопинг', required=False, widget=CKEditorWidget()) - self.fields['transport_%s' % code] = forms.CharField(label='Транспорт', required=False, widget=CKEditorWidget()) + self.fields['shoping_%s' % code] = forms.CharField(label=_(u'Шопинг'), required=False, widget=CKEditorWidget()) + self.fields['transport_%s' % code] = forms.CharField(label=_(u'Транспорт'), required=False, widget=CKEditorWidget()) #meta data - self.fields['title_%s' % code] = forms.CharField(label='Тайтл', required=False, max_length=255, + self.fields['title_%s' % code] = forms.CharField(label=_(u'Тайтл'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['keywords_%s' % code] = forms.CharField(label='Кейвордс', required=False, max_length=255, + self.fields['keywords_%s' % code] = forms.CharField(label=_(u'Кейвордс'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['descriptions_%s' % code] = forms.CharField(label='Дескрипшен', required=False, max_length=255, + self.fields['descriptions_%s' % code] = forms.CharField(label=_(u'Дескрипшен'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) @@ -148,7 +149,7 @@ class CityForm(forms.Form): if phone_code.isdigit(): return phone_code else: - raise ValidationError('Введите правильный телефонный код') + raise ValidationError(_(u'Введите правильный телефонный код')) def clean_population(self): """ @@ -168,7 +169,7 @@ class CityDeleteForm(forms.ModelForm): class CityFilterForm(AdminFilterForm): country = forms.ChoiceField(choices=[('', '')]+[(item.id, item.name) for item in Country.objects.all()], required=False, - label='Страна') + label=_(u'Страна')) model = City def filter(self): diff --git a/city/models.py b/city/models.py index db53599e..749facc0 100644 --- a/city/models.py +++ b/city/models.py @@ -28,7 +28,7 @@ class City(TranslatableModel): catalog = '/city/' services = BitField(flags=flags) url = models.SlugField(verbose_name=_(u'Url'), unique=True) - logo = models.ImageField(verbose_name='Logo', upload_to='city/logo/', blank=True, max_length=255) + logo = models.ImageField(verbose_name=_(u'Logo'), upload_to='city/logo/', blank=True, max_length=255) old_url = models.CharField(verbose_name=_(u'Url старой бд'), max_length=55) # inflect name for russian language. example- в Москве inflect = models.CharField(verbose_name=_(u'Склонение'), max_length=255, blank=True) @@ -145,4 +145,4 @@ class Hotel(TranslatableModel): pre_save.connect(pre_save_handler, sender=City) post_save.connect(post_save_handler, sender=City) -post_save.connect(post_save_handler, sender=Hotel) \ No newline at end of file +post_save.connect(post_save_handler, sender=Hotel) diff --git a/city/search_indexes.py b/city/search_indexes.py index 8d54a854..e931270a 100644 --- a/city/search_indexes.py +++ b/city/search_indexes.py @@ -33,4 +33,4 @@ class CountryIndex(indexes.SearchIndex, indexes.Indexable, ExpoSearchMixin): return self.get_model().used.all() def get_updated_field(self): - return 'modified' \ No newline at end of file + return 'modified' diff --git a/company/admin.py b/company/admin.py index 525d0e23..c6c866d0 100644 --- a/company/admin.py +++ b/company/admin.py @@ -16,6 +16,7 @@ from functions.custom_views import (add_object_with_file, delete_object, # models and forms from models import Company from theme.models import Tag +from django.utils.translation import ugettext_lazy as _ def company_all(request): diff --git a/company/forms.py b/company/forms.py index ad2ff764..3c6f5d4e 100644 --- a/company/forms.py +++ b/company/forms.py @@ -27,30 +27,30 @@ class CompanyForm(forms.Form): save function saves data in Company object. If it doesnt exist create new object """ - url = forms.CharField(label='URL', widget=forms.TextInput(attrs={'placeholder': 'Введите URL'})) + url = forms.CharField(label=_(u'URL'), widget=forms.TextInput(attrs={'placeholder': _(u'Введите URL')})) - country = forms.ModelChoiceField(label='Страна', queryset=Country.objects.all(), empty_label=None) - theme = forms.ModelMultipleChoiceField(label='Тематики', queryset=Theme.objects.all()) + country = forms.ModelChoiceField(label=_(u'Страна'), queryset=Country.objects.all(), empty_label=None) + theme = forms.ModelMultipleChoiceField(label=_(u'Тематики'), queryset=Theme.objects.all()) #creates select input with empty choices cause it will be filled with ajax - city = forms.ChoiceField(label='Город', choices=[('','')]) - tag = forms.MultipleChoiceField(label='Теги', required=False) + city = forms.ChoiceField(label=_(u'Город'), choices=[('','')]) + tag = forms.MultipleChoiceField(label=_(u'Теги'), required=False) - staff_number = forms.CharField(label='Количество сотрудников', required=False, - widget=forms.TextInput(attrs={'placeholder': 'Количество сотрудников'})) + staff_number = forms.CharField(label=_(u'Количество сотрудников'), required=False, + widget=forms.TextInput(attrs={'placeholder': _(u'Количество сотрудников')})) #uses locationwidget - address = forms.CharField(label='Адрес', required=False, widget=LocationWidget) + address = forms.CharField(label=_(u'Адрес'), required=False, widget=LocationWidget) - phone = forms.CharField(label='Телефон', required=False, - widget=forms.TextInput(attrs={'placeholder': 'Введите телефон'})) + phone = forms.CharField(label=_(u'Телефон'), required=False, + widget=forms.TextInput(attrs={'placeholder': _(u'Введите телефон')})) fax = forms.CharField(label='Факс', required=False, - widget=forms.TextInput(attrs={'placeholder': 'Введите факс'})) - web_page = forms.CharField(label='Веб-сайт', required=False, - widget=forms.TextInput(attrs={'placeholder': 'Введите адрес сайта'})) - email = forms.CharField(label='Email', required=False, - widget=forms.TextInput(attrs={'placeholder': 'Введите email'})) - social = forms.CharField(label='Социальные страници', required=False) - foundation = forms.CharField(label='Год основания', required=False, - widget=forms.TextInput(attrs={'placeholder': 'Год основания'})) + widget=forms.TextInput(attrs={'placeholder': _(u'Введите факс')})) + web_page = forms.CharField(label=_(u'Веб-сайт'), required=False, + widget=forms.TextInput(attrs={'placeholder': _(u'Введите адрес сайта')})) + email = forms.CharField(label=_(u'Email'), required=False, + widget=forms.TextInput(attrs={'placeholder': _(u'Введите email')})) + social = forms.CharField(label=_(u'Социальные страници'), required=False) + foundation = forms.CharField(label=_(u'Год основания'), required=False, + widget=forms.TextInput(attrs={'placeholder': _(u'Год основания')})) #field for comparing tmp files key = forms.CharField(required=False, widget=forms.HiddenInput()) # @@ -69,18 +69,18 @@ class CompanyForm(forms.Form): # uses enumerate for detect iteration number # first iteration is a default lang so it required fields required = True if lid == 0 else False - self.fields['name_%s' % code] = forms.CharField(label='Название', required=required) - self.fields['description_%s' % code] = forms.CharField(label='Описание', + self.fields['name_%s' % code] = forms.CharField(label=_(u'Название'), required=required) + self.fields['description_%s' % code] = forms.CharField(label=_(u'Описание'), required=False, widget=CKEditorWidget) - self.fields['specialization_%s' % code] = forms.CharField(label='Специализация', required=False) - self.fields['address_inf_%s' % code] = forms.CharField(label='Доп инф по адресу', + self.fields['specialization_%s' % code] = forms.CharField(label=_(u'Специализация'), required=False) + self.fields['address_inf_%s' % code] = forms.CharField(label=_(u'Доп инф по адресу'), required=False, widget=CKEditorWidget) #meta data - self.fields['title_%s' % code] = forms.CharField(label='Тайтл', required=False, max_length=255, + self.fields['title_%s' % code] = forms.CharField(label=_(u'Тайтл'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['keywords_%s' % code] = forms.CharField(label='Дескрипшен', required=False, max_length=255, + self.fields['keywords_%s' % code] = forms.CharField(label=_(u'Дескрипшен'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['descriptions_%s' % code] = forms.CharField(label='Кейвордс', required=False, max_length=255, + self.fields['descriptions_%s' % code] = forms.CharField(label=_(u'Кейвордс'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) @@ -139,7 +139,7 @@ class CompanyForm(forms.Form): company = Company.objects.filter(url=translit_with_separator(url)) if company and str(company[0].id) != id: - msg = 'Такой урл уже занят' + msg = _(u'Такой урл уже занят') self._errors['url'] = ErrorList([msg]) del self.cleaned_data['url'] @@ -184,7 +184,7 @@ class CompanyForm(forms.Form): if phone.isdigit(): return phone else: - raise ValidationError('Введите правильный телефон') + raise ValidationError(_(u'Введите правильный телефон')) def clean_fax(self): """ @@ -203,7 +203,8 @@ class CompanyForm(forms.Form): if fax.isdigit(): return fax else: - raise ValidationError('Введите правильный факс') + raise ValidationError(_(u'Введите правильный факс')) + class CompanyDeleteForm(forms.ModelForm): id = forms.CharField(widget=forms.HiddenInput()) @@ -212,6 +213,7 @@ class CompanyDeleteForm(forms.ModelForm): model = Company fields = ('id',) + class CompanyFormClient(forms.Form): # translated fields @@ -224,18 +226,18 @@ class CompanyFormClient(forms.Form): country = forms.ModelChoiceField(label=_(u'Страна'), queryset=Country.objects.all(), empty_label=None) city = forms.CharField(label=_(u'Город'), widget=forms.HiddenInput()) theme = forms.ModelMultipleChoiceField(label=_(u'Тематики'), queryset=Theme.objects.all()) - tag = forms.CharField(label=u'Теги', widget=forms.HiddenInput(), required=False) + tag = forms.CharField(label=_(u'Теги'), widget=forms.HiddenInput(), required=False) - phone = forms.CharField(label='Телефон', required=False) - fax = forms.CharField(label='Факс', required=False) - web_page = forms.URLField(label='Веб-сайт', required=False) - email = forms.EmailField(label='Email', required=False) + phone = forms.CharField(label=_(u'Телефон'), required=False) + fax = forms.CharField(label=_(u'Факс'), required=False) + web_page = forms.URLField(label=_(u'Веб-сайт'), required=False) + email = forms.EmailField(label=_(u'Email'), required=False) foundation = forms.IntegerField(label=_(u'Год основания'), required=False) staff_number = forms.IntegerField(label=_(u'Количество сотрудников'), required=False) vk = forms.URLField(label=_(u'в контакте'), required=False) - twitter = forms.URLField(label=u'Twitter', required=False) - facebook = forms.URLField(label=u'Facebook', required=False) - linkedin = forms.URLField(label=u'Linkedin', required=False) + twitter = forms.URLField(label=_(u'Twitter'), required=False) + facebook = forms.URLField(label=_(u'Facebook'), required=False) + linkedin = forms.URLField(label=_(u'Linkedin'), required=False) def __init__(self, *args, **kwargs): @@ -279,7 +281,6 @@ class CreateCompanyForm(forms.Form): return company - def clean_url(self): url = self.cleaned_data['url'] url = url.replace('http://expomap.ru/members/', '') @@ -296,4 +297,4 @@ class CreateCompanyForm(forms.Form): return translit_with_separator(url) class CompanyFilterForm(AdminFilterForm): - model = Company \ No newline at end of file + model = Company diff --git a/company/models.py b/company/models.py index 81e5f3d0..89487958 100644 --- a/company/models.py +++ b/company/models.py @@ -32,34 +32,34 @@ class Company(TranslatableModel, ExpoMixin, GetURLorPK): url = models.SlugField(max_length=255) #relations - creator = models.ForeignKey('accounts.User', verbose_name='Создатель', related_name='created_company', + creator = models.ForeignKey('accounts.User', verbose_name=_(u'Создатель'), related_name='created_company', blank=True, null=True) - theme = models.ManyToManyField('theme.Theme', verbose_name='Отрасль', + theme = models.ManyToManyField('theme.Theme', verbose_name=_(u'Отрасль'), blank=True, null=True, related_name='companies') - tag = models.ManyToManyField('theme.Tag', verbose_name='Теги', blank=True, null=True, related_name='companies') - country = models.ForeignKey('country.Country', verbose_name='Страна', blank=True, null=True, + tag = models.ManyToManyField('theme.Tag', verbose_name=_(u'Теги'), blank=True, null=True, related_name='companies') + country = models.ForeignKey('country.Country', verbose_name=_(u'Страна'), blank=True, null=True, on_delete=models.PROTECT, related_name='companies') - city = models.ForeignKey('city.City', verbose_name='Город', blank=True, null=True, + city = models.ForeignKey('city.City', verbose_name=_(u'Город'), blank=True, null=True, on_delete=models.PROTECT, related_name='companies') #address. uses LocationField. saves data in json format address = LocationField(verbose_name='Адрес', blank=True) - staff_number = models.CharField(verbose_name='Количество сотрудников', max_length=50, blank=True) - phone = models.BigIntegerField(verbose_name='Телефон', blank=True, null=True) - fax = models.BigIntegerField(verbose_name='Факс', blank=True, null=True) - web_page = models.CharField(verbose_name='Веб-сайт',max_length=255, blank=True) - email = models.EmailField(verbose_name='Email', blank=True) + staff_number = models.CharField(verbose_name=_(u'Количество сотрудников'), max_length=50, blank=True) + phone = models.BigIntegerField(verbose_name=_(u'Телефон'), blank=True, null=True) + fax = models.BigIntegerField(verbose_name=_(u'Факс'), blank=True, null=True) + web_page = models.CharField(verbose_name=_(u'Веб-сайт'),max_length=255, blank=True) + email = models.EmailField(verbose_name=_(u'Email'), blank=True) facebook = models.URLField(verbose_name=_(u'Facebook'), blank=True) twitter = models.URLField(verbose_name=_(u'Twitter'), blank=True) linkedin = models.URLField(verbose_name=_(u'LinkedIn'), blank=True) vk = models.URLField(verbose_name=_(u'В контакте'), blank=True) - foundation = models.PositiveIntegerField(verbose_name='Год основания', blank=True, null=True) + foundation = models.PositiveIntegerField(verbose_name=_(u'Год основания'), blank=True, null=True) #translation fields translations = TranslatedFields( - name = models.CharField(verbose_name='Название компании', max_length=255), - specialization = models.CharField(verbose_name='Специализация', max_length=255, blank=True), - description = models.TextField(verbose_name='О компании', blank=True), - address_inf = models.TextField(verbose_name='Доп инф по адресу', blank=True), + name = models.CharField(verbose_name=_(u'Название компании'), max_length=255), + specialization = models.CharField(verbose_name=_(u'Специализация'), max_length=255, blank=True), + description = models.TextField(verbose_name=_(u'О компании'), blank=True), + address_inf = models.TextField(verbose_name=_(u'Доп инф по адресу'), blank=True), #-----meta title = models.CharField(max_length=255), descriptions = models.CharField(max_length=255), diff --git a/conference/forms.py b/conference/forms.py index 49a48de8..685db687 100644 --- a/conference/forms.py +++ b/conference/forms.py @@ -4,6 +4,7 @@ from django.conf import settings from ckeditor.widgets import CKEditorWidget from django.forms.util import ErrorList from django.core.validators import validate_email, URLValidator +from django.utils.translation import ugettext as _ #models from models import Conference, TimeTable, CURRENCY, Statistic, BIT_AUDIENCE from country.models import Country @@ -34,51 +35,51 @@ class ConferenceCreateForm(forms.Form): save function saves data in Conference object. If it doesnt exist create new object """ - PERIODIC = ((0, u'Не выбрано'), (1.0, u'Ежегодно'), (2.0, u'2 раза в год'), (3.0, u'3 раза в год'), - (4.0, u'4 раза в год'), (5.0, u'5 раз в год'), (0.5, u'Раз в 2 года'),(0.33, u'Раз в 3 года'), - (0.25, u'Раз в 4 года'), (0.2, u'Раз в 5 лет')) + PERIODIC = ((0, _(u'Не выбрано')), (1.0, _(u'Ежегодно')), (2.0, _(u'2 раза в год')), (3.0, _(u'3 раза в год')), + (4.0, _(u'4 раза в год')), (5.0, _(u'5 раз в год')), (0.5, _(u'Раз в 2 года')),(0.33, _(u'Раз в 3 года')), + (0.25, _(u'Раз в 4 года')), (0.2, _(u'Раз в 5 лет'))) public = [(item1, item2) for item1, item2 in BIT_AUDIENCE] currencies = [(item, item) for item in CURRENCY] - data_begin = forms.DateField(label=u'Дата начала', input_formats=['%Y-%m-%d', '%d.%m.%Y']) - data_end = forms.DateField(label=u'Дата окончания', input_formats=['%Y-%m-%d', '%d.%m.%Y']) - logo = forms.ImageField(label='Logo', required=False) + data_begin = forms.DateField(label=_(u'Дата начала'), input_formats=['%Y-%m-%d', '%d.%m.%Y']) + data_end = forms.DateField(label=_(u'Дата окончания'), input_formats=['%Y-%m-%d', '%d.%m.%Y']) + logo = forms.ImageField(label=_(u'Logo'), required=False) #organiser = forms.MultipleChoiceField(label=u'Организаторы', required=False, # choices=[(item.id, item.name) for item in Organiser.objects.language().all()]) - org = forms.CharField(required=False, label=u'Организатор') - country = forms.ChoiceField(label=u'Страна', choices=[(c.id, c.name) for c in Country.objects.all()]) - theme = forms.MultipleChoiceField(label='Тематики', + org = forms.CharField(required=False, label=_(u'Организатор')) + country = forms.ChoiceField(label=_(u'Страна'), choices=[(c.id, c.name) for c in Country.objects.all()]) + theme = forms.MultipleChoiceField(label=_(u'Тематики'), choices=[(item.id, item.name) for item in Theme.objects.language().all()]) - place = forms.ChoiceField(label=u'Место проведения', required=False, + place = forms.ChoiceField(label=_(u'Место проведения'), required=False, choices=places) - place_alt = forms.CharField(label = u"Альтернативное название места", required=False) + place_alt = forms.CharField(label = _(u"Альтернативное название места"), required=False) #creates select input with empty choices cause it will be filled with ajax - city = forms.CharField(label=u'Город', widget=forms.HiddenInput()) - tag = forms.CharField(label=u'Теги', widget=forms.HiddenInput(), required=False) - - periodic = forms.ChoiceField(label=u'Периодичность', choices=PERIODIC, required=False) - audience = forms.MultipleChoiceField(label=u'Аудитория', choices=public, initial='', required=False) - - web_page = forms.CharField(label='Веб страница', required=False) - link = forms.CharField(label='Линк на регистрацию', required=False) - foundation_year = forms.CharField(label='Год основания', required=False) - members = forms.CharField(label='Участники', required=False) - visitors = forms.CharField(label='Посетители', required=False) - discount = forms.CharField(label='Cкидка(%)', required=False) + city = forms.CharField(label=_(u'Город'), widget=forms.HiddenInput()) + tag = forms.CharField(label=_(u'Теги'), widget=forms.HiddenInput(), required=False) + + periodic = forms.ChoiceField(label=_(u'Периодичность'), choices=PERIODIC, required=False) + audience = forms.MultipleChoiceField(label=_(u'Аудитория'), choices=public, initial='', required=False) + + web_page = forms.CharField(label=_(u'Веб страница'), required=False) + link = forms.CharField(label=_(u'Линк на регистрацию'), required=False) + foundation_year = forms.CharField(label=_(u'Год основания'), required=False) + members = forms.CharField(label=_(u'Участники'), required=False) + visitors = forms.CharField(label=_(u'Посетители'), required=False) + discount = forms.CharField(label=_(u'Cкидка(%)'), required=False) # - currency = forms.ChoiceField(label='Валюта', choices=currencies, required=False) - tax = forms.BooleanField(label='Налог включен', initial=True, required=False) - min_price = forms.CharField(label='Минимальная цена', required=False) - max_price = forms.CharField(label='Максимальная цена', required=False) - expohit = forms.BooleanField(label='Expohit', required=False) - canceled = forms.BooleanField(label='Отменена', required=False) - moved = forms.BooleanField(label='Перенесена', required=False) - quality_label = forms.MultipleChoiceField(label='Тип', required=False, + currency = forms.ChoiceField(label=_(u'Валюта'), choices=currencies, required=False) + tax = forms.BooleanField(label=_(u'Налог включен'), initial=True, required=False) + min_price = forms.CharField(label=_(u'Минимальная цена'), required=False) + max_price = forms.CharField(label=_(u'Максимальная цена'), required=False) + expohit = forms.BooleanField(label=_(u'Expohit'), required=False) + canceled = forms.BooleanField(label=_(u'Отменена'), required=False) + moved = forms.BooleanField(label=_(u'Перенесена'), required=False) + quality_label = forms.MultipleChoiceField(label=_(u'Тип'), required=False, choices=[('ufi', 'UFI'), ('rsva', 'РСВЯ'), ('exporating', 'ExpoRating')], widget=forms.CheckboxSelectMultiple()) @@ -97,23 +98,23 @@ class ConferenceCreateForm(forms.Form): # uses enumerate for detect iteration number # first iteration is a default lang so it required fields required = True if lid == 0 else False - self.fields['name_%s' % code] = forms.CharField(label='Название', required=required) - self.fields['main_title_%s' % code] = forms.CharField(label='Краткое описание', + self.fields['name_%s' % code] = forms.CharField(label=_(u'Название'), required=required) + self.fields['main_title_%s' % code] = forms.CharField(label=_(u'Краткое описание'), required=False, widget=CKEditorWidget) - self.fields['description_%s' % code] = forms.CharField(label='Описание', + self.fields['description_%s' % code] = forms.CharField(label=_(u'Описание'), required=False, widget=CKEditorWidget) - self.fields['time_%s' % code] = forms.CharField(label='Время работы', + self.fields['time_%s' % code] = forms.CharField(label=_(u'Время работы'), required=False, widget=CKEditorWidget) - self.fields['main_themes_%s' % code] = forms.CharField(label='Основные темы', + self.fields['main_themes_%s' % code] = forms.CharField(label=_(u'Основные темы'), required=False, widget=CKEditorWidget) - self.fields['discount_description_%s' % code] = forms.CharField(label='Описание скидки', + self.fields['discount_description_%s' % code] = forms.CharField(label=_(u'Описание скидки'), required=False, widget=CKEditorWidget) #meta data - self.fields['title_%s' % code] = forms.CharField(label='Тайтл', required=False, max_length=255, + self.fields['title_%s' % code] = forms.CharField(label=_(u'Тайтл'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['keywords_%s' % code] = forms.CharField(label='Дескрипшен', required=False, max_length=255, + self.fields['keywords_%s' % code] = forms.CharField(label=_(u'Дескрипшен'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['descriptions_%s' % code] = forms.CharField(label='Кейвордс', required=False, max_length=255, + self.fields['descriptions_%s' % code] = forms.CharField(label=_(u'Кейвордс'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) @@ -313,9 +314,9 @@ class ConferenceChangeForm(ConferenceCreateForm): add some fields to ConferenceCreateForm """ - organiser = forms.ModelMultipleChoiceField(label='Организаторы', queryset=Organiser.objects.all(), required=False) - company = forms.ModelMultipleChoiceField(label='Компании', queryset=Company.objects.all(), required=False) - users = forms.ModelMultipleChoiceField(label='Пользователи', queryset=User.objects.all(), required=False) + organiser = forms.ModelMultipleChoiceField(label=_(u'Организаторы'), queryset=Organiser.objects.all(), required=False) + company = forms.ModelMultipleChoiceField(label=_(u'Компании'), queryset=Company.objects.all(), required=False) + users = forms.ModelMultipleChoiceField(label=_(u'Пользователи'), queryset=User.objects.all(), required=False) class ConferenceDeleteForm(forms.ModelForm): @@ -355,8 +356,8 @@ class TimeTableForm(forms.Form): Create TimeTable form day field must save automatically """ - begin = forms.DateTimeField(label='Время начала') - end = forms.DateTimeField(label='Время окончания') + begin = forms.DateTimeField(label=_(u'Время начала')) + end = forms.DateTimeField(label=_(u'Время окончания')) def __init__(self, *args, **kwargs): """ @@ -378,7 +379,7 @@ class TimeTableForm(forms.Form): class ConferenceFilterForm(AdminFilterForm): - created = forms.DateField(required=False, label='Дата создания') + created = forms.DateField(required=False, label=_(u'Дата создания')) model = Conference def filter(self): diff --git a/conference/models.py b/conference/models.py index e9e3ad43..a2b4dd9e 100644 --- a/conference/models.py +++ b/conference/models.py @@ -47,27 +47,27 @@ class Conference(TranslatableModel, EventMixin, ExpoMixin): url = models.SlugField(unique=True, max_length=255) old_url = models.SlugField(unique=True, max_length=255) - data_begin = models.DateField(verbose_name='Дата начала') - data_end = models.DateField(verbose_name='Дата окончания') + data_begin = models.DateField(verbose_name=_(u'Дата начала')) + data_end = models.DateField(verbose_name=_(u'Дата окончания')) services = BitField(flags=flags) #relations - country = models.ForeignKey('country.Country', verbose_name='Страна', on_delete=models.PROTECT, + country = models.ForeignKey('country.Country', verbose_name=_(u'Страна'), on_delete=models.PROTECT, related_name='conference_country') - city = models.ForeignKey('city.City', verbose_name='Город', on_delete=models.PROTECT, + city = models.ForeignKey('city.City', verbose_name=_(u'Город'), on_delete=models.PROTECT, related_name='conference_city') - place = models.ForeignKey('place_conference.PlaceConference', verbose_name='Место проведения', + place = models.ForeignKey('place_conference.PlaceConference', verbose_name=_(u'Место проведения'), blank=True, null=True, on_delete=models.PROTECT, related_name='conference_place') place_alt = models.CharField(blank=True, null=True, max_length=255) # alternative for object place - theme = models.ManyToManyField('theme.Theme', verbose_name='Тематики', + theme = models.ManyToManyField('theme.Theme', verbose_name=_(u'Тематики'), related_name='conference_themes') - tag = models.ManyToManyField('theme.Tag', verbose_name='Теги', + tag = models.ManyToManyField('theme.Tag', verbose_name=_(u'Теги'), blank=True, null=True, related_name='conference_tags') - organiser = models.ManyToManyField('organiser.Organiser', verbose_name='Организатор', + organiser = models.ManyToManyField('organiser.Organiser', verbose_name=_(u'Организатор'), blank=True, null=True, related_name='conference_organisers') org = models.CharField(max_length=255, blank=True, null=True) - company = models.ManyToManyField('company.Company', verbose_name='Компании', + company = models.ManyToManyField('company.Company', verbose_name=_(u'Компании'), blank=True, null=True, related_name='conference_companies') - users = models.ManyToManyField('accounts.User', verbose_name='Посетители выставки', + users = models.ManyToManyField('accounts.User', verbose_name=_(u'Посетители выставки'), blank=True, null=True, related_name='conference_users') photogallery = models.ForeignKey('photologue.Gallery', blank=True, null=True, on_delete=models.SET_NULL) logo = models.ImageField(verbose_name='Logo', upload_to='conference/logo/', blank=True) @@ -75,17 +75,17 @@ class Conference(TranslatableModel, EventMixin, ExpoMixin): quality_label = BitField(flags=['ufi', 'rsva', 'exporating']) - periodic = models.FloatField(verbose_name='Переодичность', blank=True, null=True) + periodic = models.FloatField(verbose_name=_(u'Переодичность'), blank=True, null=True) audience = BitField(flags=[k for k, v in BIT_AUDIENCE]) - web_page = models.CharField(verbose_name='Вебсайт', max_length=255, blank=True) - link = models.CharField(verbose_name='Линк на регистрацию', max_length=255, blank=True) - discount = models.PositiveIntegerField(verbose_name='Скидка', blank=True, null=True) + web_page = models.CharField(verbose_name=_(u'Вебсайт'), max_length=255, blank=True) + link = models.CharField(verbose_name=_(u'Линк на регистрацию'), max_length=255, blank=True) + discount = models.PositiveIntegerField(verbose_name=_(u'Скидка'), blank=True, null=True) # currency = EnumField(values=CURRENCY, default='USD') - tax = models.BooleanField(verbose_name='Налог', default=1) - min_price = models.PositiveIntegerField(verbose_name='Минимальная цена', blank=True, null=True) - max_price = models.PositiveIntegerField(verbose_name='Максимальная цена', blank=True, null=True) + tax = models.BooleanField(verbose_name=_(u'Налог'), default=1) + min_price = models.PositiveIntegerField(verbose_name=_(u'Минимальная цена'), blank=True, null=True) + max_price = models.PositiveIntegerField(verbose_name=_(u'Максимальная цена'), blank=True, null=True) #administrator can cancel conference expohit = models.BooleanField(verbose_name='Expohit', default=0) canceled_by_administrator = models.BooleanField(default=0) @@ -97,17 +97,17 @@ class Conference(TranslatableModel, EventMixin, ExpoMixin): files = generic.GenericRelation('file.FileModel', content_type_field='content_type', object_id_field='object_id') note = generic.GenericRelation('note.Note', content_type_field='content_type', object_id_field='object_id') # statistic - foundation_year = models.PositiveIntegerField(verbose_name='Год основания', blank=True, null=True) - visitors = models.PositiveIntegerField(verbose_name='Посетитеил', blank=True, null=True) - members = models.PositiveIntegerField(verbose_name='Участники', blank=True, null=True) + foundation_year = models.PositiveIntegerField(verbose_name=_(u'Год основания'), blank=True, null=True) + visitors = models.PositiveIntegerField(verbose_name=_(u'Посетитеил'), blank=True, null=True) + members = models.PositiveIntegerField(verbose_name=_(u'Участники'), blank=True, null=True) #translated fields translations = TranslatedFields( - name = models.CharField(verbose_name='Название', max_length=255), - main_title=models.TextField(verbose_name='Краткое описание', blank=True), - description=models.TextField(verbose_name='Описание', blank=True), - main_themes=models.TextField(verbose_name='Основные темы', blank=True), - time=models.TextField(verbose_name='Время работы', blank=True), - discount_description=models.TextField(verbose_name='Описание скидки', blank=True), + name = models.CharField(verbose_name=_(u'Название'), max_length=255), + main_title=models.TextField(verbose_name=_(u'Краткое описание'), blank=True), + description=models.TextField(verbose_name=_(u'Описание'), blank=True), + main_themes=models.TextField(verbose_name=_(u'Основные темы'), blank=True), + time=models.TextField(verbose_name=_(u'Время работы'), blank=True), + discount_description=models.TextField(verbose_name=_(u'Описание скидки'), blank=True), #-----meta data title=models.CharField(max_length=250), descriptions=models.CharField(max_length=250), @@ -208,11 +208,11 @@ class Conference(TranslatableModel, EventMixin, ExpoMixin): class Statistic(TranslatableModel): conference = models.ForeignKey(Conference, related_name='statistic') - year = models.PositiveIntegerField(verbose_name='Год') - members = models.PositiveIntegerField(verbose_name='Посетители', blank=True, null=True) - visitors = models.PositiveIntegerField(verbose_name='Участники', blank=True, null=True) - area = models.PositiveIntegerField(verbose_name='Площадь', blank=True, null=True) - countries_number = models.PositiveIntegerField(verbose_name='Количество стран', blank=True, null=True) + year = models.PositiveIntegerField(verbose_name=_(u'Год')) + members = models.PositiveIntegerField(verbose_name=_(u'Посетители'), blank=True, null=True) + visitors = models.PositiveIntegerField(verbose_name=_(u'Участники'), blank=True, null=True) + area = models.PositiveIntegerField(verbose_name=_(u'Площадь'), blank=True, null=True) + countries_number = models.PositiveIntegerField(verbose_name=_(u'Количество стран'), blank=True, null=True) translations = TranslatedFields( countries = models.TextField(blank=True) @@ -228,8 +228,8 @@ class TimeTable(TranslatableModel): """ conference = models.ForeignKey(Conference, related_name='business_program') - begin = models.DateTimeField(verbose_name='Начало') - end = models.DateTimeField(verbose_name='Конец') + begin = models.DateTimeField(verbose_name=_(u'Начало')) + end = models.DateTimeField(verbose_name=_(u'Конец')) timetable_organiser = models.ForeignKey('organiser.Organiser', null=True, blank=True, related_name='conf_timetable') # @@ -237,10 +237,10 @@ class TimeTable(TranslatableModel): modified = models.DateTimeField(auto_now=True) #translated fields translations = TranslatedFields( - name = models.CharField(verbose_name='Название программы', max_length=255, blank=True), - programe = models.TextField(verbose_name='Программа'), - speaker = models.CharField(verbose_name='Спикеры', max_length=255, blank=True), - place = models.CharField(verbose_name='Место проведения', max_length=255, blank=True) + name = models.CharField(verbose_name=_(u'Название программы'), max_length=255, blank=True), + programe = models.TextField(verbose_name=_(u'Программа')), + speaker = models.CharField(verbose_name=_(u'Спикеры'), max_length=255, blank=True), + place = models.CharField(verbose_name=_(u'Место проведения'), max_length=255, blank=True) ) def to_dict(self): diff --git a/conference/views.py b/conference/views.py index b192cb53..1e7e39c8 100644 --- a/conference/views.py +++ b/conference/views.py @@ -562,9 +562,10 @@ def send_to_organiser(request, slug): email = request.POST.get('person') phone = request.POST.get('phone', '') question = request.POST.get('question', '') - text = u"конференция: %s\n Контактное лицо:%s\nEmail: %s\nтелефон:%s\n вопрос:%s"%(exposition.name, name, email, - phone, question) - msg = EmailMessage(u'Проплаченная конференция', text, settings.DEFAULT_FROM_EMAIL, [mail_send]) + data = {'expo_name': exposition.name, 'name': name, 'email': email, + 'phone': phone, 'question': question} + text = _(u"конференция: %(expo_name)s\n Контактное лицо:%(name)s\nEmail: %(email)s\nтелефон:%(phone)s\n вопрос:%(question)s") % data + msg = EmailMessage(_(u'Проплаченная конференция'), text, settings.DEFAULT_FROM_EMAIL, [mail_send]) msg.content_subtype = "html" msg.send() redirect_to = '%sservice/thanks/'%exposition.get_permanent_url() diff --git a/core/forms.py b/core/forms.py index d00f080e..fe61cd31 100644 --- a/core/forms.py +++ b/core/forms.py @@ -2,6 +2,7 @@ from django import forms from django.conf import settings from django.core.mail import send_mail +from django.utils.translation import ugettext as _ from place_exposition.models import PlaceExposition from place_conference.models import PlaceConference from django.utils.translation import ugettext_lazy as _ @@ -9,6 +10,7 @@ from haystack.query import SearchQuerySet, EmptySearchQuerySet from hvad.forms import TranslatableModelForm from models import Page + class PlaceSearchForm(forms.Form): q = forms.CharField(label=_(u'Поиск'), required=False) w = forms.CharField(label=_(u'Где'), required=False) diff --git a/core/models.py b/core/models.py index 56d75875..c899dabe 100644 --- a/core/models.py +++ b/core/models.py @@ -2,6 +2,7 @@ from django.contrib.syndication.views import Feed from django.shortcuts import get_object_or_404 from django.db import models +from django.utils.translation import ugettext as _ from exposition.models import Exposition import copy @@ -18,9 +19,9 @@ EXPO_ON_PAGE = 10 # nearest expositions at all class LatestExpositions(Feed): - title = u"Ближайшие выставки на expomap.ru" + title = _(u"Ближайшие выставки на expomap.ru") link = '/rss/latest/' - description = u'Подписывайтесь на наш RSS-канал' + description = _(u'Подписывайтесь на наш RSS-канал') def items(self): return Exposition.enable.upcoming()[:EXPO_ON_PAGE] @@ -44,7 +45,7 @@ class CountryFeeds(Feed): return get_object_or_404(Country, url=slug) def title(self, obj): - return u"Ближайшие выставки %s:" % obj.inflect + return _(u"Ближайшие выставки %(obj)s:") % {'obj': obj.inflect} def link(self,obj): return obj.get_permanent_url() @@ -63,7 +64,7 @@ class CityFeeds(Feed): return get_object_or_404(City, url=slug) def title(self, obj): - return u"Ближайшие выставки в %s: " % obj.inflect + return _(u"Ближайшие выставки в %(obj)s: ") % {'obj': obj.inflect} def link(self,obj): return obj.get_permanent_url() @@ -82,7 +83,7 @@ class ThemeFeeds(Feed): return get_object_or_404(Theme, url=slug) def title(self, obj): - return u"Ближайшие выставки %s: " % obj.inflect + return _(u"Ближайшие выставки %(obj)s: ") % {'obj': obj.inflect} def link(self,obj): return obj.url diff --git a/core/simple_views.py b/core/simple_views.py index 5f556f4a..78ea6797 100644 --- a/core/simple_views.py +++ b/core/simple_views.py @@ -4,7 +4,7 @@ from django.views.generic import TemplateView from django.core.mail import EmailMessage from django.http import HttpResponse from django.conf import settings - +from django.utils.translation import ugettext as _ class SeminarLendingView(TemplateView): @@ -14,30 +14,32 @@ class SeminarLendingView(TemplateView): def send_to_organiser(request): mail_send = 'expomap@mail.ru' - fname = request.POST.get('name') - lname = request.POST.get('surname') - email = request.POST.get('email', '') - company = request.POST.get('company', '') - office = request.POST.get('office', '') - phone = request.POST.get('phone', '') + data = { + 'fname': request.POST.get('name'), + 'lname': request.POST.get('surname'), + 'email': request.POST.get('email', ''), + 'company': request.POST.get('company', ''), + 'office': request.POST.get('office', ''), + 'phone': request.POST.get('phone', ''), + } title = request.POST.get('type', '') - text = u"""Имя: %s; - Фамилия:%s; - Email: %s; - Телефон: %s; - компния:%s; - должность: %s"""%(fname, lname, email, phone, company, office) + text = _(u"""Имя: %(fname)s; + Фамилия:%(lname)s; + Email: %(email)s; + Телефон: %(phone)s; + компния: %(company)s; + должность: %(office)s""") % data msg = EmailMessage(title, text, settings.DEFAULT_FROM_EMAIL, [mail_send]) msg.content_subtype = "html" msg.send() redirect_to = '/service/thanks/' if title.endswith(u'семинар'): - message = u"""Мы получили Ваш запрос и очень рады, что Вам интересно участие в семинаре Expomap. Если места еще есть, мы пришлем Вам приглашение на указанную Вами электронную почту. - Увидимся на welcome-coffee ☺""" + message = _(u"""Мы получили Ваш запрос и очень рады, что Вам интересно участие в семинаре Expomap. Если места еще есть, мы пришлем Вам приглашение на указанную Вами электронную почту. + Увидимся на welcome-coffee ☺""") else: - message = u"""Благодарим за интерес к нашему семинару! За несколько дней до мероприятия мы пришлем Вам ссылку для подключения к онлайн-трансляции!""" + message = _(u"""Благодарим за интерес к нашему семинару! За несколько дней до мероприятия мы пришлем Вам ссылку для подключения к онлайн-трансляции!""") return HttpResponse(json.dumps({'success':True, 'redirect_to': redirect_to, 'message': message}), content_type='application/json') diff --git a/country/forms.py b/country/forms.py index 67193e43..92897e98 100644 --- a/country/forms.py +++ b/country/forms.py @@ -5,6 +5,8 @@ from ckeditor.widgets import CKEditorWidget from tinymce.widgets import TinyMCE from django.core.exceptions import ValidationError from django.forms.util import ErrorList +from django.utils.translation import ugettext as _ + #models from models import Country, City from directories.models import Language, Currency, Iata @@ -42,20 +44,20 @@ class CountryForm(forms.Form): save function saves data in Country object. If it doesnt exist create new object """ # - currency = forms.ModelMultipleChoiceField(label='Валюты', queryset=Currency.objects.all(), required=False) - language = forms.ModelMultipleChoiceField(label='Языки', queryset=Language.objects.all(), required=False) + currency = forms.ModelMultipleChoiceField(label=_(u'Валюты'), queryset=Currency.objects.all(), required=False) + language = forms.ModelMultipleChoiceField(label=_(u'Языки'), queryset=Language.objects.all(), required=False) # - population = forms.CharField(label='Население(млн)', required=False, - widget=forms.TextInput(attrs={'placeholder':'Население(млн)'})) + population = forms.CharField(label=_(u'Население(млн)'), required=False, + widget=forms.TextInput(attrs={'placeholder':_(u'Население(млн)')})) teritory = forms.CharField(label='Территория(км2)', required=False, - widget=forms.TextInput(attrs={'placeholder':'Територия(км2)'}))# km2 - timezone = forms.ChoiceField(label='Часовые пояса', required=False, choices=tz, initial=99) - phone_code = forms.CharField(label='Код страны', required=False, - widget=forms.TextInput(attrs={'placeholder':'Код страны'})) - time_delivery = forms.CharField(label='Срок выдачи', required=False, - widget=forms.TextInput(attrs={'placeholder':'Срок выдачи'})) + widget=forms.TextInput(attrs={'placeholder':_(u'Територия(км2)')}))# km2 + timezone = forms.ChoiceField(label=_(u'Часовые пояса'), required=False, choices=tz, initial=99) + phone_code = forms.CharField(label=_(u'Код страны'), required=False, + widget=forms.TextInput(attrs={'placeholder':_(u'Код страны')})) + time_delivery = forms.CharField(label=_(u'Срок выдачи'), required=False, + widget=forms.TextInput(attrs={'placeholder':_(u'Срок выдачи')})) - logo = forms.ImageField(label='Logo', required=False) + logo = forms.ImageField(label=_(u'Logo'), required=False) #services = forms.MultipleChoiceField(label='Сервисы', required=False, choices=); #field for comparing tmp files @@ -82,33 +84,33 @@ class CountryForm(forms.Form): # using enumerate for detect iteration number # first iteration is a default lang so it required fields required = True if lid == 0 else False - self.fields['name_%s' % code] = forms.CharField(label='Название', required=required) - self.fields['description_%s' % code] = forms.CharField(label='Описание', required=False, widget=CKEditorWidget) - self.fields['transport_%s' % code] = forms.CharField(label='Транспорт', required=False, widget=CKEditorWidget) + self.fields['name_%s' % code] = forms.CharField(label=_(u'Название'), required=required) + self.fields['description_%s' % code] = forms.CharField(label=_(u'Описание'), required=False, widget=CKEditorWidget) + self.fields['transport_%s' % code] = forms.CharField(label=_(u'Транспорт'), required=False, widget=CKEditorWidget) #vis inf - self.fields['rules_%s' % code] = forms.CharField(label='Правила въезда', required=False, widget=CKEditorWidget()) - self.fields['documents_%s' % code] = forms.CharField(label='Документы', required=False, widget=CKEditorWidget()) - self.fields['consulate_%s' % code] = forms.CharField(label='Консульство', required=False, widget=CKEditorWidget()) + self.fields['rules_%s' % code] = forms.CharField(label=_(u'Правила въезда'), required=False, widget=CKEditorWidget()) + self.fields['documents_%s' % code] = forms.CharField(label=_(u'Документы'), required=False, widget=CKEditorWidget()) + self.fields['consulate_%s' % code] = forms.CharField(label=_(u'Консульство'), required=False, widget=CKEditorWidget()) #meta data - self.fields['title_%s' % code] = forms.CharField(label='Тайтл', required=False, max_length=255, + self.fields['title_%s' % code] = forms.CharField(label=_(u'Тайтл'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['keywords_%s' % code] = forms.CharField(label='Дескрипшен', required=False, max_length=255, + self.fields['keywords_%s' % code] = forms.CharField(label=_(u'Дескрипшен'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['descriptions_%s' % code] = forms.CharField(label='Кейвордс', required=False, max_length=255, + self.fields['descriptions_%s' % code] = forms.CharField(label=_(u'Кейвордс'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) # check if exists cities connected with country countries = City.objects.language().filter(country = country_id).order_by('name') countries_list = [(item.id, item.name) for item in countries] if country_id == None or len(countries)==0: - self.fields['capital'] = forms.ChoiceField(label='Столица',choices=((None,'Нет городов в стране'),), required=False, + self.fields['capital'] = forms.ChoiceField(label=_(u'Столица'),choices=((None,_(u'Нет городов в стране')),), required=False, widget=forms.Select(attrs={'disabled' : True})) - self.fields['big_cities'] = forms.MultipleChoiceField(label='Большие города',choices=((None,'Нет городов в стране'),), required=False, + self.fields['big_cities'] = forms.MultipleChoiceField(label=_(u'Большие города'),choices=((None,_(u'Нет городов в стране')),), required=False, widget=forms.Select(attrs={'disabled' : True})) else: - self.fields['capital'] = forms.ChoiceField(label='Столица', choices=countries_list, + self.fields['capital'] = forms.ChoiceField(label=_(u'Столица'), choices=countries_list, required=False) - self.fields['big_cities'] = forms.MultipleChoiceField(label='Большие города', choices=countries_list, + self.fields['big_cities'] = forms.MultipleChoiceField(label=_(u'Большие города'), choices=countries_list, required=False) def save(self, id=None): @@ -181,7 +183,7 @@ class CountryForm(forms.Form): if phone_code.isdigit(): return phone_code else: - raise ValidationError('Введите правильный код страны') + raise ValidationError(_(u'Введите правильный код страны')) def clean_population(self): @@ -195,7 +197,7 @@ class CountryForm(forms.Form): elif population.isdigit() and population > 0: return int(population) else: - raise ValidationError('Введите правильное население') + raise ValidationError(_(u'Введите правильное население')) def clean_teritory(self): """ @@ -215,11 +217,11 @@ class CountryForm(forms.Form): class CountryDeleteForm(forms.ModelForm): url = forms.CharField(widget=forms.HiddenInput()) - + class Meta: model = Country fields = ('url',) class CountryFilterForm(AdminFilterForm): - model = Country \ No newline at end of file + model = Country diff --git a/country/models.py b/country/models.py index eb086ae7..eeada101 100644 --- a/country/models.py +++ b/country/models.py @@ -90,7 +90,7 @@ class Country(TranslatableModel): # inflect name for russian language. example- в Росии inflect = models.CharField(verbose_name=_(u'Склонение'), max_length=255, blank=True) area = models.ForeignKey(Area, verbose_name=_(u'Географическая зона')) - logo = models.ImageField(verbose_name='Logo', upload_to='country/logo/', blank=True, max_length=255) + logo = models.ImageField(verbose_name=_(u'Logo'), upload_to='country/logo/', blank=True, max_length=255) big_cities = models.ManyToManyField(City, verbose_name=_(u'Большые города'), blank=True, null=True, related_name='cities') capital = models.ForeignKey(City, verbose_name=_(u'Столица'), blank=True, null=True, on_delete=models.PROTECT, related_name='capital') language = models.ManyToManyField(Language, blank=True, null=True) @@ -173,4 +173,4 @@ class Country(TranslatableModel): pre_save.connect(pre_save_handler, sender=Country) -post_save.connect(post_save_handler, sender=Country) \ No newline at end of file +post_save.connect(post_save_handler, sender=Country) diff --git a/django_messages/admin.py b/django_messages/admin.py index 91d004a1..d0f7bd50 100644 --- a/django_messages/admin.py +++ b/django_messages/admin.py @@ -11,7 +11,7 @@ if "notification" in settings.INSTALLED_APPS: from notification import models as notification else: notification = None - + from django_messages.models import Message class MessageAdminForm(forms.ModelForm): @@ -19,7 +19,7 @@ class MessageAdminForm(forms.ModelForm): Custom AdminForm to enable messages to groups and all users. """ group = forms.ChoiceField(label=_('group'), required=False, - help_text=_('Creates the message optionally for all users or a group of users.')) + help_text=_(_(u'Creates the message optionally for all users or a group of users.'))) def __init__(self, *args, **kwargs): super(MessageAdminForm, self).__init__(*args, **kwargs) @@ -75,7 +75,7 @@ class MessageAdmin(admin.ModelAdmin): the message is effectively resent to those users. """ obj.save() - + if notification: # Getting the appropriate notice labels for the sender and recipients. if obj.parent_msg is None: @@ -84,7 +84,7 @@ class MessageAdmin(admin.ModelAdmin): else: sender_label = 'messages_replied' recipients_label = 'messages_reply_received' - + # Notification for the sender. notification.send([obj.sender], sender_label, {'message': obj,}) @@ -108,5 +108,5 @@ class MessageAdmin(admin.ModelAdmin): if notification: # Notification for the recipient. notification.send([user], recipients_label, {'message' : obj,}) - + admin.site.register(Message, MessageAdmin) diff --git a/emencia/django/newsletter/admin_forms.py b/emencia/django/newsletter/admin_forms.py index f70ed361..ce428c9a 100644 --- a/emencia/django/newsletter/admin_forms.py +++ b/emencia/django/newsletter/admin_forms.py @@ -9,7 +9,7 @@ from country.models import Country, Area class ContactSettingsForm(forms.ModelForm): - city = forms.CharField(label=u'Город', widget=forms.HiddenInput() ,required=False) + city = forms.CharField(label=_(u'Город'), widget=forms.HiddenInput() ,required=False) periodic = forms.ChoiceField(choices=ContactSettings.PERIODIC_CHOICES, label=_(u'Периодичность отправки')) first_name = forms.CharField(label=_('first name')) @@ -65,8 +65,8 @@ import xlrd from theme.models import Theme class MailingListForm(forms.ModelForm): - excel_file = forms.FileField(label='Импортировать подписчиков', required=False) - theme_for_filter = forms.MultipleChoiceField(label=u'Тематики', required=False, + excel_file = forms.FileField(label=_(u'Импортировать подписчиков'), required=False) + theme_for_filter = forms.MultipleChoiceField(label=_(u'Тематики'), required=False, choices=[(item.id, item.name) for item in Theme.objects.language().all()]) class Meta: @@ -92,7 +92,7 @@ class MailingListForm(forms.ModelForm): class NewsletterForm(forms.ModelForm): - test_contacts = forms.ModelMultipleChoiceField(label=u'Тестовые контакты', required=False, + test_contacts = forms.ModelMultipleChoiceField(label=_(u'Тестовые контакты'), required=False, queryset=Contact.objects.filter(tester=True)) content = forms.CharField(label=_('content'), widget=CKEditorWidget(config_name='newsletters')) @@ -105,4 +105,4 @@ class NewsletterForm(forms.ModelForm): class AttachmentForm(forms.ModelForm): class Meta: model = Attachment - fields = ('title', 'file_attachment') \ No newline at end of file + fields = ('title', 'file_attachment') diff --git a/emencia/django/newsletter/forms.py b/emencia/django/newsletter/forms.py index 1aba6f53..b992a5af 100644 --- a/emencia/django/newsletter/forms.py +++ b/emencia/django/newsletter/forms.py @@ -129,11 +129,11 @@ class ContactFilterForm(forms.Form): label="Список рассылки", required=False ) - created_from = forms.CharField(max_length=255, label="Создан с", required=False) - created_to = forms.CharField(max_length=255, label="Создан по", required=False) - not_active = forms.BooleanField(label="Не подтверждена подписка", required=False) - not_valid = forms.BooleanField(label="Неалидный Email", required=False) - not_subscriber = forms.BooleanField(label="Отписался", required=False) + created_from = forms.CharField(max_length=255, label=_(u"Создан с"), required=False) + created_to = forms.CharField(max_length=255, label=_(u"Создан по"), required=False) + not_active = forms.BooleanField(label=_(u"Не подтверждена подписка"), required=False) + not_valid = forms.BooleanField(label=_(u"Неалидный Email"), required=False) + not_subscriber = forms.BooleanField(label=_(u"Отписался"), required=False) def filter(self): title = 'contact list ' @@ -181,14 +181,14 @@ class ContactFilterForm(forms.Form): import xlrd COUNTRY_CHOICES = [(c.id, c.name) for c in list(set(Country.objects.language('ru').all()))] -COUNTRY_CHOICES.insert(0, ('', 'Страна')) +COUNTRY_CHOICES.insert(0, ('', _(u'Страна'))) class ContactImportForm(forms.Form): - excel_file = forms.FileField(label='Выберите файл') - activated = forms.BooleanField(label="Активные", required=False) - is_tester = forms.BooleanField(label="Тестовые", required=False) - country = forms.ChoiceField(label="Страна", choices=COUNTRY_CHOICES, required=False) + excel_file = forms.FileField(label=_(u'Выберите файл')) + activated = forms.BooleanField(label=_(u"Активные"), required=False) + is_tester = forms.BooleanField(label=_(u"Тестовые"), required=False) + country = forms.ChoiceField(label=_(u"Страна"), choices=COUNTRY_CHOICES, required=False) def save(self): data = self.cleaned_data @@ -375,7 +375,7 @@ class PopupCountFilter(forms.Form): class MailingStatusFilter(forms.Form): - status = forms.ChoiceField(choices=[('', u'Не выбрано')] + [(item[0], item[1]) for item in ContactMailingStatus.STATUS_CHOICES], + status = forms.ChoiceField(choices=[('', _(u'Не выбрано'))] + [(item[0], item[1]) for item in ContactMailingStatus.STATUS_CHOICES], required=False) email = forms.CharField(required=False, widget=forms.TextInput(attrs={'placeholder': 'Email'})) @@ -387,4 +387,4 @@ class MailingStatusFilter(forms.Form): qs = qs.filter(status=status) if email: qs = qs.filter(contact__email=email) - return qs \ No newline at end of file + return qs diff --git a/emencia/django/newsletter/templates/newsletter/announce_template.html b/emencia/django/newsletter/templates/newsletter/announce_template.html index 992ab4d9..c65b56d4 100644 --- a/emencia/django/newsletter/templates/newsletter/announce_template.html +++ b/emencia/django/newsletter/templates/newsletter/announce_template.html @@ -1,3 +1,4 @@ +{% load i18n %} @@ -9,15 +10,15 @@ @@ -77,7 +78,7 @@ {% if news %}
- +
Новости событий{% trans "Новости событий" %}
@@ -109,7 +110,7 @@
- посмотреть все новости + {% trans "посмотреть все новости" %}
@@ -119,7 +120,7 @@ {% if blogs %} - + @@ -173,4 +174,4 @@
Аналитика для профессионалов{% trans "Аналитика для профессионалов" %}
@@ -162,9 +163,9 @@
- \ No newline at end of file + diff --git a/emencia/django/newsletter/templates/newsletter/base.html b/emencia/django/newsletter/templates/newsletter/base.html index ffe4a2b3..94691456 100644 --- a/emencia/django/newsletter/templates/newsletter/base.html +++ b/emencia/django/newsletter/templates/newsletter/base.html @@ -1,3 +1,5 @@ +{% load i18n %} + @@ -5,10 +7,10 @@ - Emencia Django Newsletter - {% block title %}{% endblock %} + {% trans "Emencia Django Newsletter" %} - {% block title %}{% endblock %} -

Emencia Django Newsletter

+

{% trans "Emencia Django Newsletter" %}

{% block content %} {% endblock %} diff --git a/emencia/django/newsletter/templates/newsletter/mailing_list_unsubscribe.html b/emencia/django/newsletter/templates/newsletter/mailing_list_unsubscribe.html index 3605bb72..402cd0fd 100644 --- a/emencia/django/newsletter/templates/newsletter/mailing_list_unsubscribe.html +++ b/emencia/django/newsletter/templates/newsletter/mailing_list_unsubscribe.html @@ -1,17 +1,19 @@ {% extends 'client/blank.html' %} +{% load i18n %} -{% block title %}Отписаться{% endblock %} + +{% block title %}{% trans "Отписаться" %}{% endblock %} {% block content %}
{% if already_unsubscribed %}
-

Вы уже отписаны отэтой рассылки

+

{% trans "Вы уже отписаны отэтой рассылки" %}

{% else %}
-

Отписаться

+

{% trans "Отписаться" %}

diff --git a/emencia/django/newsletter/templates/newsletter/newsletter_link_unsubscribe.html b/emencia/django/newsletter/templates/newsletter/newsletter_link_unsubscribe.html index 8cfc1522..396cf5a4 100644 --- a/emencia/django/newsletter/templates/newsletter/newsletter_link_unsubscribe.html +++ b/emencia/django/newsletter/templates/newsletter/newsletter_link_unsubscribe.html @@ -3,7 +3,7 @@ - diff --git a/emencia/django/newsletter/views/admin_views.py b/emencia/django/newsletter/views/admin_views.py index c50e854d..e9fbf598 100644 --- a/emencia/django/newsletter/views/admin_views.py +++ b/emencia/django/newsletter/views/admin_views.py @@ -267,7 +267,7 @@ def send_test_newsletter(request, pk): except HTMLParseError: return HttpResponse(_('Unable send newsletter, due to errors within HTML.')) else: - return HttpResponse(u'Нет тестовых контактов') + return HttpResponse(_(u'Нет тестовых контактов')) redirect = request.META.get('HTTP_REFERER', '/admin/newsletter/newsletter/all/') return HttpResponseRedirect(redirect) @@ -382,4 +382,4 @@ class PopupStatisticsView(FormView): data = form.filter() data['form'] = form - return self.render_to_response(data) \ No newline at end of file + return self.render_to_response(data) diff --git a/emencia/django/newsletter/views/mailing_list.py b/emencia/django/newsletter/views/mailing_list.py index 7b8e91a5..abe75c39 100644 --- a/emencia/django/newsletter/views/mailing_list.py +++ b/emencia/django/newsletter/views/mailing_list.py @@ -7,6 +7,7 @@ from django.contrib import messages from django.http import HttpResponseRedirect from django.views.generic import DetailView, TemplateView from django.core.urlresolvers import reverse_lazy +from django.utils.translation import ugettext as _ from emencia.django.newsletter.utils.tokens import untokenize from emencia.django.newsletter.models import Newsletter, MailingList, ContactMailingStatus, Contact, ContactSettings @@ -107,7 +108,7 @@ def unsubscription_handle(request): form.save_additional_fields(setting) if form.cleaned_data.get('get_announce'): - messages.add_message(request, messages.INFO, u'Настройки вашой подписки успешно сохранены') + messages.add_message(request, messages.INFO, _(u'Настройки вашой подписки успешно сохранены')) else: contact.subscriber = False contact.save() diff --git a/expobanner/admin.py b/expobanner/admin.py index 3320ca1b..5a9e11b5 100644 --- a/expobanner/admin.py +++ b/expobanner/admin.py @@ -78,17 +78,17 @@ class AbstractList(ListView): class UrlList(AbstractList): model = URL - verbose = u'Список урлов' + verbose = _(u'Список урлов') class BannerGroupList(AbstractList): model = BannerGroup - verbose = u'Список груп' + verbose = _(u'Список груп') class BannerList(AbstractList): model = Banner - verbose = u'Список банеров' + verbose = _(u'Список банеров') template_name = 'admin/expobanner/banner_list.html' def get_queryset(self): @@ -103,7 +103,7 @@ class BannerList(AbstractList): class LinkList(AbstractList): model = Banner - verbose = u'Список ссылок' + verbose = _(u'Список ссылок') template_name = 'admin/expobanner/link_list.html' def get_queryset(self): diff --git a/expobanner/forms.py b/expobanner/forms.py index 3a236965..ec4dbd11 100644 --- a/expobanner/forms.py +++ b/expobanner/forms.py @@ -15,7 +15,7 @@ from theme.models import Tag, Theme class UrlCreateForm(forms.ModelForm): - verbose = u'Создать урл' + verbose = _(u'Создать урл') class Meta: model = URL @@ -23,14 +23,14 @@ class UrlCreateForm(forms.ModelForm): class BannerCreateGroupForm(forms.ModelForm): - verbose = u'Создать групу' + verbose = _(u'Создать групу') class Meta: model = BannerGroup exclude = ['created_at', 'updated_at', 'speed'] class BannerGroupUpdateForm(BannerCreateGroupForm): - verbose = u'Изменить групу' + verbose = _(u'Изменить групу') class Meta: model = BannerGroup @@ -38,7 +38,7 @@ class BannerGroupUpdateForm(BannerCreateGroupForm): class BannerCreateForm(forms.ModelForm): - verbose = u'Создать банер' + verbose = _(u'Создать банер') text = forms.CharField(label=u'Текст', required=False, widget=CKEditorWidget) class Meta: model = Banner @@ -46,7 +46,7 @@ class BannerCreateForm(forms.ModelForm): class BannerLinkCreateForm(forms.ModelForm): - verbose = u'Отслеживаемую ссылку' + verbose = _(u'Отслеживаемую ссылку') class Meta: model = Banner @@ -64,7 +64,7 @@ class BannerLinkCreateForm(forms.ModelForm): class ClientStatForm(forms.Form): - stat_pswd = forms.CharField(label=u'Введите пароль:') + stat_pswd = forms.CharField(label=_(u'Введите пароль:')) def check_pass(self, obj): pswd = self.cleaned_data['stat_pswd'] @@ -72,9 +72,9 @@ class ClientStatForm(forms.Form): class BasePaidCreateForm(forms.ModelForm): - tickets = forms.URLField(label=u'Линк на билеты') - participation = forms.URLField(label=u'Линк на участие') - official = forms.URLField(label=u'Линк на официальный сайт') + tickets = forms.URLField(label=_(u'Линк на билеты')) + participation = forms.URLField(label=_(u'Линк на участие')) + official = forms.URLField(label=_(u'Линк на официальный сайт')) class Meta: model = Paid @@ -111,8 +111,8 @@ class BasePaidCreateForm(forms.ModelForm): class PaidCreateForm(BasePaidCreateForm): kind = 1 - verbose = u'Создать проплаченую выставку' - exposition = forms.CharField(label=u'Выставка', widget=forms.HiddenInput()) + verbose = _(u'Создать проплаченую выставку') + exposition = forms.CharField(label=_(u'Выставка'), widget=forms.HiddenInput()) def get_target_obj(self): return self.cleaned_data['exposition'] @@ -122,14 +122,14 @@ class PaidCreateForm(BasePaidCreateForm): try: expo = Exposition.objects.get(id=expo_id) except Exposition.DoesNotExist: - raise forms.ValidationError(u'Такой выставки не существует') + raise forms.ValidationError(_(u'Такой выставки не существует')) return expo class PaidConfCreateForm(BasePaidCreateForm): kind = 2 - verbose = u'Создать проплаченую конференцию' - conference = forms.CharField(label=u'Конференция', widget=forms.HiddenInput()) + verbose = _(u'Создать проплаченую конференцию') + conference = forms.CharField(label=_(u'Конференция'), widget=forms.HiddenInput()) def get_target_obj(self): return self.cleaned_data['conference'] @@ -139,13 +139,13 @@ class PaidConfCreateForm(BasePaidCreateForm): try: expo = Conference.objects.get(id=conference_id) except Conference.DoesNotExist: - raise forms.ValidationError(u'Такой конференции не существует') + raise forms.ValidationError(_(u'Такой конференции не существует')) return expo class MainCreateForm(forms.ModelForm): - verbose = u'Добавить выставку на главную' - exposition = forms.CharField(label=u'Выставка', widget=forms.HiddenInput()) + verbose = _(u'Добавить выставку на главную') + exposition = forms.CharField(label=_(u'Выставка'), widget=forms.HiddenInput()) class Meta: model = MainPage @@ -169,13 +169,13 @@ class MainCreateForm(forms.ModelForm): try: expo = Exposition.objects.get(id=expo_id) except Exposition.DoesNotExist: - raise forms.ValidationError(u'Такой выставки не существует') + raise forms.ValidationError(_(u'Такой выставки не существует')) return expo class MainConfCreateForm(forms.ModelForm): - verbose = u'Добавить конференцию на главную' - conf = forms.CharField(label=u'Конференция', widget=forms.HiddenInput()) + verbose = _(u'Добавить конференцию на главную') + conf = forms.CharField(label=_(u'Конференция'), widget=forms.HiddenInput()) class Meta: model = MainPage @@ -199,14 +199,14 @@ class MainConfCreateForm(forms.ModelForm): try: conf = Conference.objects.get(id=conf_id) except Conference.DoesNotExist: - raise forms.ValidationError(u'Такой конференции не существует') + raise forms.ValidationError(_(u'Такой конференции не существует')) return conf class PaidUpdateForm(forms.ModelForm): - tickets = forms.URLField(label=u'Линк на билеты') - participation = forms.URLField(label=u'Линк на участие') - official = forms.URLField(label=u'Линк на официальный сайт') + tickets = forms.URLField(label=_(u'Линк на билеты')) + participation = forms.URLField(label=_(u'Линк на участие')) + official = forms.URLField(label=_(u'Линк на официальный сайт')) class Meta: model = Paid @@ -308,10 +308,10 @@ class TopMixinForm(forms.ModelForm, FieldsetMixin): return top class TopCreateForm(TopMixinForm): - verbose = u'Создать выставку в топе' - exposition = forms.CharField(label=u'Выставка', widget=forms.HiddenInput()) - country = forms.MultipleChoiceField(label=u'Страна', choices=[('', ' ')] + [(c.id, c.name) for c in Country.objects.all()], required=False) - theme = forms.MultipleChoiceField(label=u'Тематика', required=False, + verbose = _(u'Создать выставку в топе') + exposition = forms.CharField(label=_(u'Выставка'), widget=forms.HiddenInput()) + country = forms.MultipleChoiceField(label=_(u'Страна'), choices=[('', ' ')] + [(c.id, c.name) for c in Country.objects.all()], required=False) + theme = forms.MultipleChoiceField(label=_(u'Тематика'), required=False, choices=[('', ' ')] + [(item.id, item.name) for item in Theme.objects.language().all()]) #excluded_cities = forms.CharField(label=u'Город', widget=forms.HiddenInput(), required=False) #excluded_tags = forms.CharField(label=u'Тег', widget=forms.HiddenInput(), required=False) @@ -356,9 +356,9 @@ class TopCreateForm(TopMixinForm): try: expo = Exposition.objects.get(id=expo_id) except Exposition.DoesNotExist: - raise forms.ValidationError(u'Такой выставки не существует') + raise forms.ValidationError(_(u'Такой выставки не существует')) return expo class TopUpdateForm(TopMixinForm): - verbose = u'Изменить выставку' + verbose = _(u'Изменить выставку') diff --git a/expobanner/models.py b/expobanner/models.py index 994a892a..94144548 100644 --- a/expobanner/models.py +++ b/expobanner/models.py @@ -23,12 +23,12 @@ class URL(models.Model): """ Model for urls or regex urls that can be used in banners representation """ - title = models.CharField(verbose_name=u'Заголовок', max_length=256) - url = models.CharField(verbose_name=u'URL or URL RegEx', max_length=2048) - regex = models.BooleanField(verbose_name=u'RegEx', default=False) + title = models.CharField(verbose_name=_(u'Заголовок'), max_length=256) + url = models.CharField(verbose_name=_(u'URL or URL RegEx'), max_length=2048) + regex = models.BooleanField(verbose_name=_(u'RegEx'), default=False) sites = models.ManyToManyField(Site, related_name='site_urls', verbose_name=_('Sites'), null=True, blank=True) - public = models.BooleanField(verbose_name=u'Активный', default=True) + public = models.BooleanField(verbose_name=_(u'Активный'), default=True) created_at = models.DateTimeField(verbose_name=_('Created At'), auto_now_add=True) updated_at = models.DateTimeField(verbose_name=_('Updated At'), auto_now=True) @@ -51,13 +51,13 @@ class BannerGroup (models.Model): """ place where banner can be show """ - name = models.CharField(verbose_name=u'Имя', max_length=255) - slug = models.SlugField(verbose_name=u'URL', unique=True) - width = models.PositiveSmallIntegerField(verbose_name=u'Ширина', default=0) - height = models.PositiveSmallIntegerField(verbose_name=u'Высота', default=0) - speed = models.PositiveSmallIntegerField(verbose_name=u'Скорость отображения', default=2000) + name = models.CharField(verbose_name=_(u'Имя'), max_length=255) + slug = models.SlugField(verbose_name=_(u'URL'), unique=True) + width = models.PositiveSmallIntegerField(verbose_name=_(u'Ширина'), default=0) + height = models.PositiveSmallIntegerField(verbose_name=_(u'Высота'), default=0) + speed = models.PositiveSmallIntegerField(verbose_name=_(u'Скорость отображения'), default=2000) - public = models.BooleanField(verbose_name=u'Активная', default=True) + public = models.BooleanField(verbose_name=_(u'Активная'), default=True) created_at = models.DateTimeField(verbose_name=_('Created At'), auto_now_add=True) updated_at = models.DateTimeField(verbose_name=_('Updated At'), auto_now=True) @@ -85,19 +85,19 @@ class Banner(models.Model, StatMixin): """ objects = BiasedManager() - title = models.CharField(verbose_name=u'Заголовок', max_length=255, blank=True) + title = models.CharField(verbose_name=_(u'Заголовок'), max_length=255, blank=True) alt = models.CharField(verbose_name=_('Alt'), max_length=255) - text = models.TextField(verbose_name=u'Текст', blank=True, null=True) - img = models.FileField(verbose_name=u'Картинка', upload_to='expo_upload', blank=True, null=True) - url = models.CharField(verbose_name=u'URL', max_length=1024) + text = models.TextField(verbose_name=_(u'Текст'), blank=True, null=True) + img = models.FileField(verbose_name=_(u'Картинка'), upload_to='expo_upload', blank=True, null=True) + url = models.CharField(verbose_name=_(u'URL'), max_length=1024) fr = models.DateField(default=date.today()) to = models.DateField(blank=True, null=True) - theme = models.ManyToManyField(Theme, blank=True, null=True, verbose_name=u'Тематика') - country = models.ManyToManyField(Country, blank=True, null=True, verbose_name=u'Страна') + theme = models.ManyToManyField(Theme, blank=True, null=True, verbose_name=_(u'Тематика')) + country = models.ManyToManyField(Country, blank=True, null=True, verbose_name=_(u'Страна')) - sort = models.PositiveSmallIntegerField(verbose_name=u'Сорт', default=500) - group = models.ForeignKey(BannerGroup, related_name='banners', verbose_name=u'Место', null=True, blank=True) + sort = models.PositiveSmallIntegerField(verbose_name=_(u'Сорт'), default=500) + group = models.ForeignKey(BannerGroup, related_name='banners', verbose_name=_(u'Место'), null=True, blank=True) often = models.PositiveSmallIntegerField( verbose_name=_('Often'), help_text=_('A ten will display 10 times more often that a one.'), @@ -114,7 +114,7 @@ class Banner(models.Model, StatMixin): # for detecting popups cookie = models.CharField(max_length=30, blank=True, null=True, default=settings.DEFAULT_POPUP_COOKIE) - public = models.BooleanField(verbose_name=u'Активный', default=True) + public = models.BooleanField(verbose_name=_(u'Активный'), default=True) created_at = models.DateTimeField(verbose_name=_('Created At'), auto_now_add=True) updated_at = models.DateTimeField(verbose_name=_('Updated At'), auto_now=True) # password for clients @@ -247,7 +247,7 @@ class Paid(models.Model, StatMixin): catalog = models.ForeignKey(Banner, related_name='paid_catalog') logo = models.ImageField(upload_to='expo-b/paid', blank=True) organiser = models.CharField(max_length=100, blank=True) - public = models.BooleanField(default=True, verbose_name=u'Активная') + public = models.BooleanField(default=True, verbose_name=_(u'Активная')) stat_pswd = models.CharField(max_length=16) created = models.DateTimeField(auto_now_add=True) modified = models.DateTimeField(auto_now=True) @@ -291,17 +291,17 @@ class Top(models.Model, StatMixin): ) link = models.ForeignKey(Banner) - catalog = models.CharField(max_length=16, verbose_name=u'Каталог для топа') - position = models.PositiveIntegerField(blank=True, default=2, null=True, verbose_name=u'Позиция') - theme = models.ManyToManyField('theme.Theme', blank=True, null=True, verbose_name=u'Тематики') - excluded_tags = models.ManyToManyField('theme.Tag', blank=True, null=True, verbose_name=u'Исключить теги') - country = models.ManyToManyField('country.Country', blank=True, null=True, verbose_name=u'Страны') + catalog = models.CharField(max_length=16, verbose_name=_(u'Каталог для топа')) + position = models.PositiveIntegerField(blank=True, default=2, null=True, verbose_name=_(u'Позиция')) + theme = models.ManyToManyField('theme.Theme', blank=True, null=True, verbose_name=_(u'Тематики')) + excluded_tags = models.ManyToManyField('theme.Tag', blank=True, null=True, verbose_name=_(u'Исключить теги')) + country = models.ManyToManyField('country.Country', blank=True, null=True, verbose_name=_(u'Страны')) cities = models.ManyToManyField('city.City', related_name='top_in_set', blank=True, null=True, verbose_name=_(u'Города')) months = MonthMultiSelectField(_(u'Топ месяца'), blank=True, null=True, default=None, max_length=255,) years = models.PositiveSmallIntegerField(_(u'Топ года'), choices=YEARS, blank=True, null=True, default=None) - excluded_cities = models.ManyToManyField('city.City', blank=True, null=True, verbose_name=u'Исключить города') - fr = models.DateField(default=date.today(), verbose_name=u'Начало') - to = models.DateField(blank=True, null=True, verbose_name=u'Конец') + excluded_cities = models.ManyToManyField('city.City', blank=True, null=True, verbose_name=_(u'Исключить города')) + fr = models.DateField(default=date.today(), verbose_name=_(u'Начало')) + to = models.DateField(blank=True, null=True, verbose_name=_(u'Конец')) stat_pswd = models.CharField(max_length=16) objects = models.Manager() @@ -335,8 +335,8 @@ class MainPage(models.Model, StatMixin): events on main page info """ link = models.ForeignKey(Banner) - position = models.PositiveIntegerField(blank=True, default=2, null=True, verbose_name=u'Позиция') - public = models.BooleanField(default=True, verbose_name=u'Активная') + position = models.PositiveIntegerField(blank=True, default=2, null=True, verbose_name=_(u'Позиция')) + public = models.BooleanField(default=True, verbose_name=_(u'Активная')) stat_pswd = models.CharField(max_length=16) created = models.DateTimeField(auto_now_add=True) modified = models.DateTimeField(auto_now=True) diff --git a/expobanner/stat_views.py b/expobanner/stat_views.py index a1ac7ae7..e1feceac 100644 --- a/expobanner/stat_views.py +++ b/expobanner/stat_views.py @@ -7,6 +7,7 @@ from django.conf import settings from django.core.urlresolvers import reverse from expobanner.models import Banner, Paid from expobanner.forms import ClientStatForm +from django.utils.translation import ugettext as _ @@ -46,7 +47,7 @@ class BannerStat(FormMixin, DetailView): self.request.session[obj.get_cookie_name()] = 1 return HttpResponseRedirect(self.get_success_url()) else: - form.errors['stat_pswd'] = ErrorList([u'Неправильный пароль']) + form.errors['stat_pswd'] = ErrorList([_(u'Неправильный пароль')]) return self.form_invalid(form) class PaidStat(BannerStat): @@ -54,4 +55,4 @@ class PaidStat(BannerStat): template_name = 'client/expobanners/paid_stat.html' def get_success_url(self): - return reverse('paid_stat_client', kwargs={'pk': self.object.pk}) \ No newline at end of file + return reverse('paid_stat_client', kwargs={'pk': self.object.pk}) diff --git a/exposition/forms.py b/exposition/forms.py index 687a0393..f4949e0b 100644 --- a/exposition/forms.py +++ b/exposition/forms.py @@ -32,64 +32,64 @@ class ExpositionCreateForm(forms.Form): save function saves data in Exposition object. If it doesnt exist create new object """ - PERIODIC = ((0, u'Не выбрано'), (1.0, u'Ежегодно'), (2.0, u'2 раза в год'), (3.0, u'3 раза в год'), - (4.0, u'4 раза в год'), (5.0, u'5 раз в год'), (0.5, u'Раз в 2 года'),(0.33, u'Раз в 3 года'), - (0.25, u'Раз в 4 года'), (0.2, u'Раз в 5 лет')) + PERIODIC = ((0, _(u'Не выбрано')), (1.0, _(u'Ежегодно')), (2.0, _(u'2 раза в год')), (3.0, _(u'3 раза в год')), + (4.0, _(u'4 раза в год')), (5.0, _(u'5 раз в год')), (0.5, _(u'Раз в 2 года')),(0.33, _(u'Раз в 3 года')), + (0.25, _(u'Раз в 4 года')), (0.2, _(u'Раз в 5 лет'))) public = [(item1, item2) for item1, item2 in BIT_AUDIENCE] currencies = [(item, item) for item in CURRENCY] - data_begin = forms.DateField(label=u'Дата начала', input_formats=['%Y-%m-%d', '%d.%m.%Y']) - data_end = forms.DateField(label=u'Дата окончания', input_formats=['%Y-%m-%d', '%d.%m.%Y']) - logo = forms.ImageField(label='Logo', required=False) + data_begin = forms.DateField(label=_(u'Дата начала'), input_formats=['%Y-%m-%d', '%d.%m.%Y']) + data_end = forms.DateField(label=_(u'Дата окончания'), input_formats=['%Y-%m-%d', '%d.%m.%Y']) + logo = forms.ImageField(label=_('Logo'), required=False) #organiser = forms.MultipleChoiceField(label=u'Организаторы', required=False, # choices=[(item.id, item.name) for item in Organiser.objects.language().all()]) - org = forms.CharField(required=False, label=u'Организатор') + org = forms.CharField(required=False, label=_(u'Организатор')) #company = forms.MultipleChoiceField(label=u'Компании', required=False, # choices=[(item.id, item.name) for item in Company.objects.language().all()] ) - country = forms.ChoiceField(label=u'Страна', choices=[(c.id, c.name) for c in Country.objects.all()]) + country = forms.ChoiceField(label=_(u'Страна'), choices=[(c.id, c.name) for c in Country.objects.all()]) theme = forms.MultipleChoiceField( - label='Тематики', + label=_(u'Тематики'), choices=[(item.id, item.name) for item in Theme.objects.language().filter(types=Theme.types.exposition)]) - place = forms.ChoiceField(label=u'Место проведения', required=False, + place = forms.ChoiceField(label=_(u'Место проведения'), required=False, choices=places) - place_alt = forms.CharField(required=False, label=u'Альтернативное место') + place_alt = forms.CharField(required=False, label=_(u'Альтернативное место')) #creates select input with empty choices cause it will be filled with ajax - city = forms.CharField(label=u'Город', widget=forms.HiddenInput()) - tag = forms.CharField(label=u'Теги', widget=forms.HiddenInput(), required=False) - - periodic = forms.ChoiceField(label=u'Периодичность', choices=PERIODIC, required=False) - audience = forms.MultipleChoiceField(label=u'Аудитория', choices=public, initial='', required=False) - web_page = forms.CharField(label=u'Веб страница', required=False) - registration_link = forms.CharField(label=u'Ссылка на регистрацию', required=False) - foundation_year = forms.CharField(label=u'Год основания', required=False) - members = forms.CharField(label=u'Участники', required=False) - visitors = forms.CharField(label=u'Посетители', required=False) - min_area = forms.CharField(label=u'Минимальная площадь', required=False) - discount = forms.CharField(label=u'Cкидка(%)', required=False) - area = forms.CharField(label=u'Площадь', required=False) - quality_label = forms.MultipleChoiceField(label=u'Метки', required=False, + city = forms.CharField(label=_(u'Город'), widget=forms.HiddenInput()) + tag = forms.CharField(label=_(u'Теги'), widget=forms.HiddenInput(), required=False) + + periodic = forms.ChoiceField(label=_(u'Периодичность'), choices=PERIODIC, required=False) + audience = forms.MultipleChoiceField(label=_(u'Аудитория'), choices=public, initial='', required=False) + web_page = forms.CharField(label=_(u'Веб страница'), required=False) + registration_link = forms.CharField(label=_(u'Ссылка на регистрацию'), required=False) + foundation_year = forms.CharField(label=_(u'Год основания'), required=False) + members = forms.CharField(label=_(u'Участники'), required=False) + visitors = forms.CharField(label=_(u'Посетители'), required=False) + min_area = forms.CharField(label=_(u'Минимальная площадь'), required=False) + discount = forms.CharField(label=_(u'Cкидка(%)'), required=False) + area = forms.CharField(label=_(u'Площадь'), required=False) + quality_label = forms.MultipleChoiceField(label=_(u'Метки'), required=False, choices=[('ufi', 'UFI'), ('rsva', 'РСВЯ'), ('exporating', 'ExpoRating')], widget=forms.CheckboxSelectMultiple()) # - currency = forms.ChoiceField(label=u'Валюта', choices=currencies, required=False) - application_deadline = forms.DateField(label=u'Срок подачи стенда',input_formats=['%Y-%m-%d', '%d.%m.%Y'], required=False) - min_stand_size = forms.CharField(label=u'Минимальный размер стенда', required=False) - - price_catalog = forms.CharField(label=u'Цена за каталог', required=False) - tax = forms.BooleanField(label=u'Налог включен', initial=True, required=False) - min_closed_area = forms.CharField(label=u'Минимальная цена закрытой НЕ оборудованной площади', required=False) - max_closed_area = forms.CharField(label=u'Максимальная цена закрытой НЕ оборудованной площади', required=False) - min_closed_equipped_area = forms.CharField(label=u'Минимальная цена закрытой оборудованной площади', required=False) - max_closed_equipped_area = forms.CharField(label=u'Максимальная цена закрытой оборудованной площади', required=False) - min_open_area = forms.CharField(label=u'Минимальная цена открытой площади', required=False) - max_open_area = forms.CharField(label=u'Максимальная цена открытой площади', required=False) - registration_payment = forms.CharField(label=u'Регистрационны взнос', required=False) - - expohit = forms.BooleanField(label=u'Expohit', required=False) - canceled = forms.BooleanField(label=u'Отменена', required=False) - moved = forms.BooleanField(label=u'Перенесена', required=False) + currency = forms.ChoiceField(label=_(u'Валюта'), choices=currencies, required=False) + application_deadline = forms.DateField(label=_(u'Срок подачи стенда'),input_formats=['%Y-%m-%d', '%d.%m.%Y'], required=False) + min_stand_size = forms.CharField(label=_(u'Минимальный размер стенда'), required=False) + + price_catalog = forms.CharField(label=_(u'Цена за каталог'), required=False) + tax = forms.BooleanField(label=_(u'Налог включен'), initial=True, required=False) + min_closed_area = forms.CharField(label=_(u'Минимальная цена закрытой НЕ оборудованной площади'), required=False) + max_closed_area = forms.CharField(label=_(u'Максимальная цена закрытой НЕ оборудованной площади'), required=False) + min_closed_equipped_area = forms.CharField(label=_(u'Минимальная цена закрытой оборудованной площади'), required=False) + max_closed_equipped_area = forms.CharField(label=_(u'Максимальная цена закрытой оборудованной площади'), required=False) + min_open_area = forms.CharField(label=_(u'Минимальная цена открытой площади'), required=False) + max_open_area = forms.CharField(label=_(u'Максимальная цена открытой площади'), required=False) + registration_payment = forms.CharField(label=_(u'Регистрационны взнос'), required=False) + + expohit = forms.BooleanField(label=_(u'Expohit'), required=False) + canceled = forms.BooleanField(label=_(u'Отменена'), required=False) + moved = forms.BooleanField(label=_(u'Перенесена'), required=False) #field for comparing tmp files key = forms.CharField(required=False, widget=forms.HiddenInput()) # @@ -107,46 +107,46 @@ class ExpositionCreateForm(forms.Form): # uses enumerate for detect iteration number # first iteration is a default lang so it required fields required = True if lid == 0 else False - self.fields['name_%s' % code] = forms.CharField(label=u'Название', required=required, + self.fields['name_%s' % code] = forms.CharField(label=_(u'Название'), required=required, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['main_title_%s' % code] = forms.CharField(label=u'Краткое описание', + self.fields['main_title_%s' % code] = forms.CharField(label=_(u'Краткое описание'), required=False, widget=CKEditorWidget) - self.fields['description_%s' % code] = forms.CharField(label=u'Описание', + self.fields['description_%s' % code] = forms.CharField(label=_(u'Описание'), required=False, widget=CKEditorWidget) - self.fields['time_%s' % code] = forms.CharField(label=u'Время работы', + self.fields['time_%s' % code] = forms.CharField(label=_(u'Время работы'), required=False, widget=CKEditorWidget) - self.fields['price_day_%s' % code] = forms.CharField(label=u'Стоимость билета 1 день', required=False, + self.fields['price_day_%s' % code] = forms.CharField(label=_(u'Стоимость билета 1 день'), required=False, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['price_all_%s' % code] = forms.CharField(label=u'Стоимость билета все дни', required=False, + self.fields['price_all_%s' % code] = forms.CharField(label=_(u'Стоимость билета все дни'), required=False, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['price_day_bar_%s' % code] = forms.CharField(label=u'Стоимость на стойке 1 день', required=False, + self.fields['price_day_bar_%s' % code] = forms.CharField(label=_(u'Стоимость на стойке 1 день'), required=False, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['price_all_bar_%s' % code] = forms.CharField(label=u'Стоимость на стойке все дни', required=False, + self.fields['price_all_bar_%s' % code] = forms.CharField(label=_(u'Стоимость на стойке все дни'), required=False, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['products_%s' % code] = forms.CharField(label=u'Экспонируемые продукты', + self.fields['products_%s' % code] = forms.CharField(label=_(u'Экспонируемые продукты'), required=False, widget=CKEditorWidget) - self.fields['discount_description_%s' % code] = forms.CharField(label=u'Описание скидки', + self.fields['discount_description_%s' % code] = forms.CharField(label=_(u'Описание скидки'), required=False, widget=CKEditorWidget) - self.fields['stat_countries_%s' % code] = forms.CharField(label=u'Участвующие страны', + self.fields['stat_countries_%s' % code] = forms.CharField(label=_(u'Участвующие страны'), required=False, widget=CKEditorWidget) - self.fields['pre_condition_%s' % code] = forms.CharField(label=u'Условия предварительной регистрации',required=False, + self.fields['pre_condition_%s' % code] = forms.CharField(label=_(u'Условия предварительной регистрации'),required=False, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['stand_condition_%s' % code] = forms.CharField(label=u'Условия регистрации на стойке',required=False, + self.fields['stand_condition_%s' % code] = forms.CharField(label=_(u'Условия регистрации на стойке'),required=False, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['visit_note_%s' % code] = forms.CharField(label=u'Примечание по посещению',required=False, + self.fields['visit_note_%s' % code] = forms.CharField(label=_(u'Примечание по посещению'),required=False, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['participation_note_%s' % code] = forms.CharField(label=u'Примечание по участии',required=False, + self.fields['participation_note_%s' % code] = forms.CharField(label=_(u'Примечание по участии'),required=False, widget=forms.TextInput(attrs={'style':'width: 550px'})) #meta data - self.fields['title_%s' % code] = forms.CharField(label=u'Meta title', required=False, max_length=255, + self.fields['title_%s' % code] = forms.CharField(label=_(u'Meta title'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['keywords_%s' % code] = forms.CharField(label=u'Meta keywords', required=False, max_length=255, + self.fields['keywords_%s' % code] = forms.CharField(label=_(u'Meta keywords'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['descriptions_%s' % code] = forms.CharField(label=u'Meta description', required=False, max_length=255, + self.fields['descriptions_%s' % code] = forms.CharField(label=_(u'Meta description'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) def save(self, obj=None): @@ -248,7 +248,7 @@ class ExpositionCreateForm(forms.Form): exposition = Exposition.objects.filter(url=translit_with_separator(name_ru)) if exposition and str(exposition[0].id) != id: - msg = 'Выставка с таким названием уже существует' + msg = _(u'Выставка с таким названием уже существует') self._errors['name_ru'] = ErrorList([msg]) del self.cleaned_data['name_ru'] @@ -467,11 +467,11 @@ class ExpositionDeleteForm(forms.ModelForm): class StatisticForm(forms.Form): - year = forms.CharField(widget=forms.TextInput(attrs={'style': 'width:70px'}), label='Год') - visitors = forms.CharField(widget=forms.TextInput(attrs={'style': 'width:70px'}), required=False, label='Посетители') - members = forms.CharField(widget=forms.TextInput(attrs={'style': 'width:70px'}), required=False, label='Участники') - area = forms.CharField(widget=forms.TextInput(attrs={'style': 'width:70px'}), required=False, label='Площадь') - countries_number = forms.CharField(widget=forms.TextInput(attrs={'style': 'width:70px'}), required=False, label='Число стран') + year = forms.CharField(widget=forms.TextInput(attrs={'style': 'width:70px'}), label=_(u'Год')) + visitors = forms.CharField(widget=forms.TextInput(attrs={'style': 'width:70px'}), required=False, label=_(u'Посетители')) + members = forms.CharField(widget=forms.TextInput(attrs={'style': 'width:70px'}), required=False, label=_(u'Участники')) + area = forms.CharField(widget=forms.TextInput(attrs={'style': 'width:70px'}), required=False, label=_(u'Площадь')) + countries_number = forms.CharField(widget=forms.TextInput(attrs={'style': 'width:70px'}), required=False, label=_(u'Число стран')) def __init__(self, *args, **kwargs): """ @@ -485,7 +485,7 @@ class StatisticForm(forms.Form): # uses enumerate for detect iteration number # first iteration is a default lang so it required fields required = True if lid == 0 else False - self.fields['countries_%s' % code] = forms.CharField(label=u'Участвующие страны', + self.fields['countries_%s' % code] = forms.CharField(label=_(u'Участвующие страны'), required=False, widget=forms.TextInput(attrs={'style':'width: 250px'})) @@ -532,11 +532,11 @@ class StatisticForm(forms.Form): from functions.files import check_tmp_timetables class TimeTableForm(forms.Form): - begin = forms.DateTimeField(label='Время начала', input_formats=date_formats, + begin = forms.DateTimeField(label=_(u'Время начала'), input_formats=date_formats, widget=forms.TextInput(attrs={'style':'width: 150px'})) - end = forms.DateTimeField(label='Время окончания', input_formats=date_formats, + end = forms.DateTimeField(label=_(u'Время окончания'), input_formats=date_formats, widget=forms.TextInput(attrs={'style':'width: 150px'})) - timetable_organiser = forms.ChoiceField(label='Организатор', required=False, + timetable_organiser = forms.ChoiceField(label=_(u'Организатор'), required=False, choices=[(item.id, item.name) for item in Organiser.objects.language().all()]) def __init__(self, *args, **kwargs): @@ -552,13 +552,13 @@ class TimeTableForm(forms.Form): # uses enumerate for detect iteration number # first iteration is a default lang so it required fields required = True if lid == 0 else False - self.fields['name_%s' % code] = forms.CharField(label='Название программы', required=required, + self.fields['name_%s' % code] = forms.CharField(label=_(u'Название программы'), required=required, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['programe_%s' % code] = forms.CharField(label='Программа', required=False, + self.fields['programe_%s' % code] = forms.CharField(label=_(u'Программа'), required=False, widget=CKEditorWidget) - self.fields['speaker_%s' % code] = forms.CharField(label='Организатор', required=False, + self.fields['speaker_%s' % code] = forms.CharField(label=_(u'Организатор'), required=False, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['place_%s' % code] = forms.CharField(label='Место проведения', required=False, + self.fields['place_%s' % code] = forms.CharField(label=_(u'Место проведения'), required=False, widget=forms.TextInput(attrs={'style':'width: 550px'})) def save(self,exposition=None): @@ -591,11 +591,11 @@ monthes = [('', ''), class ExpositionFilterForm(AdminFilterForm): model = Exposition - country = forms.MultipleChoiceField(label=u'Страна', choices=[(c.id, c.name) for c in Country.objects.all()], + country = forms.MultipleChoiceField(label=_(u'Страна'), choices=[(c.id, c.name) for c in Country.objects.all()], required=False) #city = forms.CharField(label=u'Город', widget=forms.HiddenInput(), required=False) - year = forms.CharField(label=u'Год', required=False) - month = forms.ChoiceField(label=u'Месяц',choices=[(item[0], item[1]) for item in monthes], required=False) + year = forms.CharField(label=_(u'Год'), required=False) + month = forms.ChoiceField(label=_(u'Месяц'),choices=[(item[0], item[1]) for item in monthes], required=False) def filter(self): diff --git a/exposition/models.py b/exposition/models.py index 7a1febe6..6c6a4dae 100644 --- a/exposition/models.py +++ b/exposition/models.py @@ -55,39 +55,39 @@ class Exposition(TranslatableModel, EventMixin, ExpoMixin): url = models.SlugField(unique=True, max_length=255) old_url = models.SlugField(unique=True, max_length=255) - data_begin = models.DateField(verbose_name='Дата начала') - data_end = models.DateField(verbose_name='Дата окончания') + data_begin = models.DateField(verbose_name=_(u'Дата начала')) + data_end = models.DateField(verbose_name=_(u'Дата окончания')) services = BitField(flags=flags) # relations - creator = models.ForeignKey('accounts.User', verbose_name=u'Создатель', on_delete=models.SET_NULL, + creator = models.ForeignKey('accounts.User', verbose_name=_(u'Создатель'), on_delete=models.SET_NULL, related_name='exposition_creator', blank=True, null=True) - country = models.ForeignKey('country.Country', verbose_name='Страна', on_delete=models.PROTECT, + country = models.ForeignKey('country.Country', verbose_name=_(u'Страна'), on_delete=models.PROTECT, related_name='exposition_country') - city = models.ForeignKey('city.City', verbose_name='Город', on_delete=models.PROTECT, + city = models.ForeignKey('city.City', verbose_name=_(u'Город'), on_delete=models.PROTECT, related_name='exposition_city') - place = models.ForeignKey('place_exposition.PlaceExposition', verbose_name='Место проведения', + place = models.ForeignKey('place_exposition.PlaceExposition', verbose_name=_(u'Место проведения'), blank=True, null=True, on_delete=models.PROTECT, related_name='exposition_place') - theme = models.ManyToManyField('theme.Theme', verbose_name='Тематики', + theme = models.ManyToManyField('theme.Theme', verbose_name=_(u'Тематики'), related_name='exposition_themes') - tag = models.ManyToManyField('theme.Tag', verbose_name='Теги', + tag = models.ManyToManyField('theme.Tag', verbose_name=_(u'Теги'), blank=True, null=True, related_name='exposition_tags') - organiser = models.ManyToManyField('organiser.Organiser', verbose_name='Организатор', + organiser = models.ManyToManyField('organiser.Organiser', verbose_name=_(u'Организатор'), blank=True, null=True, related_name='exposition_organisers') org = models.CharField(max_length=255, blank=True, null=True) place_alt = models.CharField(max_length=255, blank=True, null=True) - company = models.ManyToManyField('company.Company', verbose_name='Компании', + company = models.ManyToManyField('company.Company', verbose_name=_(u'Компании'), blank=True, null=True, related_name='exposition_companies') - users = models.ManyToManyField('accounts.User', verbose_name='Посетители выставки', + users = models.ManyToManyField('accounts.User', verbose_name=_(u'Посетители выставки'), blank=True, null=True, related_name='exposition_users') photogallery = models.ForeignKey('photologue.Gallery', blank=True, null=True, on_delete=models.SET_NULL) logo = models.ImageField(verbose_name='Logo', upload_to='exposition/logo/', blank=True) rating = models.IntegerField(default=0) # добавить индекс в базе quality_label = BitField(flags=['ufi', 'rsva', 'exporating']) - visitors = models.PositiveIntegerField(verbose_name='Посетители', blank=True, null=True) - members = models.PositiveIntegerField(verbose_name='Участники', blank=True, null=True) - discount = models.PositiveIntegerField(verbose_name='Скидка', blank=True, null=True) - expohit = models.BooleanField(verbose_name='Expohit', default=0) + visitors = models.PositiveIntegerField(verbose_name=_(u'Посетители'), blank=True, null=True) + members = models.PositiveIntegerField(verbose_name=_(u'Участники'), blank=True, null=True) + discount = models.PositiveIntegerField(verbose_name=_(u'Скидка'), blank=True, null=True) + expohit = models.BooleanField(verbose_name=_(u'Expohit'), default=0) # administrator can cancel exposition canceled_by_administrator = models.BooleanField(default=0) #can publish not immediately @@ -103,22 +103,22 @@ class Exposition(TranslatableModel, EventMixin, ExpoMixin): views = models.PositiveIntegerField(default=0) translations = TranslatedFields( - name = models.CharField(verbose_name='Название', max_length=255), - main_title = models.TextField(verbose_name='Краткое описание', blank=True), - description = models.TextField(verbose_name='Описание', blank=True), - products = models.TextField(verbose_name='Экспонируемые продукты', blank=True), - discount_description = models.TextField(verbose_name='Описание скидки', blank=True), - time = models.TextField(verbose_name='Время работы', blank=True), + name = models.CharField(verbose_name=_(u'Название'), max_length=255), + main_title = models.TextField(verbose_name=_(u'Краткое описание'), blank=True), + description = models.TextField(verbose_name=_(u'Описание'), blank=True), + products = models.TextField(verbose_name=_(u'Экспонируемые продукты'), blank=True), + discount_description = models.TextField(verbose_name=_(u'Описание скидки'), blank=True), + time = models.TextField(verbose_name=_(u'Время работы'), blank=True), # visit and particaption data - price_day = models.CharField(verbose_name='Стоимость билета 1 день', max_length=255, blank=True), - price_all = models.CharField(verbose_name='Стоимость билета все дни', max_length=255, blank=True), - price_day_bar = models.CharField(verbose_name='Стоимость на стойке 1 день', max_length=255, blank=True), - price_all_bar = models.CharField(verbose_name='Стоимость на стойке все дни', max_length=255, blank=True), - stat_countries = models.TextField(verbose_name='Участвующие страны', blank=True), - pre_condition = models.CharField(verbose_name='Условия предварительной регистрации', max_length=255, blank=True), - stand_condition = models.CharField(verbose_name='Условия регистрации на стойке', max_length=255, blank=True), - visit_note = models.CharField(verbose_name='Примечание по посещению', max_length=255, blank=True), - participation_note = models.TextField(verbose_name='Примечание по участии', blank=True), + price_day = models.CharField(verbose_name=_(u'Стоимость билета 1 день'), max_length=255, blank=True), + price_all = models.CharField(verbose_name=_(u'Стоимость билета все дни'), max_length=255, blank=True), + price_day_bar = models.CharField(verbose_name=_(u'Стоимость на стойке 1 день'), max_length=255, blank=True), + price_all_bar = models.CharField(verbose_name=_(u'Стоимость на стойке все дни'), max_length=255, blank=True), + stat_countries = models.TextField(verbose_name=_(u'Участвующие страны'), blank=True), + pre_condition = models.CharField(verbose_name=_(u'Условия предварительной регистрации'), max_length=255, blank=True), + stand_condition = models.CharField(verbose_name=_(u'Условия регистрации на стойке'), max_length=255, blank=True), + visit_note = models.CharField(verbose_name=_(u'Примечание по посещению'), max_length=255, blank=True), + participation_note = models.TextField(verbose_name=_(u'Примечание по участии'), blank=True), #-----meta data @@ -131,32 +131,32 @@ class Exposition(TranslatableModel, EventMixin, ExpoMixin): note = generic.GenericRelation('note.Note', content_type_field='content_type', object_id_field='object_id') #about - periodic = models.FloatField(verbose_name='Переодичность', blank=True, null=True) + periodic = models.FloatField(verbose_name=_(u'Переодичность'), blank=True, null=True) audience = BitField(flags=[k for k, v in BIT_AUDIENCE]) - web_page = models.CharField(verbose_name='Вебсайт', max_length=255, blank=True) - foundation_year = models.PositiveIntegerField(verbose_name='Год основания', blank=True, null=True) - area = models.PositiveIntegerField(verbose_name='Площадь', blank=True, null=True) + web_page = models.CharField(verbose_name=_(u'Вебсайт'), max_length=255, blank=True) + foundation_year = models.PositiveIntegerField(verbose_name=_(u'Год основания'), blank=True, null=True) + area = models.PositiveIntegerField(verbose_name=_(u'Площадь'), blank=True, null=True) # conditions of Participation - registration_link = models.URLField(verbose_name='Ссылка на регистрацию', max_length=255, blank=True) - min_area = models.PositiveIntegerField(verbose_name='Минимальная площадь', blank=True, null=True) + registration_link = models.URLField(verbose_name=_(u'Ссылка на регистрацию'), max_length=255, blank=True) + min_area = models.PositiveIntegerField(verbose_name=_(u'Минимальная площадь'), blank=True, null=True) currency = EnumField(values=CURRENCY, default='USD') - application_deadline = models.DateField(verbose_name='Срок подачи заявки', null=True) - min_stand_size = models.PositiveIntegerField(verbose_name='Минимальный размер стэнда', blank=True, null=True) - price_catalog = models.PositiveIntegerField(verbose_name='Стоимость каталога', blank=True, null=True) - tax = models.BooleanField(verbose_name='Налог', default=1) - min_closed_area = models.PositiveIntegerField(verbose_name='Минимальная цена закрытой НЕ оборудованной площади', + application_deadline = models.DateField(verbose_name=_(u'Срок подачи заявки'), null=True) + min_stand_size = models.PositiveIntegerField(verbose_name=_(u'Минимальный размер стэнда'), blank=True, null=True) + price_catalog = models.PositiveIntegerField(verbose_name=_(u'Стоимость каталога'), blank=True, null=True) + tax = models.BooleanField(verbose_name=_(u'Налог'), default=1) + min_closed_area = models.PositiveIntegerField(verbose_name=_(u'Минимальная цена закрытой НЕ оборудованной площади'), blank=True, null=True) - max_closed_area = models.PositiveIntegerField(verbose_name='Максимальная цена закрытой НЕ оборудованной площади', + max_closed_area = models.PositiveIntegerField(verbose_name=_(u'Максимальная цена закрытой НЕ оборудованной площади'), blank=True, null=True) - min_closed_equipped_area = models.PositiveIntegerField(verbose_name='Минимальная цена закрытой оборудованной площади', + min_closed_equipped_area = models.PositiveIntegerField(verbose_name=_(u'Минимальная цена закрытой оборудованной площади'), blank=True, null=True) - max_closed_equipped_area = models.PositiveIntegerField(verbose_name='Максимальная цена закрытой оборудованной площади', + max_closed_equipped_area = models.PositiveIntegerField(verbose_name=_(u'Максимальная цена закрытой оборудованной площади'), blank=True, null=True) - min_open_area = models.PositiveIntegerField(verbose_name='Минимальная цена открытой площади', + min_open_area = models.PositiveIntegerField(verbose_name=_(u'Минимальная цена открытой площади'), blank=True, null=True) - max_open_area = models.PositiveIntegerField(verbose_name='Максимальная цена открытой площади', + max_open_area = models.PositiveIntegerField(verbose_name=_(u'Максимальная цена открытой площади'), blank=True, null=True) - registration_payment = models.PositiveIntegerField(verbose_name='Регистрационный взнос', blank=True, null=True) + registration_payment = models.PositiveIntegerField(verbose_name=_(u'Регистрационный взнос'), blank=True, null=True) paid_new = models.ForeignKey('expobanner.Paid', blank=True, null=True, on_delete=models.SET_NULL) top = models.ForeignKey('expobanner.Top', blank=True, null=True, on_delete=models.SET_NULL) @@ -296,11 +296,11 @@ class Exposition(TranslatableModel, EventMixin, ExpoMixin): class Statistic(TranslatableModel): exposition = models.ForeignKey(Exposition, related_name='statistic') - year = models.PositiveIntegerField(verbose_name='Год') - members = models.PositiveIntegerField(verbose_name='Посетители', blank=True, null=True) - visitors = models.PositiveIntegerField(verbose_name='Участники', blank=True, null=True) - area = models.PositiveIntegerField(verbose_name='Площадь', blank=True, null=True) - countries_number = models.PositiveIntegerField(verbose_name='Количество стран', blank=True, null=True) + year = models.PositiveIntegerField(verbose_name=_(u'Год')) + members = models.PositiveIntegerField(verbose_name=_(u'Посетители'), blank=True, null=True) + visitors = models.PositiveIntegerField(verbose_name=_(u'Участники'), blank=True, null=True) + area = models.PositiveIntegerField(verbose_name=_(u'Площадь'), blank=True, null=True) + countries_number = models.PositiveIntegerField(verbose_name=_(u'Количество стран'), blank=True, null=True) translations = TranslatedFields( countries = models.TextField(blank=True) @@ -316,18 +316,18 @@ class TimeTable(TranslatableModel): """ exposition = models.ForeignKey(Exposition, related_name='business_program') - begin = models.DateTimeField(verbose_name='Начало') - end = models.DateTimeField(verbose_name='Конец') + begin = models.DateTimeField(verbose_name=_(u'Начало')) + end = models.DateTimeField(verbose_name=_(u'Конец')) timetable_organiser = models.ForeignKey(Organiser, null=True, blank=True) # created = models.DateTimeField(auto_now_add=True) modified = models.DateTimeField(auto_now=True) #translated fields translations = TranslatedFields( - name = models.CharField(verbose_name='Название программы', max_length=255, blank=True), - programe = models.TextField(verbose_name='Программа', blank=True), - speaker = models.CharField(verbose_name='Организатор', max_length=255, blank=True), - place = models.CharField(verbose_name='Место проведения', max_length=255, blank=True) + name = models.CharField(verbose_name=_(u'Название программы'), max_length=255, blank=True), + programe = models.TextField(verbose_name=_(u'Программа'), blank=True), + speaker = models.CharField(verbose_name=_(u'Организатор'), max_length=255, blank=True), + place = models.CharField(verbose_name=_(u'Место проведения'), max_length=255, blank=True) ) def to_dict(self): @@ -336,8 +336,8 @@ class TimeTable(TranslatableModel): class TmpTimeTable(TranslatableModel): exposition = models.ForeignKey(Exposition, null=True, blank=True) - begin = models.DateTimeField(verbose_name='Начало') - end = models.DateTimeField(verbose_name='Конец') + begin = models.DateTimeField(verbose_name=_(u'Начало')) + end = models.DateTimeField(verbose_name=_(u'Конец')) timetable_organiser = models.ForeignKey(Organiser, null=True, blank=True) # key uses for checking keys from new objects. key = models.CharField(max_length=255, blank=True) @@ -346,10 +346,10 @@ class TmpTimeTable(TranslatableModel): modified = models.DateTimeField(auto_now=True) #translated fields translations = TranslatedFields( - name = models.CharField(verbose_name='Название программы', max_length=255, blank=True), - programe = models.TextField(verbose_name='Программа'), - speaker = models.CharField(verbose_name='Спикеры', max_length=255, blank=True), - place = models.CharField(verbose_name='Место проведения', max_length=255, blank=True) + name = models.CharField(verbose_name=_(u'Название программы'), max_length=255, blank=True), + programe = models.TextField(verbose_name=_(u'Программа')), + speaker = models.CharField(verbose_name=_(u'Спикеры'), max_length=255, blank=True), + place = models.CharField(verbose_name=_(u'Место проведения'), max_length=255, blank=True) ) diff --git a/exposition/views.py b/exposition/views.py index a874a1ad..4d664a6f 100644 --- a/exposition/views.py +++ b/exposition/views.py @@ -640,13 +640,15 @@ def add_note(request, slug): def send_to_organiser(request, slug): exposition = get_object_or_404(Exposition, url=slug) mail_send = 'evm@expomap.ru' - name = request.POST.get('person_inf') - email = request.POST.get('person') - phone = request.POST.get('phone', '') - question = request.POST.get('question', '') - text = u"выставка: %s\n Контактное лицо:%s\nEmail: %s\nтелефон:%s\n вопрос:%s"%(exposition.name, name, email, - phone, question) - msg = EmailMessage(u'Проплаченная выставка', text, settings.DEFAULT_FROM_EMAIL, [mail_send]) + data = { + 'expo_name': exposition.name, + 'name': request.POST.get('person_inf'), + 'email': request.POST.get('person'), + 'phone': request.POST.get('phone', ''), + 'question': request.POST.get('question', ''), + } + text = _(u"выставка: %(expo_name)s\n Контактное лицо:%(name)s\nEmail: %(email)s\nтелефон:%(phone)s\n вопрос:%(question)s") % data + msg = EmailMessage(_(u'Проплаченная выставка'), text, settings.DEFAULT_FROM_EMAIL, [mail_send]) msg.content_subtype = "html" msg.send() redirect_to = '%sservice/thanks/'%exposition.get_permanent_url() diff --git a/file/forms.py b/file/forms.py index ca57fc51..2ae1a8a8 100644 --- a/file/forms.py +++ b/file/forms.py @@ -11,14 +11,14 @@ from functions.translate import populate, fill_trans_fields_all #python from PIL import Image import pytils, re - +from django.utils.translation import ugettext as _ class FileForm(forms.Form): - file_path = forms.FileField(label='Выберите файл') + file_path = forms.FileField(label=_(u'Выберите файл')) model = forms.CharField(required=False, widget=forms.HiddenInput()) - purposes = [('scheme teritory','Схема территории'),('preview','Превью'), ('preview2','Превью2')] - purpose = forms.ChoiceField(label='Назначение', choices=purposes) + purposes = [('scheme teritory',_(u'Схема территории')),('preview',_(u'Превью')), ('preview2',_(u'Превью2'))] + purpose = forms.ChoiceField(label=_(u'Назначение'), choices=purposes) def __init__(self, *args, **kwargs): """ @@ -32,8 +32,8 @@ class FileForm(forms.Form): # using enumerate for detect iteration number # first iteration is a default lang so it required fields required = True if lid == 0 else False - self.fields['file_name_%s'%code] = forms.CharField(label='Имя файла',required=False, widget=forms.TextInput(attrs={'placeholder': 'Имя'})) - self.fields['description_%s'%code] = forms.CharField(label='Описание', required=False, widget=forms.Textarea()) + self.fields['file_name_%s'%code] = forms.CharField(label=_(u'Имя файла'),required=False, widget=forms.TextInput(attrs={'placeholder': 'Имя'})) + self.fields['description_%s'%code] = forms.CharField(label=_(u'Описание'), required=False, widget=forms.Textarea()) def save(self, request, obj=None): """ @@ -87,13 +87,13 @@ class FileModelForm(forms.Form): save function saves data in FileModel object. If it doesnt exist create TmpFile object """ - file_path = forms.FileField(label='Выберите файл') + file_path = forms.FileField(label=_(u'Выберите файл')) #uses for comparing with TmpFile key key = forms.CharField(required=False, widget=forms.HiddenInput()) model = forms.CharField(required=False, widget=forms.HiddenInput()) purposes = [(item1, item2) for item1, item2 in PURPOSES] - purpose = forms.ChoiceField(label='Назаначение', choices=purposes) + purpose = forms.ChoiceField(label=_(u'Назаначение'), choices=purposes) def __init__(self, *args, **kwargs): """ @@ -107,8 +107,8 @@ class FileModelForm(forms.Form): # using enumerate for detect iteration number # first iteration is a default lang so it required fields required = True if lid == 0 else False - self.fields['file_name_%s'%code] = forms.CharField(label='Имя файла',required=False, widget=forms.TextInput(attrs={'placeholder': 'Имя'})) - self.fields['description_%s'%code] = forms.CharField(label='Описание', required=False, widget=CKEditorWidget()) + self.fields['file_name_%s'%code] = forms.CharField(label=_(u'Имя файла'),required=False, widget=forms.TextInput(attrs={'placeholder': 'Имя'})) + self.fields['description_%s'%code] = forms.CharField(label=_(u'Описание'), required=False, widget=CKEditorWidget()) def save(self, request, obj=None): """ @@ -168,7 +168,7 @@ class FileModelForm(forms.Form): return file_obj class PhotoForm(forms.Form): - file_path = forms.FileField(label='Выберите файл') + file_path = forms.FileField(label=_(u'Выберите файл')) # uses for comparing with TmpFile key key = forms.CharField(required=False, widget=forms.HiddenInput()) model = forms.CharField(required=False, widget=forms.HiddenInput()) @@ -185,8 +185,8 @@ class PhotoForm(forms.Form): # using enumerate for detect iteration number # first iteration is a default lang so it required fields required = True if lid == 0 else False - self.fields['name_%s'%code] = forms.CharField(label='Имя файла',required=False, widget=forms.TextInput(attrs={'placeholder': 'Имя'})) - self.fields['description_%s'%code] = forms.CharField(label='Описание', required=False, widget=CKEditorWidget()) + self.fields['name_%s'%code] = forms.CharField(label=_(u'Имя файла'),required=False, widget=forms.TextInput(attrs={'placeholder': 'Имя'})) + self.fields['description_%s'%code] = forms.CharField(label=_(u'Описание'), required=False, widget=CKEditorWidget()) def save(self,request, obj=None): """ diff --git a/file/models.py b/file/models.py index c166a0a8..3136b1bb 100644 --- a/file/models.py +++ b/file/models.py @@ -14,14 +14,14 @@ import os FILE_TYPES = ('PDF', 'DOC', 'TXT', 'OTHER') IMG_TYPES = ('JPG', 'BMP', 'PNG', 'GIF',) -PURPOSES = (('photo', 'Фото'), - ('flat', 'Флаг'), - ('logo','Лого'), - ('map','Карта'), - ('scheme teritory','Схема територии'), - ('diplom','Дипломы'), - ('preview','Превью'), - ('preview2','Превью'), +PURPOSES = (('photo', _(u'Фото')), + ('flat', _(u'Флаг')), + ('logo',_(u'Лого')), + ('map',_(u'Карта')), + ('scheme teritory',_(u'Схема територии')), + ('diplom',_(u'Дипломы')), + ('preview',_(u'Превью')), + ('preview2',_(u'Превью')), ) class FileModel(TranslatableModel): @@ -138,4 +138,4 @@ class Photo(TranslatableModel): ) # created = models.DateTimeField(auto_now_add=True) - modified = models.DateTimeField(auto_now=True) \ No newline at end of file + modified = models.DateTimeField(auto_now=True) diff --git a/functions/custom_views.py b/functions/custom_views.py index 6bcf5705..5521f0ec 100644 --- a/functions/custom_views.py +++ b/functions/custom_views.py @@ -8,6 +8,8 @@ from django.contrib.auth.decorators import login_required from django.contrib.admin.views.decorators import staff_member_required from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage, InvalidPage from django.db.models.deletion import ProtectedError +from django.utils.translation import ugettext as _ + #forms and models from file.forms import FileModelForm from file.models import TmpFile @@ -214,7 +216,7 @@ def delete_object(request, Model, Form, url, prev_page,): object.delete() return HttpResponseRedirect(prev_page) except ProtectedError: - msg = u'Удаления %s требует удаления связаных объектов'%object + msg = _(u'Удаления %(object)s требует удаления связаных объектов') % {'object': object} return render_to_response('delete.html', {'msg':msg, 'prev_page':prev_page}) else: @@ -246,7 +248,7 @@ from webinar.models import Webinar from company.models import Company from photoreport.models import Photoreport -from django.utils.translation import ugettext as _ + class ExpoMixin(object): def get_params(self): model_names = {Exposition: _(u'Выставки'), Conference: _(u'Конференции'), Seminar: _(u'Семинары'), diff --git a/functions/form_check.py b/functions/form_check.py index 19b93f86..4aa6efc2 100644 --- a/functions/form_check.py +++ b/functions/form_check.py @@ -2,9 +2,10 @@ import unicodedata as ud from django.core.exceptions import ValidationError import pytils, re +from django.utils.translation import ugettext as _ def is_positive_integer(data, - msg='Введите правильное значение'): + msg=_(u'Введите правильное значение')): """ function checking if data positive integer """ diff --git a/functions/model_mixin.py b/functions/model_mixin.py index c1eba09d..b281d356 100644 --- a/functions/model_mixin.py +++ b/functions/model_mixin.py @@ -6,6 +6,7 @@ from functions.translate import fill_with_signal import calendar as python_calendar from service.models import Service from photologue.models import Gallery +from django.utils.translation import ugettext as _ class ExpoMixin(object): @@ -175,7 +176,7 @@ class EventMixin(object): Model = type(self) try: Model.objects.get(url=url) - return u'Событие с таким урлом уже существует' + return _(u'Событие с таким урлом уже существует') except Model.DoesNotExist: pass diff --git a/import_xls/admin.py b/import_xls/admin.py index c0820c30..e40504d5 100644 --- a/import_xls/admin.py +++ b/import_xls/admin.py @@ -11,6 +11,7 @@ from import_forms import ImportEventForm, ImportThemeForm, ImportTagForm, \ from export_forms import ExportEventForm, ExportThemeForm, ExportTagForm,\ ExportUserForm, ExportCompanyForm, ExportPlaceConferenceForm, ExportPlaceExpositionForm, ExportBlogForm,\ ExportCityForm +from django.utils.translation import ugettext as _ def xls_to_response(xls, fname): @@ -47,7 +48,7 @@ class ExportView(FormView): if workbook: f_name = form.get_fname() else: - messages.error(self.request, 'No objects found') + messages.error(self.request, _('No objects found')) return HttpResponseRedirect(self.success_url) return xls_to_response(workbook, f_name) @@ -174,4 +175,4 @@ def work_file(request, log_id): filename = 'import_%s_file.xls' % str(log.id) response['content-disposition'] = 'attachment;filename=%s'%filename response['X-Accel-Redirect'] = log.work_file.url - return response \ No newline at end of file + return response diff --git a/import_xls/export_forms.py b/import_xls/export_forms.py index 4f1bf333..0236bd88 100644 --- a/import_xls/export_forms.py +++ b/import_xls/export_forms.py @@ -14,6 +14,7 @@ from place_conference.models import PlaceConference from django.db.models.loading import get_model import xlwt from excel_settings import field_settings, event_export_sett +from django.utils.translation import ugettext as _ languages = [code for code in settings.LANGUAGES] @@ -33,7 +34,7 @@ class ExportForm(forms.Form): self.style.font = self.font model = None - language = forms.ChoiceField(label='Выберите язык', choices=languages) + language = forms.ChoiceField(label=_(u'Выберите язык'), choices=languages) def get_objects(self, data): return self.model.objects.language(data['language']).all() @@ -166,15 +167,15 @@ class ExportCityForm(ExportForm): class ExportEventForm(forms.Form): - event = forms.ChoiceField(label='Выберите тип события', choices=[('exposition.Exposition', 'Выставка'), - ('conference.Conference', 'Конференция'), - ('seminar.Seminar', 'Семинар'), - ('webinar.Webinar', 'Вебинар')]) - language = forms.ChoiceField(label='Выберите язык', choices=languages) - date_from = forms.DateField(label='С', input_formats=settings.CLIENT_DATE_FORMAT) - date_to = forms.DateField(label='До', input_formats=settings.CLIENT_DATE_FORMAT) - theme = forms.ModelMultipleChoiceField(label='Направление', queryset=Theme.objects.all(), required=False) - country = forms.ModelMultipleChoiceField(label='Страны', queryset=Country.objects.all(), required=False) + event = forms.ChoiceField(label=_(u'Выберите тип события'), choices=[('exposition.Exposition', _(u'Выставка')), + ('conference.Conference', _(u'Конференция')), + ('seminar.Seminar', _(u'Семинар')), + ('webinar.Webinar', _(u'Вебинар'))]) + language = forms.ChoiceField(label=_(u'Выберите язык'), choices=languages) + date_from = forms.DateField(label=_(u'С'), input_formats=settings.CLIENT_DATE_FORMAT) + date_to = forms.DateField(label=_(u'До'), input_formats=settings.CLIENT_DATE_FORMAT) + theme = forms.ModelMultipleChoiceField(label=_(u'Направление'), queryset=Theme.objects.all(), required=False) + country = forms.ModelMultipleChoiceField(label=_(u'Страны'), queryset=Country.objects.all(), required=False) def export(self): data = self.cleaned_data @@ -257,4 +258,4 @@ class ExportEventForm(forms.Form): if not country: return None - return country \ No newline at end of file + return country diff --git a/import_xls/import_forms.py b/import_xls/import_forms.py index 5afc2717..39b99f29 100644 --- a/import_xls/import_forms.py +++ b/import_xls/import_forms.py @@ -14,6 +14,7 @@ from excel_settings import import_settings from functions.form_check import translit_with_separator from excel_settings import place_exp_sett from import_xls.excel_settings import event_sett +from django.utils.translation import ugettext as _ languages = [code for code in settings.LANGUAGES] @@ -33,8 +34,8 @@ class ImportForm(forms.Form): abstract form for importing models from excel file to database """ model = None - excel_file = forms.FileField(label='Выберите файл') - language = forms.ChoiceField(label='Выберите язык', choices=languages) + excel_file = forms.FileField(label=_(u'Выберите файл')) + language = forms.ChoiceField(label=_(u'Выберите язык'), choices=languages) def save_file(self): data = self.cleaned_data @@ -340,7 +341,7 @@ class ImportPlaceExpositionForm(ImportForm): if typical_errors.get(error): error = typical_errors[error] if error.startswith('(1062, "Duplicate entry') and error.endswith('for key \'url\'")'): - error = u'Место с таким названием или урлом уже существует' + error = _(u'Место с таким названием или урлом уже существует') errors.append([obj.name, error]) continue @@ -367,10 +368,10 @@ class ImportEventForm(ImportForm): extended form for importing one type of event """ - event = forms.ChoiceField(label='Выберите тип события', choices=[('exposition.Exposition', 'Выставка'), - ('conference.Conference', 'Конференция'), - ('seminar.Seminar', 'Семинар'), - ('webinar.Webinar', 'Вебинар')]) + event = forms.ChoiceField(label=_(u'Выберите тип события'), choices=[('exposition.Exposition', _(u'Выставка')), + ('conference.Conference', _(u'Конференция')), + ('seminar.Seminar', _(u'Семинар')), + ('webinar.Webinar', _(u'Вебинар'))]) def save_file_debug(self): data = self.cleaned_data @@ -477,7 +478,7 @@ class ImportEventForm(ImportForm): error = typical_errors[error] if error.startswith('(1062, "Duplicate entry') and error.endswith('for key \'url\'")'): - error = u'Событие с таким названием или урлом уже существует' + error = _(u'Событие с таким названием или урлом уже существует') errors.append([obj.name, error]) log_msg += error @@ -648,4 +649,4 @@ class ImportTagForm(ImportForm): else: setattr(object, field_name, value[0]) - object.save() \ No newline at end of file + object.save() diff --git a/import_xls/utils.py b/import_xls/utils.py index 09133f5b..86782f6c 100644 --- a/import_xls/utils.py +++ b/import_xls/utils.py @@ -15,6 +15,7 @@ from theme.models import Theme, Tag from functions.files import get_alternative_filename from exposition.models import BIT_AUDIENCE from accounts.models import User +from django.utils.translation import ugettext as _ def to_int(val): @@ -91,11 +92,11 @@ def to_theme(obj, value): theme_ids = value.split(',') if theme_ids == ['']: - return u'Неправильное значение' + return _(u'Неправильное значение') obj.theme.clear() obj.theme.add(*Theme.objects.filter(id__in=theme_ids)) if not Theme.objects.filter(id__in=theme_ids).exists(): - return u'Нет совпадений' + return _(u'Нет совпадений') return None @@ -176,7 +177,7 @@ def save_logo(obj, path): try: alt_name = get_alternative_filename(full_path, file_name) except UnicodeEncodeError: - return u'Некоректное название файла' + return _(u'Некоректное название файла') download_to = full_path+alt_name @@ -194,7 +195,7 @@ def save_logo(obj, path): try: response = urllib2.urlopen(url, timeout=5) except: - return u'Превышено время ожидания' + return _(u'Превышено время ожидания') with open(download_to,'wb') as f: try: @@ -202,20 +203,20 @@ def save_logo(obj, path): f.close() except: # can be timeout - return u'Превышено время ожидания' + return _(u'Превышено время ожидания') try: # check if image im=Image.open(download_to) except IOError: os.remove(download_to) - return u'Неправильный формат логотипа' + return _(u'Неправильный формат логотипа') obj.logo = logo_path + alt_name try: obj.save() except: print('logo exception. logo: %s'%obj.logo) - return u'Неизвестная ошибка' + return _(u'Неизвестная ошибка') def check_quality_label(obj, value, label): @@ -234,4 +235,4 @@ def to_user(value): return User.objects.get(id=value) except User.DoesNotExist: - return User.objects.get(id=1) \ No newline at end of file + return User.objects.get(id=1) diff --git a/locale/en/LC_MESSAGES/django.mo b/locale/en/LC_MESSAGES/django.mo deleted file mode 100644 index 9704e09c7f3a3e8ff26ee5e8c2b7edd901cc3341..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49138 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 diff --git a/locale/ru/LC_MESSAGES/django.mo b/locale/ru/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..e03702b0da408b9b04c78188eaeab3c8ac540c1c GIT binary patch literal 1457 zcmd^8O-~b16det2sw-S-%q2!bl~-pfAPyY_u{6~JO(}$pi=iFMkanh-nHo)42)ZDF zXkubaO#F&}VEm}^Ram%iqsg0v8yEfo-S`KL=S>kpf?GGfsq)HK5R41WNn?f6eRsEnf*1 zc%2aV!J=?h_(pJl|Lfom1$Vj6H$YlP;XTlTCH{)ngWKCW;r%LKr;b#5xRb7AQ=OC@ zO~r^mN8x*vf=h}l(}zbCBHx1AS}>1c)?uqri9hC>yn(TNH`=Oeu-QWAeECZqLH75v&lskZ*hN`ZwyH=2&0Wv1g5f$I?YMX*jNFTPkG-hprB$ zk~Epjji<*(BRQjLJ02TxOJs+C-pw^fQ{$MS5*F?0__?6U3|D#c}`hsoVcxj;%> z?dmxr5aT8?nSrtyvz=0ZWF$S3+, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-05-19 18:27+0000\n" +"PO-Revision-Date: 2016-05-19 12:48+0000\n" +"Last-Translator: \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Translated-Using: django-rosetta 0.7.6\n" + +#: accounts/admin.py:201 accounts/views.py:440 +msgid "Пароль изменен" +msgstr "Пароль изменен" + +#: accounts/admin.py:204 accounts/views.py:443 +msgid "Не правильный пароль" +msgstr "Не правильный пароль" + +#: accounts/edit_forms.py:12 company/edit_forms.py:15 +msgid "Выберите файл (GIF, JPG, PNG. Размер 100 × 100 пикселей)" +msgstr "Выберите файл (GIF, JPG, PNG. Размер 100 × 100 пикселей)" + +#: accounts/edit_forms.py:21 +msgid "Введите ваше имя" +msgstr "Введите ваше имя" + +#: accounts/edit_forms.py:22 +msgid "Введите вашу фамилию" +msgstr "Введите вашу фамилию" + +#: accounts/edit_forms.py:33 accounts/forms.py:70 accounts/forms.py:206 +#: accounts/forms.py:322 accounts/models.py:201 city/models.py:129 +#: company/forms.py:35 company/forms.py:227 company/models.py:42 +#: conference/forms.py:62 conference/models.py:56 +#: emencia/django/newsletter/admin_forms.py:12 +#: emencia/django/newsletter/forms.py:259 +#: emencia/django/newsletter/forms.py:283 expobanner/forms.py:248 +#: exposition/forms.py:59 exposition/models.py:66 +#: functions/search_forms.py:256 organiser/event_forms.py:21 +#: organiser/forms.py:35 organiser/models.py:39 place_conference/forms.py:34 +#: place_conference/models.py:39 place_exposition/forms.py:35 +#: seminar/forms.py:43 seminar/models.py:41 service/order_forms.py:16 +#: service/order_forms.py:194 specialist_catalog/models.py:20 +#: specialist_catalog/models.py:37 stats_collector/forms.py:18 +#: stats_collector/forms.py:68 templates/admin/specialist/catalog_all.html:13 +#: templates/client/includes/accounts/current_user.html:83 +#: templates/client/includes/company/company_edit.html:76 +#: templates/client/organiser/add_event.html:119 translator/forms.py:102 +#: wizard/forms.py:31 +msgid "Город" +msgstr "" + +#: accounts/edit_forms.py:35 accounts/forms.py:68 accounts/forms.py:204 +#: accounts/forms.py:318 accounts/models.py:199 city/forms.py:29 +#: city/forms.py:172 city/models.py:35 company/edit_forms.py:40 +#: company/forms.py:32 company/forms.py:226 company/models.py:40 +#: conference/forms.py:53 conference/models.py:54 +#: emencia/django/newsletter/forms.py:184 +#: emencia/django/newsletter/forms.py:191 expobanner/forms.py:313 +#: expobanner/models.py:97 exposition/forms.py:51 exposition/forms.py:594 +#: exposition/models.py:64 functions/search_forms.py:252 +#: organiser/event_forms.py:20 organiser/forms.py:34 organiser/models.py:37 +#: place_conference/forms.py:32 place_conference/models.py:37 +#: place_exposition/forms.py:33 seminar/forms.py:40 seminar/models.py:40 +#: service/order_forms.py:15 service/order_forms.py:193 +#: specialist_catalog/models.py:21 specialist_catalog/models.py:38 +#: stats_collector/forms.py:19 stats_collector/forms.py:67 +#: templates/admin/specialist/catalog_all.html:12 +#: templates/client/organiser/add_event.html:116 translator/forms.py:104 +#: wizard/forms.py:28 +msgid "Страна" +msgstr "Страна" + +#: accounts/edit_forms.py:65 +msgid "Укажите вашу должность" +msgstr "Укажите вашу должность" + +#: accounts/edit_forms.py:67 +msgid "Укажите вашу компанию" +msgstr "Укажите вашу компанию" + +#: accounts/edit_forms.py:90 accounts/models.py:203 company/edit_forms.py:31 +msgid "Описание компании" +msgstr "Описание компании" + +#: accounts/edit_forms.py:99 accounts/edit_forms.py:100 +#: company/edit_forms.py:67 +msgid "Контактный телефон" +msgstr "Контактный телефон" + +#: accounts/edit_forms.py:117 company/edit_forms.py:83 company/forms.py:187 +#: core/forms.py:46 organiser/forms.py:219 place_conference/forms.py:229 +#: place_exposition/forms.py:177 service/order_forms.py:85 +msgid "Введите правильный телефон" +msgstr "" + +#: accounts/edit_forms.py:121 company/edit_forms.py:86 +#: emencia/django/newsletter/forms.py:70 service/order_forms.py:212 +#: templates/client/simple_pages/advertising_landing.html:437 +#: templates/client/simple_pages/participation_landing.html:309 +msgid "Ваш e-mail" +msgstr "" + +#: accounts/edit_forms.py:129 company/edit_forms.py:93 +msgid "Адрес вашего сайта" +msgstr "" + +#: accounts/edit_forms.py:137 accounts/models.py:210 company/edit_forms.py:100 +#: company/forms.py:239 company/models.py:52 organiser/models.py:52 +msgid "Facebook" +msgstr "" + +#: accounts/edit_forms.py:138 accounts/models.py:211 company/edit_forms.py:101 +#: company/forms.py:238 company/models.py:53 organiser/models.py:53 +msgid "Twitter" +msgstr "" + +#: accounts/edit_forms.py:139 accounts/models.py:213 company/edit_forms.py:102 +#: company/models.py:55 organiser/models.py:55 +msgid "В контакте" +msgstr "" + +#: accounts/edit_forms.py:140 accounts/models.py:212 company/edit_forms.py:103 +#: company/models.py:54 organiser/models.py:54 +msgid "LinkedIn" +msgstr "" + +#: accounts/edit_forms.py:148 +msgid "Немного о себе" +msgstr "" + +#: accounts/forms.py:30 +#, fuzzy +msgid "Пароль" +msgstr "Пароль изменен" + +#: accounts/forms.py:31 registration/forms.py:56 +#: templates/client/popups/register.html:40 +msgid "Повторите пароль" +msgstr "" + +#: accounts/forms.py:46 +msgid "Пользователь с таким email уже существует" +msgstr "" + +#: accounts/forms.py:53 +msgid "Пароли не совпадают" +msgstr "" + +#: accounts/forms.py:71 accounts/models.py:103 +msgid "Компания" +msgstr "" + +#: accounts/forms.py:152 country/forms.py:186 +#, fuzzy +msgid "Введите правильный код страны" +msgstr "Не правильный пароль" + +#: accounts/forms.py:159 +msgid "Old password" +msgstr "" + +#: accounts/forms.py:161 +msgid "Введите старый пароль" +msgstr "" + +#: accounts/forms.py:162 password_reset/forms.py:89 +msgid "New password" +msgstr "" + +#: accounts/forms.py:164 +msgid "Придумайте новый пароль" +msgstr "" + +#: accounts/forms.py:165 +msgid "Confirm password" +msgstr "" + +#: accounts/forms.py:168 +msgid "Повторите новый пароль" +msgstr "" + +#: accounts/forms.py:180 accounts/forms.py:181 +msgid "Пароли не совпадают!" +msgstr "" + +#: accounts/forms.py:189 accounts/forms.py:190 +msgid "Пароль должен содержать цифры и буквы" +msgstr "" + +#: accounts/forms.py:197 +msgid "" +"Получать приглашения, сообщения и другую корреспонденцию от пользователей " +"Expomap" +msgstr "" + +#: accounts/forms.py:198 +msgid "Получать обзор событий" +msgstr "" + +#: accounts/forms.py:199 +msgid "Получать новости" +msgstr "" + +#: accounts/forms.py:207 +msgid "url(обязательно)" +msgstr "" + +#: accounts/forms.py:243 company/forms.py:289 +msgid "url должен состоять только из латинских букв" +msgstr "" + +#: accounts/forms.py:247 +msgid "Пользователь с таким url уже существует" +msgstr "" + +#: accounts/forms.py:254 accounts/models.py:85 company/forms.py:49 +#: company/forms.py:234 company/models.py:51 +#: emencia/django/newsletter/forms.py:30 organiser/forms.py:56 +#: organiser/models.py:51 password_reset/forms.py:32 +#: place_conference/forms.py:45 place_conference/models.py:49 +#: place_exposition/forms.py:45 +msgid "Email" +msgstr "" + +#: accounts/forms.py:286 +msgid "Введите e-mail, имя или фамилию для запроса" +msgstr "" + +#: accounts/forms.py:312 expobanner/forms.py:314 expobanner/models.py:96 +#: functions/search_forms.py:245 organiser/event_forms.py:10 +#: service/order_forms.py:136 service/order_forms.py:171 +#: templates/client/accounts/feed.html:27 +#: templates/client/organiser/add_event.html:37 +#: templates/client/popups/theme.html:8 +msgid "Тематика" +msgstr "" + +#: accounts/forms.py:314 accounts/models.py:284 article/forms.py:23 +#: article/forms.py:159 article/models.py:35 company/forms.py:36 +#: company/forms.py:229 company/models.py:39 conference/forms.py:63 +#: conference/models.py:63 exposition/forms.py:60 exposition/models.py:72 +#: functions/search_forms.py:247 news/forms.py:35 news/models.py:35 +#: organiser/event_forms.py:11 organiser/forms.py:42 organiser/models.py:42 +#: seminar/forms.py:44 seminar/models.py:45 +#: templates/client/organiser/add_event.html:55 webinar/forms.py:37 +#: wizard/forms.py:32 +msgid "Теги" +msgstr "" + +#: accounts/forms.py:315 city/forms.py:58 city/models.py:44 +#: functions/search_forms.py:249 +msgid "Регион" +msgstr "" + +#: accounts/forms.py:328 accounts/forms.py:331 functions/search_forms.py:262 +#: functions/search_forms.py:265 service/order_forms.py:138 +#: service/order_forms.py:140 service/order_forms.py:161 +#: service/order_forms.py:163 templates/client/organiser/add_event.html:96 +#: templates/client/organiser/add_event.html:101 +msgid "дд.мм.гггг" +msgstr "" + +#: accounts/models.py:25 accounts/models.py:41 +msgid "Вы должни ввести электронную почту" +msgstr "" + +#: accounts/models.py:86 registration/forms.py:44 +msgid "First name" +msgstr "" + +#: accounts/models.py:87 registration/forms.py:49 +msgid "Last name" +msgstr "" + +#: accounts/models.py:88 city/models.py:130 +#: templates/client/includes/accounts/current_user.html:52 +#: templates/client/includes/company/company_edit.html:51 +#: templates/client/includes/company/company_object.html:19 +msgid "Рейтинг" +msgstr "" + +#: accounts/models.py:89 article/models.py:29 city/models.py:30 +#: city/models.py:128 country/models.py:88 +msgid "Url" +msgstr "" + +#: accounts/models.py:90 expobanner/models.py:31 expobanner/models.py:117 +msgid "Активный" +msgstr "" + +#: accounts/models.py:91 +msgid "Сотрудник?" +msgstr "" + +#: accounts/models.py:92 +msgid "Админ?" +msgstr "" + +#: accounts/models.py:93 conference/forms.py:382 +msgid "Дата создания" +msgstr "" + +#: accounts/models.py:94 +msgid "Дата регистрации" +msgstr "" + +#: accounts/models.py:95 +msgid "Изменен" +msgstr "" + +#: accounts/models.py:97 conference/forms.py:52 conference/models.py:65 +#: exposition/forms.py:47 exposition/forms.py:539 exposition/forms.py:559 +#: exposition/models.py:74 exposition/models.py:329 news/forms.py:36 +#: news/models.py:36 seminar/models.py:47 +#: templates/client/includes/conference/conference_object.html:163 +#: templates/client/includes/conference/conference_object.html:175 +#: templates/client/includes/conference/conference_paid.html:36 +#: templates/client/includes/conference/conference_paid.html:205 +#: templates/client/includes/conference/conference_paid.html:215 +#: templates/client/includes/exposition/expo_paid.html:34 +#: templates/client/includes/exposition/expo_paid.html:192 +#: templates/client/includes/exposition/exposition_object.html:173 +#: templates/client/includes/exposition/exposition_object.html:184 +#: templates/client/includes/exposition/programm.html:105 webinar/models.py:43 +msgid "Организатор" +msgstr "" + +#: accounts/models.py:100 +msgid "Переводчик" +msgstr "" + +#: accounts/models.py:105 settings/models.py:23 settings/models.py:69 +#: templates/admin/expobanner/comment_list.html:16 +#: templates/admin/expobanner/pcomment_list.html:16 +msgid "Должность" +msgstr "" + +#: accounts/models.py:106 +msgid "Заблокирован?" +msgstr "" + +#: accounts/models.py:204 company/forms.py:43 company/forms.py:231 +#: company/models.py:48 organiser/forms.py:50 organiser/models.py:48 +#: place_conference/forms.py:39 place_conference/models.py:46 +#: place_exposition/forms.py:39 +msgid "Телефон" +msgstr "" + +#: accounts/models.py:205 +msgid "Показывать телефон" +msgstr "" + +#: accounts/models.py:206 conference/models.py:80 exposition/models.py:136 +#: seminar/models.py:57 webinar/models.py:53 +msgid "Вебсайт" +msgstr "" + +#: accounts/models.py:207 +#: templates/client/includes/accounts/simple_user.html:101 +msgid "О себе" +msgstr "" + +#: accounts/models.py:208 city/models.py:134 core/views.py:125 +#: file/models.py:17 specialist_catalog/models.py:22 +#: templates/client/photoreport.html:9 templates/client/photoreport.html:15 +#: templates/client/conference/photo.html:11 +#: templates/client/exposition/photo.html:11 +#: templates/client/place/photo.html:11 +msgid "Фото" +msgstr "" + +#: accounts/models.py:209 +msgid "Skype" +msgstr "" + +#: accounts/models.py:226 accounts/views.py:402 +#: emencia/django/newsletter/templates/newsletter/announce_template.html:39 +#: exposition/models.py:252 functions/custom_views.py:254 service/forms.py:139 +#: service/models.py:156 stats_collector/forms.py:14 +#: stats_collector/forms.py:58 templates/client/exposition/catalog.html:9 +#: templates/client/exposition/catalog.html:34 +#: templates/client/exposition/catalog_theme.html:16 +#: templates/client/exposition/catalog_theme.html:59 +#: templates/client/exposition/exposition_by.html:14 +#: templates/client/exposition/exposition_detail.html:8 +#: templates/client/exposition/exposition_list.html:8 +#: templates/client/exposition/exposition_list.html:13 +#: templates/client/exposition/exposition_list.html:16 +#: templates/client/exposition/exposition_list.html:26 +#: templates/client/exposition/members.html:7 +#: templates/client/exposition/photo.html:7 +#: templates/client/exposition/price.html:7 +#: templates/client/exposition/programm.html:8 +#: templates/client/exposition/statistic.html:9 +#: templates/client/exposition/visitors.html:7 +#: templates/client/includes/event_list_description.html:5 +#: templates/client/includes/exposition/expo_paid.html:377 +#: templates/client/includes/exposition/expo_paid.html:378 +#: templates/client/includes/exposition/exposition_object.html:383 +#: templates/client/includes/exposition/exposition_object.html:384 +#: templates/client/includes/index/expos.html:3 +#: templates/client/service/catalog.html:9 +#: templates/client/service/participation.html:10 +#: templates/client/service/remotely.html:11 +#: templates/client/service/tickets.html:10 +#: templates/client/service/tour.html:10 +#: templates/client/service/translator.html:10 +msgid "Выставки" +msgstr "" + +#: accounts/models.py:227 +msgid "Конфеернции" +msgstr "" + +#: accounts/models.py:228 functions/custom_views.py:254 +msgid "Семинары" +msgstr "" + +#: accounts/models.py:229 functions/custom_views.py:255 +msgid "Вебинары" +msgstr "" + +#: accounts/models.py:283 article/forms.py:19 article/forms.py:112 +#: article/forms.py:157 article/models.py:33 company/forms.py:33 +#: company/forms.py:228 conference/forms.py:54 conference/models.py:61 +#: emencia/django/newsletter/admin_forms.py:69 +#: emencia/django/newsletter/forms.py:271 +#: emencia/django/newsletter/forms.py:296 +#: emencia/django/newsletter/models.py:251 expobanner/models.py:296 +#: exposition/forms.py:53 exposition/models.py:70 news/forms.py:33 +#: organiser/forms.py:36 seminar/forms.py:41 seminar/models.py:43 +#: webinar/models.py:39 wizard/forms.py:29 +msgid "Тематики" +msgstr "" + +#: accounts/models.py:285 +msgid "Геограифческие зоны" +msgstr "" + +#: accounts/models.py:286 emencia/django/newsletter/forms.py:275 +#: emencia/django/newsletter/forms.py:300 +#: emencia/django/newsletter/models.py:253 expobanner/models.py:298 +#: import_xls/export_forms.py:178 service/forms.py:141 service/models.py:154 +#: templates/client/accounts/translators/translator_country.html:8 +#: templates/client/includes/exposition/statistic.html:123 +#: translator/views.py:114 +msgid "Страны" +msgstr "" + +#: accounts/models.py:287 emencia/django/newsletter/models.py:254 +#: expobanner/models.py:299 +#: templates/client/accounts/translators/translator_city.html:12 +#: translator/views.py:92 +msgid "Города" +msgstr "" + +#: accounts/models.py:288 templates/client/includes/show_date_block.html:23 +#: templates/client/includes/index/main_date_block.html:23 +#: templates/client/organiser/add_event.html:94 +#: templates/client/popups/period.html:11 +#: templates/client/service/tour.html:69 +#: templates/client/service/translator.html:93 +#: templates/client/specialist_catalog/catalog_detailed.html:121 +#: templates/client/wizard/first_step.html:62 +msgid "с" +msgstr "" + +#: accounts/models.py:289 templates/client/organiser/add_event.html:198 +msgid "до" +msgstr "" + +#: accounts/views.py:416 functions/custom_views.py:254 service/forms.py:140 +#: service/models.py:157 stats_collector/forms.py:13 +#: stats_collector/forms.py:57 templates/client/conference/catalog.html:8 +#: templates/client/conference/catalog.html:27 +#: templates/client/conference/catalog_theme.html:8 +#: templates/client/conference/catalog_theme.html:52 +#: templates/client/conference/conference_by.html:14 +#: templates/client/conference/conference_detail.html:7 +#: templates/client/conference/conference_list.html:8 +#: templates/client/conference/conference_list.html:13 +#: templates/client/conference/conference_list.html:16 +#: templates/client/conference/conference_list.html:26 +#: templates/client/conference/members.html:7 +#: templates/client/conference/photo.html:7 +#: templates/client/conference/visitors.html:7 +#: templates/client/includes/side_confs.html:3 +#: templates/client/includes/conference/conference_object.html:358 +#: templates/client/includes/conference/conference_object.html:359 +#: templates/client/includes/conference/conference_paid.html:393 +#: templates/client/includes/conference/conference_paid.html:394 +msgid "Конференции" +msgstr "" + +#: article/forms.py:21 company/forms.py:30 expobanner/models.py:43 +#: expobanner/models.py:55 expobanner/models.py:93 +msgid "URL" +msgstr "" + +#: article/forms.py:22 article/models.py:45 +msgid "Дата публикации" +msgstr "" + +#: article/forms.py:24 file/models.py:19 settings/models.py:25 +#: settings/models.py:71 +msgid "Лого" +msgstr "" + +#: article/forms.py:38 article/forms.py:175 article/models.py:66 +#: expobanner/models.py:26 expobanner/models.py:88 meta/models.py:160 +#: news/forms.py:57 news/models.py:41 photologue/forms.py:22 +#: photologue/forms.py:54 service/forms.py:51 specialist_catalog/models.py:44 +#: templates/admin/article/article_admin_list.html:18 +#: templates/admin/specialist/catalog_all.html:11 +#: templates/admin/specialist/catalog_all.html:41 theme/forms.py:34 +#: theme/forms.py:101 theme/forms.py:178 +msgid "Заголовок" +msgstr "" + +#: article/forms.py:39 article/forms.py:176 article/models.py:67 +#: file/forms.py:20 file/models.py:23 file/models.py:24 news/forms.py:59 +#: news/models.py:42 +msgid "Превью" +msgstr "" + +#: article/forms.py:40 article/forms.py:177 city/forms.py:59 city/models.py:46 +#: company/forms.py:73 conference/forms.py:104 conference/models.py:107 +#: country/forms.py:88 exposition/forms.py:114 exposition/models.py:108 +#: file/forms.py:36 file/forms.py:111 file/forms.py:189 news/forms.py:60 +#: news/models.py:43 organiser/forms.py:77 organiser/models.py:67 +#: photologue/forms.py:23 photologue/forms.py:53 photoreport/forms.py:36 +#: seminar/forms.py:85 seminar/models.py:85 service/forms.py:52 +#: templates/client/city/city.html:94 +#: templates/client/country/country.html:108 theme/forms.py:35 +#: theme/forms.py:102 theme/forms.py:179 webinar/forms.py:78 +#: webinar/models.py:80 +msgid "Описание" +msgstr "" + +#: article/forms.py:42 article/forms.py:179 city/forms.py:66 +#: company/forms.py:79 conference/forms.py:113 country/forms.py:95 +#: news/forms.py:62 organiser/forms.py:84 photoreport/forms.py:39 +#: place_conference/forms.py:93 place_exposition/forms.py:94 +#: seminar/forms.py:90 service/forms.py:55 theme/forms.py:37 +#: theme/forms.py:104 translator/forms.py:56 webinar/forms.py:83 +msgid "Тайтл" +msgstr "" + +#: article/forms.py:44 article/forms.py:183 city/forms.py:68 +#: company/forms.py:83 conference/forms.py:117 country/forms.py:99 +#: news/forms.py:66 organiser/forms.py:88 photoreport/forms.py:41 +#: place_conference/forms.py:97 place_exposition/forms.py:98 +#: seminar/forms.py:94 translator/forms.py:60 webinar/forms.py:87 +msgid "Кейвордс" +msgstr "" + +#: article/forms.py:46 article/forms.py:181 city/forms.py:70 +#: company/forms.py:81 conference/forms.py:115 country/forms.py:97 +#: news/forms.py:64 organiser/forms.py:86 photoreport/forms.py:44 +#: place_conference/forms.py:95 place_exposition/forms.py:96 +#: seminar/forms.py:92 translator/forms.py:58 webinar/forms.py:85 +msgid "Дескрипшен" +msgstr "" + +#: article/forms.py:99 article/models.py:62 +#: templates/admin/article/article_admin_list.html:30 +msgid "Черновик" +msgstr "" + +#: article/forms.py:110 article/models.py:38 expobanner/forms.py:115 +#: expobanner/forms.py:148 expobanner/forms.py:312 +#: import_xls/export_forms.py:170 import_xls/import_forms.py:371 +#: news/forms.py:40 theme/models.py:37 +msgid "Выставка" +msgstr "" + +#: article/forms.py:111 article/models.py:39 expobanner/forms.py:132 +#: expobanner/forms.py:178 import_xls/export_forms.py:171 +#: import_xls/import_forms.py:372 news/forms.py:39 theme/models.py:38 +msgid "Конференция" +msgstr "" + +#: article/forms.py:154 article/models.py:36 +#: templates/admin/article/article_admin_list.html:19 +msgid "Автор" +msgstr "" + +#: article/forms.py:232 +msgid "Статья с таким названием уже существует" +msgstr "" + +#: article/forms.py:279 article/forms.py:305 article/forms.py:318 +#: templates/client/wizard/first_step.html:24 +msgid "Тематика:" +msgstr "" + +#: article/forms.py:281 article/forms.py:297 article/forms.py:310 +#: templates/client/wizard/first_step.html:28 theme/models.py:175 +msgid "Теги:" +msgstr "" + +#: article/models.py:31 +msgid "Id из старой базы" +msgstr "" + +#: article/models.py:32 organiser/event_forms.py:29 +#: specialist_catalog/models.py:34 +#: templates/client/organiser/add_event.html:224 +msgid "Логотип" +msgstr "" + +#: article/models.py:34 +msgid "Тематики для блогов" +msgstr "" + +#: article/models.py:41 conference/forms.py:82 expobanner/models.py:243 +#: place_conference/models.py:42 service/forms.py:138 +#: stats_collector/forms.py:37 +msgid "Тип" +msgstr "" + +#: article/models.py:43 +msgid "Позволить коментарии" +msgstr "" + +#: article/models.py:46 +msgid "Expires on" +msgstr "" + +#: article/models.py:47 +msgid "With Published chosen, won't be shown after this time" +msgstr "" + +#: article/models.py:49 +msgid "Show in sitemap" +msgstr "" + +#: article/models.py:52 +msgid "Показывать на главной" +msgstr "" + +#: article/models.py:56 +msgid "Generate description" +msgstr "" + +#: article/models.py:57 +msgid "" +"If checked, the description will be automatically generated from content. " +"Uncheck if you want to manually set a custom description." +msgstr "" + +#: article/models.py:68 +msgid "Основной текст" +msgstr "" + +#: article/views.py:184 article/views.py:236 conference/views.py:154 +#: exposition/forms.py:587 exposition/views.py:401 proj/settings.py:489 +#: settings/templatetags/tempalte_tags.py:21 support/dev/settings.py:485 +#: support/prod/settings.py:485 +msgid "Январь" +msgstr "" + +#: article/views.py:184 article/views.py:236 conference/views.py:154 +#: exposition/forms.py:587 exposition/views.py:401 proj/settings.py:489 +#: settings/templatetags/tempalte_tags.py:21 support/dev/settings.py:485 +#: support/prod/settings.py:485 +msgid "Февраль" +msgstr "" + +#: article/views.py:185 article/views.py:237 conference/views.py:155 +#: exposition/forms.py:587 exposition/views.py:402 proj/settings.py:490 +#: settings/templatetags/tempalte_tags.py:22 support/dev/settings.py:486 +#: support/prod/settings.py:486 +msgid "Март" +msgstr "" + +#: article/views.py:185 article/views.py:237 conference/views.py:155 +#: exposition/forms.py:587 exposition/views.py:402 proj/settings.py:490 +#: settings/templatetags/tempalte_tags.py:22 support/dev/settings.py:486 +#: support/prod/settings.py:486 +msgid "Апрель" +msgstr "" + +#: article/views.py:186 article/views.py:238 conference/views.py:156 +#: exposition/forms.py:588 exposition/views.py:403 proj/settings.py:491 +#: settings/templatetags/tempalte_tags.py:23 support/dev/settings.py:487 +#: support/prod/settings.py:487 +msgid "Май" +msgstr "" + +#: article/views.py:186 article/views.py:238 conference/views.py:156 +#: exposition/forms.py:588 exposition/views.py:403 proj/settings.py:491 +#: settings/templatetags/tempalte_tags.py:23 support/dev/settings.py:487 +#: support/prod/settings.py:487 +msgid "Июнь" +msgstr "" + +#: article/views.py:187 article/views.py:239 conference/views.py:157 +#: exposition/forms.py:588 exposition/views.py:404 proj/settings.py:492 +#: settings/templatetags/tempalte_tags.py:24 support/dev/settings.py:488 +#: support/prod/settings.py:488 +msgid "Июль" +msgstr "" + +#: article/views.py:187 article/views.py:239 conference/views.py:157 +#: exposition/forms.py:588 exposition/views.py:404 proj/settings.py:492 +#: settings/templatetags/tempalte_tags.py:24 support/dev/settings.py:488 +#: support/prod/settings.py:488 +msgid "Август" +msgstr "" + +#: article/views.py:188 article/views.py:240 conference/views.py:158 +#: exposition/forms.py:589 exposition/views.py:405 proj/settings.py:493 +#: settings/templatetags/tempalte_tags.py:25 support/dev/settings.py:489 +#: support/prod/settings.py:489 +msgid "Сентябрь" +msgstr "" + +#: article/views.py:188 article/views.py:240 conference/views.py:158 +#: exposition/forms.py:589 exposition/views.py:405 proj/settings.py:493 +#: settings/templatetags/tempalte_tags.py:25 support/dev/settings.py:489 +#: support/prod/settings.py:489 +msgid "Октябрь" +msgstr "" + +#: article/views.py:189 article/views.py:241 conference/views.py:159 +#: exposition/forms.py:589 exposition/views.py:406 proj/settings.py:494 +#: settings/templatetags/tempalte_tags.py:26 support/dev/settings.py:490 +#: support/prod/settings.py:490 +msgid "Ноябрь" +msgstr "" + +#: article/views.py:189 article/views.py:241 conference/views.py:159 +#: exposition/forms.py:589 exposition/views.py:406 proj/settings.py:494 +#: settings/templatetags/tempalte_tags.py:26 support/dev/settings.py:490 +#: support/prod/settings.py:490 +msgid "Декабрь" +msgstr "" + +#: city/forms.py:32 city/forms.py:33 city/models.py:39 country/models.py:98 +#: templates/client/city/city.html:40 templates/client/country/country.html:56 +msgid "Население" +msgstr "" + +#: city/forms.py:34 city/forms.py:35 +msgid "Код города" +msgstr "" + +#: city/forms.py:36 +msgid "Код IATA" +msgstr "" + +#: city/forms.py:37 +msgid "Inflect" +msgstr "" + +#: city/forms.py:38 city/models.py:31 conference/forms.py:48 +#: country/forms.py:60 country/models.py:93 exposition/forms.py:43 +#: organiser/forms.py:43 organiser/models.py:45 place_conference/forms.py:31 +#: place_exposition/forms.py:31 place_exposition/models.py:82 +msgid "Logo" +msgstr "" + +#: city/forms.py:57 city/models.py:43 city/models.py:141 company/forms.py:72 +#: conference/forms.py:101 conference/models.py:105 country/forms.py:87 +#: country/models.py:28 exposition/forms.py:110 exposition/models.py:106 +#: functions/admin_forms.py:26 organiser/forms.py:75 organiser/models.py:65 +#: photoreport/forms.py:35 place_conference/forms.py:86 +#: place_exposition/forms.py:86 seminar/forms.py:82 seminar/models.py:83 +#: theme/forms.py:33 theme/forms.py:100 theme/forms.py:177 webinar/forms.py:75 +#: webinar/models.py:78 +msgid "Название" +msgstr "" + +#: city/forms.py:61 city/models.py:47 +msgid "Знаменитые места" +msgstr "" + +#: city/forms.py:63 +msgid "Шопинг" +msgstr "" + +#: city/forms.py:64 city/models.py:45 country/forms.py:89 +#: templates/client/city/city.html:51 +msgid "Транспорт" +msgstr "" + +#: city/forms.py:152 +#, fuzzy +msgid "Введите правильный телефонный код" +msgstr "Не правильный пароль" + +#: city/models.py:32 +msgid "Url старой бд" +msgstr "" + +#: city/models.py:34 country/models.py:91 +msgid "Склонение" +msgstr "" + +#: city/models.py:37 +msgid "IATA" +msgstr "" + +#: city/models.py:40 +msgid "Тел. код " +msgstr "" + +#: city/models.py:48 +msgid "Магазины" +msgstr "" + +#: city/models.py:131 +msgid "Клас отеля" +msgstr "" + +#: city/models.py:132 country/models.py:103 +msgid "Широта" +msgstr "" + +#: city/models.py:133 country/models.py:104 +msgid "Долгота" +msgstr "" + +#: city/models.py:135 conference/forms.py:75 country/models.py:97 +#: exposition/forms.py:76 seminar/forms.py:57 service/forms.py:31 +#: specialist_catalog/models.py:33 templates/client/country/country.html:62 +#: webinar/forms.py:49 +msgid "Валюта" +msgstr "" + +#: city/models.py:136 +msgid "Мин. цена" +msgstr "" + +#: city/models.py:137 +msgid "Макс. цена" +msgstr "" + +#: city/models.py:138 +msgid "Проверено" +msgstr "" + +#: city/models.py:142 company/forms.py:41 organiser/forms.py:48 +#: place_exposition/forms.py:37 seminar/forms.py:46 +msgid "Адрес" +msgstr "" + +#: company/edit_forms.py:22 company/forms.py:266 +msgid "Введите название компании" +msgstr "" + +#: company/edit_forms.py:151 +msgid "Подробное описание компании" +msgstr "" + +#: company/edit_forms.py:159 +msgid "Адрес компании" +msgstr "" + +#: company/forms.py:30 +#, fuzzy +msgid "Введите URL" +msgstr "Введите ваше имя" + +#: company/forms.py:38 company/forms.py:39 company/forms.py:236 +#: company/models.py:47 organiser/forms.py:45 organiser/forms.py:46 +#: organiser/models.py:58 +#: templates/client/includes/company/company_edit.html:466 +msgid "Количество сотрудников" +msgstr "" + +#: company/forms.py:44 organiser/forms.py:51 place_conference/forms.py:40 +#: place_exposition/forms.py:40 +#, fuzzy +msgid "Введите телефон" +msgstr "Контактный телефон" + +#: company/forms.py:46 organiser/forms.py:53 place_conference/forms.py:42 +#: place_exposition/forms.py:42 +#, fuzzy +msgid "Введите факс" +msgstr "Введите ваше имя" + +#: company/forms.py:47 company/forms.py:233 company/models.py:50 +#: organiser/forms.py:54 organiser/models.py:50 place_conference/forms.py:43 +#: place_exposition/forms.py:43 +#: templates/client/includes/conference/conference_object.html:186 +#: templates/client/includes/conference/conference_paid.html:224 +#: templates/client/includes/exposition/expo_paid.html:202 +#: templates/client/includes/exposition/exposition_object.html:195 +msgid "Веб-сайт" +msgstr "" + +#: company/forms.py:48 organiser/forms.py:55 place_conference/forms.py:44 +#: place_exposition/forms.py:44 +#, fuzzy +msgid "Введите адрес сайта" +msgstr "Введите ваше имя" + +#: company/forms.py:50 organiser/forms.py:57 place_conference/forms.py:46 +#: place_exposition/forms.py:46 templates/client/popups/acquire_email.html:5 +msgid "Введите email" +msgstr "" + +#: company/forms.py:51 +msgid "Социальные страници" +msgstr "" + +#: company/forms.py:52 company/forms.py:53 company/forms.py:235 +#: company/models.py:56 conference/forms.py:70 conference/models.py:100 +#: exposition/forms.py:66 exposition/models.py:137 organiser/forms.py:60 +#: organiser/forms.py:61 organiser/models.py:56 place_conference/forms.py:37 +#: place_conference/forms.py:38 place_conference/models.py:50 +#: place_exposition/forms.py:48 place_exposition/forms.py:49 +#: seminar/forms.py:49 seminar/models.py:78 +#: templates/client/includes/company/company_edit.html:434 webinar/forms.py:41 +#: webinar/models.py:73 +msgid "Год основания" +msgstr "" + +#: company/forms.py:75 company/models.py:60 organiser/forms.py:76 +#: organiser/models.py:66 translator/forms.py:48 +msgid "Специализация" +msgstr "" + +#: company/forms.py:76 company/models.py:62 organiser/forms.py:81 +#: organiser/models.py:69 +msgid "Доп инф по адресу" +msgstr "" + +#: company/forms.py:142 company/forms.py:294 service/forms.py:114 +msgid "Такой урл уже занят" +msgstr "" + +#: company/forms.py:206 organiser/forms.py:238 place_conference/forms.py:248 +#: place_exposition/forms.py:196 +#, fuzzy +msgid "Введите правильный факс" +msgstr "Не правильный пароль" + +#: company/forms.py:220 company/forms.py:255 +msgid "название" +msgstr "" + +#: company/forms.py:221 company/forms.py:258 +#: templates/client/includes/company/company_edit.html:133 +msgid "краткое описание компании" +msgstr "" + +#: company/forms.py:222 company/forms.py:260 +#: templates/client/includes/company/company_edit.html:182 +msgid "адрес компании" +msgstr "" + +#: company/forms.py:223 company/forms.py:256 +msgid "подробное описание компании" +msgstr "" + +#: company/forms.py:232 company/models.py:49 organiser/forms.py:52 +#: organiser/models.py:49 place_conference/forms.py:41 +#: place_conference/models.py:47 place_exposition/forms.py:41 +msgid "Факс" +msgstr "" + +#: company/forms.py:237 +msgid "в контакте" +msgstr "" + +#: company/forms.py:240 +msgid "Linkedin" +msgstr "" + +#: company/forms.py:267 +msgid "Введите url(только латиница)" +msgstr "" + +#: company/models.py:28 +msgid "Участники:" +msgstr "" + +#: company/models.py:35 exposition/models.py:62 +msgid "Создатель" +msgstr "" + +#: company/models.py:37 organiser/models.py:41 +msgid "Отрасль" +msgstr "" + +#: company/models.py:59 specialist_catalog/models.py:102 +#, fuzzy +msgid "Название компании" +msgstr "Описание компании" + +#: company/models.py:61 +#: templates/client/includes/company/company_edit.html:499 +msgid "О компании" +msgstr "" + +#: company/models.py:73 +msgid "Заблокирована?" +msgstr "" + +#: conference/forms.py:38 emencia/django/newsletter/forms.py:378 +#: exposition/forms.py:35 exposition/models.py:25 wizard/forms.py:15 +msgid "Не выбрано" +msgstr "" + +#: conference/forms.py:38 exposition/forms.py:35 exposition/models.py:233 +#: wizard/forms.py:10 +msgid "Ежегодно" +msgstr "" + +#: conference/forms.py:38 exposition/forms.py:35 exposition/models.py:233 +#: wizard/forms.py:10 +msgid "2 раза в год" +msgstr "" + +#: conference/forms.py:38 exposition/forms.py:35 exposition/models.py:233 +#: wizard/forms.py:10 +msgid "3 раза в год" +msgstr "" + +#: conference/forms.py:39 exposition/forms.py:36 exposition/models.py:234 +#: wizard/forms.py:10 +msgid "4 раза в год" +msgstr "" + +#: conference/forms.py:39 exposition/forms.py:36 exposition/models.py:234 +#: wizard/forms.py:11 +msgid "5 раз в год" +msgstr "" + +#: conference/forms.py:39 exposition/forms.py:36 exposition/models.py:234 +#: wizard/forms.py:11 +msgid "Раз в 2 года" +msgstr "" + +#: conference/forms.py:39 exposition/forms.py:36 exposition/models.py:235 +#: wizard/forms.py:12 +msgid "Раз в 3 года" +msgstr "" + +#: conference/forms.py:40 exposition/forms.py:37 exposition/models.py:235 +#: wizard/forms.py:12 +msgid "Раз в 4 года" +msgstr "" + +#: conference/forms.py:40 exposition/forms.py:37 exposition/models.py:235 +msgid "Раз в 5 лет" +msgstr "" + +#: conference/forms.py:46 conference/models.py:50 exposition/forms.py:41 +#: exposition/models.py:58 seminar/models.py:37 stats_collector/forms.py:26 +#: webinar/models.py:37 +msgid "Дата начала" +msgstr "" + +#: conference/forms.py:47 conference/models.py:51 exposition/forms.py:42 +#: exposition/models.py:59 seminar/models.py:38 stats_collector/forms.py:27 +msgid "Дата окончания" +msgstr "" + +#: conference/forms.py:57 conference/models.py:58 conference/models.py:243 +#: exposition/forms.py:55 exposition/forms.py:561 exposition/models.py:68 +#: exposition/models.py:330 exposition/models.py:352 +#: templates/client/accounts/feed.html:39 +#: templates/client/organiser/add_event.html:111 wizard/forms.py:30 +msgid "Место проведения" +msgstr "" + +#: conference/forms.py:59 +msgid "Альтернативное название места" +msgstr "" + +#: conference/forms.py:65 emencia/django/newsletter/forms.py:264 +#: exposition/forms.py:62 organiser/event_forms.py:24 +#: templates/client/includes/conference/conference_object.html:198 +#: templates/client/includes/conference/conference_paid.html:236 +#: templates/client/includes/exposition/expo_paid.html:214 +#: templates/client/includes/exposition/exposition_object.html:207 +#: templates/client/organiser/add_event.html:137 +msgid "Периодичность" +msgstr "" + +#: conference/forms.py:66 exposition/forms.py:63 organiser/event_forms.py:23 +#: templates/client/includes/conference/conference_object.html:192 +#: templates/client/includes/conference/conference_paid.html:230 +#: templates/client/includes/exposition/expo_paid.html:208 +#: templates/client/includes/exposition/exposition_object.html:201 +#: templates/client/organiser/add_event.html:127 +msgid "Аудитория" +msgstr "" + +#: conference/forms.py:68 exposition/forms.py:64 seminar/forms.py:47 +#: webinar/forms.py:39 +#, fuzzy +msgid "Веб страница" +msgstr "Страна" + +#: conference/forms.py:69 conference/models.py:81 seminar/forms.py:48 +#: seminar/models.py:58 webinar/forms.py:40 webinar/models.py:54 +msgid "Линк на регистрацию" +msgstr "" + +#: conference/forms.py:71 conference/models.py:102 conference/models.py:213 +#: exposition/forms.py:67 exposition/forms.py:472 exposition/models.py:88 +#: exposition/models.py:301 functions/custom_views.py:255 seminar/forms.py:51 +#: seminar/models.py:80 seminar/models.py:163 +#: templates/client/company/companies_list.html:7 +#: templates/client/company/companies_list.html:15 +#: templates/client/company/company_detail.html:7 +#: templates/client/company/search.html:8 +#: templates/client/conference/members.html:11 +#: templates/client/exposition/members.html:11 +#: templates/client/includes/conference/conference_object.html:25 +#: templates/client/includes/conference/conference_paid.html:25 +#: templates/client/includes/exposition/expo_paid.html:237 +#: templates/client/includes/exposition/expo_paid.html:259 +#: templates/client/includes/exposition/exposition_object.html:27 +#: templates/client/includes/exposition/exposition_object.html:235 +#: templates/client/includes/exposition/exposition_object.html:257 +#: webinar/forms.py:43 webinar/models.py:75 webinar/models.py:162 +msgid "Участники" +msgstr "" + +#: conference/forms.py:72 conference/models.py:212 exposition/forms.py:68 +#: exposition/forms.py:471 exposition/models.py:87 exposition/models.py:300 +#: seminar/forms.py:50 seminar/models.py:162 +#: templates/client/conference/visitors.html:11 +#: templates/client/exposition/visitors.html:11 +#: templates/client/exposition/visitors.html:17 +#: templates/client/includes/conference/conference_object.html:22 +#: templates/client/includes/conference/conference_object.html:254 +#: templates/client/includes/conference/conference_paid.html:22 +#: templates/client/includes/conference/conference_paid.html:287 +#: templates/client/includes/exposition/expo_paid.html:269 +#: templates/client/includes/exposition/exposition_object.html:24 +#: templates/client/includes/exposition/exposition_object.html:267 +#: webinar/forms.py:42 webinar/models.py:161 +msgid "Посетители" +msgstr "" + +#: conference/forms.py:73 exposition/forms.py:70 seminar/forms.py:52 +#: webinar/forms.py:44 +msgid "Cкидка(%)" +msgstr "" + +#: conference/forms.py:76 exposition/forms.py:81 seminar/forms.py:58 +#: webinar/forms.py:50 +msgid "Налог включен" +msgstr "" + +#: conference/forms.py:77 conference/models.py:87 seminar/forms.py:59 +#: seminar/models.py:63 webinar/forms.py:51 webinar/models.py:59 +msgid "Минимальная цена" +msgstr "" + +#: conference/forms.py:78 conference/models.py:88 seminar/forms.py:60 +#: seminar/models.py:64 webinar/forms.py:52 webinar/models.py:60 +msgid "Максимальная цена" +msgstr "" + +#: conference/forms.py:79 exposition/forms.py:90 exposition/models.py:90 +#: seminar/forms.py:61 webinar/forms.py:54 +msgid "Expohit" +msgstr "" + +#: conference/forms.py:80 exposition/forms.py:91 seminar/forms.py:62 +#: webinar/forms.py:55 +msgid "Отменена" +msgstr "" + +#: conference/forms.py:81 exposition/forms.py:92 seminar/forms.py:63 +#: webinar/forms.py:56 +msgid "Перенесена" +msgstr "" + +#: conference/forms.py:102 conference/models.py:106 exposition/forms.py:112 +#: exposition/models.py:107 organiser/event_forms.py:14 +#: place_conference/forms.py:30 place_conference/forms.py:87 +#: place_exposition/forms.py:87 seminar/forms.py:83 seminar/models.py:84 +#: specialist_catalog/models.py:45 webinar/forms.py:76 webinar/models.py:79 +msgid "Краткое описание" +msgstr "" + +#: conference/forms.py:106 conference/models.py:109 exposition/forms.py:116 +#: exposition/models.py:111 +#: templates/client/includes/conference/conference_object.html:202 +#: templates/client/includes/conference/conference_paid.html:240 +#: templates/client/includes/exposition/expo_paid.html:222 +#: templates/client/includes/exposition/exposition_object.html:215 +#: templates/client/organiser/add_event.html:167 +msgid "Время работы" +msgstr "" + +#: conference/forms.py:108 conference/models.py:108 +msgid "Основные темы" +msgstr "" + +#: conference/forms.py:110 conference/models.py:110 exposition/forms.py:131 +#: exposition/models.py:110 +#, fuzzy +msgid "Описание скидки" +msgstr "Описание компании" + +#: conference/forms.py:317 seminar/forms.py:265 webinar/forms.py:253 +msgid "Организаторы" +msgstr "" + +#: conference/forms.py:318 conference/models.py:68 exposition/models.py:78 +#: seminar/forms.py:266 seminar/models.py:49 webinar/forms.py:254 +#: webinar/models.py:45 +#, fuzzy +msgid "Компании" +msgstr "Описание компании" + +#: conference/forms.py:319 seminar/forms.py:267 webinar/forms.py:255 +msgid "Пользователи" +msgstr "" + +#: conference/forms.py:359 exposition/forms.py:535 +msgid "Время начала" +msgstr "" + +#: conference/forms.py:360 exposition/forms.py:537 +msgid "Время окончания" +msgstr "" + +#: conference/models.py:41 +msgid "Конференции:" +msgstr "" + +#: conference/models.py:70 exposition/models.py:80 seminar/models.py:51 +#: webinar/models.py:47 +msgid "Посетители выставки" +msgstr "" + +#: conference/models.py:78 exposition/models.py:134 +msgid "Переодичность" +msgstr "" + +#: conference/models.py:82 exposition/models.py:89 seminar/models.py:59 +#: templates/client/includes/conference/conference_object.html:30 +#: templates/client/includes/conference/conference_paid.html:30 +#: templates/client/includes/exposition/expo_paid.html:28 +#: templates/client/includes/exposition/exposition_object.html:32 +#: templates/client/includes/exposition/price.html:29 +#: templates/client/includes/exposition/programm.html:33 +#: templates/client/includes/exposition/statistic.html:30 webinar/models.py:55 +msgid "Скидка" +msgstr "" + +#: conference/models.py:86 exposition/models.py:146 seminar/models.py:62 +#: webinar/models.py:58 +msgid "Налог" +msgstr "" + +#: conference/models.py:101 seminar/models.py:79 webinar/models.py:74 +msgid "Посетитеил" +msgstr "" + +#: conference/models.py:211 exposition/forms.py:470 exposition/forms.py:597 +#: exposition/models.py:299 seminar/models.py:161 webinar/models.py:160 +msgid "Год" +msgstr "" + +#: conference/models.py:214 exposition/forms.py:71 exposition/forms.py:473 +#: exposition/models.py:138 exposition/models.py:302 +msgid "Площадь" +msgstr "" + +#: conference/models.py:215 exposition/models.py:303 +msgid "Количество стран" +msgstr "" + +#: conference/models.py:231 expobanner/models.py:303 exposition/models.py:319 +#: exposition/models.py:339 +msgid "Начало" +msgstr "" + +#: conference/models.py:232 expobanner/models.py:304 exposition/models.py:320 +#: exposition/models.py:340 +msgid "Конец" +msgstr "" + +#: conference/models.py:240 exposition/forms.py:555 exposition/models.py:327 +#: exposition/models.py:349 +msgid "Название программы" +msgstr "" + +#: conference/models.py:241 exposition/forms.py:557 exposition/models.py:328 +#: exposition/models.py:350 +msgid "Программа" +msgstr "" + +#: conference/models.py:242 exposition/models.py:351 +#: templates/client/includes/conference/conference_object.html:222 +#: templates/client/includes/conference/conference_object.html:243 +#: templates/client/includes/conference/conference_paid.html:255 +#: templates/client/includes/conference/conference_paid.html:276 +msgid "Спикеры" +msgstr "" + +#: conference/views.py:60 exposition/views.py:58 place_exposition/views.py:164 +#: templates/client/includes/side_confs.html:7 +#: templates/client/includes/side_places.html:6 +#: templates/client/includes/translators_aside.html:6 +msgid "По странам" +msgstr "" + +#: conference/views.py:61 +msgid "Коференции мира по странам" +msgstr "" + +#: conference/views.py:74 exposition/views.py:90 +msgid "По тегам" +msgstr "" + +#: conference/views.py:75 +msgid "Коференции мира по тегам" +msgstr "" + +#: conference/views.py:86 exposition/views.py:74 +#: templates/client/includes/side_confs.html:6 +msgid "По тематикам" +msgstr "" + +#: conference/views.py:87 +msgid "Коференции мира по тематикам" +msgstr "" + +#: conference/views.py:101 exposition/views.py:102 +#: place_exposition/views.py:174 templates/client/includes/side_confs.html:8 +#: templates/client/includes/side_places.html:7 +#: templates/client/includes/translators_aside.html:7 +msgid "По городам" +msgstr "" + +#: conference/views.py:102 +msgid "Коференции мира по городам" +msgstr "" + +#: conference/views.py:377 +msgid "Ваш запрос был успешно отправлен" +msgstr "" + +#: conference/views.py:567 +#, python-format +msgid "" +"конференция: %(expo_name)s\n" +" Контактное лицо:%(name)s\n" +"Email: %(email)s\n" +"телефон:%(phone)s\n" +" вопрос:%(question)s" +msgstr "" + +#: conference/views.py:568 +msgid "Проплаченная конференция" +msgstr "" + +#: core/forms.py:15 functions/forms.py:33 +#: templates/client/company/search.html:9 +#: templates/client/company/search.html:15 +#: templates/client/exposition/search.html:8 +#: templates/client/exposition/search.html:14 +#: templates/client/place/search.html:9 templates/client/place/search.html:15 +msgid "Поиск" +msgstr "" + +#: core/forms.py:16 functions/forms.py:34 functions/search_forms.py:32 +#: templates/client/includes/catalog_search_main.html:25 +msgid "Где" +msgstr "" + +#: core/models.py:22 +msgid "Ближайшие выставки на expomap.ru" +msgstr "" + +#: core/models.py:24 +msgid "Подписывайтесь на наш RSS-канал" +msgstr "" + +#: core/models.py:48 +#, python-format +msgid "Ближайшие выставки %(obj)s:" +msgstr "" + +#: core/models.py:67 +#, python-format +msgid "Ближайшие выставки в %(obj)s: " +msgstr "" + +#: core/models.py:86 +#, python-format +msgid "Ближайшие выставки %(obj)s: " +msgstr "" + +#: core/simple_views.py:28 +#, python-format +msgid "" +"Имя: %(fname)s;\n" +" Фамилия:%(lname)s;\n" +" Email: %(email)s;\n" +" Телефон: %(phone)s;\n" +" компния: %(company)s;\n" +" должность: %(office)s" +msgstr "" + +#: core/simple_views.py:39 +msgid "" +"Мы получили Ваш запрос и очень рады, что Вам интересно участие в семинаре " +"Expomap. Если места еще есть, мы пришлем Вам приглашение на указанную Вами " +"электронную почту.\n" +" Увидимся на welcome-coffee ☺" +msgstr "" + +#: core/simple_views.py:42 +msgid "" +"Благодарим за интерес к нашему семинару! За несколько дней до мероприятия " +"мы пришлем Вам ссылку для подключения к онлайн-трансляции!" +msgstr "" + +#: core/views.py:22 place_conference/models.py:102 +#: place_exposition/models.py:159 templates/client/includes/side_places.html:3 +#: templates/client/place/catalog.html:8 +#: templates/client/place/catalog.html:16 +#: templates/client/place/catalog_by.html:14 +#: templates/client/place/photo.html:7 +#: templates/client/place/place_detail.html:7 +#: templates/client/place/place_list.html:7 +#: templates/client/place/place_list.html:14 +#: templates/client/place/search.html:8 +msgid "Места" +msgstr "" + +#: country/forms.py:47 +msgid "Валюты" +msgstr "" + +#: country/forms.py:48 specialist_catalog/models.py:19 translator/forms.py:49 +msgid "Языки" +msgstr "" + +#: country/forms.py:50 country/forms.py:51 +msgid "Население(млн)" +msgstr "" + +#: country/forms.py:53 +msgid "Територия(км2)" +msgstr "" + +#: country/forms.py:54 templates/client/country/country.html:49 +msgid "Часовые пояса" +msgstr "" + +#: country/forms.py:55 country/forms.py:56 +msgid "Код страны" +msgstr "" + +#: country/forms.py:57 country/forms.py:58 +msgid "Срок выдачи" +msgstr "" + +#: country/forms.py:91 +msgid "Правила въезда" +msgstr "" + +#: country/forms.py:92 templates/client/country/country.html:144 +msgid "Документы" +msgstr "" + +#: country/forms.py:93 +msgid "Консульство" +msgstr "" + +#: country/forms.py:106 country/forms.py:111 country/models.py:95 +#: templates/client/country/country.html:38 +msgid "Столица" +msgstr "" + +#: country/forms.py:106 country/forms.py:108 +msgid "Нет городов в стране" +msgstr "" + +#: country/forms.py:108 country/forms.py:113 +msgid "Большие города" +msgstr "" + +#: country/forms.py:200 +#, fuzzy +msgid "Введите правильное население" +msgstr "Не правильный пароль" + +#: country/models.py:89 +msgid "Старый урл" +msgstr "" + +#: country/models.py:92 +msgid "Географическая зона" +msgstr "" + +#: country/models.py:94 +msgid "Большые города" +msgstr "" + +#: country/models.py:99 +msgid "Територия" +msgstr "" + +#: country/models.py:100 +msgid "Часовой пояс" +msgstr "" + +#: country/models.py:101 +msgid "Тел. Код страны" +msgstr "" + +#: country/models.py:107 +msgid "Код страны(Alpha2)" +msgstr "" + +#: django_messages/admin.py:21 +msgid "group" +msgstr "" + +#: django_messages/admin.py:22 +msgid "Creates the message optionally for all users or a group of users." +msgstr "" + +#: django_messages/admin.py:30 +msgid "All users" +msgstr "" + +#: django_messages/admin.py:48 django_messages/models.py:94 +msgid "Message" +msgstr "" + +#: django_messages/admin.py:55 +msgid "Date/time" +msgstr "" + +#: django_messages/apps.py:6 django_messages/models.py:95 +msgid "Messages" +msgstr "" + +#: django_messages/fields.py:56 +#, python-format +msgid "The following usernames are incorrect: %(users)s" +msgstr "" + +#: django_messages/forms.py:17 django_messages/forms.py:66 +#: django_messages/models.py:55 +#: django_messages/templates/django_messages/inbox.html:10 +#: django_messages/templates/django_messages/outbox.html:10 +#: django_messages/templates/django_messages/trash.html:10 +#: django_messages/templates/django_messages/view.html:8 +msgid "Subject" +msgstr "" + +#: django_messages/forms.py:18 django_messages/forms.py:46 +#: django_messages/forms.py:67 django_messages/models.py:56 +msgid "Body" +msgstr "" + +#: django_messages/forms.py:65 django_messages/models.py:58 +#: django_messages/templates/django_messages/outbox.html:10 +#: django_messages/templates/django_messages/view.html:14 +msgid "Recipient" +msgstr "" + +#: django_messages/management.py:9 +msgid "Message Received" +msgstr "" + +#: django_messages/management.py:9 +msgid "you have received a message" +msgstr "" + +#: django_messages/management.py:10 +msgid "Message Sent" +msgstr "" + +#: django_messages/management.py:10 +msgid "you have sent a message" +msgstr "" + +#: django_messages/management.py:11 +msgid "Message Replied" +msgstr "" + +#: django_messages/management.py:11 +msgid "you have replied to a message" +msgstr "" + +#: django_messages/management.py:12 +msgid "Reply Received" +msgstr "" + +#: django_messages/management.py:12 +msgid "you have received a reply to a message" +msgstr "" + +#: django_messages/management.py:13 +msgid "Message Deleted" +msgstr "" + +#: django_messages/management.py:13 +msgid "you have deleted a message" +msgstr "" + +#: django_messages/management.py:14 +msgid "Message Recovered" +msgstr "" + +#: django_messages/management.py:14 +msgid "you have undeleted a message" +msgstr "" + +#: django_messages/models.py:57 +#: django_messages/templates/django_messages/inbox.html:10 +#: django_messages/templates/django_messages/trash.html:10 +#: django_messages/templates/django_messages/view.html:10 +msgid "Sender" +msgstr "" + +#: django_messages/models.py:59 +msgid "Parent message" +msgstr "" + +#: django_messages/models.py:60 +msgid "sent at" +msgstr "" + +#: django_messages/models.py:61 +msgid "read at" +msgstr "" + +#: django_messages/models.py:62 +msgid "replied at" +msgstr "" + +#: django_messages/models.py:63 +msgid "Sender deleted at" +msgstr "" + +#: django_messages/models.py:64 +msgid "Recipient deleted at" +msgstr "" + +#: django_messages/utils.py:26 +#, python-format +msgid "" +"%(sender)s wrote:\n" +"%(body)s" +msgstr "" + +#: django_messages/utils.py:54 +#, python-format +msgid "Re%(prefix)s: %(subject)s" +msgstr "" + +#: django_messages/utils.py:60 +#, python-format +msgid "New Message: %(subject)s" +msgstr "" + +#: django_messages/views.py:78 django_messages/views.py:114 +msgid "Message successfully sent." +msgstr "" + +#: django_messages/views.py:121 +#, python-format +msgid "Re: %(subject)s" +msgstr "" + +#: django_messages/views.py:157 +msgid "Message successfully deleted." +msgstr "" + +#: django_messages/views.py:184 +msgid "Message successfully recovered." +msgstr "" + +#: django_messages/templates/django_messages/base.html:9 +#: django_messages/templates/django_messages/inbox.html:6 +#: django_messages/templates/django_messages/new_message.html:13 +msgid "Inbox" +msgstr "" + +#: django_messages/templates/django_messages/base.html:10 +#: django_messages/templates/django_messages/outbox.html:6 +msgid "Sent Messages" +msgstr "" + +#: django_messages/templates/django_messages/base.html:11 +msgid "New Message" +msgstr "" + +#: django_messages/templates/django_messages/base.html:12 +msgid "Trash" +msgstr "" + +#: django_messages/templates/django_messages/compose.html:4 +msgid "Compose Message" +msgstr "" + +#: django_messages/templates/django_messages/compose.html:10 +msgid "Send" +msgstr "" + +#: django_messages/templates/django_messages/inbox.html:10 +msgid "Received" +msgstr "" + +#: django_messages/templates/django_messages/inbox.html:10 +#: django_messages/templates/django_messages/outbox.html:10 +#: django_messages/templates/django_messages/trash.html:10 +#: emencia/django/newsletter/templates/newsletter/newsletter_historic.html:25 +msgid "Action" +msgstr "" + +#: django_messages/templates/django_messages/inbox.html:22 +#: django_messages/templates/django_messages/outbox.html:19 +#: django_messages/templates/django_messages/trash.html:19 +#: django_messages/templates/django_messages/view.html:13 +msgid "DATETIME_FORMAT" +msgstr "" + +#: django_messages/templates/django_messages/inbox.html:23 +#: django_messages/templates/django_messages/outbox.html:20 +msgid "delete" +msgstr "" + +#: django_messages/templates/django_messages/inbox.html:29 +#: django_messages/templates/django_messages/outbox.html:26 +#: django_messages/templates/django_messages/trash.html:26 +msgid "No messages." +msgstr "" + +#: django_messages/templates/django_messages/new_message.html:4 +#, python-format +msgid "" +"Hello %(recipient)s,\n" +"\n" +"you received a private message from %(sender)s with\n" +"the following contents:" +msgstr "" + +#: django_messages/templates/django_messages/new_message.html:12 +#, python-format +msgid "Sent from %(site_url)s" +msgstr "" + +#: django_messages/templates/django_messages/new_message.html:14 +#: django_messages/templates/django_messages/view.html:20 +msgid "Reply" +msgstr "" + +#: django_messages/templates/django_messages/outbox.html:10 +msgid "Sent" +msgstr "" + +#: django_messages/templates/django_messages/trash.html:6 +msgid "Deleted Messages" +msgstr "" + +#: django_messages/templates/django_messages/trash.html:10 +#: django_messages/templates/django_messages/view.html:12 +#: emencia/django/newsletter/templates/newsletter/newsletter_historic.html:23 +#: expobanner/models.py:271 +msgid "Date" +msgstr "" + +#: django_messages/templates/django_messages/trash.html:20 +msgid "undelete" +msgstr "" + +#: django_messages/templates/django_messages/trash.html:29 +msgid "" +"Deleted Messages are removed from the trash at unregular intervals, don't " +"rely on this feature for long-time storage." +msgstr "" + +#: django_messages/templates/django_messages/view.html:6 +msgid "View Message" +msgstr "" + +#: django_messages/templates/django_messages/view.html:22 +msgid "Delete" +msgstr "" + +#: django_messages/templates/notification/messages_deleted/full.txt:1 +#, python-format +msgid "You have deleted the message '%(message)s'." +msgstr "" + +#: django_messages/templates/notification/messages_deleted/notice.html:1 +#, python-format +msgid "" +"You have deleted the message %(message)s." +msgstr "" + +#: django_messages/templates/notification/messages_received/full.txt:1 +#, python-format +msgid "" +"%(message_sender)s has sent you a message:\n" +"\n" +"%(message)s\n" +"\n" +"%(message_body)s\n" +"\n" +"http://%(current_site)s%(message_url)s" +msgstr "" + +#: django_messages/templates/notification/messages_received/notice.html:2 +#, python-format +msgid "" +"You have received the message %(message)s " +"from %(message_sender)s." +msgstr "" + +#: django_messages/templates/notification/messages_received/short.txt:1 +#: django_messages/templates/notification/messages_reply_received/short.txt:1 +#, python-format +msgid "%(notice)s by %(message_sender)s" +msgstr "" + +#: django_messages/templates/notification/messages_recovered/full.txt:1 +#, python-format +msgid "You have recovered the message '%(message)s'." +msgstr "" + +#: django_messages/templates/notification/messages_recovered/notice.html:1 +#, python-format +msgid "" +"You have recovered the message %(message)s." +msgstr "" + +#: django_messages/templates/notification/messages_replied/full.txt:1 +#, python-format +msgid "" +"You have replied to '%(message_parent_msg)s' from %(message_recipient)s." +msgstr "" + +#: django_messages/templates/notification/messages_replied/notice.html:2 +#, python-format +msgid "" +"You have replied to %(message_parent_msg)s " +"from %(message_recipient)s." +msgstr "" + +#: django_messages/templates/notification/messages_reply_received/full.txt:1 +#, python-format +msgid "" +"%(message_sender)s replied to '%(message_parent_msg)s':\n" +"\n" +"%(message)s\n" +"\n" +"%(message_body)s\n" +"\n" +"http://%(current_site)s%(message_url)s" +msgstr "" + +#: django_messages/templates/notification/messages_reply_received/notice.html:2 +#, python-format +msgid "%(message_sender)s has sent you a reply to %(message_parent_msg)s." +msgstr "" + +#: django_messages/templates/notification/messages_sent/full.txt:1 +#, python-format +msgid "You have sent the message '%(message)s' to %(message_recipient)s." +msgstr "" + +#: django_messages/templates/notification/messages_sent/notice.html:2 +#, python-format +msgid "" +"You have sent the message %(message)s to " +"%(message_recipient)s." +msgstr "" + +#: emencia/django/newsletter/admin_forms.py:14 +#: emencia/django/newsletter/models.py:247 +msgid "Периодичность отправки" +msgstr "" + +#: emencia/django/newsletter/admin_forms.py:15 +#: emencia/django/newsletter/models.py:113 +#: emencia/django/newsletter/views/statistics.py:75 +msgid "first name" +msgstr "" + +#: emencia/django/newsletter/admin_forms.py:16 +#: emencia/django/newsletter/models.py:116 +msgid "subscriber" +msgstr "" + +#: emencia/django/newsletter/admin_forms.py:17 +#: emencia/django/newsletter/models.py:117 +msgid "valid email" +msgstr "" + +#: emencia/django/newsletter/admin_forms.py:18 +#: emencia/django/newsletter/models.py:118 +msgid "contact tester" +msgstr "" + +#: emencia/django/newsletter/admin_forms.py:68 +msgid "Импортировать подписчиков" +msgstr "" + +#: emencia/django/newsletter/admin_forms.py:95 +msgid "Тестовые контакты" +msgstr "" + +#: emencia/django/newsletter/admin_forms.py:97 +#: emencia/django/newsletter/models.py:371 +msgid "content" +msgstr "" + +#: emencia/django/newsletter/forms.py:54 +msgid "Mailing lists" +msgstr "" + +#: emencia/django/newsletter/forms.py:71 service/order_forms.py:211 +#: templates/client/simple_pages/advertising_landing.html:435 +#: templates/client/simple_pages/participation_landing.html:308 +msgid "Ваше имя" +msgstr "" + +#: emencia/django/newsletter/forms.py:132 +msgid "Создан с" +msgstr "" + +#: emencia/django/newsletter/forms.py:133 +msgid "Создан по" +msgstr "" + +#: emencia/django/newsletter/forms.py:134 +msgid "Не подтверждена подписка" +msgstr "" + +#: emencia/django/newsletter/forms.py:135 +msgid "Неалидный Email" +msgstr "" + +#: emencia/django/newsletter/forms.py:136 +msgid "Отписался" +msgstr "" + +#: emencia/django/newsletter/forms.py:188 file/forms.py:18 file/forms.py:90 +#: file/forms.py:171 import_xls/import_forms.py:37 +#, fuzzy +msgid "Выберите файл" +msgstr "Введите вашу фамилию" + +#: emencia/django/newsletter/forms.py:189 +msgid "Активные" +msgstr "" + +#: emencia/django/newsletter/forms.py:190 +msgid "Тестовые" +msgstr "" + +#: emencia/django/newsletter/forms.py:233 +msgid "Такой email уже есть в базе даных" +msgstr "" + +#: emencia/django/newsletter/forms.py:285 +#: templates/client/accounts/settings.html:131 +#: templates/client/popups/announces.html:5 +msgid "Получать анонсы" +msgstr "" + +#: emencia/django/newsletter/forms.py:286 +msgid "Выставки Северной Америки" +msgstr "" + +#: emencia/django/newsletter/forms.py:287 +msgid "Выставки Азии" +msgstr "" + +#: emencia/django/newsletter/forms.py:288 +msgid "Выставки Европы" +msgstr "" + +#: emencia/django/newsletter/models.py:38 +#: emencia/django/newsletter/models.py:281 +#: emencia/django/newsletter/models.py:539 photologue/models.py:809 +#: photologue/models.py:978 +msgid "name" +msgstr "" + +#: emencia/django/newsletter/models.py:39 +msgid "server host" +msgstr "" + +#: emencia/django/newsletter/models.py:40 +msgid "server user" +msgstr "" + +#: emencia/django/newsletter/models.py:41 +#: emencia/django/newsletter/models.py:43 +msgid "Leave it empty if the host is public." +msgstr "" + +#: emencia/django/newsletter/models.py:42 +msgid "server password" +msgstr "" + +#: emencia/django/newsletter/models.py:44 +msgid "server port" +msgstr "" + +#: emencia/django/newsletter/models.py:45 +msgid "server use TLS" +msgstr "" + +#: emencia/django/newsletter/models.py:47 +msgid "custom headers" +msgstr "" + +#: emencia/django/newsletter/models.py:48 +msgid "" +"key1: value1 key2: value2, splitted by return line.\n" +"Useful for passing some tracking headers if your provider allows it." +msgstr "" + +#: emencia/django/newsletter/models.py:50 +msgid "mails per hour" +msgstr "" + +#: emencia/django/newsletter/models.py:103 +msgid "SMTP server" +msgstr "" + +#: emencia/django/newsletter/models.py:104 +msgid "SMTP servers" +msgstr "" + +#: emencia/django/newsletter/models.py:112 +#: emencia/django/newsletter/views/statistics.py:76 +#: templates/client/includes/company/company_edit.html:368 +msgid "email" +msgstr "" + +#: emencia/django/newsletter/models.py:114 +#: emencia/django/newsletter/views/statistics.py:75 +msgid "last name" +msgstr "" + +#: emencia/django/newsletter/models.py:120 +msgid "activation code" +msgstr "" + +#: emencia/django/newsletter/models.py:129 +#: emencia/django/newsletter/models.py:291 +#: emencia/django/newsletter/models.py:390 +#: emencia/django/newsletter/models.py:448 +#: emencia/django/newsletter/models.py:514 +msgid "creation date" +msgstr "" + +#: emencia/django/newsletter/models.py:130 +#: emencia/django/newsletter/models.py:292 +#: emencia/django/newsletter/models.py:391 +msgid "modification date" +msgstr "" + +#: emencia/django/newsletter/models.py:149 +msgid "mail format" +msgstr "" + +#: emencia/django/newsletter/models.py:232 +#: emencia/django/newsletter/models.py:509 +msgid "contact" +msgstr "" + +#: emencia/django/newsletter/models.py:233 +#: emencia/django/newsletter/models.py:542 +msgid "contacts" +msgstr "" + +#: emencia/django/newsletter/models.py:241 +msgid "Раз в неделю" +msgstr "" + +#: emencia/django/newsletter/models.py:242 +msgid "Раз в 2 недели" +msgstr "" + +#: emencia/django/newsletter/models.py:243 +msgid "Раз в месяц" +msgstr "" + +#: emencia/django/newsletter/models.py:249 +msgid "Практикум экспонента" +msgstr "" + +#: emencia/django/newsletter/models.py:250 +msgid "Практикум организатора событий" +msgstr "" + +#: emencia/django/newsletter/models.py:252 +msgid "Географические зоны" +msgstr "" + +#: emencia/django/newsletter/models.py:282 photologue/models.py:176 +#: photologue/models.py:317 photologue/models.py:812 +msgid "description" +msgstr "" + +#: emencia/django/newsletter/models.py:284 +#: emencia/django/newsletter/models.py:296 +msgid "subscribers" +msgstr "" + +#: emencia/django/newsletter/models.py:286 +#: emencia/django/newsletter/models.py:300 +msgid "unsubscribers" +msgstr "" + +#: emencia/django/newsletter/models.py:349 +#: emencia/django/newsletter/models.py:374 +#: emencia/django/newsletter/cmsplugin_newsletter/models.py:15 +msgid "mailing list" +msgstr "" + +#: emencia/django/newsletter/models.py:350 +#: emencia/django/newsletter/models.py:544 +msgid "mailing lists" +msgstr "" + +#: emencia/django/newsletter/models.py:361 +msgid "draft" +msgstr "" + +#: emencia/django/newsletter/models.py:362 +msgid "waiting sending" +msgstr "" + +#: emencia/django/newsletter/models.py:363 +msgid "sending" +msgstr "" + +#: emencia/django/newsletter/models.py:364 +#: emencia/django/newsletter/models.py:498 +msgid "sent" +msgstr "" + +#: emencia/django/newsletter/models.py:365 +msgid "canceled" +msgstr "" + +#: emencia/django/newsletter/models.py:368 +#: emencia/django/newsletter/models.py:445 +#: emencia/django/newsletter/models.py:470 +#: emencia/django/newsletter/cmsplugin_newsletter/models.py:12 +#: photologue/models.py:175 photologue/models.py:302 photologue/models.py:698 +msgid "title" +msgstr "" + +#: emencia/django/newsletter/models.py:369 +msgid "" +"You can use the \"{{ UNIQUE_KEY }}\" variable for unique identifier within " +"the newsletter's title." +msgstr "" + +#: emencia/django/newsletter/models.py:371 +msgid "Or paste an URL." +msgstr "" + +#: emencia/django/newsletter/models.py:372 +msgid "" +"\n" +"\n" +"" +msgstr "" + +#: emencia/django/newsletter/models.py:375 +msgid "test contacts" +msgstr "" + +#: emencia/django/newsletter/models.py:378 +msgid "smtp server" +msgstr "" + +#: emencia/django/newsletter/models.py:380 +msgid "sender" +msgstr "" + +#: emencia/django/newsletter/models.py:382 +msgid "reply to" +msgstr "" + +#: emencia/django/newsletter/models.py:385 +#: emencia/django/newsletter/models.py:510 +msgid "status" +msgstr "" + +#: emencia/django/newsletter/models.py:386 +msgid "sending date" +msgstr "" + +#: emencia/django/newsletter/models.py:388 +msgid "Used for displaying the newsletter on the site." +msgstr "" + +#: emencia/django/newsletter/models.py:438 +#: emencia/django/newsletter/models.py:469 +#: emencia/django/newsletter/models.py:508 +#: emencia/django/newsletter/cmsplugin_newsletter/cms_plugins.py:13 +msgid "newsletter" +msgstr "" + +#: emencia/django/newsletter/models.py:439 +#: emencia/django/newsletter/models.py:546 +msgid "newsletters" +msgstr "" + +#: emencia/django/newsletter/models.py:446 organiser/forms.py:31 +msgid "url" +msgstr "" + +#: emencia/django/newsletter/models.py:458 +#: emencia/django/newsletter/models.py:511 +msgid "link" +msgstr "" + +#: emencia/django/newsletter/models.py:459 +msgid "links" +msgstr "" + +#: emencia/django/newsletter/models.py:471 +msgid "file to attach" +msgstr "" + +#: emencia/django/newsletter/models.py:475 +msgid "attachment" +msgstr "" + +#: emencia/django/newsletter/models.py:476 +msgid "attachments" +msgstr "" + +#: emencia/django/newsletter/models.py:497 +msgid "sent in test" +msgstr "" + +#: emencia/django/newsletter/models.py:499 +msgid "error" +msgstr "" + +#: emencia/django/newsletter/models.py:500 +msgid "invalid email" +msgstr "" + +#: emencia/django/newsletter/models.py:501 +msgid "opened" +msgstr "" + +#: emencia/django/newsletter/models.py:502 +msgid "opened on site" +msgstr "" + +#: emencia/django/newsletter/models.py:503 +msgid "link opened" +msgstr "" + +#: emencia/django/newsletter/models.py:504 +msgid "unsubscription" +msgstr "" + +#: emencia/django/newsletter/models.py:505 +msgid "announce no data" +msgstr "" + +#: emencia/django/newsletter/models.py:533 +msgid "contact mailing status" +msgstr "" + +#: emencia/django/newsletter/models.py:534 +msgid "contact mailing statuses" +msgstr "" + +#: emencia/django/newsletter/models.py:540 +msgid "permissions group" +msgstr "" + +#: emencia/django/newsletter/models.py:553 +msgid "workgroup" +msgstr "" + +#: emencia/django/newsletter/models.py:554 +msgid "workgroups" +msgstr "" + +#: emencia/django/newsletter/admin/contact.py:38 +#: emencia/django/newsletter/templates/newsletter/newsletter_statistics.html:188 +msgid "Status" +msgstr "" + +#: emencia/django/newsletter/admin/contact.py:39 +msgid "Advanced" +msgstr "" + +#: emencia/django/newsletter/admin/contact.py:71 +msgid "No relative object" +msgstr "" + +#: emencia/django/newsletter/admin/contact.py:73 +msgid "Related object" +msgstr "" + +#: emencia/django/newsletter/admin/contact.py:80 +msgid "Total subscriptions" +msgstr "" + +#: emencia/django/newsletter/admin/contact.py:85 +msgid "Export contacts as VCard" +msgstr "" + +#: emencia/django/newsletter/admin/contact.py:92 +msgid "Export contacts in Excel" +msgstr "" + +#: emencia/django/newsletter/admin/contact.py:97 +#, python-format +msgid "New mailinglist at %s" +msgstr "" + +#: emencia/django/newsletter/admin/contact.py:98 +#, python-format +msgid "New mailing list created in admin at %s" +msgstr "" + +#: emencia/django/newsletter/admin/contact.py:102 +msgid "" +"SQLite3 or a SpatialLite database type detected, please note you will be " +"limited to 999 contacts per mailing list." +msgstr "" + +#: emencia/django/newsletter/admin/contact.py:114 +#, python-format +msgid "%s succesfully created." +msgstr "" + +#: emencia/django/newsletter/admin/contact.py:117 +msgid "Create a mailinglist" +msgstr "" + +#: emencia/django/newsletter/admin/contact.py:136 +#, python-format +msgid "%s contacts succesfully imported." +msgstr "" + +#: emencia/django/newsletter/admin/contact.py:138 +msgid "Contact importation" +msgstr "" + +#: emencia/django/newsletter/admin/mailinglist.py:67 +msgid "Please select a least 2 mailing list." +msgstr "" + +#: emencia/django/newsletter/admin/mailinglist.py:79 +#, python-format +msgid "Merging list at %s" +msgstr "" + +#: emencia/django/newsletter/admin/mailinglist.py:80 +#, python-format +msgid "Mailing list created by merging at %s" +msgstr "" + +#: emencia/django/newsletter/admin/mailinglist.py:89 +#, python-format +msgid "%s succesfully created by merging." +msgstr "" + +#: emencia/django/newsletter/admin/mailinglist.py:92 +msgid "Merge selected mailinglists" +msgstr "" + +#: emencia/django/newsletter/admin/mailinglist.py:98 +#: emencia/django/newsletter/templates/newsletter/contact_import.html:24 +msgid "Excel" +msgstr "" + +#: emencia/django/newsletter/admin/mailinglist.py:100 +#: emencia/django/newsletter/templates/newsletter/contact_import.html:70 +msgid "VCard" +msgstr "" + +#: emencia/django/newsletter/admin/mailinglist.py:102 +msgid "Export" +msgstr "" + +#: emencia/django/newsletter/admin/newsletter.py:43 +msgid "Receivers" +msgstr "" + +#: emencia/django/newsletter/admin/newsletter.py:44 +msgid "Sending" +msgstr "" + +#: emencia/django/newsletter/admin/newsletter.py:45 +#: emencia/django/newsletter/admin/smtpserver.py:36 +msgid "Miscellaneous" +msgstr "" + +#: emencia/django/newsletter/admin/newsletter.py:81 +msgid "Default" +msgstr "" + +#: emencia/django/newsletter/admin/newsletter.py:108 +msgid "Unable to download HTML, due to errors within." +msgstr "" + +#: emencia/django/newsletter/admin/newsletter.py:110 +msgid "Please install lxml for parsing an URL." +msgstr "" + +#: emencia/django/newsletter/admin/newsletter.py:122 +msgid "View historic" +msgstr "" + +#: emencia/django/newsletter/admin/newsletter.py:123 +#: emencia/django/newsletter/admin/newsletter.py:132 +msgid "Not available" +msgstr "" + +#: emencia/django/newsletter/admin/newsletter.py:125 +msgid "Historic" +msgstr "" + +#: emencia/django/newsletter/admin/newsletter.py:131 +msgid "View statistics" +msgstr "" + +#: emencia/django/newsletter/admin/newsletter.py:134 +msgid "Statistics" +msgstr "" + +#: emencia/django/newsletter/admin/newsletter.py:144 +#: emencia/django/newsletter/views/admin_views.py:268 +msgid "Unable send newsletter, due to errors within HTML." +msgstr "" + +#: emencia/django/newsletter/admin/newsletter.py:146 +#, python-format +msgid "%s succesfully sent." +msgstr "" + +#: emencia/django/newsletter/admin/newsletter.py:148 +#, python-format +msgid "No test contacts assigned for %s." +msgstr "" + +#: emencia/django/newsletter/admin/newsletter.py:149 +msgid "Send test email" +msgstr "" + +#: emencia/django/newsletter/admin/newsletter.py:157 +#, python-format +msgid "%s newletters are ready to send" +msgstr "" + +#: emencia/django/newsletter/admin/newsletter.py:158 +msgid "Make ready to send" +msgstr "" + +#: emencia/django/newsletter/admin/newsletter.py:167 +#, python-format +msgid "%s newletters are cancelled" +msgstr "" + +#: emencia/django/newsletter/admin/newsletter.py:168 +msgid "Cancel the sending" +msgstr "" + +#: emencia/django/newsletter/admin/smtpserver.py:18 +msgid "Invalid syntax, do not forget the \":\"." +msgstr "" + +#: emencia/django/newsletter/admin/smtpserver.py:20 +msgid "Invalid syntax, several assignments by line." +msgstr "" + +#: emencia/django/newsletter/admin/smtpserver.py:34 +msgid "Configuration" +msgstr "" + +#: emencia/django/newsletter/admin/smtpserver.py:57 +msgid "Check connection" +msgstr "" + +#: emencia/django/newsletter/admin/workgroup.py:18 +msgid "Contacts length" +msgstr "" + +#: emencia/django/newsletter/admin/workgroup.py:22 +msgid "Mailing List length" +msgstr "" + +#: emencia/django/newsletter/admin/workgroup.py:26 +msgid "Newsletter length" +msgstr "" + +#: emencia/django/newsletter/cmsplugin_newsletter/cms_plugins.py:15 +msgid "Subscription Form" +msgstr "" + +#: emencia/django/newsletter/cmsplugin_newsletter/models.py:13 +msgid "show description" +msgstr "" + +#: emencia/django/newsletter/cmsplugin_newsletter/models.py:14 +msgid "Show the mailing list's description." +msgstr "" + +#: emencia/django/newsletter/cmsplugin_newsletter/models.py:16 +msgid "Mailing List to subscribe to." +msgstr "" + +#: emencia/django/newsletter/templates/admin/newsletter/contact/change_list.html:36 +#, python-format +msgid "Add %(name)s" +msgstr "" + +#: emencia/django/newsletter/templates/admin/newsletter/contact/change_list.html:42 +msgid "Actions" +msgstr "" + +#: emencia/django/newsletter/templates/admin/newsletter/contact/change_list.html:51 +#, python-format +msgid "Import %(name)ss" +msgstr "" + +#: emencia/django/newsletter/templates/admin/newsletter/contact/change_list.html:58 +msgid "Add to a mailing list" +msgstr "" + +#: emencia/django/newsletter/templates/admin/newsletter/contact/change_list.html:65 +#, python-format +msgid "Export %(name)s as VCard" +msgstr "" + +#: emencia/django/newsletter/templates/admin/newsletter/contact/change_list.html:70 +#, python-format +msgid "Export %(name)s as Excel" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/announce_template.html:13 +#: password_reset/templates/password_reset/recovery_email_expo.html:20 +#: templates/client/newsletters/activation_template.html:20 +#: templates/registration/activation_email.html:20 +msgid "Выставки, конференции, семинары" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/announce_template.html:19 +#: emencia/django/newsletter/templates/newsletter/announce_template.html:166 +#: password_reset/templates/password_reset/recovery_email_expo.html:26 +#: password_reset/templates/password_reset/recovery_email_expo.html:96 +#: templates/client/newsletters/activation_template.html:26 +#: templates/registration/activation_email.html:26 +#: templates/registration/activation_email.html:95 +msgid "СОБЫТИЯ" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/announce_template.html:20 +#: emencia/django/newsletter/templates/newsletter/announce_template.html:167 +#: password_reset/templates/password_reset/recovery_email_expo.html:27 +#: password_reset/templates/password_reset/recovery_email_expo.html:97 +#: templates/client/newsletters/activation_template.html:27 +#: templates/registration/activation_email.html:27 +#: templates/registration/activation_email.html:96 +msgid "МЕСТА" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/announce_template.html:21 +#: emencia/django/newsletter/templates/newsletter/announce_template.html:168 +#: password_reset/templates/password_reset/recovery_email_expo.html:28 +#: password_reset/templates/password_reset/recovery_email_expo.html:98 +#: templates/client/newsletters/activation_template.html:28 +#: templates/registration/activation_email.html:28 +#: templates/registration/activation_email.html:97 +msgid "УЧАСТНИКИ" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/announce_template.html:39 +#: templates/client/popups/announce_subscription.html:12 +msgid "по тематике" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/announce_template.html:69 +msgid "посмотреть все события" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/announce_template.html:81 +#: templates/client/includes/news.html:6 +#: templates/client/includes/index/news.html:4 +msgid "Новости событий" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/announce_template.html:113 +msgid "посмотреть все новости" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/announce_template.html:123 +msgid "Аналитика для профессионалов" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/base.html:10 +#: emencia/django/newsletter/templates/newsletter/base.html:13 +msgid "Emencia Django Newsletter" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/contact_import.html:7 +#: templates/admin/hvad/deletion_not_allowed.html:6 +msgid "Home" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/contact_import.html:10 +msgid "Importation" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/contact_import.html:27 +msgid "Excel file (.xls)" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/contact_import.html:31 +msgid "Import contacts from a Excel file." +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/contact_import.html:32 +msgid "Columns are [email][last name][first name][tags]." +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/contact_import.html:33 +#: emencia/django/newsletter/templates/newsletter/contact_import.html:56 +#: emencia/django/newsletter/templates/newsletter/contact_import.html:98 +msgid "All columns are optionnal excepting the email." +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/contact_import.html:38 +#: emencia/django/newsletter/templates/newsletter/contact_import.html:61 +#: emencia/django/newsletter/templates/newsletter/contact_import.html:81 +#: emencia/django/newsletter/templates/newsletter/contact_import.html:103 +msgid "Import" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/contact_import.html:47 +msgid "Text" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/contact_import.html:50 +msgid "Text file (.txt, .csv)" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/contact_import.html:54 +msgid "Import contacts from a text file, or a CSV file." +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/contact_import.html:55 +#: emencia/django/newsletter/templates/newsletter/contact_import.html:97 +msgid "" +"Columns are [email][last name][first name][tags], splitted by a dot coma." +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/contact_import.html:73 +msgid "VCard file (.cvf)" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/contact_import.html:77 +msgid "" +"Import contacts from your favorite mail client, by providing a VCard file." +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/contact_import.html:90 +#: emencia/django/newsletter/templates/newsletter/contact_import.html:93 +msgid "Raw text" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/mailing_list_subscribe.html:4 +#: emencia/django/newsletter/templates/newsletter/mailing_list_subscribe.html:7 +msgid "Subscription to mailing list" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/mailing_list_subscribe.html:10 +msgid "Thanks for your subscription!" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/mailing_list_subscribe.html:16 +msgid "Validate this form to subscribe to the mailing lists." +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/mailing_list_subscribe.html:21 +#: emencia/django/newsletter/templates/newsletter/cms/subscription_form.html:20 +msgid "Subscribe" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/mailing_list_unsubscribe.html:5 +#: emencia/django/newsletter/templates/newsletter/mailing_list_unsubscribe.html:16 +#: templates/client/newsletters/unsubscribe_form.html:8 +msgid "Отписаться" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/mailing_list_unsubscribe.html:12 +msgid "Вы уже отписаны отэтой рассылки" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/newsletter_historic.html:9 +#: emencia/django/newsletter/templates/newsletter/newsletter_statistics.html:68 +msgid "Admin." +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/newsletter_historic.html:24 +msgid "Contact" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/newsletter_link_site.html:5 +msgid "If you cannot see this email," +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/newsletter_link_site.html:6 +msgid "click here" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/newsletter_link_unsubscribe.html:6 +msgid "Чтобы отписаться от этой рассылки, перейдите" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/newsletter_link_unsubscribe.html:6 +msgid "по ссылке" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/newsletter_statistics.html:86 +#: emencia/django/newsletter/views/statistics.py:147 +msgid "Consultation histogram" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/newsletter_statistics.html:89 +msgid "Period" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/newsletter_statistics.html:112 +#: emencia/django/newsletter/templates/newsletter/newsletter_statistics.html:113 +msgid "Broadcasting statistics" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/newsletter_statistics.html:115 +#: emencia/django/newsletter/views/statistics.py:139 +msgid "Total openings" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/newsletter_statistics.html:120 +msgid "Openings on site" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/newsletter_statistics.html:125 +msgid "Total openings unique" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/newsletter_statistics.html:130 +msgid "Unknow delivery" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/newsletter_statistics.html:135 +msgid "Unsubscriptions" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/newsletter_statistics.html:140 +msgid "Openings average" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/newsletter_statistics.html:148 +#: emencia/django/newsletter/templates/newsletter/newsletter_statistics.html:149 +msgid "Links statistics" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/newsletter_statistics.html:151 +#: emencia/django/newsletter/views/statistics.py:143 +msgid "Total clicked links" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/newsletter_statistics.html:156 +msgid "Total clicked links unique" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/newsletter_statistics.html:161 +msgid "Clicked links by openings" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/newsletter_statistics.html:166 +msgid "Clicked links average" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/newsletter_statistics.html:178 +msgid "Report" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/newsletter_statistics.html:180 +msgid "Download CSV report" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/newsletter_statistics.html:185 +msgid "Informations" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/newsletter_statistics.html:186 +msgid "Recipients" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/newsletter_statistics.html:187 +msgid "View" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/newsletter_statistics.html:190 +msgid "Sending date" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/newsletter_statistics.html:193 +msgid "Tests sent" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/newsletter_statistics.html:198 +msgid "Top Links" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/newsletter_statistics.html:199 +msgid "Density map" +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/newsletter_statistics.html:208 +msgid "No Top Links yet." +msgstr "" + +#: emencia/django/newsletter/templates/newsletter/cms/subscription_form.html:8 +msgid "You have successfully subscribed to the mailing list!" +msgstr "" + +#: emencia/django/newsletter/utils/importation.py:52 +#, python-format +msgid "Mailing list created by importation at %s" +msgstr "" + +#: emencia/django/newsletter/utils/importation.py:53 +#, python-format +msgid "Contacts imported by %s." +msgstr "" + +#: emencia/django/newsletter/views/admin_views.py:270 +msgid "Нет тестовых контактов" +msgstr "" + +#: emencia/django/newsletter/views/mailing_list.py:111 +msgid "Настройки вашой подписки успешно сохранены" +msgstr "" + +#: emencia/django/newsletter/views/statistics.py:54 +#, python-format +msgid "Statistics of %s" +msgstr "" + +#: emencia/django/newsletter/views/statistics.py:76 +msgid "openings" +msgstr "" + +#: emencia/django/newsletter/views/statistics.py:139 +msgid "#val# openings" +msgstr "" + +#: emencia/django/newsletter/views/statistics.py:143 +msgid "#val# clicks" +msgstr "" + +#: emencia/django/newsletter/views/tracking.py:65 +#, python-format +msgid "Historic of %s" +msgstr "" + +#: expobanner/admin.py:81 +msgid "Список урлов" +msgstr "" + +#: expobanner/admin.py:86 +msgid "Список груп" +msgstr "" + +#: expobanner/admin.py:91 +msgid "Список банеров" +msgstr "" + +#: expobanner/admin.py:106 +msgid "Список ссылок" +msgstr "" + +#: expobanner/admin.py:230 templates/client/organiser/add_event.html:27 +msgid "выставка" +msgstr "" + +#: expobanner/admin.py:231 +msgid "выставок" +msgstr "" + +#: expobanner/admin.py:232 +msgid "выставку" +msgstr "" + +#: expobanner/admin.py:239 templates/client/organiser/add_event.html:28 +msgid "конференция" +msgstr "" + +#: expobanner/admin.py:240 +msgid "конференций" +msgstr "" + +#: expobanner/admin.py:241 +msgid "конференцию" +msgstr "" + +#: expobanner/forms.py:18 +msgid "Создать урл" +msgstr "" + +#: expobanner/forms.py:26 +msgid "Создать групу" +msgstr "" + +#: expobanner/forms.py:33 +msgid "Изменить групу" +msgstr "" + +#: expobanner/forms.py:41 +msgid "Создать банер" +msgstr "" + +#: expobanner/forms.py:49 +msgid "Отслеживаемую ссылку" +msgstr "" + +#: expobanner/forms.py:67 +#, fuzzy +msgid "Введите пароль:" +msgstr "Введите ваше имя" + +#: expobanner/forms.py:75 expobanner/forms.py:207 +msgid "Линк на билеты" +msgstr "" + +#: expobanner/forms.py:76 expobanner/forms.py:208 +msgid "Линк на участие" +msgstr "" + +#: expobanner/forms.py:77 expobanner/forms.py:209 +msgid "Линк на официальный сайт" +msgstr "" + +#: expobanner/forms.py:114 +msgid "Создать проплаченую выставку" +msgstr "" + +#: expobanner/forms.py:125 expobanner/forms.py:172 expobanner/forms.py:359 +msgid "Такой выставки не существует" +msgstr "" + +#: expobanner/forms.py:131 +msgid "Создать проплаченую конференцию" +msgstr "" + +#: expobanner/forms.py:142 expobanner/forms.py:202 +msgid "Такой конференции не существует" +msgstr "" + +#: expobanner/forms.py:147 +msgid "Добавить выставку на главную" +msgstr "" + +#: expobanner/forms.py:177 +msgid "Добавить конференцию на главную" +msgstr "" + +#: expobanner/forms.py:259 expobanner/forms.py:323 +msgid "Топ города" +msgstr "" + +#: expobanner/forms.py:311 +msgid "Создать выставку в топе" +msgstr "" + +#: expobanner/forms.py:364 +msgid "Изменить выставку" +msgstr "" + +#: expobanner/models.py:27 +msgid "URL or URL RegEx" +msgstr "" + +#: expobanner/models.py:28 +msgid "RegEx" +msgstr "" + +#: expobanner/models.py:29 +msgid "Sites" +msgstr "" + +#: expobanner/models.py:32 expobanner/models.py:61 expobanner/models.py:118 +msgid "Created At" +msgstr "" + +#: expobanner/models.py:33 expobanner/models.py:62 expobanner/models.py:119 +msgid "Updated At" +msgstr "" + +#: expobanner/models.py:44 expobanner/models.py:107 expobanner/models.py:194 +#: expobanner/models.py:220 +msgid "URLs" +msgstr "" + +#: expobanner/models.py:54 organiser/event_forms.py:12 +#: registration/forms.py:46 specialist_catalog/models.py:103 +#: templates/admin/article/blog_form.html:145 +#: templates/admin/expobanner/comment_list.html:15 +#: templates/admin/expobanner/pcomment_list.html:15 +#: templates/client/popups/register.html:12 +msgid "Имя" +msgstr "" + +#: expobanner/models.py:56 +msgid "Ширина" +msgstr "" + +#: expobanner/models.py:57 +msgid "Высота" +msgstr "" + +#: expobanner/models.py:58 +msgid "Скорость отображения" +msgstr "" + +#: expobanner/models.py:60 expobanner/models.py:250 expobanner/models.py:339 +#: templates/client/includes/event_list.html:28 +msgid "Активная" +msgstr "" + +#: expobanner/models.py:75 +msgid "Banner Group" +msgstr "" + +#: expobanner/models.py:76 +msgid "Banner Groups" +msgstr "" + +#: expobanner/models.py:89 +msgid "Alt" +msgstr "" + +#: expobanner/models.py:91 meta/models.py:163 +msgid "Текст" +msgstr "" + +#: expobanner/models.py:92 +msgid "Картинка" +msgstr "" + +#: expobanner/models.py:99 +msgid "Сорт" +msgstr "" + +#: expobanner/models.py:100 templates/client/popups/place.html:7 +msgid "Место" +msgstr "" + +#: expobanner/models.py:102 +msgid "Often" +msgstr "" + +#: expobanner/models.py:103 +msgid "A ten will display 10 times more often that a one." +msgstr "" + +#: expobanner/models.py:109 +msgid "HTML?" +msgstr "" + +#: expobanner/models.py:110 +msgid "Flash?" +msgstr "" + +#: expobanner/models.py:111 +msgid "Popup?" +msgstr "" + +#: expobanner/models.py:112 +msgid "Is Paid event link?" +msgstr "" + +#: expobanner/models.py:113 +msgid "Is simple link?" +msgstr "" + +#: expobanner/models.py:184 expobanner/models.py:218 +msgid "Banner" +msgstr "" + +#: expobanner/models.py:185 +msgid "Banners" +msgstr "" + +#: expobanner/models.py:193 expobanner/models.py:219 +msgid "Group" +msgstr "" + +#: expobanner/models.py:196 +msgid "User" +msgstr "" + +#: expobanner/models.py:197 +msgid "Clicked At" +msgstr "" + +#: expobanner/models.py:198 +msgid "IP" +msgstr "" + +#: expobanner/models.py:199 expobanner/models.py:201 +msgid "User Agent" +msgstr "" + +#: expobanner/models.py:200 +msgid "Page" +msgstr "" + +#: expobanner/models.py:208 +msgid "Type" +msgstr "" + +#: expobanner/models.py:222 +msgid "Data" +msgstr "" + +#: expobanner/models.py:223 +msgid "Views" +msgstr "" + +#: expobanner/models.py:224 +msgid "Clicks" +msgstr "" + +#: expobanner/models.py:225 +msgid "Unique Views" +msgstr "" + +#: expobanner/models.py:226 +msgid "Unique Clicks" +msgstr "" + +#: expobanner/models.py:294 +msgid "Каталог для топа" +msgstr "" + +#: expobanner/models.py:295 expobanner/models.py:338 photologue/forms.py:39 +msgid "Позиция" +msgstr "" + +#: expobanner/models.py:297 +msgid "Исключить теги" +msgstr "" + +#: expobanner/models.py:300 +msgid "Топ месяца" +msgstr "" + +#: expobanner/models.py:301 +msgid "Топ года" +msgstr "" + +#: expobanner/models.py:302 +msgid "Исключить города" +msgstr "" + +#: expobanner/stat_views.py:50 +#, fuzzy +msgid "Неправильный пароль" +msgstr "Не правильный пароль" + +#: exposition/forms.py:57 +msgid "Альтернативное место" +msgstr "" + +#: exposition/forms.py:65 exposition/models.py:140 +msgid "Ссылка на регистрацию" +msgstr "" + +#: exposition/forms.py:69 exposition/models.py:141 +msgid "Минимальная площадь" +msgstr "" + +#: exposition/forms.py:72 seminar/forms.py:53 webinar/forms.py:45 +msgid "Метки" +msgstr "" + +#: exposition/forms.py:77 +msgid "Срок подачи стенда" +msgstr "" + +#: exposition/forms.py:78 templates/client/includes/exposition/price.html:237 +msgid "Минимальный размер стенда" +msgstr "" + +#: exposition/forms.py:80 +msgid "Цена за каталог" +msgstr "" + +#: exposition/forms.py:82 exposition/models.py:147 +msgid "Минимальная цена закрытой НЕ оборудованной площади" +msgstr "" + +#: exposition/forms.py:83 exposition/models.py:149 +msgid "Максимальная цена закрытой НЕ оборудованной площади" +msgstr "" + +#: exposition/forms.py:84 exposition/models.py:151 +msgid "Минимальная цена закрытой оборудованной площади" +msgstr "" + +#: exposition/forms.py:85 exposition/models.py:153 +msgid "Максимальная цена закрытой оборудованной площади" +msgstr "" + +#: exposition/forms.py:86 exposition/models.py:155 +msgid "Минимальная цена открытой площади" +msgstr "" + +#: exposition/forms.py:87 exposition/models.py:157 +msgid "Максимальная цена открытой площади" +msgstr "" + +#: exposition/forms.py:88 +msgid "Регистрационны взнос" +msgstr "" + +#: exposition/forms.py:119 exposition/models.py:113 +msgid "Стоимость билета 1 день" +msgstr "" + +#: exposition/forms.py:122 exposition/models.py:114 +msgid "Стоимость билета все дни" +msgstr "" + +#: exposition/forms.py:124 exposition/models.py:115 +msgid "Стоимость на стойке 1 день" +msgstr "" + +#: exposition/forms.py:126 exposition/models.py:116 +msgid "Стоимость на стойке все дни" +msgstr "" + +#: exposition/forms.py:129 exposition/models.py:109 +#: organiser/event_forms.py:27 +#: templates/client/includes/exposition/expo_paid.html:218 +#: templates/client/includes/exposition/exposition_object.html:211 +#: templates/client/organiser/add_event.html:162 wizard/forms.py:42 +msgid "Экспонируемые продукты" +msgstr "" + +#: exposition/forms.py:133 exposition/forms.py:488 exposition/models.py:117 +msgid "Участвующие страны" +msgstr "" + +#: exposition/forms.py:135 exposition/models.py:118 +msgid "Условия предварительной регистрации" +msgstr "" + +#: exposition/forms.py:137 exposition/models.py:119 +msgid "Условия регистрации на стойке" +msgstr "" + +#: exposition/forms.py:139 exposition/models.py:120 +msgid "Примечание по посещению" +msgstr "" + +#: exposition/forms.py:141 exposition/models.py:121 +#, fuzzy +msgid "Примечание по участии" +msgstr "Описание компании" + +#: exposition/forms.py:145 +msgid "Meta title" +msgstr "" + +#: exposition/forms.py:147 +msgid "Meta keywords" +msgstr "" + +#: exposition/forms.py:149 +msgid "Meta description" +msgstr "" + +#: exposition/forms.py:251 +msgid "Выставка с таким названием уже существует" +msgstr "" + +#: exposition/forms.py:474 +msgid "Число стран" +msgstr "" + +#: exposition/forms.py:598 +msgid "Месяц" +msgstr "" + +#: exposition/models.py:26 proj/settings.py:486 +#: specialist_catalog/models.py:36 support/dev/settings.py:482 +#: support/prod/settings.py:482 +msgid "Специалисты" +msgstr "" + +#: exposition/models.py:27 proj/settings.py:486 support/dev/settings.py:482 +#: support/prod/settings.py:482 +msgid "Специалисты и потребители" +msgstr "" + +#: exposition/models.py:28 proj/settings.py:487 support/dev/settings.py:483 +#: support/prod/settings.py:483 +msgid "Широкая публика" +msgstr "" + +#: exposition/models.py:51 +msgid "Выставки:" +msgstr "" + +#: exposition/models.py:143 +msgid "Срок подачи заявки" +msgstr "" + +#: exposition/models.py:144 +msgid "Минимальный размер стэнда" +msgstr "" + +#: exposition/models.py:145 +msgid "Стоимость каталога" +msgstr "" + +#: exposition/models.py:159 +#: templates/client/includes/exposition/price.html:240 +msgid "Регистрационный взнос" +msgstr "" + +#: exposition/views.py:59 +msgid "Выставки мира по странам" +msgstr "" + +#: exposition/views.py:75 +msgid "Выставки мира по тематикам" +msgstr "" + +#: exposition/views.py:91 +msgid "Выставки мира по тегам" +msgstr "" + +#: exposition/views.py:103 +msgid "Выставки мира по городам" +msgstr "" + +#: exposition/views.py:650 +#, python-format +msgid "" +"выставка: %(expo_name)s\n" +" Контактное лицо:%(name)s\n" +"Email: %(email)s\n" +"телефон:%(phone)s\n" +" вопрос:%(question)s" +msgstr "" + +#: exposition/views.py:651 +msgid "Проплаченная выставка" +msgstr "" + +#: file/forms.py:20 +msgid "Схема территории" +msgstr "" + +#: file/forms.py:20 +msgid "Превью2" +msgstr "" + +#: file/forms.py:21 templates/admin/article/blog_form.html:146 +msgid "Назначение" +msgstr "" + +#: file/forms.py:35 file/forms.py:110 file/forms.py:188 +msgid "Имя файла" +msgstr "" + +#: file/forms.py:96 +msgid "Назаначение" +msgstr "" + +#: file/models.py:18 +msgid "Флаг" +msgstr "" + +#: file/models.py:20 +msgid "Карта" +msgstr "" + +#: file/models.py:21 +msgid "Схема територии" +msgstr "" + +#: file/models.py:22 +msgid "Дипломы" +msgstr "" + +#: file/models.py:131 photologue/models.py:453 +msgid "view count" +msgstr "" + +#: functions/admin_forms.py:27 +msgid "Часть названия" +msgstr "" + +#: functions/custom_fields.py:280 +#, python-format +msgid "%(month)s %(year)s" +msgstr "" + +#: functions/custom_views.py:56 +msgid "Page is not 'last', nor can it be converted to an int." +msgstr "" + +#: functions/custom_views.py:219 +#, python-format +msgid "Удаления %(object)s требует удаления связаных объектов" +msgstr "" + +#: functions/custom_views.py:255 +msgid "Фоторепортажи" +msgstr "" + +#: functions/custom_views.py:456 place_exposition/views.py:85 +#: place_exposition/views.py:110 +#, python-format +msgid "No %(verbose_name)s found matching the query" +msgstr "" + +#: functions/form_check.py:8 +#, fuzzy +msgid "Введите правильное значение" +msgstr "Не правильный пароль" + +#: functions/forms.py:15 templates/client/includes/footer.html:28 +#: templates/client/includes/menu.html:6 templates/client/popups/theme.html:15 +#: templates/client/service/tour.html:41 +msgid "выставки" +msgstr "" + +#: functions/forms.py:16 templates/client/includes/footer.html:29 +#: templates/client/includes/menu.html:7 +#: templates/client/includes/index/confs.html:3 +#: templates/client/popups/theme.html:18 +msgid "конференции" +msgstr "" + +#: functions/forms.py:17 +msgid "семинары" +msgstr "" + +#: functions/forms.py:18 +msgid "вебинары" +msgstr "" + +#: functions/model_mixin.py:179 +msgid "Событие с таким урлом уже существует" +msgstr "" + +#: functions/search_forms.py:31 +#: templates/client/includes/catalog_search_main.html:14 +msgid "Я ищу" +msgstr "" + +#: functions/search_forms.py:31 +msgid "Тематика, слово или название" +msgstr "" + +#: functions/search_forms.py:129 functions/search_forms.py:137 +#: functions/search_forms.py:147 functions/search_forms.py:156 +#: templates/client/includes/catalog_search.html:35 +#: templates/client/includes/catalog_search.html:43 +#: templates/client/includes/catalog_search.html:44 +#: templates/client/includes/catalog_search.html:50 +#: templates/client/includes/catalog_search.html:68 +#: templates/client/includes/catalog_search_main.html:41 +#: templates/client/includes/catalog_search_main.html:43 +#: templates/client/includes/catalog_search_main.html:50 +#: templates/client/includes/catalog_search_main.html:51 +#: templates/client/includes/catalog_search_main.html:57 +#: templates/client/includes/catalog_search_main.html:59 +msgid "Не важно" +msgstr "" + +#: functions/search_forms.py:133 functions/search_forms.py:151 +msgid " и еще " +msgstr "" + +#: functions/search_forms.py:133 functions/search_forms.py:151 +msgid "позиция" +msgstr "" + +#: functions/search_forms.py:133 functions/search_forms.py:151 +msgid "позиции" +msgstr "" + +#: functions/search_forms.py:133 functions/search_forms.py:151 +#: templates/client/includes/search_paginator.html:6 +msgid "позиций" +msgstr "" + +#: functions/search_forms.py:242 +msgid "ПОИСК СОБЫТИЙ" +msgstr "" + +#: import_xls/admin.py:51 +msgid "No objects found" +msgstr "" + +#: import_xls/export_forms.py:37 import_xls/export_forms.py:174 +#: import_xls/import_forms.py:38 +msgid "Выберите язык" +msgstr "" + +#: import_xls/export_forms.py:170 import_xls/import_forms.py:371 +msgid "Выберите тип события" +msgstr "" + +#: import_xls/export_forms.py:172 import_xls/import_forms.py:373 +#: theme/models.py:39 +msgid "Семинар" +msgstr "" + +#: import_xls/export_forms.py:173 import_xls/import_forms.py:374 +#: theme/models.py:40 +msgid "Вебинар" +msgstr "" + +#: import_xls/export_forms.py:175 +msgid "С" +msgstr "" + +#: import_xls/export_forms.py:176 +msgid "До" +msgstr "" + +#: import_xls/export_forms.py:177 +msgid "Направление" +msgstr "" + +#: import_xls/import_forms.py:344 +msgid "Место с таким названием или урлом уже существует" +msgstr "" + +#: import_xls/import_forms.py:481 +msgid "Событие с таким названием или урлом уже существует" +msgstr "" + +#: import_xls/utils.py:95 +#, fuzzy +msgid "Неправильное значение" +msgstr "Не правильный пароль" + +#: import_xls/utils.py:99 +msgid "Нет совпадений" +msgstr "" + +#: import_xls/utils.py:180 +msgid "Некоректное название файла" +msgstr "" + +#: import_xls/utils.py:198 import_xls/utils.py:206 +msgid "Превышено время ожидания" +msgstr "" + +#: import_xls/utils.py:213 +#, fuzzy +msgid "Неправильный формат логотипа" +msgstr "Не правильный пароль" + +#: import_xls/utils.py:219 +msgid "Неизвестная ошибка" +msgstr "" + +#: meta/forms.py:13 +msgid "Название страницы" +msgstr "" + +#: meta/forms.py:27 +msgid "Title" +msgstr "" + +#: meta/forms.py:29 service/forms.py:57 theme/forms.py:39 theme/forms.py:106 +msgid "Description" +msgstr "" + +#: meta/forms.py:31 service/forms.py:59 theme/forms.py:41 theme/forms.py:108 +msgid "Keywords" +msgstr "" + +#: meta/forms.py:33 +msgid "H1" +msgstr "" + +#: meta/models.py:16 meta/models.py:68 +msgid "январе" +msgstr "" + +#: meta/models.py:16 meta/models.py:68 +msgid "феврале" +msgstr "" + +#: meta/models.py:16 meta/models.py:68 +msgid "марте" +msgstr "" + +#: meta/models.py:16 meta/models.py:68 +msgid "апреле" +msgstr "" + +#: meta/models.py:17 meta/models.py:69 +msgid "мае" +msgstr "" + +#: meta/models.py:17 meta/models.py:69 +msgid "июне" +msgstr "" + +#: meta/models.py:17 meta/models.py:69 +msgid "июле" +msgstr "" + +#: meta/models.py:17 meta/models.py:69 +msgid "августе" +msgstr "" + +#: meta/models.py:18 meta/models.py:70 +msgid "сентябре" +msgstr "" + +#: meta/models.py:18 meta/models.py:70 +msgid "октябре" +msgstr "" + +#: meta/models.py:18 meta/models.py:70 +msgid "ноябре" +msgstr "" + +#: meta/models.py:18 meta/models.py:70 +msgid "декабре" +msgstr "" + +#: meta/models.py:157 +msgid "URL: www.expomap.ru" +msgstr "" + +#: meta/models.py:161 +msgid "Тайтл страницы" +msgstr "" + +#: meta/models.py:162 +msgid "Дескрипшн" +msgstr "" + +#: news/forms.py:29 news/models.py:32 templates/admin/stats/event_stat.html:19 +#: templates/admin/stats/section_stat.html:14 +#: templates/client/expobanners/banner_stat.html:73 +#: templates/client/expobanners/paid_stat.html:73 +msgid "Дата" +msgstr "" + +#: news/forms.py:30 +msgid "Тип новости" +msgstr "" + +#: news/forms.py:31 +msgid "Платная" +msgstr "" + +#: news/forms.py:39 +msgid "Тип события" +msgstr "" + +#: news/forms.py:41 stats_collector/forms.py:63 +msgid "Событие" +msgstr "" + +#: news/forms.py:128 +msgid "Новость с таким названием уже существует" +msgstr "" + +#: news/models.py:34 stats_collector/forms.py:21 stats_collector/forms.py:69 +msgid "Тема" +msgstr "" + +#: organiser/event_forms.py:13 +msgid "Введите назввание выставки" +msgstr "" + +#: organiser/event_forms.py:15 wizard/forms.py:23 +msgid "Краткое описание выставки (необязательно)" +msgstr "" + +#: organiser/event_forms.py:16 place_conference/forms.py:88 +#: place_exposition/forms.py:88 +msgid "Полное описание" +msgstr "" + +#: organiser/event_forms.py:17 templates/client/organiser/add_event.html:85 +#: wizard/forms.py:24 +msgid "Полное описание выставки" +msgstr "" + +#: organiser/event_forms.py:18 templates/client/organiser/add_event.html:178 +msgid "c" +msgstr "" + +#: organiser/event_forms.py:19 +#: templates/client/includes/show_date_block.html:31 +#: templates/client/includes/index/main_date_block.html:31 +#: templates/client/organiser/add_event.html:99 +#: templates/client/popups/period.html:15 +#: templates/client/service/tour.html:73 +#: templates/client/service/translator.html:101 +#: templates/client/specialist_catalog/catalog_detailed.html:129 +#: templates/client/wizard/first_step.html:66 +msgid "по" +msgstr "" + +#: organiser/event_forms.py:22 templates/client/organiser/add_event.html:108 +#: templates/client/wizard/first_step.html:77 +msgid "Локация" +msgstr "" + +#: organiser/event_forms.py:25 templates/client/organiser/add_event.html:148 +msgid "Членства и знаки качества" +msgstr "" + +#: organiser/event_forms.py:26 place_conference/models.py:48 +msgid "Веб сайт" +msgstr "" + +#: organiser/forms.py:37 +msgid "Места проведения выставок" +msgstr "" + +#: organiser/forms.py:39 +msgid "Места проведения конференций" +msgstr "" + +#: organiser/forms.py:58 place_conference/forms.py:91 +#: place_exposition/forms.py:92 +msgid "Количество мероприятий в год" +msgstr "" + +#: organiser/forms.py:59 +msgid "Количество" +msgstr "" + +#: organiser/forms.py:79 organiser/models.py:68 +msgid "Представительства" +msgstr "" + +#: organiser/models.py:44 place_conference/forms.py:36 +#: place_conference/models.py:44 place_exposition/models.py:55 +msgid "Адресс" +msgstr "" + +#: organiser/models.py:57 +msgid "Количество мероприятий" +msgstr "" + +#: password_reset/forms.py:14 +msgid "Sorry, this user doesn't exist." +msgstr "" + +#: password_reset/forms.py:31 +msgid "Username" +msgstr "" + +#: password_reset/forms.py:33 +msgid "Для восстановления пароля укажите email, который Вы регистрировали" +msgstr "" + +#: password_reset/forms.py:83 +msgid "Unable to find user." +msgstr "" + +#: password_reset/forms.py:93 +msgid "New password (confirm)" +msgstr "" + +#: password_reset/forms.py:98 +msgid "The two passwords didn't match." +msgstr "" + +#: password_reset/templates/password_reset/recovery_done.html:3 +#: templates/client/password_reset/recovery_done.html:5 +msgid "New password set" +msgstr "" + +#: password_reset/templates/password_reset/recovery_done.html:6 +#: templates/client/password_reset/recovery_done.html:19 +msgid "" +"Your password has successfully been reset. You can use it right now on the " +"login page." +msgstr "" + +#: password_reset/templates/password_reset/recovery_email.txt:1 +#, python-format +msgid "Dear %(username)s," +msgstr "" + +#: password_reset/templates/password_reset/recovery_email.txt:3 +#, python-format +msgid "" +"You -- or someone pretending to be you -- has requested a password reset on " +"%(domain)s." +msgstr "" + +#: password_reset/templates/password_reset/recovery_email.txt:5 +msgid "You can set your new password by following this link:" +msgstr "" + +#: password_reset/templates/password_reset/recovery_email.txt:9 +msgid "" +"If you don't want to reset your password, simply ignore this email and it " +"will stay unchanged." +msgstr "" + +#: password_reset/templates/password_reset/recovery_email_expo.html:44 +msgid "Воостановление пароля на портале" +msgstr "" + +#: password_reset/templates/password_reset/recovery_email_expo.html:53 +#: templates/client/newsletters/activation_template.html:52 +#: templates/registration/activation_email.html:52 +msgid "Добрый день" +msgstr "" + +#: password_reset/templates/password_reset/recovery_email_expo.html:58 +msgid "Вы или кто-то еще сделал запрос на сброс пароля на сайте" +msgstr "" + +#: password_reset/templates/password_reset/recovery_email_expo.html:63 +msgid "" +"Вы можете восстановить доступ, нажав на кнопку ниже и указав новый пароль:" +msgstr "" + +#: password_reset/templates/password_reset/recovery_email_expo.html:68 +#, fuzzy +msgid "востановить пароль" +msgstr "Не правильный пароль" + +#: password_reset/templates/password_reset/recovery_email_expo.html:73 +msgid "" +"Если вы не хотите сбрасывать пароль, просто проигнорируйте это сообщение" +msgstr "" + +#: password_reset/templates/password_reset/recovery_email_subject.txt:1 +#, python-format +msgid "Password recovery on %(domain)s" +msgstr "" + +#: password_reset/templates/password_reset/recovery_form.html:5 +#: templates/client/password_reset/base.html:5 +#: templates/client/password_reset/base.html:11 +#: templates/client/password_reset/recovery_done.html:11 +#: templates/client/password_reset/reset.html:5 +#: templates/client/password_reset/reset.html:11 +#: templates/client/password_reset/reset_sent.html:8 +msgid "Password recovery" +msgstr "" + +#: password_reset/templates/password_reset/recovery_form.html:10 +msgid "Recover my password" +msgstr "" + +#: password_reset/templates/password_reset/reset.html:5 +#: templates/client/password_reset/reset.html:19 +#, python-format +msgid "" +"Sorry, this password reset link is invalid. You can still request a new one." +msgstr "" + +#: password_reset/templates/password_reset/reset.html:7 +#: templates/client/password_reset/reset.html:21 +#, python-format +msgid "Hi, %(username)s. Please choose your new password." +msgstr "" + +#: password_reset/templates/password_reset/reset.html:11 +#: templates/client/password_reset/reset.html:43 +msgid "Set new password" +msgstr "" + +#: password_reset/templates/password_reset/reset_sent.html:4 +msgid "Password recovery sent" +msgstr "" + +#: password_reset/templates/password_reset/reset_sent.html:7 +#: templates/client/password_reset/reset_sent.html:15 +#, python-format +msgid "" +"An email was sent to %(email)s %(ago)s ago. Use the link in " +"it to set a new password." +msgstr "" + +#: photologue/forms.py:38 +msgid "Изображение" +msgstr "" + +#: photologue/models.py:60 +msgid "Separate tags with spaces, put quotes around multiple-word tags." +msgstr "" + +#: photologue/models.py:71 +msgid "Django-tagging was not found, tags will be treated as plain text." +msgstr "" + +#: photologue/models.py:122 +msgid "Very Low" +msgstr "" + +#: photologue/models.py:123 +msgid "Low" +msgstr "" + +#: photologue/models.py:124 +msgid "Medium-Low" +msgstr "" + +#: photologue/models.py:125 +msgid "Medium" +msgstr "" + +#: photologue/models.py:126 +msgid "Medium-High" +msgstr "" + +#: photologue/models.py:127 +msgid "High" +msgstr "" + +#: photologue/models.py:128 +msgid "Very High" +msgstr "" + +#: photologue/models.py:133 +msgid "Top" +msgstr "" + +#: photologue/models.py:134 +msgid "Right" +msgstr "" + +#: photologue/models.py:135 +msgid "Bottom" +msgstr "" + +#: photologue/models.py:136 +msgid "Left" +msgstr "" + +#: photologue/models.py:137 +msgid "Center (Default)" +msgstr "" + +#: photologue/models.py:141 +msgid "Flip left to right" +msgstr "" + +#: photologue/models.py:142 +msgid "Flip top to bottom" +msgstr "" + +#: photologue/models.py:143 +msgid "Rotate 90 degrees counter-clockwise" +msgstr "" + +#: photologue/models.py:144 +msgid "Rotate 90 degrees clockwise" +msgstr "" + +#: photologue/models.py:145 +msgid "Rotate 180 degrees" +msgstr "" + +#: photologue/models.py:149 +msgid "Tile" +msgstr "" + +#: photologue/models.py:150 +msgid "Scale" +msgstr "" + +#: photologue/models.py:161 +#, python-format +msgid "" +"Chain multiple filters using the following pattern \"FILTER_ONE->FILTER_TWO-" +">FILTER_THREE\". Image filters will be applied in order. The following " +"filters are available: %s." +msgstr "" + +#: photologue/models.py:178 +msgid "date published" +msgstr "" + +#: photologue/models.py:181 +msgid "title slug" +msgstr "" + +#: photologue/models.py:183 photologue/models.py:702 +msgid "A \"slug\" is a unique URL-friendly title for an object." +msgstr "" + +#: photologue/models.py:186 photologue/models.py:320 photologue/models.py:707 +msgid "is public" +msgstr "" + +#: photologue/models.py:188 +msgid "Public galleries will be displayed in the default views." +msgstr "" + +#: photologue/models.py:192 photologue/models.py:721 +msgid "photos" +msgstr "" + +#: photologue/models.py:198 photologue/models.py:327 photologue/models.py:710 +msgid "tags" +msgstr "" + +#: photologue/models.py:199 photologue/models.py:711 +msgid "sites" +msgstr "" + +#: photologue/models.py:207 photologue/models.py:309 +msgid "gallery" +msgstr "" + +#: photologue/models.py:208 +msgid "galleries" +msgstr "" + +#: photologue/models.py:277 +msgid "count" +msgstr "" + +#: photologue/models.py:299 +msgid "images file (.zip)" +msgstr "" + +#: photologue/models.py:301 +msgid "Select a .zip file of images to upload into a new Gallery." +msgstr "" + +#: photologue/models.py:306 +msgid "" +"All uploaded photos will be given a title made up of this title + a " +"sequential number." +msgstr "" + +#: photologue/models.py:312 +msgid "" +"Select a gallery to add these images to. Leave this empty to create a new " +"gallery from the supplied title." +msgstr "" + +#: photologue/models.py:314 photologue/models.py:697 +msgid "caption" +msgstr "" + +#: photologue/models.py:316 +msgid "Caption will be added to all photos." +msgstr "" + +#: photologue/models.py:319 +msgid "A description of this Gallery." +msgstr "" + +#: photologue/models.py:322 +msgid "" +"Uncheck this to make the uploaded gallery and included photographs private." +msgstr "" + +#: photologue/models.py:330 +msgid "gallery upload" +msgstr "" + +#: photologue/models.py:331 +msgid "gallery uploads" +msgstr "" + +#: photologue/models.py:343 +msgid "A gallery with that title already exists." +msgstr "" + +#: photologue/models.py:347 +msgid "Select an existing gallery or enter a new gallery name." +msgstr "" + +#: photologue/models.py:383 +#, python-brace-format +msgid "" +"Ignoring file \"{filename}\" as it is in a subfolder; all images should be " +"in the top folder of the zip." +msgstr "" + +#: photologue/models.py:403 +#, python-format, python-brace-format +msgid "" +"Did not create photo \"%(filename)s\" with slug \"{1}\" as a photo with that " +"slug already exists." +msgstr "" + +#: photologue/models.py:429 +#, python-brace-format +msgid "Could not process file \"{0}\" in the .zip archive." +msgstr "" + +#: photologue/models.py:446 photologue/models.py:946 +msgid "image" +msgstr "" + +#: photologue/models.py:449 +msgid "date taken" +msgstr "" + +#: photologue/models.py:456 +msgid "crop from" +msgstr "" + +#: photologue/models.py:465 +msgid "effect" +msgstr "" + +#: photologue/models.py:489 +msgid "An \"admin_thumbnail\" photo size has not been defined." +msgstr "" + +#: photologue/models.py:497 +msgid "Thumbnail" +msgstr "" + +#: photologue/models.py:700 +msgid "slug" +msgstr "" + +#: photologue/models.py:705 +msgid "date added" +msgstr "" + +#: photologue/models.py:709 +msgid "Public photographs will be displayed in the default views." +msgstr "" + +#: photologue/models.py:720 +msgid "photo" +msgstr "" + +#: photologue/models.py:884 +msgid "rotate or flip" +msgstr "" + +#: photologue/models.py:888 photologue/models.py:910 +msgid "color" +msgstr "" + +#: photologue/models.py:890 +msgid "" +"A factor of 0.0 gives a black and white image, a factor of 1.0 gives the " +"original image." +msgstr "" + +#: photologue/models.py:891 +msgid "brightness" +msgstr "" + +#: photologue/models.py:893 +msgid "" +"A factor of 0.0 gives a black image, a factor of 1.0 gives the original " +"image." +msgstr "" + +#: photologue/models.py:894 +msgid "contrast" +msgstr "" + +#: photologue/models.py:896 +msgid "" +"A factor of 0.0 gives a solid grey image, a factor of 1.0 gives the original " +"image." +msgstr "" + +#: photologue/models.py:897 +msgid "sharpness" +msgstr "" + +#: photologue/models.py:899 +msgid "" +"A factor of 0.0 gives a blurred image, a factor of 1.0 gives the original " +"image." +msgstr "" + +#: photologue/models.py:900 +msgid "filters" +msgstr "" + +#: photologue/models.py:904 +msgid "size" +msgstr "" + +#: photologue/models.py:906 +msgid "" +"The height of the reflection as a percentage of the orignal image. A factor " +"of 0.0 adds no reflection, a factor of 1.0 adds a reflection equal to the " +"height of the orignal image." +msgstr "" + +#: photologue/models.py:907 +msgid "strength" +msgstr "" + +#: photologue/models.py:909 +msgid "The initial opacity of the reflection gradient." +msgstr "" + +#: photologue/models.py:913 +msgid "" +"The background color of the reflection gradient. Set this to match the " +"background color of your page." +msgstr "" + +#: photologue/models.py:916 photologue/models.py:1013 +msgid "photo effect" +msgstr "" + +#: photologue/models.py:917 +msgid "photo effects" +msgstr "" + +#: photologue/models.py:948 +msgid "style" +msgstr "" + +#: photologue/models.py:952 +msgid "opacity" +msgstr "" + +#: photologue/models.py:954 +msgid "The opacity of the overlay." +msgstr "" + +#: photologue/models.py:957 +msgid "watermark" +msgstr "" + +#: photologue/models.py:958 +msgid "watermarks" +msgstr "" + +#: photologue/models.py:982 +msgid "" +"Photo size name should contain only letters, numbers and underscores. " +"Examples: \"thumbnail\", \"display\", \"small\", \"main_page_widget\"." +msgstr "" + +#: photologue/models.py:987 +msgid "width" +msgstr "" + +#: photologue/models.py:989 +msgid "" +"If width is set to \"0\" the image will be scaled to the supplied height." +msgstr "" + +#: photologue/models.py:990 +msgid "height" +msgstr "" + +#: photologue/models.py:992 +msgid "" +"If height is set to \"0\" the image will be scaled to the supplied width" +msgstr "" + +#: photologue/models.py:993 +msgid "quality" +msgstr "" + +#: photologue/models.py:996 +msgid "JPEG image quality." +msgstr "" + +#: photologue/models.py:997 +msgid "upscale images?" +msgstr "" + +#: photologue/models.py:999 +msgid "" +"If selected the image will be scaled up if necessary to fit the supplied " +"dimensions. Cropped sizes will be upscaled regardless of this setting." +msgstr "" + +#: photologue/models.py:1000 +msgid "crop to fit?" +msgstr "" + +#: photologue/models.py:1002 +msgid "" +"If selected the image will be scaled and cropped to fit the supplied " +"dimensions." +msgstr "" + +#: photologue/models.py:1003 +msgid "pre-cache?" +msgstr "" + +#: photologue/models.py:1005 +msgid "If selected this photo size will be pre-cached as photos are added." +msgstr "" + +#: photologue/models.py:1006 +msgid "increment view count?" +msgstr "" + +#: photologue/models.py:1008 +msgid "" +"If selected the image's \"view_count\" will be incremented when this photo " +"size is displayed." +msgstr "" + +#: photologue/models.py:1018 +msgid "watermark image" +msgstr "" + +#: photologue/models.py:1022 +msgid "photo size" +msgstr "" + +#: photologue/models.py:1023 +msgid "photo sizes" +msgstr "" + +#: photologue/models.py:1040 +msgid "Can only crop photos if both width and height dimensions are set." +msgstr "" + +#: photologue/templates/photologue/gallery_archive.html:4 +#: photologue/templates/photologue/gallery_archive.html:9 +msgid "Latest Photo Galleries" +msgstr "" + +#: photologue/templates/photologue/gallery_archive.html:14 +#: photologue/templates/photologue/photo_archive.html:16 +msgid "Filter by year" +msgstr "" + +#: photologue/templates/photologue/gallery_archive.html:30 +#: photologue/templates/photologue/gallery_list.html:30 +msgid "No galleries were found" +msgstr "" + +#: photologue/templates/photologue/gallery_archive_day.html:4 +#: photologue/templates/photologue/gallery_archive_day.html:8 +#, python-format +msgid "Galleries for %(show_day)s" +msgstr "" + +#: photologue/templates/photologue/gallery_archive_day.html:15 +#: photologue/templates/photologue/gallery_archive_month.html:30 +#: photologue/templates/photologue/gallery_archive_year.html:30 +msgid "No galleries were found." +msgstr "" + +#: photologue/templates/photologue/gallery_archive_day.html:19 +msgid "View all galleries for month" +msgstr "" + +#: photologue/templates/photologue/gallery_archive_month.html:4 +#: photologue/templates/photologue/gallery_archive_month.html:9 +#, python-format +msgid "Galleries for %(show_month)s" +msgstr "" + +#: photologue/templates/photologue/gallery_archive_month.html:14 +#: photologue/templates/photologue/photo_archive_month.html:14 +msgid "Filter by day" +msgstr "" + +#: photologue/templates/photologue/gallery_archive_month.html:34 +msgid "View all galleries for year" +msgstr "" + +#: photologue/templates/photologue/gallery_archive_year.html:4 +#: photologue/templates/photologue/gallery_archive_year.html:9 +#, python-format +msgid "Galleries for %(show_year)s" +msgstr "" + +#: photologue/templates/photologue/gallery_archive_year.html:14 +#: photologue/templates/photologue/photo_archive_year.html:15 +msgid "Filter by month" +msgstr "" + +#: photologue/templates/photologue/gallery_archive_year.html:34 +#: photologue/templates/photologue/gallery_detail.html:20 +msgid "View all galleries" +msgstr "" + +#: photologue/templates/photologue/gallery_detail.html:11 +#: photologue/templates/photologue/gallery_list.html:19 +#: photologue/templates/photologue/photo_detail.html:13 +#: photologue/templates/photologue/includes/gallery_sample.html:8 +msgid "Published" +msgstr "" + +#: photologue/templates/photologue/gallery_list.html:4 +#: photologue/templates/photologue/gallery_list.html:10 +msgid "All Galleries" +msgstr "" + +#: photologue/templates/photologue/photo_archive.html:4 +#: photologue/templates/photologue/photo_archive.html:10 +msgid "Latest Photos" +msgstr "" + +#: photologue/templates/photologue/photo_archive.html:36 +#: photologue/templates/photologue/photo_archive_day.html:19 +#: photologue/templates/photologue/photo_archive_month.html:34 +#: photologue/templates/photologue/photo_archive_year.html:35 +#: photologue/templates/photologue/photo_list.html:23 +msgid "No photos were found" +msgstr "" + +#: photologue/templates/photologue/photo_archive_day.html:4 +#: photologue/templates/photologue/photo_archive_day.html:8 +#, python-format +msgid "Photos for %(show_day)s" +msgstr "" + +#: photologue/templates/photologue/photo_archive_day.html:23 +msgid "View all photos for month" +msgstr "" + +#: photologue/templates/photologue/photo_archive_month.html:4 +#: photologue/templates/photologue/photo_archive_month.html:9 +#, python-format +msgid "Photos for %(show_month)s" +msgstr "" + +#: photologue/templates/photologue/photo_archive_month.html:38 +msgid "View all photos for year" +msgstr "" + +#: photologue/templates/photologue/photo_archive_year.html:4 +#: photologue/templates/photologue/photo_archive_year.html:10 +#, python-format +msgid "Photos for %(show_year)s" +msgstr "" + +#: photologue/templates/photologue/photo_archive_year.html:39 +msgid "View all photos" +msgstr "" + +#: photologue/templates/photologue/photo_detail.html:21 +msgid "This photo is found in the following galleries" +msgstr "" + +#: photologue/templates/photologue/photo_list.html:4 +#: photologue/templates/photologue/photo_list.html:10 +msgid "All Photos" +msgstr "" + +#: photologue/templates/photologue/includes/paginator.html:5 +#: photologue/templates/photologue/includes/paginator.html:7 +#: templates/client/search/search.html:30 +msgid "Previous" +msgstr "" + +#: photologue/templates/photologue/includes/paginator.html:10 +#, python-format +msgid "" +"\n" +"\t\t\t page %(page_number)s of %(total_pages)s\n" +"\t\t\t" +msgstr "" + +#: photologue/templates/photologue/includes/paginator.html:15 +#: photologue/templates/photologue/includes/paginator.html:17 +#: templates/client/search/search.html:32 +msgid "Next" +msgstr "" + +#: place_conference/forms.py:47 place_conference/forms.py:48 +#: place_conference/models.py:51 +msgid "Общая вместимость" +msgstr "" + +#: place_conference/forms.py:49 place_conference/forms.py:50 +#: place_conference/models.py:52 +msgid "Количество залов" +msgstr "" + +#: place_conference/forms.py:51 +msgid "Видео" +msgstr "" + +#: place_conference/forms.py:52 +#, fuzzy +msgid "Введите ссылку на видео" +msgstr "Введите вашу фамилию" + +#: place_conference/forms.py:54 +msgid "Название зала" +msgstr "" + +#: place_conference/forms.py:55 +msgid "Номер зала" +msgstr "" + +#: place_conference/forms.py:56 +msgid "Вместимость зала" +msgstr "" + +#: place_conference/forms.py:58 place_conference/models.py:53 +#: templates/client/includes/place/place_services.html:52 +msgid "Выставочный зал" +msgstr "" + +#: place_conference/forms.py:59 place_conference/forms.py:60 +#: place_conference/models.py:54 +msgid "Площадь выст. зала" +msgstr "" + +#: place_conference/forms.py:63 +#: templates/client/includes/place/place_services.html:58 +msgid "Мультимедийное оборудование" +msgstr "" + +#: place_conference/forms.py:64 +#: templates/client/includes/place/place_services.html:61 +msgid "Конференц-связь" +msgstr "" + +#: place_conference/forms.py:65 +#: templates/client/includes/place/place_services.html:66 +msgid "Оборудование для синхронного перевода" +msgstr "" + +#: place_conference/forms.py:66 +#: templates/client/includes/place/place_services.html:69 +msgid "Банкетный зал" +msgstr "" + +#: place_conference/forms.py:67 +#: templates/client/includes/place/place_services.html:72 +msgid "Кейтеринг" +msgstr "" + +#: place_conference/forms.py:68 +#: templates/client/includes/place/place_services.html:75 +msgid "Гостиница" +msgstr "" + +#: place_conference/forms.py:89 place_exposition/forms.py:89 +msgid "Дополнительная инф по адресу" +msgstr "" + +#: place_conference/forms.py:99 +msgid "Шаблон вместимости" +msgstr "" + +#: place_conference/models.py:32 place_exposition/models.py:43 +msgid "Места:" +msgstr "" + +#: place_conference/models.py:56 +msgid "Виртуальный тур" +msgstr "" + +#: place_conference/models.py:98 place_exposition/forms.py:65 +#: templates/client/includes/place/place_services.html:23 +msgid "Конгресс-центр" +msgstr "" + +#: place_conference/models.py:98 +msgid "Конференц зал" +msgstr "" + +#: place_exposition/forms.py:51 +msgid "Общая выст. площадь" +msgstr "" + +#: place_exposition/forms.py:52 +msgid "Закрытая выставочная площадь" +msgstr "" + +#: place_exposition/forms.py:53 +msgid "Закр. выст. площадь" +msgstr "" + +#: place_exposition/forms.py:54 +msgid "Открытая выставочная площадь" +msgstr "" + +#: place_exposition/forms.py:55 +msgid "Откр. выст. площадь" +msgstr "" + +#: place_exposition/forms.py:56 place_exposition/forms.py:57 +msgid "Количество павильонов" +msgstr "" + +#: place_exposition/forms.py:58 +msgid "Количество конференц залов" +msgstr "" + +#: place_exposition/forms.py:59 +msgid "Конференц залы" +msgstr "" + +#: place_exposition/forms.py:62 +msgid "Банк/Банкоматы" +msgstr "" + +#: place_exposition/forms.py:63 +#: templates/client/includes/place/place_services.html:15 +msgid "Детская комната" +msgstr "" + +#: place_exposition/forms.py:64 +#: templates/client/includes/place/place_services.html:18 +msgid "Сервис для инвалидов" +msgstr "" + +#: place_exposition/forms.py:66 +#: templates/client/includes/place/place_services.html:26 +msgid "Бизнес-центр" +msgstr "" + +#: place_exposition/forms.py:67 +msgid "Онлайн регистрация" +msgstr "" + +#: place_exposition/forms.py:68 +msgid "Кафе" +msgstr "" + +#: place_exposition/forms.py:69 +#: templates/client/includes/place/place_services.html:37 +msgid "Информационные терминалы" +msgstr "" + +#: place_exposition/forms.py:70 +#: templates/client/includes/place/place_services.html:40 +msgid "Парковка" +msgstr "" + +#: place_exposition/forms.py:71 +#: templates/client/includes/place/place_services.html:43 +msgid "Пресс-центр" +msgstr "" + +#: place_exposition/forms.py:72 +#: templates/client/includes/place/place_services.html:46 +msgid "Мобильное приложение" +msgstr "" + +#: place_exposition/forms.py:260 +msgid "Номер" +msgstr "" + +#: place_exposition/forms.py:262 +msgid "Вместимость" +msgstr "" + +#: place_exposition/forms.py:280 +msgid "Вместимость должна состоять из цифр" +msgstr "" + +#: place_exposition/models.py:24 place_exposition/models.py:209 +msgid "Выставочный комплекс" +msgstr "" + +#: place_exposition/models.py:24 place_exposition/models.py:208 +msgid "Конгрессно-выставочный центр" +msgstr "" + +#: place_exposition/models.py:25 place_exposition/models.py:208 +msgid "Выставочный центр" +msgstr "" + +#: place_exposition/views.py:165 +msgid "Места по странам" +msgstr "" + +#: place_exposition/views.py:175 +msgid "Места по городам" +msgstr "" + +#: proj/settings.py:61 support/dev/settings.py:61 support/prod/settings.py:61 +msgid "Russian" +msgstr "" + +#: proj/settings.py:62 support/dev/settings.py:62 support/prod/settings.py:62 +msgid "English" +msgstr "" + +#: registration/admin.py:23 +msgid "Activate users" +msgstr "" + +#: registration/admin.py:43 +msgid "Re-send activation emails" +msgstr "" + +#: registration/forms.py:45 registration/forms.py:50 +msgid "This value may contain only letters, numbers and @/./+/-/_ characters." +msgstr "" + +#: registration/forms.py:51 templates/client/popups/register.html:20 +msgid "Фамилия" +msgstr "" + +#: registration/forms.py:53 +msgid "E-mail" +msgstr "" + +#: registration/forms.py:53 templates/client/popups/register.html:28 +msgid "Адрес электронной почты" +msgstr "" + +#: registration/forms.py:54 templates/client/popups/register.html:34 +msgid "Придумайте пароль" +msgstr "" + +#: registration/forms.py:55 +msgid "Password" +msgstr "" + +#: registration/forms.py:57 +msgid "Password (again)" +msgstr "" + +#: registration/forms.py:83 +msgid "I have read and agree to the Terms of Service" +msgstr "" + +#: registration/forms.py:84 +msgid "You must agree to the terms to register" +msgstr "" + +#: registration/forms.py:100 +msgid "" +"This email address is already in use. Please supply a different email " +"address." +msgstr "" + +#: registration/forms.py:127 +msgid "" +"Registration using free email addresses is prohibited. Please supply a " +"different email address." +msgstr "" + +#: registration/models.py:184 +msgid "user" +msgstr "" + +#: registration/models.py:185 +msgid "activation key" +msgstr "" + +#: registration/models.py:190 +msgid "registration profile" +msgstr "" + +#: registration/models.py:191 +msgid "registration profiles" +msgstr "" + +#: registration/backends/default/views.py:198 +msgid "Пользователя с таким email не существует" +msgstr "" + +#: registration/backends/default/views.py:201 +msgid "Пользователя с таким email уже активирован" +msgstr "" + +#: review/models.py:27 +msgid "Отзыв" +msgstr "" + +#: review/models.py:28 +msgid "Оценка" +msgstr "" + +#: seminar/forms.py:37 webinar/forms.py:35 +msgid "Дата и время начала" +msgstr "" + +#: seminar/forms.py:38 +msgid "Дата и время оконочания" +msgstr "" + +#: seminar/forms.py:87 webinar/forms.py:80 +msgid "Условия и скидки" +msgstr "" + +#: seminar/forms.py:172 +msgid "Семинар с таким названием уже существует" +msgstr "" + +#: seminar/models.py:86 webinar/models.py:81 +msgid "Условия и Скидки" +msgstr "" + +#: service/forms.py:30 specialist_catalog/models.py:32 +msgid "Цена" +msgstr "" + +#: service/forms.py:50 +msgid "Названия" +msgstr "" + +#: service/forms.py:53 specialist_catalog/models.py:46 +msgid "Преимущества" +msgstr "" + +#: service/forms.py:147 +msgid "При отсутствии стран этот флаг значит ВСЕ страны!" +msgstr "" + +#: service/models.py:134 +#: templates/client/includes/exposition/expo_paid.html:261 +#: templates/client/includes/exposition/exposition_object.html:259 +msgid "Рекламировать участника" +msgstr "" + +#: service/models.py:135 templates/client/simple_pages/advertising.html:112 +#: templates/client/simple_pages/advertising.html:122 +msgid "Баннерная реклама" +msgstr "" + +#: service/models.py:136 templates/client/simple_pages/advertising.html:135 +#: templates/client/simple_pages/advertising.html:144 +msgid "Приоритетное размещение событий в каталоге" +msgstr "" + +#: service/models.py:137 templates/client/simple_pages/advertising.html:156 +#: templates/client/simple_pages/advertising.html:164 +msgid "Персональная визитка Вашей компании" +msgstr "" + +#: service/models.py:155 +msgid "Исключить страны" +msgstr "" + +#: service/order_forms.py:13 +msgid "Интересующее событие" +msgstr "" + +#: service/order_forms.py:14 +msgid "Контактное лицо" +msgstr "" + +#: service/order_forms.py:17 +msgid "Контактный номер телефона" +msgstr "" + +#: service/order_forms.py:19 +msgid "Электронная почта" +msgstr "" + +#: service/order_forms.py:104 +msgid "официальный каталог" +msgstr "" + +#: service/order_forms.py:105 +msgid "фотоотчет" +msgstr "" + +#: service/order_forms.py:106 +msgid "видеоотчет" +msgstr "" + +#: service/order_forms.py:121 +msgid "оборудованная" +msgstr "" + +#: service/order_forms.py:122 +msgid "не оборудованная" +msgstr "" + +#: service/order_forms.py:127 +msgid "Краткое описание, вид деятельности компании" +msgstr "" + +#: service/order_forms.py:131 +msgid "Русский" +msgstr "" + +#: service/order_forms.py:135 service/order_forms.py:170 +msgid "Знание языков" +msgstr "" + +#: service/order_forms.py:146 service/order_forms.py:152 +msgid "Выберите" +msgstr "" + +#: service/order_forms.py:146 +msgid "Одноместное" +msgstr "" + +#: service/order_forms.py:147 +msgid "Двухместное" +msgstr "" + +#: service/order_forms.py:147 +msgid "Трехместное" +msgstr "" + +#: service/order_forms.py:149 +msgid "Прямой" +msgstr "" + +#: service/order_forms.py:149 +msgid "С пересадкой" +msgstr "" + +#: service/order_forms.py:150 +msgid "Бизнес-класс" +msgstr "" + +#: service/order_forms.py:150 +msgid "Эконом-класс" +msgstr "" + +#: service/order_forms.py:152 +msgid "Любое" +msgstr "" + +#: service/order_forms.py:153 +msgid "Рядом с выставкой" +msgstr "" + +#: service/order_forms.py:154 +msgid "В центре" +msgstr "" + +#: service/order_forms.py:156 +msgid "В сутки" +msgstr "" + +#: service/order_forms.py:156 +msgid "За весь период" +msgstr "" + +#: settings/forms.py:25 +#, fuzzy +msgid "Редактировать комментарий" +msgstr "Укажите вашу компанию" + +#: settings/forms.py:25 +msgid "Создать комментарий" +msgstr "" + +#: settings/forms.py:51 templates/client/article/catalog.html:11 +#: templates/client/article/catalog.html:39 +#: templates/client/article/event_news_list.html:10 +#: templates/client/article/news.html:8 +#: templates/client/article/news_list.html:8 +#: templates/client/article/news_list.html:13 +msgid "Новости" +msgstr "" + +#: settings/models.py:21 settings/models.py:67 +msgid "Комментарий" +msgstr "" + +#: settings/models.py:22 settings/models.py:68 +msgid "Имя Фамилия" +msgstr "" + +#: specialist_catalog/models.py:18 +msgid "Полное имя" +msgstr "" + +#: specialist_catalog/models.py:35 +msgid "Фото для города" +msgstr "" + +#: specialist_catalog/models.py:39 +msgid "Тип(Страна/Город)" +msgstr "" + +#: specialist_catalog/models.py:47 templates/client/country/country.html:90 +msgid "Крупные города" +msgstr "" + +#: specialist_catalog/models.py:104 +msgid "Текст отзыва" +msgstr "" + +#: specialist_catalog/models.py:105 +#, fuzzy +msgid "Логотип компании" +msgstr "Описание компании" + +#: specialist_catalog/models.py:106 +#, fuzzy +msgid "Страница" +msgstr "Страна" + +#: specialist_catalog/views.py:219 +#: templates/client/specialist_catalog/catalog_detailed.html:12 +msgid "Переводчики по странам" +msgstr "" + +#: specialist_catalog/views.py:221 +#: templates/client/specialist_catalog/catalog_detailed.html:14 +msgid "Переводчики по городам" +msgstr "" + +#: stats_collector/forms.py:10 +msgid "Все" +msgstr "" + +#: stats_collector/forms.py:20 stats_collector/forms.py:70 +msgid "Тег" +msgstr "" + +#: stats_collector/forms.py:36 +msgid "Раздел" +msgstr "" + +#: stats_collector/forms.py:41 +msgid "Тип объекта" +msgstr "" + +#: stats_collector/forms.py:42 templates/admin/expobanner/link_list.html:16 +msgid "Объект" +msgstr "" + +#: templates/admin/article/article_admin_list.html:7 +msgid "Список статей" +msgstr "" + +#: templates/admin/article/article_admin_list.html:12 +#: templates/admin/specialist/catalog_all.html:15 +msgid "Найти" +msgstr "" + +#: templates/admin/article/article_admin_list.html:35 +#: templates/admin/article/blog_form.html:38 +#: templates/admin/expobanner/comment_list.html:26 +#: templates/admin/expobanner/link_list.html:27 +#: templates/admin/expobanner/pcomment_list.html:26 +#: templates/admin/specialist/catalog_all.html:55 +#: templates/client/accounts/feed.html:27 +#: templates/client/accounts/feed.html:39 +msgid "Изменить" +msgstr "" + +#: templates/admin/article/article_admin_list.html:41 +msgid "Копировать" +msgstr "" + +#: templates/admin/article/article_admin_list.html:47 +#: templates/admin/expobanner/comment_list.html:27 +#: templates/admin/expobanner/pcomment_list.html:27 +#: templates/admin/specialist/catalog_all.html:61 +msgid "Удалить" +msgstr "" + +#: templates/admin/article/article_admin_list.html:55 +#: templates/admin/article/blog_form.html:38 +#: templates/admin/specialist/catalog_all.html:69 +#: templates/client/includes/accounts/current_user.html:189 +#: templates/client/includes/accounts/current_user.html:274 +#: templates/client/includes/accounts/current_user.html:337 +#: templates/client/includes/accounts/current_user.html:377 +#: templates/client/includes/company/company_edit.html:132 +#: templates/client/includes/company/company_edit.html:181 +#: templates/client/includes/company/company_edit.html:251 +#: templates/client/includes/company/company_edit.html:338 +#: templates/client/includes/company/company_edit.html:367 +#: templates/client/includes/company/company_edit.html:398 +#: templates/client/includes/company/company_edit.html:434 +#: templates/client/includes/company/company_edit.html:466 +#: templates/client/includes/company/company_edit.html:499 +msgid "Добавить" +msgstr "" + +#: templates/admin/article/article_admin_list.html:56 +#: templates/admin/article/blog_form.html:38 +msgid "статью" +msgstr "" + +#: templates/admin/article/article_admin_list.html:56 +msgid "новость" +msgstr "" + +#: templates/admin/article/blog_form.html:38 +#: templates/admin/specialist/catalog_all.html:52 +msgid "на сайте" +msgstr "" + +#: templates/admin/article/blog_form.html:42 +msgid "Основная информация" +msgstr "" + +#: templates/admin/article/blog_form.html:128 +msgid "Файлы" +msgstr "" + +#: templates/admin/article/blog_form.html:133 +msgid "Добавить файл" +msgstr "" + +#: templates/admin/article/blog_form.html:135 +msgid "Файлы можно добавлять только после введения основных данных" +msgstr "" + +#: templates/admin/article/blog_form.html:143 +msgid "id" +msgstr "" + +#: templates/admin/article/blog_form.html:144 +msgid "Файл" +msgstr "" + +#: templates/admin/expobanner/banner_stat.html:21 +#: templates/admin/expobanner/main_stat.html:24 +#: templates/admin/expobanner/paid_stat.html:25 +msgid "с: " +msgstr "" + +#: templates/admin/expobanner/banner_stat.html:23 +#: templates/admin/expobanner/main_stat.html:26 +#: templates/admin/expobanner/paid_stat.html:27 +msgid "по: " +msgstr "" + +#: templates/admin/expobanner/banner_stat.html:25 +#: templates/admin/expobanner/main_stat.html:28 +#: templates/admin/expobanner/paid_stat.html:29 +msgid "Фильтровать" +msgstr "" + +#: templates/admin/expobanner/comment_list.html:7 +#: templates/admin/expobanner/pcomment_list.html:7 +msgid "Список комментариев" +msgstr "" + +#: templates/admin/expobanner/comment_list.html:11 +#: templates/admin/expobanner/pcomment_list.html:11 +msgid "Добавить комментарий" +msgstr "" + +#: templates/admin/expobanner/link_list.html:17 +msgid "ссылка для отслеживания" +msgstr "" + +#: templates/admin/expobanner/link_list.html:28 +#: templates/client/expobanners/banner_stat.html:34 +#: templates/client/expobanners/paid_stat.html:34 +#: templates/client/exposition/statistic.html:13 +#: templates/client/includes/exposition/expo_paid.html:187 +#: templates/client/includes/exposition/expo_paid.html:296 +#: templates/client/includes/exposition/exposition_object.html:168 +#: templates/client/includes/exposition/exposition_object.html:293 +#: templates/client/includes/exposition/statistic.html:76 +msgid "Статистика" +msgstr "" + +#: templates/admin/expobanner/link_list.html:38 +msgid "Назад к управлению баннерами" +msgstr "" + +#: templates/admin/hvad/change_form.html:38 +#: templates/admin/hvad/change_form.html:40 +#: templates/admin/hvad/deletion_not_allowed.html:10 +#: templates/admin/hvad/includes/translation_tabs.html:6 +#: templates/admin/hvad/includes/translation_tabs.html:8 +msgid "Delete Translation" +msgstr "" + +#: templates/admin/hvad/deletion_not_allowed.html:15 +#, python-format +msgid "" +"Deletion of the %(language_name)s translation of %(object_name)s " +"'%(escaped_object)s' is not allowed, because it is the last available " +"translation of this instance." +msgstr "" + +#: templates/admin/hvad/edit_inline/stacked.html:10 +#: templates/admin/hvad/edit_inline/tabular.html:30 +msgid "View on site" +msgstr "" + +#: templates/admin/hvad/edit_inline/stacked.html:68 +#: templates/admin/hvad/edit_inline/tabular.html:115 +#, python-format +msgid "Add another %(verbose_name)s" +msgstr "" + +#: templates/admin/hvad/edit_inline/stacked.html:71 +#: templates/admin/hvad/edit_inline/tabular.html:118 +msgid "Remove" +msgstr "" + +#: templates/admin/hvad/edit_inline/tabular.html:17 +msgid "Delete?" +msgstr "" + +#: templates/admin/includes/admin_nav.html:58 +#: templates/admin/stats/event_stat.html:26 +msgid "Статистика разделов" +msgstr "" + +#: templates/admin/includes/admin_nav.html:59 +msgid "Статистика событий" +msgstr "" + +#: templates/admin/specialist/catalog_all.html:14 +msgid "Только страны" +msgstr "" + +#: templates/admin/specialist/catalog_all.html:34 +msgid "Все каталоги специалистов" +msgstr "" + +#: templates/admin/specialist/catalog_all.html:42 +msgid "Страна/Город" +msgstr "" + +#: templates/admin/stats/event_stat.html:19 +#: templates/admin/stats/event_stat.html:29 +#: templates/admin/stats/event_stat.html:47 +#: templates/admin/stats/event_stat.html:55 +#: templates/admin/stats/section_stat.html:24 +#: templates/admin/stats/section_stat.html:38 +#: templates/admin/stats/section_stat.html:48 +msgid "Просмотры" +msgstr "" + +#: templates/admin/stats/event_stat.html:48 +#: templates/client/includes/footer.html:26 +#: templates/client/includes/menu.html:4 +msgid "События" +msgstr "" + +#: templates/admin/stats/event_stat.html:52 +#: templates/admin/stats/section_stat.html:45 +msgid "Сумарные данные" +msgstr "" + +#: templates/admin/stats/event_stat.html:142 +#: templates/admin/stats/section_stat.html:181 +#: templates/client/accounts/feed.html:51 +msgid "Применить" +msgstr "" + +#: templates/client/404.html:7 templates/client/404_test.html:7 +msgid "Запрашиваемая страница не найдена" +msgstr "" + +#: templates/client/404.html:11 +msgid "Возможно у нее изменился адрес или же она была удалена" +msgstr "" + +#: templates/client/404.html:11 +msgid "" +"Воспользуйтесь поиском по названию, расширенной формой поиска или каталогом " +"событий" +msgstr "" + +#: templates/client/404.html:15 templates/client/404_test.html:15 +msgid "Каталог выставок" +msgstr "" + +#: templates/client/404.html:24 templates/client/404_test.html:24 +msgid "Каталог конференций" +msgstr "" + +#: templates/client/404_test.html:11 +msgid "" +"Возможно у нее изменился адрес или же она была удалена.
Воспользуйтесь " +"поиском по названию, расширенной формой поиска или каталогом событий." +msgstr "" + +#: templates/client/blank.html:88 +#: templates/client/includes/index/main_events.html:37 +msgid "добавить в календарь" +msgstr "" + +#: templates/client/blank.html:89 +#: templates/client/includes/index/main_events.html:37 +msgid "Убрать из календаря" +msgstr "" + +#: templates/client/index.html:120 +msgid "Наши партнеры:" +msgstr "" + +#: templates/client/photoreport.html:6 +#: templates/client/accounts/calendar.html:8 +#: templates/client/accounts/feed.html:7 +#: templates/client/accounts/messages.html:8 +#: templates/client/accounts/messages_history.html:6 +#: templates/client/accounts/settings.html:8 +#: templates/client/accounts/user_events.html:8 +#: templates/client/accounts/translators/translator_city.html:11 +#: templates/client/accounts/translators/translator_country.html:7 +#: templates/client/accounts/translators/translator_profile.html:10 +#: templates/client/accounts/translators/translators_by.html:7 +#: templates/client/article/article.html:7 +#: templates/client/article/blog_list.html:8 +#: templates/client/article/catalog.html:9 +#: templates/client/article/event_news_list.html:9 +#: templates/client/article/news.html:7 +#: templates/client/article/news_list.html:7 templates/client/city/city.html:7 +#: templates/client/company/companies_list.html:6 +#: templates/client/company/company_detail.html:6 +#: templates/client/company/search.html:7 +#: templates/client/conference/catalog.html:7 +#: templates/client/conference/catalog_theme.html:7 +#: templates/client/conference/conference_by.html:13 +#: templates/client/conference/conference_detail.html:6 +#: templates/client/conference/conference_list.html:6 +#: templates/client/conference/members.html:6 +#: templates/client/conference/photo.html:6 +#: templates/client/conference/visitors.html:6 +#: templates/client/country/country.html:7 +#: templates/client/exposition/catalog.html:8 +#: templates/client/exposition/catalog_theme.html:15 +#: templates/client/exposition/exposition_by.html:13 +#: templates/client/exposition/exposition_detail.html:7 +#: templates/client/exposition/exposition_list.html:6 +#: templates/client/exposition/members.html:6 +#: templates/client/exposition/photo.html:6 +#: templates/client/exposition/price.html:6 +#: templates/client/exposition/programm.html:7 +#: templates/client/exposition/search.html:7 +#: templates/client/exposition/statistic.html:8 +#: templates/client/exposition/visitors.html:6 +#: templates/client/includes/bread_scrumbs.html:5 +#: templates/client/organiser/add_event.html:6 +#: templates/client/page/page_view.html:7 +#: templates/client/place/catalog.html:7 +#: templates/client/place/catalog_by.html:13 +#: templates/client/place/photo.html:6 +#: templates/client/place/place_detail.html:6 +#: templates/client/place/place_list.html:6 +#: templates/client/place/search.html:7 +#: templates/client/service/build_stand.html:8 +#: templates/client/service/build_stand.html:15 +#: templates/client/service/catalog.html:8 +#: templates/client/service/catalog.html:15 +#: templates/client/service/participation.html:9 +#: templates/client/service/participation.html:16 +#: templates/client/service/remotely.html:10 +#: templates/client/service/remotely.html:17 +#: templates/client/service/tickets.html:9 +#: templates/client/service/tickets.html:16 +#: templates/client/service/tour.html:9 templates/client/service/tour.html:16 +#: templates/client/service/translator.html:9 +#: templates/client/service/translator.html:16 +#: templates/client/simple_pages/about.html:13 +#: templates/client/simple_pages/advertising.html:9 +#: templates/client/specialist_catalog/catalog.html:8 +#: templates/client/specialist_catalog/catalog_detailed.html:9 +msgid "Главная страница" +msgstr "" + +#: templates/client/photoreport.html:97 +msgid "Выставочный стенд" +msgstr "" + +#: templates/client/photoreport.html:98 +msgid "" +"Создание единой платформы для общения, обучения, продвижения и заключения " +"бизнес соглашений между всеми участниками рынка интернет маркетинга." +msgstr "" + +#: templates/client/photoreport.html:101 +msgid "На фотографии отмечены:" +msgstr "" + +#: templates/client/photoreport.html:102 +msgid "Анна Петрова" +msgstr "" + +#: templates/client/photoreport.html:102 +msgid "Николай Довженко" +msgstr "" + +#: templates/client/photoreport.html:107 +msgid "Коментарии:" +msgstr "" + +#: templates/client/photoreport.html:112 +msgid "Анна Петрова:" +msgstr "" + +#: templates/client/photoreport.html:113 +msgid "Отлично ребята подготовились!" +msgstr "" + +#: templates/client/photoreport.html:117 +msgid "Алексей Звонцев:" +msgstr "" + +#: templates/client/photoreport.html:118 +msgid "Согласен!" +msgstr "" + +#: templates/client/photoreport.html:129 +msgid "Оставьте свой комментарий:" +msgstr "" + +#: templates/client/photoreport.html:133 +msgid "ок" +msgstr "" + +#: templates/client/photoreport.html:134 +#: templates/client/includes/photoreport/photoreport_object.html:109 +#: templates/client/photoreport/gallery.html:112 +msgid "отметить человека" +msgstr "" + +#: templates/client/accounts/calendar.html:9 +#: templates/client/accounts/messages.html:9 +#: templates/client/accounts/messages_history.html:7 +#: templates/client/accounts/settings.html:9 +msgid "Личный кабинет" +msgstr "" + +#: templates/client/accounts/calendar.html:10 +msgid "Календарь" +msgstr "" + +#: templates/client/accounts/calendar.html:16 +msgid "Личный календарь" +msgstr "" + +#: templates/client/accounts/calendar.html:39 +msgid "Все / выделенные:" +msgstr "" + +#: templates/client/accounts/calendar.html:41 +msgid "удалить из расписания" +msgstr "" + +#: templates/client/accounts/calendar.html:42 +msgid "выбраные в xls" +msgstr "" + +#: templates/client/accounts/calendar.html:43 +msgid "все предстоящие в xls" +msgstr "" + +#: templates/client/accounts/calendar.html:45 +msgid "ЭКСПОРТИРОВАТЬ В" +msgstr "" + +#: templates/client/accounts/calendar.html:47 +msgid "сохранить в pdf" +msgstr "" + +#: templates/client/accounts/calendar.html:48 +msgid "Распечатать" +msgstr "" + +#: templates/client/accounts/calendar.html:56 +msgid "Посмотреть прошедший календарь" +msgstr "" + +#: templates/client/accounts/calendar.html:62 +msgid "У вас нету событий в будущем!" +msgstr "" + +#: templates/client/accounts/calendar.html:86 +msgid "Не выбрано ни одного события!" +msgstr "" + +#: templates/client/accounts/feed.html:8 +#: templates/client/accounts/feed.html:13 +msgid "Моя лента событий" +msgstr "" + +#: templates/client/accounts/feed.html:24 +msgid "Фильтрация ленты" +msgstr "" + +#: templates/client/accounts/feed.html:27 +msgid "Тематические фильтры не выбраны" +msgstr "" + +#: templates/client/accounts/feed.html:39 +msgid "Географические фильтры не выбраны" +msgstr "" + +#: templates/client/accounts/feed.html:75 +msgid "" +" Вы можете настроить ленту событий, один раз выбрав интересные темы и " +"географию с помощью кнопки «Фильтрация ленты»." +msgstr "" + +#: templates/client/accounts/feed.html:85 +#: templates/client/exposition/search.html:28 +msgid "" +"Увы, событий, соответствующих выбранным фильтрам, нет в каталоге.
" +"Попробуйте укрупнить параметры поиска" +msgstr "" + +#: templates/client/accounts/feed.html:102 +#: templates/client/includes/catalog_search.html:107 +#: templates/client/includes/catalog_search_main.html:117 +msgid " и еще _ позиции" +msgstr "" + +#: templates/client/accounts/feed.html:103 +#: templates/client/includes/catalog_search.html:106 +#: templates/client/includes/catalog_search_main.html:116 +msgid " и еще _ позиция" +msgstr "" + +#: templates/client/accounts/messages.html:10 +#: templates/client/accounts/messages.html:16 +#: templates/client/accounts/messages_history.html:8 +#: templates/client/accounts/messages_history.html:14 +msgid "Сообщения" +msgstr "" + +#: templates/client/accounts/messages.html:42 +msgid "ответить" +msgstr "" + +#: templates/client/accounts/messages.html:44 +msgid "вся переписка" +msgstr "" + +#: templates/client/accounts/messages.html:55 +msgid "У вас нет новых сообщений" +msgstr "" + +#: templates/client/accounts/messages.html:64 +msgid "Ответить" +msgstr "" + +#: templates/client/accounts/messages.html:69 +#: templates/client/accounts/messages_history.html:43 +msgid "Сообщение" +msgstr "" + +#: templates/client/accounts/messages.html:77 +#: templates/client/accounts/messages_history.html:51 +#: templates/client/accounts/user.html:42 +msgid "отправить" +msgstr "" + +#: templates/client/accounts/messages_history.html:29 +msgid "Вы" +msgstr "" + +#: templates/client/accounts/messages_history.html:52 +msgid "Все сообщения" +msgstr "" + +#: templates/client/accounts/settings.html:10 +#: templates/client/accounts/settings.html:16 +msgid "Настройки" +msgstr "" + +#: templates/client/accounts/settings.html:24 +msgid "смена пароля" +msgstr "" + +#: templates/client/accounts/settings.html:46 +msgid "Пароль изменен!" +msgstr "" + +#: templates/client/accounts/settings.html:52 +#: templates/client/accounts/settings.html:187 +#: templates/client/newsletters/unsubscribe_form.html:87 +msgid "сохранить" +msgstr "" + +#: templates/client/accounts/settings.html:61 +msgid "социализация и sharing" +msgstr "" + +#: templates/client/accounts/settings.html:116 +#: templates/client/newsletters/unsubscribe_form.html:15 +msgid "настройка подписки" +msgstr "" + +#: templates/client/accounts/settings.html:121 +#: templates/client/newsletters/unsubscribe_form.html:20 +#: templates/client/popups/announces.html:7 +msgid "по e-mail" +msgstr "" + +#: templates/client/accounts/settings.html:175 +#: templates/client/newsletters/unsubscribe_form.html:75 +msgid "«Практикум экспонента»" +msgstr "" + +#: templates/client/accounts/settings.html:175 +#: templates/client/newsletters/unsubscribe_form.html:75 +msgid "" +"учимся эффективно участвовать в выставках и грамотно пиарить свою компанию " +"на событиях" +msgstr "" + +#: templates/client/accounts/settings.html:179 +#: templates/client/newsletters/unsubscribe_form.html:79 +msgid "«Практикум организатора событий»" +msgstr "" + +#: templates/client/accounts/settings.html:179 +#: templates/client/newsletters/unsubscribe_form.html:79 +msgid "Создаем, наполняем и продвигаем собственные ивэнты" +msgstr "" + +#: templates/client/accounts/user.html:30 +msgid "Отправить сообщение" +msgstr "" + +#: templates/client/accounts/user.html:35 +msgid "Текст сообщения" +msgstr "" + +#: templates/client/accounts/translators/translator_city.html:13 +#: templates/client/accounts/translators/translator_country.html:9 +#: templates/client/accounts/translators/translator_country.html:27 +#: templates/client/accounts/translators/translators_list.html:10 +#: templates/client/includes/services.html:6 +#: templates/client/includes/translators_aside.html:3 +msgid "Переводчики" +msgstr "" + +#: templates/client/accounts/translators/translator_city.html:34 +#: templates/client/accounts/translators/translator_country.html:31 +msgid "" +"Компания Serve Businesses Worldwide предлагает Вам возможность заказать " +"услуги русскоговорящих переводчиков со знанием английского языка " +"практически непосредственно в Великобритании." +msgstr "" + +#: templates/client/accounts/translators/translator_city.html:44 +#: templates/client/accounts/translators/translator_country.html:79 +#: templates/client/specialist_catalog/catalog_detailed.html:74 +msgid "Коротко о наших преимуществах:" +msgstr "" + +#: templates/client/accounts/translators/translator_city.html:46 +#: templates/client/accounts/translators/translator_country.html:81 +msgid "Эффективная цена" +msgstr "" + +#: templates/client/accounts/translators/translator_city.html:47 +#: templates/client/accounts/translators/translator_country.html:82 +msgid "Опыт и профессионализм специалистов" +msgstr "" + +#: templates/client/accounts/translators/translator_city.html:48 +#: templates/client/accounts/translators/translator_country.html:83 +msgid "" +"Знание разных менталитетов и психологических аспектов проведения " +"переговоров с зарубежными бизнесменами" +msgstr "" + +#: templates/client/accounts/translators/translator_city.html:49 +#: templates/client/accounts/translators/translator_country.html:84 +msgid "Ориентированность в мировых выставочных комплексах" +msgstr "" + +#: templates/client/accounts/translators/translator_city.html:50 +#: templates/client/accounts/translators/translator_country.html:85 +msgid "" +"Гарантии, отчетность по договору, прозрачные безналичные расчеты в России" +msgstr "" + +#: templates/client/accounts/translators/translator_city.html:62 +#: templates/client/accounts/translators/translator_country.html:97 +msgid "от 80 € / день" +msgstr "" + +#: templates/client/accounts/translators/translator_city.html:64 +#: templates/client/accounts/translators/translator_country.html:99 +#: templates/client/specialist_catalog/catalog_detailed.html:232 +msgid "заказать услугу" +msgstr "" + +#: templates/client/accounts/translators/translator_city.html:76 +#: templates/client/accounts/translators/translator_country.html:111 +#: templates/client/specialist_catalog/catalog_detailed.html:256 +msgid "Наши специалисты" +msgstr "" + +#: templates/client/accounts/translators/translator_city.html:103 +#: templates/client/accounts/translators/translator_country.html:133 +msgid "Все переводчики" +msgstr "" + +#: templates/client/accounts/translators/translator_country.html:32 +msgid "" +"Ниже приведен список наиболее часто востребованных территориальных " +"направлений для оказания услуг перевода в Великобритании. Приведенный " +"перечень не является исчерпывающим, поэтому, если Вы не нашли нужный Вам " +"город, обратитесь к нашим консультантам." +msgstr "" + +#: templates/client/accounts/translators/translator_country.html:41 +#: templates/client/city/city.html:63 templates/client/country/country.html:78 +#: templates/client/includes/address_block.html:11 +#: templates/client/includes/company/company_edit.html:179 +#: templates/client/includes/company/company_object.html:48 +#: templates/client/includes/conference/conference_object.html:59 +#: templates/client/includes/conference/conference_paid.html:67 +#: templates/client/includes/exposition/expo_paid.html:66 +#: templates/client/includes/exposition/exposition_object.html:63 +#: templates/client/includes/exposition/price.html:63 +#: templates/client/includes/exposition/programm.html:65 +#: templates/client/includes/exposition/statistic.html:64 +#: templates/client/includes/place/place_object.html:33 +msgid "Скрыть карту" +msgstr "" + +#: templates/client/accounts/translators/translator_country.html:44 +#: templates/client/city/city.html:66 templates/client/country/country.html:81 +#: templates/client/includes/address_block.html:8 +#: templates/client/includes/company/company_edit.html:179 +#: templates/client/includes/company/company_object.html:48 +#: templates/client/includes/conference/conference_object.html:56 +#: templates/client/includes/conference/conference_paid.html:64 +#: templates/client/includes/exposition/expo_paid.html:62 +#: templates/client/includes/exposition/exposition_object.html:59 +#: templates/client/includes/exposition/price.html:59 +#: templates/client/includes/exposition/programm.html:61 +#: templates/client/includes/exposition/statistic.html:60 +#: templates/client/includes/place/place_object.html:30 +msgid "Раскрыть карту" +msgstr "" + +#: templates/client/accounts/translators/translator_profile.html:38 +msgid "Есть личный автомобиль" +msgstr "" + +#: templates/client/accounts/translators/translator_profile.html:46 +#: translator/forms.py:50 +msgid "Родной язык" +msgstr "" + +#: templates/client/accounts/translators/translator_profile.html:53 +#: translator/forms.py:47 +msgid "Образование" +msgstr "" + +#: templates/client/article/article.html:8 +#: templates/client/article/blog_list.html:9 +#: templates/client/article/blog_list.html:14 +#: templates/client/article/catalog.html:13 +#: templates/client/article/catalog.html:37 +#: templates/client/includes/news.html:26 +msgid "Статьи" +msgstr "" + +#: templates/client/article/article.html:24 +#: templates/client/article/news.html:25 +#: templates/client/includes/conference/conference_list.html:81 +#: templates/client/includes/conference/conference_object.html:91 +#: templates/client/includes/conference/conference_paid.html:99 +#: templates/client/includes/exposition/expo_list_paid.html:71 +#: templates/client/includes/exposition/expo_paid.html:90 +#: templates/client/includes/exposition/expo_top.html:76 +#: templates/client/includes/exposition/exposition_list.html:89 +#: templates/client/includes/exposition/exposition_object.html:95 +#: templates/client/wizard/second_step.html:33 +#: templates/client/wizard/third_step.html:32 +#: templates/client/wizard/third_step.html:44 +msgid "изменить" +msgstr "" + +#: templates/client/article/article.html:49 +msgid "Похожие статьи" +msgstr "" + +#: templates/client/article/article.html:49 +#: templates/client/includes/news.html:43 +#: templates/client/simple_pages/participation_landing.html:298 +msgid "Все статьи" +msgstr "" + +#: templates/client/article/article.html:57 +msgid "Евгения Булавина" +msgstr "" + +#: templates/client/article/blog_list.html:48 +#: templates/client/article/news_list.html:47 +msgid "Укажите тематику" +msgstr "" + +#: templates/client/article/blog_list.html:52 +#: templates/client/article/news_list.html:50 +#: templates/client/includes/company/company_edit.html:577 +msgid "Выберите ключевые теги" +msgstr "" + +#: templates/client/article/event_news_list.html:11 +#: templates/client/article/event_news_list.html:19 +msgid "Новости к событию" +msgstr "" + +#: templates/client/article/news.html:35 +msgid "Источник" +msgstr "" + +#: templates/client/article/news.html:47 +msgid "Похожие новости" +msgstr "" + +#: templates/client/article/news.html:47 +#: templates/client/includes/news.html:23 +#: templates/client/includes/article/articles_in_event.html:7 +#: templates/client/includes/index/news.html:21 +msgid "Все новости" +msgstr "" + +#: templates/client/buttons/booking_button.html:3 +#: templates/client/includes/event_list.html:89 +#: templates/client/includes/place/place_object.html:155 +msgid "Лучшие цены на отели на" +msgstr "" + +#: templates/client/city/city.html:40 templates/client/country/country.html:56 +msgid "человек" +msgstr "" + +#: templates/client/city/city.html:48 templates/client/country/country.html:59 +msgid "Телефонный код" +msgstr "" + +#: templates/client/city/city.html:75 +msgid "Должны посетить" +msgstr "" + +#: templates/client/city/city.html:83 +msgid "Шоппинг" +msgstr "" + +#: templates/client/city/city.html:103 +#: templates/client/country/country.html:116 +#: templates/client/includes/place/place_object.html:49 +msgid "Фотогалерея" +msgstr "" + +#: templates/client/city/city.html:124 +#: templates/client/country/country.html:162 +msgid "События в" +msgstr "" + +#: templates/client/city/city.html:124 +#: templates/client/country/country.html:162 +#: templates/client/includes/company/company_object.html:216 +msgid "Все события" +msgstr "" + +#: templates/client/city/city.html:134 +#: templates/client/country/country.html:172 +msgid "Места в" +msgstr "" + +#: templates/client/city/city.html:134 +#: templates/client/country/country.html:172 +msgid "Все места" +msgstr "" + +#: templates/client/city/city.html:144 +#: templates/client/country/country.html:182 +msgid "Организаторы в" +msgstr "" + +#: templates/client/city/city.html:144 +#: templates/client/country/country.html:182 +msgid "Все организаторы" +msgstr "" + +#: templates/client/country/country.html:41 +msgid "Официальный язык" +msgstr "" + +#: templates/client/country/country.html:48 +msgid "Часовая зона" +msgstr "" + +#: templates/client/country/country.html:49 +msgid "среднее время по Гринвичу" +msgstr "" + +#: templates/client/country/country.html:134 +msgid "Визовая информация" +msgstr "" + +#: templates/client/expobanners/banner_stat.html:63 +#: templates/client/expobanners/paid_stat.html:63 +msgid "Подтвердить" +msgstr "" + +#: templates/client/expobanners/banner_stat.html:74 +msgid "Показы" +msgstr "" + +#: templates/client/expobanners/banner_stat.html:75 +msgid "Клики" +msgstr "" + +#: templates/client/expobanners/banner_stat.html:76 +msgid "Уникальные показы" +msgstr "" + +#: templates/client/expobanners/banner_stat.html:77 +msgid "Уникальные клики" +msgstr "" + +#: templates/client/expobanners/paid_stat.html:74 +#: templates/client/includes/exposition/services.html:14 +msgid "Официальный сайт" +msgstr "" + +#: templates/client/expobanners/paid_stat.html:75 +msgid "Билеты" +msgstr "" + +#: templates/client/expobanners/paid_stat.html:76 +msgid "Участие" +msgstr "" + +#: templates/client/expobanners/paid_stat.html:77 +msgid "Переходы с каталога" +msgstr "" + +#: templates/client/exposition/price.html:11 +#: templates/client/includes/exposition/expo_paid.html:185 +#: templates/client/includes/exposition/exposition_object.html:166 +msgid "Условия участия" +msgstr "" + +#: templates/client/exposition/programm.html:12 +#: templates/client/includes/conference/conference_object.html:157 +#: templates/client/includes/conference/conference_paid.html:199 +#: templates/client/includes/exposition/expo_paid.html:182 +#: templates/client/includes/exposition/exposition_object.html:163 +#: templates/client/includes/exposition/programm.html:79 +msgid "Деловая программа" +msgstr "" + +#: templates/client/includes/announces.html:6 +msgid "получать анонсЫ" +msgstr "" + +#: templates/client/includes/booking_block.html:11 +msgid "Отели рядом с выставкой от" +msgstr "" + +#: templates/client/includes/booking_block.html:13 +msgid "Все отели поблизости" +msgstr "" + +#: templates/client/includes/booking_block.html:29 +#: templates/client/includes/booking_block.html:49 +msgid "ночь" +msgstr "" + +#: templates/client/includes/booking_block.html:31 +#: templates/client/includes/booking_block.html:51 +msgid "Забронировать" +msgstr "" + +#: templates/client/includes/calendar_button.html:4 +#: templates/client/includes/conference/conference_list.html:138 +#: templates/client/includes/conference/conference_object.html:395 +#: templates/client/includes/conference/conference_paid.html:434 +#: templates/client/includes/exposition/expo_list_paid.html:154 +#: templates/client/includes/exposition/expo_paid.html:417 +#: templates/client/includes/exposition/exposition_list.html:150 +#: templates/client/includes/exposition/exposition_object.html:420 +#: templates/client/includes/exposition/search_result.html:110 +msgid "Из расписания" +msgstr "" + +#: templates/client/includes/calendar_button.html:4 +#: templates/client/includes/conference/conference_list.html:137 +#: templates/client/includes/conference/conference_object.html:394 +#: templates/client/includes/conference/conference_paid.html:433 +#: templates/client/includes/exposition/expo_list_paid.html:153 +#: templates/client/includes/exposition/expo_paid.html:416 +#: templates/client/includes/exposition/exposition_list.html:149 +#: templates/client/includes/exposition/exposition_object.html:419 +#: templates/client/includes/exposition/search_result.html:109 +msgid "В расписание" +msgstr "" + +#: templates/client/includes/catalog_search.html:10 +msgid "Я ищу:" +msgstr "" + +#: templates/client/includes/catalog_search.html:20 +msgid "Где:" +msgstr "" + +#: templates/client/includes/catalog_search.html:29 +#: templates/client/includes/catalog_search_main.html:35 +msgid "найти" +msgstr "" + +#: templates/client/includes/catalog_search.html:34 +#: templates/client/includes/catalog_search_main.html:40 +msgid "Тематика: " +msgstr "" + +#: templates/client/includes/catalog_search.html:42 +#: templates/client/includes/catalog_search_main.html:49 +msgid "Тип: " +msgstr "" + +#: templates/client/includes/catalog_search.html:49 +#: templates/client/includes/catalog_search_main.html:56 +msgid "Место: " +msgstr "" + +#: templates/client/includes/catalog_search.html:58 +#: templates/client/includes/catalog_search_main.html:66 +msgid "Период: " +msgstr "" + +#: templates/client/includes/catalog_search.html:109 +#: templates/client/includes/catalog_search.html:110 +#: templates/client/includes/catalog_search_main.html:119 +#: templates/client/includes/catalog_search_main.html:120 +msgid " и еще _" +msgstr "" + +#: templates/client/includes/event_list.html:30 +msgid "Неактивная" +msgstr "" + +#: templates/client/includes/event_list.html:72 +#: templates/client/includes/exposition/services.html:4 +#: templates/client/includes/place/place_object.html:142 +msgid "услуги" +msgstr "" + +#: templates/client/includes/event_list.html:85 +#: templates/client/includes/company/search_result.html:44 +#: templates/client/includes/conference/conference_list.html:71 +#: templates/client/includes/conference/conference_object.html:82 +#: templates/client/includes/conference/conference_paid.html:90 +#: templates/client/includes/exposition/expo_list_paid.html:61 +#: templates/client/includes/exposition/expo_paid.html:81 +#: templates/client/includes/exposition/expo_top.html:66 +#: templates/client/includes/exposition/exposition_list.html:79 +#: templates/client/includes/exposition/exposition_object.html:86 +#: templates/client/includes/exposition/members.html:35 +#: templates/client/includes/exposition/search_result.html:58 +#: templates/client/includes/index/main_events.html:39 +#: templates/client/includes/place/place_object.html:152 +msgid "заметка" +msgstr "" + +#: templates/client/includes/event_list_description.html:6 +msgid "" +"\n" +"\t\t

Выставки - один из наиболее популярных инструментов " +"среди маркетологов. Это объясняется тем, что специализированные " +"выставки предоставляют отличную возможность быстро и в " +"одном месте найти новых партнеров и клиентов, узнать о новых трендах своей " +"отрасли, послушать насыщенную деловую программу. Поэтому мы создали " +"Expomap.Ru именно в помощь специалистам отделов маркетинга " +"и собственникам бизнеса, предоставляя легкий и удобный поиск " +"выставок, практические кейсы о том, как правильно выбрать " +"выставку, как организовать ее посещение за рубежом или " +"участие со стендом. Вы легко можете связаться с нашими " +"онлайн-консультантами через Skype или позвонив по тел. +7 499 999 12 " +"07, и получить бесплатную информацию об интересующей Вас " +"выставке или рекомендации по тем или иным вопросам.

\n" +"\n" +"\t\t

Сейчас в нашем каталоге представлены международные выставки 2013 " +"года, а также уже прошедшие мероприятия, начиная с 2008 года – со всех стран " +"и уголков мира. С помощью рубрикатора (левый блок \"Каталог " +"выставок\") или панели поиска (строка для ввода или расширенный " +"поиск) Вы всегда сможете найти календарь выставок по интересующим Вас тематикам: строительные выставки, медицинские выставки, выставки недвижимости " +"и другие. Кроме тематик, рубрикатор дает возможность сортировать события: по " +"алфавиту, по странам, по городам, по датам. Объединить все эти критерии Вы " +"можете, используя расширенный поиск. Итоговое расписание выставок по Вашим критериям будет построено " +"удобным образом, начиная с ближайших событий.

\n" +"\t " +msgstr "" + +#: templates/client/includes/event_steps.html:4 +msgid "Участвовать в выставке" +msgstr "" + +#: templates/client/includes/event_steps.html:4 +msgid "Посетить конференцию" +msgstr "" + +#: templates/client/includes/event_steps.html:7 +msgid "Создайте уникальную концепцию" +msgstr "" + +#: templates/client/includes/event_steps.html:7 +#: templates/client/includes/conference/conference_paid.html:138 +#: templates/client/includes/exposition/expo_paid.html:129 +msgid "Зарегистрируйтесь на событие" +msgstr "" + +#: templates/client/includes/event_steps.html:11 +#: templates/client/includes/exposition/price.html:229 +#: templates/client/includes/exposition/price.html:231 +#: templates/client/includes/exposition/services.html:16 +msgid "Заявка на участие" +msgstr "" + +#: templates/client/includes/event_steps.html:11 +#: templates/client/includes/header.html:93 +#: templates/client/popups/register.html:6 +msgid "Регистрация" +msgstr "" + +#: templates/client/includes/event_steps.html:16 +#: templates/client/includes/conference/conference_paid.html:152 +msgid "Забронируйте отель по лучшей цене" +msgstr "" + +#: templates/client/includes/event_steps.html:21 +msgid "Устраните языковые барьеры" +msgstr "" + +#: templates/client/includes/event_steps.html:22 +msgid "ПЕРЕВОДЧИК" +msgstr "" + +#: templates/client/includes/feedback.html:5 +msgid "обратный звонок" +msgstr "" + +#: templates/client/includes/footer.html:32 +#: templates/client/includes/menu.html:10 +msgid "места" +msgstr "" + +#: templates/client/includes/footer.html:33 +#: templates/client/includes/menu.html:11 +msgid "участники" +msgstr "" + +#: templates/client/includes/footer.html:37 +#: templates/client/includes/menu.html:15 +msgid "о нас" +msgstr "" + +#: templates/client/includes/footer.html:38 +#: templates/client/includes/menu.html:16 +msgid "партнеры" +msgstr "" + +#: templates/client/includes/footer.html:39 +#: templates/client/includes/menu.html:17 +msgid "реклама" +msgstr "" + +#: templates/client/includes/footer.html:40 +#: templates/client/includes/menu.html:24 +msgid "контакты" +msgstr "" + +#: templates/client/includes/footer.html:41 +#: templates/client/popups/announces.html:49 +msgid "подписаться" +msgstr "" + +#: templates/client/includes/header.html:78 +msgid "личный кабинет" +msgstr "" + +#: templates/client/includes/header.html:80 +msgid "календарь" +msgstr "" + +#: templates/client/includes/header.html:81 +msgid "документы" +msgstr "" + +#: templates/client/includes/header.html:85 +msgid "настройки" +msgstr "" + +#: templates/client/includes/header.html:88 +msgid "Выход" +msgstr "" + +#: templates/client/includes/header.html:94 +msgid "вход" +msgstr "" + +#: templates/client/includes/header.html:105 +msgid "Выставки в Москве" +msgstr "" + +#: templates/client/includes/header.html:106 +msgid "Выставки в Петербурге" +msgstr "" + +#: templates/client/includes/header.html:107 +msgid "Выставки в Германии" +msgstr "" + +#: templates/client/includes/header.html:111 +msgid "Выставки по городам" +msgstr "" + +#: templates/client/includes/header.html:112 +msgid "Выставки по странам" +msgstr "" + +#: templates/client/includes/header.html:113 +msgid "Выставки по тематикам" +msgstr "" + +#: templates/client/includes/main_page_video_block.html:4 +msgid " Видеорепортажи" +msgstr "" + +#: templates/client/includes/meta.html:33 +msgid "Expomap — выставки, конференции, семинары" +msgstr "" + +#: templates/client/includes/page_filter.html:4 +#: templates/client/includes/article/catalog_filter_period.html:11 +#: templates/client/includes/article.back/catalog_filter_period.html:11 +#: templates/client/includes/exposition/catalog_filter_period.html:11 +#: templates/client/popups/period.html:5 +msgid "Период" +msgstr "" + +#: templates/client/includes/page_filter.html:5 +msgid "сентябрь 2013" +msgstr "" + +#: templates/client/includes/page_filter.html:5 +msgid "октябрь 2013" +msgstr "" + +#: templates/client/includes/page_filter.html:5 +msgid "ноябрь 2013" +msgstr "" + +#: templates/client/includes/page_filter.html:5 +msgid "декабрь 2013" +msgstr "" + +#: templates/client/includes/page_filter.html:5 +msgid "январь 2014" +msgstr "" + +#: templates/client/includes/page_filter.html:5 +msgid "февраль 2014" +msgstr "" + +#: templates/client/includes/page_filter.html:9 +#: templates/client/includes/exposition/catalog_filter_period.html:20 +msgid "Указать диапазон дат" +msgstr "" + +#: templates/client/includes/search_paginator.html:6 +msgid "Показано" +msgstr "" + +#: templates/client/includes/search_paginator.html:6 +msgid "всего" +msgstr "" + +#: templates/client/includes/search_paginator.html:9 +#: templates/client/includes/search_paginator.html:11 +msgid "Предыдущая" +msgstr "" + +#: templates/client/includes/search_paginator.html:38 +#: templates/client/includes/search_paginator.html:40 +msgid "Следующая" +msgstr "" + +#: templates/client/includes/services.html:3 +msgid "Наши услуги" +msgstr "" + +#: templates/client/includes/services.html:9 +#: templates/client/service/build_stand.html:185 +#: templates/client/service/build_stand.html:190 +#: templates/client/service/catalog.html:185 +#: templates/client/service/catalog.html:190 +#: templates/client/service/participation.html:284 +#: templates/client/service/participation.html:289 +#: templates/client/service/remotely.html:15 +#: templates/client/service/remotely.html:18 +#: templates/client/service/remotely.html:267 +#: templates/client/service/tickets.html:281 +#: templates/client/service/tickets.html:286 +#: templates/client/service/tour.html:364 +#: templates/client/service/tour.html:369 +#: templates/client/service/translator.html:366 +#: templates/client/service/translator.html:371 +msgid "Заочное посещение" +msgstr "" + +#: templates/client/includes/services.html:10 +msgid "Участие в выставках" +msgstr "" + +#: templates/client/includes/side_confs.html:9 +#: templates/client/includes/side_places.html:8 +msgid "Конференции в Москве" +msgstr "" + +#: templates/client/includes/side_confs.html:10 +#: templates/client/includes/side_places.html:9 +msgid "Конференции в Петербурге" +msgstr "" + +#: templates/client/includes/side_confs.html:11 +#: templates/client/includes/side_places.html:10 +msgid "Конференции в России" +msgstr "" + +#: templates/client/includes/translators_aside.html:8 +msgid "Переводчики в Москве" +msgstr "" + +#: templates/client/includes/translators_aside.html:9 +msgid "Переводчики в Германии" +msgstr "" + +#: templates/client/includes/translators_aside.html:10 +msgid "Переводчики в Италии" +msgstr "" + +#: templates/client/includes/translators_aside.html:11 +msgid "Переводчики в Китае" +msgstr "" + +#: templates/client/includes/visit_button.html:6 +#: templates/client/includes/visit_button.html:9 +#: templates/client/includes/visit_button.html:13 +msgid "Я планирую посетить" +msgstr "" + +#: templates/client/includes/visit_button.html:7 +#: templates/client/includes/visit_button.html:10 +#: templates/client/includes/visit_button.html:14 +msgid "Не планирую посещать" +msgstr "" + +#: templates/client/includes/accounts/blocked_user.html:13 +#: templates/client/includes/company/company_blocked.html:13 +msgid "Страница заблокирована за нарушение правил" +msgstr "" + +#: templates/client/includes/accounts/blocked_user.html:14 +#: templates/client/includes/company/company_blocked.html:14 +msgid "" +"Если считаете, что Ваша страница была заблокирована по ошибке, напишите на " +"info@expomap.ru" +msgstr "" + +#: templates/client/includes/accounts/calendar_table.html:5 +msgid "визуализация" +msgstr "" + +#: templates/client/includes/accounts/calendar_table.html:27 +msgid "Сегодня" +msgstr "" + +#: templates/client/includes/accounts/calendar_table.html:51 +msgid "Нет отмеченых событий" +msgstr "" + +#: templates/client/includes/accounts/current_user.html:13 +msgid "Добавить фото" +msgstr "" + +#: templates/client/includes/accounts/current_user.html:28 +#: templates/client/includes/accounts/current_user.html:72 +#: templates/client/includes/accounts/current_user.html:110 +#: templates/client/includes/accounts/current_user.html:153 +#: templates/client/includes/accounts/current_user.html:282 +#: templates/client/includes/accounts/current_user.html:347 +#: templates/client/includes/accounts/current_user.html:383 +#: templates/client/includes/company/company_edit.html:27 +#: templates/client/includes/company/company_edit.html:65 +#: templates/client/includes/company/company_edit.html:104 +#: templates/client/includes/company/company_edit.html:138 +#: templates/client/includes/company/company_edit.html:187 +#: templates/client/includes/company/company_edit.html:218 +#: templates/client/includes/company/company_edit.html:344 +#: templates/client/includes/company/company_edit.html:375 +#: templates/client/includes/company/company_edit.html:406 +msgid "редактировать" +msgstr "" + +#: templates/client/includes/accounts/current_user.html:36 +#: templates/client/includes/company/company_edit.html:35 +#: templates/client/organiser/add_event.html:227 +msgid "выберите файл" +msgstr "" + +#: templates/client/includes/accounts/current_user.html:37 +#: templates/client/includes/company/company_edit.html:36 +msgid "Файл не выбран" +msgstr "" + +#: templates/client/includes/accounts/current_user.html:44 +#: templates/client/includes/accounts/current_user.html:90 +#: templates/client/includes/accounts/current_user.html:129 +#: templates/client/includes/accounts/current_user.html:173 +#: templates/client/includes/accounts/current_user.html:261 +#: templates/client/includes/accounts/current_user.html:299 +#: templates/client/includes/accounts/current_user.html:359 +#: templates/client/includes/accounts/current_user.html:395 +#: templates/client/includes/company/company_edit.html:43 +#: templates/client/includes/company/company_edit.html:83 +#: templates/client/includes/company/company_edit.html:120 +#: templates/client/includes/company/company_edit.html:152 +#: templates/client/includes/company/company_edit.html:199 +#: templates/client/includes/company/company_edit.html:326 +#: templates/client/includes/company/company_edit.html:357 +#: templates/client/includes/company/company_edit.html:388 +#: templates/client/includes/company/company_edit.html:419 +#: templates/client/includes/company/company_edit.html:449 +#: templates/client/includes/company/company_edit.html:482 +#: templates/client/includes/company/company_edit.html:516 +msgid "Сохранить" +msgstr "" + +#: templates/client/includes/accounts/current_user.html:47 +#: templates/client/includes/accounts/current_user.html:93 +#: templates/client/includes/accounts/current_user.html:132 +#: templates/client/includes/accounts/current_user.html:176 +#: templates/client/includes/accounts/current_user.html:264 +#: templates/client/includes/accounts/current_user.html:302 +#: templates/client/includes/accounts/current_user.html:363 +#: templates/client/includes/accounts/current_user.html:398 +#: templates/client/includes/company/company_edit.html:46 +#: templates/client/includes/company/company_edit.html:85 +#: templates/client/includes/company/company_edit.html:124 +#: templates/client/includes/company/company_edit.html:156 +#: templates/client/includes/company/company_edit.html:203 +#: templates/client/includes/company/company_edit.html:329 +#: templates/client/includes/company/company_edit.html:360 +#: templates/client/includes/company/company_edit.html:391 +#: templates/client/includes/company/company_edit.html:422 +msgid "закрыть" +msgstr "" + +#: templates/client/includes/accounts/current_user.html:54 +msgid "

Заполните свой
профиль, чтобы
повысить рейтинг

" +msgstr "" + +#: templates/client/includes/accounts/current_user.html:55 +msgid "

Чем выше
рейтинг —
тем больше
преимуществ!

" +msgstr "" + +#: templates/client/includes/accounts/current_user.html:64 +#: templates/client/includes/accounts/current_user.html:102 +#: templates/client/includes/accounts/current_user.html:142 +#: templates/client/includes/company/company_edit.html:57 +#: templates/client/includes/company/company_edit.html:98 +msgid "Указать" +msgstr "" + +#: templates/client/includes/accounts/current_user.html:65 +msgid "Страну и город" +msgstr "" + +#: templates/client/includes/accounts/current_user.html:103 +msgid "имя и фамилию" +msgstr "" + +#: templates/client/includes/accounts/current_user.html:143 +msgid "свою должность и место работы" +msgstr "" + +#: templates/client/includes/accounts/current_user.html:149 +#: templates/client/includes/accounts/current_user.html:481 +msgid "в" +msgstr "" + +#: templates/client/includes/accounts/current_user.html:185 +#: templates/client/includes/company/company_edit.html:247 +#: templates/client/includes/company/company_object.html:76 +msgid "Профили в соц.сетях:" +msgstr "" + +#: templates/client/includes/accounts/current_user.html:228 +#: templates/client/includes/company/company_edit.html:293 +msgid "+5 за каждый" +msgstr "" + +#: templates/client/includes/accounts/current_user.html:275 +#: templates/client/includes/company/company_edit.html:339 +msgid "номер телефона" +msgstr "" + +#: templates/client/includes/accounts/current_user.html:293 +msgid "Показывать всем" +msgstr "" + +#: templates/client/includes/accounts/current_user.html:338 +#: templates/client/includes/company/company_edit.html:399 +msgid "сайт" +msgstr "" + +#: templates/client/includes/accounts/current_user.html:374 +msgid "О себе:" +msgstr "" + +#: templates/client/includes/accounts/current_user.html:378 +msgid "информацию о себе" +msgstr "" + +#: templates/client/includes/accounts/current_user.html:407 +msgid "Мои компании:" +msgstr "" + +#: templates/client/includes/accounts/current_user.html:414 +msgid "Пока не добавлено ни одной компании" +msgstr "" + +#: templates/client/includes/accounts/current_user.html:434 +msgid "Добавить компанию" +msgstr "" + +#: templates/client/includes/accounts/current_user.html:468 +msgid "Выберите тематику компании" +msgstr "" + +#: templates/client/includes/accounts/current_user.html:471 +msgid "Поиск города" +msgstr "" + +#: templates/client/includes/accounts/current_user.html:475 +msgid "Поиск компании" +msgstr "" + +#: templates/client/includes/accounts/simple_user.html:71 +#: templates/client/includes/accounts/simple_user.html:73 +#: templates/client/includes/company/search_result.html:49 +#: templates/client/includes/exposition/members.html:39 +#: templates/client/includes/exposition/visitors.html:42 +msgid "отправить сообщение" +msgstr "" + +#: templates/client/includes/accounts/simple_user.html:112 +#: templates/client/includes/company/company_object.html:155 +msgid "Участие в событиях" +msgstr "" + +#: templates/client/includes/accounts/translators.html:35 +#: templates/client/includes/company/company_list.html:40 +#: templates/client/includes/company/search_result.html:40 +#: templates/client/includes/exposition/members.html:33 +#: templates/client/includes/exposition/visitors.html:36 +msgid "информация" +msgstr "" + +#: templates/client/includes/article/articles_in_event.html:7 +msgid "Последние новости к этому событию" +msgstr "" + +#: templates/client/includes/company/company_edit.html:12 +msgid "Добавить лого" +msgstr "" + +#: templates/client/includes/company/company_edit.html:58 +msgid "город" +msgstr "" + +#: templates/client/includes/company/company_edit.html:99 +msgid "название компании" +msgstr "" + +#: templates/client/includes/company/company_edit.html:233 +msgid "за каждый" +msgstr "" + +#: templates/client/includes/company/company_edit.html:431 +#: templates/client/includes/company/company_object.html:124 +#: templates/client/includes/conference/conference_object.html:154 +#: templates/client/includes/conference/conference_paid.html:196 +#: templates/client/includes/exposition/expo_paid.html:179 +#: templates/client/includes/exposition/exposition_object.html:160 +#: templates/client/organiser/add_event.html:125 +#: templates/client/wizard/first_step.html:102 +msgid "Дополнительная информация" +msgstr "" + +#: templates/client/includes/company/company_edit.html:452 +#: templates/client/includes/company/company_edit.html:485 +#: templates/client/includes/company/company_edit.html:520 +msgid "Закрыть" +msgstr "" + +#: templates/client/includes/company/company_edit.html:461 +#: templates/client/includes/company/company_edit.html:494 +#: templates/client/includes/company/company_edit.html:529 +msgid "Не заполнено" +msgstr "" + +#: templates/client/includes/company/company_edit.html:535 +#, fuzzy +msgid "Предварительный просмотр" +msgstr "Не правильный пароль" + +#: templates/client/includes/company/company_edit.html:570 +msgid "Выберите Страну" +msgstr "" + +#: templates/client/includes/company/company_edit.html:573 +msgid "Выберите город" +msgstr "" + +#: templates/client/includes/company/company_list.html:42 +#: templates/client/includes/company/search_result.html:42 +#: templates/client/includes/exposition/members.html:34 +#: templates/client/includes/exposition/visitors.html:37 +#: templates/client/includes/place/place_list.html:40 +#: templates/client/includes/place/search_result.html:43 +msgid "события" +msgstr "" + +#: templates/client/includes/company/company_object.html:128 +#: templates/client/organiser/add_event.html:291 +#: templates/client/wizard/second_step.html:62 +msgid "Год основания:" +msgstr "" + +#: templates/client/includes/company/company_object.html:133 +msgid "Количество сотрудников:" +msgstr "" + +#: templates/client/includes/company/company_object.html:137 +msgid "О компании:" +msgstr "" + +#: templates/client/includes/company/company_object.html:159 +msgid "выставках" +msgstr "" + +#: templates/client/includes/company/company_object.html:162 +msgid "конференциях" +msgstr "" + +#: templates/client/includes/company/company_object.html:165 +msgid "семинарах" +msgstr "" + +#: templates/client/includes/company/company_object.html:189 +msgid "Участник" +msgstr "" + +#: templates/client/includes/company/company_object.html:225 +msgid "Сотрудники" +msgstr "" + +#: templates/client/includes/company/company_object.html:259 +msgid "Все сотрудники" +msgstr "" + +#: templates/client/includes/conference/conference_list.html:118 +msgid "" +"Конференции по указанным параметрам не найдены. Попробуйте задать менее " +"точный запрос по теме или расширить период времени" +msgstr "" + +#: templates/client/includes/conference/conference_object.html:94 +#: templates/client/includes/conference/conference_paid.html:102 +#: templates/client/includes/exposition/expo_paid.html:94 +#: templates/client/includes/exposition/exposition_object.html:98 +#: templates/client/includes/place/place_list.html:43 +#: templates/client/includes/place/search_result.html:46 +msgid "фото" +msgstr "" + +#: templates/client/includes/conference/conference_object.html:97 +#: templates/client/includes/conference/conference_paid.html:105 +#: templates/client/includes/exposition/expo_paid.html:97 +#: templates/client/includes/exposition/exposition_object.html:102 +msgid "Найти отель" +msgstr "" + +#: templates/client/includes/conference/conference_object.html:127 +#: templates/client/includes/conference/conference_paid.html:167 +msgid "Фотографии с прошлой конференции" +msgstr "" + +#: templates/client/includes/conference/conference_object.html:145 +#: templates/client/includes/conference/conference_paid.html:186 +#: templates/client/includes/exposition/expo_paid.html:172 +#: templates/client/includes/exposition/exposition_object.html:149 +msgid "О выставке" +msgstr "" + +#: templates/client/includes/conference/conference_object.html:145 +#: templates/client/includes/conference/conference_paid.html:186 +msgid "О конференции" +msgstr "" + +#: templates/client/includes/conference/conference_object.html:223 +#: templates/client/includes/conference/conference_paid.html:256 +msgid "Все спикеры" +msgstr "" + +#: templates/client/includes/conference/conference_object.html:244 +#: templates/client/includes/conference/conference_paid.html:277 +msgid "Разместите информацию о ключевых спикерах" +msgstr "" + +#: templates/client/includes/conference/conference_object.html:245 +#: templates/client/includes/conference/conference_paid.html:278 +#: templates/client/popups/advertise_member.html:8 +msgid "Рекламировать спикера" +msgstr "" + +#: templates/client/includes/conference/conference_object.html:268 +#: templates/client/includes/conference/conference_paid.html:301 +#: templates/client/includes/exposition/expo_paid.html:283 +#: templates/client/includes/exposition/exposition_object.html:281 +msgid "Все посетители" +msgstr "" + +#: templates/client/includes/conference/conference_object.html:270 +#: templates/client/includes/conference/conference_paid.html:303 +#: templates/client/includes/exposition/expo_paid.html:285 +#: templates/client/includes/exposition/exposition_object.html:283 +msgid "Пока никто не отметился на событии." +msgstr "" + +#: templates/client/includes/conference/conference_object.html:281 +#: templates/client/includes/conference/conference_paid.html:314 +#: templates/client/includes/exposition/expo_paid.html:311 +#: templates/client/includes/exposition/exposition_object.html:308 +#: templates/client/includes/exposition/statistic.html:103 +msgid "участников" +msgstr "" + +#: templates/client/includes/conference/conference_object.html:284 +#: templates/client/includes/conference/conference_paid.html:317 +#: templates/client/includes/exposition/expo_paid.html:314 +#: templates/client/includes/exposition/exposition_object.html:311 +#: templates/client/includes/exposition/statistic.html:92 +msgid "посетителей" +msgstr "" + +#: templates/client/includes/conference/conference_object.html:287 +#: templates/client/includes/conference/conference_paid.html:320 +#: templates/client/includes/exposition/expo_paid.html:317 +#: templates/client/includes/exposition/exposition_object.html:314 +#: templates/client/includes/place/place_info.html:84 +msgid "Основано в" +msgstr "" + +#: templates/client/includes/conference/conference_object.html:287 +#: templates/client/includes/conference/conference_paid.html:320 +#: templates/client/includes/exposition/expo_paid.html:317 +#: templates/client/includes/exposition/exposition_object.html:314 +#: templates/client/includes/place/place_info.html:84 +msgid "году" +msgstr "" + +#: templates/client/includes/conference/conference_object.html:297 +#: templates/client/includes/conference/conference_paid.html:332 +msgid "Ближайшие конференции по тематике" +msgstr "" + +#: templates/client/includes/conference/conference_object.html:357 +#: templates/client/includes/conference/conference_paid.html:392 +#: templates/client/includes/exposition/expo_paid.html:376 +#: templates/client/includes/exposition/exposition_object.html:382 +msgid "Смотрите также:" +msgstr "" + +#: templates/client/includes/conference/conference_object.html:358 +#: templates/client/includes/conference/conference_object.html:359 +#: templates/client/includes/conference/conference_object.html:360 +#: templates/client/includes/conference/conference_object.html:361 +#: templates/client/includes/conference/conference_paid.html:393 +#: templates/client/includes/conference/conference_paid.html:394 +#: templates/client/includes/conference/conference_paid.html:395 +#: templates/client/includes/conference/conference_paid.html:396 +#: templates/client/includes/exposition/expo_paid.html:377 +#: templates/client/includes/exposition/expo_paid.html:378 +#: templates/client/includes/exposition/expo_paid.html:379 +#: templates/client/includes/exposition/expo_paid.html:380 +#: templates/client/includes/exposition/exposition_object.html:383 +#: templates/client/includes/exposition/exposition_object.html:384 +#: templates/client/includes/exposition/exposition_object.html:385 +#: templates/client/includes/exposition/exposition_object.html:386 +msgid "in" +msgstr "" + +#: templates/client/includes/conference/conference_object.html:360 +#: templates/client/includes/conference/conference_object.html:361 +#: templates/client/includes/conference/conference_paid.html:395 +#: templates/client/includes/conference/conference_paid.html:396 +msgid "Конференции по тематике " +msgstr "" + +#: templates/client/includes/conference/conference_paid.html:131 +msgid "Официальный сайт конференции" +msgstr "" + +#: templates/client/includes/conference/conference_paid.html:135 +msgid "Посетить/участвовать в конференции" +msgstr "" + +#: templates/client/includes/conference/conference_paid.html:142 +msgid "УЧАСТВОВАТЬ" +msgstr "" + +#: templates/client/includes/conference/conference_paid.html:158 +#: templates/client/includes/exposition/expo_paid.html:143 +msgid "Задайте свой вопрос напрямую организатору" +msgstr "" + +#: templates/client/includes/conference/conference_paid.html:159 +#: templates/client/includes/exposition/expo_paid.html:144 +msgid "Запрос организатору" +msgstr "" + +#: templates/client/includes/conference/default_description.html:3 +#, python-format +msgid "" +"\n" +"

Конференция %(name)s проходит " +msgstr "" + +#: templates/client/includes/conference/default_description.html:5 +#, python-format +msgid "" +"\n" +" в городе %(city)s, %(country)s.\n" +"Посмотреть, как проехать в место проведения конференции, можно на сайте " +"конгрессной площадки.\n" +"Деловая программа %(name)s разбита на секции по дням и размещается на сайте " +"мероприятия с подробным списком\n" +"докладчиков конференции. Спикеров конференции %(name)s обычно окончательно " +"утверждают за 1-2 месяца до начала конференции.

\n" +"

Ваши деловые контакты на %(name)s

\n" +"

Добавьте конференцию %(name)s в расписание, " +"чтобы не потерять важное событие,\n" +" где встречаются профессионалы нужной Вам отрасли. Создавайте свое " +"расписание мероприятий.

\n" +"

Планируете самостоятельную поездку на %(name)s ?

\n" +"

Если Вам требуется размещение, мы " +"рекомендуем посмотреть отели и цены в период проведения конференции здесь.\n" +"Не забудьте проверить место и даты конференции на официальном сайте и в " +"календаре организатора. Событие могут перенести,\n" +"отменить, объединить с проектом схожей тематики. Expomap не несет " +"ответственности за неточности\n" +"предоставляемой информации.

\n" +"Есть вопрос по участию в %(name)s ? Ответим по тел. +7 (499) 999-12-07\n" +" " +msgstr "" + +#: templates/client/includes/exposition/default_description.html:3 +#, python-format +msgid "" +"\n" +"

Выставка %(name)s проводится" +msgstr "" + +#: templates/client/includes/exposition/default_description.html:6 +#, python-format +msgid " в городе %(city)s, %(country)s.

" +msgstr "" + +#: templates/client/includes/exposition/default_description.html:7 +#, python-format +msgid "" +"\n" +"

Экспонируемые продукты и разделы выставки Вы можете посмотреть " +"ниже, в блоке\n" +" «Дополнительная информация».\n" +" Полный список участников %(name)s размещается на официальном сайте " +"выставки и постоянно обновляется.\n" +" Там же Вы сможете найти экспонентов предыдущего года. Деловая " +"программа %(name)s обычно публикуется ближе к\n" +" началу события.

\n" +"\n" +"

Ваш личный календарь

\n" +"

Добавьте выставку %(name)s в календарь, чтобы не\n" +" потерять важное событие. Создавайте свое расписание мероприятий." +"

\n" +"\n" +"

Планируете самостоятельную поездку на %(name)s?

\n" +"

Мы рекомендуем посмотреть отели и " +"цены в период проведения выставки\n" +" здесь.\n" +" " +msgstr "" + +#: templates/client/includes/exposition/default_description.html:22 +#, python-format +msgid "" +"Как добраться до выставочного центра %(name)s можно\n" +" посмотреть\n" +" здесь." +msgstr "" + +#: templates/client/includes/exposition/default_description.html:26 +#, python-format +msgid "" +"\n" +" Не забудьте проверить место и даты выставки на официальном сайте и в " +"календаре выставочного комплекса.\n" +" Событие могут перенести, отменить, объединить с проектом схожей " +"тематики.\n" +" Expomap не несет ответственности за неточности предоставляемой " +"информации.

\n" +" Есть вопрос о посещении или участии в %(name)s? Ответим по тел. " +"+7 (499) 999-12-07\n" +" " +msgstr "" + +#: templates/client/includes/exposition/expo_list_paid.html:131 +#: templates/client/includes/exposition/exposition_list.html:127 +msgid "" +"Выставки по указанным параметрам не найдены. Попробуйте задать менее точный " +"запрос по теме или расширить период времени" +msgstr "" + +#: templates/client/includes/exposition/expo_paid.html:122 +msgid "Официальный сайт выставки" +msgstr "" + +#: templates/client/includes/exposition/expo_paid.html:126 +msgid "Посетить/участвовать в выставке" +msgstr "" + +#: templates/client/includes/exposition/expo_paid.html:133 +#: templates/client/includes/exposition/services.html:15 +#: templates/client/service/participation.html:288 +#: templates/client/service/remotely.html:271 +#: templates/client/service/tickets.html:14 +#: templates/client/service/tickets.html:17 +#: templates/client/service/tickets.html:25 +#: templates/client/service/tour.html:367 +#: templates/client/service/translator.html:369 +msgid "Билеты на выставку" +msgstr "" + +#: templates/client/includes/exposition/expo_paid.html:138 +msgid "Забронируйте площадь по лучшей цене" +msgstr "" + +#: templates/client/includes/exposition/expo_paid.html:152 +#: templates/client/includes/exposition/exposition_object.html:131 +msgid "Фотографии с прошлой выставки" +msgstr "" + +#: templates/client/includes/exposition/expo_paid.html:239 +#: templates/client/includes/exposition/exposition_object.html:237 +msgid "Все участники" +msgstr "" + +#: templates/client/includes/exposition/expo_paid.html:260 +#: templates/client/includes/exposition/exposition_object.html:258 +msgid "Привлекайте целевых посетителей на стенд" +msgstr "" + +#: templates/client/includes/exposition/expo_paid.html:303 +#: templates/client/includes/exposition/exposition_object.html:300 +#: templates/client/includes/exposition/statistic.html:112 +#: templates/client/includes/place/place_info.html:9 +msgid "Общая выставочная площадь" +msgstr "" + +#: templates/client/includes/exposition/expo_paid.html:305 +#: templates/client/includes/exposition/exposition_object.html:302 +#: templates/client/includes/place/place_info.html:28 +#: templates/client/includes/place/place_info.html:34 +msgid "м²" +msgstr "" + +#: templates/client/includes/exposition/expo_paid.html:329 +#: templates/client/includes/exposition/exposition_object.html:324 +msgid "Ближайшие выставки по тематике" +msgstr "" + +#: templates/client/includes/exposition/expo_paid.html:379 +#: templates/client/includes/exposition/expo_paid.html:380 +#: templates/client/includes/exposition/exposition_object.html:385 +#: templates/client/includes/exposition/exposition_object.html:386 +msgid "Выставки по тематике " +msgstr "" + +#: templates/client/includes/exposition/price.html:74 +#: templates/client/organiser/add_event.html:418 +#: templates/client/wizard/second_step.html:71 +msgid "Стоимость посещения и участия" +msgstr "" + +#: templates/client/includes/exposition/price.html:82 +msgid "Для посещения" +msgstr "" + +#: templates/client/includes/exposition/price.html:84 +#: templates/client/organiser/add_event.html:423 +#: templates/client/wizard/second_step.html:79 +msgid "Стоимость билетов" +msgstr "" + +#: templates/client/includes/exposition/price.html:101 +#: templates/client/includes/exposition/price.html:134 +msgid "на 1 день" +msgstr "" + +#: templates/client/includes/exposition/price.html:114 +#: templates/client/includes/exposition/price.html:142 wizard/forms.py:55 +#: wizard/forms.py:57 +msgid "на все дни" +msgstr "" + +#: templates/client/includes/exposition/price.html:120 +#: templates/client/organiser/add_event.html:447 +#: templates/client/wizard/second_step.html:105 +msgid "Предварительная регистрация" +msgstr "" + +#: templates/client/includes/exposition/price.html:149 +msgid "Регистрация на" +msgstr "" + +#: templates/client/includes/exposition/price.html:149 +msgid "стойке" +msgstr "" + +#: templates/client/includes/exposition/price.html:157 +#: templates/client/includes/exposition/price.html:161 +msgid "Заказать билет" +msgstr "" + +#: templates/client/includes/exposition/price.html:168 +msgid "Выставка открыта для" +msgstr "" + +#: templates/client/includes/exposition/price.html:178 +msgid "Для участия" +msgstr "" + +#: templates/client/includes/exposition/price.html:180 +#: templates/client/organiser/add_event.html:479 +#: templates/client/wizard/second_step.html:146 +msgid "Стоимость аренды 1м²" +msgstr "" + +#: templates/client/includes/exposition/price.html:194 wizard/forms.py:60 +msgid "оборудованная площадь" +msgstr "" + +#: templates/client/includes/exposition/price.html:207 wizard/forms.py:61 +msgid "необорудованная площадь" +msgstr "" + +#: templates/client/includes/exposition/price.html:220 wizard/forms.py:62 +msgid "открытая площадь" +msgstr "" + +#: templates/client/includes/exposition/price.html:226 +msgid "Цены на площадь доступны по запросу" +msgstr "" + +#: templates/client/includes/exposition/price.html:243 +msgid "Крайний срок подачи заявки" +msgstr "" + +#: templates/client/includes/exposition/statistic.html:114 +msgid "м" +msgstr "" + +#: templates/client/includes/exposition/statistic.html:128 +msgid "стран-участниц" +msgstr "" + +#: templates/client/includes/index/blogs.html:6 +msgid "Обзоры и аналитика" +msgstr "" + +#: templates/client/includes/index/blogs.html:7 +msgid "Все обзоры" +msgstr "" + +#: templates/client/includes/index/confs.html:9 +#: templates/client/includes/index/expos.html:9 +msgid "Все тематики" +msgstr "" + +#: templates/client/includes/index/main_date_block.html:31 +msgid "года" +msgstr "" + +#: templates/client/includes/photoreport/photoreport_list.html:56 +msgid "Все фотографии" +msgstr "" + +#: templates/client/includes/photoreport/photoreport_list.html:57 +msgid "фотографий" +msgstr "" + +#: templates/client/includes/photoreport/photoreport_object.html:86 +#: templates/client/photoreport/gallery.html:89 +msgid "На фотографии отмечены" +msgstr "" + +#: templates/client/includes/photoreport/photoreport_object.html:92 +#: templates/client/photoreport/gallery.html:95 +msgid "Коментарии" +msgstr "" + +#: templates/client/includes/photoreport/photoreport_object.html:104 +#: templates/client/photoreport/gallery.html:107 +msgid "Оставьте свой комментарий" +msgstr "" + +#: templates/client/includes/place/place_info.html:29 +msgid "закрытая выставочная площадь" +msgstr "" + +#: templates/client/includes/place/place_info.html:35 +msgid "открытая выставочная площадь" +msgstr "" + +#: templates/client/includes/place/place_info.html:63 +msgid "Ежегодно проводится" +msgstr "" + +#: templates/client/includes/place/place_info.html:73 +#: templates/client/popups/announce_subscription.html:9 +msgid "событий" +msgstr "" + +#: templates/client/includes/place/place_list.html:38 +#: templates/client/includes/place/search_result.html:41 +msgid "описание" +msgstr "" + +#: templates/client/includes/place/place_list.html:47 +#: templates/client/includes/place/search_result.html:51 +msgid "Найти отели поблизости" +msgstr "" + +#: templates/client/includes/place/place_object.html:20 +msgid "Далее..." +msgstr "" + +#: templates/client/includes/place/place_object.html:72 +msgid "Схема павильонов" +msgstr "" + +#: templates/client/includes/place/place_object.html:75 +msgid "Схема в pdf" +msgstr "" + +#: templates/client/includes/place/place_object.html:84 +msgid "Контактная информация" +msgstr "" + +#: templates/client/includes/place/place_object.html:95 +msgid "телефон" +msgstr "" + +#: templates/client/includes/place/place_object.html:98 +msgid "факс" +msgstr "" + +#: templates/client/includes/place/place_object.html:107 +msgid "Список событий" +msgstr "" + +#: templates/client/includes/place/place_object.html:151 +msgid "в расписание" +msgstr "" + +#: templates/client/includes/place/place_object.html:183 +msgid "Ближайшие выставочные центры" +msgstr "" + +#: templates/client/includes/place/place_services.html:4 +msgid "Услуги" +msgstr "" + +#: templates/client/includes/place/place_services.html:9 +msgid "Банк / банкоматы / обмен валюты" +msgstr "" + +#: templates/client/includes/place/place_services.html:29 +msgid "Онлайн-регистрация" +msgstr "" + +#: templates/client/includes/place/place_services.html:32 +msgid "Кафе и рестораны" +msgstr "" + +#: templates/client/newsletters/activation_complete.html:10 +msgid "Ваша подписка активирована!" +msgstr "" + +#: templates/client/newsletters/activation_complete.html:16 +msgid "" +"Мы очень рады, что теперь каждую среду вместе с другими профессионалами " +"бизнеса Вы будете получать анонсы из календаря событий Expomap. Важные " +"выставки и конференции не останутся незамеченными!" +msgstr "" + +#: templates/client/newsletters/activation_complete.html:18 +msgid "Вы всегда можете изменить параметры своей подписки:" +msgstr "" + +#: templates/client/newsletters/activation_complete.html:20 +msgid "- добавить или изменить тематики;" +msgstr "" + +#: templates/client/newsletters/activation_complete.html:21 +msgid "" +"- применить гео-фильтры (например, получать выставки только в г. Москва);" +msgstr "" + +#: templates/client/newsletters/activation_complete.html:22 +msgid "- изменить периодичность получения писем;" +msgstr "" + +#: templates/client/newsletters/activation_complete.html:23 +msgid "- отписаться! =(" +msgstr "" + +#: templates/client/newsletters/activation_complete.html:26 +msgid "" +"Мы будем рады любым Вашим пожелания по улучшению нашей рассылки - можете " +"отправлять их на адрес evm@expomap.ru" +msgstr "" + +#: templates/client/newsletters/activation_send.html:10 +msgid "Проверьте почту" +msgstr "" + +#: templates/client/newsletters/activation_send.html:17 +msgid "" +"Мы работаем для настоящих и живых подписчиков! Поэтому подтвердите свой " +"email, письмо уже на Вашей почте!" +msgstr "" + +#: templates/client/newsletters/activation_subject.txt:2 +msgid "Подтвердите вашу подписку" +msgstr "" + +#: templates/client/newsletters/activation_template.html:43 +msgid "Ваша подписка на портале" +msgstr "" + +#: templates/client/newsletters/activation_template.html:57 +msgid "" +"Благодарим за подписку! Остался 1 шаг - подтвердить Ваш электронный адрес, " +"нажав на кнопку:" +msgstr "" + +#: templates/client/newsletters/activation_template.html:62 +msgid "подтвердить подписку" +msgstr "" + +#: templates/client/newsletters/subcribe.html:42 +msgid "Писковик деловых событий" +msgstr "" + +#: templates/client/newsletters/subcribe.html:47 +msgid "Анонсы выставок" +msgstr "" + +#: templates/client/newsletters/subcribe.html:47 +msgid "и конференций на ваш e-mail" +msgstr "" + +#: templates/client/newsletters/subcribe.html:48 +msgid "Хотите быть в курсе событий?" +msgstr "" + +#: templates/client/newsletters/subcribe.html:50 +msgid "" +"Получайте анонсы выставок и конференций на email каждую среду. Вы можете " +"выбрать несколько интересующих вас тематических направлений." +msgstr "" + +#: templates/client/newsletters/subcribe.html:50 +msgid "Пример письма" +msgstr "" + +#: templates/client/newsletters/subcribe.html:58 +#: templates/client/simple_pages/participation_landing.html:310 +msgid "Подписаться" +msgstr "" + +#: templates/client/newsletters/subcribe.html:68 +msgid "Выберите то, что вам интересно" +msgstr "" + +#: templates/client/newsletters/subcribe.html:69 +msgid "Ваши тематики:" +msgstr "" + +#: templates/client/newsletters/subcribe.html:105 +msgid "Открыть весь список" +msgstr "" + +#: templates/client/newsletters/subcribe.html:111 +msgid "Подписка на бесплатные учебные и практические материалы" +msgstr "" + +#: templates/client/newsletters/subcribe.html:121 +msgid "" +"Учимся эффективно участвовать в выставках и грамотно пиарить свою компанию " +"на событиях." +msgstr "" + +#: templates/client/newsletters/subcribe.html:130 +msgid "Создаем, наполняем и продвигаем собственные ивэнты." +msgstr "" + +#: templates/client/newsletters/subcribe.html:135 +msgid "ПОДПИСАТЬСЯ" +msgstr "" + +#: templates/client/newsletters/subcribe.html:136 +msgid "Нажимая «Подписаться», вы соглашаетесь получать" +msgstr "" + +#: templates/client/newsletters/subcribe.html:136 +msgid "материалы компании Expomap на свой электронный адрес" +msgstr "" + +#: templates/client/newsletters/subcribe.html:154 +#: templates/client/newsletters/subcribe.html:164 +msgid "Выберите тематику!" +msgstr "" + +#: templates/client/newsletters/unsubscribe_success.html:14 +msgid "Параметры вашей подписки изменены." +msgstr "" + +#: templates/client/newsletters/unsubscribe_success.html:21 +msgid "Вы успешно отписаны" +msgstr "" + +#: templates/client/newsletters/unsubscribe_success.html:29 +msgid "" +"Мы очень сожалеем, что потеряли такого ценного подписчика как Вы! =( Но " +"будем рады видеть Вас снова!" +msgstr "" + +#: templates/client/organiser/add_event.html:7 +#: templates/client/organiser/add_event.html:12 +#: templates/client/wizard/second_step.html:21 +#: templates/client/wizard/third_step.html:19 +msgid "Добавить событие" +msgstr "" + +#: templates/client/organiser/add_event.html:19 +#: templates/client/wizard/second_step.html:29 +#: templates/client/wizard/third_step.html:28 +msgid "Шаг 1. Основная информация" +msgstr "" + +#: templates/client/organiser/add_event.html:25 +msgid "Тип события:" +msgstr "" + +#: templates/client/organiser/add_event.html:29 +msgid "семинар" +msgstr "" + +#: templates/client/organiser/add_event.html:30 +msgid "вебинар" +msgstr "" + +#: templates/client/organiser/add_event.html:38 +msgid "Выберите тематику" +msgstr "" + +#: templates/client/organiser/add_event.html:56 +msgid "Выберете ключевые теги" +msgstr "" + +#: templates/client/organiser/add_event.html:71 +#: templates/client/wizard/first_step.html:34 +msgid "Описание выставки" +msgstr "" + +#: templates/client/organiser/add_event.html:90 +msgid "Даты проведения" +msgstr "" + +#: templates/client/organiser/add_event.html:131 +#: templates/client/wizard/first_step.html:111 +msgid "специалисты" +msgstr "" + +#: templates/client/organiser/add_event.html:132 +#: templates/client/wizard/first_step.html:112 +msgid "специалисты и потребители" +msgstr "" + +#: templates/client/organiser/add_event.html:133 +#: templates/client/wizard/first_step.html:113 +msgid "широкая публика" +msgstr "" + +#: templates/client/organiser/add_event.html:138 +msgid "Еженедельно" +msgstr "" + +#: templates/client/organiser/add_event.html:139 +msgid "2 раза в месяц" +msgstr "" + +#: templates/client/organiser/add_event.html:140 +msgid "Ежемесячно" +msgstr "" + +#: templates/client/organiser/add_event.html:150 +msgid "Российско-Британская торговая палата" +msgstr "" + +#: templates/client/organiser/add_event.html:151 +msgid "Ассоциация Европейского Бизнеса" +msgstr "" + +#: templates/client/organiser/add_event.html:152 +msgid "Российский союз выставок и ярмарок" +msgstr "" + +#: templates/client/organiser/add_event.html:153 +msgid "Американская торговая\tпалата" +msgstr "" + +#: templates/client/organiser/add_event.html:154 +msgid "UFI" +msgstr "" + +#: templates/client/organiser/add_event.html:160 wizard/forms.py:41 +msgid "Веб-сайт (необязательно)" +msgstr "" + +#: templates/client/organiser/add_event.html:180 +#: templates/client/organiser/add_event.html:200 +msgid "чч:мм" +msgstr "" + +#: templates/client/organiser/add_event.html:217 +msgid "Один график на все дни" +msgstr "" + +#: templates/client/organiser/add_event.html:229 +msgid "Не выбрано ни одного файла" +msgstr "" + +#: templates/client/organiser/add_event.html:238 +msgid "сохранить как черновик" +msgstr "" + +#: templates/client/organiser/add_event.html:241 +#: templates/client/organiser/add_event.html:273 +#: templates/client/organiser/add_event.html:564 +#: templates/client/wizard/third_step.html:88 +msgid "далее" +msgstr "" + +#: templates/client/organiser/add_event.html:249 +msgid "Шаг 2. Добавление фото" +msgstr "" + +#: templates/client/organiser/add_event.html:251 +#: templates/client/wizard/third_step.html:54 +msgid "+ 1,2 балла к рейтингу" +msgstr "" + +#: templates/client/organiser/add_event.html:260 wizard/forms.py:73 +msgid "выберите фотографии" +msgstr "" + +#: templates/client/organiser/add_event.html:263 +#: templates/client/organiser/add_event.html:559 +#: templates/client/wizard/second_step.html:236 +#: templates/client/wizard/third_step.html:74 +msgid "" +"более полная информация повышает рейтинг вашего мероприятия и позволяет " +"ранжировать его выше других" +msgstr "" + +#: templates/client/organiser/add_event.html:270 +msgid "пропустить этот ша" +msgstr "" + +#: templates/client/organiser/add_event.html:281 +msgid "Шаг 3. Статистика и условия участия тест" +msgstr "" + +#: templates/client/organiser/add_event.html:283 +#: templates/client/wizard/second_step.html:45 +msgid "+ 0,9 баллов к рейтингу" +msgstr "" + +#: templates/client/organiser/add_event.html:299 +msgid "Статистика за" +msgstr "" + +#: templates/client/organiser/add_event.html:304 +msgid "Выберите год" +msgstr "" + +#: templates/client/organiser/add_event.html:330 +#, fuzzy +msgid "Страны:" +msgstr "Страна" + +#: templates/client/organiser/add_event.html:335 +#: templates/client/organiser/add_event.html:365 +#: templates/client/popups/place.html:78 +msgid "Россия" +msgstr "" + +#: templates/client/organiser/add_event.html:338 +#: templates/client/organiser/add_event.html:370 +#: templates/client/popups/place.html:80 +msgid "Украина" +msgstr "" + +#: templates/client/organiser/add_event.html:341 +#: templates/client/organiser/add_event.html:375 +msgid "Беларусь" +msgstr "" + +#: templates/client/organiser/add_event.html:344 +#: templates/client/organiser/add_event.html:380 +msgid "Бельгия" +msgstr "" + +#: templates/client/organiser/add_event.html:347 +#: templates/client/organiser/add_event.html:385 +#: templates/client/popups/place.html:81 +msgid "Германия" +msgstr "" + +#: templates/client/organiser/add_event.html:350 +#: templates/client/organiser/add_event.html:390 +msgid "Франция" +msgstr "" + +#: templates/client/organiser/add_event.html:414 +msgid "добавить данные за другой период" +msgstr "" + +#: templates/client/organiser/add_event.html:430 +#: templates/client/organiser/add_event.html:440 +#: templates/client/organiser/add_event.html:456 +#: templates/client/organiser/add_event.html:466 +#: templates/client/organiser/add_event.html:485 +#: templates/client/organiser/add_event.html:495 +#: templates/client/organiser/add_event.html:505 +#: templates/client/organiser/add_event.html:527 +#: templates/client/wizard/second_step.html:88 +#: templates/client/wizard/second_step.html:97 +#: templates/client/wizard/second_step.html:118 +#: templates/client/wizard/second_step.html:127 +#: templates/client/wizard/second_step.html:162 +#: templates/client/wizard/second_step.html:171 +#: templates/client/wizard/second_step.html:198 +msgid "руб" +msgstr "" + +#: templates/client/organiser/add_event.html:473 +#: templates/client/wizard/second_step.html:135 +msgid "Регистрация на стойке" +msgstr "" + +#: templates/client/organiser/add_event.html:514 +#: templates/client/wizard/second_step.html:182 +msgid "Минимальная площадь:" +msgstr "" + +#: templates/client/organiser/add_event.html:522 +#: templates/client/wizard/second_step.html:193 +msgid "Регистрационный взнос:" +msgstr "" + +#: templates/client/organiser/add_event.html:536 +#: templates/client/wizard/second_step.html:208 +msgid "Крайний срок подачи заявки:" +msgstr "" + +#: templates/client/organiser/add_event.html:556 +#: templates/client/wizard/third_step.html:84 +msgid "пропустить этот шаг" +msgstr "" + +#: templates/client/password_reset/base.html:41 +msgid "Восстановить" +msgstr "" + +#: templates/client/photoreport/photoreport_catalog.html:25 +msgid "Ничего не найдено" +msgstr "" + +#: templates/client/popups/advertise.html:6 +#: templates/client/service/build_stand.html:67 +#: templates/client/service/catalog.html:67 +#: templates/client/service/participation.html:98 +#: templates/client/service/remotely.html:91 +#: templates/client/service/tickets.html:93 +#: templates/client/service/tour.html:199 +#: templates/client/service/translator.html:118 +#: templates/client/specialist_catalog/catalog_detailed.html:146 +msgid "Ваши контактные данные" +msgstr "" + +#: templates/client/popups/advertise.html:10 +msgid "" +"Оставьте свои контактные данные. В кратчайшие сроки мы с Вами свяжемся, " +"чтобы подобрать наиболее подходящие рекламные инструменты!" +msgstr "" + +#: templates/client/popups/advertise.html:30 +#: templates/client/simple_pages/advertising.html:122 +#: templates/client/simple_pages/advertising.html:144 +#: templates/client/simple_pages/advertising.html:164 +msgid "Заказать услугу" +msgstr "" + +#: templates/client/popups/advertise_member.html:9 +msgid "Вы хотите мотивировать участников прийти на конференцию?" +msgstr "" + +#: templates/client/popups/advertise_member.html:9 +msgid "Дайте визуальную информацию о спикерах на странице конференции на" +msgstr "" + +#: templates/client/popups/advertise_member.html:9 +msgid "" +"Это отличная возможность показать масштаб и качество Вашего мероприятия!" +msgstr "" + +#: templates/client/popups/advertise_member.html:10 +msgid "Оставьте свои контакты, и мы вышлем Вам информацию о вариантах и ценах!" +msgstr "" + +#: templates/client/popups/advertise_member.html:49 +msgid "Рекламировать" +msgstr "" + +#: templates/client/popups/announce_subscription.html:9 +msgid "Анонсы" +msgstr "" + +#: templates/client/popups/announce_subscription.html:9 +msgid "на ваш email" +msgstr "" + +#: templates/client/popups/announce_subscription.html:22 +msgid "" +"Более 40 000 профессионалов получают наши анонсы событий каждую " +"среду. Присоединяйтесь!" +msgstr "" + +#: templates/client/popups/announce_subscription.html:44 +msgid "Хочу быть в курсе" +msgstr "" + +#: templates/client/popups/announces.html:17 +msgid "Пример рассылки" +msgstr "" + +#: templates/client/popups/callback.html:6 +msgid "Обратный звонок" +msgstr "" + +#: templates/client/popups/callback.html:10 +msgid "" +"Вам удобнее, чтобы мы Вам позвонили? Укажите контактный номер телефона и " +"имя, и наши консультанты свяжутся с Вами." +msgstr "" + +#: templates/client/popups/callback.html:24 +#: templates/client/popups/issue_organizer.html:39 +#: templates/client/simple_pages/participation_landing.html:333 +msgid "Отправить запрос" +msgstr "" + +#: templates/client/popups/create_company.html:6 +msgid "Создание компании" +msgstr "" + +#: templates/client/popups/create_company.html:15 +msgid "например: Expomap" +msgstr "" + +#: templates/client/popups/create_company.html:24 +msgid "результат: expomap/members/url" +msgstr "" + +#: templates/client/popups/create_company.html:35 +msgid "Создать" +msgstr "" + +#: templates/client/popups/issue_organizer.html:6 +msgid "Вопрос организатору" +msgstr "" + +#: templates/client/popups/issue_organizer.html:11 +msgid "Оставьте свои контакты и вопрос, и мы направим его организатору" +msgstr "" + +#: templates/client/popups/login.html:5 +msgid "Вход в личный кабинет" +msgstr "" + +#: templates/client/popups/login.html:11 +msgid "Ваш адрес электронной почты" +msgstr "" + +#: templates/client/popups/login.html:17 +msgid "Ваш пароль" +msgstr "" + +#: templates/client/popups/login.html:19 +msgid "Напомнить пароль" +msgstr "" + +#: templates/client/popups/login.html:23 +msgid "войти" +msgstr "" + +#: templates/client/popups/login.html:24 +msgid "Запомнить" +msgstr "" + +#: templates/client/popups/login.html:27 +#: templates/client/popups/register.html:46 +#: templates/client/simple_pages/expo_seminar.html:81 +#: templates/client/simple_pages/expo_seminar.html:174 +msgid "Зарегистрироваться" +msgstr "" + +#: templates/client/popups/login.html:34 +#: templates/client/popups/register.html:54 +msgid "или войдите с помощью" +msgstr "" + +#: templates/client/popups/period.html:20 +#: templates/client/popups/place.html:93 templates/client/popups/theme.html:81 +msgid "Искать" +msgstr "" + +#: templates/client/popups/period.html:20 +#: templates/client/popups/theme.html:83 +msgid "Уточнить географию" +msgstr "" + +#: templates/client/popups/period.html:20 +#: templates/client/popups/place.html:95 +msgid "Уточнить тему" +msgstr "" + +#: templates/client/popups/place.html:74 +msgid "Быстрый выбор" +msgstr "" + +#: templates/client/popups/place.html:76 +msgid "Москва" +msgstr "" + +#: templates/client/popups/place.html:77 +msgid "Санкт-Петербург" +msgstr "" + +#: templates/client/popups/place.html:79 +msgid "Киев" +msgstr "" + +#: templates/client/popups/place.html:82 +msgid "Китай" +msgstr "" + +#: templates/client/popups/place.html:94 templates/client/popups/theme.html:82 +msgid "Очистить" +msgstr "" + +#: templates/client/popups/place.html:96 templates/client/popups/theme.html:84 +msgid "Уточнить дату" +msgstr "" + +#: templates/client/popups/place_type.html:5 +msgid "Тип места" +msgstr "" + +#: templates/client/popups/pswd_recovery.html:7 +msgid "Востановить пароль" +msgstr "" + +#: templates/client/popups/pswd_recovery.html:18 +msgid "Востановить" +msgstr "" + +#: templates/client/popups/reg_send.html:6 +msgid "Благодарим за регистрацию" +msgstr "" + +#: templates/client/popups/reg_send.html:10 +msgid "На указанный Вами e-mail отправлено письмо для подтверждения." +msgstr "" + +#: templates/client/popups/reg_send.html:11 +msgid "" +"Пожалуйста, перейдите по ссылке, указанной в письме, и завершите регистрацию!" +msgstr "" + +#: templates/client/popups/reg_send.html:12 +msgid "" +"Ссылка будет активна 3 дня. Если в течение этого времени Вы не " +"воспользуетесь ею, Ваши данные будут автоматически удалены." +msgstr "" + +#: templates/client/popups/reg_send.html:14 +msgid "Если Вы не получили письмо - обновите страницу либо нажмите" +msgstr "" + +#: templates/client/popups/reg_send.html:14 +msgid "здесь" +msgstr "" + +#: templates/client/popups/reg_send.html:14 +msgid "письмо будет выслано вновь." +msgstr "" + +#: templates/client/popups/register.html:15 +msgid "например, свое имя" +msgstr "" + +#: templates/client/popups/register.html:23 +msgid "например, свою фамилию" +msgstr "" + +#: templates/client/popups/register.html:30 +msgid "например, ivanova@mail.ru" +msgstr "" + +#: templates/client/popups/register.html:36 +#: templates/client/popups/register.html:42 +msgid "пароль должен иметь не меньше 6 символов" +msgstr "" + +#: templates/client/popups/register.html:48 +msgid "Ошибка" +msgstr "" + +#: templates/client/popups/user_information.html:8 +msgid "Завершите регистрацию" +msgstr "" + +#: templates/client/popups/user_information.html:108 +msgid "завершить регистрацию" +msgstr "" + +#: templates/client/search/search.html:4 +msgid "Search" +msgstr "" + +#: templates/client/search/search.html:18 +msgid "Results" +msgstr "" + +#: templates/client/search/search.html:25 +msgid "No results found." +msgstr "" + +#: templates/client/service/build_stand.html:13 +#: templates/client/service/build_stand.html:16 +#: templates/client/service/build_stand.html:25 +msgid "Строительство стенда" +msgstr "" + +#: templates/client/service/build_stand.html:25 +#: templates/client/service/translator.html:26 +msgid "на" +msgstr "" + +#: templates/client/service/build_stand.html:41 +#: templates/client/service/catalog.html:41 +msgid "Предлагаем Вам заказать печатный каталог выставки" +msgstr "" + +#: templates/client/service/build_stand.html:45 +#: templates/client/service/build_stand.html:51 +#: templates/client/service/catalog.html:45 +#: templates/client/service/catalog.html:51 +msgid "вся информация о выставке" +msgstr "" + +#: templates/client/service/build_stand.html:46 +#: templates/client/service/build_stand.html:52 +#: templates/client/service/catalog.html:46 +#: templates/client/service/catalog.html:52 +#: templates/client/service/tickets.html:43 +msgid "экономия времени" +msgstr "" + +#: templates/client/service/build_stand.html:47 +#: templates/client/service/build_stand.html:53 +#: templates/client/service/catalog.html:47 +#: templates/client/service/catalog.html:53 +msgid "все потенциальные контакты" +msgstr "" + +#: templates/client/service/build_stand.html:125 +#: templates/client/service/build_stand.html:149 +#: templates/client/service/catalog.html:125 +#: templates/client/service/catalog.html:149 +msgid "стоимость каталога" +msgstr "" + +#: templates/client/service/build_stand.html:134 +#: templates/client/service/build_stand.html:151 +#: templates/client/service/catalog.html:134 +#: templates/client/service/catalog.html:151 +#: templates/client/service/participation.html:179 +#: templates/client/service/tickets.html:162 +#: templates/client/service/tickets.html:180 +#: templates/client/service/translator.html:222 +#: templates/client/simple_pages/advertising_landing.html:411 +msgid "Сделать запрос" +msgstr "" + +#: templates/client/service/build_stand.html:138 +#: templates/client/service/build_stand.html:155 +#: templates/client/service/catalog.html:138 +#: templates/client/service/catalog.html:155 +msgid "" +"Стоимость каталога оплачивается c учетом доставки, которую обозначают " +"организаторы выставки (в среднем от 0 до 50 евро)." +msgstr "" + +#: templates/client/service/build_stand.html:172 +#: templates/client/service/catalog.html:172 +msgid "" +"

Внимание! Мы не можем гарантировать то, что все организаторы " +"предоставляют возможность заказа печатного каталога выставки. Получая Ваш " +"запрос, мы персонально связываемся с организатором конкретного события и " +"уточняем информацию об условиях приобретения. Только после этого мы " +"подтверждаем Вам возможность заказа.

" +msgstr "" + +#: templates/client/service/build_stand.html:182 +#: templates/client/service/build_stand.html:187 +#: templates/client/service/catalog.html:182 +#: templates/client/service/catalog.html:187 +#: templates/client/service/participation.html:286 +#: templates/client/service/remotely.html:269 +#: templates/client/service/tickets.html:284 +#: templates/client/service/translator.html:370 +msgid "Бизнес-тур «под ключ" +msgstr "" + +#: templates/client/service/build_stand.html:183 +#: templates/client/service/build_stand.html:188 +#: templates/client/service/catalog.html:183 +#: templates/client/service/catalog.html:188 +#: templates/client/service/participation.html:282 +#: templates/client/service/participation.html:287 +#: templates/client/service/remotely.html:266 +#: templates/client/service/remotely.html:270 +#: templates/client/service/tickets.html:280 +#: templates/client/service/tickets.html:285 +#: templates/client/service/tour.html:363 +#: templates/client/service/tour.html:368 +msgid "Устный переводчик" +msgstr "" + +#: templates/client/service/build_stand.html:184 +#: templates/client/service/build_stand.html:189 +#: templates/client/service/catalog.html:184 +#: templates/client/service/catalog.html:189 +#: templates/client/service/participation.html:14 +#: templates/client/service/participation.html:17 +#: templates/client/service/participation.html:24 +#: templates/client/service/remotely.html:272 +#: templates/client/service/tickets.html:282 +#: templates/client/service/tickets.html:287 +#: templates/client/service/tour.html:365 +#: templates/client/service/tour.html:370 +#: templates/client/service/translator.html:367 +#: templates/client/service/translator.html:372 +#: templates/client/simple_pages/participation_landing.html:48 +msgid "Участие в выставке" +msgstr "" + +#: templates/client/service/catalog.html:13 +#: templates/client/service/catalog.html:16 +#: templates/client/service/translator.html:14 +#: templates/client/service/translator.html:17 +msgid "Каталог" +msgstr "" + +#: templates/client/service/catalog.html:25 +msgid "Официальный каталог выставки" +msgstr "" + +#: templates/client/service/participation.html:38 +msgid "Увеличим эффективность Вашего участия в выставке" +msgstr "" + +#: templates/client/service/participation.html:38 +#, python-format +msgid "как минимум на 50%%" +msgstr "" + +#: templates/client/service/participation.html:42 +msgid "Мы поможем превратить посетителей стенда в клиентов" +msgstr "" + +#: templates/client/service/participation.html:43 +msgid "Мы удержим Вас от пустых трат" +msgstr "" + +#: templates/client/service/participation.html:44 +msgid "Мы посчитаем отдачу и покажем результаты в цифрах" +msgstr "" + +#: templates/client/service/participation.html:48 +msgid "Мы начнем привлекать Вам клиентов еще до выставки" +msgstr "" + +#: templates/client/service/participation.html:49 +msgid "Мы знаем тонкости и узкие места организации" +msgstr "" + +#: templates/client/service/participation.html:64 +msgid "Информация об экспоместе" +msgstr "" + +#: templates/client/service/participation.html:68 +msgid "Требуемая площадь" +msgstr "" + +#: templates/client/service/participation.html:77 +msgid "Вид площади" +msgstr "" + +#: templates/client/service/participation.html:170 +#: templates/client/service/remotely.html:166 +#: templates/client/service/remotely.html:186 +#: templates/client/service/translator.html:199 +#: templates/client/simple_pages/participation_landing.html:195 +#: templates/client/specialist_catalog/catalog_detailed.html:214 +msgid "отправить запрос" +msgstr "" + +#: templates/client/service/participation.html:187 +msgid "" +"Укажите в запросе исходную информацию о Ваших целях и задачах, и мы подберем" +msgstr "" + +#: templates/client/service/participation.html:188 +msgid "" +"которая будет им соответствовать. Далее мы свяжемся с организаторами, чтобы " +"уточнить наличие свободных площадей и цены, и вместе с Вами начнем создавать " +"концепцию Вашего участия.\" На \"Укажите в запросе исходную информацию о " +"Ваших целях и задачах, и мы проанализируем, насколько" +msgstr "" + +#: templates/client/service/participation.html:189 +msgid "" +"им соответствует. Далее мы свяжемся с организаторами, чтобы уточнить наличие " +"свободных площадей и цены, и вместе с Вами начнем создавать концепцию Вашего " +"участия." +msgstr "" + +#: templates/client/service/participation.html:193 +msgid "" +"Укажите в запросе исходную информацию о Ваших целях и задачах, и мы подберем " +"выставку которая будет им соответствовать. Далее мы свяжемся с " +"организаторами, чтобы уточнить наличие свободных площадей и цены, и вместе с " +"Вами начнем создавать концепцию Вашего участия." +msgstr "" + +#: templates/client/service/participation.html:216 +#: templates/client/service/remotely.html:200 +#: templates/client/service/tickets.html:213 +#: templates/client/service/tour.html:296 +#: templates/client/service/translator.html:300 +msgid "Отзывы клиентов" +msgstr "" + +#: templates/client/service/participation.html:236 +msgid "Волкова Елизавета" +msgstr "" + +#: templates/client/service/participation.html:239 +msgid "" +"Хочу поблагодарить команду маркетологов Expomap за организацию нашего " +"участия в выставке ТрансРоссия. Для нас это было чем-то новым, и благодаря " +"опыту ребят мы избежали большого количества проблем и решали все возникающие " +"вопросы очень оперативно. Если говорить о результатах работы на выставке, " +"то мы собрали за 4 дня более 300 рабочих контактов и запросов, часть из " +"которых выглядят очень перспективно. Мы сделали это вместе с Expomap и " +"хотим сказать спасибо за их идеи, глубокое погружение в наши задачи, " +"креативный подход и четкую помощь в реализации! Будем рады работать с вами и " +"в других проектах!" +msgstr "" + +#: templates/client/service/participation.html:267 +msgid "" +"Мы принимали участие со своим стендом в выставке Boot Duesseldorf в Германии " +"в январе 2014. Выражаем благодарность сотрудникам Expomap, а также " +"персональному консультанту Руслану Шапилову за оперативность, мы остались " +"довольны качеством оказанных услуг!" +msgstr "" + +#: templates/client/service/remotely.html:26 +msgid "Заочное посещение выставки" +msgstr "" + +#: templates/client/service/remotely.html:42 +msgid "" +"Услуга позволяет получить исчерпывающую информацию о выставке и ее " +"участниках, не выходя за пределы собственного офиса. Она особенно актуальна, " +"если вы по тем или иным причинам не можете лично присутствовать на выставке" +msgstr "" + +#: templates/client/service/remotely.html:44 +msgid "Как работает «Заочное посещение выставки»?" +msgstr "" + +#: templates/client/service/remotely.html:46 +msgid "По вашему запросу мы направим на выставку " +msgstr "" + +#: templates/client/service/remotely.html:46 +msgid "" +"собственного специалиста, который соберет для вас полный комплект документов " +"(буклеты, каталоги, cd, прайс-листы) по каждому участнику выставки, а также " +"приобретет ее официальный каталог. Дополнительно на каждом стенде выставки " +"мы можем оставить ваши визитки или другую информацию. Все материалы выставки " +"пересылаются к вам в офис сразу после ее окончания." +msgstr "" + +#: templates/client/service/remotely.html:48 +msgid "Преимущества услуги" +msgstr "" + +#: templates/client/service/remotely.html:51 +msgid "" +"Финансовая выгода - личное присутствие на одной выставке по затратам " +"эквивалентно заочному посещению 5 международных выставок" +msgstr "" + +#: templates/client/service/remotely.html:52 +msgid "Экономия времени и нервов" +msgstr "" + +#: templates/client/service/remotely.html:53 +msgid "" +"Возможность получить актуальную информацию даже в том случае, если у Вас нет " +"шансов посетить ее лично (упущение сроков, отказ в визе, параллельное " +"прохождения интересных Вам выставок в разных городах мира и др.)" +msgstr "" + +#: templates/client/service/remotely.html:67 +#: templates/client/service/tickets.html:60 +msgid "Информация о заказе" +msgstr "" + +#: templates/client/service/remotely.html:70 +msgid "Интересующие участники выставки" +msgstr "" + +#: templates/client/service/remotely.html:70 +msgid "(укажите продукцию или названия компаний)" +msgstr "" + +#: templates/client/service/remotely.html:77 +msgid "Дополнительно вы можете заказать" +msgstr "" + +#: templates/client/service/remotely.html:157 +#: templates/client/service/remotely.html:183 +msgid "Стоимость базового пакета услуги 400 €" +msgstr "" + +#: templates/client/service/remotely.html:181 +msgid "Стоимость базового пакета услуги 10 000 р." +msgstr "" + +#: templates/client/service/remotely.html:223 +msgid "" +"Остались очень довольны заочным посещением выставки Photokina — поехать " +"сами не смогли, но получили визитки нужных компаний. Большое cпасибо " +"сотрудникам за оперативность работы!" +msgstr "" + +#: templates/client/service/remotely.html:251 +msgid "" +"Особой оценки достойна оперативность предоставления услуг и их качество. " +"Хочу отметить профессионализм, организованность, добросовестность, " +"вежливость, грамотность сотрудников компании!" +msgstr "" + +#: templates/client/service/thank_u_page.html:8 +msgid "Ваша заявка успешно отправлена!" +msgstr "" + +#: templates/client/service/thank_u_page.html:19 +msgid "" +"

Благодарим Вас за использование сервиса ExpoMap.ru, мы очень ценим Ваше внимание и время.

" +msgstr "" + +#: templates/client/service/thank_u_page.html:20 +msgid "" +"В кратчайшие сроки наши консультанты свяжутся с Вами. Регламент ответа на " +"запрос -24 часа, в рабочие дни. Если по каким-либо причинам с Вами не " +"связались в указанный срок, или Вы недовольны обслуживанием, отправьте " +"короткое письмо с номером заявки на адрес evm@expomap.ru." +msgstr "" + +#: templates/client/service/thank_u_page.html:21 +msgid "" +"Также Вы можете позвонить нам для ускорения процесса, если Ваш запрос " +"является срочным." +msgstr "" + +#: templates/client/service/thank_u_page.html:26 +msgid "Что дальше Вы хотите делать?" +msgstr "" + +#: templates/client/service/thank_u_page.html:35 +msgid "Перейти к списку выставок по тематике" +msgstr "" + +#: templates/client/service/thank_u_page.html:58 +msgid "Вернуться к просмотру выставки" +msgstr "" + +#: templates/client/service/thank_u_page.html:69 +msgid "Перейти к списку ближайших выставок в городе" +msgstr "" + +#: templates/client/service/tickets.html:39 +msgid "Предлагаем Вам заранее заказать билеты на выставку" +msgstr "" + +#: templates/client/service/tickets.html:44 +msgid "нет очередей" +msgstr "" + +#: templates/client/service/tickets.html:45 +msgid "отчетные документы для бухгалтерии" +msgstr "" + +#: templates/client/service/tickets.html:64 +msgid "Количество дней посещения выставки" +msgstr "" + +#: templates/client/service/tickets.html:75 +#: templates/client/service/tour.html:81 +msgid "Количество человек" +msgstr "" + +#: templates/client/service/tickets.html:152 +#: templates/client/service/tickets.html:177 +msgid "Регистрация 2000 руб." +msgstr "" + +#: templates/client/service/tickets.html:153 +#: templates/client/service/tickets.html:178 +msgid "билет организатора" +msgstr "" + +#: templates/client/service/tickets.html:166 +msgid "" +"Стоимость билета, заявленная организатором, зависит от количества дней " +"посещения события, также может быть бесплатной" +msgstr "" + +#: templates/client/service/tickets.html:184 +msgid "" +"Стоимость билета, заявленная организатором, зависит от количества дней " +"посещения события, также может быть бесплатной" +msgstr "" + +#: templates/client/service/tickets.html:203 +msgid "" +"

Внимание! Мы не можем гарантировать то, что все организаторы " +"предоставляют возможность предварительной регистрации посетителей. Получая " +"ваш запрос, мы персонально связываемся с организаторами конкретного события " +"и уточняем информацию об условиях приобретения билетов. Только после этого " +"мы подтверждаем вам возможность.

" +msgstr "" + +#: templates/client/service/tickets.html:236 +msgid "" +"Мне понравилось работать с вашей компанией и в частности с Евгенией " +"Булавиной. Все быстро и предельно понятно. Большое спасибо!" +msgstr "" + +#: templates/client/service/tickets.html:264 +msgid "Спасибо Вам за Вашу работу. Все быстро и четко." +msgstr "" + +#: templates/client/service/tour.html:14 templates/client/service/tour.html:17 +#: templates/client/service/tour.html:25 +msgid "Посещение выставки" +msgstr "" + +#: templates/client/service/tour.html:41 +msgid "Посещение" +msgstr "" + +#: templates/client/service/tour.html:41 +msgid "" +"откроет для вас новые горизонты развития бизнеса, и мы готовы вам помочь с " +"этим! Организация любой деловой поездки представляет собой индивидуальный " +"тур, кропотливо подобранный под ваши конкретные пожелания" +msgstr "" + +#: templates/client/service/tour.html:43 +msgid "Сервис также включает ряд особенностей" +msgstr "" + +#: templates/client/service/tour.html:46 +msgid "" +"визовая поддержка оказывается только при бронировании отеля. На текущий " +"момент мы можем помочь с визой только клиентам из России (это связано с " +"правилами обработки анкет иностранными консульствами)" +msgstr "" + +#: templates/client/service/tour.html:47 +msgid "" +"бронирование отеля осуществляется не ниже 3*, так как мы должны быть " +"уверенными в Вашем комфортном размещении. Также Вам следует учесть, что " +"стоимость проживания в период крупных выставок значительно возрастает из-за " +"спроса (cправочно: для Европы в такие дни номер гостиницы 3-4* может стоить " +"от 150 евро/сутки). На цену размещения значительно влияет место расположения " +"отеля, в частности его близость/удаленность от центра или выставочного " +"комплекса" +msgstr "" + +#: templates/client/service/tour.html:48 +msgid "" +"индивидуальный бизнес-тур через туроператора, как правило, обходится дороже, " +"чем самостоятельный заказ через системы онлайн-бронирования (например, " +"отелей - Booking.com). Вы платите за индивидуальный сервис, гарантии и " +"консультационную поддержку до и во время Вашей поездки" +msgstr "" + +#: templates/client/service/tour.html:62 +msgid "Информация о бизнес-туре" +msgstr "" + +#: templates/client/service/tour.html:65 +msgid "Даты поездки" +msgstr "" + +#: templates/client/service/tour.html:88 +msgid "Условия размещения" +msgstr "" + +#: templates/client/service/tour.html:95 +msgid "Город отправления" +msgstr "" + +#: templates/client/service/tour.html:102 +msgid "Категория отеля" +msgstr "" + +#: templates/client/service/tour.html:113 +msgid "Расположение отеля" +msgstr "" + +#: templates/client/service/tour.html:121 +msgid "Примерный бюджет на отель" +msgstr "" + +#: templates/client/service/tour.html:130 +msgid "Дополнительные сервисы" +msgstr "" + +#: templates/client/service/tour.html:134 +msgid "Авиабилеты" +msgstr "" + +#: templates/client/service/tour.html:143 +msgid "Оформление визы" +msgstr "" + +#: templates/client/service/tour.html:144 +msgid "Трансфер" +msgstr "" + +#: templates/client/service/tour.html:145 +msgid "Билеты на выставку (приглашения)" +msgstr "" + +#: templates/client/service/tour.html:149 +#: templates/client/service/translator.html:26 +msgid "Услуги переводчика" +msgstr "" + +#: templates/client/service/tour.html:168 +msgid "Занятость" +msgstr "" + +#: templates/client/service/tour.html:170 +#: templates/client/service/translator.html:80 +#: templates/client/specialist_catalog/catalog_detailed.html:108 +msgid "дней" +msgstr "" + +#: templates/client/service/tour.html:174 +#: templates/client/service/translator.html:84 +#: templates/client/specialist_catalog/catalog_detailed.html:112 +msgid "часов в день" +msgstr "" + +#: templates/client/service/tour.html:181 +msgid "Экскурсионная программа" +msgstr "" + +#: templates/client/service/tour.html:187 +msgid "Пожелания" +msgstr "" + +#: templates/client/service/tour.html:272 +#: templates/client/service/tour.html:281 +msgid "Запрос туроператору" +msgstr "" + +#: templates/client/service/tour.html:319 +msgid "" +"Спасибо огромное данной компании (в частности, Евгении, с которой я " +"общалась). Девушка очень вежливая, отзывчивая. Я безумно ей благодарна за " +"помощь (а вопросов у меня была масса). Высококвалифицированный специалист. " +"Компания специалистов. Одни слова благодарности." +msgstr "" + +#: templates/client/service/tour.html:348 +msgid "" +"Очень нравится с Вами сотрудничать, так как всегда есть отклик на наши " +"требования. Разочарований не было. Спасибо за отличную работу!" +msgstr "" + +#: templates/client/service/translator.html:40 +msgid "Основные преимущества сотрудничества с нами" +msgstr "" + +#: templates/client/service/translator.html:43 +msgid "" +"оплата только за часы работы переводчика (никаких расходов на перелет, " +"проживание, питание и пр.)" +msgstr "" + +#: templates/client/service/translator.html:44 +msgid "знание местных языковых диалектов и обычаев ведения деловых переговоров" +msgstr "" + +#: templates/client/service/translator.html:45 +msgid "" +"отличная ориентация по выставочному комплексу, а также по городу прохождения " +"выставки" +msgstr "" + +#: templates/client/service/translator.html:61 +#: templates/client/specialist_catalog/catalog_detailed.html:89 +msgid "Информация о переводе" +msgstr "" + +#: templates/client/service/translator.html:89 +#: templates/client/specialist_catalog/catalog_detailed.html:117 +msgid "Даты работы" +msgstr "" + +#: templates/client/service/translator.html:227 +msgid "" +"Для получения подробной информации о стоимости услуг специализированного " +"переводчика, пожалуйста, отправьте предварительную заявку" +msgstr "" + +#: templates/client/service/translator.html:316 +#, fuzzy +msgid "Медицинская компания ЮНИКС" +msgstr "Описание компании" + +#: templates/client/service/translator.html:323 +msgid "" +"Мы, медицинская компания ЮНИКС, уже несколько лет обращаемся в компанию " +"Expomap за услугами переводчиков и переводчиков-гидов по всему миру. " +"Сотрудники компании всегда оперативно реагируют на запросы, очень " +"доброжелательны и приветливы, готовы идти навстречу. Качество работы " +"предоставляемых переводчиков всегда очень высокое, никаких нареканий по их " +"работе от наших сотрудников и клиентов не поступало, только положительные " +"отзывы. Надеемся на такое же приятное сотрудничество и в будущем!" +msgstr "" + +#: templates/client/service/translator.html:344 +msgid "ТоргХолодМаш" +msgstr "" + +#: templates/client/service/translator.html:351 +msgid "" +"Работу по организации переводчика оцениваю положительно. Скорость ответов и " +"работы была хорошей. В будущем воспользуюсь повторно услугами и порекомендую " +"партнерам. Ответственность переводчика и уровень был превосходным." +msgstr "" + +#: templates/client/simple_pages/about.html:14 +#: templates/client/simple_pages/about.html:44 +msgid "О нас" +msgstr "" + +#: templates/client/simple_pages/about.html:19 +msgid "Уважаемые клиенты, партнеры
и пользователи Expomap.Ru!" +msgstr "" + +#: templates/client/simple_pages/about.html:27 +msgid "" +"\n" +"\t\t\t\tМы сформировали штат консультантов, который с огромным " +"удовольствием делится своим опытом с Вами. Клиент, его настроение и\n" +"\t\t\t\tпотребности находятся в центре внимания работы наших консультантов, " +"мы отслеживаем уровень счастья наших клиентов и всегда готовы\n" +"\t\t\t\tсовершенствовать свой сервис!\n" +"\t\t\t\t" +msgstr "" + +#: templates/client/simple_pages/about.html:34 +#: templates/client/simple_pages/about.html:69 +msgid "" +"Мы сотрудничаем с более чем 500 организаторами деловых событий в " +"России и за рубежом. Также в нашу партнерскую сеть входят ведущие " +"тематические порталы Рунета, а также туроператоры, турагентства и рекламные " +"агентства." +msgstr "" + +#: templates/client/simple_pages/about.html:37 +msgid "" +"Мы всегда рады любым Вашим мнениям и пожеланиям - ведь то, что наша работа " +"востребована - лучшая похвала для нас и отличная мотивация для того, чтобы " +"стать еще удобнее, полезнее и эффективнее!" +msgstr "" + +#: templates/client/simple_pages/about.html:40 +msgid "" +"За почти 5 лет работы мы зарекомендовали себя как надежный партнер и " +"проводник в мире международных деловых событий. В нашей распределенной " +"команде специалисты различной квалификации: аналитики, переводчики, " +"стендисты, хостесс, промоутеры, которые работают по всему миру для наших " +"клиентов." +msgstr "" + +#: templates/client/simple_pages/about.html:45 +msgid "Команда" +msgstr "" + +#: templates/client/simple_pages/about.html:46 +msgid "Партнеры" +msgstr "" + +#: templates/client/simple_pages/about.html:47 +msgid "Контакты" +msgstr "" + +#: templates/client/simple_pages/about.html:48 +msgid "Отзывы" +msgstr "" + +#: templates/client/simple_pages/about.html:54 +msgid "Чем мы можем быть вам полезны?" +msgstr "" + +#: templates/client/simple_pages/about.html:55 +msgid "" +"Само название Expomap.Ru (Expo + Map) было выбрано неслучайно. Мы взяли на " +"себя роль Вашего навигатора в сфере деловых события и делаем все, чтобы " +"справляться с этой ролью максимально эффективно. Ежедневно мы:" +msgstr "" + +#: templates/client/simple_pages/about.html:57 +msgid "" +"освещаем деловые события со всего мира - различных тематик и " +"масштабов;" +msgstr "" + +#: templates/client/simple_pages/about.html:58 +msgid "консультируем Вас по вопросам их правильного подбора;" +msgstr "" + +#: templates/client/simple_pages/about.html:59 +msgid "выстраиваем вместе с Вами эффективную выставочную стратегию;" +msgstr "" + +#: templates/client/simple_pages/about.html:60 +msgid "" +"организуем Ваши поездки на выставки в качестве как посетителей, так и " +"участников," +msgstr "" + +#: templates/client/simple_pages/about.html:61 +msgid "устраняем языковые барьеры;" +msgstr "" + +#: templates/client/simple_pages/about.html:62 +msgid "" +"решаем многие другие вопросы, которые Вы ставите перед нами." +msgstr "" + +#: templates/client/simple_pages/about.html:64 +msgid "" +"Мы хорошо знаем зарубежные рынки, отлично ориентируемся в выставочных " +"центрах и всегда учитываем деловые обычаи каждой нации." +msgstr "" + +#: templates/client/simple_pages/about.html:65 +msgid "Чем мы гордимся!" +msgstr "" + +#: templates/client/simple_pages/about.html:66 +msgid "" +"За почти 5 лет работы мы зарекомендовали себя как надежный партнер и " +"проводник в мире международных деловых событий. В нашей распределенной " +"команде специалисты различной квалификации: аналитики, переводчики, " +"стендисты, хостесс, промоутеры, которые работают по всему миру для наших " +"клиентов." +msgstr "" + +#: templates/client/simple_pages/about.html:67 +msgid "" +"У нас создана собственная редакция, которая исходя из Ваших интересов " +"и пожеланий ежедневно отбирает самые интересные публикации из мира выставок " +"и конференций. Мы ведем cобственный профессиональный блог, активничаем в " +"социальных медиа" +msgstr "" + +#: templates/client/simple_pages/about.html:68 +msgid "" +"Мы сформировали штат консультантов, который с огромным удовольствием " +"делится своим опытом с Вами. Клиент, его настроение и потребности " +"находятся в центре внимания работы наших консультантов, мы отслеживаем " +"уровень счастья наших клиентов и всегда готовы совершенствовать свой сервис!" +msgstr "" + +#: templates/client/simple_pages/about.html:70 +msgid "" +"Изо дня в день мы стараемся быть самыми оперативными, информативными, " +"полезными и эффективными для Вас! " +msgstr "" + +#: templates/client/simple_pages/about.html:71 +msgid "" +"Я уверена, что познакомившись поближе с нашим ресурсом, Вы также полюбите " +"его и добавите в закладки. Мы всегда рады любым Вашим мнениям и пожеланиям " +"- ведь то, что наша работа востребована - лучшая похвала для нас и отличная " +"мотивация для того, чтобы стать еще удобнее, полезнее и эффективнее!" +msgstr "" + +#: templates/client/simple_pages/about.html:74 +msgid "С уважением и надеждой на сотрудничество" +msgstr "" + +#: templates/client/simple_pages/about.html:75 +#: templates/client/simple_pages/participation_landing.html:125 +msgid "Евгения Мануковская" +msgstr "" + +#: templates/client/simple_pages/about.html:85 +msgid "Евгения" +msgstr "" + +#: templates/client/simple_pages/about.html:85 +msgid "Мануковская" +msgstr "" + +#: templates/client/simple_pages/about.html:86 +msgid "руководитель,сооснователь " +msgstr "" + +#: templates/client/simple_pages/about.html:87 +msgid "Даже самое лучшее
может стать еще лучше" +msgstr "" + +#: templates/client/simple_pages/about.html:95 +msgid "Ольга
Мусатова" +msgstr "" + +#: templates/client/simple_pages/about.html:96 +#: templates/client/simple_pages/about.html:106 +#: templates/client/simple_pages/about.html:117 +msgid "ведущий консультант" +msgstr "" + +#: templates/client/simple_pages/about.html:97 +msgid "Главное внимание главным вещам" +msgstr "" + +#: templates/client/simple_pages/about.html:105 +msgid "Руслан
Шапилов" +msgstr "" + +#: templates/client/simple_pages/about.html:107 +msgid "Развиваться и получать удовольствие от жизни" +msgstr "" + +#: templates/client/simple_pages/about.html:116 +msgid "Евгения
Булавина" +msgstr "" + +#: templates/client/simple_pages/about.html:118 +msgid "Жить в настоящем - единственная возможность жить" +msgstr "" + +#: templates/client/simple_pages/about.html:127 +msgid "Валерия
Селезнева" +msgstr "" + +#: templates/client/simple_pages/about.html:128 +msgid "шеф-редактор" +msgstr "" + +#: templates/client/simple_pages/about.html:129 +msgid "Делай - где-то звякнет" +msgstr "" + +#: templates/client/simple_pages/about.html:138 +msgid "Светлана
Мурадян" +msgstr "" + +#: templates/client/simple_pages/about.html:139 +msgid "журналист" +msgstr "" + +#: templates/client/simple_pages/about.html:140 +msgid "Кто верит в свою удачу, удачлив" +msgstr "" + +#: templates/client/simple_pages/about.html:150 +msgid "Олег
Петров" +msgstr "" + +#: templates/client/simple_pages/about.html:151 +#: templates/client/simple_pages/about.html:162 +msgid "контент-менеджер" +msgstr "" + +#: templates/client/simple_pages/about.html:152 +msgid "Побеждает тот, кто побеждает себя" +msgstr "" + +#: templates/client/simple_pages/about.html:161 +msgid "Виктор
Трифонов" +msgstr "" + +#: templates/client/simple_pages/about.html:163 +msgid "Каждый день становиться чуть лучше" +msgstr "" + +#: templates/client/simple_pages/about.html:280 +msgid "заказать звонок" +msgstr "" + +#: templates/client/simple_pages/about.html:281 +msgid "Связь с дежурным менеджером в нерабочее время:" +msgstr "" + +#: templates/client/simple_pages/about.html:287 +msgid "Email по общим вопросам:" +msgstr "" + +#: templates/client/simple_pages/about.html:291 +msgid "Сотрудничество с событиями:" +msgstr "" + +#: templates/client/simple_pages/about.html:295 +msgid "Размещение рекламы:" +msgstr "" + +#: templates/client/simple_pages/about.html:303 +msgid "" +"Клиентский офис: бизнес-центр \"W-Plaza\", Варшавское ш, д.1, стр.1-2, " +"офис В-203" +msgstr "" + +#: templates/client/simple_pages/about.html:304 +msgid "" +"От м. Тульская: первый вагон из центра. Подняться по пешеходной лестнице " +"вверх вдоль съезда с третьего транспортного кольца (ТТК). На первом спуске " +"(слева) спуститься по лестнице к набережной и пройти под ТТК. Через въездные " +"ворота мимо шлагбаума пройти на территорию бизнес центра «W Plaza» в сторону " +"бело-коричневого здания. Центральный вход с противоположной от набережной " +"стороны здания. " +msgstr "" + +#: templates/client/simple_pages/about.html:317 +msgid "" +"Бэк-офис: Россия, 394019, Воронеж, ул. Холмистая, 56-Б, бизнес-центр " +"\"Корвет\", оф. 212 " +msgstr "" + +#: templates/client/simple_pages/advertising.html:10 +#: templates/client/simple_pages/advertising.html:15 +msgid "Реклама на сайте" +msgstr "" + +#: templates/client/simple_pages/advertising.html:21 +msgid "Рост аудитории Expomap 2009–2014 гг." +msgstr "" + +#: templates/client/simple_pages/advertising.html:40 +msgid "посещений в" +msgstr "" + +#: templates/client/simple_pages/advertising.html:40 +#: templates/client/simple_pages/advertising.html:85 +msgid "месяц" +msgstr "" + +#: templates/client/simple_pages/advertising.html:45 +msgid "целевых" +msgstr "" + +#: templates/client/simple_pages/advertising.html:45 +#: templates/client/simple_pages/advertising_landing.html:129 +msgid "просмотров" +msgstr "" + +#: templates/client/simple_pages/advertising.html:45 +msgid "вашей рекламы" +msgstr "" + +#: templates/client/simple_pages/advertising.html:85 +msgid "Посещений в" +msgstr "" + +#: templates/client/simple_pages/advertising.html:115 +msgid "" +"Вы можете таргетировать Вашу рекламу, привязывая ее показы к определенной " +"тематической отрасли (например, события в сфере строительства) или " +"географической зоне (например, выставки и конференции Москвы)." +msgstr "" + +#: templates/client/simple_pages/advertising.html:116 +msgid "" +"Возможные варианты размещения и размеры баннеров можно посмотреть на эскизе." +msgstr "" + +#: templates/client/simple_pages/advertising.html:121 +msgid "от" +msgstr "" + +#: templates/client/simple_pages/advertising.html:121 +#: templates/client/simple_pages/advertising.html:143 +#: templates/client/simple_pages/advertising.html:163 +msgid "руб." +msgstr "" + +#: templates/client/simple_pages/advertising.html:125 +msgid "за месяц размещения" +msgstr "" + +#: templates/client/simple_pages/advertising.html:128 +msgid "Скидки при длительном размещении, а также агентствам." +msgstr "" + +#: templates/client/simple_pages/advertising.html:138 +msgid "" +"Ваше событие всегда в Топе тематического календаря и выделено цветом — вне " +"зависимости от дат его проведения." +msgstr "" + +#: templates/client/simple_pages/advertising.html:147 +msgid "за месяц размещения в ТОП в 1 тематике" +msgstr "" + +#: templates/client/simple_pages/advertising.html:158 +msgid "" +"В связи с недавним появлением каталога, спешите занять первые места в " +"рубриках!" +msgstr "" + +#: templates/client/simple_pages/advertising.html:167 +msgid "за год за 1 тематический раздел" +msgstr "" + +#: templates/client/simple_pages/advertising.html:182 +msgid "Наша аудитория" +msgstr "" + +#: templates/client/simple_pages/advertising.html:184 +msgid "Маркетологи" +msgstr "" + +#: templates/client/simple_pages/advertising.html:185 +msgid "PR-специалисты" +msgstr "" + +#: templates/client/simple_pages/advertising.html:186 +msgid "Профильные специалисты" +msgstr "" + +#: templates/client/simple_pages/advertising.html:187 +msgid "Руководители департаментов" +msgstr "" + +#: templates/client/simple_pages/advertising.html:187 +msgid "(продажи, снабжение, маркетинг, PR и др.)" +msgstr "" + +#: templates/client/simple_pages/advertising.html:189 +msgid "Руководители компаний" +msgstr "" + +#: templates/client/simple_pages/advertising.html:190 +msgid "Собственники бизнеса" +msgstr "" + +#: templates/client/simple_pages/advertising.html:196 +msgid "Наши рекламодатели" +msgstr "" + +#: templates/client/simple_pages/advertising.html:199 +msgid "Организаторы мероприятий" +msgstr "" + +#: templates/client/simple_pages/advertising.html:200 +msgid "Туристические компании" +msgstr "" + +#: templates/client/simple_pages/advertising.html:201 +msgid "Гостиницы и системы бронирования" +msgstr "" + +#: templates/client/simple_pages/advertising.html:202 +msgid "Сервис-компании в сфере конгрессно-выставочного бизнеса" +msgstr "" + +#: templates/client/simple_pages/advertising.html:203 +msgid "Компании-производители" +msgstr "" + +#: templates/client/simple_pages/advertising.html:204 +msgid "Торговые компании" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:47 +msgid "" +"Хотите увеличить поток посетителей и участников на Ваши события? " +"Используйте аудиторию портала Expomap, самого посещаемого интернет-ресурса о " +"выставках и конференциях в России и СНГ!" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:59 +msgid "Качество и количество аудитории влияют на эффективность" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:72 +msgid "Портрет наших посетителей" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:79 +msgid "Посещаемость
в месяц:" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:86 +msgid "Просмотры страниц:" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:93 +msgid "Источники трафика:" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:103 +msgid "Средний возраст – 25-45 лет" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:104 +#, python-format +msgid "Пол – муж./жен. (48,5%%/51,5%%)" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:106 +msgid "Профессиональная деятельность:" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:106 +msgid "руководители, собственники," +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:107 +msgid "маркетологи, технические специалисты" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:110 +msgid "Интересы:" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:111 +msgid "бизнес, туризм, недвижимость," +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:112 +msgid "обустройство, финансы, здоровье" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:113 +msgid "и красота" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:119 +#: templates/client/simple_pages/advertising_landing.html:127 +msgid "более" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:121 +msgid "визитов" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:134 +msgid "Поисковые системы" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:135 +msgid "Прямые заходы" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:136 +msgid "Переходы с почтовых рассылок" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:137 +msgid "Сайты-партнеры" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:138 +msgid "Социальные сети" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:146 +msgid "по данным Яндекс Метрики за 1 – 29 февраля 2016 г." +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:153 +msgid "Рекламные инструменты бывают разные" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:155 +msgid "Медийная реклама" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:156 +msgid "Рассылки" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:157 +msgid "Имидж-страница события" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:158 +msgid "Приоритетная выдача в каталоге" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:159 +msgid "Реклама в социальных сетях" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:160 +msgid "Видеореклама на главной" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:161 +msgid "Размещение новостей-статей" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:162 +msgid "Спецпроекты" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:165 +msgid "Заказать продвижение события" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:171 +msgid "Как мы работаем с рекламодателями" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:181 +msgid "Получаем входящую" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:182 +msgid "информацию" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:186 +msgid "цели, задачи, аудитория, период," +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:186 +msgid "ограничения, бюджет" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:198 +msgid "Анализируем целевую" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:199 +msgid "аудиторию" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:203 +msgid "портрет, интересы, мотивация" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:215 +msgid "Составляем список" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:216 +msgid "инструментов и календарный" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:217 +msgid "план" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:221 +msgid "только подходящие инструменты" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:221 +msgid "для данной ЦА" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:233 +msgid "Согласовываем" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:234 +msgid "и утверждаем рекламную" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:235 +msgid "кампанию с организатором" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:247 +msgid "Делаем подробный отчет" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:248 +msgid "по итогам рекламной" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:249 +msgid "кампании" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:261 +msgid "Запускаем и контролируем" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:261 +msgid "кампанию, в случае" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:262 +msgid "необходимости заменяем" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:262 +msgid "инструменты" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:274 +msgid "Создаем эффективные" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:275 +msgid "рекламные носители" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:279 +msgid "сообщения, тексты, баннеры" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:280 +msgid "письма и др." +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:288 +#: templates/client/simple_pages/participation_landing.html:96 +msgid "Только индивидуальный и системный подход приносит результат!" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:291 +msgid "Запросить план продвижения" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:298 +msgid "Волнуетесь о бюджете?" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:300 +msgid "Мы всегда учитываем Ваши возможности и стараемся" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:301 +msgid "подобрать максимально работающие инструменты" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:302 +msgid "" +"под бюджет рекламодателя. Если есть возможность, мы с радостью дарим " +"подарки и бонусы!" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:305 +msgid "Ваш бюджет:" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:309 +msgid "12 000 – 20 000 руб." +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:313 +msgid "" +"Закажите имидж-страницу события и размещение в ТОП нужной Вам тематики, " +"чтобы перенаправить потенциальных участников и посетителей на Ваш сайт" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:321 +msgid "20 000 – 40 000 руб." +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:325 +msgid "" +"Используйте серию рассылок по подписчикам в совокупности с имиджевой " +"страницей и баннерной рекламой с таргетом на Вашу целевую аудиторию" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:333 +msgid "40 000 руб. и более" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:337 +#, python-format +msgid "" +"Создайте с нашим маркетологом персональный медиаплан на проект и " +"используйте любые рекламные инструменты со скидкой 35%%" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:350 +msgid "Если рекламодатели довольны, значит все было не зря!" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:351 +msgid "Что говорят про нас наши клиенты?" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:400 +msgid "Не знаете, как оценить эффективность?" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:402 +msgid "Почитайте нашу" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:403 +msgid "статью об измерении качества площадки" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:407 +msgid "Надеюсь, мы вас убедили?" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:409 +msgid "Тогда, пришлите запрос или же позвоните нам (499) 999 12 07!" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:427 +msgid "Отправить заявку" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:429 +msgid "Отправьте заявку и мы свяжемся с Вами" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:430 +msgid "удобным для Вас способом!" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:436 +#: templates/client/simple_pages/participation_landing.html:324 +#: templates/client/simple_pages/participation_landing.html:340 +msgid "Ваш телефон" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:438 +#: templates/client/simple_pages/participation_landing.html:327 +#: templates/client/simple_pages/participation_landing.html:343 +msgid "Ваше событие" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:439 +#: templates/client/simple_pages/expo_seminar.html:269 +#: templates/client/simple_pages/expo_seminar.html:310 +#: templates/client/simple_pages/participation_landing.html:328 +#: templates/client/simple_pages/participation_landing.html:344 +msgid "Отправить" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:446 +#: templates/client/simple_pages/participation_landing.html:349 +msgid "Спасибо!" +msgstr "" + +#: templates/client/simple_pages/advertising_landing.html:448 +#: templates/client/simple_pages/participation_landing.html:350 +msgid "Мы свяжемся с Вами ближайшее время!" +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:9 +msgid "" +"Продвижение мероприятий: как узнать, какая половина бюджета уходит впустую?" +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:67 +#, fuzzy +msgid "Наш телефон:" +msgstr "Контактный телефон" + +#: templates/client/simple_pages/expo_seminar.html:77 +msgid "" +"«Продвижение мероприятий: как узнать, какая половина бюджета уходит впустую?»" +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:79 +msgid "25 июня 2015г. 10:30-12:30 Москва, Digital October, пресс-центр" +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:80 +msgid "" +"

Только для партнеров выставочного портала Expomap
Участие бесплатное

" +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:91 +msgid "" +"Практический семинар для маркетологов, руководителей выставочных проектов, а " +"также специалистов, ответственных за привлечение участников и посетителей на " +"деловые события." +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:94 +msgid "" +"\n" +"\t\t\t\t

Я знаю, что половина моего рекламного\n" +"\t\t\t\t\tбюджета расходуется впустую, вот\n" +"\t\t\t\t\tтольно не знаю, какая именно.
\n" +"\t\t\t\t\tДжон Ванамейкер,
легендарный американский коммерсант

\n" +"\t\t\t" +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:108 +msgid "" +"В текущей конъюнктуре рынка грамотные компании не отказываются от рекламы и " +"маркетинга, а начинают считать эффект от каждого вложенного рубля. Они точно " +"знают, какая половина бюджета принесла клиентов, а от какой следует " +"отказаться. Именно такой подход позволяет не только сохранить или даже " +"увеличить количество участников и посетителей ваших событий, но и снизить " +"средние затраты на их привлечение." +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:110 +msgid "" +"Об этом мы и поговорим на семинаре вместе с практиками маркетинга Рунета." +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:111 +msgid "Программа мероприятия:" +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:115 +msgid "Регистрация участников. Приветственный кофе" +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:121 +msgid "Умные инструменты продвижения события: казнить нельзя, помиловать" +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:123 +msgid "Каналы привлечения участников и посетителей в Рунете" +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:124 +msgid "Построение эффективной коммуникации для каждого канала" +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:125 +msgid "Медиаплан маркетолога события в условиях ограниченности ресурсов" +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:131 +msgid "" +"
Евгения Мануковская
основатель Expomap" +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:145 +msgid "Способы отслеживания эффективности каналов" +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:147 +msgid "Настройка Google Tag Manager" +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:148 +msgid "Когоргный анализ графика" +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:149 +msgid "Обобщенные отчеты в Google Analytics" +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:155 +msgid "" +"
Екатерина Герасименко
Заместитель " +"генерального директора по маркетингу Venta research Lab
" +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:164 +msgid "Презентация партнерских программ Expomap для организаторов событий" +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:170 +#: templates/client/wizard/first_step.html:81 +msgid "Место проведения:" +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:171 +msgid "Пресс-центр Digital October Москва, Берсеневская набережная, 6, стр. 3" +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:172 +msgid "Посмотреть на карте" +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:177 +msgid "Есть вопросы?" +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:182 +msgid "" +"Оставьте свои контактные данные, и мы пришлем Вам личное приглашение на " +"семинар или же доступ к онлайн-трансляции." +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:184 +msgid "Спешите, количество мест ограничено!" +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:193 +msgid "И еще 5 причин для того, чтобы прийти:" +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:197 +msgid "" +"
Практические инструменты
и рекомендации по успешному " +"продвижению
" +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:200 +msgid "Вкусный кофе и итальянские закуски" +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:203 +msgid "Подарки любимым партнерам" +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:206 +msgid "Скидки на рекламу Expomap" +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:209 +msgid "Отличные возможности для нетворкинга" +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:216 +msgid "Зарегистрируйтесь бесплатно!" +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:220 +msgid "ХОЧУ ПОПАСТЬ НА СЕМИНАР ЛИЧНО" +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:223 +msgid "ХОЧУ СМОТРЕТЬ ОНЛАЙН-ТРАНСЛЯЦИЮ" +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:238 +msgid "Запрос на приглашение на семинар" +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:244 +#: templates/client/simple_pages/expo_seminar.html:285 +msgid "Поля, выделенные красным — обязательны для заполнения." +msgstr "" + +#: templates/client/simple_pages/expo_seminar.html:279 +msgid "Запрос на онлайн-трансляцию" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:48 +msgid "амбициозный" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:48 +msgid "проект!" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:56 +msgid "7 ocновных" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:56 +msgid "факторов" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:57 +msgid "влияющих на успех или неудачу любого выставочного проекта" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:62 +msgid "Цели и причины участия" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:67 +msgid "Выбранная выставка" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:72 +msgid "Концепция и креатив" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:77 +msgid "Своевременная реализация рутины" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:82 +msgid "Маркетинг и активность участника" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:87 +msgid "Поведение на стенде" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:92 +msgid "Работа с полученными контактами" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:102 +msgid "Что" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:102 +msgid "делать?" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:106 +msgid "Решение 1." +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:107 +msgid "" +"Воспитать выставочного специалиста в своей компании." +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:108 +msgid "" +"Необходимо выделить хотя бы 1 человека, который в течение минимум 2-3 " +"месяцев будет заниматься подготовкой к выставке." +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:112 +msgid "Решение 2." +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:113 +msgid "Доверить реализацию проекта профессионалам." +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:115 +msgid "команда выставочных маркетологов" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:116 +msgid "" +"Мы сформировали штат консультантов, который с огромным удовольствием делится " +"своим опытом с Вами. Клиент, его настроение и потребности находятся в центре " +"внимания работы наших консультантов, мы отслеживаем уровень счастья наших " +"клиентов и всегда готовы совершенствовать свой сервис!" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:121 +msgid "Евгени
Булавина ведущий консультант
" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:125 +msgid "руководитель, сооснователь" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:134 +msgid "почему" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:134 +msgid "мы?" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:139 +msgid "Мы ориентируемся в выставках" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:140 +msgid "" +"Expomap - самый посещаемый интернет-ресурс о выставках по рейтингу Mail.ru" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:144 +msgid "Мы рубим в маркетинге!" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:145 +msgid "" +"Проведено несколько десятков рекламных проектов с крупнейшими " +"организаторами выставок" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:149 +msgid "Мы говорим на разных языках" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:150 +msgid "" +"Позвонить иностранному организатору? Проще простого! Кроме этого, мы " +"сотрудничаем с более чем 1000 переводчиками по всему миру" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:153 +msgid "Запросить презентацию услуги" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:159 +msgid "Этапы создания успешного" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:159 +msgid "выставочного проекта" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:164 +msgid "Подбор и анализ события, целей и задач участия" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:165 +msgid "" +"на этом этапе мы точно поймем, «стоит ли игра свеч» и нужно ли начинать " +"проект" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:169 +msgid "Разработка концепции участника" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:170 +msgid "" +"от расчета площади и выбора расположения и оформления стенда до точечных " +"коммуникаций" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:174 +msgid "Реализация организационной рутины" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:175 +msgid "от подачи заявки на участие до вывоза экспонатов" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:179 +msgid "Продвижение участника" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:180 +msgid "" +"не надо полностью полагаться только на организаторов выставки с их " +"маркетинговой компанией. Чем больше правильных коммуникаций, тем выше шансы " +"на успех!" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:184 +msgid "Подготовка стендистов и рабочей группы для работы на выставке" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:185 +msgid "" +"любой самый крутой концепт может быть испорчен работой стендистов. Кто, что " +"и как должен делать на стенде – мы позаботимся об этом" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:189 +msgid "Создание системы учета целевых контактов" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:190 +msgid "" +"как правильно вести учет посетителей стенда? Как и когда связываться с ними " +"после выставки?" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:196 +msgid "" +"И это далеко не все, что мы делаем. Полную презентацию о наших возможностях " +"мы готовы предоставить Вам по запросу!" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:204 +msgid "Отзывы клиентов" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:258 +msgid "Хотите воспитать своего выставочного специалиста?" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:259 +msgid "" +"Пройдите наши курсы по эффективному участию в онлайн-университете Нетологии!" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:262 +msgid "Создание концепции участия в выставке" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:270 +#: templates/client/simple_pages/participation_landing.html:282 +msgid "начать" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:274 +msgid "Реализация концепции участия в выставках" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:290 +msgid "БИБЛИОТЕКА СТАТЕЙ по эффективному участию" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:304 +msgid "ПОДПИШИТЕСЬ на ПОЛЕЗНЫЕ СТАТЬИ" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:305 +msgid "" +"Подпишитесь, чтобы получать полезные статьи, видео и презентации,
а также " +"афишу важных событий, скидки и подарки." +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:312 +#, python-format +msgid "Нас читают уже %(specialist_count)s специалиста!" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:317 +msgid "Запросить презентацию" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:318 +msgid "Отправьте заявку и мы пришлем Вам нашу презентацию!" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:334 +msgid "" +"Оставьте свои контакты, и мы оперативно свяжемся с Вами для обсуждения " +"деталей!" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:354 +msgid "Подтвердите email" +msgstr "" + +#: templates/client/simple_pages/participation_landing.html:355 +msgid "" +"Мы работаем для настоящих и живых подписчиков, поэтому проверьте почту и " +"перейдите по ссылке в отправленном Вам письме!" +msgstr "" + +#: templates/client/specialist_catalog/catalog_detailed.html:65 +msgid "Города, в которых мы предоставляем переводчиков:" +msgstr "" + +#: templates/client/specialist_catalog/catalog_detailed.html:230 +msgid "день" +msgstr "" + +#: templates/client/specialist_catalog/catalog_detailed.html:289 +msgid "Отзывы клиентов:" +msgstr "" + +#: templates/client/wizard/first_step.html:16 +#, python-format +msgid "Шаг %(step)s. Основная информация" +msgstr "" + +#: templates/client/wizard/first_step.html:57 +msgid "Даты проведения:" +msgstr "" + +#: templates/client/wizard/first_step.html:88 +#, fuzzy +msgid "Страна:" +msgstr "Страна" + +#: templates/client/wizard/first_step.html:93 +msgid "Город:" +msgstr "" + +#: templates/client/wizard/first_step.html:105 +msgid "Аудитория:" +msgstr "" + +#: templates/client/wizard/first_step.html:117 +msgid "Периодичность:" +msgstr "" + +#: templates/client/wizard/first_step.html:128 +msgid "Членства и знаки качества:" +msgstr "" + +#: templates/client/wizard/first_step.html:150 +msgid "Время работы:" +msgstr "" + +#: templates/client/wizard/first_step.html:171 +msgid "Логотип:" +msgstr "" + +#: templates/client/wizard/first_step.html:197 +#: templates/client/wizard/second_step.html:42 +#: templates/client/wizard/third_step.html:40 +msgid "Шаг 2. Статистика и условия участия" +msgstr "" + +#: templates/client/wizard/first_step.html:203 +#: templates/client/wizard/second_step.html:248 +#: templates/client/wizard/third_step.html:51 +msgid "Шаг 3. Добавление фото" +msgstr "" + +#: templates/client/wizard/second_step.html:241 +msgid "Дале" +msgstr "" + +#: templates/client/wizard/wizard.html:6 +#, python-format +msgid "Step %(step)s of %(count)s" +msgstr "" + +#: templates/client/wizard/wizard.html:20 +msgid "first step" +msgstr "" + +#: templates/client/wizard/wizard.html:21 +msgid "prev step" +msgstr "" + +#: templates/registration/acquire_email.html:4 +msgid "Email confirmation" +msgstr "" + +#: templates/registration/acquire_email.html:8 +msgid "Enter your email" +msgstr "" + +#: templates/registration/acquire_email.html:11 +#: templates/registration/login.html:11 +#: templates/registration/registration_form.html:9 +msgid "Please correct the errors below:" +msgstr "" + +#: templates/registration/acquire_email.html:16 +#: templates/registration/registration_form.html:31 +msgid "Email address:" +msgstr "" + +#: templates/registration/acquire_email.html:21 +msgid "Submit" +msgstr "" + +#: templates/registration/acquire_email.html:27 +msgid "" +"Please enter your valid email, to activate account we will send you an email " +"on this e-mail address" +msgstr "" + +#: templates/registration/activate.html:4 +msgid "Account activated" +msgstr "" + +#: templates/registration/activate.html:7 +msgid "Account activated." +msgstr "" + +#: templates/registration/activate.html:10 +msgid "" +"Thanks for signing up! Now you can
log in" +msgstr "" + +#: templates/registration/activate.html:12 +#, python-format +msgid "" +"Sorry, it didn't work. Either your activation link was incorrect, or the " +"activation key for your account has expired; activation keys are only valid " +"for %(days)s days after registration." +msgstr "" + +#: templates/registration/activation_complete.html:4 +msgid "Активация завершена" +msgstr "" + +#: templates/registration/activation_complete.html:15 +msgid "Поздравляем! Вы успешно прошли регистрацию!" +msgstr "" + +#: templates/registration/activation_email.html:43 +msgid "Ваша регистрация на портале" +msgstr "" + +#: templates/registration/activation_email.html:57 +msgid "" +"Благодарим за регистрацию! Остался 1 шаг - подтвердить Ваш электронный " +"адрес, нажав на кнопку:" +msgstr "" + +#: templates/registration/activation_email.html:62 +msgid "подтвердить регистрацию" +msgstr "" + +#: templates/registration/activation_email.html:67 +msgid "Ваш логин:" +msgstr "" + +#: templates/registration/activation_email.html:72 +msgid "" +"В личном кабинете вам доступен собственный профиль, персональная лента событий,свое расписание, " +"сообщения и многое другое." +msgstr "" + +#: templates/registration/activation_email_subject.txt:2 +msgid "Активируйте ваш" +msgstr "" + +#: templates/registration/activation_email_subject.txt:2 +msgid "акаунт - вы имеете" +msgstr "" + +#: templates/registration/activation_email_subject.txt:2 +msgid "дня" +msgstr "" + +#: templates/registration/base.html:11 +msgid "Tagging Exploration" +msgstr "" + +#: templates/registration/login.html:4 templates/registration/login.html:8 +#: templates/registration/password_reset_complete.html:14 +msgid "Log in" +msgstr "" + +#: templates/registration/login.html:16 +msgid "Username:" +msgstr "" + +#: templates/registration/login.html:18 +#: templates/registration/registration_form.html:38 +msgid "Password:" +msgstr "" + +#: templates/registration/login.html:26 +msgid "" +"If you don't have an account, you can sign " +"up for one." +msgstr "" + +#: templates/registration/logout.html:4 +msgid "Logged out" +msgstr "" + +#: templates/registration/logout.html:7 +msgid "You've been logged out." +msgstr "" + +#: templates/registration/logout.html:8 +msgid "" +"Thanks for stopping by; when you come back, don't forget to log in again." +msgstr "" + +#: templates/registration/password_change_done.html:4 +#: templates/registration/password_change_done.html:8 +msgid "Password change successful" +msgstr "" + +#: templates/registration/password_change_done.html:10 +msgid "Your password was changed." +msgstr "" + +#: templates/registration/password_change_form.html:5 +#: templates/registration/password_change_form.html:9 +msgid "Password change" +msgstr "" + +#: templates/registration/password_change_form.html:11 +msgid "" +"Please enter your old password, for security's sake, and then enter your new " +"password twice so we can verify you typed it in correctly." +msgstr "" + +#: templates/registration/password_change_form.html:16 +msgid "Old password:" +msgstr "" + +#: templates/registration/password_change_form.html:18 +#: templates/registration/password_reset_confirm.html:19 +msgid "New password:" +msgstr "" + +#: templates/registration/password_change_form.html:20 +#: templates/registration/password_reset_confirm.html:21 +msgid "Confirm password:" +msgstr "" + +#: templates/registration/password_change_form.html:22 +#: templates/registration/password_reset_confirm.html:22 +msgid "Change my password" +msgstr "" + +#: templates/registration/password_reset_complete.html:6 +#: templates/registration/password_reset_complete.html:10 +msgid "Password reset complete" +msgstr "" + +#: templates/registration/password_reset_complete.html:12 +msgid "Your password has been set. You may go ahead and log in now." +msgstr "" + +#: templates/registration/password_reset_confirm.html:6 +#: templates/registration/password_reset_form.html:6 +#: templates/registration/password_reset_form.html:10 +msgid "Password reset" +msgstr "" + +#: templates/registration/password_reset_confirm.html:12 +msgid "Enter new password" +msgstr "" + +#: templates/registration/password_reset_confirm.html:14 +msgid "" +"Please enter your new password twice so we can verify you typed it in " +"correctly." +msgstr "" + +#: templates/registration/password_reset_confirm.html:27 +msgid "Password reset unsuccessful" +msgstr "" + +#: templates/registration/password_reset_confirm.html:29 +msgid "" +"The password reset link was invalid, possibly because it has already been " +"used. Please request a new password reset." +msgstr "" + +#: templates/registration/password_reset_done.html:6 +#: templates/registration/password_reset_done.html:10 +msgid "Password reset successful" +msgstr "" + +#: templates/registration/password_reset_done.html:12 +msgid "" +"We've e-mailed you instructions for setting your password to the e-mail " +"address you submitted. You should be receiving it shortly." +msgstr "" + +#: templates/registration/password_reset_email.html:2 +msgid "You're receiving this e-mail because you requested a password reset" +msgstr "" + +#: templates/registration/password_reset_email.html:3 +#, python-format +msgid "for your user account at %(site_name)s" +msgstr "" + +#: templates/registration/password_reset_email.html:5 +msgid "Please go to the following page and choose a new password:" +msgstr "" + +#: templates/registration/password_reset_email.html:9 +msgid "Your username, in case you've forgotten:" +msgstr "" + +#: templates/registration/password_reset_email.html:11 +msgid "Thanks for using our site!" +msgstr "" + +#: templates/registration/password_reset_email.html:13 +#, python-format +msgid "The %(site_name)s team" +msgstr "" + +#: templates/registration/password_reset_form.html:12 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll e-mail " +"instructions for setting a new one." +msgstr "" + +#: templates/registration/password_reset_form.html:17 +msgid "E-mail address:" +msgstr "" + +#: templates/registration/password_reset_form.html:17 +msgid "Reset my password" +msgstr "" + +#: templates/registration/registration_complete.html:4 +#: templates/registration/social_registration_complete.html:4 +msgid "Registration complete" +msgstr "" + +#: templates/registration/registration_complete.html:7 +#: templates/registration/social_registration_complete.html:7 +msgid "Check your email" +msgstr "" + +#: templates/registration/registration_complete.html:8 +#: templates/registration/social_registration_complete.html:8 +msgid "" +"An activation link has been sent to the email address you supplied, along " +"with instructions for activating your account." +msgstr "" + +#: templates/registration/registration_form.html:4 +msgid "Sign up" +msgstr "" + +#: templates/registration/registration_form.html:12 +msgid "Create an account" +msgstr "" + +#: templates/registration/registration_form.html:17 +msgid "First name:" +msgstr "" + +#: templates/registration/registration_form.html:24 +msgid "Last name:" +msgstr "" + +#: templates/registration/registration_form.html:45 +msgid "Password (type again to catch typos):" +msgstr "" + +#: templates/registration/registration_form.html:57 +msgid "" +"Fill out the form to the left (all fields are required), and your account " +"will be created; you'll be sent an email with instructions on how to finish " +"your registration." +msgstr "" + +#: templates/registration/registration_form.html:59 +msgid "" +"We'll only use your email to send you signup instructions. We hate spam as " +"much as you do." +msgstr "" + +#: templates/registration/registration_form.html:61 +msgid "" +"This account will let you log into the ticket tracker, claim tickets, and be " +"exempt from spam filtering." +msgstr "" + +#: theme/models.py:31 +msgid "Тематики:" +msgstr "" + +#: theme/models.py:41 +msgid "Статья" +msgstr "" + +#: translator/forms.py:28 +msgid "Личный автомобиль" +msgstr "" + +#: translator/forms.py:29 +msgid "Дата рождения" +msgstr "" + +#: translator/forms.py:30 +msgid "Пол" +msgstr "" + +#: translator/forms.py:30 +msgid "Мужской" +msgstr "" + +#: translator/forms.py:30 +msgid "Женский" +msgstr "" + +#: translator/forms.py:51 +msgid "Цены" +msgstr "" + +#: translator/forms.py:53 +msgid "Скидки" +msgstr "" + +#: translator/forms.py:80 +msgid "У этого пользователя уже есть профиль переводчика" +msgstr "" + +#: webinar/forms.py:163 +msgid "Вебинар с таким названием уже существует" +msgstr "" + +#: wizard/forms.py:22 +#, fuzzy +msgid "Введите название выставки" +msgstr "Введите вашу фамилию" + +#: wizard/forms.py:25 wizard/forms.py:26 wizard/forms.py:65 +msgid "дд.мм.гг" +msgstr "" + +#: wizard/forms.py:54 wizard/forms.py:56 +msgid "на один день" +msgstr "" diff --git a/meta/forms.py b/meta/forms.py index fd3c009a..67fb7be2 100644 --- a/meta/forms.py +++ b/meta/forms.py @@ -6,10 +6,11 @@ from functions.translate import fill_with_signal from functions.admin_forms import AdminFilterForm from ckeditor.widgets import CKEditorWidget from hvad.forms import TranslatableModelForm +from django.utils.translation import ugettext as _ class MetaForm(forms.Form): - name = forms.CharField(label=u'Название страницы') + name = forms.CharField(label=_(u'Название страницы')) def __init__(self, *args, **kwargs): """ @@ -23,13 +24,13 @@ class MetaForm(forms.Form): # uses enumerate for detect iteration number # first iteration is a default lang so it required fields required = True if lid == 0 else False - self.fields['title_%s' % code] = forms.CharField(label=u'Title', required=required, + self.fields['title_%s' % code] = forms.CharField(label=_(u'Title'), required=required, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['description_%s' % code] = forms.CharField(label=u'Description', required=required, + self.fields['description_%s' % code] = forms.CharField(label=_(u'Description'), required=required, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['keywords_%s' % code] = forms.CharField(label=u'Keywords', required=False, + self.fields['keywords_%s' % code] = forms.CharField(label=_(u'Keywords'), required=False, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['h1_%s' % code] = forms.CharField(label=u'H1', required=False, + self.fields['h1_%s' % code] = forms.CharField(label=_(u'H1'), required=False, widget=forms.TextInput(attrs={'style':'width: 550px'})) def save(self, obj=None): diff --git a/meta/models.py b/meta/models.py index 7d167c34..d237a059 100644 --- a/meta/models.py +++ b/meta/models.py @@ -154,13 +154,13 @@ class SeoText(TranslatableModel): """ store seo data for specified urls """ - url = models.CharField(max_length=50, unique=True, verbose_name=u"URL: www.expomap.ru") + url = models.CharField(max_length=50, unique=True, verbose_name=_(u"URL: www.expomap.ru")) translations = TranslatedFields( - title=models.CharField(max_length=255, verbose_name=u"Заголовок"), - page_title=models.CharField(max_length=255, verbose_name=u"Тайтл страницы"), - description=models.CharField(max_length=1000, verbose_name=u"Дескрипшн"), - body=models.TextField(verbose_name=u"Текст") + title=models.CharField(max_length=255, verbose_name=_(u"Заголовок")), + page_title=models.CharField(max_length=255, verbose_name=_(u"Тайтл страницы")), + description=models.CharField(max_length=1000, verbose_name=_(u"Дескрипшн")), + body=models.TextField(verbose_name=_(u"Текст")) ) objects = SeoTextManager() @@ -205,4 +205,4 @@ class SeoText(TranslatableModel): return self.url -post_save.connect(post_save_handler, sender=MetaSetting) \ No newline at end of file +post_save.connect(post_save_handler, sender=MetaSetting) diff --git a/news/forms.py b/news/forms.py index 889400fb..42a6e08e 100644 --- a/news/forms.py +++ b/news/forms.py @@ -5,6 +5,7 @@ from django.contrib.contenttypes.models import ContentType from ckeditor.widgets import CKEditorWidget from django.core.exceptions import ValidationError from django.forms.util import ErrorList +from django.utils.translation import ugettext as _ #models and forms from models import News, TYPES from theme.models import Theme @@ -25,19 +26,19 @@ class NewsForm(forms.Form): save function saves data in News object. If it doesnt exist create new object """ - date = forms.DateField(label='Дата') - type = forms.ChoiceField(label='Тип новости', choices=[(item, item) for item in TYPES]) - paid = forms.BooleanField(label='Платная', required=False) + date = forms.DateField(label=_(u'Дата')) + type = forms.ChoiceField(label=_(u'Тип новости'), choices=[(item, item) for item in TYPES]) + paid = forms.BooleanField(label=_(u'Платная'), required=False) #relations - theme = forms.ModelMultipleChoiceField(label='Тематики', queryset=Theme.objects.all()) + theme = forms.ModelMultipleChoiceField(label=_(u'Тематики'), queryset=Theme.objects.all()) #creates select input with empty choices cause it will be filled with ajax - tag = forms.MultipleChoiceField(label='Теги', required=False) - user = forms.ModelChoiceField(label='Организатор', queryset=User.objects.exclude(organiser__isnull=True), + tag = forms.MultipleChoiceField(label=_(u'Теги'), required=False) + user = forms.ModelChoiceField(label=_(u'Организатор'), queryset=User.objects.exclude(organiser__isnull=True), empty_label=None) # - event = forms.ChoiceField(label='Тип события', choices=[(None, ''), ('conference.Conference', 'Конференция'), - ('exposition.Exposition', 'Выставка')], required=False) - event_id = forms.ChoiceField(label='Событие', choices=[(None,'')], required=False) + event = forms.ChoiceField(label=_(u'Тип события'), choices=[(None, ''), ('conference.Conference', _(u'Конференция')), + ('exposition.Exposition', _(u'Выставка'))], required=False) + event_id = forms.ChoiceField(label=_(u'Событие'), choices=[(None,'')], required=False) #field for comparing tmp files key = forms.CharField(required=False, widget=forms.HiddenInput()) @@ -53,16 +54,16 @@ class NewsForm(forms.Form): # uses enumerate for detect iteration number # first iteration is a default lang so it required fields required = True if lid == 0 else False - self.fields['main_title_%s' % code] = forms.CharField(label='Заголовок', required=required, + self.fields['main_title_%s' % code] = forms.CharField(label=_(u'Заголовок'), required=required, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['preview_%s' % code] = forms.CharField(label='Превью', required=required, widget=CKEditorWidget) - self.fields['description_%s' % code] = forms.CharField(label='Описание', required=required, widget=CKEditorWidget) + self.fields['preview_%s' % code] = forms.CharField(label=_(u'Превью'), required=required, widget=CKEditorWidget) + self.fields['description_%s' % code] = forms.CharField(label=_(u'Описание'), required=required, widget=CKEditorWidget) #meta data - self.fields['title_%s' % code] = forms.CharField(label='Тайтл', required=False, max_length=255, + self.fields['title_%s' % code] = forms.CharField(label=_(u'Тайтл'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['keywords_%s' % code] = forms.CharField(label='Дескрипшен', required=False, max_length=255, + self.fields['keywords_%s' % code] = forms.CharField(label=_(u'Дескрипшен'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['descriptions_%s' % code] = forms.CharField(label='Кейвордс', required=False, max_length=255, + self.fields['descriptions_%s' % code] = forms.CharField(label=_(u'Кейвордс'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) def save(self, id=None): @@ -124,7 +125,7 @@ class NewsForm(forms.Form): except: return main_title_ru - raise ValidationError('Новость с таким названием уже существует') + raise ValidationError(_(u'Новость с таким названием уже существует')) def clean(self): event_id = self.cleaned_data.get('event_id') diff --git a/news/models.py b/news/models.py index 96792e50..06398c36 100644 --- a/news/models.py +++ b/news/models.py @@ -4,6 +4,8 @@ from hvad.models import TranslatableModel, TranslatedFields, TranslationManager from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes import generic import copy +from django.utils.translation import ugettext as _ + #functions from functions.custom_fields import EnumField @@ -27,18 +29,18 @@ class News(TranslatableModel): object = generic.GenericForeignKey(content_type, object_id) url = models.SlugField(unique=True) - date = models.DateField(verbose_name='Дата') + date = models.DateField(verbose_name=_(u'Дата')) type = EnumField(values=TYPES) - theme = models.ManyToManyField('theme.Theme', verbose_name='Тема') - tag = models.ManyToManyField('theme.Tag', verbose_name='Теги', blank=True, null=True) - user = models.ForeignKey('accounts.User', verbose_name='Организатор', blank=True, null=True, + theme = models.ManyToManyField('theme.Theme', verbose_name=_(u'Тема')) + tag = models.ManyToManyField('theme.Tag', verbose_name=_(u'Теги'), blank=True, null=True) + user = models.ForeignKey('accounts.User', verbose_name=_(u'Организатор'), blank=True, null=True, on_delete=models.PROTECT) paid = models.BooleanField(default=0) - + translations = TranslatedFields( - main_title = models.CharField(verbose_name='Заголовок', max_length=255), - preview = models.TextField(verbose_name='Превью'), - description = models.TextField(verbose_name='Описание'), + main_title = models.CharField(verbose_name=_(u'Заголовок'), max_length=255), + preview = models.TextField(verbose_name=_(u'Превью')), + description = models.TextField(verbose_name=_(u'Описание')), #---meta data title = models.CharField(max_length=250, blank=True), descriptions = models.CharField(max_length=250, blank=True), @@ -95,4 +97,4 @@ class News(TranslatableModel): from django.db.models.signals import post_save from functions.signal_handlers import post_save_handler -post_save.connect(post_save_handler, sender=News) \ No newline at end of file +post_save.connect(post_save_handler, sender=News) diff --git a/organiser/forms.py b/organiser/forms.py index 48db9dec..ae5b165f 100644 --- a/organiser/forms.py +++ b/organiser/forms.py @@ -4,6 +4,7 @@ from django.conf import settings from ckeditor.widgets import CKEditorWidget from django.core.exceptions import ValidationError from django.core.validators import URLValidator +from django.utils.translation import ugettext as _ #models from models import Organiser from country.models import Country @@ -27,37 +28,37 @@ class OrganiserForm(forms.Form): save function saves data in Organiser object. If it doesnt exist create new object """ - url = forms.CharField(label='url', required=False) + url = forms.CharField(label=_(u'url'), required=False) #user = forms.ModelChoiceField(label='Пользователь', queryset=User.objects.all(), empty_label='',required=False) - country = forms.ChoiceField(label='Страна', choices=[(item.id, item.name) for item in Country.objects.all()]) - city = forms.CharField(label='Город', widget=forms.HiddenInput()) - theme = forms.MultipleChoiceField(label='Тематики', choices=[(item.id, item.name) for item in Theme.objects.language().all()]) - place_exposition = forms.MultipleChoiceField(label='Места проведения выставок', required=False, + country = forms.ChoiceField(label=_(u'Страна'), choices=[(item.id, item.name) for item in Country.objects.all()]) + city = forms.CharField(label=_(u'Город'), widget=forms.HiddenInput()) + theme = forms.MultipleChoiceField(label=_(u'Тематики'), choices=[(item.id, item.name) for item in Theme.objects.language().all()]) + place_exposition = forms.MultipleChoiceField(label=_(u'Места проведения выставок'), required=False, choices=[(item.id, item.name) for item in PlaceExposition.objects.language().all()]) - place_conference = forms.MultipleChoiceField(label='Места проведения конференций', required=False, + place_conference = forms.MultipleChoiceField(label=_(u'Места проведения конференций'), required=False, choices=[(item.id, item.name) for item in PlaceConference.objects.all()]) #creates select input with empty choices cause it will be filled with ajax - tag = forms.CharField(label='Теги', widget=forms.HiddenInput(), required=False) - logo = forms.ImageField(label='Logo', required=False) + tag = forms.CharField(label=_(u'Теги'), widget=forms.HiddenInput(), required=False) + logo = forms.ImageField(label=_(u'Logo'), required=False) - staff_number = forms.CharField(label='Количество сотрудников', required=False, - widget=forms.TextInput(attrs={'placeholder': 'Количество сотрудников'})) + staff_number = forms.CharField(label=_(u'Количество сотрудников'), required=False, + widget=forms.TextInput(attrs={'placeholder': _(u'Количество сотрудников')})) #uses locationwidget - address = forms.CharField(label='Адрес', required=False, widget=LocationWidget) - - phone = forms.CharField(label='Телефон', required=False, - widget=forms.TextInput(attrs={'placeholder': 'Введите телефон'})) - fax = forms.CharField(label='Факс', required=False, - widget=forms.TextInput(attrs={'placeholder': 'Введите факс'})) - web_page = forms.CharField(label='Веб-сайт', required=False, - widget=forms.TextInput(attrs={'placeholder': 'Введите адрес сайта'})) - email = forms.EmailField(label='Email', required=False, - widget=forms.TextInput(attrs={'placeholder': 'Введите email'})) - events_number = forms.CharField(label='Количество мероприятий в год', required=False, - widget=forms.TextInput(attrs={'placeholder': 'Количество'})) - foundation = forms.CharField(label='Год основания', required=False, - widget=forms.TextInput(attrs={'placeholder': 'Год основания'})) + address = forms.CharField(label=_(u'Адрес'), required=False, widget=LocationWidget) + + phone = forms.CharField(label=_(u'Телефон'), required=False, + widget=forms.TextInput(attrs={'placeholder': _(u'Введите телефон')})) + fax = forms.CharField(label=_(u'Факс'), required=False, + widget=forms.TextInput(attrs={'placeholder': _(u'Введите факс')})) + web_page = forms.CharField(label=_(u'Веб-сайт'), required=False, + widget=forms.TextInput(attrs={'placeholder': _(u'Введите адрес сайта')})) + email = forms.EmailField(label=_(u'Email'), required=False, + widget=forms.TextInput(attrs={'placeholder': _(u'Введите email')})) + events_number = forms.CharField(label=_(u'Количество мероприятий в год'), required=False, + widget=forms.TextInput(attrs={'placeholder': _(u'Количество')})) + foundation = forms.CharField(label=_(u'Год основания'), required=False, + widget=forms.TextInput(attrs={'placeholder': _(u'Год основания')})) def __init__(self, *args, **kwargs): """ @@ -71,20 +72,20 @@ class OrganiserForm(forms.Form): # uses enumerate for detect iteration number # first iteration is a default lang so it required fields required = True if lid == 0 else False - self.fields['name_%s' % code] = forms.CharField(label='Название', required=required) - self.fields['specialization_%s' % code] = forms.CharField(label='Специализация', required=False) - self.fields['description_%s' % code] = forms.CharField(label='Описание', + self.fields['name_%s' % code] = forms.CharField(label=_(u'Название'), required=required) + self.fields['specialization_%s' % code] = forms.CharField(label=_(u'Специализация'), required=False) + self.fields['description_%s' % code] = forms.CharField(label=_(u'Описание'), required=False, widget=CKEditorWidget) - self.fields['representation_%s' % code] = forms.CharField(label='Представительства', required=False, max_length=255, + self.fields['representation_%s' % code] = forms.CharField(label=_(u'Представительства'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['address_inf_%s' % code] = forms.CharField(label='Доп инф по адресу', + self.fields['address_inf_%s' % code] = forms.CharField(label=_(u'Доп инф по адресу'), required=False, widget=CKEditorWidget) #meta data - self.fields['title_%s' % code] = forms.CharField(label='Тайтл', required=False, max_length=255, + self.fields['title_%s' % code] = forms.CharField(label=_(u'Тайтл'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['keywords_%s' % code] = forms.CharField(label='Дескрипшен', required=False, max_length=255, + self.fields['keywords_%s' % code] = forms.CharField(label=_(u'Дескрипшен'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['descriptions_%s' % code] = forms.CharField(label='Кейвордс', required=False, max_length=255, + self.fields['descriptions_%s' % code] = forms.CharField(label=_(u'Кейвордс'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) @@ -215,7 +216,7 @@ class OrganiserForm(forms.Form): if phone.isdigit(): return phone else: - raise ValidationError('Введите правильный телефон') + raise ValidationError(_(u'Введите правильный телефон')) def clean_fax(self): """ @@ -234,8 +235,8 @@ class OrganiserForm(forms.Form): if fax.isdigit(): return fax else: - raise ValidationError('Введите правильный факс') + raise ValidationError(_(u'Введите правильный факс')) class OrganiserFilterForm(AdminFilterForm): - model = Organiser \ No newline at end of file + model = Organiser diff --git a/organiser/models.py b/organiser/models.py index ea4f748f..f4cc4ee6 100644 --- a/organiser/models.py +++ b/organiser/models.py @@ -34,39 +34,39 @@ class Organiser(TranslatableModel): url = models.SlugField(verbose_name='URL', blank=True, max_length=255) #relations - country = models.ForeignKey('country.Country', verbose_name='Страна', blank=True, null=True, + country = models.ForeignKey('country.Country', verbose_name=_(u'Страна'), blank=True, null=True, on_delete=models.PROTECT) - city = models.ForeignKey('city.City', verbose_name='Город', blank=True, null=True, + city = models.ForeignKey('city.City', verbose_name=_(u'Город'), blank=True, null=True, on_delete=models.PROTECT,) - theme = models.ManyToManyField('theme.Theme', verbose_name='Отрасль', blank=True, null=True) - tag = models.ManyToManyField('theme.Tag', verbose_name='Теги', blank=True, null=True) + theme = models.ManyToManyField('theme.Theme', verbose_name=_(u'Отрасль'), blank=True, null=True) + tag = models.ManyToManyField('theme.Tag', verbose_name=_(u'Теги'), blank=True, null=True) #address. uses LocationField. saves data in json format - address = LocationField(verbose_name='Адресс', blank=True, null=True) - logo = models.ImageField(verbose_name='Logo', upload_to=logo_name, blank=True) + address = LocationField(verbose_name=_(u'Адресс'), blank=True, null=True) + logo = models.ImageField(verbose_name=_(u'Logo'), upload_to=logo_name, blank=True) rating = models.IntegerField(default=0) - phone = models.BigIntegerField(verbose_name='Телефон', blank=True, null=True) - fax = models.BigIntegerField(verbose_name='Факс', blank=True, null=True) - web_page = models.CharField(verbose_name='Веб-сайт',max_length=255, blank=True) - email = models.EmailField(verbose_name='Email', blank=True) + phone = models.BigIntegerField(verbose_name=_(u'Телефон'), blank=True, null=True) + fax = models.BigIntegerField(verbose_name=_(u'Факс'), blank=True, null=True) + web_page = models.CharField(verbose_name=_(u'Веб-сайт'),max_length=255, blank=True) + email = models.EmailField(verbose_name=_(u'Email'), blank=True) facebook = models.URLField(verbose_name=_(u'Facebook'), blank=True) twitter = models.URLField(verbose_name=_(u'Twitter'), blank=True) linkedin = models.URLField(verbose_name=_(u'LinkedIn'), blank=True) vk = models.URLField(verbose_name=_(u'В контакте'), blank=True) - foundation = models.PositiveIntegerField(verbose_name='Год основания', blank=True, null=True) - events_number = models.PositiveIntegerField(verbose_name='Количество мероприятий', blank=True, null=True) - staff_number = models.PositiveIntegerField(verbose_name='Количество сотрудников', blank=True, null=True) + foundation = models.PositiveIntegerField(verbose_name=_(u'Год основания'), blank=True, null=True) + events_number = models.PositiveIntegerField(verbose_name=_(u'Количество мероприятий'), blank=True, null=True) + staff_number = models.PositiveIntegerField(verbose_name=_(u'Количество сотрудников'), blank=True, null=True) place_exposition = models.ManyToManyField('place_exposition.PlaceExposition', blank=True, null=True, related_name='organiser_place_exposition') place_conference = models.ManyToManyField('place_conference.PlaceConference', blank=True, null=True, related_name='organiser_place_conference') #translation fields translations = TranslatedFields( - name = models.CharField(verbose_name='Название', max_length=255, blank=True), - specialization = models.CharField(verbose_name='Специализация', max_length=255, blank=True), - description = models.TextField(verbose_name='Описание', blank=True), - representation = models.TextField(verbose_name='Представительства', blank=True), - address_inf = models.TextField(verbose_name='Доп инф по адресу', blank=True), + name = models.CharField(verbose_name=_(u'Название'), max_length=255, blank=True), + specialization = models.CharField(verbose_name=_(u'Специализация'), max_length=255, blank=True), + description = models.TextField(verbose_name=_(u'Описание'), blank=True), + representation = models.TextField(verbose_name=_(u'Представительства'), blank=True), + address_inf = models.TextField(verbose_name=_(u'Доп инф по адресу'), blank=True), #-----meta title = models.CharField(max_length=255, blank=True), descriptions = models.CharField(max_length=255, blank=True), @@ -81,4 +81,4 @@ class Organiser(TranslatableModel): return self.lazy_translation_getter('name', self.pk) -post_save.connect(post_save_handler, sender=Organiser) \ No newline at end of file +post_save.connect(post_save_handler, sender=Organiser) diff --git a/password_reset/templates/password_reset/recovery_email_expo.html b/password_reset/templates/password_reset/recovery_email_expo.html index cfcca57d..f4698e85 100644 --- a/password_reset/templates/password_reset/recovery_email_expo.html +++ b/password_reset/templates/password_reset/recovery_email_expo.html @@ -1,3 +1,4 @@ +{% load i18n %} @@ -16,15 +17,15 @@
- - + + @@ -23,8 +24,8 @@ - - + + {% endfor %} @@ -34,5 +35,5 @@ {# pagination #} {% include 'admin/includes/admin_pagination.html' with page_obj=object_list %} -Назад к управлению баннерами -{% endblock %} \ No newline at end of file +{% trans "Назад к управлению баннерами" %} +{% endblock %} diff --git a/templates/admin/includes/admin_nav.html b/templates/admin/includes/admin_nav.html index 93fa7992..12e39b8a 100644 --- a/templates/admin/includes/admin_nav.html +++ b/templates/admin/includes/admin_nav.html @@ -49,6 +49,7 @@
  • Управление услугами
  • Главная страница
  • Мета
  • +
  • Перевод
  • Импорт тематик
  • diff --git a/templates/client/404_test.html b/templates/client/404_test.html index bded0e78..d948197b 100644 --- a/templates/client/404_test.html +++ b/templates/client/404_test.html @@ -1,17 +1,18 @@ {% extends 'base_catalog.html' %} +{% load i18n %} {% block content_list %}
    -

    Запрашиваемая страница не найдена

    +

    {% trans "Запрашиваемая страница не найдена" %}

    404: -

    Возможно у нее изменился адрес или же она была удалена.
    Воспользуйтесь поиском по названию, расширенной формой поиска или каталогом событий.

    +

    {% trans "Возможно у нее изменился адрес или же она была удалена.
    Воспользуйтесь поиском по названию, расширенной формой поиска или каталогом событий." %}


    -

    Каталог выставок

    +

    {% trans "Каталог выставок" %}


    -

    Каталог конференций

    +

    {% trans "Каталог конференций" %}

    -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/templates/client/accounts/translators/translator_city.html b/templates/client/accounts/translators/translator_city.html index 78396929..c40db629 100644 --- a/templates/client/accounts/translators/translator_city.html +++ b/templates/client/accounts/translators/translator_city.html @@ -31,7 +31,7 @@
    -

    Компания Serve Businesses Worldwide предлагает Вам возможность заказать услуги русскоговорящих переводчиков со знанием английского языка практически непосредственно в Великобритании.

    +

    {% trans "Компания Serve Businesses Worldwide предлагает Вам возможность заказать услуги русскоговорящих переводчиков со знанием английского языка практически непосредственно в Великобритании." %}

    diff --git a/templates/client/accounts/translators/translator_country.html b/templates/client/accounts/translators/translator_country.html index a7f72a4d..90f10426 100644 --- a/templates/client/accounts/translators/translator_country.html +++ b/templates/client/accounts/translators/translator_country.html @@ -28,8 +28,8 @@
    -

    Компания Serve Businesses Worldwide предлагает Вам возможность заказать услуги русскоговорящих переводчиков со знанием английского языка практически непосредственно в Великобритании.

    -

    Ниже приведен список наиболее часто востребованных территориальных направлений для оказания услуг перевода в Великобритании. Приведенный перечень не является исчерпывающим, поэтому, если Вы не нашли нужный Вам город, обратитесь к нашим консультантам.

    +

    {% trans "Компания Serve Businesses Worldwide предлагает Вам возможность заказать услуги русскоговорящих переводчиков со знанием английского языка практически непосредственно в Великобритании." %}

    +

    {% trans "Ниже приведен список наиболее часто востребованных территориальных направлений для оказания услуг перевода в Великобритании. Приведенный перечень не является исчерпывающим, поэтому, если Вы не нашли нужный Вам город, обратитесь к нашим консультантам." %}


    {% if object.latitude and object.longitude %} @@ -134,4 +134,4 @@ -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/templates/client/accounts/translators/translator_profile.html b/templates/client/accounts/translators/translator_profile.html index 0c714b5f..4ae2ba02 100644 --- a/templates/client/accounts/translators/translator_profile.html +++ b/templates/client/accounts/translators/translator_profile.html @@ -35,7 +35,7 @@

    {{ object.get_full_name }}

    {{ object.translator.languages }}

    -

    {% ifequal object.translator.gender 'female' %}{% endifequal %}{{ object.translator.birth|how_many_years }} лет{% if object.translator.car %}Есть личный автомобиль

    {% endif %} +

    {% ifequal object.translator.gender 'female' %}{% endifequal %}{{ object.translator.birth|how_many_years }} лет{% if object.translator.car %}{% trans "Есть личный автомобиль" %}

    {% endif %}
    {% if object.profile.country %} @@ -56,4 +56,4 @@ {% endif %}
    -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/templates/client/article/article.html b/templates/client/article/article.html index 9b6050e9..516d0943 100644 --- a/templates/client/article/article.html +++ b/templates/client/article/article.html @@ -54,7 +54,7 @@ {% include 'includes/show_logo.html' with obj=blog %}

    {{ blog.main_title }}

    {{ blog.preview }}

    - {{ blog.publish_date|date:"d E Y" }}Евгения Булавина + {{ blog.publish_date|date:"d E Y" }}{% trans "Евгения Булавина" %} {% endfor %} diff --git a/templates/client/city/city.html b/templates/client/city/city.html index 6f66f219..ca5797a7 100644 --- a/templates/client/city/city.html +++ b/templates/client/city/city.html @@ -91,7 +91,7 @@ {% if object.description %}
    -

    Описание

    +

    {% trans "Описание" %}

    {{ object.description }}
    @@ -100,7 +100,7 @@ {% if object.get_photos %}
    -

    Фотогалерея

    +

    {% trans "Фотогалерея" %}

    {{ user.rating }}
    -

    Заполните свой
    профиль, чтобы
    повысить рейтинг

    -

    Чем выше
    рейтинг —
    тем больше
    преимуществ!

    + {% blocktrans %}

    Заполните свой
    профиль, чтобы
    повысить рейтинг

    {% endblocktrans %} + {% blocktrans %}

    Чем выше
    рейтинг —
    тем больше
    преимуществ!

    {% endblocktrans %}
    {# END avatar #} @@ -488,4 +488,4 @@ } }); -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/templates/client/includes/company/company_blocked.html b/templates/client/includes/company/company_blocked.html index 3683996a..51647a57 100644 --- a/templates/client/includes/company/company_blocked.html +++ b/templates/client/includes/company/company_blocked.html @@ -1,3 +1,4 @@ +{% load i18n %}
    diff --git a/templates/client/includes/company/company_edit.html b/templates/client/includes/company/company_edit.html index fe190731..9d7ea86c 100644 --- a/templates/client/includes/company/company_edit.html +++ b/templates/client/includes/company/company_edit.html @@ -117,11 +117,11 @@
    - +
    - закрыть + {% trans "закрыть" %}
    @@ -149,11 +149,11 @@
    - +
    - закрыть + {% trans "закрыть" %} @@ -428,7 +428,7 @@
    -
    Дополнительная информация
    +
    {% trans "Дополнительная информация" %}
    {% trans 'Добавить' %}{% trans 'Год основания' %}:
    @@ -532,7 +532,7 @@
    - Предварительный просмотр + {% trans "Предварительный просмотр" %} diff --git a/templates/client/includes/event_list.html b/templates/client/includes/event_list.html index 4420cf7f..f478270b 100644 --- a/templates/client/includes/event_list.html +++ b/templates/client/includes/event_list.html @@ -25,9 +25,9 @@
    {% if user.is_staff %} {% if obj.is_published %} -
    Активная
    +
    {% trans "Активная" %}
    {% else %} -
    Неактивная
    +
    {% trans "Неактивная" %}
    {% endif %} {% else %} @@ -108,4 +108,4 @@ {% endfor %} - \ No newline at end of file + diff --git a/templates/client/includes/exposition/expo_paid.html b/templates/client/includes/exposition/expo_paid.html index 845bde29..9715b7e8 100644 --- a/templates/client/includes/exposition/expo_paid.html +++ b/templates/client/includes/exposition/expo_paid.html @@ -258,7 +258,7 @@

    {% trans 'Участники' %}

    {% trans 'Привлекайте целевых посетителей на стенд' %}

    -

    Рекламировать участника

    +

    {% trans "Рекламировать участника" %}

    {% endif %} {% endwith %} diff --git a/templates/client/includes/exposition/exposition_object.html b/templates/client/includes/exposition/exposition_object.html index 29fae9d3..ba8f1947 100644 --- a/templates/client/includes/exposition/exposition_object.html +++ b/templates/client/includes/exposition/exposition_object.html @@ -290,7 +290,7 @@ {% if exposition.area %} {% else %} {% if exposition.members or exposition.visitors or exposition.foundation_year %} -

     Статистика

    +

     {% trans "Статистика" %}

    {% endif %} {% endif %} {% if exposition.members or exposition.visitors or exposition.foundation_year or exposition.area %} diff --git a/templates/client/includes/exposition/programm.html b/templates/client/includes/exposition/programm.html index c897b767..073ffd67 100644 --- a/templates/client/includes/exposition/programm.html +++ b/templates/client/includes/exposition/programm.html @@ -30,7 +30,7 @@
    {% if exposition.discount %} - Скидка -{{ exposition.discount }}% + {% trans "Скидка" %} -{{ exposition.discount }}%
    {{ exposition.discount_description|safe }}
    {% endif %}
    @@ -76,7 +76,7 @@ {% with days=exposition.get_timetables_days %} {% if days %}
    -

    Деловая программа

    +

    {% trans "Деловая программа" %}

    @@ -102,7 +102,7 @@
    {{ pr.name }}
    - {{ pr.programe|safe }}Организатор: {{ pr.speaker }} + {{ pr.programe|safe }}{% trans "Организатор" %}: {{ pr.speaker }}
    diff --git a/templates/client/newsletters/activation_complete.html b/templates/client/newsletters/activation_complete.html index 822d0d57..a3dfcd2b 100644 --- a/templates/client/newsletters/activation_complete.html +++ b/templates/client/newsletters/activation_complete.html @@ -13,17 +13,17 @@
    -

    Мы очень рады, что теперь каждую среду вместе с другими профессионалами бизнеса Вы будете получать анонсы из календаря событий Expomap. Важные выставки и конференции не останутся незамеченными!

    +

    {% trans "Мы очень рады, что теперь каждую среду вместе с другими профессионалами бизнеса Вы будете получать анонсы из календаря событий Expomap. Важные выставки и конференции не останутся незамеченными!" %}

    -

    Вы всегда можете изменить параметры своей подписки:

    +

    {% trans "Вы всегда можете изменить параметры своей подписки:" %}

      -
    • - добавить или изменить тематики;
    • -
    • - применить гео-фильтры (например, получать выставки только в г. Москва);
    • -
    • - изменить периодичность получения писем;
    • -
    • - отписаться! =(
    • +
    • {% trans "- добавить или изменить тематики;" %}
    • +
    • {% trans "- применить гео-фильтры (например, получать выставки только в г. Москва);" %}
    • +
    • {% trans "- изменить периодичность получения писем;" %}
    • +
    • {% trans "- отписаться! =(" %}
    -

    Мы будем рады любым Вашим пожелания по улучшению нашей рассылки - можете отправлять их на адрес evm@expomap.ru

    +

    {% trans "Мы будем рады любым Вашим пожелания по улучшению нашей рассылки - можете отправлять их на адрес evm@expomap.ru" %}

    diff --git a/templates/client/newsletters/activation_template.html b/templates/client/newsletters/activation_template.html index d19ff2e6..f70cce21 100644 --- a/templates/client/newsletters/activation_template.html +++ b/templates/client/newsletters/activation_template.html @@ -1,3 +1,4 @@ +{% load i18n %} @@ -16,15 +17,15 @@
    Чтобы отписаться от этой рассылки, перейдите по ссылке. + {% trans "Чтобы отписаться от этой рассылки, перейдите" %} {% trans "по ссылке" %}. © 2008 — 2015 Expomap.ru
      @@ -40,7 +41,7 @@ - + @@ -92,9 +93,9 @@ @@ -111,4 +112,4 @@

      Воостановление пароля на портале Expomap

      {% trans "Воостановление пароля на портале" %} Expomap

      @@ -49,27 +50,27 @@
      -

      Добрый день, {{ user.first_name }}!

      +

      {% trans "Добрый день" %}, {{ user.first_name }}!

      - Вы или кто-то еще сделал запрос на сброс пароля на сайте {{ domain }} + {% trans "Вы или кто-то еще сделал запрос на сброс пароля на сайте" %} {{ domain }}
      - Вы можете восстановить доступ, нажав на кнопку ниже и указав новый пароль: + {% trans "Вы можете восстановить доступ, нажав на кнопку ниже и указав новый пароль:" %}
      - востановить пароль + {% trans "востановить пароль" %}
      - Если вы не хотите сбрасывать пароль, просто проигнорируйте это сообщение + {% blocktrans %}Если вы не хотите сбрасывать пароль, просто проигнорируйте это сообщение{% endblocktrans %}
      - \ No newline at end of file + diff --git a/photologue/forms.py b/photologue/forms.py index 79bf4e7b..ce94d29e 100644 --- a/photologue/forms.py +++ b/photologue/forms.py @@ -3,6 +3,7 @@ from django import forms from django.conf import settings from functions.translate import fill_with_signal from models import Gallery, Photo +from django.utils.translation import ugettext as _ class GalleryForm(forms.Form): @@ -18,8 +19,8 @@ class GalleryForm(forms.Form): # uses enumerate for detect iteration number # first iteration is a default lang so it required fields required = True if lid == 0 else False - self.fields['title_%s' % code] = forms.CharField(label='Заголовок', required=required) - self.fields['description_%s' % code] = forms.CharField(label='Описание', required=False) + self.fields['title_%s' % code] = forms.CharField(label=_(u'Заголовок'), required=required) + self.fields['description_%s' % code] = forms.CharField(label=_(u'Описание'), required=False) def save(self, obj=None): data = self.cleaned_data @@ -34,8 +35,8 @@ class GalleryForm(forms.Form): class PhotoForm(forms.Form): - image = forms.ImageField(label=u'Изображение', required=False) - sort = forms.IntegerField(label=u'Позиция', initial=10, required=False) + image = forms.ImageField(label=_(u'Изображение'), required=False) + sort = forms.IntegerField(label=_(u'Позиция'), initial=10, required=False) def __init__(self, *args, **kwargs): """ @@ -49,8 +50,8 @@ class PhotoForm(forms.Form): # uses enumerate for detect iteration number # first iteration is a default lang so it required fields required = True if lid == 0 else False - self.fields['title_%s' % code] = forms.CharField(label='Описание', required=False) - self.fields['caption_%s' % code] = forms.CharField(label='Заголовок', required=required) + self.fields['title_%s' % code] = forms.CharField(label=_(u'Описание'), required=False) + self.fields['caption_%s' % code] = forms.CharField(label=_(u'Заголовок'), required=required) def save(self, obj=None): data = self.cleaned_data @@ -72,4 +73,4 @@ class PhotoForm(forms.Form): class GalleryPhotoForm(PhotoForm): def save(self, obj=None, gallery=None): photo = super(GalleryPhotoForm, self).save(obj) - gallery.add(photo) \ No newline at end of file + gallery.add(photo) diff --git a/photologue/migrations/0002_photosize_data.py b/photologue/migrations/0002_photosize_data.py index 7d98c44a..c7e06aea 100644 --- a/photologue/migrations/0002_photosize_data.py +++ b/photologue/migrations/0002_photosize_data.py @@ -1,4 +1,4 @@ -# encoding: utf8 +# -*- coding: utf-8 -*- from __future__ import unicode_literals from django.db import models, migrations diff --git a/photoreport/forms.py b/photoreport/forms.py index 5ddbd224..880b9cc2 100644 --- a/photoreport/forms.py +++ b/photoreport/forms.py @@ -9,6 +9,7 @@ from models import Photoreport from functions.form_check import translit_with_separator from functions.translate import fill_with_signal from functions.files import check_tmp_files +from django.utils.translation import ugettext as _ class PhotoreportForm(forms.Form): @@ -31,16 +32,16 @@ class PhotoreportForm(forms.Form): # uses enumerate for detect iteration number # first iteration is a default lang so it required fields required = True if lid == 0 else False - self.fields['name_%s' % code] = forms.CharField(label='Название', required=required) - self.fields['description_%s' % code] = forms.CharField(label='Описание', + self.fields['name_%s' % code] = forms.CharField(label=_(u'Название'), required=required) + self.fields['description_%s' % code] = forms.CharField(label=_(u'Описание'), required=False, widget=CKEditorWidget) #meta data - self.fields['title_%s' % code] = forms.CharField(label='Тайтл', required=False, max_length=255, + self.fields['title_%s' % code] = forms.CharField(label=_(u'Тайтл'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['keywords_%s' % code] = forms.CharField(label='Кейвордс', required=False, max_length=255, + self.fields['keywords_%s' % code] = forms.CharField(label=_(u'Кейвордс'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['descriptions_%s' % code] = forms.CharField(label='Дескрипшен', required=False, max_length=255, + self.fields['descriptions_%s' % code] = forms.CharField(label=_(u'Дескрипшен'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) def save(self, id=None): diff --git a/place_conference/forms.py b/place_conference/forms.py index f2e38aa5..91a03d53 100644 --- a/place_conference/forms.py +++ b/place_conference/forms.py @@ -15,7 +15,7 @@ from functions.files import check_tmp_files from functions.form_check import is_positive_integer, translit_with_separator from functions.custom_fields import LocationWidget from functions.admin_forms import AdminFilterForm - +from django.utils.translation import ugettext as _ class ConferenceForm(forms.Form): @@ -27,45 +27,45 @@ class ConferenceForm(forms.Form): save function saves data in PlaceConference object. If it doesnt exist create new object """ types = [(item1, item2) for item1, item2 in CONFERENCE_TYPE] - type = forms.ChoiceField(label='Краткое описание', required=False, choices=types) - logo = forms.ImageField(label='Logo', required=False, max_length=500) - country = forms.ModelChoiceField(label='Страна', queryset=Country.objects.all(), empty_label=None) + type = forms.ChoiceField(label=_(u'Краткое описание'), required=False, choices=types) + logo = forms.ImageField(label=_(u'Logo'), required=False, max_length=500) + country = forms.ModelChoiceField(label=_(u'Страна'), queryset=Country.objects.all(), empty_label=None) #creates select input with empty choices cause it will be filled with ajax - city = forms.CharField(label='Город', widget=forms.HiddenInput()) - - address = forms.CharField(label='Адресс', widget=LocationWidget, required=False) - foundation_year = forms.CharField(label='Год основания', required=False, - widget=forms.TextInput(attrs={'placeholder': 'Год основания'})) - phone = forms.CharField(label='Телефон', required=False, - widget=forms.TextInput(attrs={'placeholder': 'Введите телефон'})) - fax = forms.CharField(label='Факс', required=False, - widget=forms.TextInput(attrs={'placeholder': 'Введите факс'})) - web_page = forms.CharField(label='Веб-сайт', required=False, - widget=forms.TextInput(attrs={'placeholder': 'Введите адрес сайта'})) - email = forms.CharField(label='Email', required=False, - widget=forms.TextInput(attrs={'placeholder': 'Введите email'})) - total_capacity = forms.CharField(label='Общая вместимость', required=False, - widget=forms.TextInput(attrs={'placeholder': 'Общая вместимость'})) - amount_halls = forms.CharField(label='Количество залов', required=False, - widget=forms.TextInput(attrs={'placeholder': 'Количество залов'})) - video_link = forms.CharField(label='Видео', required=False, - widget=forms.TextInput(attrs={'placeholder': 'Введите ссылку на видео'})) + city = forms.CharField(label=_(u'Город'), widget=forms.HiddenInput()) + + address = forms.CharField(label=_(u'Адресс'), widget=LocationWidget, required=False) + foundation_year = forms.CharField(label=_(u'Год основания'), required=False, + widget=forms.TextInput(attrs={'placeholder': _(u'Год основания')})) + phone = forms.CharField(label=_(u'Телефон'), required=False, + widget=forms.TextInput(attrs={'placeholder': _(u'Введите телефон')})) + fax = forms.CharField(label=_(u'Факс'), required=False, + widget=forms.TextInput(attrs={'placeholder': _(u'Введите факс')})) + web_page = forms.CharField(label=_(u'Веб-сайт'), required=False, + widget=forms.TextInput(attrs={'placeholder': _(u'Введите адрес сайта')})) + email = forms.CharField(label=_(u'Email'), required=False, + widget=forms.TextInput(attrs={'placeholder': _(u'Введите email')})) + total_capacity = forms.CharField(label=_(u'Общая вместимость'), required=False, + widget=forms.TextInput(attrs={'placeholder': _(u'Общая вместимость')})) + amount_halls = forms.CharField(label=_(u'Количество залов'), required=False, + widget=forms.TextInput(attrs={'placeholder': _(u'Количество залов')})) + video_link = forms.CharField(label=_(u'Видео'), required=False, + widget=forms.TextInput(attrs={'placeholder': _(u'Введите ссылку на видео')})) #halls information - hall_name = forms.CharField(label='Название зала', required=False) - hall_number = forms.IntegerField(label='Номер зала', min_value=1, initial='1', required=False) - hall_capacity = forms.IntegerField(label='Вместимость зала', min_value='1', required=False) + hall_name = forms.CharField(label=_(u'Название зала'), required=False) + hall_number = forms.IntegerField(label=_(u'Номер зала'), min_value=1, initial='1', required=False) + hall_capacity = forms.IntegerField(label=_(u'Вместимость зала'), min_value='1', required=False) # - exposition_hall = forms.BooleanField(label='Выставочный зал', required=False)#14 - exp_hall_area = forms.CharField(label='Площадь выст. зала', required=False, - widget=forms.TextInput(attrs={'placeholder': 'Площадь выст. зала'}))#15 + exposition_hall = forms.BooleanField(label=_(u'Выставочный зал'), required=False)#14 + exp_hall_area = forms.CharField(label=_(u'Площадь выст. зала'), required=False, + widget=forms.TextInput(attrs={'placeholder': _(u'Площадь выст. зала')}))#15 # wifi = forms.BooleanField(label='Wi-fi', required=False) - multimedia_equipment = forms.BooleanField(label='Мультимедийное оборудование', required=False) - conference_call = forms.BooleanField(label='Конференц-связь', required=False) - translate_equipment = forms.BooleanField(label='Оборудование для синхронного перевода', required=False) - banquet_hall = forms.BooleanField(label='Банкетный зал', required=False) - catering = forms.BooleanField(label='Кейтеринг', required=False) - hotel = forms.BooleanField(label='Гостиница', required=False) + multimedia_equipment = forms.BooleanField(label=_(u'Мультимедийное оборудование'), required=False) + conference_call = forms.BooleanField(label=_(u'Конференц-связь'), required=False) + translate_equipment = forms.BooleanField(label=_(u'Оборудование для синхронного перевода'), required=False) + banquet_hall = forms.BooleanField(label=_(u'Банкетный зал'), required=False) + catering = forms.BooleanField(label=_(u'Кейтеринг'), required=False) + hotel = forms.BooleanField(label=_(u'Гостиница'), required=False) # key = forms.CharField(required=False, widget=forms.HiddenInput()) # @@ -83,20 +83,20 @@ class ConferenceForm(forms.Form): # using enumerate for detect iteration number # first iteration is a default lang so it required fields required = True if lid == 0 else False - self.fields['name_%s' % code] = forms.CharField(label='Название', required=required) # - self.fields['main_title_%s' % code] = forms.CharField(label='Краткое описание', required=False, widget=CKEditorWidget) - self.fields['description_%s' % code] = forms.CharField(label='Полное описание', required=False, widget=CKEditorWidget) - self.fields['adress_%s' % code] = forms.CharField(label='Дополнительная инф по адресу', required=False, max_length=255, + self.fields['name_%s' % code] = forms.CharField(label=_(u'Название'), required=required) # + self.fields['main_title_%s' % code] = forms.CharField(label=_(u'Краткое описание'), required=False, widget=CKEditorWidget) + self.fields['description_%s' % code] = forms.CharField(label=_(u'Полное описание'), required=False, widget=CKEditorWidget) + self.fields['adress_%s' % code] = forms.CharField(label=_(u'Дополнительная инф по адресу'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['total_year_action_%s' % code] = forms.CharField(label='Количество мероприятий в год', required=False, widget=CKEditorWidget) + self.fields['total_year_action_%s' % code] = forms.CharField(label=_(u'Количество мероприятий в год'), required=False, widget=CKEditorWidget) #meta data - self.fields['title_%s' % code] = forms.CharField(label='Тайтл', required=False, max_length=255, + self.fields['title_%s' % code] = forms.CharField(label=_(u'Тайтл'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['keywords_%s' % code] = forms.CharField(label='Дескрипшен', required=False, max_length=255, + self.fields['keywords_%s' % code] = forms.CharField(label=_(u'Дескрипшен'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['descriptions_%s' % code] = forms.CharField(label='Кейвордс', required=False, max_length=255, + self.fields['descriptions_%s' % code] = forms.CharField(label=_(u'Кейвордс'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['hall_capacity_%s' % code] = forms.CharField(label='Шаблон вместимости', + self.fields['hall_capacity_%s' % code] = forms.CharField(label=_(u'Шаблон вместимости'), widget=forms.TextInput(attrs={'style':'width: 550px'}), required=False) """ try: @@ -226,7 +226,7 @@ class ConferenceForm(forms.Form): if phone.isdigit(): return phone else: - raise ValidationError('Введите правильный телефон') + raise ValidationError(_(u'Введите правильный телефон')) def clean_fax(self): """ @@ -245,7 +245,7 @@ class ConferenceForm(forms.Form): if fax.isdigit(): return fax else: - raise ValidationError('Введите правильный факс') + raise ValidationError(_(u'Введите правильный факс')) def clean_total_capacity(self): """ @@ -325,4 +325,4 @@ class PlaceConferenceFilterForm(AdminFilterForm): if country: qs = qs.filter(country_id__in=country) - return qs \ No newline at end of file + return qs diff --git a/place_exposition/forms.py b/place_exposition/forms.py index c9b6cd6e..da4eb7e3 100644 --- a/place_exposition/forms.py +++ b/place_exposition/forms.py @@ -15,6 +15,7 @@ from functions.files import check_tmp_files from functions.form_check import is_positive_integer, translit_with_separator from functions.custom_fields import LocationWidget from functions.admin_forms import AdminFilterForm +from django.utils.translation import ugettext as _ class ExpositionForm(forms.Form): @@ -27,48 +28,48 @@ class ExpositionForm(forms.Form): """ types = [(item1, item2) for item1, item2 in EXPOSITION_TYPE] type = forms.ChoiceField(required=False, choices=types) - logo = forms.ImageField(label='Logo', required=False, max_length=500) + logo = forms.ImageField(label=_(u'Logo'), required=False, max_length=500) - country = forms.ChoiceField(label='Страна', choices=[(c.id, c.name) for c in Country.objects.all()]) + country = forms.ChoiceField(label=_(u'Страна'), choices=[(c.id, c.name) for c in Country.objects.all()]) # creates select input with empty choices cause it will be filled with ajax - city = forms.CharField(label='Город', widget=forms.HiddenInput()) - - address = forms.CharField(label='Адрес', widget=LocationWidget, required=False) - - phone = forms.CharField(label='Телефон', required=False, - widget=forms.TextInput(attrs={'placeholder': 'Введите телефон'})) - fax = forms.CharField(label='Факс', required=False, - widget=forms.TextInput(attrs={'placeholder': 'Введите факс'})) - web_page = forms.URLField(label='Веб-сайт', required=False, - widget=forms.TextInput(attrs={'placeholder': 'Введите адрес сайта'}))# - email = forms.EmailField(label='Email', required=False, - widget=forms.TextInput(attrs={'placeholder': 'Введите email'}))# + city = forms.CharField(label=_(u'Город'), widget=forms.HiddenInput()) + + address = forms.CharField(label=_(u'Адрес'), widget=LocationWidget, required=False) + + phone = forms.CharField(label=_(u'Телефон'), required=False, + widget=forms.TextInput(attrs={'placeholder': _(u'Введите телефон')})) + fax = forms.CharField(label=_(u'Факс'), required=False, + widget=forms.TextInput(attrs={'placeholder': _(u'Введите факс')})) + web_page = forms.URLField(label=_(u'Веб-сайт'), required=False, + widget=forms.TextInput(attrs={'placeholder': _(u'Введите адрес сайта')}))# + email = forms.EmailField(label=_(u'Email'), required=False, + widget=forms.TextInput(attrs={'placeholder': _(u'Введите email')}))# # - foundation_year = forms.CharField(label='Год основания', required=False, - widget=forms.TextInput(attrs={'placeholder': 'Год основания'})) + foundation_year = forms.CharField(label=_(u'Год основания'), required=False, + widget=forms.TextInput(attrs={'placeholder': _(u'Год основания')})) total_area = forms.CharField(label='Общая выставочная площадь', required=False, - widget=forms.TextInput(attrs={'placeholder': 'Общая выст. площадь'})) - closed_area = forms.CharField(label='Закрытая выставочная площадь', required=False, - widget=forms.TextInput(attrs={'placeholder': 'Закр. выст. площадь'})) - open_area = forms.CharField(label='Открытая выставочная площадь', required=False, - widget=forms.TextInput(attrs={'placeholder': 'Откр. выст. площадь'})) - total_pavilions = forms.CharField(label='Количество павильонов', required=False, - widget=forms.TextInput(attrs={'placeholder': 'Количество павильонов'})) - total_halls = forms.CharField(label='Количество конференц залов', required=False, - widget=forms.TextInput(attrs={'placeholder': 'Конференц залы'})) + widget=forms.TextInput(attrs={'placeholder': _(u'Общая выст. площадь')})) + closed_area = forms.CharField(label=_(u'Закрытая выставочная площадь'), required=False, + widget=forms.TextInput(attrs={'placeholder': _(u'Закр. выст. площадь')})) + open_area = forms.CharField(label=_(u'Открытая выставочная площадь'), required=False, + widget=forms.TextInput(attrs={'placeholder': _(u'Откр. выст. площадь')})) + total_pavilions = forms.CharField(label=_(u'Количество павильонов'), required=False, + widget=forms.TextInput(attrs={'placeholder': _(u'Количество павильонов')})) + total_halls = forms.CharField(label=_(u'Количество конференц залов'), required=False, + widget=forms.TextInput(attrs={'placeholder': _(u'Конференц залы')})) # wifi = forms.BooleanField(label='Wi-fi', required=False) - bank = forms.BooleanField(label='Банк/Банкоматы', required=False) - children_room = forms.BooleanField(label='Детская комната', required=False) - disabled_service = forms.BooleanField(label='Сервис для инвалидов', required=False) - conference_centre = forms.BooleanField(label='Конгресс-центр', required=False) - business_centre = forms.BooleanField(label='Бизнес-центр', required=False) - online_registration = forms.BooleanField(label='Онлайн регистрация', required=False) - cafe = forms.BooleanField(label='Кафе', required=False) - terminals = forms.BooleanField(label='Информационные терминалы', required=False) - parking = forms.BooleanField(label='Парковка', required=False) - press_centre = forms.BooleanField(label='Пресс-центр', required=False) - mobile_application = forms.BooleanField(label='Мобильное приложение', required=False) + bank = forms.BooleanField(label=_(u'Банк/Банкоматы'), required=False) + children_room = forms.BooleanField(label=_(u'Детская комната'), required=False) + disabled_service = forms.BooleanField(label=_(u'Сервис для инвалидов'), required=False) + conference_centre = forms.BooleanField(label=_(u'Конгресс-центр'), required=False) + business_centre = forms.BooleanField(label=_(u'Бизнес-центр'), required=False) + online_registration = forms.BooleanField(label=_(u'Онлайн регистрация'), required=False) + cafe = forms.BooleanField(label=_(u'Кафе'), required=False) + terminals = forms.BooleanField(label=_(u'Информационные терминалы'), required=False) + parking = forms.BooleanField(label=_(u'Парковка'), required=False) + press_centre = forms.BooleanField(label=_(u'Пресс-центр'), required=False) + mobile_application = forms.BooleanField(label=_(u'Мобильное приложение'), required=False) def __init__(self, *args, **kwargs): """ @@ -82,19 +83,19 @@ class ExpositionForm(forms.Form): # using enumerate for detect iteration number # first iteration is a default lang so it required fields required = True if lid == 0 else False - self.fields['name_%s' % code] = forms.CharField(label='Название', required=required) - self.fields['main_title_%s' % code] = forms.CharField(label='Краткое описание', required=False, widget=CKEditorWidget)#5 - self.fields['description_%s' % code] = forms.CharField(label='Полное описание', required=False, widget=CKEditorWidget) - self.fields['adress_%s' % code] = forms.CharField(label='Дополнительная инф по адресу', required=False, max_length=255, + self.fields['name_%s' % code] = forms.CharField(label=_(u'Название'), required=required) + self.fields['main_title_%s' % code] = forms.CharField(label=_(u'Краткое описание'), required=False, widget=CKEditorWidget)#5 + self.fields['description_%s' % code] = forms.CharField(label=_(u'Полное описание'), required=False, widget=CKEditorWidget) + self.fields['adress_%s' % code] = forms.CharField(label=_(u'Дополнительная инф по адресу'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) # - self.fields['total_year_action_%s' % code] = forms.CharField(label='Количество мероприятий в год', required=False, widget=CKEditorWidget) + self.fields['total_year_action_%s' % code] = forms.CharField(label=_(u'Количество мероприятий в год'), required=False, widget=CKEditorWidget) #meta data - self.fields['title_%s' % code] = forms.CharField(label='Тайтл', required=False, max_length=255, + self.fields['title_%s' % code] = forms.CharField(label=_(u'Тайтл'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['keywords_%s' % code] = forms.CharField(label='Дескрипшен', required=False, max_length=255, + self.fields['keywords_%s' % code] = forms.CharField(label=_(u'Дескрипшен'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['descriptions_%s' % code] = forms.CharField(label='Кейвордс', required=False, max_length=255, + self.fields['descriptions_%s' % code] = forms.CharField(label=_(u'Кейвордс'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) @@ -173,7 +174,7 @@ class ExpositionForm(forms.Form): if phone.isdigit(): return phone else: - raise ValidationError('Введите правильный телефон') + raise ValidationError(_(u'Введите правильный телефон')) def clean_fax(self): """ @@ -192,7 +193,7 @@ class ExpositionForm(forms.Form): if fax.isdigit(): return fax else: - raise ValidationError('Введите правильный факс') + raise ValidationError(_(u'Введите правильный факс')) @@ -256,9 +257,9 @@ class PlaceExpositionFormDelete(forms.ModelForm): class HallForm(forms.Form): url = '/admin/place_exposition/add-hall/' number = forms.CharField(widget=forms.TextInput(attrs={'style': 'width:30px'}),required=False, - label='Номер') + label=_(u'Номер')) capacity = forms.CharField(widget=forms.TextInput(attrs={'style': 'width:60px'}), required=False, - label='Вместимость') + label=_(u'Вместимость')) def __init__(self, *args, **kwargs): """ create dynamical translated fields fields @@ -276,7 +277,7 @@ class HallForm(forms.Form): def clean_capacity(self): cleaned_data = super(HallForm, self).clean() capacity = cleaned_data.get('capacity').strip() - return is_positive_integer(capacity, 'Вместимость должна состоять из цифр') + return is_positive_integer(capacity, _(u'Вместимость должна состоять из цифр')) def save(self, place_exposition, id=None): if id: @@ -292,7 +293,6 @@ class HallForm(forms.Form): return hall - class PlaceExpositionFilter(AdminFilterForm): country = forms.MultipleChoiceField(choices=[(item.id, item.name) for item in list(Country.objects.all())], @@ -307,4 +307,4 @@ class PlaceExpositionFilter(AdminFilterForm): if country: qs = qs.filter(country_id__in=country) - return qs \ No newline at end of file + return qs diff --git a/place_exposition/models.py b/place_exposition/models.py index 33a3100d..83fb77ed 100644 --- a/place_exposition/models.py +++ b/place_exposition/models.py @@ -21,8 +21,8 @@ from exposition.models import Exposition from place_conference.models import PlaceConference from photologue.models import Gallery -EXPOSITION_TYPE = (('Exposition complex', u'Выставочный комплекс'), ('Convention centre', u'Конгрессно-выставочный центр'), - ('Exposition centre', u'Выставочный центр'),) +EXPOSITION_TYPE = (('Exposition complex', _(u'Выставочный комплекс')), ('Convention centre', _(u'Конгрессно-выставочный центр')), + ('Exposition centre', _(u'Выставочный центр')),) dist=lambda s,d: (s[0]-d[0])**2+(s[1]-d[1])**2 @@ -52,7 +52,7 @@ class PlaceExposition(TranslatableModel, ExpoMixin): #type uses EnumField for creating Enum type field in Mysql database type = EnumField(values = [item1 for item1, item2 in EXPOSITION_TYPE]) #information - address = LocationField(verbose_name='Адресс') + address = LocationField(verbose_name=_(u'Адресс')) phone = models.BigIntegerField(blank=True, null=True) fax = models.BigIntegerField(blank=True, null=True) web_page = models.URLField(blank=True) @@ -79,7 +79,7 @@ class PlaceExposition(TranslatableModel, ExpoMixin): press_centre = models.NullBooleanField() mobile_application = models.NullBooleanField() # - logo = models.ImageField(verbose_name='Logo', upload_to=logo_name, blank=True, max_length=255) + logo = models.ImageField(verbose_name=_(u'Logo'), upload_to=logo_name, blank=True, max_length=255) rating = models.IntegerField(default=0) partner = models.NullBooleanField(default=0) diff --git a/proj/admin_urls.py b/proj/admin_urls.py index 24252261..83cceb30 100644 --- a/proj/admin_urls.py +++ b/proj/admin_urls.py @@ -37,7 +37,7 @@ urlpatterns = required( url(r'^translator_catalog/', include('specialist_catalog.admin_urls')), url(r'^newsletters/', include('emencia.django.newsletter.admin_urls')), url(r'^stats/', include('stats_collector.admin_urls')), - # url(r'^rosetta/', include('rosetta.urls')), + url(r'^rosetta/', include('rosetta.urls')), url(r'^language/add/', 'directories.admin.language_add'), url(r'^currency/add/', 'directories.admin.currency_add'), diff --git a/proj/settings.py b/proj/settings.py index 9657e602..50f6a6e1 100644 --- a/proj/settings.py +++ b/proj/settings.py @@ -372,7 +372,7 @@ INSTALLED_APPS = ( 'social.apps.django_app.default', # social auth 'core', 'specialist_catalog', - # 'rosetta', + 'rosetta', # 'statsy', ) diff --git a/review/models.py b/review/models.py index fb11304e..5a6cad25 100644 --- a/review/models.py +++ b/review/models.py @@ -3,6 +3,7 @@ from django.db import models from hvad.models import TranslatableModel, TranslatedFields from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes import generic +from django.utils.translation import ugettext as _ @@ -23,12 +24,12 @@ class Review(models.Model): user = models.ForeignKey('accounts.User', blank=True, null=True, on_delete=models.PROTECT, related_name='reviews') - comment = models.TextField(verbose_name='Отзыв') - rating = models.SmallIntegerField(verbose_name='Оценка', blank=True, null=True) + comment = models.TextField(verbose_name=_(u'Отзыв')) + rating = models.SmallIntegerField(verbose_name=_(u'Оценка'), blank=True, null=True) #field saves information about creating and changing model created = models.DateTimeField(auto_now_add=True) modified = models.DateTimeField(auto_now=True) def __unicode__(self): - return self.comment \ No newline at end of file + return self.comment diff --git a/seminar/forms.py b/seminar/forms.py index 0049e00f..953ee5cb 100644 --- a/seminar/forms.py +++ b/seminar/forms.py @@ -5,6 +5,7 @@ from ckeditor.widgets import CKEditorWidget from django.core.exceptions import ValidationError from django.forms.util import ErrorList from django.core.validators import validate_email, URLValidator +from django.utils.translation import ugettext as _ #models from models import Seminar, CURRENCY, Statistic from country.models import Country @@ -33,33 +34,33 @@ class SeminarCreateForm(forms.Form): """ currencies = [(item, item) for item in CURRENCY] - data_begin = forms.DateTimeField(label='Дата и время начала') - data_end = forms.DateTimeField(label='Дата и время оконочания') + data_begin = forms.DateTimeField(label=_(u'Дата и время начала')) + data_end = forms.DateTimeField(label=_(u'Дата и время оконочания')) - country = forms.ModelChoiceField(label='Страна', queryset=Country.objects.all(), empty_label=None) - theme = forms.ModelMultipleChoiceField(label='Тематики', queryset=Theme.objects.all()) + country = forms.ModelChoiceField(label=_(u'Страна'), queryset=Country.objects.all(), empty_label=None) + theme = forms.ModelMultipleChoiceField(label=_(u'Тематики'), queryset=Theme.objects.all()) #creates select input with empty choices cause it will be filled with ajax - city = forms.ChoiceField(label='Город', choices=[('','')]) - tag = forms.MultipleChoiceField(label='Теги', required=False) - - address = forms.CharField(label='Адрес', required=False, widget=LocationWidget)#google maps api - web_page = forms.CharField(label='Веб страница', required=False) - link = forms.CharField(label='Линк на регистрацию', required=False) - foundation_year = forms.CharField(label='Год основания', required=False) - members = forms.CharField(label='Посетители', required=False) - visitors = forms.CharField(label='Участники', required=False) - discount = forms.CharField(label='Cкидка(%)', required=False) - quality_label = forms.MultipleChoiceField(label='Метки', required=False, + city = forms.ChoiceField(label=_(u'Город'), choices=[('','')]) + tag = forms.MultipleChoiceField(label=_(u'Теги'), required=False) + + address = forms.CharField(label=_(u'Адрес'), required=False, widget=LocationWidget)#google maps api + web_page = forms.CharField(label=_(u'Веб страница'), required=False) + link = forms.CharField(label=_(u'Линк на регистрацию'), required=False) + foundation_year = forms.CharField(label=_(u'Год основания'), required=False) + members = forms.CharField(label=_(u'Посетители'), required=False) + visitors = forms.CharField(label=_(u'Участники'), required=False) + discount = forms.CharField(label=_(u'Cкидка(%)'), required=False) + quality_label = forms.MultipleChoiceField(label=_(u'Метки'), required=False, choices=[('ufi', 'UFI'), ('rsva', 'РСВЯ'), ('exporating', 'ExpoRating')], widget=forms.CheckboxSelectMultiple()) # - currency = forms.ChoiceField(label='Валюта', choices=currencies, required=False) - tax = forms.BooleanField(label='Налог включен', initial=True, required=False) - min_price = forms.CharField(label='Минимальная цена', required=False) - max_price = forms.CharField(label='Максимальная цена', required=False) - expohit = forms.BooleanField(label='Expohit', required=False) - canceled = forms.BooleanField(label='Отменена', required=False) - moved = forms.BooleanField(label='Перенесена', required=False) + currency = forms.ChoiceField(label=_(u'Валюта'), choices=currencies, required=False) + tax = forms.BooleanField(label=_(u'Налог включен'), initial=True, required=False) + min_price = forms.CharField(label=_(u'Минимальная цена'), required=False) + max_price = forms.CharField(label=_(u'Максимальная цена'), required=False) + expohit = forms.BooleanField(label=_(u'Expohit'), required=False) + canceled = forms.BooleanField(label=_(u'Отменена'), required=False) + moved = forms.BooleanField(label=_(u'Перенесена'), required=False) #field for comparing tmp files key = forms.CharField(required=False, widget=forms.HiddenInput()) # @@ -78,19 +79,19 @@ class SeminarCreateForm(forms.Form): # uses enumerate for detect iteration number # first iteration is a default lang so it required fields required = True if lid == 0 else False - self.fields['name_%s' % code] = forms.CharField(label='Название', required=required) - self.fields['main_title_%s' % code] = forms.CharField(label='Краткое описание', + self.fields['name_%s' % code] = forms.CharField(label=_(u'Название'), required=required) + self.fields['main_title_%s' % code] = forms.CharField(label=_(u'Краткое описание'), required=False, widget=CKEditorWidget) - self.fields['programm_%s' % code] = forms.CharField(label='Описание', + self.fields['programm_%s' % code] = forms.CharField(label=_(u'Описание'), required=False, widget=CKEditorWidget) - self.fields['discount_description_%s' % code] = forms.CharField(label='Условия и скидки', + self.fields['discount_description_%s' % code] = forms.CharField(label=_(u'Условия и скидки'), required=False, widget=CKEditorWidget) #meta data - self.fields['title_%s' % code] = forms.CharField(label='Тайтл', required=False, max_length=255, + self.fields['title_%s' % code] = forms.CharField(label=_(u'Тайтл'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['keywords_%s' % code] = forms.CharField(label='Дескрипшен', required=False, max_length=255, + self.fields['keywords_%s' % code] = forms.CharField(label=_(u'Дескрипшен'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['descriptions_%s' % code] = forms.CharField(label='Кейвордс', required=False, max_length=255, + self.fields['descriptions_%s' % code] = forms.CharField(label=_(u'Кейвордс'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) #creates select inputs ind fill it #!service has bitfield. uncomment when country data will be filled @@ -168,7 +169,7 @@ class SeminarCreateForm(forms.Form): seminar = Seminar.objects.filter(url=translit_with_separator(name_ru)) if seminar and str(seminar[0].id) != id: - msg = 'Семинар с таким названием уже существует' + msg = _(u'Семинар с таким названием уже существует') self._errors['name_ru'] = ErrorList([msg]) del self.cleaned_data['name_ru'] @@ -261,9 +262,9 @@ class SeminarChangeForm(SeminarCreateForm): add some fields to SeminarCreateForm """ - organiser = forms.ModelMultipleChoiceField(label='Организаторы', queryset=Organiser.objects.all(), required=False) - company = forms.ModelMultipleChoiceField(label='Компании', queryset=Company.objects.all(), required=False) - users = forms.ModelMultipleChoiceField(label='Пользователи', queryset=User.objects.all(), required=False) + organiser = forms.ModelMultipleChoiceField(label=_(u'Организаторы'), queryset=Organiser.objects.all(), required=False) + company = forms.ModelMultipleChoiceField(label=_(u'Компании'), queryset=Company.objects.all(), required=False) + users = forms.ModelMultipleChoiceField(label=_(u'Пользователи'), queryset=User.objects.all(), required=False) class SeminarDeleteForm(forms.ModelForm): @@ -298,4 +299,4 @@ class StatisticForm(forms.ModelForm): class SeminarFilterForm(AdminFilterForm): - model = Seminar \ No newline at end of file + model = Seminar diff --git a/seminar/models.py b/seminar/models.py index 14ba3096..3316aadd 100644 --- a/seminar/models.py +++ b/seminar/models.py @@ -6,6 +6,7 @@ import copy from bitfield import BitField from service.models import Service from functions.db import db_table_exists +from django.utils.translation import ugettext as _ # from functions.custom_fields import EnumField @@ -33,34 +34,34 @@ class Seminar(TranslatableModel, EventMixin, ExpoMixin): services = BitField(flags=flags) url = models.SlugField(unique=True) - data_begin = models.DateTimeField(verbose_name='Дата начала') - data_end = models.DateTimeField(verbose_name='Дата окончания') + data_begin = models.DateTimeField(verbose_name=_(u'Дата начала')) + data_end = models.DateTimeField(verbose_name=_(u'Дата окончания')) #relations - country = models.ForeignKey('country.Country', verbose_name='Страна', on_delete=models.PROTECT) - city = models.ForeignKey('city.City', verbose_name='Город', on_delete=models.PROTECT) + country = models.ForeignKey('country.Country', verbose_name=_(u'Страна'), on_delete=models.PROTECT) + city = models.ForeignKey('city.City', verbose_name=_(u'Город'), on_delete=models.PROTECT) address = LocationField(verbose_name='Адрес', blank=True) - theme = models.ManyToManyField('theme.Theme', verbose_name='Тематики', + theme = models.ManyToManyField('theme.Theme', verbose_name=_(u'Тематики'), related_name='seminar_themes') - tag = models.ManyToManyField('theme.Tag', verbose_name='Теги', + tag = models.ManyToManyField('theme.Tag', verbose_name=_(u'Теги'), blank=True, null=True, related_name='seminar_tags') - organiser = models.ManyToManyField('organiser.Organiser', verbose_name='Организатор', + organiser = models.ManyToManyField('organiser.Organiser', verbose_name=_(u'Организатор'), blank=True, null=True, related_name='seminar_organisers') - company = models.ManyToManyField('company.Company', verbose_name='Компании', + company = models.ManyToManyField('company.Company', verbose_name=_(u'Компании'), blank=True, null=True, related_name='seminar_companies') - users = models.ManyToManyField('accounts.User', verbose_name='Посетители выставки', + users = models.ManyToManyField('accounts.User', verbose_name=_(u'Посетители выставки'), blank=True, null=True, related_name='seminar_users') #!service has bitfield uncomment when country data will be filled #service = models.ManyToManyField('service.Service', verbose_name='Услуги', blank=True, null=True) #periodic = models.FloatField(verbose_name='Переодичность', blank=True, null=True) в семинаре под вопросом здесь - web_page = models.CharField(verbose_name='Вебсайт', max_length=255, blank=True) - link = models.CharField(verbose_name='Линк на регистрацию', max_length=255, blank=True) - discount = models.PositiveIntegerField(verbose_name='Скидка', blank=True, null=True) + web_page = models.CharField(verbose_name=_(u'Вебсайт'), max_length=255, blank=True) + link = models.CharField(verbose_name=_(u'Линк на регистрацию'), max_length=255, blank=True) + discount = models.PositiveIntegerField(verbose_name=_(u'Скидка'), blank=True, null=True) # currency = EnumField(values=CURRENCY, default='RUB') - tax = models.BooleanField(verbose_name='Налог', default=1) - min_price = models.PositiveIntegerField(verbose_name='Минимальная цена', blank=True, null=True) - max_price = models.PositiveIntegerField(verbose_name='Максимальная цена', blank=True, null=True) + tax = models.BooleanField(verbose_name=_(u'Налог'), default=1) + min_price = models.PositiveIntegerField(verbose_name=_(u'Минимальная цена'), blank=True, null=True) + max_price = models.PositiveIntegerField(verbose_name=_(u'Максимальная цена'), blank=True, null=True) expohit = models.BooleanField(verbose_name='Expohit', default=0) #administrator can cancel seminar @@ -74,15 +75,15 @@ class Seminar(TranslatableModel, EventMixin, ExpoMixin): files = generic.GenericRelation('file.FileModel', content_type_field='content_type', object_id_field='object_id') # statistic - foundation_year = models.PositiveIntegerField(verbose_name='Год основания', blank=True, null=True) - visitors = models.PositiveIntegerField(verbose_name='Посетитеил', blank=True, null=True) - members = models.PositiveIntegerField(verbose_name='Участники', blank=True, null=True) + foundation_year = models.PositiveIntegerField(verbose_name=_(u'Год основания'), blank=True, null=True) + visitors = models.PositiveIntegerField(verbose_name=_(u'Посетитеил'), blank=True, null=True) + members = models.PositiveIntegerField(verbose_name=_(u'Участники'), blank=True, null=True) #translated fields translations = TranslatedFields( - name = models.CharField(verbose_name='Название', max_length=255), - main_title = models.TextField(verbose_name='Краткое описание', blank=True), - programm = models.TextField(verbose_name='Описание', blank=True), - discount_description = models.TextField(verbose_name='Условия и Скидки', blank=True), + name = models.CharField(verbose_name=_(u'Название'), max_length=255), + main_title = models.TextField(verbose_name=_(u'Краткое описание'), blank=True), + programm = models.TextField(verbose_name=_(u'Описание'), blank=True), + discount_description = models.TextField(verbose_name=_(u'Условия и Скидки'), blank=True), #-----meta data title = models.CharField(max_length=250), descriptions = models.CharField(max_length=250), @@ -157,9 +158,9 @@ class Seminar(TranslatableModel, EventMixin, ExpoMixin): class Statistic(models.Model): seminar = models.ForeignKey(Seminar, related_name='statistic') - year = models.PositiveIntegerField(verbose_name='Год') - members = models.PositiveIntegerField(verbose_name='Посетители') - visitors = models.PositiveIntegerField(verbose_name='Участники') + year = models.PositiveIntegerField(verbose_name=_(u'Год')) + members = models.PositiveIntegerField(verbose_name=_(u'Посетители')) + visitors = models.PositiveIntegerField(verbose_name=_(u'Участники')) # -*- coding: utf-8 -*- diff --git a/service/forms.py b/service/forms.py index a6c6192c..7c2c95be 100644 --- a/service/forms.py +++ b/service/forms.py @@ -5,6 +5,7 @@ from django.conf import settings from django.forms.util import ErrorList from ckeditor.widgets import CKEditorWidget from functions.translate import fill_with_signal +from django.utils.translation import ugettext as _ #models from models import Service from country.models import Country, City @@ -26,8 +27,8 @@ class ServiceForm(forms.Form): # city = forms.MultipleChoiceField(required=False, choices="") url = forms.CharField(label='url', required=False) - price = forms.IntegerField(label='Цена', required=False, - widget=forms.TextInput(attrs={'placeholder':'Валюта'})) + price = forms.IntegerField(label=_(u'Цена'), required=False, + widget=forms.TextInput(attrs={'placeholder': _(u'Валюта')})) #price = forms.CharField(label='Цена', required=False, # widget=forms.TextInput(attrs={'placeholder':'Валюта'})) @@ -46,16 +47,16 @@ class ServiceForm(forms.Form): # using enumerate for detect iteration number # first iteration is a default lang so it required fields required = True if lid == 0 else False - self.fields['name_%s' % code] = forms.CharField(label='Названия', required=required) - self.fields['main_title_%s' % code] = forms.CharField(label='Заголовок', required=required, widget=CKEditorWidget) - self.fields['description_%s' % code] = forms.CharField(label='Описание', required=required, widget=CKEditorWidget) - self.fields['advantage_%s' % code] = forms.CharField(label='Преимущества', required=False, widget=CKEditorWidget) + self.fields['name_%s' % code] = forms.CharField(label=_(u'Названия'), required=required) + self.fields['main_title_%s' % code] = forms.CharField(label=_(u'Заголовок'), required=required, widget=CKEditorWidget) + self.fields['description_%s' % code] = forms.CharField(label=_(u'Описание'), required=required, widget=CKEditorWidget) + self.fields['advantage_%s' % code] = forms.CharField(label=_(u'Преимущества'), required=False, widget=CKEditorWidget) #meta data - self.fields['title_%s' % code] = forms.CharField(label='Тайтл', required=False, max_length=255, + self.fields['title_%s' % code] = forms.CharField(label=_(u'Тайтл'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['keywords_%s' % code] = forms.CharField(label='Description', required=False, max_length=255, + self.fields['keywords_%s' % code] = forms.CharField(label=_(u'Description'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) - self.fields['descriptions_%s' % code] = forms.CharField(label='Keywords', required=False, max_length=255, + self.fields['descriptions_%s' % code] = forms.CharField(label=_(u'Keywords'), required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) @@ -76,7 +77,7 @@ class ServiceForm(forms.Form): service.price = data['price'] service.currency = data['currency'] #data['type'] - + fill_with_signal(Service, service, data) @@ -110,7 +111,7 @@ class ServiceForm(forms.Form): service = Service.objects.filter(url=translit_with_separator(url)) if service and str(service[0].id) != id: - msg = 'Такой урл уже занят' + msg = _(u'Такой урл уже занят') self._errors['url'] = ErrorList([msg]) del self.cleaned_data['url'] @@ -134,16 +135,16 @@ from django.db.models.query import EmptyQuerySet class LinkedServiceForm(forms.ModelForm): - type = forms.MultipleChoiceField(label='Тип', choices = [(x, x) for x in list(Service.type)], widget = forms.CheckboxSelectMultiple, required=False) - expositions = forms.CharField(label='Выставки', widget=forms.HiddenInput,required=False) - conferences = forms.CharField(label='Конференции', widget=forms.HiddenInput, required=False) - countries = forms.MultipleChoiceField(label='Страны', choices=[(c.id, c.name) for c in list(set(Country.objects.language()))]) + type = forms.MultipleChoiceField(label=_(u'Тип'), choices = [(x, x) for x in list(Service.type)], widget = forms.CheckboxSelectMultiple, required=False) + expositions = forms.CharField(label=_(u'Выставки'), widget=forms.HiddenInput,required=False) + conferences = forms.CharField(label=_(u'Конференции'), widget=forms.HiddenInput, required=False) + countries = forms.MultipleChoiceField(label=_(u'Страны'), choices=[(c.id, c.name) for c in list(set(Country.objects.language()))]) class Meta: model = LinkedService fields = ['countries', 'exclude_countries', 'expositions', 'conferences'] help_text = { - 'exclude_countries': u'При отсутствии стран этот флаг значит ВСЕ страны!' + 'exclude_countries': _(u'При отсутствии стран этот флаг значит ВСЕ страны!') } def clean_countries(self): diff --git a/service/models.py b/service/models.py index c0282ef3..9c927b31 100644 --- a/service/models.py +++ b/service/models.py @@ -4,6 +4,7 @@ from django.db import models from hvad.models import TranslatableModel, TranslatedFields, TranslationManager from functions.custom_fields import EnumField from bitfield import BitField +from django.utils.translation import ugettext as _ CURENCIES = ('', 'USD', 'RUB', 'EUR') @@ -130,10 +131,10 @@ class Visit(AbstractOrder): excursion = models.BooleanField() notes = models.TextField(blank=True) -ADVERTYSE_TYPES = ((u'Рекламировать участника', u'Рекламировать участника'), - (u'Баннерная реклама', u'Баннерная реклама'), - (u'Приоритетное размещение событий в каталоге',u'Приоритетное размещение событий в каталоге'), - (u'Персональная визитка Вашей компании',u'Персональная визитка Вашей компании')) +ADVERTYSE_TYPES = ((u'Рекламировать участника', _(u'Рекламировать участника')), + (u'Баннерная реклама', _(u'Баннерная реклама')), + (u'Приоритетное размещение событий в каталоге', _(u'Приоритетное размещение событий в каталоге')), + (u'Персональная визитка Вашей компании', _(u'Персональная визитка Вашей компании'))) class Advertising(AbstractOrder): type = models.CharField(max_length=255, blank=True, null=True) @@ -146,14 +147,14 @@ class CallBack(models.Model): class Meta: ordering = ['-created'] - + class LinkedService(models.Model): service = models.ForeignKey(Service, blank=False) - countries = models.ManyToManyField('country.Country', blank=True, verbose_name=u"Страны") - exclude_countries = models.BooleanField(default=False, verbose_name=u"Исключить страны") - expositions = models.ManyToManyField('exposition.Exposition', blank=True, verbose_name= u"Выставки") - conferences = models.ManyToManyField('conference.Conference', blank=True, verbose_name=u'Конференции') + countries = models.ManyToManyField('country.Country', blank=True, verbose_name=_(u"Страны")) + exclude_countries = models.BooleanField(default=False, verbose_name=_(u"Исключить страны")) + expositions = models.ManyToManyField('exposition.Exposition', blank=True, verbose_name= _(u"Выставки")) + conferences = models.ManyToManyField('conference.Conference', blank=True, verbose_name=_(u'Конференции')) def update_countries_flag(self): from country.models import Country diff --git a/settings/forms.py b/settings/forms.py index a2e37d16..ae8087a6 100644 --- a/settings/forms.py +++ b/settings/forms.py @@ -5,6 +5,7 @@ from theme.models import Theme from .models import Html, LandingComment, LandingParticipationComment from article.models import Article from functions.forms import ExpoTranslatableModelForm, ExpoTranslatableModelForm_ +from django.utils.translation import ugettext as _ class HtmlForm(ExpoTranslatableModelForm): @@ -21,7 +22,7 @@ class CommentForm(ExpoTranslatableModelForm_): @property def verbose(self): - return u'Редактировать комментарий' if self.instance.pk else u'Создать комментарий' + return _(u'Редактировать комментарий') if self.instance.pk else _(u'Создать комментарий') class ParticipationCommentForm(CommentForm): @@ -47,7 +48,7 @@ class MainPageThemes(forms.Form): class MainPageNews(forms.Form): - main_page_news = forms.CharField(label=u'Новости', widget=forms.HiddenInput(), required=False,) + main_page_news = forms.CharField(label=_(u'Новости'), widget=forms.HiddenInput(), required=False,) def save(self): data = self.cleaned_data diff --git a/specialist_catalog/models.py b/specialist_catalog/models.py index 428eb6dc..ee2c2c7f 100644 --- a/specialist_catalog/models.py +++ b/specialist_catalog/models.py @@ -7,6 +7,7 @@ from country.models import Country from django.core.urlresolvers import reverse_lazy from django.utils.translation import get_language import copy +from django.utils.translation import ugettext as _ # types of catalog _country = 1 @@ -14,11 +15,11 @@ _city = 2 class Specialist(models.Model): - name = models.CharField(max_length=255, verbose_name=u"Полное имя", blank=False) - languages = models.CharField(max_length=255, verbose_name=u"Языки") - city = models.ForeignKey(City, on_delete=models.PROTECT, verbose_name=u"Город", blank=True) - country = models.ForeignKey(Country, on_delete=models.PROTECT, verbose_name=u"Страна") - photo = models.ImageField(verbose_name=u"Фото", upload_to="specialist_catalog/specialist_photo/", blank=True) + name = models.CharField(max_length=255, verbose_name=_(u"Полное имя"), blank=False) + languages = models.CharField(max_length=255, verbose_name=_(u"Языки")) + city = models.ForeignKey(City, on_delete=models.PROTECT, verbose_name=_(u"Город"), blank=True) + country = models.ForeignKey(Country, on_delete=models.PROTECT, verbose_name=_(u"Страна")) + photo = models.ImageField(verbose_name=_(u"Фото"), upload_to="specialist_catalog/specialist_photo/", blank=True) def __unicode__(self): @@ -28,22 +29,22 @@ class Specialist(models.Model): class SpecialistCatalog(TranslatableModel): _country = 1 _city = 2 - price = models.IntegerField(verbose_name=u"Цена", default=200) - currency = models.CharField(max_length=255, verbose_name=u"Валюта", default=u"EUR") - logo = models.ImageField(db_column= "logo_preview", verbose_name=u"Логотип", blank=True, upload_to='specialist_catalog/logo_preview/') - place_photo = models.ImageField(verbose_name=u"Фото для города", blank=True, upload_to='specialist_catalog/place_photo/') - specialists = models.ManyToManyField(Specialist, verbose_name=u"Специалисты", blank=True) - city = models.ForeignKey(City, on_delete=models.PROTECT, verbose_name=u"Город", blank=True, null=True) - country = models.ForeignKey(Country, on_delete=models.PROTECT, verbose_name=u"Страна", blank=False) - type = models.PositiveSmallIntegerField(verbose_name=u"Тип(Страна/Город)", default=2) + price = models.IntegerField(verbose_name=_(u"Цена"), default=200) + currency = models.CharField(max_length=255, verbose_name=_(u"Валюта"), default=u"EUR") + logo = models.ImageField(db_column= "logo_preview", verbose_name=_(u"Логотип"), blank=True, upload_to='specialist_catalog/logo_preview/') + place_photo = models.ImageField(verbose_name=_(u"Фото для города"), blank=True, upload_to='specialist_catalog/place_photo/') + specialists = models.ManyToManyField(Specialist, verbose_name=_(u"Специалисты"), blank=True) + city = models.ForeignKey(City, on_delete=models.PROTECT, verbose_name=_(u"Город"), blank=True, null=True) + country = models.ForeignKey(Country, on_delete=models.PROTECT, verbose_name=_(u"Страна"), blank=False) + type = models.PositiveSmallIntegerField(verbose_name=_(u"Тип(Страна/Город)"), default=2) objects = TranslationManager() translations = TranslatedFields( - title=models.CharField(max_length=255, verbose_name=u"Заголовок"), - main_descr=models.CharField(max_length=1000, verbose_name=u"Краткое описание"), - benefits=models.CharField(max_length=2000, verbose_name=u"Преимущества"), - big_cities=models.TextField(verbose_name=u"Крупные города", blank=True) + title=models.CharField(max_length=255, verbose_name=_(u"Заголовок")), + main_descr=models.CharField(max_length=1000, verbose_name=_(u"Краткое описание")), + benefits=models.CharField(max_length=2000, verbose_name=_(u"Преимущества")), + big_cities=models.TextField(verbose_name=_(u"Крупные города"), blank=True) ) def __init__(self, *args, **kwargs): @@ -98,11 +99,11 @@ class SpecialistCatalog(TranslatableModel): class Feedback(models.Model): - company = models.CharField(max_length=255, verbose_name=u"Название компании") - name = models.CharField(max_length=100, verbose_name=u"Имя") - text = models.CharField(max_length=5000, verbose_name=u"Текст отзыва") - logo = models.ImageField(verbose_name=u"Логотип компании", upload_to='specialist_catalog/feedback_logo/', blank=True) - catalog = models.ForeignKey(SpecialistCatalog, verbose_name=u"Страница", blank=False) + company = models.CharField(max_length=255, verbose_name=_(u"Название компании")) + name = models.CharField(max_length=100, verbose_name=_(u"Имя")) + text = models.CharField(max_length=5000, verbose_name=_(u"Текст отзыва")) + logo = models.ImageField(verbose_name=_(u"Логотип компании"), upload_to='specialist_catalog/feedback_logo/', blank=True) + catalog = models.ForeignKey(SpecialistCatalog, verbose_name=_(u"Страница"), blank=False) def __unicode__(self): return "Feedback from %s" % self.company diff --git a/templates/admin/expobanner/link_list.html b/templates/admin/expobanner/link_list.html index ab017c63..399637a0 100644 --- a/templates/admin/expobanner/link_list.html +++ b/templates/admin/expobanner/link_list.html @@ -1,4 +1,5 @@ {% extends 'base.html' %} +{% load i18n %} {% block body %} @@ -12,8 +13,8 @@
    Объектссылка для отслеживания{% trans "Объект" %}{% trans "ссылка для отслеживания" %}    
    {{ item }} {{request.get_host}}{{ item.get_click_link }}Изменить Статистика {% trans "Изменить" %} {% trans "Статистика" %}
      @@ -39,7 +40,7 @@ - + @@ -83,4 +84,4 @@

      Ваша подписка на портале Expomap

      {% trans "Ваша подписка на портале" %} Expomap

      @@ -48,17 +49,17 @@
      -

      Добрый день, {{ user.first_name }}!

      +

      {% trans "Добрый день" %}, {{ user.first_name }}!

      -

      Благодарим за подписку! Остался 1 шаг - подтвердить Ваш электронный адрес, нажав на кнопку:

      +

      {% trans "Благодарим за подписку! Остался 1 шаг - подтвердить Ваш электронный адрес, нажав на кнопку:" %}

      - подтвердить подписку + {% trans "подтвердить подписку" %}
      - \ No newline at end of file + diff --git a/templates/client/organiser/add_event.html b/templates/client/organiser/add_event.html index 6c5d169b..3b498297 100644 --- a/templates/client/organiser/add_event.html +++ b/templates/client/organiser/add_event.html @@ -22,7 +22,7 @@

      - +
      @@ -248,7 +248,7 @@

      {% trans 'Шаг 2. Добавление фото' %}

      -
      + 1,2 балла к рейтингу
      +
      {% blocktrans %}+ 1,2 балла к рейтингу{% endblocktrans %}
      @@ -257,21 +257,20 @@
      -

      более полная информация повышает рейтинг вашего мероприятия и позволяет ранжировать его - выше других

      +

      {% trans "более полная информация повышает рейтинг вашего мероприятия и позволяет ранжировать его выше других" %}


      @@ -281,7 +280,7 @@

      {% trans 'Шаг 3. Статистика и условия участия тест' %}

      -
      + 0,9 баллов к рейтингу
      +
      {% blocktrans %}+ 0,9 баллов к рейтингу{% endblocktrans %}
      @@ -289,7 +288,7 @@
      - +
      @@ -297,12 +296,12 @@

      - +
      Россия + value="1">{% trans "Россия" %}
    • + value="2">{% trans "Украина" %}
    • + value="3">{% trans "Беларусь" %}
    • + value="4">{% trans "Бельгия" %}
    • + value="5">{% trans "Германия" %}
    • + value="6">{% trans "Франция" %}
    @@ -412,23 +411,23 @@
    -

    Стоимость посещения и участия

    +

    {% trans "Стоимость посещения и участия" %}

    -
    Стоимость билетов
    +
    {% trans "Стоимость билетов" %}
    • @@ -438,14 +437,14 @@
    -
    Предварительная регистрация
    +
    {% trans "Предварительная регистрация" %}

    @@ -454,7 +453,7 @@
    @@ -464,26 +463,26 @@
    -
    Регистрация на стойке
    +
    {% blocktrans %}Регистрация на стойке{% endblocktrans %}
    -
    Стоимость аренды 1м²
    +
    {% trans "Стоимость аренды 1м²" %}
    • @@ -493,7 +492,7 @@
      @@ -503,7 +502,7 @@
      @@ -512,7 +511,7 @@

    - +
    м² @@ -520,12 +519,12 @@

    - +
    @@ -534,7 +533,7 @@

    - +
    @@ -554,16 +553,15 @@
    -

    более полная информация повышает рейтинг вашего мероприятия и позволяет ранжировать - его выше других

    +

    {% trans "более полная информация повышает рейтинг вашего мероприятия и позволяет ранжировать его выше других" %}

    @@ -587,4 +585,4 @@ ] }); - {% endblock %} \ No newline at end of file + {% endblock %} diff --git a/templates/client/photoreport.html b/templates/client/photoreport.html index cf857854..4a7a29f7 100644 --- a/templates/client/photoreport.html +++ b/templates/client/photoreport.html @@ -3,7 +3,7 @@ {% load i18n %} {% block content_bread_scrumbs %} \ No newline at end of file +
    diff --git a/templates/client/popups/callback.html b/templates/client/popups/callback.html index cde6c943..b678caa7 100644 --- a/templates/client/popups/callback.html +++ b/templates/client/popups/callback.html @@ -7,7 +7,7 @@
    -

    Вам удобнее, чтобы мы Вам позвонили? Укажите контактный номер телефона и имя, и наши консультанты свяжутся с Вами.

    +

    {% trans "Вам удобнее, чтобы мы Вам позвонили? Укажите контактный номер телефона и имя, и наши консультанты свяжутся с Вами." %}

    @@ -25,4 +25,4 @@
    -
    \ No newline at end of file +
    diff --git a/templates/client/popups/register.html b/templates/client/popups/register.html index 333ca6b5..86c5f655 100644 --- a/templates/client/popups/register.html +++ b/templates/client/popups/register.html @@ -45,7 +45,7 @@
    -
    Ошибка
    +
    {% trans "Ошибка" %}
    @@ -63,4 +63,4 @@
    -
    \ No newline at end of file +
    diff --git a/templates/client/popups/theme.html b/templates/client/popups/theme.html index 709d2e3f..5bd53b42 100644 --- a/templates/client/popups/theme.html +++ b/templates/client/popups/theme.html @@ -12,10 +12,10 @@
    - +
    - +
    {% comment %} {# заморожено #} diff --git a/templates/client/search/search.html b/templates/client/search/search.html index 2e42a3bc..22ec7a1e 100644 --- a/templates/client/search/search.html +++ b/templates/client/search/search.html @@ -1,7 +1,7 @@ +{% load i18n %} - -

    Search

    +

    {% trans "Search" %}

    @@ -15,21 +15,21 @@
    {% if query %} -

    Results

    +

    {% trans "Results" %}

    {% for result in page.object_list %}

    {{ result.object.title }}

    {% empty %} -

    No results found.

    +

    {% trans "No results found." %}

    {% endfor %} {% if page.has_previous or page.has_next %}
    - {% if page.has_previous %}{% endif %}« Previous{% if page.has_previous %}{% endif %} + {% if page.has_previous %}{% endif %}« {% trans "Previous" %}{% if page.has_previous %}{% endif %} | - {% if page.has_next %}{% endif %}Next »{% if page.has_next %}{% endif %} + {% if page.has_next %}{% endif %}{% trans "Next" %} »{% if page.has_next %}{% endif %}
    {% endif %} {% else %} diff --git a/templates/client/service/participation.html b/templates/client/service/participation.html index 659ab200..acf7965c 100644 --- a/templates/client/service/participation.html +++ b/templates/client/service/participation.html @@ -233,10 +233,10 @@
    -
    Волкова Елизавета
    +
    {% trans "Волкова Елизавета" %}
    - Хочу поблагодарить команду маркетологов Expomap за организацию нашего участия в выставке ТрансРоссия. Для нас это было чем-то новым, и благодаря опыту ребят мы избежали большого количества проблем и решали все возникающие вопросы очень оперативно. Если говорить о результатах работы на выставке, то мы собрали за 4 дня более 300 рабочих контактов и запросов, часть из которых выглядят очень перспективно. Мы сделали это вместе с Expomap и хотим сказать спасибо за их идеи, глубокое погружение в наши задачи, креативный подход и четкую помощь в реализации! Будем рады работать с вами и в других проектах! + {% trans "Хочу поблагодарить команду маркетологов Expomap за организацию нашего участия в выставке ТрансРоссия. Для нас это было чем-то новым, и благодаря опыту ребят мы избежали большого количества проблем и решали все возникающие вопросы очень оперативно. Если говорить о результатах работы на выставке, то мы собрали за 4 дня более 300 рабочих контактов и запросов, часть из которых выглядят очень перспективно. Мы сделали это вместе с Expomap и хотим сказать спасибо за их идеи, глубокое погружение в наши задачи, креативный подход и четкую помощь в реализации! Будем рады работать с вами и в других проектах!" %}
    @@ -264,7 +264,7 @@
    Anatolios Spyrlidis
    - Мы принимали участие со своим стендом в выставке Boot Duesseldorf в Германии в январе 2014. Выражаем благодарность сотрудникам Expomap, а также персональному консультанту Руслану Шапилову за оперативность, мы остались довольны качеством оказанных услуг! + {% trans "Мы принимали участие со своим стендом в выставке Boot Duesseldorf в Германии в январе 2014. Выражаем благодарность сотрудникам Expomap, а также персональному консультанту Руслану Шапилову за оперативность, мы остались довольны качеством оказанных услуг!" %}
    @@ -299,4 +299,4 @@ -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/templates/client/service/remotely.html b/templates/client/service/remotely.html index 5dc569b7..df8b00db 100644 --- a/templates/client/service/remotely.html +++ b/templates/client/service/remotely.html @@ -220,7 +220,7 @@
    Акулова Ольга
    - Остались очень довольны заочным посещением выставки Photokina — поехать сами не смогли, но получили визитки нужных компаний. Большое cпасибо сотрудникам за оперативность работы! + {% trans "Остались очень довольны заочным посещением выставки Photokina — поехать сами не смогли, но получили визитки нужных компаний. Большое cпасибо сотрудникам за оперативность работы!" %}
    @@ -248,7 +248,7 @@
    Рязанцев Денис
    - Особой оценки достойна оперативность предоставления услуг и их качество. Хочу отметить профессионализм, организованность, добросовестность, вежливость, грамотность сотрудников компании! + {% trans "Особой оценки достойна оперативность предоставления услуг и их качество. Хочу отметить профессионализм, организованность, добросовестность, вежливость, грамотность сотрудников компании!" %}
    @@ -296,4 +296,4 @@ -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/templates/client/service/thank_u_page.html b/templates/client/service/thank_u_page.html index 2a50c2ca..20890934 100644 --- a/templates/client/service/thank_u_page.html +++ b/templates/client/service/thank_u_page.html @@ -1,10 +1,11 @@ {% extends 'base_catalog.html' %} +{% load i18n %} {% block bread_scrumbs %} {% endblock %} {% block page_title %} -

    Ваша заявка успешно отправлена!

    +

    {% trans "Ваша заявка успешно отправлена!" %}

    {% endblock %} {% block page_body %} @@ -15,14 +16,14 @@
    24 часа
    -

    Благодарим Вас за использование сервиса ExpoMap.ru, мы очень ценим Ваше внимание и время.

    -

    В кратчайшие сроки наши консультанты свяжутся с Вами. Регламент ответа на запрос -24 часа, в рабочие дни. Если по каким-либо причинам с Вами не связались в указанный срок, или Вы недовольны обслуживанием, отправьте короткое письмо с номером заявки на адрес evm@expomap.ru.

    -

    Также Вы можете позвонить нам для ускорения процесса, если Ваш запрос является срочным.

    + {% blocktrans %}

    Благодарим Вас за использование сервиса ExpoMap.ru, мы очень ценим Ваше внимание и время.

    {% endblocktrans %} +

    {% trans "В кратчайшие сроки наши консультанты свяжутся с Вами. Регламент ответа на запрос -24 часа, в рабочие дни. Если по каким-либо причинам с Вами не связались в указанный срок, или Вы недовольны обслуживанием, отправьте короткое письмо с номером заявки на адрес evm@expomap.ru." %}

    +

    {% trans "Также Вы можете позвонить нам для ускорения процесса, если Ваш запрос является срочным." %}

    {% if object %} -

    Что дальше Вы хотите делать?

    +

    {% trans "Что дальше Вы хотите делать?" %}

    @@ -31,7 +32,7 @@
    {% with theme=object.theme.all.0 %}

    - Перейти к списку выставок по тематике «{{ theme.name }}» + {% trans "Перейти к списку выставок по тематике" %} «{{ theme.name }}»

    {% endwith %}
    @@ -53,7 +54,7 @@
     
    - Вернуться к просмотру выставки «{{ object.name }}» + {% trans "Вернуться к просмотру выставки" %} «{{ object.name }}»
    @@ -64,7 +65,7 @@
    {% with city=object.city %}

    - Перейти к списку ближайших выставок в городе «{{ city.name }}» + {% trans "Перейти к списку ближайших выставок в городе" %} «{{ city.name }}»

    {% endwith %}
    @@ -75,4 +76,4 @@
    -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/templates/client/service/tickets.html b/templates/client/service/tickets.html index 82966114..33cf8761 100644 --- a/templates/client/service/tickets.html +++ b/templates/client/service/tickets.html @@ -231,7 +231,7 @@
    Денис Хома
    - Мне понравилось работать с вашей компанией и в частности с Евгенией Булавиной. Все быстро и предельно понятно. Большое спасибо! + {% trans "Мне понравилось работать с вашей компанией и в частности с Евгенией Булавиной. Все быстро и предельно понятно. Большое спасибо!" %}
    @@ -259,7 +259,7 @@
    Ангелина Плещеева
    - Спасибо Вам за Вашу работу. Все быстро и четко. + {% trans "Спасибо Вам за Вашу работу. Все быстро и четко." %}
    @@ -295,4 +295,4 @@ -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/templates/client/service/tour.html b/templates/client/service/tour.html index 716013a0..884a4bf7 100644 --- a/templates/client/service/tour.html +++ b/templates/client/service/tour.html @@ -315,7 +315,7 @@
    Полякова Анастасия
    - Спасибо огромное данной компании (в частности, Евгении, с которой я общалась). Девушка очень вежливая, отзывчивая. Я безумно ей благодарна за помощь (а вопросов у меня была масса). Высококвалифицированный специалист. Компания специалистов. Одни слова благодарности. + {% trans "Спасибо огромное данной компании (в частности, Евгении, с которой я общалась). Девушка очень вежливая, отзывчивая. Я безумно ей благодарна за помощь (а вопросов у меня была масса). Высококвалифицированный специалист. Компания специалистов. Одни слова благодарности." %}
    @@ -344,7 +344,7 @@
    -Очень нравится с Вами сотрудничать, так как всегда есть отклик на наши требования. Разочарований не было. Спасибо за отличную работу! +{% trans "Очень нравится с Вами сотрудничать, так как всегда есть отклик на наши требования. Разочарований не было. Спасибо за отличную работу!" %}
    @@ -387,4 +387,4 @@ -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/templates/client/service/translator.html b/templates/client/service/translator.html index 341dc0d5..cdbc3e56 100644 --- a/templates/client/service/translator.html +++ b/templates/client/service/translator.html @@ -309,14 +309,14 @@
    + data-url="{{ 'http://www.unix-medical.ru/'|base64_encode }}">{% trans "Медицинская компания ЮНИКС" %}
    Марино Шихова
    - Мы, медицинская компания ЮНИКС, уже несколько лет обращаемся в компанию Expomap за услугами переводчиков и переводчиков-гидов по всему миру. Сотрудники компании всегда оперативно реагируют на запросы, очень доброжелательны и приветливы, готовы идти навстречу. Качество работы предоставляемых переводчиков всегда очень высокое, никаких нареканий по их работе от наших сотрудников и клиентов не поступало, только положительные отзывы. Надеемся на такое же приятное сотрудничество и в будущем! + {% trans "Мы, медицинская компания ЮНИКС, уже несколько лет обращаемся в компанию Expomap за услугами переводчиков и переводчиков-гидов по всему миру. Сотрудники компании всегда оперативно реагируют на запросы, очень доброжелательны и приветливы, готовы идти навстречу. Качество работы предоставляемых переводчиков всегда очень высокое, никаких нареканий по их работе от наших сотрудников и клиентов не поступало, только положительные отзывы. Надеемся на такое же приятное сотрудничество и в будущем!" %}
    @@ -337,14 +337,14 @@ + {% trans "ТоргХолодМаш" %}
    Ольга Фрол
    - Работу по организации переводчика оцениваю положительно. Скорость ответов и работы была хорошей. В будущем воспользуюсь повторно услугами и порекомендую партнерам. Ответственность переводчика и уровень был превосходным. + {% trans "Работу по организации переводчика оцениваю положительно. Скорость ответов и работы была хорошей. В будущем воспользуюсь повторно услугами и порекомендую партнерам. Ответственность переводчика и уровень был превосходным." %}
    @@ -387,4 +387,4 @@ -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/templates/client/simple_pages/expo_seminar.html b/templates/client/simple_pages/expo_seminar.html index 25cc0032..81a7687c 100644 --- a/templates/client/simple_pages/expo_seminar.html +++ b/templates/client/simple_pages/expo_seminar.html @@ -1,10 +1,12 @@ {% load static %} +{% load i18n %} + - Продвижение мероприятий: как узнать, какая половина бюджета уходит впустую? + {% trans "Продвижение мероприятий: как узнать, какая половина бюджета уходит впустую?" %} @@ -62,7 +64,7 @@
    -

    Наш телефон:

    +

    {% trans "Наш телефон:" %}

    +7 (499) 999-12-07

    @@ -72,11 +74,11 @@
    -

    «Продвижение мероприятий: как узнать, какая половина бюджета уходит впустую?»

    +

    {% trans "«Продвижение мероприятий: как узнать, какая половина бюджета уходит впустую?»" %}

    -

    25 июня 2015г. 10:30-12:30 Москва, Digital October, пресс-центр

    -

    Только для партнеров выставочного портала Expomap
    Участие бесплатное

    -

    Зарегистрироваться

    +

    {% trans "25 июня 2015г. 10:30-12:30 Москва, Digital October, пресс-центр" %}

    + {% blocktrans %}

    Только для партнеров выставочного портала Expomap
    Участие бесплатное

    {% endblocktrans %} +

    {% trans "Зарегистрироваться" %}

    @@ -86,13 +88,15 @@
    -

    Практический семинар для маркетологов, руководителей выставочных проектов, а также специалистов, ответственных за привлечение участников и посетителей на деловые события.

    +

    {% trans "Практический семинар для маркетологов, руководителей выставочных проектов, а также специалистов, ответственных за привлечение участников и посетителей на деловые события." %}

    + {% blocktrans %}

    Я знаю, что половина моего рекламного бюджета расходуется впустую, вот тольно не знаю, какая именно.
    Джон Ванамейкер,
    легендарный американский коммерсант

    + {% endblocktrans %}
    @@ -101,31 +105,30 @@
    -

    В текущей конъюнктуре рынка грамотные компании не отказываются от рекламы и маркетинга, а начинают считать эффект от каждого вложенного рубля. Они точно знают, какая половина бюджета принесла клиентов, а от какой следует отказаться. Именно такой подход позволяет не только сохранить или даже увеличить количество участников и посетителей ваших событий, но и снизить средние затраты на их привлечение.

    +

    {% trans "В текущей конъюнктуре рынка грамотные компании не отказываются от рекламы и маркетинга, а начинают считать эффект от каждого вложенного рубля. Они точно знают, какая половина бюджета принесла клиентов, а от какой следует отказаться. Именно такой подход позволяет не только сохранить или даже увеличить количество участников и посетителей ваших событий, но и снизить средние затраты на их привлечение." %}

    -

    Об этом мы и поговорим на семинаре вместе с практиками маркетинга Рунета.

    -

    Программа мероприятия:

    +

    {% trans "Об этом мы и поговорим на семинаре вместе с практиками маркетинга Рунета." %}

    +

    {% trans "Программа мероприятия:" %}

    10:30-11:00

    -

    Регистрация участников. Приветственный кофе

    +

    {% trans "Регистрация участников. Приветственный кофе" %}

    11:00 - 11:40

    -

    Умные инструменты продвижения события: - казнить нельзя, помиловать

    +

    {% trans "Умные инструменты продвижения события: казнить нельзя, помиловать" %}

      -
    • Каналы привлечения участников и посетителей в Рунете
    • -
    • Построение эффективной коммуникации для каждого канала
    • -
    • Медиаплан маркетолога события в условиях ограниченности ресурсов
    • +
    • {% trans "Каналы привлечения участников и посетителей в Рунете" %}
    • +
    • {% trans "Построение эффективной коммуникации для каждого канала" %}
    • +
    • {% trans "Медиаплан маркетолога события в условиях ограниченности ресурсов" %}
    -
    Евгения Мануковская
    основатель Expomap
    + {% blocktrans %}
    Евгения Мануковская
    основатель Expomap
    {% endblocktrans %}
    @@ -139,17 +142,17 @@

    11:45 - 12:15

    -

    Способы отслеживания эффективности каналов

    +

    {% trans "Способы отслеживания эффективности каналов" %}

      -
    • Настройка Google Tag Manager
    • -
    • Когоргный анализ графика
    • -
    • Обобщенные отчеты в Google Analytics
    • +
    • {% trans "Настройка Google Tag Manager" %}
    • +
    • {% trans "Когоргный анализ графика" %}
    • +
    • {% trans "Обобщенные отчеты в Google Analytics" %}
    -
    Екатерина Герасименко
    Заместитель генерального директора по маркетингу Venta research Lab
    + {% blocktrans %}
    Екатерина Герасименко
    Заместитель генерального директора по маркетингу Venta research Lab
    {% endblocktrans %}
    @@ -158,28 +161,27 @@

    12:15 - 12:30

    -

    Презентация партнерских программ Expomap для организаторов событий

    +

    {% trans "Презентация партнерских программ Expomap для организаторов событий" %}

    -

    Место проведения:

    -

    Пресс-центр Digital October Москва, Берсеневская набережная, 6, стр. 3

    -

    Посмотреть на карте

    +

    {% trans "Место проведения:" %}

    +

    {% trans "Пресс-центр Digital October Москва, Берсеневская набережная, 6, стр. 3" %}

    +

    {% trans "Посмотреть на карте" %}

    -

    Зарегистрироваться

    +

    {% trans "Зарегистрироваться" %}

    -

    Есть вопросы?

    +

    {% trans "Есть вопросы?" %}

    (499) 999 12 07
    musatova@expomap.ru
    Ольга Мусатова

    -

    Оставьте свои контактные данные, и мы пришлем Вам личное приглашение на семинар или же доступ к - онлайн-трансляции.

    +

    {% trans "Оставьте свои контактные данные, и мы пришлем Вам личное приглашение на семинар или же доступ к онлайн-трансляции." %}

    -

    Спешите, количество мест ограничено!

    +

    {% trans "Спешите, количество мест ограничено!" %}

    @@ -188,37 +190,37 @@