summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--i18n/es.json16
-rw-r--r--utils/i18n.go22
-rw-r--r--web/react/components/center_panel.jsx6
-rw-r--r--web/react/components/new_channel_modal.jsx5
-rw-r--r--web/react/components/tutorial/tutorial_tip.jsx2
-rw-r--r--web/sass-files/sass/partials/_content.scss1
-rw-r--r--web/sass-files/sass/partials/_markdown.scss2
-rw-r--r--web/sass-files/sass/partials/_modal.scss5
-rw-r--r--web/sass-files/sass/partials/_post.scss8
-rw-r--r--web/sass-files/sass/partials/_tutorial.scss1
11 files changed, 58 insertions, 12 deletions
diff --git a/Makefile b/Makefile
index 1012b786e..9c4e6ee1f 100644
--- a/Makefile
+++ b/Makefile
@@ -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;
}