Allow to define RTL languages so the content can be mirrored

stable
Daniel García 2018-05-30 16:03:08 +02:00
parent f821d83310
commit 93a7c9f91e
6 changed files with 18 additions and 8 deletions

View File

@ -753,7 +753,7 @@ i18nInit = (lang, $translate) ->
init = ($log, $rootscope, $auth, $events, $analytics, $translate, $location, $navUrls, appMetaService, init = ($log, $rootscope, $auth, $events, $analytics, $translate, $location, $navUrls, appMetaService,
loaderService, navigationBarService, errorHandlingService, lightboxService) -> loaderService, navigationBarService, errorHandlingService, lightboxService, $tgConfig) ->
$log.debug("Initialize application") $log.debug("Initialize application")
$rootscope.$on '$translatePartialLoaderStructureChanged', () -> $rootscope.$on '$translatePartialLoaderStructureChanged', () ->
@ -782,6 +782,9 @@ init = ($log, $rootscope, $auth, $events, $analytics, $translate, $location, $na
$rootscope.$on "$translateChangeEnd", (e, ctx) -> $rootscope.$on "$translateChangeEnd", (e, ctx) ->
lang = ctx.language lang = ctx.language
i18nInit(lang, $translate) i18nInit(lang, $translate)
# RTL
rtlLanguages = $tgConfig.get("rtlLanguages", [])
$rootscope.isRTL = rtlLanguages.indexOf(lang) > -1
# bluebird # bluebird
Promise.setScheduler (cb) -> Promise.setScheduler (cb) ->
@ -930,5 +933,6 @@ module.run([
"tgNavigationBarService", "tgNavigationBarService",
"tgErrorHandlingService", "tgErrorHandlingService",
"lightboxService", "lightboxService",
"$tgConfig",
init init
]) ])

View File

@ -29,9 +29,13 @@ module = angular.module("taigaCommon", [])
############################################################################# #############################################################################
## Default datepicker config ## Default datepicker config
############################################################################# #############################################################################
DataPickerConfig = ($translate) -> DataPickerConfig = ($translate, $config, $auth) ->
return { return {
get: () -> get: () ->
user = $auth.getUser()
lang = user.lang || $translate.preferredLanguage()
rtlLanguages = $config.get("rtlLanguages", [])
isRTL = rtlLanguages.indexOf(lang) > -1
return { return {
i18n: { i18n: {
previousMonth: $translate.instant("COMMON.PICKERDATE.PREV_MONTH"), previousMonth: $translate.instant("COMMON.PICKERDATE.PREV_MONTH"),
@ -69,13 +73,13 @@ DataPickerConfig = ($translate) ->
$translate.instant("COMMON.PICKERDATE.WEEK_DAYS_SHORT.SAT") $translate.instant("COMMON.PICKERDATE.WEEK_DAYS_SHORT.SAT")
] ]
}, },
isRTL: $translate.instant("COMMON.PICKERDATE.IS_RTL") == "true", isRTL: isRTL,
firstDay: parseInt($translate.instant("COMMON.PICKERDATE.FIRST_DAY_OF_WEEK"), 10), firstDay: parseInt($translate.instant("COMMON.PICKERDATE.FIRST_DAY_OF_WEEK"), 10),
format: $translate.instant("COMMON.PICKERDATE.FORMAT") format: $translate.instant("COMMON.PICKERDATE.FORMAT")
} }
} }
module.factory("tgDatePickerConfigService", ["$translate", DataPickerConfig]) module.factory("tgDatePickerConfigService", ["$translate", "$tgConfig", "$tgAuth", DataPickerConfig])
############################################################################# #############################################################################
## Get the selected text ## Get the selected text

View File

@ -1,5 +1,5 @@
doctype html doctype html
html(lang="en") html(lang="en", ng-attr-dir="{{ isRTL ? 'rtl' : 'ltr' }}")
head head
meta(charset="utf-8") meta(charset="utf-8")
meta(http-equiv="content-type", content="text/html; charset=utf-8") meta(http-equiv="content-type", content="text/html; charset=utf-8")
@ -18,7 +18,7 @@ html(lang="en")
script(type='text/javascript'). script(type='text/javascript').
window.prerenderReady = false; window.prerenderReady = false;
body(tg-main) body(tg-main, ng-class="{'rtl': isRTL}")
div(tg-navigation-bar, ng-if="!errorHandling.showingError") div(tg-navigation-bar, ng-if="!errorHandling.showingError")
div(ng-if="!errorHandling.showingError") div(ng-if="!errorHandling.showingError")
div.master(ng-view) div.master(ng-view)

View File

@ -79,7 +79,6 @@
}, },
"PICKERDATE": { "PICKERDATE": {
"FORMAT": "DD MMM YYYY", "FORMAT": "DD MMM YYYY",
"IS_RTL": "false",
"FIRST_DAY_OF_WEEK": "1", "FIRST_DAY_OF_WEEK": "1",
"PREV_MONTH": "Previous Month", "PREV_MONTH": "Previous Month",
"NEXT_MONTH": "Next Month", "NEXT_MONTH": "Next Month",

View File

@ -51,6 +51,8 @@ svg {
//Datepicker //Datepicker
.pika-single { .pika-single {
// scss-lint:disable ImportantRule // scss-lint:disable ImportantRule
min-width: 240px;
width: auto;
z-index: 999999; z-index: 999999;
.pika-title { .pika-title {
color: $grayer; color: $grayer;

View File

@ -19,5 +19,6 @@
"contribPlugins": [], "contribPlugins": [],
"tribeHost": null, "tribeHost": null,
"importers": [], "importers": [],
"gravatar": true "gravatar": true,
"rtlLanguages": ["fa"]
} }