Skip to content

Commit ca6e4cd

Browse files
committed
Resolved #1: Fully localized UI.
1 parent 0786a16 commit ca6e4cd

File tree

12 files changed

+146
-57
lines changed

12 files changed

+146
-57
lines changed

src/EventCloud.Application/Statistics/StatisticsAppService.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,19 +37,19 @@ public async Task<ListResultOutput<NameValueDto>> GetStatistics()
3737
var statisticItems = new List<NameValueDto>
3838
{
3939
new NameValueDto(
40-
"Tenants",
40+
L("Tenants"),
4141
(await _tenantRepository.CountAsync()).ToString()
4242
),
4343
new NameValueDto(
44-
"Users",
44+
L("Users"),
4545
(await _userRepository.CountAsync()).ToString()
4646
),
4747
new NameValueDto(
48-
"Events",
48+
L("Events"),
4949
(await _eventRepository.CountAsync()).ToString()
5050
),
5151
new NameValueDto(
52-
"Registrations",
52+
L("Registrations"),
5353
(await _eventRegistrationRepository.CountAsync()).ToString()
5454
)
5555
};

src/EventCloud.Core/Localization/Source/EventCloud-tr.xml

Lines changed: 43 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,49 @@
2929

3030
<text name="LoginFailed" value="Giriş başarısız!" />
3131

32-
<text name="NameSurname" value="Name surname" />
33-
<text name="UserName" value="User name" />
34-
<text name="Name" value="Name" />
35-
<text name="Surname" value="Surname" />
36-
<text name="EmailAddress" value="Email address" />
32+
<text name="NameSurname" value="Ad soyad" />
33+
<text name="UserName" value="Kullanıcı adı" />
34+
<text name="Name" value="Ad" />
35+
<text name="Surname" value="Soyad" />
36+
<text name="EmailAddress" value="E-posta adresi" />
37+
38+
<text name="Events" value="Etkinlikler" />
39+
<text name="NewEvent" value="Yeni etkinlik" />
40+
<text name="ShowCanceledEvents" value="İptal edilmiş etkinlikleri de göster." />
41+
<text name="ThisEventIsCanceled" value="Bu etkinlik iptal edilmiş." />
42+
<text name="Details" value="Ayrıntılar" />
43+
<text name="XofYregistered" value="{1} kapasitenin {0} adedi için kayıt yapılmış." />
44+
<text name="XregisteredNoNewRegistrationAvailable" value="{0} kayıt yapıldı. Yeni kayıt yapılamaz." />
45+
<text name="XregisteredUnlimitedRegistrations" value="{0} kayıt yapıldı. Sınırsız kayıt yapılabilir." />
46+
<text name="BackToEvents" value="Etkinliklere geri dön" />
47+
<text name="Register" value="Kaydol" />
48+
<text name="CancelRegistration" value="Kaydını iptal et" />
49+
<text name="CancelTheEvent" value="Etkinliği iptal et" />
50+
<text name="XregisteredOfYAvailableRegistration" value="{0} kayıt yapılmış (en fazla {1} kayıt yapılabilir)." />
51+
<text name="Title" value="Başlık" />
52+
<text name="Description" value="Açıklama" />
53+
<text name="Date" value="Tarih" />
54+
<text name="MaxRegistrationCount" value="En fazla kayıt sayısı" />
55+
<text name="Unlimited" value="Sınırsız" />
56+
<text name="Cancel" value="İptal" />
57+
<text name="Save" value="Kaydet" />
58+
<text name="AboutTheCloudEvent" value="Cloud Event Hakkında" />
59+
<text name="CloudEventDescription" value="Bu, ASP.NET Boilerplate framework ile geliştirilmiş çok-müşterili (SaaS) örnek bir uygulamadır." />
60+
<text name="SomeStatistics" value="Bazı İstatistikler" />
61+
<text name="StatisticsNote" value="Not: Bu istatistikler tüm müşterileri içerir, sadece şu anki müşteri değil." />
62+
<text name="Links" value="Bağlantılar" />
63+
<text name="SourceCodeOfThisApplication" value="Bu uygulamanın kaynak kodu" />
64+
<text name="AbpOfficialWebSite" value="ASP.NET Boilerplate resmi web sitesi" />
65+
<text name="OfficialForum" value="Resmi forum" />
66+
<text name="Logout" value="Çıkış" />
67+
<text name="Tenants" value="Müşteriler" />
68+
<text name="Users" value="Kullanıcılar" />
69+
<text name="Registrations" value="Kayıtlar" />
70+
<text name="OrLoginWith" value="Ya da şununla gir" />
71+
<text name="BecomeATenant" value="MÜŞTERİ OL" />
72+
<text name="BecomeATenantHint" value="Bir müşterinin kendine ait kullanıcıları ve etkinlikleri olur. Tamamen ücretsiz!" />
73+
<text name="AdminPassword" value="Yönetici (admin) şifresi" />
74+
<text name="CreateTheTenant" value="Müşteriyi oluştur" />
3775

3876
</texts>
3977
</localizationDictionary>

src/EventCloud.Core/Localization/Source/EventCloud.xml

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,5 +29,49 @@
2929

3030
<text name="LoginFailed" value="Login failed!" />
3131

32+
<text name="NameSurname" value="Name surname" />
33+
<text name="UserName" value="User name" />
34+
<text name="Name" value="Name" />
35+
<text name="Surname" value="Surname" />
36+
<text name="EmailAddress" value="Email address" />
37+
38+
<text name="Events" value="Events" />
39+
<text name="NewEvent" value="New event" />
40+
<text name="ShowCanceledEvents" value="Show canceled events" />
41+
<text name="ThisEventIsCanceled" value="This event is canceled" />
42+
<text name="Details" value="Details" />
43+
<text name="XofYregistered" value="{0} of {1} registered" />
44+
<text name="XregisteredNoNewRegistrationAvailable" value="{0} registered. No new registration available." />
45+
<text name="XregisteredUnlimitedRegistrations" value="{0} registered. Unlimited registrations." />
46+
<text name="BackToEvents" value="Back to events" />
47+
<text name="Register" value="Register" />
48+
<text name="CancelRegistration" value="Cancel registration" />
49+
<text name="CancelTheEvent" value="Cancel the event" />
50+
<text name="XregisteredOfYAvailableRegistration" value="{0} registered users (of {1} available registrations)" />
51+
<text name="Title" value="Title" />
52+
<text name="Description" value="Description" />
53+
<text name="Date" value="Date" />
54+
<text name="MaxRegistrationCount" value="Max registration count" />
55+
<text name="Unlimited" value="Unlimited" />
56+
<text name="Cancel" value="Cancel" />
57+
<text name="Save" value="Save" />
58+
<text name="AboutTheCloudEvent" value="About the Cloud Event" />
59+
<text name="CloudEventDescription" value="This is an example multi-tenant application built using ASP.NET Boilerplate framework." />
60+
<text name="SomeStatistics" value="Some Statistics" />
61+
<text name="StatisticsNote" value="Note: These statistics include all tenants, not only current tenant." />
62+
<text name="Links" value="Links" />
63+
<text name="SourceCodeOfThisApplication" value="Source code of this application" />
64+
<text name="AbpOfficialWebSite" value="ASP.NET Boilerplate official web site" />
65+
<text name="OfficialForum" value="Official forum" />
66+
<text name="Logout" value="Logout" />
67+
<text name="Tenants" value="Tenants" />
68+
<text name="Users" value="Users" />
69+
<text name="Registrations" value="Registrations" />
70+
<text name="OrLoginWith" value="Or login with" />
71+
<text name="BecomeATenant" value="BECOME A TENANT" />
72+
<text name="BecomeATenantHint" value="A tenant can have it's own users and events. It's free!" />
73+
<text name="AdminPassword" value="Admin password" />
74+
<text name="CreateTheTenant" value="Create the tenant" />
75+
3276
</texts>
3377
</localizationDictionary>
Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
<div ng-controller="app.views.about as vm">
2-
<h2>About the Cloud Event</h2>
2+
<h2>@L("AboutTheCloudEvent")</h2>
33
<p>
4-
This is an example multi-tenant application built using ASP.NET Boilerplate framework.
4+
@L("CloudEventDescription")
55
</p>
66

7-
<h3>Some Statistics</h3>
7+
<h3>@L("SomeStatistics")</h3>
88

99
<div class="row statistics-list">
1010
<div class="col-sm-6 col-md-3" ng-repeat="statisticItem in vm.statisticItems">
@@ -15,12 +15,12 @@
1515
</div>
1616
</div>
1717

18-
<p><i>Note: These statistics include all tenants, not only current tenant.</i></p>
18+
<p><i>@L("StatisticsNote")</i></p>
1919

20-
<h3>Links</h3>
20+
<h3>@L("Links")</h3>
2121
<ul>
22-
<li>Source code of this application: <a href="https://github.com/aspnetboilerplate/eventcloud"><strong>github.com/aspnetboilerplate/eventcloud</strong></a></li>
23-
<li>ASP.NET Boilerplate official web site: <a href="http://www.aspnetboilerplate.com"><strong>aspnetboilerplate.com</strong></a></li>
24-
<li>Official forum: <a href="http://forum.aspnetboilerplate.com"><strong>forum.aspnetboilerplate.com</strong></a></li>
22+
<li>@L("SourceCodeOfThisApplication"): <a href="https://github.com/aspnetboilerplate/eventcloud"><strong>github.com/aspnetboilerplate/eventcloud</strong></a></li>
23+
<li>@L("AbpOfficialWebSite"): <a href="http://www.aspnetboilerplate.com"><strong>aspnetboilerplate.com</strong></a></li>
24+
<li>@L("OfficialForum"): <a href="http://forum.aspnetboilerplate.com"><strong>forum.aspnetboilerplate.com</strong></a></li>
2525
</ul>
2626
</div>
Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,40 @@
11
<div>
22
<div class="modal-header">
3-
<h3 class="modal-title">Create New Event</h3>
3+
<h3 class="modal-title">@L("NewEvent")</h3>
44
</div>
55
<div class="modal-body">
66
<form class="form-horizontal">
77
<fieldset>
88
<div class="form-group">
9-
<label class="col-lg-2 control-label">Title:</label>
9+
<label class="col-lg-2 control-label">@L("Title")</label>
1010
<div class="col-lg-10">
11-
<input ng-model="vm.event.title" type="text" class="form-control" name="EventTitle" placeholder="Enter event title">
11+
<input ng-model="vm.event.title" type="text" class="form-control" name="EventTitle">
1212
</div>
1313
</div>
1414
<div class="form-group">
15-
<label class="col-lg-2 control-label">Description:</label>
15+
<label class="col-lg-2 control-label">@L("Description")</label>
1616
<div class="col-lg-10">
17-
<textarea ng-model="vm.event.description" class="form-control" rows="5" name="EventDescription" placeholder="Describe your event in detail"></textarea>
17+
<textarea ng-model="vm.event.description" class="form-control" rows="5" name="EventDescription"></textarea>
1818
</div>
1919
</div>
2020
<div class="form-group">
21-
<label class="col-lg-2 control-label">Date:</label>
21+
<label class="col-lg-2 control-label">@L("Date")</label>
2222
<div class="col-lg-10">
2323
<input ng-model="vm.event.date" type="text" class="form-control" name="EventDate" placeholder="YYYY-MM-DD HH:MM">
2424
</div>
2525
</div>
2626
<div class="form-group">
27-
<label class="col-lg-2 control-label">Count:</label>
27+
<label class="col-lg-2 control-label">@L("MaxRegistrationCount")</label>
2828
<div class="col-lg-10">
29-
<input ng-model="vm.event.maxRegistrationCount" type="number" class="form-control" name="EventMaxRegistrationCount" placeholder="Max registration count">
30-
<small class="text-muted">0: Unlimited.</small>
29+
<input ng-model="vm.event.maxRegistrationCount" type="number" class="form-control" name="EventMaxRegistrationCount">
30+
<small class="text-muted">0: @L("Unlimited").</small>
3131
</div>
3232
</div>
3333
</fieldset>
3434
</form>
3535
</div>
3636
<div class="modal-footer">
37-
<button class="btn btn-warning" ng-click="vm.cancel()">Cancel</button>
38-
<button class="btn btn-primary" ng-click="vm.save()">Submit</button>
37+
<button class="btn btn-warning" ng-click="vm.cancel()">@L("Cancel")</button>
38+
<button class="btn btn-primary" ng-click="vm.save()">@L("Save")</button>
3939
</div>
4040
</div>

src/EventCloud.Web/App/Main/views/events/detail.cshtml

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,20 @@
33
<h2>{{vm.event.title}} <span class="event-date"><i class="fa fa-calendar-times-o"></i> {{vm.event.date | momentFormat:'DD.MM.YYYY'}}</span></h2>
44

55
<div class="event-actions">
6-
<a class="btn btn-sm btn-default" ng-click="vm.backToEventsPage()"><i class="fa fa-arrow-circle-left"></i> back to events</a>
7-
<a class="btn btn-sm btn-primary" ng-if="!vm.isRegistered()" ng-click="vm.register()"><i class="fa fa-star"></i> Register</a>
8-
<a class="btn btn-sm btn-warning" ng-if="vm.isRegistered()" ng-click="vm.cancelRegistertration()"><i class="fa fa-times"></i> Cancel registration</a>
9-
<a class="btn btn-sm btn-danger" ng-if="vm.isEventCreator()" ng-click="vm.cancelEvent()"><i class="fa fa-times"></i> Cancel the event</a>
6+
<a class="btn btn-sm btn-default" ng-click="vm.backToEventsPage()"><i class="fa fa-arrow-circle-left"></i> @L("BackToEvents")</a>
7+
<a class="btn btn-sm btn-primary" ng-if="!vm.isRegistered()" ng-click="vm.register()"><i class="fa fa-star"></i> @L("Register")</a>
8+
<a class="btn btn-sm btn-warning" ng-if="vm.isRegistered()" ng-click="vm.cancelRegistertration()"><i class="fa fa-times"></i> @L("CancelRegistration")</a>
9+
<a class="btn btn-sm btn-danger" ng-if="vm.isEventCreator()" ng-click="vm.cancelEvent()"><i class="fa fa-times"></i> @L("CancelTheEvent")</a>
1010
</div>
1111

1212
<p>{{vm.event.description}}</p>
1313

1414
<hr/>
1515

1616
<div>
17-
<h5>{{vm.event.registrationsCount}} registered users (of {{vm.event.maxRegistrationCount}} available registrations)</h5>
17+
<h5>
18+
@L("XregisteredOfYAvailableRegistration", "{{vm.event.registrationsCount}}", "{{vm.event.maxRegistrationCount}}")
19+
</h5>
1820
<div class="registrar" ng-repeat="registration in vm.event.registrations">
1921
<div class="registrar-thumbnail">{{vm.getUserThumbnail(registration)}}</div>
2022
<div class="registrar-body">

src/EventCloud.Web/App/Main/views/events/index.cshtml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<div id="EventsIndex" ng-controller="app.views.events.index as vm">
22
<h2>
3-
<span>Events</span>
4-
<a ng-click="vm.openNewEventDialog()" class="btn btn-primary btn-sm"><i class="fa fa-plus"></i> New event</a>
3+
<span>@L("Events")</span>
4+
<a ng-click="vm.openNewEventDialog()" class="btn btn-primary btn-sm"><i class="fa fa-plus"></i> @L("NewEvent")</a>
55
<span class="pull-right event-filters">
6-
<input type="checkbox" ng-model="vm.filters.includeCanceledEvents" /> show canceled events
6+
<input type="checkbox" ng-model="vm.filters.includeCanceledEvents" /> @L("ShowCanceledEvents")
77
</span>
88
</h2>
99
<div class="row">
@@ -13,20 +13,20 @@
1313
{{event.title}}
1414
</h3>
1515
<p class="event-description">{{event.description | characters:100}}</p>
16-
<div ng-if="event.isCancelled" class="event-canceled-info">This event is canceled!</div>
16+
<div ng-if="event.isCancelled" class="event-canceled-info">@L("ThisEventIsCanceled")</div>
1717
<div class="event-registration-info">
1818
<span ng-if="event.registrationsCount < event.maxRegistrationCount">
19-
{{event.registrationsCount}} of {{event.maxRegistrationCount}} registred.
19+
@L("XofYregistered", "{{event.registrationsCount}}", "{{event.maxRegistrationCount}}")
2020
</span>
2121
<span ng-if="event.maxRegistrationCount > 0 && event.registrationsCount >= event.maxRegistrationCount">
22-
{{event.registrationsCount}} registered. No new registration available.
22+
@L("XregisteredNoNewRegistrationAvailable", "{{event.registrationsCount}}")
2323
</span>
2424
<span ng-if="event.maxRegistrationCount <= 0">
25-
{{event.registrationsCount}} registered. Unlimited registrations.
25+
@L("XregisteredUnlimitedRegistrations", "{{event.registrationsCount}}")
2626
</span>
2727
</div>
2828
<div class="event-actions">
29-
<a class="btn btn-sm btn-info" ng-href="#/events/{{event.id}}">Details <i class="fa fa-arrow-circle-right"></i></a>
29+
<a class="btn btn-sm btn-info" ng-href="#/events/{{event.id}}">@L("Details") <i class="fa fa-arrow-circle-right"></i></a>
3030
</div>
3131
<span class="event-date"><i class="fa fa-calendar-times-o"></i> {{event.date | momentFormat:'DD.MM.YYYY'}}</span>
3232
</div>

src/EventCloud.Web/App/Main/views/layout/header.cshtml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
<li class="dropdown">
3232
<a href="" data-toggle="dropdown"><i class="fa fa-user"></i> <span>{{vm.getShownUserName()}}</span> <b class="caret"></b></a>
3333
<ul class="dropdown-menu">
34-
<li><a href="@Url.Action("Logout", "Account")"><i class="fa fa-sign-out"></i> Logout</a></li>
34+
<li><a href="@Url.Action("Logout", "Account")"><i class="fa fa-sign-out"></i> @L("Logout")</a></li>
3535
</ul>
3636
</li>
3737
</ul>

src/EventCloud.Web/Models/Account/RegisterViewModel.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,10 @@ public class RegisterViewModel : IInputDto
3333
public string Password { get; set; }
3434

3535
public bool IsExternalLogin { get; set; }
36+
37+
public RegisterViewModel()
38+
{
39+
TenancyName = Tenant.DefaultTenantName;
40+
}
3641
}
3742
}

0 commit comments

Comments
 (0)