Client Side localization
diff --git a/src/Coevery.Web/Core/Common/Services/AutoLoadResourceFilter.cs b/src/Coevery.Web/Core/Common/Services/AutoLoadResourceFilter.cs
index 370c514..ae72db3 100644
--- a/src/Coevery.Web/Core/Common/Services/AutoLoadResourceFilter.cs
+++ b/src/Coevery.Web/Core/Common/Services/AutoLoadResourceFilter.cs
@@ -4,6 +4,7 @@
using System.Web;
using System.Web.Mvc;
using Coevery.DisplayManagement;
+using Coevery.DisplayManagement.Shapes;
using Coevery.Mvc.Filters;
namespace Coevery.Core.Common.Services
@@ -30,9 +31,10 @@
return;
var ctx = _workContextAccessor.GetContext();
- var footer = ctx.Layout.Footer;
- var resource = _autoLoadResourceProviders.SelectMany<IAutoLoadResourceProvider, dynamic>(x => x.GetResources(_shapeFactory));
- footer.AddRange(resource);
+ var resources = _autoLoadResourceProviders.SelectMany<IAutoLoadResourceProvider, dynamic>(x => x.GetResources(_shapeFactory));
+ foreach (var o in resources) {
+ ctx.Layout.Footer.Add(o);
+ }
}
public void OnResultExecuted(ResultExecutedContext filterContext) {
diff --git a/src/Coevery.Web/Modules/Coevery.Common/Scripts/directives/jqGrid-directive.js b/src/Coevery.Web/Modules/Coevery.Common/Scripts/directives/jqGrid-directive.js
index 2db9e49..02612db 100644
--- a/src/Coevery.Web/Modules/Coevery.Common/Scripts/directives/jqGrid-directive.js
+++ b/src/Coevery.Web/Modules/Coevery.Common/Scripts/directives/jqGrid-directive.js
@@ -149,7 +149,7 @@
}]);
gridz.directive("agGrid", [
- "$rootScope", "$compile", "logger", "$http", function ($rootScope, $compile, logger, $http) {
+ "$rootScope", "$compile", "logger", "$http", '$i18next', function ($rootScope, $compile, logger, $http, $i18next) {
var link;
link = function ($scope, $element, attrs, gridCtrl) {
var alias, initializeGrid, loadGrid;
@@ -181,6 +181,8 @@
pager = $(gridOptions.pager + '_center');
if (pager.find(".custom-pager").length === 0) {
var pagerOption = {
+ prevText: $i18next('Prev'),
+ nextText: $i18next('Next'),
items: $grid.getGridParam("records"),
itemsOnPage: $grid.getGridParam("rowNum"),
currentPage: $grid.getGridParam("page"),
diff --git a/src/Coevery.Web/Modules/Coevery.Common/Views/ClientBootstrapScript.cshtml b/src/Coevery.Web/Modules/Coevery.Common/Views/ClientBootstrapScript.cshtml
index c8e90ed..6c047d3 100644
--- a/src/Coevery.Web/Modules/Coevery.Common/Views/ClientBootstrapScript.cshtml
+++ b/src/Coevery.Web/Modules/Coevery.Common/Views/ClientBootstrapScript.cshtml
@@ -20,7 +20,14 @@
//Now load code.
require(['@Url.Content("~/Modules/Coevery.Common/scripts/app/main.js")']);
}());
- //]]>
+ //]]>
+
+ angular.module('jm.i18next').config(['$i18nextProvider', function ($i18nextProvider) {
+ var resources = {
+ dev: { translation: { } }
+ };
+ $i18nextProvider.options = { resStore: resources };
+ }]);
var coevery = angular.module('coevery', ['ng', 'ngResource', 'agt.couchPotato', 'ui.router', 'ui.utils',
'@layoutDirectiveName', 'coevery.grid', 'coevery.picklist', 'angular-underscore', 'ui.bootstrap', 'jm.i18next',
'coevery.common', 'coevery.wizard', 'coevery.Busy', 'coevery.dependency'@if(Model.IsFrontEnd){<text>, 'coevery.filter'</text>}]);
diff --git a/src/Coevery.Web/Modules/Coevery.Common/Views/Common.JavascriptLocalizationResource.cshtml b/src/Coevery.Web/Modules/Coevery.Common/Views/Common.JavascriptLocalizationResource.cshtml
index 2ce48f2..93a1f74 100644
--- a/src/Coevery.Web/Modules/Coevery.Common/Views/Common.JavascriptLocalizationResource.cshtml
+++ b/src/Coevery.Web/Modules/Coevery.Common/Views/Common.JavascriptLocalizationResource.cshtml
@@ -1,17 +1,19 @@
-@{
- var deleteConfirm = T("Delete Confirm");
- var s = "";
- s.ToCharArray();
+
+@using (Script.Foot()) {
+ <script>
+
+ angular.module('jm.i18next').config(['$i18nextProvider', function ($i18nextProvider) {
+ var translations = {
+ 'Delete Confirm': '@T("Delete Confirm")',
+ 'No': '@T("No")',
+ 'Yes': '@T("Yes")'
+ };
+ var resources = {
+ dev: { translation: translations }
+ };
+ $.extend(true, $i18nextProvider.options, { resStore: resources });
+ }]);
+
+ </script>
}
-<script>
- (function() {
- var additionalResources = {
- 'Delete Confirm': '@T("Delete Confirm")',
- 'No': '@T("No")',
- 'Yes': '@T("Yes")'
- };
- i18n.addResourceBundle('dev', 'translation', additionalResources);
- })();
-
-</script>
\ No newline at end of file
diff --git a/src/Coevery.Web/Modules/Coevery.Entities/Views/SystemAdmin/Detail.cshtml b/src/Coevery.Web/Modules/Coevery.Entities/Views/SystemAdmin/Detail.cshtml
index cca0ae0..ddbba72 100644
--- a/src/Coevery.Web/Modules/Coevery.Entities/Views/SystemAdmin/Detail.cshtml
+++ b/src/Coevery.Web/Modules/Coevery.Entities/Views/SystemAdmin/Detail.cshtml
@@ -12,7 +12,7 @@
<button class="btn btn-small" data-ng-click="publish()">
Publish
</button>
- <button type="button" class="btn btn-small" co-delete-button confirm-message="You really want to delete this entity?" delete-action="delete(@Model.Id)">
+ <button type="button" class="btn btn-small" co-delete-button data-confirm-message="@T("You really want to delete this entity?") delete-action="delete(@Model.Id)">
<i class="icon-remove"></i> Delete
</button>
<button type="button" data-ng-disabled="isPublished=='False'"
diff --git a/src/Coevery.Web/Modules/Coevery.Entities/Views/SystemAdmin/List.cshtml b/src/Coevery.Web/Modules/Coevery.Entities/Views/SystemAdmin/List.cshtml
index 46fabc9..5a5cc43 100644
--- a/src/Coevery.Web/Modules/Coevery.Entities/Views/SystemAdmin/List.cshtml
+++ b/src/Coevery.Web/Modules/Coevery.Entities/Views/SystemAdmin/List.cshtml
@@ -18,7 +18,7 @@
<button class="btn btn-small" data-ng-click="publish()" ng-disabled="selectedItems.length > 1">
Publish
</button>
- <button class="btn btn-small" co-delete-button confirm-message="You really want to delete this entity?" delete-action="delete()">
+ <button class="btn btn-small" co-delete-button confirm-message="@T("You really want to delete this entity?")" delete-action="delete()">
<i class="icon-remove"></i> Delete
</button>
</div>
diff --git a/src/Coevery.Web/Modules/Coevery.Projections/Coevery.Projections.csproj b/src/Coevery.Web/Modules/Coevery.Projections/Coevery.Projections.csproj
index c18b7e3..f9b323f 100644
--- a/src/Coevery.Web/Modules/Coevery.Projections/Coevery.Projections.csproj
+++ b/src/Coevery.Web/Modules/Coevery.Projections/Coevery.Projections.csproj
@@ -234,6 +234,7 @@
<Compile Include="Services\IQueryService.cs" />
<Compile Include="Services\ISortCriteriaProvider.cs" />
<Compile Include="Services\ISortService.cs" />
+ <Compile Include="Services\JavascriptLocalizationResourceProvider.cs" />
<Compile Include="Services\LayoutProvider.cs" />
<Compile Include="Services\ProjectionManager.cs" />
<Compile Include="Services\ProjectionService.cs" />
@@ -392,6 +393,9 @@
<ItemGroup>
<Content Include="Views\jqGrid.Script.cshtml" />
</ItemGroup>
+ <ItemGroup>
+ <Content Include="Views\Projection.JavascriptLocalizationResource.cshtml" />
+ </ItemGroup>
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
diff --git a/src/Coevery.Web/Modules/Coevery.Projections/Services/JavascriptLocalizationResourceProvider.cs b/src/Coevery.Web/Modules/Coevery.Projections/Services/JavascriptLocalizationResourceProvider.cs
new file mode 100644
index 0000000..9deaa1a
--- /dev/null
+++ b/src/Coevery.Web/Modules/Coevery.Projections/Services/JavascriptLocalizationResourceProvider.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using Coevery.Core.Common.Services;
+
+namespace Coevery.Projections.Services {
+ public class JavascriptLocalizationResourceProvider : IAutoLoadResourceProvider {
+ public IEnumerable<dynamic> GetResources(dynamic shapeHelper) {
+ yield return shapeHelper.Projection_JavascriptLocalizationResource();
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Coevery.Web/Modules/Coevery.Projections/Views/Parts/ListView.Buttons.cshtml b/src/Coevery.Web/Modules/Coevery.Projections/Views/Parts/ListView.Buttons.cshtml
index 71504c2..1068df8 100644
--- a/src/Coevery.Web/Modules/Coevery.Projections/Views/Parts/ListView.Buttons.cshtml
+++ b/src/Coevery.Web/Modules/Coevery.Projections/Views/Parts/ListView.Buttons.cshtml
@@ -8,7 +8,7 @@
<button class="btn btn-small" data-ng-click="edit(selectedItems[0])" data-ng-disabled="selectedItems.length > 1">
<i class="icon-edit"></i> @T("Edit")
</button>
- <button class="btn btn-small" co-delete-button confirm-message="You really want to delete this entity?" delete-action="delete()">
+ <button class="btn btn-small" co-delete-button confirm-message="@T("You really want to delete this entity?") delete-action="delete()">
<i class="icon-remove"></i> @T("Delete")
</button>
</div>
\ No newline at end of file
diff --git a/src/Coevery.Web/Modules/Coevery.Projections/Views/Projection.JavascriptLocalizationResource.cshtml b/src/Coevery.Web/Modules/Coevery.Projections/Views/Projection.JavascriptLocalizationResource.cshtml
new file mode 100644
index 0000000..19f4f11
--- /dev/null
+++ b/src/Coevery.Web/Modules/Coevery.Projections/Views/Projection.JavascriptLocalizationResource.cshtml
@@ -0,0 +1,20 @@
+
+@using (Script.Foot()) {
+ <script>
+
+ angular.module('jm.i18next').config(['$i18nextProvider', function ($i18nextProvider) {
+ var translations = {
+ 'Prev': '@T("Prev")',
+ 'Next': '@T("Next")'
+ };
+ var resources = {
+ dev: { translation: translations }
+ };
+
+ debugger;
+ $.extend(true, $i18nextProvider.options, { resStore: resources });
+ }]);
+
+ </script>
+}
+
diff --git a/src/Coevery.Web/Modules/Coevery.Translations/Scripts/controllers/culturecontroller.js b/src/Coevery.Web/Modules/Coevery.Translations/Scripts/controllers/culturecontroller.js
index f050a3d..65566aa 100644
--- a/src/Coevery.Web/Modules/Coevery.Translations/Scripts/controllers/culturecontroller.js
+++ b/src/Coevery.Web/Modules/Coevery.Translations/Scripts/controllers/culturecontroller.js
@@ -1,5 +1,5 @@
'use strict';
-define(['core/app/detourService', 'Modules/Coevery.Translations/Scripts/services/columnDefinitionService'], function (detour) {
+define(['core/app/detourService'], function (detour) {
detour.registerController([
'TranslationCultureCtrl',
['$rootScope', '$scope', 'logger', '$state', '$stateParams', '$i18next',
@@ -8,7 +8,7 @@
$scope.FetchDefinitionViews = function () {
var metadataColumnDefs = [
- { name: 'Path', label: $i18next('Path'), hidden: true },
+ { name: 'Path', label: $i18next('Path'), hidden: true, key: true },
{ name: 'Module', label: $i18next('Module'), formatoptions: { hasView: true } },
{ name: 'Total', label: $i18next('Total') },
{ name: 'Translated', label: $i18next('Translated') },
diff --git a/src/Coevery.Web/Modules/Coevery.Translations/Scripts/controllers/listcontroller.js b/src/Coevery.Web/Modules/Coevery.Translations/Scripts/controllers/listcontroller.js
index cff671d..aecd3c6 100644
--- a/src/Coevery.Web/Modules/Coevery.Translations/Scripts/controllers/listcontroller.js
+++ b/src/Coevery.Web/Modules/Coevery.Translations/Scripts/controllers/listcontroller.js
@@ -7,7 +7,7 @@
$scope.FetchDefinitionViews = function() {
var columnDefs = [
- { name: 'Culture', label: $i18next('Culture'), hidden: true },
+ { name: 'Culture', label: $i18next('Culture'), hidden: true, key: true },
{
name: 'CultureDisplay',
label: $i18next('Culture'),