diff options
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | i18n/es.json | 16 | ||||
-rw-r--r-- | utils/i18n.go | 22 | ||||
-rw-r--r-- | web/react/components/center_panel.jsx | 6 | ||||
-rw-r--r-- | web/react/components/new_channel_modal.jsx | 5 | ||||
-rw-r--r-- | web/react/components/tutorial/tutorial_tip.jsx | 2 | ||||
-rw-r--r-- | web/sass-files/sass/partials/_content.scss | 1 | ||||
-rw-r--r-- | web/sass-files/sass/partials/_markdown.scss | 2 | ||||
-rw-r--r-- | web/sass-files/sass/partials/_modal.scss | 5 | ||||
-rw-r--r-- | web/sass-files/sass/partials/_post.scss | 8 | ||||
-rw-r--r-- | web/sass-files/sass/partials/_tutorial.scss | 1 |
11 files changed, 58 insertions, 12 deletions
@@ -255,7 +255,7 @@ nuke: | clean clean-docker touch $@ -.prepare-jsx: +.prepare-jsx: web/react/package.json @echo Preparation for compiling jsx code cd web/react/ && npm install diff --git a/i18n/es.json b/i18n/es.json index 70802b07a..c4e7a552c 100644 --- a/i18n/es.json +++ b/i18n/es.json @@ -580,6 +580,10 @@ "translation": "Archivo de licencia inválido." }, { + "id": "api.license.add_license.invalid_count.app_error", + "translation": "No se pudo obtener el número total de usuarios únicos." + }, + { "id": "api.license.add_license.no_file.app_error", "translation": "No hay un archivo bajo 'license' en la solicitud" }, @@ -592,6 +596,10 @@ "translation": "La licencia no fue guardada correctamente." }, { + "id": "api.license.add_license.unique_users.app_error", + "translation": "Esta licencia sólo soporta {{.Users}} usuarios, cuando tu sistema tiene {{.Count}} usuarios únicos. Los usuarios únicos se cuentan por direcciónes de correo electrónico distintas. Puedes ver el totoal de usuarios en REPORTES DEL SITIO -> Ver Estadísticas." + }, + { "id": "api.license.init.debug", "translation": "Inicializando rutas del API para las licencias" }, @@ -1564,6 +1572,10 @@ "translation": "No se pudo actualizar la imagen del perfil. El archivo es muy grande." }, { + "id": "api.user.upload_profile_user.upload_profile.app_error", + "translation": "No se pudo subir la imagen del perfil" + }, + { "id": "api.web_conn.new_web_conn.last_activity.error", "translation": "Falla al actualizar LastActivityAt para user_id=%v and session_id=%v, err=%v" }, @@ -2764,6 +2776,10 @@ "translation": "No se puede actualizar la sesión" }, { + "id": "store.sql_session.update_device_id.app_error", + "translation": "No pudimos actualizar el id del dispositivo" + }, + { "id": "store.sql_session.update_last_activity.app_error", "translation": "No pudimos actualizar el campo last_activity_at" }, diff --git a/utils/i18n.go b/utils/i18n.go index 05154bd92..e809ae883 100644 --- a/utils/i18n.go +++ b/utils/i18n.go @@ -44,7 +44,7 @@ func GetTranslationsBySystemLocale() i18n.TranslateFunc { panic("Failed to load system translations for '" + model.DEFAULT_LOCALE + "'") } - translations, _ := i18n.Tfunc(locale) + translations := TfuncWithFallback(locale) if translations == nil { panic("Failed to load system translations") } @@ -58,22 +58,34 @@ func GetUserTranslations(locale string) i18n.TranslateFunc { locale = model.DEFAULT_LOCALE } - translations, _ := i18n.Tfunc(locale) + translations := TfuncWithFallback(locale) return translations } func SetTranslations(locale string) i18n.TranslateFunc { - translations, _ := i18n.Tfunc(locale) + translations := TfuncWithFallback(locale) return translations } func GetTranslationsAndLocale(w http.ResponseWriter, r *http.Request) (i18n.TranslateFunc, string) { headerLocale := strings.Split(strings.Split(r.Header.Get("Accept-Language"), ",")[0], "-")[0] if locales[headerLocale] != "" { - translations, _ := i18n.Tfunc(headerLocale) + translations := TfuncWithFallback(headerLocale) return translations, headerLocale } - translations, _ := i18n.Tfunc(model.DEFAULT_LOCALE) + translations := TfuncWithFallback(model.DEFAULT_LOCALE) return translations, model.DEFAULT_LOCALE } + +func TfuncWithFallback(pref string) i18n.TranslateFunc { + t, _ := i18n.Tfunc(pref) + return func(translationID string, args ...interface{}) string { + if translated := t(translationID, args...); translated != translationID { + return translated + } + + t, _ := i18n.Tfunc("en") + return t(translationID, args...) + } +} diff --git a/web/react/components/center_panel.jsx b/web/react/components/center_panel.jsx index 7eef329c3..53dad1306 100644 --- a/web/react/components/center_panel.jsx +++ b/web/react/components/center_panel.jsx @@ -66,11 +66,9 @@ export default class CenterPanel extends React.Component { createPost = ( <div id='archive-link-home' + onClick={handleClick} > - <a - href='' - onClick={handleClick} - > + <a href=''> {'You are viewing the Archives. Click here to jump to recent messages. '} {<i className='fa fa-arrow-down'></i>} </a> diff --git a/web/react/components/new_channel_modal.jsx b/web/react/components/new_channel_modal.jsx index 70fe10eef..9f733c476 100644 --- a/web/react/components/new_channel_modal.jsx +++ b/web/react/components/new_channel_modal.jsx @@ -22,6 +22,11 @@ export default class NewChannelModal extends React.Component { }); } } + componentDidMount() { + if (Utils.isBrowserIE()) { + $('body').addClass('browser--IE'); + } + } handleSubmit(e) { e.preventDefault(); diff --git a/web/react/components/tutorial/tutorial_tip.jsx b/web/react/components/tutorial/tutorial_tip.jsx index 3bab7570a..6bd7d89a4 100644 --- a/web/react/components/tutorial/tutorial_tip.jsx +++ b/web/react/components/tutorial/tutorial_tip.jsx @@ -84,7 +84,7 @@ export default class TutorialTip extends React.Component { } var tipColor = ''; - if (this.props.overlayClass === 'tip-overlay--header') { + if (this.props.overlayClass === 'tip-overlay--header' || this.props.overlayClass === 'tip-overlay--sidebar') { tipColor = 'White'; } diff --git a/web/sass-files/sass/partials/_content.scss b/web/sass-files/sass/partials/_content.scss index b54c97b41..fb2355da7 100644 --- a/web/sass-files/sass/partials/_content.scss +++ b/web/sass-files/sass/partials/_content.scss @@ -38,6 +38,7 @@ font-size: 13px; .fa { + font-size: 11px; @include opacity(0.7); } diff --git a/web/sass-files/sass/partials/_markdown.scss b/web/sass-files/sass/partials/_markdown.scss index 9ad15f91a..7aa29d95d 100644 --- a/web/sass-files/sass/partials/_markdown.scss +++ b/web/sass-files/sass/partials/_markdown.scss @@ -43,7 +43,7 @@ @include opacity(0.2); } code { - white-space: pre; + white-space: pre-line; } } .markdown__table { diff --git a/web/sass-files/sass/partials/_modal.scss b/web/sass-files/sass/partials/_modal.scss index 7627f6a4c..b451adb75 100644 --- a/web/sass-files/sass/partials/_modal.scss +++ b/web/sass-files/sass/partials/_modal.scss @@ -10,6 +10,11 @@ .modal { width: 100%; color: #333; + body.browser--IE & { + .modal-dialog { + @include translateY(0); + } + } &.image_modal { .modal-backdrop.in { @include opacity(0.7); diff --git a/web/sass-files/sass/partials/_post.scss b/web/sass-files/sass/partials/_post.scss index 34ff7e5a9..ef2366686 100644 --- a/web/sass-files/sass/partials/_post.scss +++ b/web/sass-files/sass/partials/_post.scss @@ -759,10 +759,18 @@ body.ios { display: inline-block; visibility: hidden; + &:focus { + outline: none; + } + &.icon--visible { visibility: visible; } + svg { + width: 17px; + } + .comment-icon { display: inline-block; top: 3px; diff --git a/web/sass-files/sass/partials/_tutorial.scss b/web/sass-files/sass/partials/_tutorial.scss index 20a15441e..0a2d1e704 100644 --- a/web/sass-files/sass/partials/_tutorial.scss +++ b/web/sass-files/sass/partials/_tutorial.scss @@ -146,6 +146,7 @@ &.tip-overlay--sidebar { left: 0; + @include opacity(0.8); top: -9px; } |