From 2d4014ca200b30562106126efe00b385337e0c08 Mon Sep 17 00:00:00 2001 From: Juanfran Date: Tue, 17 Mar 2015 11:19:22 +0100 Subject: [PATCH] taiga internationalization - angular-translate installed - users can change their language - translate coffee and jade - command line tool to find duplicate key values and replaces keys --- app/coffee/app.coffee | 22 +- app/coffee/modules/admin/lightboxes.coffee | 14 +- app/coffee/modules/admin/memberships.coffee | 46 +- .../modules/admin/project-profile.coffee | 102 +- .../modules/admin/project-values.coffee | 33 +- app/coffee/modules/admin/roles.coffee | 20 +- app/coffee/modules/admin/third-parties.coffee | 58 +- app/coffee/modules/auth.coffee | 98 +- app/coffee/modules/backlog/lightboxes.coffee | 29 +- app/coffee/modules/backlog/main.coffee | 56 +- app/coffee/modules/backlog/sortable.coffee | 6 +- app/coffee/modules/backlog/sprints.coffee | 24 +- app/coffee/modules/base.coffee | 2 +- app/coffee/modules/base/i18n.coffee | 74 -- app/coffee/modules/common/attachments.coffee | 14 +- app/coffee/modules/common/components.coffee | 158 ++-- app/coffee/modules/common/confirm.coffee | 35 +- .../modules/common/custom-field-values.coffee | 6 +- app/coffee/modules/common/estimation.coffee | 11 +- app/coffee/modules/common/filters.coffee | 9 +- app/coffee/modules/common/history.coffee | 95 +- app/coffee/modules/common/importer.coffee | 22 +- app/coffee/modules/common/lightboxes.coffee | 29 +- app/coffee/modules/common/wisiwyg.coffee | 44 +- app/coffee/modules/issues/detail.coffee | 47 +- app/coffee/modules/issues/list.coffee | 18 +- app/coffee/modules/kanban/main.coffee | 26 +- app/coffee/modules/locales.coffee | 22 - app/coffee/modules/locales/.empty | 0 app/coffee/modules/projects/lightboxes.coffee | 8 +- app/coffee/modules/related-tasks.coffee | 7 +- app/coffee/modules/resources/projects.coffee | 7 +- app/coffee/modules/taskboard/charts.coffee | 12 +- .../modules/taskboard/lightboxes.coffee | 21 +- app/coffee/modules/taskboard/main.coffee | 1 - app/coffee/modules/tasks/detail.coffee | 20 +- app/coffee/modules/team/main.coffee | 19 +- .../user-settings/change-password.coffee | 11 +- app/coffee/modules/user-settings/main.coffee | 27 +- .../user-settings/notifications.coffee | 2 +- app/coffee/modules/userstories/detail.coffee | 41 +- app/coffee/modules/wiki/main.coffee | 13 +- app/coffee/modules/wiki/nav.coffee | 9 +- app/locales/en/app.json | 63 -- app/locales/locale-en.json | 872 ++++++++++++++++++ .../admin/admin-membership-paginator.jade | 4 +- .../admin/admin-memberships-row-checkbox.jade | 4 +- app/partials/admin/admin-memberships.jade | 9 +- .../admin/admin-project-default-values.jade | 7 +- app/partials/admin/admin-project-export.jade | 15 +- app/partials/admin/admin-project-modules.jade | 50 +- app/partials/admin/admin-project-profile.jade | 32 +- app/partials/admin/admin-project-reports.jade | 26 +- .../admin-project-values-custom-fields.jade | 19 +- .../admin/admin-project-values-points.jade | 6 +- .../admin-project-values-priorities.jade | 6 +- .../admin-project-values-severities.jade | 6 +- .../admin/admin-project-values-status.jade | 25 +- .../admin/admin-project-values-types.jade | 9 +- app/partials/admin/admin-roles.jade | 19 +- .../admin/admin-third-parties-bitbucket.jade | 20 +- .../admin/admin-third-parties-github.jade | 16 +- .../admin/admin-third-parties-gitlab.jade | 60 +- .../admin/admin-third-parties-webhooks.jade | 172 ++-- app/partials/admin/project-csv.jade | 16 + app/partials/attachment/attachment-edit.jade | 10 +- app/partials/attachment/attachment.jade | 10 +- app/partials/attachment/attachments.jade | 16 +- .../auth/change-password-from-recovery.jade | 4 +- app/partials/auth/forgot-password.jade | 4 +- app/partials/auth/invitation.jade | 4 +- app/partials/auth/login-text.jade | 4 +- app/partials/auth/login.jade | 4 +- app/partials/auth/register.jade | 4 +- app/partials/backlog/backlog.jade | 20 +- app/partials/backlog/progress-bar.jade | 6 +- app/partials/backlog/sprint-header.jade | 22 +- .../backlog/us-role-points-popover.jade | 2 +- .../common/components/assigned-to.jade | 6 +- .../common/components/block-button.jade | 4 +- .../common/components/created-by.jade | 3 +- .../common/components/delete-button.jade | 2 +- .../editable-description-msg-edit-mode.jade | 3 +- .../editable-description-msg-read-mode.jade | 2 +- .../components/editable-description.jade | 8 +- .../common/components/editable-subject.jade | 4 +- .../common/components/main-title.jade | 6 +- .../common/components/status-display.jade | 8 +- app/partials/common/components/watchers.jade | 8 +- .../us-estimation-points-per-role.jade | 2 +- .../common/history/history-activity.jade | 5 +- .../common/history/history-base-entries.jade | 3 +- app/partials/common/history/history-base.jade | 14 +- .../history/history-change-generic.jade | 4 +- .../common/history/history-change-list.jade | 4 +- .../common/history/history-change-points.jade | 6 +- .../history/history-deleted-comment.jade | 8 +- .../lightbox/lightbox-assigned-to-users.jade | 8 +- .../common/lightbox/lightbox-assigned-to.jade | 4 +- .../common/lightbox/lightbox-block.jade | 6 +- .../lightbox-blocking-message-input.jade | 2 +- .../common/lightbox/lightbox-users.jade | 6 +- app/partials/common/tag/lb-tag-line-tags.jade | 2 +- app/partials/common/tag/lb-tag-line.jade | 4 +- app/partials/common/tag/tag-line.jade | 8 +- .../wysiwyg/wysiwyg-markitup-preview.jade | 2 +- app/partials/contrib/main.jade | 16 +- .../custom-attribute-value-edit.jade | 2 +- .../custom-attribute-value.jade | 2 +- .../custom-attributes-values.jade | 2 +- app/partials/error/error.jade | 7 +- app/partials/error/not-found.jade | 8 +- app/partials/error/permission-denied.jade | 8 +- .../includes/components/addnewtask.jade | 4 +- .../includes/components/addnewus.jade | 6 +- .../includes/components/backlog-row.jade | 10 +- app/partials/includes/components/beta.jade | 2 +- app/partials/includes/components/filter.jade | 5 - .../includes/components/large-summary.jade | 36 - .../includes/components/mainTitle.jade | 2 +- .../components/notification-message.jade | 18 +- .../includes/components/sprint-summary.jade | 14 +- app/partials/includes/components/summary.jade | 8 +- .../includes/components/taskboard-task.jade | 6 +- .../includes/components/watchers.jade | 13 - app/partials/includes/modules/admin-menu.jade | 14 +- .../admin-submenu-project-profile.jade | 12 +- .../modules/admin-submenu-project-values.jade | 14 +- .../includes/modules/admin-submenu-roles.jade | 6 +- .../modules/admin-submenu-third-parties.jade | 2 +- .../includes/modules/admin-submenu.jade | 16 +- .../admin/admin-custom-attributes.jade | 30 +- .../modules/admin/admin-membership-table.jade | 8 +- .../modules/admin/admin-submenu-contrib.jade | 2 +- .../modules/admin/default-values.jade | 18 +- .../includes/modules/admin/project-csv.jade | 17 +- .../modules/admin/project-points.jade | 30 +- .../modules/admin/project-status.jade | 34 +- .../includes/modules/admin/project-types.jade | 26 +- .../modules/admin/project-us-status.jade | 47 +- .../includes/modules/backlog-filters.jade | 20 +- .../includes/modules/backlog-table.jade | 8 +- .../includes/modules/cancel-account-form.jade | 13 +- .../includes/modules/category-config.jade | 75 -- .../includes/modules/change-email-form.jade | 13 +- .../change-password-from-recovery-form.jade | 15 +- .../includes/modules/colors-table.jade | 19 +- .../includes/modules/comment-activity.jade | 8 +- .../includes/modules/filter-tags.jade | 12 - app/partials/includes/modules/filters.jade | 41 - .../includes/modules/forgot-form.jade | 11 +- .../modules/invitation-login-form.jade | 10 +- .../modules/invitation-register-form.jade | 12 +- .../includes/modules/issues-filters.jade | 30 +- .../includes/modules/issues-table.jade | 24 +- .../includes/modules/kanban-table.jade | 12 +- .../includes/modules/lightbox-add-member.jade | 6 +- .../includes/modules/lightbox-ask-choice.jade | 10 +- .../modules/lightbox-attachments.jade | 17 - .../modules/lightbox-create-issue.jade | 10 +- .../modules/lightbox-delete-project.jade | 16 +- .../includes/modules/lightbox-feedback.jade | 8 +- .../modules/lightbox-generic-ask.jade | 10 +- .../modules/lightbox-generic-error.jade | 6 +- .../modules/lightbox-generic-loading.jade | 2 +- .../modules/lightbox-generic-success.jade | 6 +- .../includes/modules/lightbox-issue-bulk.jade | 8 +- .../includes/modules/lightbox-search.jade | 8 +- .../modules/lightbox-sprint-add-edit.jade | 17 +- .../includes/modules/lightbox-task-bulk.jade | 8 +- .../modules/lightbox-task-create-edit.jade | 20 +- .../includes/modules/lightbox-us-bulk.jade | 8 +- .../modules/lightbox-us-create-edit.jade | 19 +- .../includes/modules/list-filters-kanban.jade | 12 - .../includes/modules/list-filters.jade | 3 +- app/partials/includes/modules/loader.jade | 2 +- app/partials/includes/modules/login-form.jade | 8 +- .../includes/modules/projects-nav.jade | 2 +- .../includes/modules/register-form.jade | 12 +- .../includes/modules/related-tasks.jade | 2 +- .../includes/modules/search-filter.jade | 8 +- app/partials/includes/modules/search-in.jade | 4 +- .../includes/modules/search-result-table.jade | 36 +- app/partials/includes/modules/sprint.jade | 4 +- app/partials/includes/modules/sprints.jade | 10 +- .../includes/modules/taskboard-table.jade | 18 +- .../includes/modules/team/team-filters.jade | 6 +- .../includes/modules/team/team-table.jade | 28 +- .../includes/modules/user-settings-menu.jade | 8 +- .../mail-notifications-table.jade | 8 +- app/partials/includes/modules/wiki-nav.jade | 0 .../modules/wizard-create-project.jade | 24 +- app/partials/issue/issue-paginator.jade | 4 +- app/partials/issue/issue-priority-button.jade | 2 +- app/partials/issue/issue-severity-button.jade | 2 +- app/partials/issue/issue-type-button.jade | 2 +- app/partials/issue/issues-detail.jade | 20 +- app/partials/issue/issues-filters.jade | 2 +- app/partials/issue/issues-status-button.jade | 2 +- app/partials/issue/issues.jade | 2 + .../issue/promote-issue-to-us-button.jade | 2 +- app/partials/kanban/kanban-task.jade | 14 +- app/partials/kanban/kanban.jade | 2 + app/partials/project/project-colors.jade | 3 +- app/partials/project/project-menu.jade | 44 +- .../project/project-navigation-base.jade | 12 +- app/partials/project/project.jade | 10 +- app/partials/project/projects.jade | 16 +- app/partials/search/search.jade | 2 + .../task/related-task-create-form.jade | 10 +- app/partials/task/related-task-row-edit.jade | 10 +- app/partials/task/related-task-row.jade | 10 +- app/partials/task/task-detail.jade | 26 +- app/partials/taskboard/taskboard-user.jade | 2 +- app/partials/taskboard/taskboard.jade | 2 + app/partials/team/leave-project.jade | 3 +- app/partials/team/team-filter.jade | 2 +- app/partials/team/team.jade | 2 + .../us/us-client-requirement-button.jade | 3 +- app/partials/us/us-detail.jade | 26 +- app/partials/us/us-status-button.jade | 2 +- app/partials/us/us-task-progress.jade | 5 +- .../us/us-team-requirement-button.jade | 3 +- app/partials/user/cancel-account.jade | 4 +- app/partials/user/change-email.jade | 4 +- .../lightbox/lightbox-delete-account.jade | 16 +- app/partials/user/mail-notifications.jade | 6 +- app/partials/user/user-change-password.jade | 18 +- app/partials/user/user-profile.jade | 39 +- app/partials/wiki/editable-wiki-content.jade | 12 +- app/partials/wiki/wiki-nav.jade | 10 +- app/partials/wiki/wiki-summary.jade | 6 +- app/partials/wiki/wiki.jade | 8 +- app/styles/components/kanban-task.scss | 3 + app/styles/components/summary.scss | 1 - app/styles/layout/us-detail.scss | 3 +- .../modules/admin/admin-functionalities.scss | 2 +- app/styles/modules/auth/cancel-account.scss | 8 + .../modules/auth/change-email-form.scss | 13 + app/styles/modules/filters/filter-tags.scss | 21 - bower.json | 5 +- gulpfile.js | 19 +- locales.js | 175 ++++ main-sass.js | 1 + package.json | 4 + 245 files changed, 2877 insertions(+), 1916 deletions(-) delete mode 100644 app/coffee/modules/base/i18n.coffee delete mode 100644 app/coffee/modules/locales.coffee delete mode 100644 app/coffee/modules/locales/.empty delete mode 100644 app/locales/en/app.json create mode 100644 app/locales/locale-en.json create mode 100644 app/partials/admin/project-csv.jade delete mode 100644 app/partials/includes/components/filter.jade delete mode 100644 app/partials/includes/components/large-summary.jade delete mode 100644 app/partials/includes/components/watchers.jade delete mode 100644 app/partials/includes/modules/category-config.jade delete mode 100644 app/partials/includes/modules/filter-tags.jade delete mode 100644 app/partials/includes/modules/filters.jade delete mode 100644 app/partials/includes/modules/lightbox-attachments.jade delete mode 100644 app/partials/includes/modules/list-filters-kanban.jade delete mode 100644 app/partials/includes/modules/wiki-nav.jade create mode 100644 app/styles/modules/auth/change-email-form.scss delete mode 100644 app/styles/modules/filters/filter-tags.scss create mode 100644 locales.js diff --git a/app/coffee/app.coffee b/app/coffee/app.coffee index 6858425d..a0140849 100644 --- a/app/coffee/app.coffee +++ b/app/coffee/app.coffee @@ -36,7 +36,7 @@ taiga.generateUniqueSessionIdentifier = -> taiga.sessionId = taiga.generateUniqueSessionIdentifier() -configure = ($routeProvider, $locationProvider, $httpProvider, $provide, $tgEventsProvider, tgLoaderProvider, $compileProvider) -> +configure = ($routeProvider, $locationProvider, $httpProvider, $provide, $tgEventsProvider, tgLoaderProvider, $compileProvider, $translateProvider) -> $routeProvider.when("/", {templateUrl: "project/projects.html", resolve: {loader: tgLoaderProvider.add()}}) @@ -236,23 +236,33 @@ configure = ($routeProvider, $locationProvider, $httpProvider, $provide, $tgEven $compileProvider.debugInfoEnabled(window.taigaConfig.debugInfo || false) -init = ($log, $i18n, $config, $rootscope, $auth, $events, $analytics) -> - $i18n.initialize($config.get("defaultLanguage")) + $translateProvider.useStaticFilesLoader({ + prefix: '/locales/locale-', + suffix: '.json' + }) + + $translateProvider.preferredLanguage('en') + +init = ($log, $config, $rootscope, $auth, $events, $analytics, $translate) -> $log.debug("Initialize application") $rootscope.contribPlugins = @.taigaContribPlugins if $auth.isAuthenticated() $events.setupConnection() + user = $auth.getUser() + + $translate.use(user.lang) if user.lang + $analytics.initialize() + modules = [ # Main Global Modules "taigaBase", "taigaCommon", "taigaResources", - "taigaLocales", "taigaAuth", "taigaEvents", @@ -281,6 +291,7 @@ modules = [ # Vendor modules "ngRoute", "ngAnimate", + "pascalprecht.translate" ].concat(_.map(@.taigaContribPlugins, (plugin) -> plugin.module)) # Main module definition @@ -294,16 +305,17 @@ module.config([ "$tgEventsProvider", "tgLoaderProvider", "$compileProvider", + "$translateProvider", configure ]) module.run([ "$log", - "$tgI18n", "$tgConfig", "$rootScope", "$tgAuth", "$tgEvents", "$tgAnalytics", + "$translate" init ]) diff --git a/app/coffee/modules/admin/lightboxes.coffee b/app/coffee/modules/admin/lightboxes.coffee index a900273c..a12e4b52 100644 --- a/app/coffee/modules/admin/lightboxes.coffee +++ b/app/coffee/modules/admin/lightboxes.coffee @@ -30,10 +30,10 @@ MAX_MEMBERSHIP_FIELDSETS = 4 ## Create Members Lightbox Directive ############################################################################# -CreateMembersDirective = ($rs, $rootScope, $confirm, $loading ,lightboxService) -> +CreateMembersDirective = ($rs, $rootScope, $confirm, $loading ,lightboxService, $compile) -> extraTextTemplate = """
-
@@ -42,7 +42,7 @@ CreateMembersDirective = ($rs, $rootScope, $confirm, $loading ,lightboxService) template = _.template("""
- data-required="true" <% } %> data-type="email" /> + data-required="true" <% } %> data-type="email" />