Merge branch 'release-3.9' into merge-3.9

Этот коммит содержится в:
JoramWilander
2017-05-12 08:00:28 -04:00
родитель b1c39204a6 a21a06afd9
Коммит 9d109b0700
66 изменённых файлов: 799 добавлений и 494 удалений

Просмотреть файл

@@ -124,7 +124,7 @@ func createGroupChannel(c *Context, w http.ResponseWriter, r *http.Request) {
userIds = append(userIds, c.Session.UserId) userIds = append(userIds, c.Session.UserId)
} }
if sc, err := app.CreateGroupChannel(userIds); err != nil { if sc, err := app.CreateGroupChannel(userIds, c.Session.UserId); err != nil {
c.Err = err c.Err = err
return return
} else { } else {

Просмотреть файл

@@ -222,6 +222,7 @@ func (h handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
if c.Err == nil && h.isUserActivity && token != "" && len(c.Session.UserId) > 0 { if c.Err == nil && h.isUserActivity && token != "" && len(c.Session.UserId) > 0 {
app.SetStatusOnline(c.Session.UserId, c.Session.Id, false) app.SetStatusOnline(c.Session.UserId, c.Session.Id, false)
app.UpdateLastActivityAtIfNeeded(c.Session)
} }
if c.Err == nil && (h.requireUser || h.requireSystemAdmin) { if c.Err == nil && (h.requireUser || h.requireSystemAdmin) {

Просмотреть файл

@@ -260,7 +260,7 @@ func createGroupChannel(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if groupChannel, err := app.CreateGroupChannel(userIds); err != nil { if groupChannel, err := app.CreateGroupChannel(userIds, c.Session.UserId); err != nil {
c.Err = err c.Err = err
return return
} else { } else {
@@ -377,7 +377,7 @@ func getPublicChannelsForTeam(c *Context, w http.ResponseWriter, r *http.Request
return return
} }
if channels, err := app.GetPublicChannelsForTeam(c.Params.TeamId, c.Params.Page, c.Params.PerPage); err != nil { if channels, err := app.GetPublicChannelsForTeam(c.Params.TeamId, c.Params.Page*c.Params.PerPage, c.Params.PerPage); err != nil {
c.Err = err c.Err = err
return return
} else { } else {
@@ -503,14 +503,23 @@ func deleteChannel(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if channel.Type == model.CHANNEL_OPEN && !app.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_DELETE_PUBLIC_CHANNEL) { var memberCount int64
c.SetPermissionError(model.PERMISSION_DELETE_PUBLIC_CHANNEL) if memberCount, err = app.GetChannelMemberCount(c.Params.ChannelId); err != nil {
c.Err = err
return return
} }
if channel.Type == model.CHANNEL_PRIVATE && !app.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_DELETE_PRIVATE_CHANNEL) { // Allow delete if user is the only member left in channel
c.SetPermissionError(model.PERMISSION_DELETE_PRIVATE_CHANNEL) if memberCount > 1 {
return if channel.Type == model.CHANNEL_OPEN && !app.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_DELETE_PUBLIC_CHANNEL) {
c.SetPermissionError(model.PERMISSION_DELETE_PUBLIC_CHANNEL)
return
}
if channel.Type == model.CHANNEL_PRIVATE && !app.SessionHasPermissionToChannel(c.Session, channel.Id, model.PERMISSION_DELETE_PRIVATE_CHANNEL) {
c.SetPermissionError(model.PERMISSION_DELETE_PRIVATE_CHANNEL)
return
}
} }
err = app.DeleteChannel(channel, c.Session.UserId) err = app.DeleteChannel(channel, c.Session.UserId)

Просмотреть файл

@@ -1055,6 +1055,16 @@ func TestDeleteChannel(t *testing.T) {
_, resp = th.SystemAdminClient.DeleteChannel(privateChannel7.Id) _, resp = th.SystemAdminClient.DeleteChannel(privateChannel7.Id)
CheckNoError(t, resp) CheckNoError(t, resp)
// last member of a channel should be able to delete it regardless of required permissions
publicChannel6 = th.CreateChannelWithClient(th.Client, model.CHANNEL_OPEN)
privateChannel7 = th.CreateChannelWithClient(th.Client, model.CHANNEL_PRIVATE)
_, resp = Client.DeleteChannel(publicChannel6.Id)
CheckNoError(t, resp)
_, resp = Client.DeleteChannel(privateChannel7.Id)
CheckNoError(t, resp)
} }
func TestGetChannelByName(t *testing.T) { func TestGetChannelByName(t *testing.T) {

Просмотреть файл

@@ -271,9 +271,13 @@ func (c *Context) MfaRequired() {
return return
} }
// Special case to let user get themself
if c.Path == "/api/v4/users/me" {
return
}
if !user.MfaActive { if !user.MfaActive {
c.Err = model.NewLocAppError("", "api.context.mfa_required.app_error", nil, "MfaRequired") c.Err = model.NewAppError("", "api.context.mfa_required.app_error", nil, "MfaRequired", http.StatusForbidden)
c.Err.StatusCode = http.StatusUnauthorized
return return
} }
} }

Просмотреть файл

@@ -41,8 +41,8 @@ func InitUser() {
BaseRoutes.Users.Handle("/email/verify/send", ApiHandler(sendVerificationEmail)).Methods("POST") BaseRoutes.Users.Handle("/email/verify/send", ApiHandler(sendVerificationEmail)).Methods("POST")
BaseRoutes.Users.Handle("/mfa", ApiHandler(checkUserMfa)).Methods("POST") BaseRoutes.Users.Handle("/mfa", ApiHandler(checkUserMfa)).Methods("POST")
BaseRoutes.User.Handle("/mfa", ApiSessionRequired(updateUserMfa)).Methods("PUT") BaseRoutes.User.Handle("/mfa", ApiSessionRequiredMfa(updateUserMfa)).Methods("PUT")
BaseRoutes.User.Handle("/mfa/generate", ApiSessionRequired(generateMfaSecret)).Methods("POST") BaseRoutes.User.Handle("/mfa/generate", ApiSessionRequiredMfa(generateMfaSecret)).Methods("POST")
BaseRoutes.Users.Handle("/login", ApiHandler(login)).Methods("POST") BaseRoutes.Users.Handle("/login", ApiHandler(login)).Methods("POST")
BaseRoutes.Users.Handle("/login/switch", ApiHandler(switchAccountType)).Methods("POST") BaseRoutes.Users.Handle("/login/switch", ApiHandler(switchAccountType)).Methods("POST")

Просмотреть файл

@@ -218,7 +218,7 @@ func WaitForChannelMembership(channelId string, userId string) {
} }
} }
func CreateGroupChannel(userIds []string) (*model.Channel, *model.AppError) { func CreateGroupChannel(userIds []string, creatorId string) (*model.Channel, *model.AppError) {
if len(userIds) > model.CHANNEL_GROUP_MAX_USERS || len(userIds) < model.CHANNEL_GROUP_MIN_USERS { if len(userIds) > model.CHANNEL_GROUP_MAX_USERS || len(userIds) < model.CHANNEL_GROUP_MIN_USERS {
return nil, model.NewAppError("CreateGroupChannel", "api.channel.create_group.bad_size.app_error", nil, "", http.StatusBadRequest) return nil, model.NewAppError("CreateGroupChannel", "api.channel.create_group.bad_size.app_error", nil, "", http.StatusBadRequest)
} }
@@ -261,6 +261,10 @@ func CreateGroupChannel(userIds []string) (*model.Channel, *model.AppError) {
return nil, result.Err return nil, result.Err
} }
if user.Id == creatorId {
WaitForChannelMembership(group.Id, creatorId)
}
InvalidateCacheForUser(user.Id) InvalidateCacheForUser(user.Id)
} }
@@ -1021,9 +1025,13 @@ func GetNumberOfChannelsOnTeam(teamId string) (int, *model.AppError) {
func SetActiveChannel(userId string, channelId string) *model.AppError { func SetActiveChannel(userId string, channelId string) *model.AppError {
status, err := GetStatus(userId) status, err := GetStatus(userId)
oldStatus := model.STATUS_OFFLINE
if err != nil { if err != nil {
status = &model.Status{UserId: userId, Status: model.STATUS_ONLINE, Manual: false, LastActivityAt: model.GetMillis(), ActiveChannel: channelId} status = &model.Status{UserId: userId, Status: model.STATUS_ONLINE, Manual: false, LastActivityAt: model.GetMillis(), ActiveChannel: channelId}
} else { } else {
oldStatus = status.Status
status.ActiveChannel = channelId status.ActiveChannel = channelId
if !status.Manual { if !status.Manual {
status.Status = model.STATUS_ONLINE status.Status = model.STATUS_ONLINE
@@ -1033,6 +1041,10 @@ func SetActiveChannel(userId string, channelId string) *model.AppError {
AddStatusCache(status) AddStatusCache(status)
if status.Status != oldStatus {
BroadcastStatus(status)
}
return nil return nil
} }

Просмотреть файл

@@ -138,7 +138,7 @@ func DoLogin(w http.ResponseWriter, r *http.Request, user *model.User, deviceId
} }
func GetProtocol(r *http.Request) string { func GetProtocol(r *http.Request) string {
if r.Header.Get(model.HEADER_FORWARDED_PROTO) == "https" { if r.Header.Get(model.HEADER_FORWARDED_PROTO) == "https" || r.TLS != nil {
return "https" return "https"
} else { } else {
return "http" return "http"

Просмотреть файл

@@ -83,7 +83,7 @@ func SendNotifications(post *model.Post, team *model.Team, channel *model.Channe
for _, threadPost := range list.Posts { for _, threadPost := range list.Posts {
profile := profileMap[threadPost.UserId] profile := profileMap[threadPost.UserId]
if profile.NotifyProps["comments"] == "any" || (profile.NotifyProps["comments"] == "root" && threadPost.Id == list.Order[0]) { if profile != nil && (profile.NotifyProps["comments"] == "any" || (profile.NotifyProps["comments"] == "root" && threadPost.Id == list.Order[0])) {
mentionedUserIds[threadPost.UserId] = true mentionedUserIds[threadPost.UserId] = true
} }
} }

44
app/post_test.go Обычный файл
Просмотреть файл

@@ -0,0 +1,44 @@
// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
package app
import (
"testing"
"github.com/mattermost/platform/model"
"fmt"
)
func TestPostReplyToPostWhereRootPosterLeftChannel(t *testing.T) {
// This test ensures that when replying to a root post made by a user who has since left the channel, the reply
// post completes successfully. This is a regression test for PLT-6523.
th := Setup().InitBasic()
channel := th.BasicChannel
userInChannel := th.BasicUser2
userNotInChannel := th.BasicUser
rootPost := th.BasicPost
if _, err := AddUserToChannel(userInChannel, channel); err != nil {
t.Fatal(err)
}
if err := RemoveUserFromChannel(userNotInChannel.Id, "", channel); err != nil {
t.Fatal(err)
}
replyPost := model.Post{
Message: "asd",
ChannelId: channel.Id,
RootId: rootPost.Id,
ParentId: rootPost.Id,
PendingPostId: model.NewId() + ":" + fmt.Sprint(model.GetMillis()),
UserId: userInChannel.Id,
CreateAt: 0,
}
if _, err := CreatePostAsUser(&replyPost); err != nil {
t.Fatal(err)
}
}

Просмотреть файл

@@ -181,3 +181,17 @@ func AttachDeviceId(sessionId string, deviceId string, expiresAt int64) *model.A
return nil return nil
} }
func UpdateLastActivityAtIfNeeded(session model.Session) {
now := model.GetMillis()
if now-session.LastActivityAt < model.SESSION_ACTIVITY_TIMEOUT {
return
}
if result := <-Srv.Store.Session().UpdateLastActivityAt(session.Id, now); result.Err != nil {
l4g.Error(utils.T("api.status.last_activity.error", session.UserId, session.Id))
}
session.LastActivityAt = now
AddSessionToCache(&session)
}

Просмотреть файл

@@ -195,7 +195,6 @@ func SetStatusOnline(userId string, sessionId string, manual bool) {
// Only update the database if the status has changed, the status has been manually set, // Only update the database if the status has changed, the status has been manually set,
// or enough time has passed since the previous action // or enough time has passed since the previous action
if status.Status != oldStatus || status.Manual != oldManual || status.LastActivityAt-oldTime > model.STATUS_MIN_UPDATE_TIME { if status.Status != oldStatus || status.Manual != oldManual || status.LastActivityAt-oldTime > model.STATUS_MIN_UPDATE_TIME {
achan := Srv.Store.Session().UpdateLastActivityAt(sessionId, status.LastActivityAt)
var schan store.StoreChannel var schan store.StoreChannel
if broadcast { if broadcast {
@@ -204,23 +203,23 @@ func SetStatusOnline(userId string, sessionId string, manual bool) {
schan = Srv.Store.Status().UpdateLastActivityAt(status.UserId, status.LastActivityAt) schan = Srv.Store.Status().UpdateLastActivityAt(status.UserId, status.LastActivityAt)
} }
if result := <-achan; result.Err != nil {
l4g.Error(utils.T("api.status.last_activity.error"), userId, sessionId, result.Err)
}
if result := <-schan; result.Err != nil { if result := <-schan; result.Err != nil {
l4g.Error(utils.T("api.status.save_status.error"), userId, result.Err) l4g.Error(utils.T("api.status.save_status.error"), userId, result.Err)
} }
} }
if broadcast { if broadcast {
event := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_STATUS_CHANGE, "", "", status.UserId, nil) BroadcastStatus(status)
event.Add("status", model.STATUS_ONLINE)
event.Add("user_id", status.UserId)
go Publish(event)
} }
} }
func BroadcastStatus(status *model.Status) {
event := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_STATUS_CHANGE, "", "", status.UserId, nil)
event.Add("status", status.Status)
event.Add("user_id", status.UserId)
go Publish(event)
}
func SetStatusOffline(userId string, manual bool) { func SetStatusOffline(userId string, manual bool) {
if !*utils.Cfg.ServiceSettings.EnableUserStatuses { if !*utils.Cfg.ServiceSettings.EnableUserStatuses {
return return

Просмотреть файл

@@ -43,7 +43,10 @@ type WebConn struct {
func NewWebConn(ws *websocket.Conn, session model.Session, t goi18n.TranslateFunc, locale string) *WebConn { func NewWebConn(ws *websocket.Conn, session model.Session, t goi18n.TranslateFunc, locale string) *WebConn {
if len(session.UserId) > 0 { if len(session.UserId) > 0 {
go SetStatusOnline(session.UserId, session.Id, false) go func() {
SetStatusOnline(session.UserId, session.Id, false)
UpdateLastActivityAtIfNeeded(session)
}()
} }
return &WebConn{ return &WebConn{

Просмотреть файл

@@ -53,7 +53,10 @@ func (wr *WebSocketRouter) ServeWebSocket(conn *WebConn, r *model.WebSocketReque
if err != nil { if err != nil {
conn.WebSocket.Close() conn.WebSocket.Close()
} else { } else {
go SetStatusOnline(session.UserId, session.Id, false) go func() {
SetStatusOnline(session.UserId, session.Id, false)
UpdateLastActivityAtIfNeeded(*session)
}()
conn.SessionToken = session.Token conn.SessionToken = session.Token
conn.UserId = session.UserId conn.UserId = session.UserId

Просмотреть файл

@@ -1029,6 +1029,10 @@
"id": "api.emoji.upload.large_image.gif_encode_error", "id": "api.emoji.upload.large_image.gif_encode_error",
"translation": "Konnte Emoji nicht erstellen. Es trat ein Fehler beim Umwandeln des GIF auf." "translation": "Konnte Emoji nicht erstellen. Es trat ein Fehler beim Umwandeln des GIF auf."
}, },
{
"id": "api.file.attachments.disabled.app_error",
"translation": "Dateianhänge wurden auf diesem Server deaktiviert."
},
{ {
"id": "api.file.get_file.public_disabled.app_error", "id": "api.file.get_file.public_disabled.app_error",
"translation": "Öffentliche Verlinkungen wurden vom Systemadministrator deaktiviert" "translation": "Öffentliche Verlinkungen wurden vom Systemadministrator deaktiviert"
@@ -1051,7 +1055,7 @@
}, },
{ {
"id": "api.file.get_info_for_request.storage.app_error", "id": "api.file.get_info_for_request.storage.app_error",
"translation": "Die Datei kann nicht hochgeladen werden. Ein Fotospeicherort ist nicht eingerichtet." "translation": "Die Datei kann nicht hochgeladen werden. Ein Dateispeicherort ist nicht eingerichtet."
}, },
{ {
"id": "api.file.get_public_file_old.storage.app_error", "id": "api.file.get_public_file_old.storage.app_error",
@@ -2525,7 +2529,7 @@
}, },
{ {
"id": "api.user.login.inactive.app_error", "id": "api.user.login.inactive.app_error",
"translation": "Anmeldung nicht möglich, weil Ihr Account inaktiv ist. Bitte wenden Sie sich an einen Administrator." "translation": "Anmeldung nicht möglich, weil Ihr Account deaktiviert wurde. Bitte wenden Sie sich an einen Administrator."
}, },
{ {
"id": "api.user.login.invalid_credentials", "id": "api.user.login.invalid_credentials",
@@ -3093,7 +3097,7 @@
}, },
{ {
"id": "app.import.validate_user_import_data.auth_data_and_password.error", "id": "app.import.validate_user_import_data.auth_data_and_password.error",
"translation": "User AuthData and Password are mutually exclusive." "translation": "User AuthData und Passwort schließen sich gegenseitig aus."
}, },
{ {
"id": "app.import.validate_user_import_data.auth_data_length.error", "id": "app.import.validate_user_import_data.auth_data_length.error",
@@ -3125,7 +3129,7 @@
}, },
{ {
"id": "app.import.validate_user_import_data.pasword_length.error", "id": "app.import.validate_user_import_data.pasword_length.error",
"translation": "User Password has invalid length." "translation": "Benutzerpasswort hat ungültige Länge."
}, },
{ {
"id": "app.import.validate_user_import_data.position_length.error", "id": "app.import.validate_user_import_data.position_length.error",
@@ -4417,11 +4421,11 @@
}, },
{ {
"id": "model.token.is_valid.expiry", "id": "model.token.is_valid.expiry",
"translation": "Invalid token expiry" "translation": "Ungültiges Token-Ablaufdatum"
}, },
{ {
"id": "model.token.is_valid.size", "id": "model.token.is_valid.size",
"translation": "Ungültiger token" "translation": "Ungültiger Token."
}, },
{ {
"id": "model.user.is_valid.auth_data.app_error", "id": "model.user.is_valid.auth_data.app_error",
@@ -4461,7 +4465,7 @@
}, },
{ {
"id": "model.user.is_valid.password_limit.app_error", "id": "model.user.is_valid.password_limit.app_error",
"translation": "Unable to set a password over 72 characters due to the limitations of bcrypt." "translation": "Aufgrund der Einschränkungen von bcrypt ist es ist nicht möglich, ein Passwort mit mehr als 72 Zeichen zu setzen."
}, },
{ {
"id": "model.user.is_valid.position.app_error", "id": "model.user.is_valid.position.app_error",

Просмотреть файл

@@ -1029,6 +1029,10 @@
"id": "api.emoji.upload.large_image.gif_encode_error", "id": "api.emoji.upload.large_image.gif_encode_error",
"translation": "Unable to create emoji. An error occurred when trying to encode the GIF image." "translation": "Unable to create emoji. An error occurred when trying to encode the GIF image."
}, },
{
"id": "api.file.attachments.disabled.app_error",
"translation": "File attachments have been disabled on this server."
},
{ {
"id": "api.file.get_file.public_disabled.app_error", "id": "api.file.get_file.public_disabled.app_error",
"translation": "Public links have been disabled by the system administrator" "translation": "Public links have been disabled by the system administrator"
@@ -1053,10 +1057,6 @@
"id": "api.file.get_info_for_request.storage.app_error", "id": "api.file.get_info_for_request.storage.app_error",
"translation": "Unable to get info for file. File storage is not configured." "translation": "Unable to get info for file. File storage is not configured."
}, },
{
"id": "api.file.attachments.disabled.app_error",
"translation": "File attachments have been disabled on this server."
},
{ {
"id": "api.file.get_public_file_old.storage.app_error", "id": "api.file.get_public_file_old.storage.app_error",
"translation": "Unable to get file. Image storage is not configured." "translation": "Unable to get file. Image storage is not configured."

Просмотреть файл

@@ -1029,6 +1029,10 @@
"id": "api.emoji.upload.large_image.gif_encode_error", "id": "api.emoji.upload.large_image.gif_encode_error",
"translation": "No se puede crear el emoticon. Se ha producido un error al intentar codificar la imagen GIF." "translation": "No se puede crear el emoticon. Se ha producido un error al intentar codificar la imagen GIF."
}, },
{
"id": "api.file.attachments.disabled.app_error",
"translation": "Los archivos adjuntos se han deshabilitado en este servidor."
},
{ {
"id": "api.file.get_file.public_disabled.app_error", "id": "api.file.get_file.public_disabled.app_error",
"translation": "Los enlaces públicos han sido inhabilitados por un administrador del sistema" "translation": "Los enlaces públicos han sido inhabilitados por un administrador del sistema"
@@ -1051,7 +1055,7 @@
}, },
{ {
"id": "api.file.get_info_for_request.storage.app_error", "id": "api.file.get_info_for_request.storage.app_error",
"translation": "No se puede obtener información de archivo. El almacenamiento de imágenes no está configurado." "translation": "No se puede obtener información del archivo. El almacenamiento de imágenes no está configurado."
}, },
{ {
"id": "api.file.get_public_file_old.storage.app_error", "id": "api.file.get_public_file_old.storage.app_error",

Просмотреть файл

@@ -1029,6 +1029,10 @@
"id": "api.emoji.upload.large_image.gif_encode_error", "id": "api.emoji.upload.large_image.gif_encode_error",
"translation": "Impossible de créer l'émoticône. Une erreur est survenue durant l'encodage de l'image GIF." "translation": "Impossible de créer l'émoticône. Une erreur est survenue durant l'encodage de l'image GIF."
}, },
{
"id": "api.file.attachments.disabled.app_error",
"translation": "Les fichiers de pièces jointes sont désactivés sur ce serveur."
},
{ {
"id": "api.file.get_file.public_disabled.app_error", "id": "api.file.get_file.public_disabled.app_error",
"translation": "Les liens publics sont désactivés par l'administrateur système." "translation": "Les liens publics sont désactivés par l'administrateur système."
@@ -1051,7 +1055,7 @@
}, },
{ {
"id": "api.file.get_info_for_request.storage.app_error", "id": "api.file.get_info_for_request.storage.app_error",
"translation": "Impossible d'envoyer le fichier. Le stockage d'images n'est pas configuré." "translation": "Impossible de récupérer les informations du fichier. Le stockage de fichier n'est pas configuré."
}, },
{ {
"id": "api.file.get_public_file_old.storage.app_error", "id": "api.file.get_public_file_old.storage.app_error",
@@ -1701,7 +1705,7 @@
}, },
{ {
"id": "api.reaction.save_reaction.invalid.app_error", "id": "api.reaction.save_reaction.invalid.app_error",
"translation": "Reaction is not valid." "translation": "La réaction n'est pas valide."
}, },
{ {
"id": "api.reaction.save_reaction.mismatched_channel_id.app_error", "id": "api.reaction.save_reaction.mismatched_channel_id.app_error",
@@ -1709,7 +1713,7 @@
}, },
{ {
"id": "api.reaction.save_reaction.user_id.app_error", "id": "api.reaction.save_reaction.user_id.app_error",
"translation": "You cannot save reaction for the other user." "translation": "Vous ne pouvez pas sauvegarder la réaction pour l'autre utilisateur."
}, },
{ {
"id": "api.reaction.send_reaction_event.post.app_error", "id": "api.reaction.send_reaction_event.post.app_error",
@@ -2525,7 +2529,7 @@
}, },
{ {
"id": "api.user.login.inactive.app_error", "id": "api.user.login.inactive.app_error",
"translation": "Votre compte a été désactivé. Veuillez contacter un administrateur." "translation": "La connexion a échoué car votre compte a été désactivé. Veuillez contacter un administrateur."
}, },
{ {
"id": "api.user.login.invalid_credentials", "id": "api.user.login.invalid_credentials",
@@ -3093,7 +3097,7 @@
}, },
{ {
"id": "app.import.validate_user_import_data.auth_data_and_password.error", "id": "app.import.validate_user_import_data.auth_data_and_password.error",
"translation": "User AuthData and Password are mutually exclusive." "translation": "User AuthData et Password sont mutuellement exclusifs."
}, },
{ {
"id": "app.import.validate_user_import_data.auth_data_length.error", "id": "app.import.validate_user_import_data.auth_data_length.error",
@@ -3125,7 +3129,7 @@
}, },
{ {
"id": "app.import.validate_user_import_data.pasword_length.error", "id": "app.import.validate_user_import_data.pasword_length.error",
"translation": "User Password has invalid length." "translation": "Le mot de passe utilisateur a une longueur invalide."
}, },
{ {
"id": "app.import.validate_user_import_data.position_length.error", "id": "app.import.validate_user_import_data.position_length.error",
@@ -3625,7 +3629,7 @@
}, },
{ {
"id": "model.authorize.is_valid.response_type.app_error", "id": "model.authorize.is_valid.response_type.app_error",
"translation": "Invalid response type" "translation": "Type de réponse invalide"
}, },
{ {
"id": "model.authorize.is_valid.scope.app_error", "id": "model.authorize.is_valid.scope.app_error",
@@ -3725,11 +3729,11 @@
}, },
{ {
"id": "model.client.get_flagged_posts_in_channel.missing_parameter.app_error", "id": "model.client.get_flagged_posts_in_channel.missing_parameter.app_error",
"translation": "Missing channel parameter" "translation": "Paramètre de canal manquant"
}, },
{ {
"id": "model.client.get_flagged_posts_in_team.missing_parameter.app_error", "id": "model.client.get_flagged_posts_in_team.missing_parameter.app_error",
"translation": "Missing team parameter" "translation": "Paramètre d'équipe manquant"
}, },
{ {
"id": "model.client.login.app_error", "id": "model.client.login.app_error",
@@ -3977,7 +3981,7 @@
}, },
{ {
"id": "model.config.is_valid.max_file_size.app_error", "id": "model.config.is_valid.max_file_size.app_error",
"translation": "Invalid max file size for file settings. Must be a whole number greater than zero." "translation": "Paramètres de taille de fichier maximale invalides. Doit être un nombre entier plus grand que zéro."
}, },
{ {
"id": "model.config.is_valid.max_notify_per_channel.app_error", "id": "model.config.is_valid.max_notify_per_channel.app_error",
@@ -4417,11 +4421,11 @@
}, },
{ {
"id": "model.token.is_valid.expiry", "id": "model.token.is_valid.expiry",
"translation": "Invalid token expiry" "translation": "Durée d'expiration de jeton invalide."
}, },
{ {
"id": "model.token.is_valid.size", "id": "model.token.is_valid.size",
"translation": "Jeton invalide" "translation": "Jeton invalide."
}, },
{ {
"id": "model.user.is_valid.auth_data.app_error", "id": "model.user.is_valid.auth_data.app_error",
@@ -4461,7 +4465,7 @@
}, },
{ {
"id": "model.user.is_valid.password_limit.app_error", "id": "model.user.is_valid.password_limit.app_error",
"translation": "Unable to set a password over 72 characters due to the limitations of bcrypt." "translation": "Impossible de définir un mot de passe plus grand que 72 caractères à cause des limitations de bcrypt."
}, },
{ {
"id": "model.user.is_valid.position.app_error", "id": "model.user.is_valid.position.app_error",
@@ -5225,7 +5229,7 @@
}, },
{ {
"id": "store.sql_post.search.disabled", "id": "store.sql_post.search.disabled",
"translation": "Searching has been disabled on this server. Please contact your System Administrator." "translation": "La recherche a été désactivée sur ce serveur. Veuillez contacter votre administrateur."
}, },
{ {
"id": "store.sql_post.search.warn", "id": "store.sql_post.search.warn",

Просмотреть файл

@@ -1029,6 +1029,10 @@
"id": "api.emoji.upload.large_image.gif_encode_error", "id": "api.emoji.upload.large_image.gif_encode_error",
"translation": "絵文字を作成できません。GIF画像をエンコードする際にエラーが発生しました。" "translation": "絵文字を作成できません。GIF画像をエンコードする際にエラーが発生しました。"
}, },
{
"id": "api.file.attachments.disabled.app_error",
"translation": "このサーバーではファイル添付が無効になっています。"
},
{ {
"id": "api.file.get_file.public_disabled.app_error", "id": "api.file.get_file.public_disabled.app_error",
"translation": "公開リンクはシステム管理者によって無効にされています" "translation": "公開リンクはシステム管理者によって無効にされています"
@@ -1051,7 +1055,7 @@
}, },
{ {
"id": "api.file.get_info_for_request.storage.app_error", "id": "api.file.get_info_for_request.storage.app_error",
"translation": "ファイルの情報を取得できません。画像ストレージが設定されていません。" "translation": "ファイルの情報を取得できません。ファイルストレージが設定されていません。"
}, },
{ {
"id": "api.file.get_public_file_old.storage.app_error", "id": "api.file.get_public_file_old.storage.app_error",
@@ -4461,7 +4465,7 @@
}, },
{ {
"id": "model.user.is_valid.password_limit.app_error", "id": "model.user.is_valid.password_limit.app_error",
"translation": "cryptの制限により72文字以上のパスワードを設定できません" "translation": "bcryptの制限により72文字以上のパスワードを設定できません"
}, },
{ {
"id": "model.user.is_valid.position.app_error", "id": "model.user.is_valid.position.app_error",

Просмотреть файл

@@ -1029,6 +1029,10 @@
"id": "api.emoji.upload.large_image.gif_encode_error", "id": "api.emoji.upload.large_image.gif_encode_error",
"translation": "이모티콘을 생성할 수 없습니다. 이미지 인코딩 시도 중 오류가 발생했습니다." "translation": "이모티콘을 생성할 수 없습니다. 이미지 인코딩 시도 중 오류가 발생했습니다."
}, },
{
"id": "api.file.attachments.disabled.app_error",
"translation": "File attachments have been disabled on this server."
},
{ {
"id": "api.file.get_file.public_disabled.app_error", "id": "api.file.get_file.public_disabled.app_error",
"translation": "시스템 관리자가 개인 링크들 저장을 할 수 없도록 했습니다." "translation": "시스템 관리자가 개인 링크들 저장을 할 수 없도록 했습니다."

Просмотреть файл

@@ -1029,6 +1029,10 @@
"id": "api.emoji.upload.large_image.gif_encode_error", "id": "api.emoji.upload.large_image.gif_encode_error",
"translation": "Unable to create emoji. An error occurred when trying to encode the GIF image." "translation": "Unable to create emoji. An error occurred when trying to encode the GIF image."
}, },
{
"id": "api.file.attachments.disabled.app_error",
"translation": "File attachments have been disabled on this server."
},
{ {
"id": "api.file.get_file.public_disabled.app_error", "id": "api.file.get_file.public_disabled.app_error",
"translation": "Publieke links zijn uitgeschakeld door de systeembeheerder" "translation": "Publieke links zijn uitgeschakeld door de systeembeheerder"

Просмотреть файл

@@ -1029,6 +1029,10 @@
"id": "api.emoji.upload.large_image.gif_encode_error", "id": "api.emoji.upload.large_image.gif_encode_error",
"translation": "Nie można utworzyć emoji. Wystąpił błąd podczas kodowania obrazu GIF." "translation": "Nie można utworzyć emoji. Wystąpił błąd podczas kodowania obrazu GIF."
}, },
{
"id": "api.file.attachments.disabled.app_error",
"translation": "File attachments have been disabled on this server."
},
{ {
"id": "api.file.get_file.public_disabled.app_error", "id": "api.file.get_file.public_disabled.app_error",
"translation": "Linki publiczne zapisu została wyłączona przez administratora systemu." "translation": "Linki publiczne zapisu została wyłączona przez administratora systemu."
@@ -4701,7 +4705,7 @@
}, },
{ {
"id": "store.sql_channel.analytics_deleted_type_count.app_error", "id": "store.sql_channel.analytics_deleted_type_count.app_error",
"translation": "Nie odnaleziono kanału" "translation": "Nie można pobrać liczby usuniętych typów kanału"
}, },
{ {
"id": "store.sql_channel.analytics_type_count.app_error", "id": "store.sql_channel.analytics_type_count.app_error",
@@ -5009,11 +5013,11 @@
}, },
{ {
"id": "store.sql_file_info.attach_to_post.app_error", "id": "store.sql_file_info.attach_to_post.app_error",
"translation": "Nie mogliśmy uzyskać informacji o pliku dla wiadomości" "translation": "Nie można załączyć informacji o pliku do wpisu"
}, },
{ {
"id": "store.sql_file_info.delete_for_post.app_error", "id": "store.sql_file_info.delete_for_post.app_error",
"translation": "Nie mogliśmy uzyskać informacji o pliku dla wiadomości" "translation": "Nie można usunąć informacji o pliku z wpisu "
}, },
{ {
"id": "store.sql_file_info.get.app_error", "id": "store.sql_file_info.get.app_error",
@@ -5205,7 +5209,7 @@
}, },
{ {
"id": "store.sql_post.permanent_delete_by_channel.app_error", "id": "store.sql_post.permanent_delete_by_channel.app_error",
"translation": "Nie odnaleziono kanału" "translation": "Nie można usunąć postów według kanału"
}, },
{ {
"id": "store.sql_post.permanent_delete_by_user.app_error", "id": "store.sql_post.permanent_delete_by_user.app_error",
@@ -5405,7 +5409,7 @@
}, },
{ {
"id": "store.sql_status.get_online_away.app_error", "id": "store.sql_status.get_online_away.app_error",
"translation": "Napotkaliśmy błąd zapisując audyty" "translation": "Wystąpił błąd podczas pobierania wszystkich statusów online/zdala"
}, },
{ {
"id": "store.sql_status.get_team_statuses.app_error", "id": "store.sql_status.get_team_statuses.app_error",
@@ -5413,7 +5417,7 @@
}, },
{ {
"id": "store.sql_status.get_total_active_users_count.app_error", "id": "store.sql_status.get_total_active_users_count.app_error",
"translation": "Nie odnaleziono użytkownika" "translation": "Nie można porać ilości aktywnych użytkowników"
}, },
{ {
"id": "store.sql_status.reset_all.app_error", "id": "store.sql_status.reset_all.app_error",
@@ -5689,15 +5693,15 @@
}, },
{ {
"id": "store.sql_user.update.email_taken.app_error", "id": "store.sql_user.update.email_taken.app_error",
"translation": "This email is already taken. Please choose another." "translation": "Ten adres e-mail jest już zajęty. Proszę wybrać inny."
}, },
{ {
"id": "store.sql_user.update.find.app_error", "id": "store.sql_user.update.find.app_error",
"translation": "Nie odnaleziono kanału" "translation": "Nie można znaleźć istniejącego konta do aktualizacji"
}, },
{ {
"id": "store.sql_user.update.finding.app_error", "id": "store.sql_user.update.finding.app_error",
"translation": "Napotkaliśmy błąd szukając audytów" "translation": "Wystąpił błąd podczas wyszukiwania konta"
}, },
{ {
"id": "store.sql_user.update.updating.app_error", "id": "store.sql_user.update.updating.app_error",
@@ -5705,7 +5709,7 @@
}, },
{ {
"id": "store.sql_user.update.username_taken.app_error", "id": "store.sql_user.update.username_taken.app_error",
"translation": "This username is already taken. Please choose another." "translation": "Ta nazwa użytkownika jest już zajęta. Proszę wybrać inną."
}, },
{ {
"id": "store.sql_user.update_auth_data.app_error", "id": "store.sql_user.update_auth_data.app_error",
@@ -5869,7 +5873,7 @@
}, },
{ {
"id": "utils.license.load_license.invalid.warn", "id": "utils.license.load_license.invalid.warn",
"translation": "No valid enterprise license found" "translation": "Nie odnaleziono żadnej prawidłowej licencji"
}, },
{ {
"id": "utils.license.remove_license.unable.error", "id": "utils.license.remove_license.unable.error",
@@ -5885,7 +5889,7 @@
}, },
{ {
"id": "utils.license.validate_license.not_long.error", "id": "utils.license.validate_license.not_long.error",
"translation": "Signed license not long enough" "translation": "Licencja ma zbyt krótką długość"
}, },
{ {
"id": "utils.license.validate_license.signing.error", "id": "utils.license.validate_license.signing.error",

Просмотреть файл

@@ -1029,6 +1029,10 @@
"id": "api.emoji.upload.large_image.gif_encode_error", "id": "api.emoji.upload.large_image.gif_encode_error",
"translation": "Não foi possível criar o emoji. Um erro ocorreu enquanto tentava codificar uma imagem GIF." "translation": "Não foi possível criar o emoji. Um erro ocorreu enquanto tentava codificar uma imagem GIF."
}, },
{
"id": "api.file.attachments.disabled.app_error",
"translation": "Anexo de arquivos foi desabilitado neste servidor."
},
{ {
"id": "api.file.get_file.public_disabled.app_error", "id": "api.file.get_file.public_disabled.app_error",
"translation": "Links públicos foram desabilitados pelo administrador do sistema" "translation": "Links públicos foram desabilitados pelo administrador do sistema"

Просмотреть файл

@@ -1029,6 +1029,10 @@
"id": "api.emoji.upload.large_image.gif_encode_error", "id": "api.emoji.upload.large_image.gif_encode_error",
"translation": "Невозможно создать смайлик. Произошла ошибка при кодирования GIF изображения." "translation": "Невозможно создать смайлик. Произошла ошибка при кодирования GIF изображения."
}, },
{
"id": "api.file.attachments.disabled.app_error",
"translation": "Вложения отключены на этом сервере."
},
{ {
"id": "api.file.get_file.public_disabled.app_error", "id": "api.file.get_file.public_disabled.app_error",
"translation": "Публичные ссылки были запрещены системным администратором" "translation": "Публичные ссылки были запрещены системным администратором"
@@ -1051,7 +1055,7 @@
}, },
{ {
"id": "api.file.get_info_for_request.storage.app_error", "id": "api.file.get_info_for_request.storage.app_error",
"translation": "Не удалось загрузить файл. Хранилище изображений не настроено." "translation": "Не удалось получить информацию о файле. Хранилище изображений не настроено."
}, },
{ {
"id": "api.file.get_public_file_old.storage.app_error", "id": "api.file.get_public_file_old.storage.app_error",
@@ -2237,7 +2241,7 @@
}, },
{ {
"id": "api.templates.post_subject_in_group_message", "id": "api.templates.post_subject_in_group_message",
"translation": "{{.SubjectText}} в {{.TeamDisplayName}} от {{.SenderDisplayName}} в {{.Month}} {{.Day}}, {{.Year}}" "translation": "Новое групповое сообщение от {{.SenderDisplayName}} в {{.Month}} {{.Day}}, {{.Year}}"
}, },
{ {
"id": "api.templates.reset_body.button", "id": "api.templates.reset_body.button",
@@ -2525,7 +2529,7 @@
}, },
{ {
"id": "api.user.login.inactive.app_error", "id": "api.user.login.inactive.app_error",
"translation": "Вход не удался, поскольку ваша учетная запись была деактивирована. Пожалуйста, свяжитесь с администратором." "translation": "Вход не удался, поскольку ваша учетная запись отключена. Пожалуйста, свяжитесь с администратором."
}, },
{ {
"id": "api.user.login.invalid_credentials", "id": "api.user.login.invalid_credentials",
@@ -2841,7 +2845,7 @@
}, },
{ {
"id": "api.webhook.team_mismatch.app_error", "id": "api.webhook.team_mismatch.app_error",
"translation": "Невозможно обновить команды через команды" "translation": "Невозможно обновить вебхук для команд"
}, },
{ {
"id": "api.webhook.update_incoming.disabled.app_error", "id": "api.webhook.update_incoming.disabled.app_error",
@@ -2933,7 +2937,7 @@
}, },
{ {
"id": "app.import.import_line.null_post.error", "id": "app.import.import_line.null_post.error",
"translation": "Строка импорта данных содержит тип \"team\", но объект team равен null." "translation": "Строка импорта данных содержит тип \"post\", но объект post равен null."
}, },
{ {
"id": "app.import.import_line.null_team.error", "id": "app.import.import_line.null_team.error",
@@ -3181,7 +3185,7 @@
}, },
{ {
"id": "authentication.permissions.read_public_channel.name", "id": "authentication.permissions.read_public_channel.name",
"translation": "Read Public Channels" "translation": "Чтение публичных каналов"
}, },
{ {
"id": "authentication.permissions.team_invite_user.description", "id": "authentication.permissions.team_invite_user.description",
@@ -4421,7 +4425,7 @@
}, },
{ {
"id": "model.token.is_valid.size", "id": "model.token.is_valid.size",
"translation": "Недопустимый маркер" "translation": "Неверный токен."
}, },
{ {
"id": "model.user.is_valid.auth_data.app_error", "id": "model.user.is_valid.auth_data.app_error",
@@ -4701,7 +4705,7 @@
}, },
{ {
"id": "store.sql_channel.analytics_deleted_type_count.app_error", "id": "store.sql_channel.analytics_deleted_type_count.app_error",
"translation": "Не удалось получить подсчет типов каналов" "translation": "Не удалось получить количество удалённых каналов по типам"
}, },
{ {
"id": "store.sql_channel.analytics_type_count.app_error", "id": "store.sql_channel.analytics_type_count.app_error",

Просмотреть файл

@@ -1029,6 +1029,10 @@
"id": "api.emoji.upload.large_image.gif_encode_error", "id": "api.emoji.upload.large_image.gif_encode_error",
"translation": "无法创建表情符。编码 GIF 图片时遇到错误。" "translation": "无法创建表情符。编码 GIF 图片时遇到错误。"
}, },
{
"id": "api.file.attachments.disabled.app_error",
"translation": "文件附件已在此服务器禁用。"
},
{ {
"id": "api.file.get_file.public_disabled.app_error", "id": "api.file.get_file.public_disabled.app_error",
"translation": "系统管理员禁用了公开的链接" "translation": "系统管理员禁用了公开的链接"
@@ -3125,7 +3129,7 @@
}, },
{ {
"id": "app.import.validate_user_import_data.pasword_length.error", "id": "app.import.validate_user_import_data.pasword_length.error",
"translation": "User Password has invalid length." "translation": "无效的用户密码长度。"
}, },
{ {
"id": "app.import.validate_user_import_data.position_length.error", "id": "app.import.validate_user_import_data.position_length.error",
@@ -4417,11 +4421,11 @@
}, },
{ {
"id": "model.token.is_valid.expiry", "id": "model.token.is_valid.expiry",
"translation": "Invalid token expiry" "translation": "无效的令牌过期"
}, },
{ {
"id": "model.token.is_valid.size", "id": "model.token.is_valid.size",
"translation": "无效的令牌" "translation": "无效的令牌"
}, },
{ {
"id": "model.user.is_valid.auth_data.app_error", "id": "model.user.is_valid.auth_data.app_error",
@@ -4461,7 +4465,7 @@
}, },
{ {
"id": "model.user.is_valid.password_limit.app_error", "id": "model.user.is_valid.password_limit.app_error",
"translation": "Unable to set a password over 72 characters due to the limitations of bcrypt." "translation": "因 bcrypt 限制,密码不能设置超过 72 个字符。"
}, },
{ {
"id": "model.user.is_valid.position.app_error", "id": "model.user.is_valid.position.app_error",

Просмотреть файл

@@ -1029,6 +1029,10 @@
"id": "api.emoji.upload.large_image.gif_encode_error", "id": "api.emoji.upload.large_image.gif_encode_error",
"translation": "無法建立繪文字。嘗試編碼 gif 圖片時發生錯誤。" "translation": "無法建立繪文字。嘗試編碼 gif 圖片時發生錯誤。"
}, },
{
"id": "api.file.attachments.disabled.app_error",
"translation": "此伺服器已停用檔案附件功能。"
},
{ {
"id": "api.file.get_file.public_disabled.app_error", "id": "api.file.get_file.public_disabled.app_error",
"translation": "公開連結已被系統管理員停用" "translation": "公開連結已被系統管理員停用"
@@ -1701,7 +1705,7 @@
}, },
{ {
"id": "api.reaction.save_reaction.invalid.app_error", "id": "api.reaction.save_reaction.invalid.app_error",
"translation": "Reaction is not valid." "translation": "無效的互動。"
}, },
{ {
"id": "api.reaction.save_reaction.mismatched_channel_id.app_error", "id": "api.reaction.save_reaction.mismatched_channel_id.app_error",
@@ -1709,7 +1713,7 @@
}, },
{ {
"id": "api.reaction.save_reaction.user_id.app_error", "id": "api.reaction.save_reaction.user_id.app_error",
"translation": "You cannot save reaction for the other user." "translation": "無法為其他使用者儲存互動。"
}, },
{ {
"id": "api.reaction.send_reaction_event.post.app_error", "id": "api.reaction.send_reaction_event.post.app_error",
@@ -2525,7 +2529,7 @@
}, },
{ {
"id": "api.user.login.inactive.app_error", "id": "api.user.login.inactive.app_error",
"translation": "登入失敗,您的帳號已被設定為停用。請向系統管理員聯繫." "translation": "登入失敗,您的帳號已被設定為停用。請向系統管理員聯繫"
}, },
{ {
"id": "api.user.login.invalid_credentials", "id": "api.user.login.invalid_credentials",
@@ -3093,7 +3097,7 @@
}, },
{ {
"id": "app.import.validate_user_import_data.auth_data_and_password.error", "id": "app.import.validate_user_import_data.auth_data_and_password.error",
"translation": "User AuthData and Password are mutually exclusive." "translation": "使用者認證資料與密碼為互斥欄位。"
}, },
{ {
"id": "app.import.validate_user_import_data.auth_data_length.error", "id": "app.import.validate_user_import_data.auth_data_length.error",
@@ -3125,7 +3129,7 @@
}, },
{ {
"id": "app.import.validate_user_import_data.pasword_length.error", "id": "app.import.validate_user_import_data.pasword_length.error",
"translation": "User Password has invalid length." "translation": "使用者密碼長度無效。"
}, },
{ {
"id": "app.import.validate_user_import_data.position_length.error", "id": "app.import.validate_user_import_data.position_length.error",
@@ -3625,7 +3629,7 @@
}, },
{ {
"id": "model.authorize.is_valid.response_type.app_error", "id": "model.authorize.is_valid.response_type.app_error",
"translation": "Invalid response type" "translation": "無效的回應類型"
}, },
{ {
"id": "model.authorize.is_valid.scope.app_error", "id": "model.authorize.is_valid.scope.app_error",
@@ -3725,11 +3729,11 @@
}, },
{ {
"id": "model.client.get_flagged_posts_in_channel.missing_parameter.app_error", "id": "model.client.get_flagged_posts_in_channel.missing_parameter.app_error",
"translation": "Missing channel parameter" "translation": "缺少頻道參數"
}, },
{ {
"id": "model.client.get_flagged_posts_in_team.missing_parameter.app_error", "id": "model.client.get_flagged_posts_in_team.missing_parameter.app_error",
"translation": "Missing team parameter" "translation": "缺少團隊參數"
}, },
{ {
"id": "model.client.login.app_error", "id": "model.client.login.app_error",
@@ -3977,7 +3981,7 @@
}, },
{ {
"id": "model.config.is_valid.max_file_size.app_error", "id": "model.config.is_valid.max_file_size.app_error",
"translation": "Invalid max file size for file settings. Must be a whole number greater than zero." "translation": "檔案設定的最大檔案大小無效。必須為大於零的整數。"
}, },
{ {
"id": "model.config.is_valid.max_notify_per_channel.app_error", "id": "model.config.is_valid.max_notify_per_channel.app_error",
@@ -4417,11 +4421,11 @@
}, },
{ {
"id": "model.token.is_valid.expiry", "id": "model.token.is_valid.expiry",
"translation": "Invalid token expiry" "translation": "無效的 Token 失效期"
}, },
{ {
"id": "model.token.is_valid.size", "id": "model.token.is_valid.size",
"translation": "無效的 Token" "translation": "無效的 Token"
}, },
{ {
"id": "model.user.is_valid.auth_data.app_error", "id": "model.user.is_valid.auth_data.app_error",
@@ -4461,7 +4465,7 @@
}, },
{ {
"id": "model.user.is_valid.password_limit.app_error", "id": "model.user.is_valid.password_limit.app_error",
"translation": "Unable to set a password over 72 characters due to the limitations of bcrypt." "translation": "由於 bcrypt 的限制無法設定超過72字元長度的密碼。"
}, },
{ {
"id": "model.user.is_valid.position.app_error", "id": "model.user.is_valid.position.app_error",
@@ -5225,7 +5229,7 @@
}, },
{ {
"id": "store.sql_post.search.disabled", "id": "store.sql_post.search.disabled",
"translation": "Searching has been disabled on this server. Please contact your System Administrator." "translation": "此伺服器已停用搜尋功能。請向系統管理員聯繫。"
}, },
{ {
"id": "store.sql_post.search.warn", "id": "store.sql_post.search.warn",

Просмотреть файл

@@ -615,13 +615,21 @@ func (o *Config) SetDefaults() {
if o.TeamSettings.RestrictPublicChannelCreation == nil { if o.TeamSettings.RestrictPublicChannelCreation == nil {
o.TeamSettings.RestrictPublicChannelCreation = new(string) o.TeamSettings.RestrictPublicChannelCreation = new(string)
// If this setting does not exist, assume migration from <3.6, so use management setting as default. // If this setting does not exist, assume migration from <3.6, so use management setting as default.
*o.TeamSettings.RestrictPublicChannelCreation = *o.TeamSettings.RestrictPublicChannelManagement if *o.TeamSettings.RestrictPublicChannelManagement == PERMISSIONS_CHANNEL_ADMIN {
*o.TeamSettings.RestrictPublicChannelCreation = PERMISSIONS_TEAM_ADMIN
} else {
*o.TeamSettings.RestrictPublicChannelCreation = *o.TeamSettings.RestrictPublicChannelManagement
}
} }
if o.TeamSettings.RestrictPrivateChannelCreation == nil { if o.TeamSettings.RestrictPrivateChannelCreation == nil {
o.TeamSettings.RestrictPrivateChannelCreation = new(string) o.TeamSettings.RestrictPrivateChannelCreation = new(string)
// If this setting does not exist, assume migration from <3.6, so use management setting as default. // If this setting does not exist, assume migration from <3.6, so use management setting as default.
*o.TeamSettings.RestrictPrivateChannelCreation = *o.TeamSettings.RestrictPrivateChannelManagement if *o.TeamSettings.RestrictPrivateChannelManagement == PERMISSIONS_CHANNEL_ADMIN {
*o.TeamSettings.RestrictPrivateChannelCreation = PERMISSIONS_TEAM_ADMIN
} else {
*o.TeamSettings.RestrictPrivateChannelCreation = *o.TeamSettings.RestrictPrivateChannelManagement
}
} }
if o.TeamSettings.RestrictPublicChannelDeletion == nil { if o.TeamSettings.RestrictPublicChannelDeletion == nil {
@@ -712,7 +720,7 @@ func (o *Config) SetDefaults() {
} }
if !IsSafeLink(o.SupportSettings.TermsOfServiceLink) { if !IsSafeLink(o.SupportSettings.TermsOfServiceLink) {
*o.SupportSettings.TermsOfServiceLink = "" *o.SupportSettings.TermsOfServiceLink = SUPPORT_SETTINGS_DEFAULT_TERMS_OF_SERVICE_LINK
} }
if o.SupportSettings.TermsOfServiceLink == nil { if o.SupportSettings.TermsOfServiceLink == nil {

Просмотреть файл

@@ -10,12 +10,13 @@ import (
) )
const ( const (
SESSION_COOKIE_TOKEN = "MMAUTHTOKEN" SESSION_COOKIE_TOKEN = "MMAUTHTOKEN"
SESSION_COOKIE_USER = "MMUSERID" SESSION_COOKIE_USER = "MMUSERID"
SESSION_CACHE_SIZE = 35000 SESSION_CACHE_SIZE = 35000
SESSION_PROP_PLATFORM = "platform" SESSION_PROP_PLATFORM = "platform"
SESSION_PROP_OS = "os" SESSION_PROP_OS = "os"
SESSION_PROP_BROWSER = "browser" SESSION_PROP_BROWSER = "browser"
SESSION_ACTIVITY_TIMEOUT = 1000 * 60 * 5 // 5 minutes
) )
type Session struct { type Session struct {

Просмотреть файл

@@ -58,7 +58,7 @@ export function emitChannelClickEvent(channel) {
getMyChannelMemberPromise.then(() => { getMyChannelMemberPromise.then(() => {
getChannelStats(chan.id)(dispatch, getState); getChannelStats(chan.id)(dispatch, getState);
viewChannel(chan.id)(dispatch, getState); viewChannel(chan.id, oldChannelId)(dispatch, getState);
loadPosts(chan.id); loadPosts(chan.id);
// Mark previous and next channel as read // Mark previous and next channel as read
@@ -379,7 +379,7 @@ export function newLocalizationSelected(locale) {
translations: en translations: en
}); });
} else { } else {
const localeInfo = I18n.getLanguageInfo(locale) || I18n.getLanguageInfo(global.window.mm_config.DefaultClientLocale); const localeInfo = I18n.getLanguageInfo(locale);
Client.getTranslations( Client.getTranslations(
localeInfo.url, localeInfo.url,
@@ -401,13 +401,23 @@ export function newLocalizationSelected(locale) {
} }
} }
export function loadCurrentLocale() {
const user = UserStore.getCurrentUser();
if (user && user.locale) {
newLocalizationSelected(user.locale);
} else {
loadDefaultLocale();
}
}
export function loadDefaultLocale() { export function loadDefaultLocale() {
const defaultLocale = global.window.mm_config.DefaultClientLocale; let locale = global.window.mm_config.DefaultClientLocale;
let locale = global.window.mm_user ? global.window.mm_user.locale || defaultLocale : defaultLocale;
if (!I18n.getLanguageInfo(locale)) { if (!I18n.getLanguageInfo(locale)) {
locale = 'en'; locale = 'en';
} }
return newLocalizationSelected(locale); return newLocalizationSelected(locale);
} }

Просмотреть файл

@@ -28,6 +28,9 @@ import {
getTeamMembersForUser as getTeamMembersForUserRedux getTeamMembersForUser as getTeamMembersForUserRedux
} from 'mattermost-redux/actions/teams'; } from 'mattermost-redux/actions/teams';
import {TeamTypes} from 'mattermost-redux/action_types';
import {batchActions} from 'redux-batched-actions';
export function checkIfTeamExists(teamName, onSuccess, onError) { export function checkIfTeamExists(teamName, onSuccess, onError) {
checkIfTeamExistsRedux(teamName)(dispatch, getState).then( checkIfTeamExistsRedux(teamName)(dispatch, getState).then(
(exists) => { (exists) => {
@@ -104,6 +107,26 @@ export function addUserToTeamFromInvite(data, hash, inviteId, success, error) {
hash, hash,
inviteId, inviteId,
(team) => { (team) => {
const member = {
team_id: team.id,
user_id: getState().entities.users.currentUserId,
roles: 'team_user',
delete_at: 0,
msg_count: 0,
mention_count: 0
};
dispatch(batchActions([
{
type: TeamTypes.RECEIVED_TEAMS_LIST,
data: [team]
},
{
type: TeamTypes.RECEIVED_MY_TEAM_MEMBER,
data: member
}
]));
if (success) { if (success) {
success(team); success(team);
} }

Просмотреть файл

@@ -9,6 +9,7 @@ import UserStore from 'stores/user_store.jsx';
import ChannelStore from 'stores/channel_store.jsx'; import ChannelStore from 'stores/channel_store.jsx';
import {getChannelMembersForUserIds} from 'actions/channel_actions.jsx'; import {getChannelMembersForUserIds} from 'actions/channel_actions.jsx';
import {loadCurrentLocale} from 'actions/global_actions.jsx';
import {loadStatusesForProfilesList, loadStatusesForProfilesMap} from 'actions/status_actions.jsx'; import {loadStatusesForProfilesList, loadStatusesForProfilesMap} from 'actions/status_actions.jsx';
import {getDirectChannelName, getUserIdFromChannelName} from 'utils/utils.jsx'; import {getDirectChannelName, getUserIdFromChannelName} from 'utils/utils.jsx';
@@ -51,6 +52,8 @@ import {getTeamMembersByIds, getMyTeamMembers} from 'mattermost-redux/actions/te
export function loadMe(callback) { export function loadMe(callback) {
loadMeRedux()(dispatch, getState).then( loadMeRedux()(dispatch, getState).then(
() => { () => {
loadCurrentLocale();
if (callback) { if (callback) {
callback(); callback();
} }
@@ -742,6 +745,12 @@ export function webLogin(loginId, password, token, success, error) {
success(); success();
} else if (!ok && error) { } else if (!ok && error) {
const serverError = getState().requests.users.login.error; const serverError = getState().requests.users.login.error;
if (serverError.server_error_id === 'api.context.mfa_required.app_error') {
if (success) {
success();
}
return;
}
error({id: serverError.server_error_id, ...serverError}); error({id: serverError.server_error_id, ...serverError});
} }
} }

Просмотреть файл

@@ -34,9 +34,10 @@ import {browserHistory} from 'react-router/es6';
import store from 'stores/redux_store.jsx'; import store from 'stores/redux_store.jsx';
const dispatch = store.dispatch; const dispatch = store.dispatch;
const getState = store.getState; const getState = store.getState;
import {batchActions} from 'redux-batched-actions';
import {viewChannel, getChannelAndMyMember, getChannelStats} from 'mattermost-redux/actions/channels'; import {viewChannel, getChannelAndMyMember, getChannelStats} from 'mattermost-redux/actions/channels';
import {setServerVersion} from 'mattermost-redux/actions/general'; import {setServerVersion} from 'mattermost-redux/actions/general';
import {ChannelTypes} from 'mattermost-redux/action_types'; import {ChannelTypes, TeamTypes, UserTypes} from 'mattermost-redux/action_types';
const MAX_WEBSOCKET_FAILS = 7; const MAX_WEBSOCKET_FAILS = 7;
@@ -237,7 +238,9 @@ function handleNewPostEvent(msg) {
posts[post.id] = post; posts[post.id] = post;
loadProfilesForPosts(posts); loadProfilesForPosts(posts);
UserStore.setStatus(post.user_id, UserStatuses.ONLINE); if (post.user_id !== UserStore.getCurrentId()) {
UserStore.setStatus(post.user_id, UserStatuses.ONLINE);
}
} }
function handlePostEditEvent(msg) { function handlePostEditEvent(msg) {
@@ -294,6 +297,18 @@ function handleLeaveTeamEvent(msg) {
GlobalActions.redirectUserToDefaultTeam(); GlobalActions.redirectUserToDefaultTeam();
} }
} }
dispatch(batchActions([
{
type: UserTypes.RECEIVED_PROFILE_NOT_IN_TEAM,
data: {user_id: msg.data.user_id},
id: msg.data.team_id
},
{
type: TeamTypes.REMOVE_MEMBER_FROM_TEAM,
data: {team_id: msg.data.team_id, user_id: msg.data.user_id}
}
]));
} else { } else {
UserStore.removeProfileFromTeam(msg.data.team_id, msg.data.user_id); UserStore.removeProfileFromTeam(msg.data.team_id, msg.data.user_id);
TeamStore.removeMemberInTeam(msg.data.team_id, msg.data.user_id); TeamStore.removeMemberInTeam(msg.data.team_id, msg.data.user_id);
@@ -334,6 +349,11 @@ function handleUserRemovedEvent(msg) {
BrowserStore.setItem('channel-removed-state', sentState); BrowserStore.setItem('channel-removed-state', sentState);
$('#removed_from_channel').modal('show'); $('#removed_from_channel').modal('show');
} }
dispatch({
type: ChannelTypes.LEAVE_CHANNEL,
data: {id: msg.data.channel_id, user_id: msg.broadcast.user_id}
});
} else if (ChannelStore.getCurrentId() === msg.broadcast.channel_id) { } else if (ChannelStore.getCurrentId() === msg.broadcast.channel_id) {
getChannelStats(ChannelStore.getCurrentId())(dispatch, getState); getChannelStats(ChannelStore.getCurrentId())(dispatch, getState);
} }
@@ -382,7 +402,9 @@ function handlePreferencesDeletedEvent(msg) {
function handleUserTypingEvent(msg) { function handleUserTypingEvent(msg) {
GlobalActions.emitRemoteUserTypingEvent(msg.broadcast.channel_id, msg.data.user_id, msg.data.parent_id); GlobalActions.emitRemoteUserTypingEvent(msg.broadcast.channel_id, msg.data.user_id, msg.data.parent_id);
UserStore.setStatus(msg.data.user_id, UserStatuses.ONLINE); if (msg.data.user_id !== UserStore.getCurrentId()) {
UserStore.setStatus(msg.data.user_id, UserStatuses.ONLINE);
}
} }
function handleStatusChangedEvent(msg) { function handleStatusChangedEvent(msg) {

Просмотреть файл

@@ -378,7 +378,10 @@ export function formatAuditInfo(audit, formatMessage) {
if (userIdField.indexOf('user_id') >= 0) { if (userIdField.indexOf('user_id') >= 0) {
userId = userIdField[userIdField.indexOf('user_id') + 1]; userId = userIdField[userIdField.indexOf('user_id') + 1];
username = UserStore.getProfile(userId).username; var profile = UserStore.getProfile(userId);
if (profile) {
username = profile.username;
}
} }
} }

Просмотреть файл

@@ -33,20 +33,18 @@ export default class NotLoggedIn extends React.Component {
); );
} }
if (global.window.mm_config.TermsOfServiceLink) { content.push(
content.push( <a
<a key='terms_link'
key='terms_link' id='terms_link'
id='terms_link' className='pull-right footer-link'
className='pull-right footer-link' target='_blank'
target='_blank' rel='noopener noreferrer'
rel='noopener noreferrer' href={global.window.mm_config.TermsOfServiceLink}
href={global.window.mm_config.TermsOfServiceLink} >
> <FormattedMessage id='web.footer.terms'/>
<FormattedMessage id='web.footer.terms'/> </a>
</a> );
);
}
if (global.window.mm_config.PrivacyPolicyLink) { if (global.window.mm_config.PrivacyPolicyLink) {
content.push( content.push(

Просмотреть файл

@@ -210,7 +210,7 @@ export default class LoginController extends React.Component {
finishSignin(team) { finishSignin(team) {
const query = this.props.location.query; const query = this.props.location.query;
GlobalActions.loadDefaultLocale(); GlobalActions.loadCurrentLocale();
if (query.redirect_to) { if (query.redirect_to) {
browserHistory.push(query.redirect_to); browserHistory.push(query.redirect_to);
} else if (team) { } else if (team) {
@@ -493,12 +493,14 @@ export default class LoginController extends React.Component {
key='gitlab' key='gitlab'
href={Client.getOAuthRoute() + '/gitlab/login' + this.props.location.search} href={Client.getOAuthRoute() + '/gitlab/login' + this.props.location.search}
> >
<span className='icon'/>
<span> <span>
<FormattedMessage <span className='icon'/>
id='login.gitlab' <span>
defaultMessage='GitLab' <FormattedMessage
/> id='login.gitlab'
defaultMessage='GitLab'
/>
</span>
</span> </span>
</a> </a>
); );
@@ -511,12 +513,14 @@ export default class LoginController extends React.Component {
key='google' key='google'
href={Client.getOAuthRoute() + '/google/login' + this.props.location.search} href={Client.getOAuthRoute() + '/google/login' + this.props.location.search}
> >
<span className='icon'/>
<span> <span>
<FormattedMessage <span className='icon'/>
id='login.google' <span>
defaultMessage='Google Apps' <FormattedMessage
/> id='login.google'
defaultMessage='Google Apps'
/>
</span>
</span> </span>
</a> </a>
); );
@@ -529,12 +533,14 @@ export default class LoginController extends React.Component {
key='office365' key='office365'
href={Client.getOAuthRoute() + '/office365/login' + this.props.location.search} href={Client.getOAuthRoute() + '/office365/login' + this.props.location.search}
> >
<span className='icon'/>
<span> <span>
<FormattedMessage <span className='icon'/>
id='login.office365' <span>
defaultMessage='Office 365' <FormattedMessage
/> id='login.office365'
defaultMessage='Office 365'
/>
</span>
</span> </span>
</a> </a>
); );
@@ -547,9 +553,11 @@ export default class LoginController extends React.Component {
key='saml' key='saml'
href={'/login/sso/saml' + this.props.location.search} href={'/login/sso/saml' + this.props.location.search}
> >
<span className='icon fa fa-lock fa--margin-top'/>
<span> <span>
{global.window.mm_config.SamlLoginButtonText} <span className='icon fa fa-lock fa--margin-top'/>
<span>
{global.window.mm_config.SamlLoginButtonText}
</span>
</span> </span>
</a> </a>
); );

Просмотреть файл

@@ -8,6 +8,8 @@ import React from 'react';
import {FormattedMessage, FormattedHTMLMessage} from 'react-intl'; import {FormattedMessage, FormattedHTMLMessage} from 'react-intl';
import {browserHistory} from 'react-router/es6'; import {browserHistory} from 'react-router/es6';
import {loadMe} from 'actions/user_actions.jsx';
export default class Confirm extends React.Component { export default class Confirm extends React.Component {
constructor(props) { constructor(props) {
super(props); super(props);
@@ -25,7 +27,9 @@ export default class Confirm extends React.Component {
submit(e) { submit(e) {
e.preventDefault(); e.preventDefault();
browserHistory.push('/'); loadMe(() => {
browserHistory.push('/');
});
} }
onKeyPress(e) { onKeyPress(e) {

Просмотреть файл

@@ -2,42 +2,10 @@
// See License.txt for license information. // See License.txt for license information.
import * as utils from 'utils/utils.jsx'; import * as utils from 'utils/utils.jsx';
import {getCountsStateFromStores} from 'utils/channel_utils.jsx';
import ChannelStore from 'stores/channel_store.jsx'; import ChannelStore from 'stores/channel_store.jsx';
import TeamStore from 'stores/team_store.jsx'; import TeamStore from 'stores/team_store.jsx';
function getCountsStateFromStores() {
let mentionCount = 0;
let messageCount = 0;
const teamMembers = TeamStore.getMyTeamMembers();
const channels = ChannelStore.getAll();
const members = ChannelStore.getMyMembers();
teamMembers.forEach((member) => {
if (member.team_id !== TeamStore.getCurrentId()) {
mentionCount += (member.mention_count || 0);
messageCount += (member.msg_count || 0);
}
});
channels.forEach((channel) => {
const channelMember = members[channel.id];
if (channelMember == null) {
return;
}
if (channel.type === 'D') {
mentionCount += channel.total_msg_count - channelMember.msg_count;
} else if (channelMember.mention_count > 0) {
mentionCount += channelMember.mention_count;
}
if (channelMember.notify_props.mark_unread !== 'mention' && channel.total_msg_count - channelMember.msg_count > 0) {
messageCount += 1;
}
});
return {mentionCount, messageCount};
}
import React from 'react'; import React from 'react';
export default class NotifyCounts extends React.Component { export default class NotifyCounts extends React.Component {

Просмотреть файл

@@ -20,8 +20,8 @@ export default class Root extends React.Component {
constructor(props) { constructor(props) {
super(props); super(props);
this.state = { this.state = {
locale: 'en', locale: LocalizationStore.getLocale(),
translations: null translations: LocalizationStore.getTranslations()
}; };
this.localizationChanged = this.localizationChanged.bind(this); this.localizationChanged = this.localizationChanged.bind(this);
@@ -113,7 +113,7 @@ export default class Root extends React.Component {
LocalizationStore.addChangeListener(this.localizationChanged); LocalizationStore.addChangeListener(this.localizationChanged);
// Get our localizaiton // Get our localizaiton
GlobalActions.loadDefaultLocale(); GlobalActions.loadCurrentLocale();
} }
componentWillUnmount() { componentWillUnmount() {

Просмотреть файл

@@ -90,28 +90,8 @@ export default class Sidebar extends React.Component {
} }
getTotalUnreadCount() { getTotalUnreadCount() {
let msgs = 0; const unreads = ChannelUtils.getCountsStateFromStores(this.state.currentTeam, this.state.teamMembers, this.state.unreadCounts);
let mentions = 0; return {msgs: unreads.messageCount, mentions: unreads.mentionCount};
const unreadCounts = this.state.unreadCounts;
const teamMembers = this.state.teamMembers;
teamMembers.forEach((member) => {
if (member.team_id !== this.state.currentTeam.id) {
msgs += member.msg_count || 0;
mentions += member.mention_count || 0;
}
});
Object.keys(unreadCounts).forEach((chId) => {
const channel = ChannelStore.get(chId);
if (channel && (channel.type === Constants.DM_CHANNEL || channel.type === Constants.GM_CHANNEL || channel.team_id === this.state.currentTeam.id)) {
msgs += unreadCounts[chId].msgs;
mentions += unreadCounts[chId].mentions;
}
});
return {msgs, mentions};
} }
getStateFromStores() { getStateFromStores() {

Просмотреть файл

@@ -144,9 +144,8 @@ export default class SignupController extends React.Component {
key='email' key='email'
to={'/signup_email' + window.location.search} to={'/signup_email' + window.location.search}
> >
<span className='icon fa fa-envelope'/>
<span> <span>
<span className='icon fa fa-envelope'/>
<FormattedMessage <FormattedMessage
id='signup.email' id='signup.email'
defaultMessage='Email and Password' defaultMessage='Email and Password'
@@ -163,12 +162,14 @@ export default class SignupController extends React.Component {
key='gitlab' key='gitlab'
href={Client.getOAuthRoute() + '/gitlab/signup' + window.location.search} href={Client.getOAuthRoute() + '/gitlab/signup' + window.location.search}
> >
<span className='icon'/>
<span> <span>
<FormattedMessage <span className='icon'/>
id='signup.gitlab' <span>
defaultMessage='GitLab Single-Sign-On' <FormattedMessage
/> id='signup.gitlab'
defaultMessage='GitLab Single-Sign-On'
/>
</span>
</span> </span>
</a> </a>
); );
@@ -181,12 +182,14 @@ export default class SignupController extends React.Component {
key='google' key='google'
href={Client.getOAuthRoute() + '/google/signup' + window.location.search} href={Client.getOAuthRoute() + '/google/signup' + window.location.search}
> >
<span className='icon'/>
<span> <span>
<FormattedMessage <span className='icon'/>
id='signup.google' <span>
defaultMessage='Google Account' <FormattedMessage
/> id='signup.google'
defaultMessage='Google Account'
/>
</span>
</span> </span>
</a> </a>
); );
@@ -199,12 +202,14 @@ export default class SignupController extends React.Component {
key='office365' key='office365'
href={Client.getOAuthRoute() + '/office365/signup' + window.location.search} href={Client.getOAuthRoute() + '/office365/signup' + window.location.search}
> >
<span className='icon'/>
<span> <span>
<FormattedMessage <span className='icon'/>
id='signup.office365' <span>
defaultMessage='Office 365' <FormattedMessage
/> id='signup.office365'
defaultMessage='Office 365'
/>
</span>
</span> </span>
</a> </a>
); );
@@ -217,12 +222,14 @@ export default class SignupController extends React.Component {
key='ldap' key='ldap'
to={'/signup_ldap' + window.location.search} to={'/signup_ldap' + window.location.search}
> >
<span className='icon fa fa-folder-open fa--margin-top'/>
<span> <span>
<FormattedMessage <span className='icon fa fa-folder-open fa--margin-top'/>
id='signup.ldap' <span>
defaultMessage='AD/LDAP Credentials' <FormattedMessage
/> id='signup.ldap'
defaultMessage='AD/LDAP Credentials'
/>
</span>
</span> </span>
</Link> </Link>
); );
@@ -242,9 +249,11 @@ export default class SignupController extends React.Component {
key='saml' key='saml'
href={'/login/sso/saml' + window.location.search + query} href={'/login/sso/saml' + window.location.search + query}
> >
<span className='icon fa fa-lock fa--margin-top'/>
<span> <span>
{global.window.mm_config.SamlLoginButtonText} <span className='icon fa fa-lock fa--margin-top'/>
<span>
{global.window.mm_config.SamlLoginButtonText}
</span>
</span> </span>
</a> </a>
); );

Просмотреть файл

@@ -33,12 +33,10 @@ export default class ManageLanguage extends React.Component {
changeLanguage(e) { changeLanguage(e) {
e.preventDefault(); e.preventDefault();
var user = this.props.user; this.submitUser({
var locale = this.state.locale; ...this.props.user,
locale: this.state.locale
user.locale = locale; });
this.submitUser(user);
} }
submitUser(user) { submitUser(user) {
updateUser(user, Constants.UserUpdateEvents.LANGUAGE, updateUser(user, Constants.UserUpdateEvents.LANGUAGE,

Просмотреть файл

@@ -300,6 +300,8 @@
"admin.email.smtpUsernameTitle": "SMTP Server Benutzername:", "admin.email.smtpUsernameTitle": "SMTP Server Benutzername:",
"admin.email.testing": "Überprüfen...", "admin.email.testing": "Überprüfen...",
"admin.false": "falsch", "admin.false": "falsch",
"admin.file.enableFileAttachments": "Dateianhänge aktivieren:",
"admin.file.enableFileAttachmentsDesc": "Wenn falsch, werden Datei- und Bildanhäge an Nachrichten deaktiviert.",
"admin.file_upload.chooseFile": "Datei auswählen", "admin.file_upload.chooseFile": "Datei auswählen",
"admin.file_upload.noFile": "Keine Datei hochgeladen", "admin.file_upload.noFile": "Keine Datei hochgeladen",
"admin.file_upload.uploadFile": "Hochladen", "admin.file_upload.uploadFile": "Hochladen",
@@ -532,7 +534,7 @@
"admin.log.locationPlaceholder": "Einen Dateiort eingeben", "admin.log.locationPlaceholder": "Einen Dateiort eingeben",
"admin.log.locationTitle": "Log-Verzeichnis:", "admin.log.locationTitle": "Log-Verzeichnis:",
"admin.log.logSettings": "Protokoll-Einstellungen", "admin.log.logSettings": "Protokoll-Einstellungen",
"admin.logs.bannerDesc": "To look up users by User ID, go to Reporting > Users and paste the ID into the search filter.", "admin.logs.bannerDesc": "Um Benutzer nach Benutzer ID zu suchen, wechseln Sie zu Reporting > Benutzer und fügen die ID in den Suchfilter ein.",
"admin.logs.reload": "Erneut laden", "admin.logs.reload": "Erneut laden",
"admin.logs.title": "Serverprotokoll", "admin.logs.title": "Serverprotokoll",
"admin.metrics.enableDescription": "Wenn wahr, wird Mattermost Performance Daten sammeln und profilieren. Bitte schauen Sie in die <a href=\"http://docs.mattermost.com/deployment/metrics.html\" target='_blank'>Dokumentation</a> um mehr über die Konfiguration von Performanceüberwachung für Mattermost zu erfahren.", "admin.metrics.enableDescription": "Wenn wahr, wird Mattermost Performance Daten sammeln und profilieren. Bitte schauen Sie in die <a href=\"http://docs.mattermost.com/deployment/metrics.html\" target='_blank'>Dokumentation</a> um mehr über die Konfiguration von Performanceüberwachung für Mattermost zu erfahren.",
@@ -628,7 +630,7 @@
"admin.saml.emailAttrTitle": "E-Mail Attribut:", "admin.saml.emailAttrTitle": "E-Mail Attribut:",
"admin.saml.enableDescription": "Wenn wahr erlaubt Mattermost Login mit SAML. Bitte sehen Sie sich die <a href='http://docs.mattermost.com/deployment/sso-saml.html' target='_blank'>Dokumentation</a> an um mehr über die SAML Konfiguration für Mattermost zu lernen.", "admin.saml.enableDescription": "Wenn wahr erlaubt Mattermost Login mit SAML. Bitte sehen Sie sich die <a href='http://docs.mattermost.com/deployment/sso-saml.html' target='_blank'>Dokumentation</a> an um mehr über die SAML Konfiguration für Mattermost zu lernen.",
"admin.saml.enableTitle": "Erlaube Login mit SAML:", "admin.saml.enableTitle": "Erlaube Login mit SAML:",
"admin.saml.encryptDescription": "Wenn wahr wird Mattermost SAML Assertions entschlüsseln, die mit Ihrem öffentlichen Zertifikat des Service Providers verschlüsselt wurden.", "admin.saml.encryptDescription": "Wenn falsch wird Mattermost nicht die verschlüsselten SAML Assertions mit dem öffentlichen Zertifikat des Service Providers entschlüsseln. Nicht empfohlen für Produktionsumgebungen. Nur für Testzwecke.",
"admin.saml.encryptTitle": "Verschlüsselung aktivieren:", "admin.saml.encryptTitle": "Verschlüsselung aktivieren:",
"admin.saml.firstnameAttrDesc": "(Optional) Das Attribut in der SAML Erklärung, welches benutzt wird um den Vornamen des Nutzers in Mattermost auszufüllen.", "admin.saml.firstnameAttrDesc": "(Optional) Das Attribut in der SAML Erklärung, welches benutzt wird um den Vornamen des Nutzers in Mattermost auszufüllen.",
"admin.saml.firstnameAttrEx": "z.B.: \"FirstName\"", "admin.saml.firstnameAttrEx": "z.B.: \"FirstName\"",
@@ -673,7 +675,7 @@
"admin.saml.usernameAttrDesc": "Das Attribut des LDAP Servers, welches benutzt wird um den Benutzernamen des Nutzers in Mattermost auszfüllen.", "admin.saml.usernameAttrDesc": "Das Attribut des LDAP Servers, welches benutzt wird um den Benutzernamen des Nutzers in Mattermost auszfüllen.",
"admin.saml.usernameAttrEx": "z.B.: \"Username\"", "admin.saml.usernameAttrEx": "z.B.: \"Username\"",
"admin.saml.usernameAttrTitle": "Attribut Benutzername:", "admin.saml.usernameAttrTitle": "Attribut Benutzername:",
"admin.saml.verifyDescription": "Wenn wahr verifiziert Mattermost, dass die Signatur in den SAML Antworten der Service Provider Login URL entspricht", "admin.saml.verifyDescription": "Wenn falsch wird Mattermost nicht die Signatur einer SAML Response mit der Login-URL des Service Providers überprüfen. Nicht empfohlen für Produktionsumgebungen. Nur für Testzwecke.",
"admin.saml.verifyTitle": "Signatur überprüfen:", "admin.saml.verifyTitle": "Signatur überprüfen:",
"admin.save": "Speichern", "admin.save": "Speichern",
"admin.saving": "Speichere Einstellungen...", "admin.saving": "Speichere Einstellungen...",
@@ -897,8 +899,8 @@
"admin.user_item.confirmDemotionCmd": "platform roles system_admin {username}", "admin.user_item.confirmDemotionCmd": "platform roles system_admin {username}",
"admin.user_item.emailTitle": "<strong>E-Mail-Adresse:</strong> {email}", "admin.user_item.emailTitle": "<strong>E-Mail-Adresse:</strong> {email}",
"admin.user_item.inactive": "Inaktiv", "admin.user_item.inactive": "Inaktiv",
"admin.user_item.makeActive": "Aktiv", "admin.user_item.makeActive": "Aktivieren",
"admin.user_item.makeInactive": "Deactivate", "admin.user_item.makeInactive": "Deaktivieren",
"admin.user_item.makeMember": "Zum Mitglied machen", "admin.user_item.makeMember": "Zum Mitglied machen",
"admin.user_item.makeSysAdmin": "Zum Systemadministrator machen", "admin.user_item.makeSysAdmin": "Zum Systemadministrator machen",
"admin.user_item.makeTeamAdmin": "Zum Teamadministrator machen", "admin.user_item.makeTeamAdmin": "Zum Teamadministrator machen",
@@ -989,8 +991,8 @@
"app.channel.post_update_channel_purpose_message.removed": "{username} hat den Kanalzweck entfernt (war: {old})", "app.channel.post_update_channel_purpose_message.removed": "{username} hat den Kanalzweck entfernt (war: {old})",
"app.channel.post_update_channel_purpose_message.updated_from": "{username} hat den Kanalzweck aktualisiert. Alt: {old} Neu: {new}", "app.channel.post_update_channel_purpose_message.updated_from": "{username} hat den Kanalzweck aktualisiert. Alt: {old} Neu: {new}",
"app.channel.post_update_channel_purpose_message.updated_to": "{username} hat den Kanalzweck geändert zu: {new}", "app.channel.post_update_channel_purpose_message.updated_to": "{username} hat den Kanalzweck geändert zu: {new}",
"audit_table.accountActive": "Account activated", "audit_table.accountActive": "Konto aktiviert",
"audit_table.accountInactive": "Account deactivated", "audit_table.accountInactive": "Konto deaktiviert",
"audit_table.action": "Aktion", "audit_table.action": "Aktion",
"audit_table.attemptedAllowOAuthAccess": "Versuchte einen neuen OAuth Service Zugriff zu erlauben", "audit_table.attemptedAllowOAuthAccess": "Versuchte einen neuen OAuth Service Zugriff zu erlauben",
"audit_table.attemptedLicenseAdd": "Versuchte eine neue Lizenz hinzuzufügen", "audit_table.attemptedLicenseAdd": "Versuchte eine neue Lizenz hinzuzufügen",
@@ -1232,9 +1234,9 @@
"custom_emoji.header": "Eigenes Emoji", "custom_emoji.header": "Eigenes Emoji",
"custom_emoji.search": "Suche eigenes Emoji", "custom_emoji.search": "Suche eigenes Emoji",
"deactivate_member_modal.cancel": "Abbrechen", "deactivate_member_modal.cancel": "Abbrechen",
"deactivate_member_modal.deactivate": "Deactivate", "deactivate_member_modal.deactivate": "Deaktivieren",
"deactivate_member_modal.desc": "This action deactivates {username}. They will be logged out and not have access to any teams or channels on this system. Are you sure you want to deactivate {username}?", "deactivate_member_modal.desc": "Diese Aktion deaktiviert {username}. Der Nutzer wird abgemeldet und hat keinen Zugriff auf Teams oder Kanäle auf diesem System. Sind Sie sicher, dass Sie {username} deaktivieren möchten?",
"deactivate_member_modal.title": "Deactivate {username}", "deactivate_member_modal.title": "{username} deaktivieren",
"default_channel.purpose": "Senden Sie Nachrichten hier, die jeder sehen können soll. Jeder wird automatisch ein permanentes Mitglied in diesem Kanal wenn Sie dem Team beitreten.", "default_channel.purpose": "Senden Sie Nachrichten hier, die jeder sehen können soll. Jeder wird automatisch ein permanentes Mitglied in diesem Kanal wenn Sie dem Team beitreten.",
"delete_channel.cancel": "Abbrechen", "delete_channel.cancel": "Abbrechen",
"delete_channel.confirm": "Bestätige LÖSCHUNG des Kanals", "delete_channel.confirm": "Bestätige LÖSCHUNG des Kanals",
@@ -1322,6 +1324,7 @@
"file_attachment.download": "Download", "file_attachment.download": "Download",
"file_info_preview.size": "Größe ", "file_info_preview.size": "Größe ",
"file_info_preview.type": "Dateityp ", "file_info_preview.type": "Dateityp ",
"file_upload.disabled": "Dateianhänge sind deaktiviert.",
"file_upload.fileAbove": "Datei über {max}MB kann nicht hochgeladen werden: {filename}", "file_upload.fileAbove": "Datei über {max}MB kann nicht hochgeladen werden: {filename}",
"file_upload.filesAbove": "Dateien über {max}MB können nicht hochgeladen werden: {filenames}", "file_upload.filesAbove": "Dateien über {max}MB können nicht hochgeladen werden: {filenames}",
"file_upload.limited": "Anzahl an Uploads begrenzt auf maximal {count}. Bitte nutzen Sie zusätzliche Nachrichten für mehr Dateien.", "file_upload.limited": "Anzahl an Uploads begrenzt auf maximal {count}. Bitte nutzen Sie zusätzliche Nachrichten für mehr Dateien.",
@@ -1587,9 +1590,9 @@
"ldap_signup.length_error": "Der Name muss 3 bis 15 Zeichen enthalten", "ldap_signup.length_error": "Der Name muss 3 bis 15 Zeichen enthalten",
"ldap_signup.teamName": "Name für neues Team eingeben", "ldap_signup.teamName": "Name für neues Team eingeben",
"ldap_signup.team_error": "Bitte geben Sie einen Team Namen ein", "ldap_signup.team_error": "Bitte geben Sie einen Team Namen ein",
"leave_private_channel_modal.leave": "Yes, leave channel", "leave_private_channel_modal.leave": "Ja, Kanal verlassen",
"leave_private_channel_modal.message": "Are you sure you wish to leave the private channel {channel}? You must be re-invited in order to re-join this channel in the future.", "leave_private_channel_modal.message": "Sind Sie sicher, dass Sie den privaten Kanal {channel}? verlassen möchten? Sie müssen erneut eingeladen werden, um diesen Kanal erneut zu betreten.",
"leave_private_channel_modal.title": "Leave Private Channel {channel}", "leave_private_channel_modal.title": "Privaten Kanal {channel} verlassen",
"leave_team_modal.desc": "Sie werden von allen öffentlichen und privaten Kanälen entfernt. Wenn das Team privat ist können Sie diesem nicht wieder beitreten. Sind Sie sich sicher?", "leave_team_modal.desc": "Sie werden von allen öffentlichen und privaten Kanälen entfernt. Wenn das Team privat ist können Sie diesem nicht wieder beitreten. Sind Sie sich sicher?",
"leave_team_modal.no": "Nein", "leave_team_modal.no": "Nein",
"leave_team_modal.title": "Team verlassen?", "leave_team_modal.title": "Team verlassen?",
@@ -1714,9 +1717,9 @@
"mobile.post.cancel": "Abbrechen", "mobile.post.cancel": "Abbrechen",
"mobile.post.delete_question": "Möchten Sie diese Nachricht wirklich löschen?", "mobile.post.delete_question": "Möchten Sie diese Nachricht wirklich löschen?",
"mobile.post.delete_title": "Nachricht löschen", "mobile.post.delete_title": "Nachricht löschen",
"mobile.post.failed_delete": "Delete Message", "mobile.post.failed_delete": "Nachricht löschen",
"mobile.post.failed_retry": "Try Again", "mobile.post.failed_retry": "Erneut versuchen",
"mobile.post.failed_title": "Unable to send your message", "mobile.post.failed_title": "Ihre Nachricht konnte nicht gesendet werden",
"mobile.post.retry": "Aktualisieren", "mobile.post.retry": "Aktualisieren",
"mobile.request.invalid_response": "Ungültige Antwort vom Server erhalten.", "mobile.request.invalid_response": "Ungültige Antwort vom Server erhalten.",
"mobile.routes.channelInfo": "Info", "mobile.routes.channelInfo": "Info",
@@ -1788,6 +1791,7 @@
"navbar_dropdown.integrations": "Integration", "navbar_dropdown.integrations": "Integration",
"navbar_dropdown.inviteMember": "E-Mail-Einladung versenden", "navbar_dropdown.inviteMember": "E-Mail-Einladung versenden",
"navbar_dropdown.join": "Einem anderen Team beitreten", "navbar_dropdown.join": "Einem anderen Team beitreten",
"navbar_dropdown.keyboardShortcuts": "Tastenkombinationen",
"navbar_dropdown.leave": "Team verlassen", "navbar_dropdown.leave": "Team verlassen",
"navbar_dropdown.logout": "Abmelden", "navbar_dropdown.logout": "Abmelden",
"navbar_dropdown.manageMembers": "Mitglieder verwalten", "navbar_dropdown.manageMembers": "Mitglieder verwalten",
@@ -1878,6 +1882,7 @@
"rhs_comment.permalink": "Dauerhafter Link", "rhs_comment.permalink": "Dauerhafter Link",
"rhs_header.backToCallTooltip": "Zurück zu Telefonat", "rhs_header.backToCallTooltip": "Zurück zu Telefonat",
"rhs_header.backToFlaggedTooltip": "Zurück zu markierten Nachrichten", "rhs_header.backToFlaggedTooltip": "Zurück zu markierten Nachrichten",
"rhs_header.backToPinnedTooltip": "Zurück zu markierten Nachrichten",
"rhs_header.backToResultsTooltip": "Zurück zu den Suchergebnissen", "rhs_header.backToResultsTooltip": "Zurück zu den Suchergebnissen",
"rhs_header.closeSidebarTooltip": "Seitenleiste schließen", "rhs_header.closeSidebarTooltip": "Seitenleiste schließen",
"rhs_header.closeTooltip": "Seitenleiste schließen", "rhs_header.closeTooltip": "Seitenleiste schließen",
@@ -2003,7 +2008,7 @@
"sso_signup.length_error": "Der Name muss mindestens 3 bis 15 Zeichen enthalten", "sso_signup.length_error": "Der Name muss mindestens 3 bis 15 Zeichen enthalten",
"sso_signup.teamName": "Geben Sie den Namen des neuen Teams ein", "sso_signup.teamName": "Geben Sie den Namen des neuen Teams ein",
"sso_signup.team_error": "Bitte einen Teamnamen eingeben", "sso_signup.team_error": "Bitte einen Teamnamen eingeben",
"suggestion.mention.all": "CAUTION: This mentions everyone in channel", "suggestion.mention.all": "ACHTUNG: Dies erwähnt jeden im Kanal",
"suggestion.mention.channel": "Benachrichtigt jeden in diesem Kanal", "suggestion.mention.channel": "Benachrichtigt jeden in diesem Kanal",
"suggestion.mention.channels": "Meine Kanäle", "suggestion.mention.channels": "Meine Kanäle",
"suggestion.mention.here": "Benachrichtigt jeden der im Kanal und online ist", "suggestion.mention.here": "Benachrichtigt jeden der im Kanal und online ist",
@@ -2042,9 +2047,9 @@
"team_members_dropdown.confirmDemotionCmd": "platform roles system_admin {username}", "team_members_dropdown.confirmDemotionCmd": "platform roles system_admin {username}",
"team_members_dropdown.inactive": "Inaktiv", "team_members_dropdown.inactive": "Inaktiv",
"team_members_dropdown.leave_team": "Aus dem Team entfernen", "team_members_dropdown.leave_team": "Aus dem Team entfernen",
"team_members_dropdown.makeActive": "Aktiv", "team_members_dropdown.makeActive": "Aktivieren",
"team_members_dropdown.makeAdmin": "Zum Teamadministrator machen", "team_members_dropdown.makeAdmin": "Zum Teamadministrator machen",
"team_members_dropdown.makeInactive": "Deactivate", "team_members_dropdown.makeInactive": "Deaktivieren",
"team_members_dropdown.makeMember": "Zum Mitglied machen", "team_members_dropdown.makeMember": "Zum Mitglied machen",
"team_members_dropdown.member": "Mitglied", "team_members_dropdown.member": "Mitglied",
"team_members_dropdown.systemAdmin": "Systemadministrator", "team_members_dropdown.systemAdmin": "Systemadministrator",
@@ -2169,8 +2174,8 @@
"user.settings.general.checkEmailNoAddress": "Überprüfen Sie Ihr E-Mail Postfach um die neue Adresse zu verifizieren", "user.settings.general.checkEmailNoAddress": "Überprüfen Sie Ihr E-Mail Postfach um die neue Adresse zu verifizieren",
"user.settings.general.close": "Schließen", "user.settings.general.close": "Schließen",
"user.settings.general.confirmEmail": "E-Mail-Adresse bestätigen", "user.settings.general.confirmEmail": "E-Mail-Adresse bestätigen",
"user.settings.general.currentEmail": "Current Email", "user.settings.general.currentEmail": "Aktuelle E-Mail-Adresse",
"user.settings.general.email": "E-Mail", "user.settings.general.email": "E-Mail-Adresse",
"user.settings.general.emailGitlabCantUpdate": "Anmeldung erfolgt durch GitLab. E-Mail-Adresse kann nicht aktualisiert werden. Die E-Mail-Adresse zum Versand von Hinweisen lautet {email}.", "user.settings.general.emailGitlabCantUpdate": "Anmeldung erfolgt durch GitLab. E-Mail-Adresse kann nicht aktualisiert werden. Die E-Mail-Adresse zum Versand von Hinweisen lautet {email}.",
"user.settings.general.emailGoogleCantUpdate": "Anmeldung erfolgt durch Google. E-Mail-Adresse kann nicht aktualisiert werden. Die E-Mail-Adresse zum Versand von Hinweisen lautet {email}.", "user.settings.general.emailGoogleCantUpdate": "Anmeldung erfolgt durch Google. E-Mail-Adresse kann nicht aktualisiert werden. Die E-Mail-Adresse zum Versand von Hinweisen lautet {email}.",
"user.settings.general.emailHelp1": "Die E-Mail-Adresse wird für den Login, die Benachrichtigungen und das Zurücksetzen des Passworts verwendet. Änderungen der E-Mail-Adresse müssen erneut verifiziert werden.", "user.settings.general.emailHelp1": "Die E-Mail-Adresse wird für den Login, die Benachrichtigungen und das Zurücksetzen des Passworts verwendet. Änderungen der E-Mail-Adresse müssen erneut verifiziert werden.",
@@ -2197,7 +2202,7 @@
"user.settings.general.loginOffice365": "Anmeldung erfolgt durch Office 365 ({email})", "user.settings.general.loginOffice365": "Anmeldung erfolgt durch Office 365 ({email})",
"user.settings.general.loginSaml": "Anmeldung erfolgt durch SAML ({email})", "user.settings.general.loginSaml": "Anmeldung erfolgt durch SAML ({email})",
"user.settings.general.newAddress": "Neue Adresse: {email}<br />Überprüfen Sie Ihr Postfach um die obige Adresse zu verifizieren.", "user.settings.general.newAddress": "Neue Adresse: {email}<br />Überprüfen Sie Ihr Postfach um die obige Adresse zu verifizieren.",
"user.settings.general.newEmail": "New Email", "user.settings.general.newEmail": "Neue E-Mail-Adresse",
"user.settings.general.nickname": "Spitzname", "user.settings.general.nickname": "Spitzname",
"user.settings.general.nicknameExtra": "Benutzen Sie den Spitznamen als einen Rufnamen der sich von Ihrem Vor- und Nachnamen unterscheidet. Dies wird hauptsächlich verwendet wenn zwei oder mehr Personen ähnliche Namen haben.", "user.settings.general.nicknameExtra": "Benutzen Sie den Spitznamen als einen Rufnamen der sich von Ihrem Vor- und Nachnamen unterscheidet. Dies wird hauptsächlich verwendet wenn zwei oder mehr Personen ähnliche Namen haben.",
"user.settings.general.notificationsExtra": "Sie erhalten standardmäßig Benachrichtigungen, wenn jemand Ihren Vornamen erwähnt. Gehen Sie zu den {notify} Einstellungen um dies zu ändern.", "user.settings.general.notificationsExtra": "Sie erhalten standardmäßig Benachrichtigungen, wenn jemand Ihren Vornamen erwähnt. Gehen Sie zu den {notify} Einstellungen um dies zu ändern.",

Просмотреть файл

@@ -1327,9 +1327,9 @@
"file_attachment.download": "Download", "file_attachment.download": "Download",
"file_info_preview.size": "Size ", "file_info_preview.size": "Size ",
"file_info_preview.type": "File type ", "file_info_preview.type": "File type ",
"file_upload.disabled": "File attachments are disabled.",
"file_upload.fileAbove": "File above {max}MB cannot be uploaded: {filename}", "file_upload.fileAbove": "File above {max}MB cannot be uploaded: {filename}",
"file_upload.filesAbove": "Files above {max}MB cannot be uploaded: {filenames}", "file_upload.filesAbove": "Files above {max}MB cannot be uploaded: {filenames}",
"file_upload.disabled": "File attachments are disabled.",
"file_upload.limited": "Uploads limited to {count} files maximum. Please use additional posts for more files.", "file_upload.limited": "Uploads limited to {count} files maximum. Please use additional posts for more files.",
"file_upload.pasted": "Image Pasted at ", "file_upload.pasted": "Image Pasted at ",
"filtered_channels_list.count": "{count} {count, plural, =0 {0 channels} one {channel} other {channels}}", "filtered_channels_list.count": "{count} {count, plural, =0 {0 channels} one {channel} other {channels}}",

Просмотреть файл

@@ -300,6 +300,8 @@
"admin.email.smtpUsernameTitle": "Nombre de usuario del Servidor SMTP:", "admin.email.smtpUsernameTitle": "Nombre de usuario del Servidor SMTP:",
"admin.email.testing": "Probando...", "admin.email.testing": "Probando...",
"admin.false": "falso", "admin.false": "falso",
"admin.file.enableFileAttachments": "Habilitar Archivos Adjuntos:",
"admin.file.enableFileAttachmentsDesc": "Si es falso, deshabilita la capacidad de subir archivos e imágenes en los mensajes.",
"admin.file_upload.chooseFile": "Seleccionar Archivo", "admin.file_upload.chooseFile": "Seleccionar Archivo",
"admin.file_upload.noFile": "No se subió ningún archivo", "admin.file_upload.noFile": "No se subió ningún archivo",
"admin.file_upload.uploadFile": "Subir", "admin.file_upload.uploadFile": "Subir",
@@ -628,7 +630,7 @@
"admin.saml.emailAttrTitle": "Atributo de Correo Electrónico:", "admin.saml.emailAttrTitle": "Atributo de Correo Electrónico:",
"admin.saml.enableDescription": "Cuando es verdadero, Mattermost permite el inicio de sesión mediante SAML. Por favor, consulte la <a href='http://docs.mattermost.com/deployment/sso-saml.html' target='_blank'>documentation</a> para obtener más información acerca de la configuración de SAML para Mattermost.", "admin.saml.enableDescription": "Cuando es verdadero, Mattermost permite el inicio de sesión mediante SAML. Por favor, consulte la <a href='http://docs.mattermost.com/deployment/sso-saml.html' target='_blank'>documentation</a> para obtener más información acerca de la configuración de SAML para Mattermost.",
"admin.saml.enableTitle": "Habilitar el inicio de Sesión con SAML:", "admin.saml.enableTitle": "Habilitar el inicio de Sesión con SAML:",
"admin.saml.encryptDescription": "Cuando es verdadero, Mattermost descifrará las Aserciones SAML cifrados con el Certificado Público del Proveedor de Servicio.", "admin.saml.encryptDescription": "Si es falso, Mattermost no se descifrará las Aserciones SAML cifrados con su el Certificado Público del Proveedor de Servicio. No se recomienda para entornos de producción. Solo para probar.",
"admin.saml.encryptTitle": "Habilitar el Cifrado:", "admin.saml.encryptTitle": "Habilitar el Cifrado:",
"admin.saml.firstnameAttrDesc": "(Opcional) El atributo de la Aserción SAML que se utilizará para rellenar el nombre de los usuarios en Mattermost.", "admin.saml.firstnameAttrDesc": "(Opcional) El atributo de la Aserción SAML que se utilizará para rellenar el nombre de los usuarios en Mattermost.",
"admin.saml.firstnameAttrEx": "Ej.: \"FirstName\".", "admin.saml.firstnameAttrEx": "Ej.: \"FirstName\".",
@@ -673,7 +675,7 @@
"admin.saml.usernameAttrDesc": "El atributo de la Aserción SAML que se utilizará para rellenar el campo nombre de usuario en Mattermost.", "admin.saml.usernameAttrDesc": "El atributo de la Aserción SAML que se utilizará para rellenar el campo nombre de usuario en Mattermost.",
"admin.saml.usernameAttrEx": "Ej.: \"Username\"", "admin.saml.usernameAttrEx": "Ej.: \"Username\"",
"admin.saml.usernameAttrTitle": "Atributo Usuario:", "admin.saml.usernameAttrTitle": "Atributo Usuario:",
"admin.saml.verifyDescription": "Cuando es verdadero, Mattermost verifica que la firma enviada desde la Respuesta SAML coincide con el URL del Inicio de Sesión del Proveedor de Servicio", "admin.saml.verifyDescription": "Si es falso, Mattermost no se comprueba que la firma que se envía con una Respuesta SAML coincide con el URL de inicio de Sesión del Proveedor de Servicios. No se recomienda para entornos de producción. Solo para probar.",
"admin.saml.verifyTitle": "Verificar Firma:", "admin.saml.verifyTitle": "Verificar Firma:",
"admin.save": "Guardar", "admin.save": "Guardar",
"admin.saving": "Guardando...", "admin.saving": "Guardando...",
@@ -1322,6 +1324,7 @@
"file_attachment.download": "Descargar", "file_attachment.download": "Descargar",
"file_info_preview.size": "Tamaño ", "file_info_preview.size": "Tamaño ",
"file_info_preview.type": "Tipo de archivo ", "file_info_preview.type": "Tipo de archivo ",
"file_upload.disabled": "Los archivos adjuntos están deshabilitados.",
"file_upload.fileAbove": "No se puede subir un archivo de más de {max}MB: {filename}", "file_upload.fileAbove": "No se puede subir un archivo de más de {max}MB: {filename}",
"file_upload.filesAbove": "No se pueden subir archivos de más de {max}MB: {filenames}", "file_upload.filesAbove": "No se pueden subir archivos de más de {max}MB: {filenames}",
"file_upload.limited": "Se pueden subir un máximo de {count} archivos. Por favor envía otros mensajes para adjuntar más archivos.", "file_upload.limited": "Se pueden subir un máximo de {count} archivos. Por favor envía otros mensajes para adjuntar más archivos.",
@@ -1788,6 +1791,7 @@
"navbar_dropdown.integrations": "Integraciones", "navbar_dropdown.integrations": "Integraciones",
"navbar_dropdown.inviteMember": "Enviar Correo de Invitación", "navbar_dropdown.inviteMember": "Enviar Correo de Invitación",
"navbar_dropdown.join": "Unirme a otro Equipo", "navbar_dropdown.join": "Unirme a otro Equipo",
"navbar_dropdown.keyboardShortcuts": "Atajos de teclado",
"navbar_dropdown.leave": "Abandonar Equipo", "navbar_dropdown.leave": "Abandonar Equipo",
"navbar_dropdown.logout": "Cerrar sesión", "navbar_dropdown.logout": "Cerrar sesión",
"navbar_dropdown.manageMembers": "Administrar Miembros", "navbar_dropdown.manageMembers": "Administrar Miembros",
@@ -1878,6 +1882,7 @@
"rhs_comment.permalink": "Enlace permanente", "rhs_comment.permalink": "Enlace permanente",
"rhs_header.backToCallTooltip": "Volver a la llamada", "rhs_header.backToCallTooltip": "Volver a la llamada",
"rhs_header.backToFlaggedTooltip": "Volver a los Mensajes Marcados", "rhs_header.backToFlaggedTooltip": "Volver a los Mensajes Marcados",
"rhs_header.backToPinnedTooltip": "Volver a los Mensajes Anclados",
"rhs_header.backToResultsTooltip": "Volver a los Resultados de la Búsqueda", "rhs_header.backToResultsTooltip": "Volver a los Resultados de la Búsqueda",
"rhs_header.closeSidebarTooltip": "Cerrar barra lateral", "rhs_header.closeSidebarTooltip": "Cerrar barra lateral",
"rhs_header.closeTooltip": "Cerrar barra lateral", "rhs_header.closeTooltip": "Cerrar barra lateral",

Просмотреть файл

@@ -1,6 +1,6 @@
{ {
"about.close": "Quitter", "about.close": "Quitter",
"about.copyright": "Copyright 2015-{currentYear} Mattermost, Inc. Tous droits réservés", "about.copyright": "Copyright 2015 - {currentYear} Mattermost, Inc. Tous droits réservés",
"about.database": "Base de données :", "about.database": "Base de données :",
"about.date": "Date de compilation :", "about.date": "Date de compilation :",
"about.enterpriseEditionLearn": "Pour en savoir davantage sur lÉdition Entreprise : ", "about.enterpriseEditionLearn": "Pour en savoir davantage sur lÉdition Entreprise : ",
@@ -300,6 +300,8 @@
"admin.email.smtpUsernameTitle": "Nom d'utilisateur SMTP :", "admin.email.smtpUsernameTitle": "Nom d'utilisateur SMTP :",
"admin.email.testing": "Essai en cours...", "admin.email.testing": "Essai en cours...",
"admin.false": "non", "admin.false": "non",
"admin.file.enableFileAttachments": "Activer les fichiers en pièces jointes :",
"admin.file.enableFileAttachmentsDesc": "Lorsque désactivé, désactive les envois de fichiers et d'images conjointement aux messages.",
"admin.file_upload.chooseFile": "Parcourir", "admin.file_upload.chooseFile": "Parcourir",
"admin.file_upload.noFile": "Aucun fichier téléchargé", "admin.file_upload.noFile": "Aucun fichier téléchargé",
"admin.file_upload.uploadFile": "Télécharger", "admin.file_upload.uploadFile": "Télécharger",
@@ -532,7 +534,7 @@
"admin.log.locationPlaceholder": "Saisir l'emplacement du fichier", "admin.log.locationPlaceholder": "Saisir l'emplacement du fichier",
"admin.log.locationTitle": "Répertoire des fichiers journaux :", "admin.log.locationTitle": "Répertoire des fichiers journaux :",
"admin.log.logSettings": "Paramètres de journalisation (logs)", "admin.log.logSettings": "Paramètres de journalisation (logs)",
"admin.logs.bannerDesc": "To look up users by User ID, go to Reporting > Users and paste the ID into the search filter.", "admin.logs.bannerDesc": "Pour rechercher des utilisateurs sur base de leur User ID, allez dans Rapports > Utilisateurs et collez l'ID dans la barre de recherche.",
"admin.logs.reload": "Recharger", "admin.logs.reload": "Recharger",
"admin.logs.title": "Journaux du serveur", "admin.logs.title": "Journaux du serveur",
"admin.metrics.enableDescription": "Lorsqu'activé, Mattermost activera la collecte des rapports de performance et de profilage. Veuillez vous référer à la <a href=\"http://docs.mattermost.com/deployment/metrics.html\" target='_blank'>documentation</a> pour en savoir plus sur la configuration du suivi des performances de Mattermost.", "admin.metrics.enableDescription": "Lorsqu'activé, Mattermost activera la collecte des rapports de performance et de profilage. Veuillez vous référer à la <a href=\"http://docs.mattermost.com/deployment/metrics.html\" target='_blank'>documentation</a> pour en savoir plus sur la configuration du suivi des performances de Mattermost.",
@@ -628,7 +630,7 @@
"admin.saml.emailAttrTitle": "Attribut \"adresse e-mail\" :", "admin.saml.emailAttrTitle": "Attribut \"adresse e-mail\" :",
"admin.saml.enableDescription": "Si activé, Mattermost autorise la connexion en utilisant SAML. Consultez la <a href='http://docs.mattermost.com/deployment/sso-saml.html' target='_blank'>documentation</a> pour en apprendre davantage sur la configuration de SAML pour Mattermost.", "admin.saml.enableDescription": "Si activé, Mattermost autorise la connexion en utilisant SAML. Consultez la <a href='http://docs.mattermost.com/deployment/sso-saml.html' target='_blank'>documentation</a> pour en apprendre davantage sur la configuration de SAML pour Mattermost.",
"admin.saml.enableTitle": "Activer la connexion avec SAML :", "admin.saml.enableTitle": "Activer la connexion avec SAML :",
"admin.saml.encryptDescription": "Si activé, Mattermost déchiffre les commandes SAML chiffrées avec le certificat public de votre serveur d'authentification.", "admin.saml.encryptDescription": "Lorsque désactivé, Mattermost ne déchiffrera pas les Assertions SAML chiffrées avec votre clé publique provenant du certificat de votre fournisseur de services. Ceci n'est pas recommandé pour les environnements de production. Option réservée à des fins de test uniquement.",
"admin.saml.encryptTitle": "Activer le chiffrement :", "admin.saml.encryptTitle": "Activer le chiffrement :",
"admin.saml.firstnameAttrDesc": "(Optionnel) Attribut du serveur LDAP utilisé pour le champ \"surnom\" des utilisateurs dans Mattermost.", "admin.saml.firstnameAttrDesc": "(Optionnel) Attribut du serveur LDAP utilisé pour le champ \"surnom\" des utilisateurs dans Mattermost.",
"admin.saml.firstnameAttrEx": "Ex. : \"Prénom\"", "admin.saml.firstnameAttrEx": "Ex. : \"Prénom\"",
@@ -673,7 +675,7 @@
"admin.saml.usernameAttrDesc": "Attribut du SAML utilisé pour le champ \"nom d'utilisateur\" des utilisateurs dans Mattermost.", "admin.saml.usernameAttrDesc": "Attribut du SAML utilisé pour le champ \"nom d'utilisateur\" des utilisateurs dans Mattermost.",
"admin.saml.usernameAttrEx": "Ex. : \"NomDUtilisateur\"", "admin.saml.usernameAttrEx": "Ex. : \"NomDUtilisateur\"",
"admin.saml.usernameAttrTitle": "Attribut \"nom d'utilisateur\" :", "admin.saml.usernameAttrTitle": "Attribut \"nom d'utilisateur\" :",
"admin.saml.verifyDescription": "Si vrai, Mattermost vérifie la signature du SAML.", "admin.saml.verifyDescription": "Lorsque désactivé, Mattermost ne vérifiera pas que la signature envoyée d'une réponse SAML corresponde à l'URL de login du fournisseur de services. Ceci n'est pas recommandé pour les environnements de production. Option réservée à des fins de test uniquement.",
"admin.saml.verifyTitle": "Vérifier la signature :", "admin.saml.verifyTitle": "Vérifier la signature :",
"admin.save": "Enregistrer", "admin.save": "Enregistrer",
"admin.saving": "Enregistrement des paramètres...", "admin.saving": "Enregistrement des paramètres...",
@@ -697,7 +699,7 @@
"admin.service.corsDescription": "Autoriser les requête HTTP cross-origin depuis des domaines spécifiques (séparés par des espaces). Utilisez \"*\" pour autoriser les CORS pour n'importe quel domaine (pas recommandé) ou laissez vide pour les désactiver.", "admin.service.corsDescription": "Autoriser les requête HTTP cross-origin depuis des domaines spécifiques (séparés par des espaces). Utilisez \"*\" pour autoriser les CORS pour n'importe quel domaine (pas recommandé) ou laissez vide pour les désactiver.",
"admin.service.corsEx": "http://exemple.com ou https://exemple.com", "admin.service.corsEx": "http://exemple.com ou https://exemple.com",
"admin.service.corsTitle": "Autoriser les requêtes cross-origin depuis :", "admin.service.corsTitle": "Autoriser les requêtes cross-origin depuis :",
"admin.service.developerDesc": "Si activé, les erreurs Javascript sont affichées dans une barre rouge en haut de l'interface utilisateur. Ceci n'est pas recommandé sur un serveur de production. ", "admin.service.developerDesc": "Si activé, les erreurs Javascript sont affichées dans une barre violette en haut de l'interface utilisateur. Ceci n'est pas recommandé dans un environnement de production.",
"admin.service.developerTitle": "Activer le mode développeur : ", "admin.service.developerTitle": "Activer le mode développeur : ",
"admin.service.enforceMfaDesc": "Lorsqu'activé, l'<a href='https://docs.mattermost.com/deployment/auth.html' target='_blank'>authentification multi-facteurs (MFA)</a> est requise pour la connexion. Les nouveaux utilisateurs devront configurer MFA lors de leur inscription. Les utilisateurs connectés sans MFA configuré seront redirigés vers la page de configuration MFA jusqu'à ce que la configuration soit terminée.<br/><br/>Si votre système dispose d'utilisateurs se connectant autrement que par AD/LDAP ou une adresse e-mail, MFA devra être appliqué avec un fournisseur d'authentification extérieur à Mattermost.", "admin.service.enforceMfaDesc": "Lorsqu'activé, l'<a href='https://docs.mattermost.com/deployment/auth.html' target='_blank'>authentification multi-facteurs (MFA)</a> est requise pour la connexion. Les nouveaux utilisateurs devront configurer MFA lors de leur inscription. Les utilisateurs connectés sans MFA configuré seront redirigés vers la page de configuration MFA jusqu'à ce que la configuration soit terminée.<br/><br/>Si votre système dispose d'utilisateurs se connectant autrement que par AD/LDAP ou une adresse e-mail, MFA devra être appliqué avec un fournisseur d'authentification extérieur à Mattermost.",
"admin.service.enforceMfaTitle": "Imposer l'authentification multi-facteurs :", "admin.service.enforceMfaTitle": "Imposer l'authentification multi-facteurs :",
@@ -897,8 +899,8 @@
"admin.user_item.confirmDemotionCmd": "Rôle au sein de la plateforme system_admin {username}", "admin.user_item.confirmDemotionCmd": "Rôle au sein de la plateforme system_admin {username}",
"admin.user_item.emailTitle": "<strong>E-mail:</strong> {email}", "admin.user_item.emailTitle": "<strong>E-mail:</strong> {email}",
"admin.user_item.inactive": "Inactif", "admin.user_item.inactive": "Inactif",
"admin.user_item.makeActive": "Actif", "admin.user_item.makeActive": "Activer",
"admin.user_item.makeInactive": "Deactivate", "admin.user_item.makeInactive": "Désactiver",
"admin.user_item.makeMember": "Assigner le rôle Membre", "admin.user_item.makeMember": "Assigner le rôle Membre",
"admin.user_item.makeSysAdmin": "Assigner le rôle administrateur système", "admin.user_item.makeSysAdmin": "Assigner le rôle administrateur système",
"admin.user_item.makeTeamAdmin": "Assigner le rôle \"Administrateur d'équipe\"", "admin.user_item.makeTeamAdmin": "Assigner le rôle \"Administrateur d'équipe\"",
@@ -989,8 +991,8 @@
"app.channel.post_update_channel_purpose_message.removed": "{username} a supprimé la description du canal (précédemment: {old})", "app.channel.post_update_channel_purpose_message.removed": "{username} a supprimé la description du canal (précédemment: {old})",
"app.channel.post_update_channel_purpose_message.updated_from": "{username} a mis à jour la description du canal de: {old} en: {new}", "app.channel.post_update_channel_purpose_message.updated_from": "{username} a mis à jour la description du canal de: {old} en: {new}",
"app.channel.post_update_channel_purpose_message.updated_to": "{username} a mis à jour la description du canal en: {new}", "app.channel.post_update_channel_purpose_message.updated_to": "{username} a mis à jour la description du canal en: {new}",
"audit_table.accountActive": "Account activated", "audit_table.accountActive": "Compte activé",
"audit_table.accountInactive": "Account deactivated", "audit_table.accountInactive": "Compte désactivé",
"audit_table.action": "Action", "audit_table.action": "Action",
"audit_table.attemptedAllowOAuthAccess": "Tentative d'autoriser un nouvel accès à un service OAuth", "audit_table.attemptedAllowOAuthAccess": "Tentative d'autoriser un nouvel accès à un service OAuth",
"audit_table.attemptedLicenseAdd": "Tentative d'ajouter une licence", "audit_table.attemptedLicenseAdd": "Tentative d'ajouter une licence",
@@ -1064,7 +1066,7 @@
"change_url.longer": "L'URL doit comporter 2 caractères ou plus.", "change_url.longer": "L'URL doit comporter 2 caractères ou plus.",
"change_url.noUnderscore": "L'URL ne peut pas contenir deux tirets de suite.", "change_url.noUnderscore": "L'URL ne peut pas contenir deux tirets de suite.",
"change_url.startWithLetter": "L'URL doit commencer par une lettre ou un nombre.", "change_url.startWithLetter": "L'URL doit commencer par une lettre ou un nombre.",
"change_url.urlLabel": "URL du canal :", "change_url.urlLabel": "URL du canal",
"channelHeader.addToFavorites": "Ajouter aux favoris", "channelHeader.addToFavorites": "Ajouter aux favoris",
"channelHeader.removeFromFavorites": "Retirer des favoris", "channelHeader.removeFromFavorites": "Retirer des favoris",
"channel_flow.alreadyExist": "Il existe déjà un canal avec cette URL", "channel_flow.alreadyExist": "Il existe déjà un canal avec cette URL",
@@ -1232,9 +1234,9 @@
"custom_emoji.header": "Emoji personnalisés", "custom_emoji.header": "Emoji personnalisés",
"custom_emoji.search": "Rechercher les emoji personnalisés", "custom_emoji.search": "Rechercher les emoji personnalisés",
"deactivate_member_modal.cancel": "Annuler", "deactivate_member_modal.cancel": "Annuler",
"deactivate_member_modal.deactivate": "Deactivate", "deactivate_member_modal.deactivate": "Désactiver",
"deactivate_member_modal.desc": "This action deactivates {username}. They will be logged out and not have access to any teams or channels on this system. Are you sure you want to deactivate {username}?", "deactivate_member_modal.desc": "Cette action désactive {username}. Cet utilisateur sera déconnecté et n'aura plus accès aux équipes et canaux de ce système. Voulez-vous vraiment désactiver {username} ?",
"deactivate_member_modal.title": "Deactivate {username}", "deactivate_member_modal.title": "Désactiver {username}",
"default_channel.purpose": "Publiez ici les messages que vous souhaitez que tout le monde voie. Chaque utilisateur devient un membre permanent de ce canal lorsqu'il rejoint l'équipe.", "default_channel.purpose": "Publiez ici les messages que vous souhaitez que tout le monde voie. Chaque utilisateur devient un membre permanent de ce canal lorsqu'il rejoint l'équipe.",
"delete_channel.cancel": "Annuler", "delete_channel.cancel": "Annuler",
"delete_channel.confirm": "Confirmez la SUPPRESSION du canal", "delete_channel.confirm": "Confirmez la SUPPRESSION du canal",
@@ -1253,7 +1255,7 @@
"edit_channel_header_modal.save": "Enregistrer", "edit_channel_header_modal.save": "Enregistrer",
"edit_channel_header_modal.title": "Modifier l'entête de {channel}", "edit_channel_header_modal.title": "Modifier l'entête de {channel}",
"edit_channel_header_modal.title_dm": "Modifier l'entête", "edit_channel_header_modal.title_dm": "Modifier l'entête",
"edit_channel_private_purpose_modal.body": "This text appears in the \"View Info\" modal of the private channel.", "edit_channel_private_purpose_modal.body": "Ce texte apparaît dans la vue \"Informations\" des canaux privés.",
"edit_channel_purpose_modal.body": "Décrit de quelle manière ce canal devrait être utilisé. Ce texte apparaît dans la liste des canaux dans le menu \"Suite...\" et guide les personnes pour décider si elles doivent le rejoindre ou non.", "edit_channel_purpose_modal.body": "Décrit de quelle manière ce canal devrait être utilisé. Ce texte apparaît dans la liste des canaux dans le menu \"Suite...\" et guide les personnes pour décider si elles doivent le rejoindre ou non.",
"edit_channel_purpose_modal.cancel": "Annuler", "edit_channel_purpose_modal.cancel": "Annuler",
"edit_channel_purpose_modal.error": "La description de ce canal est trop longue, veuillez en indiquer une plus courte.", "edit_channel_purpose_modal.error": "La description de ce canal est trop longue, veuillez en indiquer une plus courte.",
@@ -1304,10 +1306,10 @@
"emoji_picker.search": "Rechercher", "emoji_picker.search": "Rechercher",
"emoji_picker.symbols": "Symboles", "emoji_picker.symbols": "Symboles",
"emoji_picker.travel": "Voyage", "emoji_picker.travel": "Voyage",
"error.local_storage.help1": "Enable cookies", "error.local_storage.help1": "Activer les cookies",
"error.local_storage.help2": "Turn off private browsing", "error.local_storage.help2": "Veuillez désactiver la navigation privée",
"error.local_storage.help3": "Use a supported browser (IE 11, Chrome 43+, Firefox 38+, Safari 9, Edge)", "error.local_storage.help3": "Veuillez utiliser un navigateur web supporté (IE11, Chrome 43+, Firefox 38+, Safari 9, Edge)",
"error.local_storage.message": "Mattermost was unable to load because a setting in your browser prevents the use of its local storage features. To allow Mattermost to load, try the following actions:", "error.local_storage.message": "Impossible de charger Mattermost à cause d'un paramètre de votre navigateur qui empêche l'utilisation du stockage local. Pour permettre à Mattermost de se charger, veuillez effectuer les actions suivantes :",
"error.not_found.link_message": "Retour à Mattermost", "error.not_found.link_message": "Retour à Mattermost",
"error.not_found.message": "La page que vous essayer d'atteindre n'existe pas", "error.not_found.message": "La page que vous essayer d'atteindre n'existe pas",
"error.not_found.title": "Page non trouvée", "error.not_found.title": "Page non trouvée",
@@ -1322,6 +1324,7 @@
"file_attachment.download": "Télécharger", "file_attachment.download": "Télécharger",
"file_info_preview.size": "Taille ", "file_info_preview.size": "Taille ",
"file_info_preview.type": "Type de fichier ", "file_info_preview.type": "Type de fichier ",
"file_upload.disabled": "Les fichiers de pièces jointes sont désactivés.",
"file_upload.fileAbove": "Le fichier plus grand que {max}Mo ne peut pas être téléchargé : {filename}", "file_upload.fileAbove": "Le fichier plus grand que {max}Mo ne peut pas être téléchargé : {filename}",
"file_upload.filesAbove": "Les fichiers plus grands que {max}Mo ne peuvent pas être téléchargés : {filenames}", "file_upload.filesAbove": "Les fichiers plus grands que {max}Mo ne peuvent pas être téléchargés : {filenames}",
"file_upload.limited": "Les téléchargements sont limités à {count} fichiers par message. Envoyez d'autres messages pour ajouter d'autres fichiers.", "file_upload.limited": "Les téléchargements sont limités à {count} fichiers par message. Envoyez d'autres messages pour ajouter d'autres fichiers.",
@@ -1549,14 +1552,14 @@
"integrations.outgoingWebhook.title": "Webhooks sortants", "integrations.outgoingWebhook.title": "Webhooks sortants",
"integrations.successful": "Installation réussie", "integrations.successful": "Installation réussie",
"intro_messages.DM": "Vous êtes au début de votre historique de messages avec {teammate}.<br />Les messages privés et les fichiers partagés ici ne sont pas visibles par les autres utilisateurs.", "intro_messages.DM": "Vous êtes au début de votre historique de messages avec {teammate}.<br />Les messages privés et les fichiers partagés ici ne sont pas visibles par les autres utilisateurs.",
"intro_messages.GM": "Vous êtes au début de votre historique de messages avec {teammate}.<br />Les messages privés et les fichiers partagés ici ne sont pas visibles par les autres utilisateurs.", "intro_messages.GM": "Vous êtes au début de votre historique de messages avec {names}.<br />Les messages privés et les fichiers partagés ici ne sont pas visibles par les autres utilisateurs.",
"intro_messages.anyMember": " Tout membre peut rejoindre et lire ce canal.", "intro_messages.anyMember": " Tout membre peut rejoindre et lire ce canal.",
"intro_messages.beginning": "Début de {name}", "intro_messages.beginning": "Début de {name}",
"intro_messages.channel": "canal", "intro_messages.channel": "canal",
"intro_messages.creator": "Ceci est le début de {type} {name}, créé par {creator} le {date}.", "intro_messages.creator": "Ceci est le début de {type} {name}, créé par {creator} le {date}.",
"intro_messages.default": "<h4 class='channel-intro__title'>Début de {display_name}</h4><p class='channel-intro__content'><strong>Bienvenue sur {display_name}!</strong><br/><br/>Publiez ici les messages que vous souhaitez que tout le monde voie. Chaque utilisateur devient un membre permanent de ce canal lorsqu'il rejoint l'équipe.</p>", "intro_messages.default": "<h4 class='channel-intro__title'>Début de {display_name}</h4><p class='channel-intro__content'><strong>Bienvenue sur {display_name}!</strong><br/><br/>Publiez ici les messages que vous souhaitez que tout le monde voie. Chaque utilisateur devient un membre permanent de ce canal lorsqu'il rejoint l'équipe.</p>",
"intro_messages.group": "canal privé", "intro_messages.group": "canal privé",
"intro_messages.group_message": "Vous êtes au début de votre historique de messages avec cet utilisateur. Les messages privés et les fichiers partagés ici ne sont pas visibles par les autres utilisateurs.", "intro_messages.group_message": "Vous êtes au début de votre historique de messages de groupe avec ces utilisateurs. Les messages privés et les fichiers partagés ici ne sont pas visibles par les autres utilisateurs.",
"intro_messages.invite": "Inviter d'autres membres sur ce {type}", "intro_messages.invite": "Inviter d'autres membres sur ce {type}",
"intro_messages.inviteOthers": "Inviter d'autres membres dans cette équipe", "intro_messages.inviteOthers": "Inviter d'autres membres dans cette équipe",
"intro_messages.noCreator": "Ceci est le début de {name} {type}, créé le {date}.", "intro_messages.noCreator": "Ceci est le début de {name} {type}, créé le {date}.",
@@ -1587,9 +1590,9 @@
"ldap_signup.length_error": "Le nom doit contenir de 3 à 15 caractères", "ldap_signup.length_error": "Le nom doit contenir de 3 à 15 caractères",
"ldap_signup.teamName": "Entrez le nom de votre nouvelle équipe", "ldap_signup.teamName": "Entrez le nom de votre nouvelle équipe",
"ldap_signup.team_error": "Veuillez saisir le nom de votre équipe", "ldap_signup.team_error": "Veuillez saisir le nom de votre équipe",
"leave_private_channel_modal.leave": "Yes, leave channel", "leave_private_channel_modal.leave": "Oui, quitter le canal",
"leave_private_channel_modal.message": "Are you sure you wish to leave the private channel {channel}? You must be re-invited in order to re-join this channel in the future.", "leave_private_channel_modal.message": "Voulez-vous vraiment quitter le canal privé {channel} ? Vous devrez être réinvité pour pouvoir le rejoindre à nouveau dans le futur.",
"leave_private_channel_modal.title": "Leave Private Channel {channel}", "leave_private_channel_modal.title": "Quitter le canal privé {channel}",
"leave_team_modal.desc": "Vous allez être retiré de tous les canaux publics et privés. Si l'équipe est privée, vous ne serez pas en mesure de rejoindre l'équipe. Voulez-vous continuer ?", "leave_team_modal.desc": "Vous allez être retiré de tous les canaux publics et privés. Si l'équipe est privée, vous ne serez pas en mesure de rejoindre l'équipe. Voulez-vous continuer ?",
"leave_team_modal.no": "Non", "leave_team_modal.no": "Non",
"leave_team_modal.title": "Quitter l'équipe ?", "leave_team_modal.title": "Quitter l'équipe ?",
@@ -1666,7 +1669,7 @@
"mobile.account_notifications.threads_mentions": "Mentions dans les fils de discussion", "mobile.account_notifications.threads_mentions": "Mentions dans les fils de discussion",
"mobile.account_notifications.threads_start": "Fils de discussion que je démarre", "mobile.account_notifications.threads_start": "Fils de discussion que je démarre",
"mobile.account_notifications.threads_start_participate": "Fils de discussion que je démarre ou auxquels je participe", "mobile.account_notifications.threads_start_participate": "Fils de discussion que je démarre ou auxquels je participe",
"mobile.channel_info.alertMessageDeleteChannel": "Voulez-vous vraiment quitter le {term} {name} ?", "mobile.channel_info.alertMessageDeleteChannel": "Voulez-vous vraiment supprimer le {term} {name} ?",
"mobile.channel_info.alertMessageLeaveChannel": "Voulez-vous vraiment quitter le {term} {name} ?", "mobile.channel_info.alertMessageLeaveChannel": "Voulez-vous vraiment quitter le {term} {name} ?",
"mobile.channel_info.alertNo": "Non", "mobile.channel_info.alertNo": "Non",
"mobile.channel_info.alertTitleDeleteChannel": "Supprimer {term}", "mobile.channel_info.alertTitleDeleteChannel": "Supprimer {term}",
@@ -1701,23 +1704,23 @@
"mobile.file_upload.camera": "Prendre une photo ou une vidéo", "mobile.file_upload.camera": "Prendre une photo ou une vidéo",
"mobile.file_upload.library": "Bibliothèque de photos", "mobile.file_upload.library": "Bibliothèque de photos",
"mobile.file_upload.more": "Plus…", "mobile.file_upload.more": "Plus…",
"mobile.intro_messages.DM": "Vous êtes au début de votre historique de messages avec {teammate}.<br />Les messages privés et les fichiers partagés ici ne sont pas visibles par les autres utilisateurs.", "mobile.intro_messages.DM": "Vous êtes au début de votre historique de messages avec {teammate}. Les messages privés et les fichiers partagés ici ne sont pas visibles par les autres utilisateurs.",
"mobile.intro_messages.default_message": "This is the first channel teammates see when they sign up - use it for posting updates everyone needs to know.", "mobile.intro_messages.default_message": "Il s'agit du premier canal que les utilisateurs voient lorsqu'ils s'inscrivent. Utilisez-le pour poster des informations que tout le monde devrait connaître.",
"mobile.intro_messages.default_welcome": "Welcome to {name}!", "mobile.intro_messages.default_welcome": "Bienvenue {name} !",
"mobile.loading_channels": "Chargement des canaux...", "mobile.loading_channels": "Chargement des canaux...",
"mobile.loading_members": "Chargement des membres...", "mobile.loading_members": "Chargement des membres...",
"mobile.loading_posts": "Chargement des messages...", "mobile.loading_posts": "Chargement des messages...",
"mobile.login_options.choose_title": "Choisissez votre méthode de connexion", "mobile.login_options.choose_title": "Choisissez votre méthode de connexion",
"mobile.offlineIndicator.connected": "Connected", "mobile.offlineIndicator.connected": "Connecté",
"mobile.offlineIndicator.connecting": "Connexion en cours", "mobile.offlineIndicator.connecting": "Connexion en cours...",
"mobile.offlineIndicator.offline": "No internet connection", "mobile.offlineIndicator.offline": "Aucune connexion internet",
"mobile.post.cancel": "Annuler", "mobile.post.cancel": "Annuler",
"mobile.post.delete_question": "Voulez-vous vraiment supprimer ce message ?", "mobile.post.delete_question": "Voulez-vous vraiment supprimer ce message ?",
"mobile.post.delete_title": "Supprimer le message", "mobile.post.delete_title": "Supprimer le message",
"mobile.post.failed_delete": "Delete Message", "mobile.post.failed_delete": "Supprimer le message",
"mobile.post.failed_retry": "Try Again", "mobile.post.failed_retry": "Essayez à nouveau",
"mobile.post.failed_title": "Unable to send your message", "mobile.post.failed_title": "Impossible d'envoyer votre message",
"mobile.post.retry": "Refresh", "mobile.post.retry": "Rafraîchir",
"mobile.request.invalid_response": "Réponse invalide reçue du serveur.", "mobile.request.invalid_response": "Réponse invalide reçue du serveur.",
"mobile.routes.channelInfo": "Information", "mobile.routes.channelInfo": "Information",
"mobile.routes.channelInfo.createdBy": "Créé par {creator} le ", "mobile.routes.channelInfo.createdBy": "Créé par {creator} le ",
@@ -1788,6 +1791,7 @@
"navbar_dropdown.integrations": "Intégrations", "navbar_dropdown.integrations": "Intégrations",
"navbar_dropdown.inviteMember": "Envoyer un e-mail d'invitation", "navbar_dropdown.inviteMember": "Envoyer un e-mail d'invitation",
"navbar_dropdown.join": "Rejoindre une autre équipe", "navbar_dropdown.join": "Rejoindre une autre équipe",
"navbar_dropdown.keyboardShortcuts": "Raccourcis clavier",
"navbar_dropdown.leave": "Quitter l'équipe", "navbar_dropdown.leave": "Quitter l'équipe",
"navbar_dropdown.logout": "Se déconnecter", "navbar_dropdown.logout": "Se déconnecter",
"navbar_dropdown.manageMembers": "Gérer les membres", "navbar_dropdown.manageMembers": "Gérer les membres",
@@ -1878,6 +1882,7 @@
"rhs_comment.permalink": "Lien permanent", "rhs_comment.permalink": "Lien permanent",
"rhs_header.backToCallTooltip": "Retour à l'appel", "rhs_header.backToCallTooltip": "Retour à l'appel",
"rhs_header.backToFlaggedTooltip": "Retourner aux messages marqués d'un indicateur", "rhs_header.backToFlaggedTooltip": "Retourner aux messages marqués d'un indicateur",
"rhs_header.backToPinnedTooltip": "Retourner aux messages épinglés",
"rhs_header.backToResultsTooltip": "Retour aux résultats", "rhs_header.backToResultsTooltip": "Retour aux résultats",
"rhs_header.closeSidebarTooltip": "Fermer la barre latérale", "rhs_header.closeSidebarTooltip": "Fermer la barre latérale",
"rhs_header.closeTooltip": "Fermer la barre latérale", "rhs_header.closeTooltip": "Fermer la barre latérale",
@@ -1916,7 +1921,7 @@
"setting_item_max.save": "Enregistrer", "setting_item_max.save": "Enregistrer",
"setting_item_min.edit": "Modifier", "setting_item_min.edit": "Modifier",
"setting_picture.cancel": "Annuler", "setting_picture.cancel": "Annuler",
"setting_picture.help": "Télécharger une photo de profil au format JPG ou PNG, d'au moins {width} pixels de large et {height} pixels de haut.", "setting_picture.help": "Envoyez une photo de profil au format BMP, JPG, JPEG ou PNG, d'au moins {width} pixels de large et {height} pixels de haut.",
"setting_picture.save": "Enregistrer", "setting_picture.save": "Enregistrer",
"setting_picture.select": "Sélectionner", "setting_picture.select": "Sélectionner",
"setting_upload.import": "Importer", "setting_upload.import": "Importer",
@@ -1987,7 +1992,7 @@
"signup_user_completed.office365": "avec Office 365", "signup_user_completed.office365": "avec Office 365",
"signup_user_completed.onSite": "activé {siteName}", "signup_user_completed.onSite": "activé {siteName}",
"signup_user_completed.or": "ou", "signup_user_completed.or": "ou",
"signup_user_completed.passwordLength": "Please enter between {min} and {max} characters", "signup_user_completed.passwordLength": "Veuillez spécifier entre {min} et {max} caractères",
"signup_user_completed.required": "Champ obligatoire", "signup_user_completed.required": "Champ obligatoire",
"signup_user_completed.reserved": "Ce nom d'utilisateur est réservé, veuillez en choisir un autre.", "signup_user_completed.reserved": "Ce nom d'utilisateur est réservé, veuillez en choisir un autre.",
"signup_user_completed.signIn": "Veuillez cliquer ici pour vous connecter.", "signup_user_completed.signIn": "Veuillez cliquer ici pour vous connecter.",
@@ -2003,7 +2008,7 @@
"sso_signup.length_error": "Le nom doit contenir de 3 à 15 caractères", "sso_signup.length_error": "Le nom doit contenir de 3 à 15 caractères",
"sso_signup.teamName": "Entrez le nom de votre nouvelle équipe", "sso_signup.teamName": "Entrez le nom de votre nouvelle équipe",
"sso_signup.team_error": "Veuillez spécifier le nom de votre équipe", "sso_signup.team_error": "Veuillez spécifier le nom de votre équipe",
"suggestion.mention.all": "CAUTION: This mentions everyone in channel", "suggestion.mention.all": "ATTENTION: Ceci mentionne tout le monde dans le canal",
"suggestion.mention.channel": "Notifier tout le monde dans le canal", "suggestion.mention.channel": "Notifier tout le monde dans le canal",
"suggestion.mention.channels": "Mes canaux", "suggestion.mention.channels": "Mes canaux",
"suggestion.mention.here": "Notifier toutes les personnes connectées dans ce canal", "suggestion.mention.here": "Notifier toutes les personnes connectées dans ce canal",
@@ -2042,9 +2047,9 @@
"team_members_dropdown.confirmDemotionCmd": "plate-forme de rôles system_admin {username}", "team_members_dropdown.confirmDemotionCmd": "plate-forme de rôles system_admin {username}",
"team_members_dropdown.inactive": "Inactif", "team_members_dropdown.inactive": "Inactif",
"team_members_dropdown.leave_team": "Exclure de l'équipe", "team_members_dropdown.leave_team": "Exclure de l'équipe",
"team_members_dropdown.makeActive": "Actif", "team_members_dropdown.makeActive": "Activer",
"team_members_dropdown.makeAdmin": "Rendre administrateur de l'équipe", "team_members_dropdown.makeAdmin": "Rendre administrateur de l'équipe",
"team_members_dropdown.makeInactive": "Deactivate", "team_members_dropdown.makeInactive": "Désactiver",
"team_members_dropdown.makeMember": "Assigner le rôle Membre", "team_members_dropdown.makeMember": "Assigner le rôle Membre",
"team_members_dropdown.member": "Membre", "team_members_dropdown.member": "Membre",
"team_members_dropdown.systemAdmin": "Administrateur système", "team_members_dropdown.systemAdmin": "Administrateur système",
@@ -2169,7 +2174,7 @@
"user.settings.general.checkEmailNoAddress": "Vérifiez votre boîte de réception pour valider votre nouvelle adresse e-mail.", "user.settings.general.checkEmailNoAddress": "Vérifiez votre boîte de réception pour valider votre nouvelle adresse e-mail.",
"user.settings.general.close": "Quitter", "user.settings.general.close": "Quitter",
"user.settings.general.confirmEmail": "E-mail de confirmation", "user.settings.general.confirmEmail": "E-mail de confirmation",
"user.settings.general.currentEmail": "Current Email", "user.settings.general.currentEmail": "Adresse e-mail actuelle",
"user.settings.general.email": "Adresse e-mail", "user.settings.general.email": "Adresse e-mail",
"user.settings.general.emailGitlabCantUpdate": "La connexion se produit par Gitlab. L'addresse Electronique ne peut pas être mis à jour . Adresse e-mail utilisée pour les notifications est {email} .", "user.settings.general.emailGitlabCantUpdate": "La connexion se produit par Gitlab. L'addresse Electronique ne peut pas être mis à jour . Adresse e-mail utilisée pour les notifications est {email} .",
"user.settings.general.emailGoogleCantUpdate": "La connexion s'effectue par Gitlab. L'adresse e-mail ne peut pas être mise à jour. L'adresse e-mail utilisée pour les notifications est {email} .", "user.settings.general.emailGoogleCantUpdate": "La connexion s'effectue par Gitlab. L'adresse e-mail ne peut pas être mise à jour. L'adresse e-mail utilisée pour les notifications est {email} .",
@@ -2197,7 +2202,7 @@
"user.settings.general.loginOffice365": "Dernière connexion avec Office 365 ({email})", "user.settings.general.loginOffice365": "Dernière connexion avec Office 365 ({email})",
"user.settings.general.loginSaml": "Connexion avec SAML ({email})", "user.settings.general.loginSaml": "Connexion avec SAML ({email})",
"user.settings.general.newAddress": "Nouvelle adresse : {email}<br />Vérifiez vos e-mails pour valider votre adresse e-mail.", "user.settings.general.newAddress": "Nouvelle adresse : {email}<br />Vérifiez vos e-mails pour valider votre adresse e-mail.",
"user.settings.general.newEmail": "New Email", "user.settings.general.newEmail": "Nouvelle adresse e-mail",
"user.settings.general.nickname": "Pseudo", "user.settings.general.nickname": "Pseudo",
"user.settings.general.nicknameExtra": "Vous pouvez utiliser un pseudo à la place de vos prénom, nom et nom d'utilisateur. Ceci est pratique lorsque deux personnes de votre équipe ont des noms similaires phonétiquement.", "user.settings.general.nicknameExtra": "Vous pouvez utiliser un pseudo à la place de vos prénom, nom et nom d'utilisateur. Ceci est pratique lorsque deux personnes de votre équipe ont des noms similaires phonétiquement.",
"user.settings.general.notificationsExtra": "Par défaut, vous recevez une notification lorsqu'un utilisateur cite votre prénom. Rendez vous dans les paramètres de {notify} pour modifier ce paramètre.", "user.settings.general.notificationsExtra": "Par défaut, vous recevez une notification lorsqu'un utilisateur cite votre prénom. Rendez vous dans les paramètres de {notify} pour modifier ce paramètre.",
@@ -2340,22 +2345,22 @@
"user.settings.security.office365": "Office 365", "user.settings.security.office365": "Office 365",
"user.settings.security.oneSignin": "Vous ne pouvez avoir qu'une seule méthode de connexion à la fois. Changer de méthode de connexion provoquera l'envoi d'un e-mail vous notifiant que le changement a réussi.", "user.settings.security.oneSignin": "Vous ne pouvez avoir qu'une seule méthode de connexion à la fois. Changer de méthode de connexion provoquera l'envoi d'un e-mail vous notifiant que le changement a réussi.",
"user.settings.security.password": "Mot de passe", "user.settings.security.password": "Mot de passe",
"user.settings.security.passwordError": "Un mot-clé déclencheur doit contenir de {min} à {max} caractères", "user.settings.security.passwordError": "Votre mot de passe doit contenir entre {min} et {max} caractères.",
"user.settings.security.passwordErrorLowercase": "Votre mot de passe doit contenir au moins {min} caractères et au moins une lettre minuscule.", "user.settings.security.passwordErrorLowercase": "Votre mot de passe doit contenir entre {min} et {max} caractères et être composé d'au moins une lettre minuscule.",
"user.settings.security.passwordErrorLowercaseNumber": "Votre mot de passe doit contenir au moins {min} caractères et au moins une lettre minuscule et un chiffre.", "user.settings.security.passwordErrorLowercaseNumber": "Votre mot de passe doit contenir entre {min} et {max} caractères composé d'au moins une lettre minuscule et un chiffre.",
"user.settings.security.passwordErrorLowercaseNumberSymbol": "Votre mot de passe doit contenir au moins {min} caractères et au moins une lettre minuscule, un chiffre et au moins un symbole (parmi \"~!@#$%^&*()\").", "user.settings.security.passwordErrorLowercaseNumberSymbol": "Votre mot de passe doit contenir entre {min} et {max} caractères et au moins une lettre minuscule, un chiffre et au moins un symbole (parmi \"~!@#$%^&*()\").",
"user.settings.security.passwordErrorLowercaseSymbol": "Votre mot de passe doit contenir au moins {min} caractères et au moins une lettre minuscule et au moins un symbole (parmi \"~!@#$%^&*()\").", "user.settings.security.passwordErrorLowercaseSymbol": "Votre mot de passe doit contenir entre {min} et {max} caractères et au moins une lettre minuscule et au moins un symbole (parmi \"~!@#$%^&*()\").",
"user.settings.security.passwordErrorLowercaseUppercase": "Votre mot de passe doit contenir au moins {min} caractères et au moins une lettre minuscule et une lettre majuscule.", "user.settings.security.passwordErrorLowercaseUppercase": "Votre mot de passe doit contenir entre {min} et {max} caractères et au moins une lettre minuscule et une lettre majuscule.",
"user.settings.security.passwordErrorLowercaseUppercaseNumber": "Votre mot de passe doit contenir au moins {min} caractères et au moins une lettre minuscule, une lettre majuscule et un chiffre.", "user.settings.security.passwordErrorLowercaseUppercaseNumber": "Votre mot de passe doit contenir entre {min} et {max} caractères composé d'au moins d'une lettre minuscule, d'une lettre majuscule et d'un chiffre.",
"user.settings.security.passwordErrorLowercaseUppercaseNumberSymbol": "Votre mot de passe doit contenir au moins {min} caractères et au moins une lettre minuscule, une majuscule, un chiffre et au moins un symbole (parmi \"~!@#$%^&*()\").", "user.settings.security.passwordErrorLowercaseUppercaseNumberSymbol": "Votre mot de passe doit contenir entre {min} et {max} caractères et au moins une lettre minuscule, une majuscule, un chiffre et au moins un symbole (parmi \"~!@#$%^&*()\").",
"user.settings.security.passwordErrorLowercaseUppercaseSymbol": "Votre mot de passe doit contenir au moins {min} caractères et au moins une lettre minuscule , une lettre majuscule et au moins un symbole (parmi \"~!@#$%^&*()\").", "user.settings.security.passwordErrorLowercaseUppercaseSymbol": "Votre mot de passe doit contenir entre {min} et {max} caractères et au moins une lettre minuscule , une lettre majuscule et au moins un symbole (parmi \"~!@#$%^&*()\").",
"user.settings.security.passwordErrorNumber": "Votre mot de passe doit contenir au moins {min} caractères et au moins un chiffre.", "user.settings.security.passwordErrorNumber": "Votre mot de passe doit contenir entre {min} et {max} caractères et au moins un chiffre.",
"user.settings.security.passwordErrorNumberSymbol": "Votre mot de passe doit contenir au moins {min} caractères et au moins un chiffre et un symbole (parmi \"~!@#$%^&*()\").", "user.settings.security.passwordErrorNumberSymbol": "Votre mot de passe doit contenir entre {min} et {max} caractères et au moins un chiffre et un symbole (parmi \"~!@#$%^&*()\").",
"user.settings.security.passwordErrorSymbol": "Votre mot de passe doit contenir au moins {min} caractères et au moins un symbole (parmi \"~!@#$%^&*()\").", "user.settings.security.passwordErrorSymbol": "Votre mot de passe doit contenir entre {min} et {max} caractères et au moins un symbole (parmi \"~!@#$%^&*()\").",
"user.settings.security.passwordErrorUppercase": "Votre mot de passe doit contenir au moins {min} caractères et au moins une lettre majuscule.", "user.settings.security.passwordErrorUppercase": "Votre mot de passe doit contenir entre {min} et {max} caractères et au moins une lettre majuscule.",
"user.settings.security.passwordErrorUppercaseNumber": "Votre mot de passe doit contenir au moins {min} caractères et au moins une lettre majuscule et un chiffre.", "user.settings.security.passwordErrorUppercaseNumber": "Votre mot de passe doit contenir entre {min} et {max} caractères et au moins une lettre majuscule et un chiffre.",
"user.settings.security.passwordErrorUppercaseNumberSymbol": "Votre mot de passe doit contenir au moins {min} caractères et au moins une lettre majuscule, un chiffre et un symbole (parmi \"~!@#$%^&*()\").", "user.settings.security.passwordErrorUppercaseNumberSymbol": "Votre mot de passe doit contenir entre {min} et {max} caractères et au moins une lettre majuscule, un chiffre et un symbole (parmi \"~!@#$%^&*()\").",
"user.settings.security.passwordErrorUppercaseSymbol": "Votre mot de passe doit contenir au moins {min} caractères et au moins une lettre majuscule et un symbole (parmi \"~!@#$%^&*()\").", "user.settings.security.passwordErrorUppercaseSymbol": "Votre mot de passe doit contenir entre {min} et {max} caractères et au moins une lettre majuscule et un symbole (parmi \"~!@#$%^&*()\").",
"user.settings.security.passwordGitlabCantUpdate": "La connexion se produit à travers GitLab. Le mot de passe ne peut pas être mis à jour.", "user.settings.security.passwordGitlabCantUpdate": "La connexion se produit à travers GitLab. Le mot de passe ne peut pas être mis à jour.",
"user.settings.security.passwordGoogleCantUpdate": "La connexion s'effectue par Google Apps. Le mot de passe ne peut pas être mis à jour.", "user.settings.security.passwordGoogleCantUpdate": "La connexion s'effectue par Google Apps. Le mot de passe ne peut pas être mis à jour.",
"user.settings.security.passwordLdapCantUpdate": "La connexion se produit via LDAP . Le mot de passe ne peut pas être mis à jour.", "user.settings.security.passwordLdapCantUpdate": "La connexion se produit via LDAP . Le mot de passe ne peut pas être mis à jour.",

Просмотреть файл

@@ -133,14 +133,11 @@ export function getLanguages() {
} }
export function getLanguageInfo(locale) { export function getLanguageInfo(locale) {
if (!availableLanguages) { return getAllLanguages()[locale];
setAvailableLanguages();
}
return availableLanguages[locale];
} }
export function isLanguageAvailable(locale) { export function isLanguageAvailable(locale) {
return Boolean(availableLanguages[locale]); return Boolean(getLanguages()[locale]);
} }
export function safariFix(callback) { export function safariFix(callback) {

Просмотреть файл

@@ -300,6 +300,8 @@
"admin.email.smtpUsernameTitle": "SMTPサーバーのユーザー名:", "admin.email.smtpUsernameTitle": "SMTPサーバーのユーザー名:",
"admin.email.testing": "テストしています…", "admin.email.testing": "テストしています…",
"admin.false": "無効", "admin.false": "無効",
"admin.file.enableFileAttachments": "ファイル添付を有効にする:",
"admin.file.enableFileAttachmentsDesc": "無効な場合、投稿へのファイルや画像のアップロードが無効になります。",
"admin.file_upload.chooseFile": "ファイルを選択する", "admin.file_upload.chooseFile": "ファイルを選択する",
"admin.file_upload.noFile": "ファイルがアップロードされていません", "admin.file_upload.noFile": "ファイルがアップロードされていません",
"admin.file_upload.uploadFile": "アップロード", "admin.file_upload.uploadFile": "アップロード",
@@ -628,7 +630,7 @@
"admin.saml.emailAttrTitle": "電子メール属性値:", "admin.saml.emailAttrTitle": "電子メール属性値:",
"admin.saml.enableDescription": "有効にした場合、MattermostへSAMLを使ったログインが可能になります。詳しくは、<a href='http://docs.mattermost.com/deployment/sso-saml.html' target='_blank'>説明文書</a>を参照してください。", "admin.saml.enableDescription": "有効にした場合、MattermostへSAMLを使ったログインが可能になります。詳しくは、<a href='http://docs.mattermost.com/deployment/sso-saml.html' target='_blank'>説明文書</a>を参照してください。",
"admin.saml.enableTitle": "SAMLでのログインを有効にする:", "admin.saml.enableTitle": "SAMLでのログインを有効にする:",
"admin.saml.encryptDescription": "有効にした場合、Mattermostは、あなたのサービスプロバイダー公開証明書で暗号化されたSAMLアサーションを復号します。", "admin.saml.encryptDescription": "無効な場合、Mattermostはサービスプロバイダー公開証明書で暗号化されたSAML Assertionを複合しなくなります。",
"admin.saml.encryptTitle": "暗号化を有効にする:", "admin.saml.encryptTitle": "暗号化を有効にする:",
"admin.saml.firstnameAttrDesc": "(オプション) Mattermostのユーザーの名前(ファーストネーム)を設定するために使用されるSAMLアサーションの属性値です。", "admin.saml.firstnameAttrDesc": "(オプション) Mattermostのユーザーの名前(ファーストネーム)を設定するために使用されるSAMLアサーションの属性値です。",
"admin.saml.firstnameAttrEx": "例: \"FirstName\"", "admin.saml.firstnameAttrEx": "例: \"FirstName\"",
@@ -673,7 +675,7 @@
"admin.saml.usernameAttrDesc": "Mattermostのユーザー名を設定するために使用されるSAMLアサーションの属性値です。", "admin.saml.usernameAttrDesc": "Mattermostのユーザー名を設定するために使用されるSAMLアサーションの属性値です。",
"admin.saml.usernameAttrEx": "例: \"Username\"", "admin.saml.usernameAttrEx": "例: \"Username\"",
"admin.saml.usernameAttrTitle": "ユーザー名の属性値:", "admin.saml.usernameAttrTitle": "ユーザー名の属性値:",
"admin.saml.verifyDescription": "有効にした場合、MattermostはSAMLレスポンス署名サービスプロバイダーログインURLと合致しているかを照合します。", "admin.saml.verifyDescription": "無効な場合、MattermostはSAMLレスポンスから送信された署名サービスプロバイダーログインURLが一致するかどうかを検証しなくなります。本番環境ではお勧めできません。テスト用の機能です。",
"admin.saml.verifyTitle": "署名を照合する:", "admin.saml.verifyTitle": "署名を照合する:",
"admin.save": "保存する", "admin.save": "保存する",
"admin.saving": "設定を保存しています…", "admin.saving": "設定を保存しています…",
@@ -897,8 +899,8 @@
"admin.user_item.confirmDemotionCmd": "プラットフォームのシステム管理者の役割 {username}", "admin.user_item.confirmDemotionCmd": "プラットフォームのシステム管理者の役割 {username}",
"admin.user_item.emailTitle": "<strong>Email:</strong> {email}", "admin.user_item.emailTitle": "<strong>Email:</strong> {email}",
"admin.user_item.inactive": "無効", "admin.user_item.inactive": "無効",
"admin.user_item.makeActive": "有効", "admin.user_item.makeActive": "有効にする",
"admin.user_item.makeInactive": "無効", "admin.user_item.makeInactive": "無効にする",
"admin.user_item.makeMember": "メンバーにする", "admin.user_item.makeMember": "メンバーにする",
"admin.user_item.makeSysAdmin": "システム管理者にする", "admin.user_item.makeSysAdmin": "システム管理者にする",
"admin.user_item.makeTeamAdmin": "チーム管理者にする", "admin.user_item.makeTeamAdmin": "チーム管理者にする",
@@ -989,8 +991,8 @@
"app.channel.post_update_channel_purpose_message.removed": "{username} がチャンネルの目的({old})を削除しました", "app.channel.post_update_channel_purpose_message.removed": "{username} がチャンネルの目的({old})を削除しました",
"app.channel.post_update_channel_purpose_message.updated_from": "{username} がチャンネルの目的を {old} から {new} へ更新しました", "app.channel.post_update_channel_purpose_message.updated_from": "{username} がチャンネルの目的を {old} から {new} へ更新しました",
"app.channel.post_update_channel_purpose_message.updated_to": "{username} がチャンネルの目的を {new} へ更新しました", "app.channel.post_update_channel_purpose_message.updated_to": "{username} がチャンネルの目的を {new} へ更新しました",
"audit_table.accountActive": "アカウント有効化しました", "audit_table.accountActive": "アカウント有効になりました",
"audit_table.accountInactive": "アカウント無効化しました", "audit_table.accountInactive": "アカウント無効になりました",
"audit_table.action": "アクション", "audit_table.action": "アクション",
"audit_table.attemptedAllowOAuthAccess": "新しいOAuthサービスアクセスを許可しました", "audit_table.attemptedAllowOAuthAccess": "新しいOAuthサービスアクセスを許可しました",
"audit_table.attemptedLicenseAdd": "新しいライセンスを追加しました", "audit_table.attemptedLicenseAdd": "新しいライセンスを追加しました",
@@ -1232,9 +1234,9 @@
"custom_emoji.header": "カスタム絵文字", "custom_emoji.header": "カスタム絵文字",
"custom_emoji.search": "カスタム絵文字を検索", "custom_emoji.search": "カスタム絵文字を検索",
"deactivate_member_modal.cancel": "キャンセル", "deactivate_member_modal.cancel": "キャンセル",
"deactivate_member_modal.deactivate": "無効", "deactivate_member_modal.deactivate": "無効にする",
"deactivate_member_modal.desc": "この操作により {username} は無効化されます。無効化されたユーザーはログアウトされ、このシステムのどのチームやチャンネルにもアクセスできなくなります。本当に {username} を無効しますか?", "deactivate_member_modal.desc": "この操作により {username} は無効になります。無効化されたユーザーはログアウトされ、このシステムのどのチームやチャンネルにもアクセスできなくなります。本当に {username} を無効しますか?",
"deactivate_member_modal.title": "{username} を無効", "deactivate_member_modal.title": "{username} を無効にする",
"default_channel.purpose": "全員に見てほしいメッセージをここに投稿して下さい。チームに参加すると、全員が自動的にこのチャンネルのメンバーになります。", "default_channel.purpose": "全員に見てほしいメッセージをここに投稿して下さい。チームに参加すると、全員が自動的にこのチャンネルのメンバーになります。",
"delete_channel.cancel": "キャンセル", "delete_channel.cancel": "キャンセル",
"delete_channel.confirm": "チャンネルの削除を確認する", "delete_channel.confirm": "チャンネルの削除を確認する",
@@ -1275,7 +1277,7 @@
"email_verify.resend": "電子メールを再送信する", "email_verify.resend": "電子メールを再送信する",
"email_verify.sent": " 確認電子メールを送信しました。", "email_verify.sent": " 確認電子メールを送信しました。",
"email_verify.verified": "{siteName}電子メールが確認されました", "email_verify.verified": "{siteName}電子メールが確認されました",
"email_verify.verifiedBody": "<p>あなたの電子メールアドレスは確認されました! <a href={url}>here</a>をクックしてログインしてください。</p>", "email_verify.verifiedBody": "<p>あなたの電子メールアドレスは確認されました! <a href={url}>here</a>をクックしてログインしてください。</p>",
"email_verify.verifyFailed": "電子メールアドレスが確認できませんでした。", "email_verify.verifyFailed": "電子メールアドレスが確認できませんでした。",
"emoji_list.actions": "アクション", "emoji_list.actions": "アクション",
"emoji_list.add": "カスタム絵文字を追加", "emoji_list.add": "カスタム絵文字を追加",
@@ -1322,6 +1324,7 @@
"file_attachment.download": "ダウンロードする", "file_attachment.download": "ダウンロードする",
"file_info_preview.size": "サイズ ", "file_info_preview.size": "サイズ ",
"file_info_preview.type": "ファイル形式 ", "file_info_preview.type": "ファイル形式 ",
"file_upload.disabled": "ファイル添付が無効です。",
"file_upload.fileAbove": "{max}MBを越えるファイルはアップロードできません: {filename}", "file_upload.fileAbove": "{max}MBを越えるファイルはアップロードできません: {filename}",
"file_upload.filesAbove": "{max}MBを越えるファイルはアップロードできません: {filenames}", "file_upload.filesAbove": "{max}MBを越えるファイルはアップロードできません: {filenames}",
"file_upload.limited": "同時にアップロードできるのは{count}ファイルまでです。これ以上アップロードするには新しい投稿をしてください。", "file_upload.limited": "同時にアップロードできるのは{count}ファイルまでです。これ以上アップロードするには新しい投稿をしてください。",
@@ -1788,6 +1791,7 @@
"navbar_dropdown.integrations": "統合機能", "navbar_dropdown.integrations": "統合機能",
"navbar_dropdown.inviteMember": "招待メールを送信", "navbar_dropdown.inviteMember": "招待メールを送信",
"navbar_dropdown.join": "別のチームに参加する", "navbar_dropdown.join": "別のチームに参加する",
"navbar_dropdown.keyboardShortcuts": "キーボードショートカット",
"navbar_dropdown.leave": "チームを脱退する", "navbar_dropdown.leave": "チームを脱退する",
"navbar_dropdown.logout": "ログアウト", "navbar_dropdown.logout": "ログアウト",
"navbar_dropdown.manageMembers": "メンバーを管理する", "navbar_dropdown.manageMembers": "メンバーを管理する",
@@ -1878,6 +1882,7 @@
"rhs_comment.permalink": "パーマリンク", "rhs_comment.permalink": "パーマリンク",
"rhs_header.backToCallTooltip": "応答する", "rhs_header.backToCallTooltip": "応答する",
"rhs_header.backToFlaggedTooltip": "フラグの立てられた投稿へ戻る", "rhs_header.backToFlaggedTooltip": "フラグの立てられた投稿へ戻る",
"rhs_header.backToPinnedTooltip": "フラグの立てられた投稿へ戻る",
"rhs_header.backToResultsTooltip": "検索結果に戻る", "rhs_header.backToResultsTooltip": "検索結果に戻る",
"rhs_header.closeSidebarTooltip": "サイドバーを閉じる", "rhs_header.closeSidebarTooltip": "サイドバーを閉じる",
"rhs_header.closeTooltip": "サイドバーを閉じる", "rhs_header.closeTooltip": "サイドバーを閉じる",
@@ -2042,9 +2047,9 @@
"team_members_dropdown.confirmDemotionCmd": "プラットフォームのシステム管理者の役割 {username}", "team_members_dropdown.confirmDemotionCmd": "プラットフォームのシステム管理者の役割 {username}",
"team_members_dropdown.inactive": "無効", "team_members_dropdown.inactive": "無効",
"team_members_dropdown.leave_team": "チームから脱退させる", "team_members_dropdown.leave_team": "チームから脱退させる",
"team_members_dropdown.makeActive": "有効", "team_members_dropdown.makeActive": "有効にする",
"team_members_dropdown.makeAdmin": "チーム管理者にする", "team_members_dropdown.makeAdmin": "チーム管理者にする",
"team_members_dropdown.makeInactive": "無効", "team_members_dropdown.makeInactive": "無効にする",
"team_members_dropdown.makeMember": "メンバーにする", "team_members_dropdown.makeMember": "メンバーにする",
"team_members_dropdown.member": "メンバー", "team_members_dropdown.member": "メンバー",
"team_members_dropdown.systemAdmin": "システム管理者", "team_members_dropdown.systemAdmin": "システム管理者",

Просмотреть файл

@@ -300,6 +300,8 @@
"admin.email.smtpUsernameTitle": "SMTP 서버 사용자명:", "admin.email.smtpUsernameTitle": "SMTP 서버 사용자명:",
"admin.email.testing": "테스트 중...", "admin.email.testing": "테스트 중...",
"admin.false": "비활성화", "admin.false": "비활성화",
"admin.file.enableFileAttachments": "Enable File Attachments:",
"admin.file.enableFileAttachmentsDesc": "When false, disable file and image uploads on messages.",
"admin.file_upload.chooseFile": "파일 선택", "admin.file_upload.chooseFile": "파일 선택",
"admin.file_upload.noFile": "업로드 된 파일이 없습니다.", "admin.file_upload.noFile": "업로드 된 파일이 없습니다.",
"admin.file_upload.uploadFile": "업로드", "admin.file_upload.uploadFile": "업로드",
@@ -628,7 +630,7 @@
"admin.saml.emailAttrTitle": "이메일 속성:", "admin.saml.emailAttrTitle": "이메일 속성:",
"admin.saml.enableDescription": "When true, Mattermost allows login using SAML. Please see <a href='http://docs.mattermost.com/deployment/sso-saml.html' target='_blank'>documentation</a> to learn more about configuring SAML for Mattermost.", "admin.saml.enableDescription": "When true, Mattermost allows login using SAML. Please see <a href='http://docs.mattermost.com/deployment/sso-saml.html' target='_blank'>documentation</a> to learn more about configuring SAML for Mattermost.",
"admin.saml.enableTitle": "SAML 계정으로 인증:", "admin.saml.enableTitle": "SAML 계정으로 인증:",
"admin.saml.encryptDescription": "When true, Mattermost will decrypt SAML Assertions encrypted with your Service Provider Public Certificate.", "admin.saml.encryptDescription": "When false, Mattermost will not decrypt SAML Assertions encrypted with your Service Provider Public Certificate. Not recommended for production environments. For testing only.",
"admin.saml.encryptTitle": "암호화:", "admin.saml.encryptTitle": "암호화:",
"admin.saml.firstnameAttrDesc": "(Optional) The attribute in the SAML Assertion that will be used to populate the nickname of users in Mattermost.", "admin.saml.firstnameAttrDesc": "(Optional) The attribute in the SAML Assertion that will be used to populate the nickname of users in Mattermost.",
"admin.saml.firstnameAttrEx": "예시 \"FirstName\"", "admin.saml.firstnameAttrEx": "예시 \"FirstName\"",
@@ -673,7 +675,7 @@
"admin.saml.usernameAttrDesc": "The attribute in the SAML Assertion that will be used to populate the username field in Mattermost.", "admin.saml.usernameAttrDesc": "The attribute in the SAML Assertion that will be used to populate the username field in Mattermost.",
"admin.saml.usernameAttrEx": "예시 \"Username\"", "admin.saml.usernameAttrEx": "예시 \"Username\"",
"admin.saml.usernameAttrTitle": "사용자명 속성:", "admin.saml.usernameAttrTitle": "사용자명 속성:",
"admin.saml.verifyDescription": "When true, Mattermost verifies that the signature sent from the SAML Response matches the Service Provider Login URL", "admin.saml.verifyDescription": "When false, Mattermost will not verify that the signature sent from a SAML Response matches the Service Provider Login URL. Not recommended for production environments. For testing only.",
"admin.saml.verifyTitle": "시그니처 검증:", "admin.saml.verifyTitle": "시그니처 검증:",
"admin.save": "저장", "admin.save": "저장",
"admin.saving": "설정 저장 중...", "admin.saving": "설정 저장 중...",
@@ -1322,6 +1324,7 @@
"file_attachment.download": "다운로드", "file_attachment.download": "다운로드",
"file_info_preview.size": "용량 ", "file_info_preview.size": "용량 ",
"file_info_preview.type": "파일 형식 ", "file_info_preview.type": "파일 형식 ",
"file_upload.disabled": "File attachments are disabled.",
"file_upload.fileAbove": "File above {max}MB cannot be uploaded: {filename}", "file_upload.fileAbove": "File above {max}MB cannot be uploaded: {filename}",
"file_upload.filesAbove": "Files above {max}MB cannot be uploaded: {filenames}", "file_upload.filesAbove": "Files above {max}MB cannot be uploaded: {filenames}",
"file_upload.limited": "Uploads limited to {count} files maximum. Please use additional posts for more files.", "file_upload.limited": "Uploads limited to {count} files maximum. Please use additional posts for more files.",
@@ -1788,6 +1791,7 @@
"navbar_dropdown.integrations": "통합 기능", "navbar_dropdown.integrations": "통합 기능",
"navbar_dropdown.inviteMember": "Send Email Invite", "navbar_dropdown.inviteMember": "Send Email Invite",
"navbar_dropdown.join": "Join Another Team", "navbar_dropdown.join": "Join Another Team",
"navbar_dropdown.keyboardShortcuts": "Keyboard Shortcuts",
"navbar_dropdown.leave": "팀 떠나기", "navbar_dropdown.leave": "팀 떠나기",
"navbar_dropdown.logout": "로그아웃", "navbar_dropdown.logout": "로그아웃",
"navbar_dropdown.manageMembers": "회원 관리", "navbar_dropdown.manageMembers": "회원 관리",
@@ -1878,6 +1882,7 @@
"rhs_comment.permalink": "바로가기", "rhs_comment.permalink": "바로가기",
"rhs_header.backToCallTooltip": "Back to Call", "rhs_header.backToCallTooltip": "Back to Call",
"rhs_header.backToFlaggedTooltip": "중요 메시지로 돌아가기", "rhs_header.backToFlaggedTooltip": "중요 메시지로 돌아가기",
"rhs_header.backToPinnedTooltip": "중요 메시지로 돌아가기",
"rhs_header.backToResultsTooltip": "검색결과로 돌아가기", "rhs_header.backToResultsTooltip": "검색결과로 돌아가기",
"rhs_header.closeSidebarTooltip": "사이드바 닫기", "rhs_header.closeSidebarTooltip": "사이드바 닫기",
"rhs_header.closeTooltip": "사이드바 닫기", "rhs_header.closeTooltip": "사이드바 닫기",

Просмотреть файл

@@ -300,6 +300,8 @@
"admin.email.smtpUsernameTitle": "SMTP server gebruikersnaam:", "admin.email.smtpUsernameTitle": "SMTP server gebruikersnaam:",
"admin.email.testing": "Testen...", "admin.email.testing": "Testen...",
"admin.false": "uitgeschakeld", "admin.false": "uitgeschakeld",
"admin.file.enableFileAttachments": "Enable File Attachments:",
"admin.file.enableFileAttachmentsDesc": "When false, disable file and image uploads on messages.",
"admin.file_upload.chooseFile": "Kies een bestand", "admin.file_upload.chooseFile": "Kies een bestand",
"admin.file_upload.noFile": "Geen bestand geüpload", "admin.file_upload.noFile": "Geen bestand geüpload",
"admin.file_upload.uploadFile": "Upload", "admin.file_upload.uploadFile": "Upload",
@@ -628,7 +630,7 @@
"admin.saml.emailAttrTitle": "Email Attribuut:", "admin.saml.emailAttrTitle": "Email Attribuut:",
"admin.saml.enableDescription": "Mattermost SAML logins toestaan. Lees hier de <a href='http://docs.mattermost.com/deployment/sso-saml.html' target='_blank'>documentatie</a> over het configureren van SAML voor Mattermost.", "admin.saml.enableDescription": "Mattermost SAML logins toestaan. Lees hier de <a href='http://docs.mattermost.com/deployment/sso-saml.html' target='_blank'>documentatie</a> over het configureren van SAML voor Mattermost.",
"admin.saml.enableTitle": "Inschakelen van inloggen met SAML:", "admin.saml.enableTitle": "Inschakelen van inloggen met SAML:",
"admin.saml.encryptDescription": "Mattermost zal SAML Assertions decoderen met jouw Publiekelijk Service Provider Certificaat.", "admin.saml.encryptDescription": "When false, Mattermost will not decrypt SAML Assertions encrypted with your Service Provider Public Certificate. Not recommended for production environments. For testing only.",
"admin.saml.encryptTitle": "Inschakelen van Versleuteling: ", "admin.saml.encryptTitle": "Inschakelen van Versleuteling: ",
"admin.saml.firstnameAttrDesc": "(Optioneel) Het attribuut in the SAML-server dat wordt gebruikt voor het vullen van de voornaam van de gebruikers in Mattermost.", "admin.saml.firstnameAttrDesc": "(Optioneel) Het attribuut in the SAML-server dat wordt gebruikt voor het vullen van de voornaam van de gebruikers in Mattermost.",
"admin.saml.firstnameAttrEx": "Bijv.: \"Voornaam\"", "admin.saml.firstnameAttrEx": "Bijv.: \"Voornaam\"",
@@ -673,7 +675,7 @@
"admin.saml.usernameAttrDesc": "Het attribuut in the SAML-server dat wordt gebruikt voor het invullen van de gebruikersnaam in Mattermost.", "admin.saml.usernameAttrDesc": "Het attribuut in the SAML-server dat wordt gebruikt voor het invullen van de gebruikersnaam in Mattermost.",
"admin.saml.usernameAttrEx": "Bijv.: \"Gebruikersnaam\"", "admin.saml.usernameAttrEx": "Bijv.: \"Gebruikersnaam\"",
"admin.saml.usernameAttrTitle": "Gebruikersnaam Attribuut:", "admin.saml.usernameAttrTitle": "Gebruikersnaam Attribuut:",
"admin.saml.verifyDescription": "Mattermost vergelijkt de ondertekening van het SAML response met de Service Provider Login URL", "admin.saml.verifyDescription": "When false, Mattermost will not verify that the signature sent from a SAML Response matches the Service Provider Login URL. Not recommended for production environments. For testing only.",
"admin.saml.verifyTitle": "Ondertekening verifiëren", "admin.saml.verifyTitle": "Ondertekening verifiëren",
"admin.save": "Opslaan", "admin.save": "Opslaan",
"admin.saving": "Configuratie opslaan...", "admin.saving": "Configuratie opslaan...",
@@ -1322,6 +1324,7 @@
"file_attachment.download": "Downloaden", "file_attachment.download": "Downloaden",
"file_info_preview.size": "Grootte ", "file_info_preview.size": "Grootte ",
"file_info_preview.type": "Bestandstype ", "file_info_preview.type": "Bestandstype ",
"file_upload.disabled": "File attachments are disabled.",
"file_upload.fileAbove": "Het bestand groter dan {max} MB kan niet worden geüploaded: {filename}", "file_upload.fileAbove": "Het bestand groter dan {max} MB kan niet worden geüploaded: {filename}",
"file_upload.filesAbove": "Bestanden groter dan {max}MB kunnen niet worden geüpload: {filenames}", "file_upload.filesAbove": "Bestanden groter dan {max}MB kunnen niet worden geüpload: {filenames}",
"file_upload.limited": "Uploads gelimiteerd op maximum {count} bestanden. Gebruik additionele berichten voor meer bestanden.", "file_upload.limited": "Uploads gelimiteerd op maximum {count} bestanden. Gebruik additionele berichten voor meer bestanden.",
@@ -1788,6 +1791,7 @@
"navbar_dropdown.integrations": "Integraties", "navbar_dropdown.integrations": "Integraties",
"navbar_dropdown.inviteMember": "Send Email Invite", "navbar_dropdown.inviteMember": "Send Email Invite",
"navbar_dropdown.join": "Join Another Team", "navbar_dropdown.join": "Join Another Team",
"navbar_dropdown.keyboardShortcuts": "Keyboard Shortcuts",
"navbar_dropdown.leave": "Team verlaten", "navbar_dropdown.leave": "Team verlaten",
"navbar_dropdown.logout": "Afmelden", "navbar_dropdown.logout": "Afmelden",
"navbar_dropdown.manageMembers": "Leden beheren", "navbar_dropdown.manageMembers": "Leden beheren",
@@ -1878,6 +1882,7 @@
"rhs_comment.permalink": "Permanente koppeling", "rhs_comment.permalink": "Permanente koppeling",
"rhs_header.backToCallTooltip": "Back to Call", "rhs_header.backToCallTooltip": "Back to Call",
"rhs_header.backToFlaggedTooltip": "Terug naar Gemarkeerde Berichten", "rhs_header.backToFlaggedTooltip": "Terug naar Gemarkeerde Berichten",
"rhs_header.backToPinnedTooltip": "Terug naar Gemarkeerde Berichten",
"rhs_header.backToResultsTooltip": "Terug naar Zoekresultaten", "rhs_header.backToResultsTooltip": "Terug naar Zoekresultaten",
"rhs_header.closeSidebarTooltip": "Zijbalk Sluiten", "rhs_header.closeSidebarTooltip": "Zijbalk Sluiten",
"rhs_header.closeTooltip": "Zijbalk Sluiten", "rhs_header.closeTooltip": "Zijbalk Sluiten",

Просмотреть файл

@@ -300,6 +300,8 @@
"admin.email.smtpUsernameTitle": "Nazwa użytkownika SMTP:", "admin.email.smtpUsernameTitle": "Nazwa użytkownika SMTP:",
"admin.email.testing": "Testowanie...", "admin.email.testing": "Testowanie...",
"admin.false": "fałsz", "admin.false": "fałsz",
"admin.file.enableFileAttachments": "Włącz załączniki:",
"admin.file.enableFileAttachmentsDesc": "Gdy fałsz, wyłącz przesyłanie plików i zdjęć w wiadomościach.",
"admin.file_upload.chooseFile": "Wybierz plik", "admin.file_upload.chooseFile": "Wybierz plik",
"admin.file_upload.noFile": "Nie wysłano żadnego pliku", "admin.file_upload.noFile": "Nie wysłano żadnego pliku",
"admin.file_upload.uploadFile": "Wyślij", "admin.file_upload.uploadFile": "Wyślij",
@@ -628,7 +630,7 @@
"admin.saml.emailAttrTitle": "Atrybut Email:", "admin.saml.emailAttrTitle": "Atrybut Email:",
"admin.saml.enableDescription": "Gdy włączone, Mattermost będzie działał w trybie Wysokiej Dostępności (HA). Proszę przeczytać <a href='http://docs.mattermost.com/deployment/cluster.html' target='_blank'>dokumentację (język angielski)</a> żeby dowiedzieć się więcej o konfiguracji trybu Wysokiej Dostępności w Mattermost.", "admin.saml.enableDescription": "Gdy włączone, Mattermost będzie działał w trybie Wysokiej Dostępności (HA). Proszę przeczytać <a href='http://docs.mattermost.com/deployment/cluster.html' target='_blank'>dokumentację (język angielski)</a> żeby dowiedzieć się więcej o konfiguracji trybu Wysokiej Dostępności w Mattermost.",
"admin.saml.enableTitle": "Pozwól zalogować się z SAML:", "admin.saml.enableTitle": "Pozwól zalogować się z SAML:",
"admin.saml.encryptDescription": "Jeśli prawda, Mattermost odszyfruje oznaczenia SAML zaszyfrowane certyfikatem publicznym.", "admin.saml.encryptDescription": "When false, Mattermost will not decrypt SAML Assertions encrypted with your Service Provider Public Certificate. Not recommended for production environments. For testing only.",
"admin.saml.encryptTitle": "Włącz Szyfrowanie:", "admin.saml.encryptTitle": "Włącz Szyfrowanie:",
"admin.saml.firstnameAttrDesc": "(Opcjonalne) Atrybut SAML który będzie używany do uzupełnienia pola imienia w Mattermost.", "admin.saml.firstnameAttrDesc": "(Opcjonalne) Atrybut SAML który będzie używany do uzupełnienia pola imienia w Mattermost.",
"admin.saml.firstnameAttrEx": "Np. \"FirstName\"", "admin.saml.firstnameAttrEx": "Np. \"FirstName\"",
@@ -673,7 +675,7 @@
"admin.saml.usernameAttrDesc": "Atrybut SAML który będzie używany do wypełnienia pola nazwa użytkownika w Mattermost.", "admin.saml.usernameAttrDesc": "Atrybut SAML który będzie używany do wypełnienia pola nazwa użytkownika w Mattermost.",
"admin.saml.usernameAttrEx": "Np. \"Username\"", "admin.saml.usernameAttrEx": "Np. \"Username\"",
"admin.saml.usernameAttrTitle": "Atrybut nazwy użytkownika:", "admin.saml.usernameAttrTitle": "Atrybut nazwy użytkownika:",
"admin.saml.verifyDescription": "Jeśli prawda, Mattermost sprawdza, czy podpis wysyłany z odpowiedzi SAML odpowiada adresowi URL logowania usługodawcy", "admin.saml.verifyDescription": "When false, Mattermost will not verify that the signature sent from a SAML Response matches the Service Provider Login URL. Not recommended for production environments. For testing only.",
"admin.saml.verifyTitle": "Weryfikuj Podpis:", "admin.saml.verifyTitle": "Weryfikuj Podpis:",
"admin.save": "Zapisz", "admin.save": "Zapisz",
"admin.saving": "Zapisuję konfigurację...", "admin.saving": "Zapisuję konfigurację...",
@@ -1322,6 +1324,7 @@
"file_attachment.download": "Pobierz", "file_attachment.download": "Pobierz",
"file_info_preview.size": "Rozmiar ", "file_info_preview.size": "Rozmiar ",
"file_info_preview.type": "Typ pliku ", "file_info_preview.type": "Typ pliku ",
"file_upload.disabled": "File attachments are disabled.",
"file_upload.fileAbove": "Plik powyżej {max} MB nie może zostać wysłany: {filename}", "file_upload.fileAbove": "Plik powyżej {max} MB nie może zostać wysłany: {filename}",
"file_upload.filesAbove": "Pliki powyżej {max} MB nie mogą zostać wysłane: {filenames}", "file_upload.filesAbove": "Pliki powyżej {max} MB nie mogą zostać wysłane: {filenames}",
"file_upload.limited": "Przesyłanie danych jest ograniczone do maksymalnie {count} plików. Proszę użyć dodatkowych postów, aby wysłać więcej plików.", "file_upload.limited": "Przesyłanie danych jest ograniczone do maksymalnie {count} plików. Proszę użyć dodatkowych postów, aby wysłać więcej plików.",
@@ -1554,7 +1557,7 @@
"intro_messages.beginning": "Początek {name}", "intro_messages.beginning": "Początek {name}",
"intro_messages.channel": "kanału", "intro_messages.channel": "kanału",
"intro_messages.creator": "To jest początek {type} {name}, stworzonego/ej przez {creator} dnia {date}.", "intro_messages.creator": "To jest początek {type} {name}, stworzonego/ej przez {creator} dnia {date}.",
"intro_messages.default": "<h4 class='channel-intro__title'>Początek {display_name}<p class='channel-intro__content'><strong>Witamy na {display_name}!</strong><br/><br/>Zamieszczaj tutaj wiadomości, które chcesz aby zobaczyli wszyscy. Wszyscy automatycznie stają się stałymi członkami tego kanału, gdy dołączyli do zespołu.</p>", "intro_messages.default": "<h4 class='channel-intro__title'>Początek {display_name}</h4><p class='channel-intro__content'><strong>Witamy na {display_name}!</strong><br/><br/>Zamieszczaj tutaj wiadomości, które chcesz aby zobaczyli wszyscy. Wszyscy automatycznie stają się stałymi członkami tego kanału, gdy dołączyli do zespołu.</p>",
"intro_messages.group": "kanał prywatny", "intro_messages.group": "kanał prywatny",
"intro_messages.group_message": "To jest początek historii wiadomości grupowych z tymi zespołami. Wiadomości i pliki udostępnione w tym miejscu nie są wyświetlane osobom spoza tego obszaru.", "intro_messages.group_message": "To jest początek historii wiadomości grupowych z tymi zespołami. Wiadomości i pliki udostępnione w tym miejscu nie są wyświetlane osobom spoza tego obszaru.",
"intro_messages.invite": "Zaproś innych do {type}", "intro_messages.invite": "Zaproś innych do {type}",
@@ -1788,6 +1791,7 @@
"navbar_dropdown.integrations": "Integracje", "navbar_dropdown.integrations": "Integracje",
"navbar_dropdown.inviteMember": "Wyślij zaproszenie e-mailem", "navbar_dropdown.inviteMember": "Wyślij zaproszenie e-mailem",
"navbar_dropdown.join": "Dołącz do innego zespołu", "navbar_dropdown.join": "Dołącz do innego zespołu",
"navbar_dropdown.keyboardShortcuts": "Skróty klawiszowe",
"navbar_dropdown.leave": "Opuść zespół", "navbar_dropdown.leave": "Opuść zespół",
"navbar_dropdown.logout": "Wyloguj", "navbar_dropdown.logout": "Wyloguj",
"navbar_dropdown.manageMembers": "Zarządzaj użytkownikami", "navbar_dropdown.manageMembers": "Zarządzaj użytkownikami",
@@ -1878,6 +1882,7 @@
"rhs_comment.permalink": "Odnośnik bezpośredni", "rhs_comment.permalink": "Odnośnik bezpośredni",
"rhs_header.backToCallTooltip": "Wróć do rozmowy", "rhs_header.backToCallTooltip": "Wróć do rozmowy",
"rhs_header.backToFlaggedTooltip": "Wróć do oznaczonego postu", "rhs_header.backToFlaggedTooltip": "Wróć do oznaczonego postu",
"rhs_header.backToPinnedTooltip": "Wróć do oznaczonego postu",
"rhs_header.backToResultsTooltip": "Powrót do wyników wyszukiwania", "rhs_header.backToResultsTooltip": "Powrót do wyników wyszukiwania",
"rhs_header.closeSidebarTooltip": "Zamknij pasek boczny", "rhs_header.closeSidebarTooltip": "Zamknij pasek boczny",
"rhs_header.closeTooltip": "Zamknij pasek boczny", "rhs_header.closeTooltip": "Zamknij pasek boczny",

Просмотреть файл

@@ -300,6 +300,8 @@
"admin.email.smtpUsernameTitle": "Nome do Usuário do Servidor de SMTP:", "admin.email.smtpUsernameTitle": "Nome do Usuário do Servidor de SMTP:",
"admin.email.testing": "Testando...", "admin.email.testing": "Testando...",
"admin.false": "falso", "admin.false": "falso",
"admin.file.enableFileAttachments": "Habilitar Anexo de Arquivos:",
"admin.file.enableFileAttachmentsDesc": "Quando falso, envio de arquivos e imagens serão desabilitados nas mensagens.",
"admin.file_upload.chooseFile": "Escolher Arquivo", "admin.file_upload.chooseFile": "Escolher Arquivo",
"admin.file_upload.noFile": "Nenhum arquivo enviado", "admin.file_upload.noFile": "Nenhum arquivo enviado",
"admin.file_upload.uploadFile": "Enviar", "admin.file_upload.uploadFile": "Enviar",
@@ -628,7 +630,7 @@
"admin.saml.emailAttrTitle": "Atributo de E-mail:", "admin.saml.emailAttrTitle": "Atributo de E-mail:",
"admin.saml.enableDescription": "Quando verdadeiro, Mattermost irá permitir login usando SAML. Por favor veja a <a href='http://docs.mattermost.com/deployment/sso-saml.html' target='_blank'>documentação</a> para aprender mais sobre configurar SAML para o Mattermost.", "admin.saml.enableDescription": "Quando verdadeiro, Mattermost irá permitir login usando SAML. Por favor veja a <a href='http://docs.mattermost.com/deployment/sso-saml.html' target='_blank'>documentação</a> para aprender mais sobre configurar SAML para o Mattermost.",
"admin.saml.enableTitle": "Ativar Login With SAML:", "admin.saml.enableTitle": "Ativar Login With SAML:",
"admin.saml.encryptDescription": "Quando verdadeiro, Mattermost irá descriptografar SAML Assertions criptografados com o seu Provedor de Serviços de Certificado Público.", "admin.saml.encryptDescription": "Quando falso, Mattermost não irá descriptografar o SAML Assertions encriptado com o seu Provedor de Serviço de Certificado Público. Não recomendado para ambientes de produção. Apenas para teste.",
"admin.saml.encryptTitle": "Ativar Criptografia:", "admin.saml.encryptTitle": "Ativar Criptografia:",
"admin.saml.firstnameAttrDesc": "(Opcional) O atributo em SAML Assertion que será usado para preencher o nome dos usuários no Mattermost.", "admin.saml.firstnameAttrDesc": "(Opcional) O atributo em SAML Assertion que será usado para preencher o nome dos usuários no Mattermost.",
"admin.saml.firstnameAttrEx": "Ex.: \"FirstName\"", "admin.saml.firstnameAttrEx": "Ex.: \"FirstName\"",
@@ -673,7 +675,7 @@
"admin.saml.usernameAttrDesc": "O atributo em SAML Assertion que será usado para preencher o campo usuário no Mattermost.", "admin.saml.usernameAttrDesc": "O atributo em SAML Assertion que será usado para preencher o campo usuário no Mattermost.",
"admin.saml.usernameAttrEx": "Ex.: \"Username\"", "admin.saml.usernameAttrEx": "Ex.: \"Username\"",
"admin.saml.usernameAttrTitle": "Atributo do Usuário:", "admin.saml.usernameAttrTitle": "Atributo do Usuário:",
"admin.saml.verifyDescription": "Quando verdadeiro, Mattermost verifica se a assinatura enviada da resposta SAML corresponde a URL de Login do Privedor de Serviço", "admin.saml.verifyDescription": "Quando falso, Mattermost não irá verificar que a assinatura foi enviada e que a resposta do SAML é igual ao URL de Login do Provedor de Serviços. Não recomendado para ambientes de produção. Apenas para teste.",
"admin.saml.verifyTitle": "Verificar Assinatura:", "admin.saml.verifyTitle": "Verificar Assinatura:",
"admin.save": "Salvar", "admin.save": "Salvar",
"admin.saving": "Salvando Config...", "admin.saving": "Salvando Config...",
@@ -1322,6 +1324,7 @@
"file_attachment.download": "Download", "file_attachment.download": "Download",
"file_info_preview.size": "Tamanho ", "file_info_preview.size": "Tamanho ",
"file_info_preview.type": "Tipo do arquivo ", "file_info_preview.type": "Tipo do arquivo ",
"file_upload.disabled": "Anexo de arquivos estão desabilitados.",
"file_upload.fileAbove": "Arquivo acima {max}MB não pode ser enviado: {filename}", "file_upload.fileAbove": "Arquivo acima {max}MB não pode ser enviado: {filename}",
"file_upload.filesAbove": "Arquivos acima {max}MB não podem ser enviados: {filenames}", "file_upload.filesAbove": "Arquivos acima {max}MB não podem ser enviados: {filenames}",
"file_upload.limited": "Limite máximo de uploads de {count} arquivos. Por favor use um post adicional para mais arquivos.", "file_upload.limited": "Limite máximo de uploads de {count} arquivos. Por favor use um post adicional para mais arquivos.",
@@ -1788,6 +1791,7 @@
"navbar_dropdown.integrations": "Integrações", "navbar_dropdown.integrations": "Integrações",
"navbar_dropdown.inviteMember": "Enviar Email de Convite", "navbar_dropdown.inviteMember": "Enviar Email de Convite",
"navbar_dropdown.join": "Junte-se a Outra Equipe", "navbar_dropdown.join": "Junte-se a Outra Equipe",
"navbar_dropdown.keyboardShortcuts": "Atalhos de teclado",
"navbar_dropdown.leave": "Sair da Equipe", "navbar_dropdown.leave": "Sair da Equipe",
"navbar_dropdown.logout": "Logout", "navbar_dropdown.logout": "Logout",
"navbar_dropdown.manageMembers": "Gerenciar Membros", "navbar_dropdown.manageMembers": "Gerenciar Membros",
@@ -1878,6 +1882,7 @@
"rhs_comment.permalink": "Permalink", "rhs_comment.permalink": "Permalink",
"rhs_header.backToCallTooltip": "Voltar para Chamada", "rhs_header.backToCallTooltip": "Voltar para Chamada",
"rhs_header.backToFlaggedTooltip": "Voltar para Posts Marcados", "rhs_header.backToFlaggedTooltip": "Voltar para Posts Marcados",
"rhs_header.backToPinnedTooltip": "Voltar para os Posts Marcados",
"rhs_header.backToResultsTooltip": "Voltar para os Resultados da Pesquisa", "rhs_header.backToResultsTooltip": "Voltar para os Resultados da Pesquisa",
"rhs_header.closeSidebarTooltip": "Fechar a Barra Lateral", "rhs_header.closeSidebarTooltip": "Fechar a Barra Lateral",
"rhs_header.closeTooltip": "Fechar a Barra Lateral", "rhs_header.closeTooltip": "Fechar a Barra Lateral",

Просмотреть файл

@@ -86,7 +86,7 @@
"add_emoji.save": "Сохранить", "add_emoji.save": "Сохранить",
"add_incoming_webhook.cancel": "Отмена", "add_incoming_webhook.cancel": "Отмена",
"add_incoming_webhook.channel": "Канал", "add_incoming_webhook.channel": "Канал",
"add_incoming_webhook.channel.help": "Публичный канал или приватная группа, которая будет получать содержимое вебхука. Вы должны состоять в приватной группе, чтобы выбрать её.", "add_incoming_webhook.channel.help": "Публичный или приватный канал, который будет получать содержимое вебхука. Вы должны состоять в приватном канале, чтобы установить вебхук.",
"add_incoming_webhook.channelRequired": "Необходим действующий канал", "add_incoming_webhook.channelRequired": "Необходим действующий канал",
"add_incoming_webhook.description": "Описание", "add_incoming_webhook.description": "Описание",
"add_incoming_webhook.description.help": "Описание входящего вебхука.", "add_incoming_webhook.description.help": "Описание входящего вебхука.",
@@ -300,6 +300,8 @@
"admin.email.smtpUsernameTitle": "Имя пользователя SMTP:", "admin.email.smtpUsernameTitle": "Имя пользователя SMTP:",
"admin.email.testing": "Проверка...", "admin.email.testing": "Проверка...",
"admin.false": "нет", "admin.false": "нет",
"admin.file.enableFileAttachments": "Включить вложения:",
"admin.file.enableFileAttachmentsDesc": "Если отключить, прикрепление файлов и изображений к сообщениям будет недоступно.",
"admin.file_upload.chooseFile": "Выбрать файл", "admin.file_upload.chooseFile": "Выбрать файл",
"admin.file_upload.noFile": "Нет загруженный файлов", "admin.file_upload.noFile": "Нет загруженный файлов",
"admin.file_upload.uploadFile": "Загрузить", "admin.file_upload.uploadFile": "Загрузить",
@@ -332,14 +334,14 @@
"admin.general.policy.permissionsSystemAdmin": "Администраторы Системы", "admin.general.policy.permissionsSystemAdmin": "Администраторы Системы",
"admin.general.policy.restrictPostDeleteDescription": "Установка правил, кто имеет право удалять сообщения.", "admin.general.policy.restrictPostDeleteDescription": "Установка правил, кто имеет право удалять сообщения.",
"admin.general.policy.restrictPostDeleteTitle": "Каким пользователям позволять удалять сообщения:", "admin.general.policy.restrictPostDeleteTitle": "Каким пользователям позволять удалять сообщения:",
"admin.general.policy.restrictPrivateChannelCreationDescription": "Установите политики того, кто может создавать публичные каналы.", "admin.general.policy.restrictPrivateChannelCreationDescription": "Установите политики того, кто может создавать закрытые каналы.",
"admin.general.policy.restrictPrivateChannelCreationTitle": "Включить возможность создания личных каналов для:", "admin.general.policy.restrictPrivateChannelCreationTitle": "Включить возможность создания личных каналов для:",
"admin.general.policy.restrictPrivateChannelDeletionCommandLineToolLink": "командная строка", "admin.general.policy.restrictPrivateChannelDeletionCommandLineToolLink": "командная строка",
"admin.general.policy.restrictPrivateChannelDeletionDescription": "Установите кто может удалять личные каналы. Удалённые каналы можно восстановить из базы данных с помощью {commandLineToolLink}.", "admin.general.policy.restrictPrivateChannelDeletionDescription": "Установите кто может удалять личные каналы. Удалённые каналы можно восстановить из базы данных с помощью {commandLineToolLink}.",
"admin.general.policy.restrictPrivateChannelDeletionTitle": "Включить возможность удаления личных каналов для:", "admin.general.policy.restrictPrivateChannelDeletionTitle": "Включить возможность удаления личных каналов для:",
"admin.general.policy.restrictPrivateChannelManageMembersDescription": "Установите кто может добавлять и удалять участников из личных каналов.", "admin.general.policy.restrictPrivateChannelManageMembersDescription": "Установите кто может добавлять и удалять участников из личных каналов.",
"admin.general.policy.restrictPrivateChannelManageMembersTitle": "Разрешить управление участниками личных каналов для:", "admin.general.policy.restrictPrivateChannelManageMembersTitle": "Разрешить управление участниками личных каналов для:",
"admin.general.policy.restrictPrivateChannelManagementDescription": "Задайте политики того, кто может создавать, удалять, переименовывать общедоступные каналы и устанавливать для них заголовок или цель.", "admin.general.policy.restrictPrivateChannelManagementDescription": "Задайте политики того, кто может добавлять и изменять заголовок или цель приватного канала. ",
"admin.general.policy.restrictPrivateChannelManagementTitle": "Включить возможность изменять названия личных каналов для:", "admin.general.policy.restrictPrivateChannelManagementTitle": "Включить возможность изменять названия личных каналов для:",
"admin.general.policy.restrictPublicChannelCreationDescription": "Установите политики того, кто может создавать публичные каналы.", "admin.general.policy.restrictPublicChannelCreationDescription": "Установите политики того, кто может создавать публичные каналы.",
"admin.general.policy.restrictPublicChannelCreationTitle": "Включить возможность создания публичных каналов для:", "admin.general.policy.restrictPublicChannelCreationTitle": "Включить возможность создания публичных каналов для:",
@@ -348,7 +350,7 @@
"admin.general.policy.restrictPublicChannelDeletionTitle": "Включить возможность удаления публичных каналов для:", "admin.general.policy.restrictPublicChannelDeletionTitle": "Включить возможность удаления публичных каналов для:",
"admin.general.policy.restrictPublicChannelManagementDescription": "Задайте политики того, кто может создавать, удалять, переименовывать общедоступные каналы и устанавливать для них заголовок или цель.", "admin.general.policy.restrictPublicChannelManagementDescription": "Задайте политики того, кто может создавать, удалять, переименовывать общедоступные каналы и устанавливать для них заголовок или цель.",
"admin.general.policy.restrictPublicChannelManagementTitle": "Включить возможность изменять названия публичных каналов для:", "admin.general.policy.restrictPublicChannelManagementTitle": "Включить возможность изменять названия публичных каналов для:",
"admin.general.policy.teamInviteDescription": "Задайте правила того, кто сможет приглашать других в команду, используя опции главного меню <b>Пригласить нового участника</b> для приглашения новых пользователей по электронной почте, или <b>Получить ссылку для приглашения в команду</b>. Если для того, чтобы поделиться ссылкой, была использована опция <b>Получить ссылку для приглашения в команду</b>, вы можете сделать устаревшим код приглашения в <b>Настройках команды</b> > <b>Код приглашения</b> после того, как нужные пользователи присоединятся к команде.", "admin.general.policy.teamInviteDescription": "Задайте политики того, кто сможет приглашать других в команду, используя опции главного меню <b>Пригласить нового участника</b> для приглашения новых пользователей по электронной почте, или <b>Получить ссылку для приглашения в команду</b>. Если для того, чтобы поделиться ссылкой, была использована опция <b>Получить ссылку для приглашения в команду</b>, вы можете сделать устаревшим код приглашения в <b>Настройки команды</b> > <b>Код приглашения</b> после того, как нужные пользователи присоединятся к команде.",
"admin.general.policy.teamInviteTitle": "Включить отправку приглашения в команды из:", "admin.general.policy.teamInviteTitle": "Включить отправку приглашения в команды из:",
"admin.general.privacy": "Конфиденциальность", "admin.general.privacy": "Конфиденциальность",
"admin.general.usersAndTeams": "Пользователи и команды", "admin.general.usersAndTeams": "Пользователи и команды",
@@ -394,7 +396,7 @@
"admin.image.amazonS3RegionExample": "Например: \"us-east-1\"", "admin.image.amazonS3RegionExample": "Например: \"us-east-1\"",
"admin.image.amazonS3RegionTitle": "Регион Amazon S3:", "admin.image.amazonS3RegionTitle": "Регион Amazon S3:",
"admin.image.amazonS3SSLDescription": "Если отключено, будет позволено подключаться к Amazon S3 по незащищённому соединению. По умолчанию используются только защищённые соединения.", "admin.image.amazonS3SSLDescription": "Если отключено, будет позволено подключаться к Amazon S3 по незащищённому соединению. По умолчанию используются только защищённые соединения.",
"admin.image.amazonS3SSLExample": "Пример: \"заголовок\"", "admin.image.amazonS3SSLExample": "Пример: \"true\"",
"admin.image.amazonS3SSLTitle": "Включить защищённые соединения с Amazon S3:", "admin.image.amazonS3SSLTitle": "Включить защищённые соединения с Amazon S3:",
"admin.image.amazonS3SecretDescription": "Получите эти учетные данные от своего администратора Amazon EC2.", "admin.image.amazonS3SecretDescription": "Получите эти учетные данные от своего администратора Amazon EC2.",
"admin.image.amazonS3SecretExample": "Например: \"jcuS8PuvcpGhpgHhlcpT1Mx42pnqMxQY\"", "admin.image.amazonS3SecretExample": "Например: \"jcuS8PuvcpGhpgHhlcpT1Mx42pnqMxQY\"",
@@ -628,7 +630,7 @@
"admin.saml.emailAttrTitle": "Атрибут эл.почта:", "admin.saml.emailAttrTitle": "Атрибут эл.почта:",
"admin.saml.enableDescription": "Если да, то Mattermost позволяет входить с помощью SAML. Пожалуйста, посмотрите <a href='http://docs.mattermost.com/deployment/sso-saml.html' target='_blank'>документацию</a>, чтобы узнать больше о настройке SAML для Mattermost.", "admin.saml.enableDescription": "Если да, то Mattermost позволяет входить с помощью SAML. Пожалуйста, посмотрите <a href='http://docs.mattermost.com/deployment/sso-saml.html' target='_blank'>документацию</a>, чтобы узнать больше о настройке SAML для Mattermost.",
"admin.saml.enableTitle": "Включить вход через SAML:", "admin.saml.enableTitle": "Включить вход через SAML:",
"admin.saml.encryptDescription": "Если истина, Mattermost будет расшифровывать утверждения SAML при помощи вашего публичного сертификата поставщика услуг.", "admin.saml.encryptDescription": "When false, Mattermost will not decrypt SAML Assertions encrypted with your Service Provider Public Certificate. Not recommended for production environments. For testing only.",
"admin.saml.encryptTitle": "Включить шифрование:", "admin.saml.encryptTitle": "Включить шифрование:",
"admin.saml.firstnameAttrDesc": "(Необязательно) Атрибут в SAML, которые будут использоваться для заполнения имени пользователей в Mattermost.", "admin.saml.firstnameAttrDesc": "(Необязательно) Атрибут в SAML, которые будут использоваться для заполнения имени пользователей в Mattermost.",
"admin.saml.firstnameAttrEx": "Например: \"FirstName\"", "admin.saml.firstnameAttrEx": "Например: \"FirstName\"",
@@ -673,7 +675,7 @@
"admin.saml.usernameAttrDesc": "Атрибут в SAML, который будет использоваться для заполнения поля имя пользователя в Mattermost.", "admin.saml.usernameAttrDesc": "Атрибут в SAML, который будет использоваться для заполнения поля имя пользователя в Mattermost.",
"admin.saml.usernameAttrEx": "Например: \"Username\"", "admin.saml.usernameAttrEx": "Например: \"Username\"",
"admin.saml.usernameAttrTitle": "Атрибут Имя пользователя:", "admin.saml.usernameAttrTitle": "Атрибут Имя пользователя:",
"admin.saml.verifyDescription": "Когда включено, то Mattermost проверяет, что ответ SAML отправляется с адреса, соответствующего URL входа провайдера услуг.", "admin.saml.verifyDescription": "When false, Mattermost will not verify that the signature sent from a SAML Response matches the Service Provider Login URL. Not recommended for production environments. For testing only.",
"admin.saml.verifyTitle": "Проверка подписи:", "admin.saml.verifyTitle": "Проверка подписи:",
"admin.save": "Сохранить", "admin.save": "Сохранить",
"admin.saving": "Сохранение конфигурации...", "admin.saving": "Сохранение конфигурации...",
@@ -697,7 +699,7 @@
"admin.service.corsDescription": "Разрешить кросс-доменные запросы с указанного домена. Укажите \"*\", если Вы хотите разрешить CORS с любого домена, или оставьте поле пустым, что бы отключить эту возможность.", "admin.service.corsDescription": "Разрешить кросс-доменные запросы с указанного домена. Укажите \"*\", если Вы хотите разрешить CORS с любого домена, или оставьте поле пустым, что бы отключить эту возможность.",
"admin.service.corsEx": "http://example.com", "admin.service.corsEx": "http://example.com",
"admin.service.corsTitle": "Разрешить кроссдоменные запросы от:", "admin.service.corsTitle": "Разрешить кроссдоменные запросы от:",
"admin.service.developerDesc": "Когда включено, на красной панели сверху будут показываться ошибки Javascript. Не рекомендуется включать на боевом сервере. ", "admin.service.developerDesc": "Когда включено, на красной панели сверху будут показываться ошибки JavaScript. Не рекомендуется использовать на \"боевом\" сервере. ",
"admin.service.developerTitle": "Включить режим разработчика:", "admin.service.developerTitle": "Включить режим разработчика:",
"admin.service.enforceMfaDesc": "When true, <a href='https://docs.mattermost.com/deployment/auth.html' target='_blank'>multi-factor authentication</a> is required for login. New users will be required to configure MFA on signup. Logged in users without MFA configured are redirected to the MFA setup page until configuration is complete.<br/><br/>If your system has users with login methods other than AD/LDAP and email, MFA must be enforced with the authentication provider outside of Mattermost.", "admin.service.enforceMfaDesc": "When true, <a href='https://docs.mattermost.com/deployment/auth.html' target='_blank'>multi-factor authentication</a> is required for login. New users will be required to configure MFA on signup. Logged in users without MFA configured are redirected to the MFA setup page until configuration is complete.<br/><br/>If your system has users with login methods other than AD/LDAP and email, MFA must be enforced with the authentication provider outside of Mattermost.",
"admin.service.enforceMfaTitle": "Принудительная многофакторная аутентификация:", "admin.service.enforceMfaTitle": "Принудительная многофакторная аутентификация:",
@@ -754,7 +756,7 @@
"admin.sidebar.advanced": "Дополнительно", "admin.sidebar.advanced": "Дополнительно",
"admin.sidebar.audits": "Аудит", "admin.sidebar.audits": "Аудит",
"admin.sidebar.authentication": "Аутентификация", "admin.sidebar.authentication": "Аутентификация",
"admin.sidebar.cluster": "Высокая доступность", "admin.sidebar.cluster": "Высокая доступность (HA)",
"admin.sidebar.compliance": "Соответствие стандартам", "admin.sidebar.compliance": "Соответствие стандартам",
"admin.sidebar.configuration": "Конфигурация", "admin.sidebar.configuration": "Конфигурация",
"admin.sidebar.connections": "Соединения", "admin.sidebar.connections": "Соединения",
@@ -779,7 +781,7 @@
"admin.sidebar.logging": "Журналирование", "admin.sidebar.logging": "Журналирование",
"admin.sidebar.login": "Login", "admin.sidebar.login": "Login",
"admin.sidebar.logs": "Журналы", "admin.sidebar.logs": "Журналы",
"admin.sidebar.metrics": "Мониторинг производительности (бета)", "admin.sidebar.metrics": "Мониторинг производительности",
"admin.sidebar.mfa": "MFA", "admin.sidebar.mfa": "MFA",
"admin.sidebar.nativeAppLinks": "Ссылки на приложения Mattermost", "admin.sidebar.nativeAppLinks": "Ссылки на приложения Mattermost",
"admin.sidebar.notifications": "Уведомления", "admin.sidebar.notifications": "Уведомления",
@@ -819,10 +821,10 @@
"admin.sql.maxOpenTitle": "Максимальное число открытых соединений:", "admin.sql.maxOpenTitle": "Максимальное число открытых соединений:",
"admin.sql.noteDescription": "Изменение параметров в этой секции потребует перезагрузки сервера.", "admin.sql.noteDescription": "Изменение параметров в этой секции потребует перезагрузки сервера.",
"admin.sql.noteTitle": "Заметка:", "admin.sql.noteTitle": "Заметка:",
"admin.sql.replicas": "Data Source Replicas:", "admin.sql.replicas": "Реплики источника данных:",
"admin.sql.traceDescription": "(Режим разработчика) Если включено, все исполняемые SQL-запросы будут записаны в лог.", "admin.sql.traceDescription": "(Режим разработчика) Если включено, все исполняемые SQL-запросы будут записаны в лог.",
"admin.sql.traceTitle": "Трассировка:", "admin.sql.traceTitle": "Трассировка:",
"admin.sql.warning": "Warning: regenerating this salt may cause some columns in the database to return empty results.", "admin.sql.warning": "Внимание: генерация новой соли может привести к возвращению пустых результатов из базы данных для некоторых колонок.",
"admin.support.aboutDesc": "Ссылка на страницу \"О программе\" для получения дополнительной информации об установке Mattermost, например, на цель и аудиторию в пределах вашей организации. Значение по умолчанию: информационная страница Mattermost.", "admin.support.aboutDesc": "Ссылка на страницу \"О программе\" для получения дополнительной информации об установке Mattermost, например, на цель и аудиторию в пределах вашей организации. Значение по умолчанию: информационная страница Mattermost.",
"admin.support.aboutTitle": "О программе:", "admin.support.aboutTitle": "О программе:",
"admin.support.emailHelp": "Email address displayed on email notifications and during tutorial for end users to ask support questions.", "admin.support.emailHelp": "Email address displayed on email notifications and during tutorial for end users to ask support questions.",
@@ -894,10 +896,10 @@
"admin.user_item.confirmDemoteDescription": "If you demote yourself from the System Admin role and there is not another user with System Admin privileges, you'll need to re-assign a System Admin by accessing the Mattermost server through a terminal and running the following command.", "admin.user_item.confirmDemoteDescription": "If you demote yourself from the System Admin role and there is not another user with System Admin privileges, you'll need to re-assign a System Admin by accessing the Mattermost server through a terminal and running the following command.",
"admin.user_item.confirmDemoteRoleTitle": "Подтверждение понижения администратором системы", "admin.user_item.confirmDemoteRoleTitle": "Подтверждение понижения администратором системы",
"admin.user_item.confirmDemotion": "Подтвердить понижение", "admin.user_item.confirmDemotion": "Подтвердить понижение",
"admin.user_item.confirmDemotionCmd": "Роли платформы system_admin {username}", "admin.user_item.confirmDemotionCmd": "platform roles system_admin {username}",
"admin.user_item.emailTitle": "<strong>Email:</strong> {email}", "admin.user_item.emailTitle": "<strong>Email:</strong> {email}",
"admin.user_item.inactive": "Неактивен", "admin.user_item.inactive": "Неактивен",
"admin.user_item.makeActive": "Активность", "admin.user_item.makeActive": "Активировать",
"admin.user_item.makeInactive": "Deactivate", "admin.user_item.makeInactive": "Deactivate",
"admin.user_item.makeMember": "Сделать участником", "admin.user_item.makeMember": "Сделать участником",
"admin.user_item.makeSysAdmin": "Сделать администратором системы", "admin.user_item.makeSysAdmin": "Сделать администратором системы",
@@ -909,7 +911,7 @@
"admin.user_item.resetMfa": "Удалить MFA", "admin.user_item.resetMfa": "Удалить MFA",
"admin.user_item.resetPwd": "Сброс пароля", "admin.user_item.resetPwd": "Сброс пароля",
"admin.user_item.switchToEmail": "Переключение на E-Mail/Пароль", "admin.user_item.switchToEmail": "Переключение на E-Mail/Пароль",
"admin.user_item.sysAdmin": "Системный администратор", "admin.user_item.sysAdmin": "Администратор системы",
"admin.user_item.teamAdmin": "Team Admin", "admin.user_item.teamAdmin": "Team Admin",
"admin.webrtc.enableDescription": "При выборе Mattermost позволяет совершать <strong>тет-а-тет</strong> видеозвонки. WebRTC звонки доступны в браузерах Chrome и Firefox, а так же в приложениях Mattermost.", "admin.webrtc.enableDescription": "При выборе Mattermost позволяет совершать <strong>тет-а-тет</strong> видеозвонки. WebRTC звонки доступны в браузерах Chrome и Firefox, а так же в приложениях Mattermost.",
"admin.webrtc.enableTitle": "Включить Mattermost WebRTC:", "admin.webrtc.enableTitle": "Включить Mattermost WebRTC:",
@@ -978,7 +980,7 @@
"analytics.team.totalPosts": "Всего сообщений", "analytics.team.totalPosts": "Всего сообщений",
"analytics.team.totalUsers": "Всего пользователей", "analytics.team.totalUsers": "Всего пользователей",
"api.channel.add_member.added": "Участник {addedUsername} добавлен на канал участником {username}", "api.channel.add_member.added": "Участник {addedUsername} добавлен на канал участником {username}",
"api.channel.delete_channel.archived": "{username} присоединился к каналу.", "api.channel.delete_channel.archived": "{username} произвёл архивирование канала.",
"api.channel.join_channel.post_and_forget": "{username} присоединился к каналу.", "api.channel.join_channel.post_and_forget": "{username} присоединился к каналу.",
"api.channel.leave.left": "{username} покинул канал.", "api.channel.leave.left": "{username} покинул канал.",
"api.channel.post_update_channel_displayname_message_and_forget.updated_from": "{username} сменил отображаемое имя канала с {old} на {new}", "api.channel.post_update_channel_displayname_message_and_forget.updated_from": "{username} сменил отображаемое имя канала с {old} на {new}",
@@ -1003,24 +1005,24 @@
"audit_table.attemptedWebhookDelete": "Попытка удаления вебхука", "audit_table.attemptedWebhookDelete": "Попытка удаления вебхука",
"audit_table.by": " пользователем {username}", "audit_table.by": " пользователем {username}",
"audit_table.byAdmin": " админом", "audit_table.byAdmin": " админом",
"audit_table.channelCreated": "Создан канал/группа {channelName}", "audit_table.channelCreated": "Создан канал {channelName}",
"audit_table.channelDeleted": "Удален канал/группа с URL {url}", "audit_table.channelDeleted": "Удален канал с URL {url}",
"audit_table.establishedDM": "Установлен канал прямого обмена сообщениями с {username}", "audit_table.establishedDM": "Установлен канал прямого обмена сообщениями с {username}",
"audit_table.failedExpiredLicenseAdd": "Ошибка добавления новой лицензии потому что она закончилась или ещё не началась.", "audit_table.failedExpiredLicenseAdd": "Ошибка добавления новой лицензии потому что она закончилась или ещё не началась.",
"audit_table.failedInvalidLicenseAdd": "Не удалось добавить недействительную лицензию", "audit_table.failedInvalidLicenseAdd": "Не удалось добавить недействительную лицензию",
"audit_table.failedLogin": "Неудачная попытка входа", "audit_table.failedLogin": "Неудачная попытка входа",
"audit_table.failedOAuthAccess": "Failed to allow a new OAuth service access - the redirect URI did not match the previously registered callback", "audit_table.failedOAuthAccess": "Failed to allow a new OAuth service access - the redirect URI did not match the previously registered callback",
"audit_table.failedPassword": "Failed to change password - tried to update user password who was logged in through oauth", "audit_table.failedPassword": "Не удалось изменить пароль - попытка обновления пользователя, вошедшего в систему с помощью OAuth",
"audit_table.failedWebhookCreate": "Failed to create a webhook - bad channel permissions", "audit_table.failedWebhookCreate": "Failed to create a webhook - bad channel permissions",
"audit_table.failedWebhookDelete": "Сбой при удалении вебхука - несоответствующие условия", "audit_table.failedWebhookDelete": "Сбой при удалении вебхука - несоответствующие условия",
"audit_table.headerUpdated": "Обновлен заголовок канала/группы {channelName}", "audit_table.headerUpdated": "Обновлен заголовок канала {channelName}",
"audit_table.ip": "IP-адрес", "audit_table.ip": "IP-адрес",
"audit_table.licenseRemoved": "Лицензия успешно удалена", "audit_table.licenseRemoved": "Лицензия успешно удалена",
"audit_table.loginAttempt": " (Попытка входа)", "audit_table.loginAttempt": " (Попытка входа)",
"audit_table.loginFailure": " (Ошибка входа)", "audit_table.loginFailure": " (Ошибка входа)",
"audit_table.logout": "Вы успешно вышли из своего аккаунта", "audit_table.logout": "Вы успешно вышли из своего аккаунта",
"audit_table.member": "участник", "audit_table.member": "участник",
"audit_table.nameUpdated": "Обновлено имя канала/группы {channelName}", "audit_table.nameUpdated": "Обновлено имя канала {channelName}",
"audit_table.oauthTokenFailed": "Failed to get an OAuth access token - {token}", "audit_table.oauthTokenFailed": "Failed to get an OAuth access token - {token}",
"audit_table.revokedAll": "Завершены все сессии для этой команды", "audit_table.revokedAll": "Завершены все сессии для этой команды",
"audit_table.sentEmail": "На {email} отправлено сообщение для сброса пароля", "audit_table.sentEmail": "На {email} отправлено сообщение для сброса пароля",
@@ -1039,9 +1041,9 @@
"audit_table.updateGlobalNotifications": "Настройки глобальных уведомлений обновлены", "audit_table.updateGlobalNotifications": "Настройки глобальных уведомлений обновлены",
"audit_table.updatePicture": "Изображение вашего профиля обновлено", "audit_table.updatePicture": "Изображение вашего профиля обновлено",
"audit_table.updatedRol": "Роль пользователя обновлена на ", "audit_table.updatedRol": "Роль пользователя обновлена на ",
"audit_table.userAdded": "Добавлен пользователь {username} в канал/группу {channelName}", "audit_table.userAdded": "Добавлен пользователь {username} в канал {channelName}",
"audit_table.userId": "ID пользователя", "audit_table.userId": "ID пользователя",
"audit_table.userRemoved": "Удален пользователь {username} из канала/группы {channelName}", "audit_table.userRemoved": "Удален пользователь {username} из канала {channelName}",
"audit_table.verified": "Адрес электронной почты подтвержден", "audit_table.verified": "Адрес электронной почты подтвержден",
"authorize.access": "Предоставить <strong>{appName}</strong> доступ?", "authorize.access": "Предоставить <strong>{appName}</strong> доступ?",
"authorize.allow": "Разрешить", "authorize.allow": "Разрешить",
@@ -1059,11 +1061,11 @@
"calling_screen": "Вызов", "calling_screen": "Вызов",
"center_panel.recent": "Нажмите здесь, чтобы перейти к последнему сообщению. ", "center_panel.recent": "Нажмите здесь, чтобы перейти к последнему сообщению. ",
"change_url.close": "Закрыть", "change_url.close": "Закрыть",
"change_url.endWithLetter": "Должен заканчиваться буквой или цифрой", "change_url.endWithLetter": "URL должен заканчиваться буквой или цифрой.",
"change_url.invalidUrl": "Некорректный URL", "change_url.invalidUrl": "Некорректный URL",
"change_url.longer": "Ссылка должна быть от двух символов длиной.", "change_url.longer": "Ссылка должна быть от двух символов длиной.",
"change_url.noUnderscore": "Не может содержать два подчеркивания подряд.", "change_url.noUnderscore": "URL не может содержать два подчеркивания подряд.",
"change_url.startWithLetter": "Должен начинаться с буквы или цифры", "change_url.startWithLetter": "URL должен начинаться с буквы или цифры",
"change_url.urlLabel": "Channel URL", "change_url.urlLabel": "Channel URL",
"channelHeader.addToFavorites": "Добавить в избранное", "channelHeader.addToFavorites": "Добавить в избранное",
"channelHeader.removeFromFavorites": "Удалить из избранного", "channelHeader.removeFromFavorites": "Удалить из избранного",
@@ -1077,7 +1079,7 @@
"channel_header.addMembers": "Добавить участников", "channel_header.addMembers": "Добавить участников",
"channel_header.addToFavorites": "Добавить в избранное", "channel_header.addToFavorites": "Добавить в избранное",
"channel_header.channelHeader": "Изменить заголовок канала", "channel_header.channelHeader": "Изменить заголовок канала",
"channel_header.delete": "Удалить канал...", "channel_header.delete": "Удалить канал",
"channel_header.flagged": "Отмеченные сообщения", "channel_header.flagged": "Отмеченные сообщения",
"channel_header.leave": "Покинуть Канал", "channel_header.leave": "Покинуть Канал",
"channel_header.manageMembers": "Управление участниками", "channel_header.manageMembers": "Управление участниками",
@@ -1132,7 +1134,7 @@
"channel_modal.name": "Имя", "channel_modal.name": "Имя",
"channel_modal.nameEx": "Например: \"Bugs\", \"Маркетинг\", \"客户支持\"", "channel_modal.nameEx": "Например: \"Bugs\", \"Маркетинг\", \"客户支持\"",
"channel_modal.optional": "(необязательно)", "channel_modal.optional": "(необязательно)",
"channel_modal.privateGroup1": "Создать новую приватную группу с ограниченным доступом. ", "channel_modal.privateGroup1": "Создать новый приватный канал с ограниченным доступом. ",
"channel_modal.privateGroup2": "Создать личный канал", "channel_modal.privateGroup2": "Создать личный канал",
"channel_modal.publicChannel1": "Создать общедоступный канал", "channel_modal.publicChannel1": "Создать общедоступный канал",
"channel_modal.publicChannel2": "Создать новый публичный канал. ", "channel_modal.publicChannel2": "Создать новый публичный канал. ",
@@ -1295,7 +1297,7 @@
"emoji_picker.activity": "Активность", "emoji_picker.activity": "Активность",
"emoji_picker.custom": "Custom", "emoji_picker.custom": "Custom",
"emoji_picker.emojiPicker": "Выбор эмодзи", "emoji_picker.emojiPicker": "Выбор эмодзи",
"emoji_picker.flags": "Отметить", "emoji_picker.flags": "Флаги",
"emoji_picker.food": "Еда", "emoji_picker.food": "Еда",
"emoji_picker.nature": "Природа", "emoji_picker.nature": "Природа",
"emoji_picker.objects": "Объекты", "emoji_picker.objects": "Объекты",
@@ -1322,6 +1324,7 @@
"file_attachment.download": "Скачать", "file_attachment.download": "Скачать",
"file_info_preview.size": "Размер ", "file_info_preview.size": "Размер ",
"file_info_preview.type": "Тип файла ", "file_info_preview.type": "Тип файла ",
"file_upload.disabled": "File attachments are disabled.",
"file_upload.fileAbove": "Нельзя загрузить файл больше {max}МБ: {filename}", "file_upload.fileAbove": "Нельзя загрузить файл больше {max}МБ: {filename}",
"file_upload.filesAbove": "Нельзя загрузить файлы больше {max}МБ: {filenames}", "file_upload.filesAbove": "Нельзя загрузить файлы больше {max}МБ: {filenames}",
"file_upload.limited": "Загрузка ограничена максимум {count} файлами(ом). Пожалуйста используйте дополнительные сообщения для отправки большего количества.more files.", "file_upload.limited": "Загрузка ограничена максимум {count} файлами(ом). Пожалуйста используйте дополнительные сообщения для отправки большего количества.more files.",
@@ -1701,7 +1704,7 @@
"mobile.file_upload.camera": "Take Photo or Video", "mobile.file_upload.camera": "Take Photo or Video",
"mobile.file_upload.library": "Photo Library", "mobile.file_upload.library": "Photo Library",
"mobile.file_upload.more": "Еще", "mobile.file_upload.more": "Еще",
"mobile.intro_messages.DM": "Начало истории личных сообщений с {teammate}.<br />Личные сообщения и файлы доступны здесь и не видны за пределами этой области.", "mobile.intro_messages.DM": "Начало истории личных сообщений с {teammate}. Личные сообщения и файлы доступны здесь и не видны за пределами этой области.",
"mobile.intro_messages.default_message": "This is the first channel teammates see when they sign up - use it for posting updates everyone needs to know.", "mobile.intro_messages.default_message": "This is the first channel teammates see when they sign up - use it for posting updates everyone needs to know.",
"mobile.intro_messages.default_welcome": "Welcome to {name}!", "mobile.intro_messages.default_welcome": "Welcome to {name}!",
"mobile.loading_channels": "Loading Channels...", "mobile.loading_channels": "Loading Channels...",
@@ -1761,7 +1764,7 @@
"multiselect.add": "Добавить", "multiselect.add": "Добавить",
"multiselect.go": "Go", "multiselect.go": "Go",
"multiselect.instructions": "Используйте клавиши вверх/вниз и enter для выбора.", "multiselect.instructions": "Используйте клавиши вверх/вниз и enter для выбора.",
"multiselect.numPeopleRemaining": "You can add {num, number} more {num, plural, =0 {people} one {person} other {people}}. ", "multiselect.numPeopleRemaining": "Вы можете добавить ещё {num, number} {num, plural, =0 {людей} one {человека} few {человека} other {людей}}.",
"multiselect.numRemaining": "You can add {num, number} more", "multiselect.numRemaining": "You can add {num, number} more",
"multiselect.placeholder": "Search and add members", "multiselect.placeholder": "Search and add members",
"navbar.addMembers": "Добавить участников", "navbar.addMembers": "Добавить участников",
@@ -1788,6 +1791,7 @@
"navbar_dropdown.integrations": "Интеграция", "navbar_dropdown.integrations": "Интеграция",
"navbar_dropdown.inviteMember": "Send Email Invite", "navbar_dropdown.inviteMember": "Send Email Invite",
"navbar_dropdown.join": "Присоединиться к другой команде", "navbar_dropdown.join": "Присоединиться к другой команде",
"navbar_dropdown.keyboardShortcuts": "Keyboard Shortcuts",
"navbar_dropdown.leave": "Уйти из команды", "navbar_dropdown.leave": "Уйти из команды",
"navbar_dropdown.logout": "Выйти", "navbar_dropdown.logout": "Выйти",
"navbar_dropdown.manageMembers": "Участники", "navbar_dropdown.manageMembers": "Участники",
@@ -1878,6 +1882,7 @@
"rhs_comment.permalink": "Постоянная ссылка", "rhs_comment.permalink": "Постоянная ссылка",
"rhs_header.backToCallTooltip": "Обратно к вызову", "rhs_header.backToCallTooltip": "Обратно к вызову",
"rhs_header.backToFlaggedTooltip": "Вернуться к отмеченным сообщениям", "rhs_header.backToFlaggedTooltip": "Вернуться к отмеченным сообщениям",
"rhs_header.backToPinnedTooltip": "Вернуться к отмеченным сообщениям",
"rhs_header.backToResultsTooltip": "Назад к результатам поиска", "rhs_header.backToResultsTooltip": "Назад к результатам поиска",
"rhs_header.closeSidebarTooltip": "Закрыть боковую панель", "rhs_header.closeSidebarTooltip": "Закрыть боковую панель",
"rhs_header.closeTooltip": "Закрыть боковую панель", "rhs_header.closeTooltip": "Закрыть боковую панель",

Просмотреть файл

@@ -300,6 +300,8 @@
"admin.email.smtpUsernameTitle": "SMTP服务器用户名", "admin.email.smtpUsernameTitle": "SMTP服务器用户名",
"admin.email.testing": "测试中...", "admin.email.testing": "测试中...",
"admin.false": "否", "admin.false": "否",
"admin.file.enableFileAttachments": "开启文件附件:",
"admin.file.enableFileAttachmentsDesc": "当设为否时,消息里上传文件和图片将被禁用。",
"admin.file_upload.chooseFile": "选择文件", "admin.file_upload.chooseFile": "选择文件",
"admin.file_upload.noFile": "没有上传文件", "admin.file_upload.noFile": "没有上传文件",
"admin.file_upload.uploadFile": "上传", "admin.file_upload.uploadFile": "上传",
@@ -628,7 +630,7 @@
"admin.saml.emailAttrTitle": "邮箱属性:", "admin.saml.emailAttrTitle": "邮箱属性:",
"admin.saml.enableDescription": "当设为是时Mattermost允许通过SAML登陆。请参考<a href='http://docs.mattermost.com/deployment/sso-saml.html' target='_blank'>文档</a>了解Mattermost配置SAML。", "admin.saml.enableDescription": "当设为是时Mattermost允许通过SAML登陆。请参考<a href='http://docs.mattermost.com/deployment/sso-saml.html' target='_blank'>文档</a>了解Mattermost配置SAML。",
"admin.saml.enableTitle": "开启SAML登入", "admin.saml.enableTitle": "开启SAML登入",
"admin.saml.encryptDescription": "当设置为是时Mattermost 将会使用您的服务提供商证书来解密SAML断言。", "admin.saml.encryptDescription": "When false, Mattermost will not decrypt SAML Assertions encrypted with your Service Provider Public Certificate. Not recommended for production environments. For testing only.",
"admin.saml.encryptTitle": "开启加密:", "admin.saml.encryptTitle": "开启加密:",
"admin.saml.firstnameAttrDesc": "(可选) 使用SAML断言中的属性做为 Mattermost 中用户的昵称。", "admin.saml.firstnameAttrDesc": "(可选) 使用SAML断言中的属性做为 Mattermost 中用户的昵称。",
"admin.saml.firstnameAttrEx": "例如 \"FirstName\"", "admin.saml.firstnameAttrEx": "例如 \"FirstName\"",
@@ -673,7 +675,7 @@
"admin.saml.usernameAttrDesc": "使用SAML断言中的属性做为Mattermost中用户的用户名。", "admin.saml.usernameAttrDesc": "使用SAML断言中的属性做为Mattermost中用户的用户名。",
"admin.saml.usernameAttrEx": "例如 \"Username\"", "admin.saml.usernameAttrEx": "例如 \"Username\"",
"admin.saml.usernameAttrTitle": "用户名:", "admin.saml.usernameAttrTitle": "用户名:",
"admin.saml.verifyDescription": "设为是时Mattermost会核实SAML回复签字与服务提供商登入网址一致", "admin.saml.verifyDescription": "When false, Mattermost will not verify that the signature sent from a SAML Response matches the Service Provider Login URL. Not recommended for production environments. For testing only.",
"admin.saml.verifyTitle": "校验签名:", "admin.saml.verifyTitle": "校验签名:",
"admin.save": "保存", "admin.save": "保存",
"admin.saving": "保存配置中...", "admin.saving": "保存配置中...",
@@ -1307,7 +1309,7 @@
"error.local_storage.help1": "开启 cookies", "error.local_storage.help1": "开启 cookies",
"error.local_storage.help2": "Turn off private browsing", "error.local_storage.help2": "Turn off private browsing",
"error.local_storage.help3": "使用一个支持的浏览器 (IE 11, Chrome 43+, Firefox 38+, Safari 9, Edge)", "error.local_storage.help3": "使用一个支持的浏览器 (IE 11, Chrome 43+, Firefox 38+, Safari 9, Edge)",
"error.local_storage.message": "Mattermost was unable to load because a setting in your browser prevents the use of its local storage features. To allow Mattermost to load, try the following actions:", "error.local_storage.message": "Mattermost 无法加载因为您的浏览器设置禁止使用本地储存功能。请尝试以下操作以让 Mattermost 加载:",
"error.not_found.link_message": "返回Mattermost", "error.not_found.link_message": "返回Mattermost",
"error.not_found.message": "您访问的页面不存在", "error.not_found.message": "您访问的页面不存在",
"error.not_found.title": "页面未找到", "error.not_found.title": "页面未找到",
@@ -1322,6 +1324,7 @@
"file_attachment.download": "下载", "file_attachment.download": "下载",
"file_info_preview.size": "大小", "file_info_preview.size": "大小",
"file_info_preview.type": "文件类型", "file_info_preview.type": "文件类型",
"file_upload.disabled": "文件附件已禁用。",
"file_upload.fileAbove": "文件超过{max}MB不能被上传{filename}", "file_upload.fileAbove": "文件超过{max}MB不能被上传{filename}",
"file_upload.filesAbove": "文件超过{max}MB不能被上传{filenames}", "file_upload.filesAbove": "文件超过{max}MB不能被上传{filenames}",
"file_upload.limited": "最大上传文件数限制为 {count}。请使用新信息来上传更多文件。", "file_upload.limited": "最大上传文件数限制为 {count}。请使用新信息来上传更多文件。",
@@ -1587,9 +1590,9 @@
"ldap_signup.length_error": "名称必须为3至15个字母", "ldap_signup.length_error": "名称必须为3至15个字母",
"ldap_signup.teamName": "输入新团队名", "ldap_signup.teamName": "输入新团队名",
"ldap_signup.team_error": "请输入团队名", "ldap_signup.team_error": "请输入团队名",
"leave_private_channel_modal.leave": "Yes, leave channel", "leave_private_channel_modal.leave": "是的,离开频道",
"leave_private_channel_modal.message": "Are you sure you wish to leave the private channel {channel}? You must be re-invited in order to re-join this channel in the future.", "leave_private_channel_modal.message": "您确定要离开私有频道 {channel} 吗?您今后需要重新被邀请才能再次加入此频道。",
"leave_private_channel_modal.title": "Leave Private Channel {channel}", "leave_private_channel_modal.title": "离开私有频道 {channel}",
"leave_team_modal.desc": "您将会从所有公共频道和私有频道移除。如果团队是私有的,您将无法再加入。您确定吗?", "leave_team_modal.desc": "您将会从所有公共频道和私有频道移除。如果团队是私有的,您将无法再加入。您确定吗?",
"leave_team_modal.no": "否", "leave_team_modal.no": "否",
"leave_team_modal.title": "退出团队?", "leave_team_modal.title": "退出团队?",
@@ -1714,9 +1717,9 @@
"mobile.post.cancel": "取消", "mobile.post.cancel": "取消",
"mobile.post.delete_question": "您确认要删除此消息?", "mobile.post.delete_question": "您确认要删除此消息?",
"mobile.post.delete_title": "删除消息", "mobile.post.delete_title": "删除消息",
"mobile.post.failed_delete": "Delete Message", "mobile.post.failed_delete": "删除消息",
"mobile.post.failed_retry": "Try Again", "mobile.post.failed_retry": "重试",
"mobile.post.failed_title": "Unable to send your message", "mobile.post.failed_title": "无法发送您的消息",
"mobile.post.retry": "刷新", "mobile.post.retry": "刷新",
"mobile.request.invalid_response": "从服务器收到了无效回应。", "mobile.request.invalid_response": "从服务器收到了无效回应。",
"mobile.routes.channelInfo": "信息", "mobile.routes.channelInfo": "信息",
@@ -1788,6 +1791,7 @@
"navbar_dropdown.integrations": "集成", "navbar_dropdown.integrations": "集成",
"navbar_dropdown.inviteMember": "发送电子邮件邀请", "navbar_dropdown.inviteMember": "发送电子邮件邀请",
"navbar_dropdown.join": "加入另一个团队", "navbar_dropdown.join": "加入另一个团队",
"navbar_dropdown.keyboardShortcuts": "键盘快捷键",
"navbar_dropdown.leave": "离开团队", "navbar_dropdown.leave": "离开团队",
"navbar_dropdown.logout": "注销", "navbar_dropdown.logout": "注销",
"navbar_dropdown.manageMembers": "成员管理", "navbar_dropdown.manageMembers": "成员管理",
@@ -1878,6 +1882,7 @@
"rhs_comment.permalink": "永久链接", "rhs_comment.permalink": "永久链接",
"rhs_header.backToCallTooltip": "回到通话", "rhs_header.backToCallTooltip": "回到通话",
"rhs_header.backToFlaggedTooltip": "回到已标记的信息", "rhs_header.backToFlaggedTooltip": "回到已标记的信息",
"rhs_header.backToPinnedTooltip": "回到已标记的信息",
"rhs_header.backToResultsTooltip": "回到搜索结果", "rhs_header.backToResultsTooltip": "回到搜索结果",
"rhs_header.closeSidebarTooltip": "关闭侧栏", "rhs_header.closeSidebarTooltip": "关闭侧栏",
"rhs_header.closeTooltip": "关闭侧栏", "rhs_header.closeTooltip": "关闭侧栏",
@@ -2003,7 +2008,7 @@
"sso_signup.length_error": "团队名必须为3-15个字母", "sso_signup.length_error": "团队名必须为3-15个字母",
"sso_signup.teamName": "输入新团队名", "sso_signup.teamName": "输入新团队名",
"sso_signup.team_error": "输入团队名", "sso_signup.team_error": "输入团队名",
"suggestion.mention.all": "CAUTION: This mentions everyone in channel", "suggestion.mention.all": "注意:这将提及此频道所有人",
"suggestion.mention.channel": "通知每个频道", "suggestion.mention.channel": "通知每个频道",
"suggestion.mention.channels": "我的频道", "suggestion.mention.channels": "我的频道",
"suggestion.mention.here": "通知所有在此频道在线的人", "suggestion.mention.here": "通知所有在此频道在线的人",
@@ -2169,7 +2174,7 @@
"user.settings.general.checkEmailNoAddress": "查看你的电子邮件来验证你的新地址", "user.settings.general.checkEmailNoAddress": "查看你的电子邮件来验证你的新地址",
"user.settings.general.close": "关闭", "user.settings.general.close": "关闭",
"user.settings.general.confirmEmail": "确认电子邮件", "user.settings.general.confirmEmail": "确认电子邮件",
"user.settings.general.currentEmail": "Current Email", "user.settings.general.currentEmail": "当前邮箱地址",
"user.settings.general.email": "电子邮件", "user.settings.general.email": "电子邮件",
"user.settings.general.emailGitlabCantUpdate": "通过GitLab进行登录。电子邮件不能被更新用于通知的电子邮件地址是{email}。", "user.settings.general.emailGitlabCantUpdate": "通过GitLab进行登录。电子邮件不能被更新用于通知的电子邮件地址是{email}。",
"user.settings.general.emailGoogleCantUpdate": "通过Google进行登录。电子邮件不能被更新。用于通知的电子邮件地址是{email}。", "user.settings.general.emailGoogleCantUpdate": "通过Google进行登录。电子邮件不能被更新。用于通知的电子邮件地址是{email}。",
@@ -2197,7 +2202,7 @@
"user.settings.general.loginOffice365": "通过Office 365({email})登录", "user.settings.general.loginOffice365": "通过Office 365({email})登录",
"user.settings.general.loginSaml": "通过SAML ({email}) 登录", "user.settings.general.loginSaml": "通过SAML ({email}) 登录",
"user.settings.general.newAddress": "新地址:{email}<br/>查看您的邮箱来验证上面的地址。", "user.settings.general.newAddress": "新地址:{email}<br/>查看您的邮箱来验证上面的地址。",
"user.settings.general.newEmail": "New Email", "user.settings.general.newEmail": "新建邮箱地址",
"user.settings.general.nickname": "昵称", "user.settings.general.nickname": "昵称",
"user.settings.general.nicknameExtra": "使用一个您可能会称呼的与您的名字和用户名不同的昵称作为名字。此方法最常用于两个或多个人有类似的名字和用户名时。", "user.settings.general.nicknameExtra": "使用一个您可能会称呼的与您的名字和用户名不同的昵称作为名字。此方法最常用于两个或多个人有类似的名字和用户名时。",
"user.settings.general.notificationsExtra": "默认情况下,当有人输入您的名字时,您将收到提及通知。您可在{notify}设置中更改此默认设置。", "user.settings.general.notificationsExtra": "默认情况下,当有人输入您的名字时,您将收到提及通知。您可在{notify}设置中更改此默认设置。",

Просмотреть файл

@@ -166,7 +166,7 @@
"admin.cluster.status_table.status": "狀態", "admin.cluster.status_table.status": "狀態",
"admin.cluster.status_table.url": "節點間網址", "admin.cluster.status_table.url": "節點間網址",
"admin.cluster.status_table.version": "版本", "admin.cluster.status_table.version": "版本",
"admin.cluster.unknown": "unknown", "admin.cluster.unknown": "不明",
"admin.compliance.directoryDescription": "規範報告的寫入目錄,若空白,則設定為 ./data/。", "admin.compliance.directoryDescription": "規範報告的寫入目錄,若空白,則設定為 ./data/。",
"admin.compliance.directoryExample": "如:\"./data/\"", "admin.compliance.directoryExample": "如:\"./data/\"",
"admin.compliance.directoryTitle": "規範報告目錄:", "admin.compliance.directoryTitle": "規範報告目錄:",
@@ -300,6 +300,8 @@
"admin.email.smtpUsernameTitle": "SMTP 伺服器使用者名稱:", "admin.email.smtpUsernameTitle": "SMTP 伺服器使用者名稱:",
"admin.email.testing": "測試中...", "admin.email.testing": "測試中...",
"admin.false": "否", "admin.false": "否",
"admin.file.enableFileAttachments": "啟用檔案附件:",
"admin.file.enableFileAttachmentsDesc": "停用時,關閉在訊息中上傳檔案及圖像的功能。",
"admin.file_upload.chooseFile": "選擇檔案", "admin.file_upload.chooseFile": "選擇檔案",
"admin.file_upload.noFile": "未上傳任何檔案", "admin.file_upload.noFile": "未上傳任何檔案",
"admin.file_upload.uploadFile": "上傳", "admin.file_upload.uploadFile": "上傳",
@@ -394,7 +396,7 @@
"admin.image.amazonS3RegionExample": "如:\"us-east-1\"", "admin.image.amazonS3RegionExample": "如:\"us-east-1\"",
"admin.image.amazonS3RegionTitle": "Amazon S3 區域:", "admin.image.amazonS3RegionTitle": "Amazon S3 區域:",
"admin.image.amazonS3SSLDescription": "關閉時,允許不安全的連線至 Amazon S3。預設為只允許安全連線。", "admin.image.amazonS3SSLDescription": "關閉時,允許不安全的連線至 Amazon S3。預設為只允許安全連線。",
"admin.image.amazonS3SSLExample": "如:\"title\"", "admin.image.amazonS3SSLExample": "如:\"true\"",
"admin.image.amazonS3SSLTitle": "啟用 Amazon S3 安全連線:", "admin.image.amazonS3SSLTitle": "啟用 Amazon S3 安全連線:",
"admin.image.amazonS3SecretDescription": "從 Amazon EC2 管理員取得認證。", "admin.image.amazonS3SecretDescription": "從 Amazon EC2 管理員取得認證。",
"admin.image.amazonS3SecretExample": "如:\"jcuS8PuvcpGhpgHhlcpT1Mx42pnqMxQY\"", "admin.image.amazonS3SecretExample": "如:\"jcuS8PuvcpGhpgHhlcpT1Mx42pnqMxQY\"",
@@ -532,7 +534,7 @@
"admin.log.locationPlaceholder": "輸入檔案位置", "admin.log.locationPlaceholder": "輸入檔案位置",
"admin.log.locationTitle": "記錄檔案目錄:", "admin.log.locationTitle": "記錄檔案目錄:",
"admin.log.logSettings": "記錄檔設定值", "admin.log.logSettings": "記錄檔設定值",
"admin.logs.bannerDesc": "To look up users by User ID, go to Reporting > Users and paste the ID into the search filter.", "admin.logs.bannerDesc": "前往 報告 > 使用者 並在搜尋過濾條件貼上 ID 以根據使用者 ID 查詢使用者。",
"admin.logs.reload": "重新載入", "admin.logs.reload": "重新載入",
"admin.logs.title": "主機記錄", "admin.logs.title": "主機記錄",
"admin.metrics.enableDescription": "啟用時Mattermost 會啟用效能監視的收集與分析。詳細如何設定 Mattermost 的效能監視,請參閱<a href=\"http://docs.mattermost.com/deployment/metrics.html\" target='_blank'>文件</a>。", "admin.metrics.enableDescription": "啟用時Mattermost 會啟用效能監視的收集與分析。詳細如何設定 Mattermost 的效能監視,請參閱<a href=\"http://docs.mattermost.com/deployment/metrics.html\" target='_blank'>文件</a>。",
@@ -628,7 +630,7 @@
"admin.saml.emailAttrTitle": "電子郵件位址屬性:", "admin.saml.emailAttrTitle": "電子郵件位址屬性:",
"admin.saml.enableDescription": "啟用時Mattermost 允許用 SAML 登入。詳細如何設定 Mattermost 和 SAML請參閱<a href='http://docs.mattermost.com/deployment/sso-saml.html' target='_blank'>文件</a>。", "admin.saml.enableDescription": "啟用時Mattermost 允許用 SAML 登入。詳細如何設定 Mattermost 和 SAML請參閱<a href='http://docs.mattermost.com/deployment/sso-saml.html' target='_blank'>文件</a>。",
"admin.saml.enableTitle": "啟用 SAML 登入:", "admin.saml.enableTitle": "啟用 SAML 登入:",
"admin.saml.encryptDescription": "用時Mattermost 會解密利用您的服務提供者公開憑證加密的 SAML 宣告。", "admin.saml.encryptDescription": "用時Mattermost 將不會解密經由服務提供者公開憑證加密的 SAML 宣告。不建議在正式環境中使用。僅供測試。",
"admin.saml.encryptTitle": "啟用加密:", "admin.saml.encryptTitle": "啟用加密:",
"admin.saml.firstnameAttrDesc": "(非必須) 用於設定 Mattermost 使用者名字的 SAML 宣告屬性。", "admin.saml.firstnameAttrDesc": "(非必須) 用於設定 Mattermost 使用者名字的 SAML 宣告屬性。",
"admin.saml.firstnameAttrEx": "如:\"FirstName\"", "admin.saml.firstnameAttrEx": "如:\"FirstName\"",
@@ -673,7 +675,7 @@
"admin.saml.usernameAttrDesc": "用於設定 Mattermost 使用者名稱的 SAML 宣告屬性。", "admin.saml.usernameAttrDesc": "用於設定 Mattermost 使用者名稱的 SAML 宣告屬性。",
"admin.saml.usernameAttrEx": "如:\"Username\"", "admin.saml.usernameAttrEx": "如:\"Username\"",
"admin.saml.usernameAttrTitle": "使用者名稱的屬性:", "admin.saml.usernameAttrTitle": "使用者名稱的屬性:",
"admin.saml.verifyDescription": "用時Mattermost 會核對 SAML 回應中的簽章跟服務提供者登入網址一致", "admin.saml.verifyDescription": "用時Mattermost 在遇到符合服務提供者登入 URL 的 SAML 回應時將不會驗證當中的簽名 。不建議在正式環境中使用。僅供測試。 ",
"admin.saml.verifyTitle": "核對簽章:", "admin.saml.verifyTitle": "核對簽章:",
"admin.save": "儲存", "admin.save": "儲存",
"admin.saving": "儲存設定...", "admin.saving": "儲存設定...",
@@ -697,7 +699,7 @@
"admin.service.corsDescription": "允許從特定的網域進行 HTTP 跨站請求。輸入\"*\" 開放所有網域的跨站請求,不輸入則不允許任何跨站請求。", "admin.service.corsDescription": "允許從特定的網域進行 HTTP 跨站請求。輸入\"*\" 開放所有網域的跨站請求,不輸入則不允許任何跨站請求。",
"admin.service.corsEx": "http://example.com", "admin.service.corsEx": "http://example.com",
"admin.service.corsTitle": "允許來自下列網址的跨站請求:", "admin.service.corsTitle": "允許來自下列網址的跨站請求:",
"admin.service.developerDesc": "啟用時Javascript 錯誤會顯示在使用者界面頂端上的色橫欄。不建議在正式環境中使用。", "admin.service.developerDesc": "啟用時Javascript 錯誤會顯示在使用者界面頂端上的色橫欄。不建議在正式環境中使用。",
"admin.service.developerTitle": "啟用開發者模式:", "admin.service.developerTitle": "啟用開發者模式:",
"admin.service.enforceMfaDesc": "啟用時,登入必須使用<a href='https://docs.mattermost.com/deployment/auth.html' target='_blank'>多重要素驗證</a>。新的使用者將會在登錄時被要求設定多重要素驗證。已登入但沒有設定多重要素驗證的使用者將會被重新導向至多重要素驗證設定頁面直到完成設定為止。<br/><br/>如果使用了 AD/LDAP 與電子郵件以外的登入方式,多重要素驗證必須要在認證提供者處設定。 ", "admin.service.enforceMfaDesc": "啟用時,登入必須使用<a href='https://docs.mattermost.com/deployment/auth.html' target='_blank'>多重要素驗證</a>。新的使用者將會在登錄時被要求設定多重要素驗證。已登入但沒有設定多重要素驗證的使用者將會被重新導向至多重要素驗證設定頁面直到完成設定為止。<br/><br/>如果使用了 AD/LDAP 與電子郵件以外的登入方式,多重要素驗證必須要在認證提供者處設定。 ",
"admin.service.enforceMfaTitle": "強制使用多重要素驗證:", "admin.service.enforceMfaTitle": "強制使用多重要素驗證:",
@@ -780,7 +782,7 @@
"admin.sidebar.login": "登入", "admin.sidebar.login": "登入",
"admin.sidebar.logs": "記錄", "admin.sidebar.logs": "記錄",
"admin.sidebar.metrics": "效能監視", "admin.sidebar.metrics": "效能監視",
"admin.sidebar.mfa": "MFA", "admin.sidebar.mfa": "多重要素驗證",
"admin.sidebar.nativeAppLinks": "Mattermost 應用程式連結", "admin.sidebar.nativeAppLinks": "Mattermost 應用程式連結",
"admin.sidebar.notifications": "通知", "admin.sidebar.notifications": "通知",
"admin.sidebar.oauth": "OAuth 2.0", "admin.sidebar.oauth": "OAuth 2.0",
@@ -841,8 +843,8 @@
"admin.system_analytics.title": "系統", "admin.system_analytics.title": "系統",
"admin.system_analytics.totalPosts": "全部發文", "admin.system_analytics.totalPosts": "全部發文",
"admin.system_users.allUsers": "所有使用者", "admin.system_users.allUsers": "所有使用者",
"admin.system_users.noTeams": "No Teams", "admin.system_users.noTeams": "沒有團隊",
"admin.system_users.title": "{siteName} Users", "admin.system_users.title": "{siteName} 使用者",
"admin.team.brandDesc": "啟動自訂品牌,下面上傳的圖片跟寫下的文字會顯示在登入頁面。", "admin.team.brandDesc": "啟動自訂品牌,下面上傳的圖片跟寫下的文字會顯示在登入頁面。",
"admin.team.brandDescriptionExample": "團隊溝通皆在同處,隨時隨地皆可搜尋與存取。", "admin.team.brandDescriptionExample": "團隊溝通皆在同處,隨時隨地皆可搜尋與存取。",
"admin.team.brandDescriptionHelp": "登入畫面跟使用者界面上顯示的服務描述。當沒有設定時將會顯示 \"團隊溝通皆在同處,隨時隨地皆可搜尋與存取。\"。", "admin.team.brandDescriptionHelp": "登入畫面跟使用者界面上顯示的服務描述。當沒有設定時將會顯示 \"團隊溝通皆在同處,隨時隨地皆可搜尋與存取。\"。",
@@ -898,7 +900,7 @@
"admin.user_item.emailTitle": "<strong>電子郵件:</strong> {email}", "admin.user_item.emailTitle": "<strong>電子郵件:</strong> {email}",
"admin.user_item.inactive": "停用", "admin.user_item.inactive": "停用",
"admin.user_item.makeActive": "啟用", "admin.user_item.makeActive": "啟用",
"admin.user_item.makeInactive": "Deactivate", "admin.user_item.makeInactive": "停用",
"admin.user_item.makeMember": "設為成員", "admin.user_item.makeMember": "設為成員",
"admin.user_item.makeSysAdmin": "設為系統管理員", "admin.user_item.makeSysAdmin": "設為系統管理員",
"admin.user_item.makeTeamAdmin": "設為團隊管理員", "admin.user_item.makeTeamAdmin": "設為團隊管理員",
@@ -969,7 +971,7 @@
"analytics.system.totalWebsockets": "Websocket 連線", "analytics.system.totalWebsockets": "Websocket 連線",
"analytics.team.activeUsers": "有發文的活躍使用者", "analytics.team.activeUsers": "有發文的活躍使用者",
"analytics.team.newlyCreated": "新建的使用者", "analytics.team.newlyCreated": "新建的使用者",
"analytics.team.noTeams": "There are no teams on this server for which to view statistics.", "analytics.team.noTeams": "此伺服器沒有團隊可以觀看統計資料。",
"analytics.team.privateGroups": "私人頻道", "analytics.team.privateGroups": "私人頻道",
"analytics.team.publicChannels": "公開頻道", "analytics.team.publicChannels": "公開頻道",
"analytics.team.recentActive": "最近的活躍使用者", "analytics.team.recentActive": "最近的活躍使用者",
@@ -989,8 +991,8 @@
"app.channel.post_update_channel_purpose_message.removed": "{username} 已移除頻道用途(原為:{old})", "app.channel.post_update_channel_purpose_message.removed": "{username} 已移除頻道用途(原為:{old})",
"app.channel.post_update_channel_purpose_message.updated_from": "{username} 已更新頻道用途:從 {old} 改為 {new}", "app.channel.post_update_channel_purpose_message.updated_from": "{username} 已更新頻道用途:從 {old} 改為 {new}",
"app.channel.post_update_channel_purpose_message.updated_to": "{username} 已更新頻道用途為:{new}", "app.channel.post_update_channel_purpose_message.updated_to": "{username} 已更新頻道用途為:{new}",
"audit_table.accountActive": "Account activated", "audit_table.accountActive": "帳號已啟動",
"audit_table.accountInactive": "Account deactivated", "audit_table.accountInactive": "帳號已停用",
"audit_table.action": "動作", "audit_table.action": "動作",
"audit_table.attemptedAllowOAuthAccess": "嘗試允許新的 OAuth 服務存取", "audit_table.attemptedAllowOAuthAccess": "嘗試允許新的 OAuth 服務存取",
"audit_table.attemptedLicenseAdd": "嘗試加入新的授權", "audit_table.attemptedLicenseAdd": "嘗試加入新的授權",
@@ -1064,7 +1066,7 @@
"change_url.longer": "網址必須為兩個或兩個以上的字元", "change_url.longer": "網址必須為兩個或兩個以上的字元",
"change_url.noUnderscore": "網址不能包含兩個連續的底線", "change_url.noUnderscore": "網址不能包含兩個連續的底線",
"change_url.startWithLetter": "網址必須以字元或數字開頭", "change_url.startWithLetter": "網址必須以字元或數字開頭",
"change_url.urlLabel": "頻道網址:", "change_url.urlLabel": "頻道網址",
"channelHeader.addToFavorites": "新增至我的最愛", "channelHeader.addToFavorites": "新增至我的最愛",
"channelHeader.removeFromFavorites": "從我的最愛中移除", "channelHeader.removeFromFavorites": "從我的最愛中移除",
"channel_flow.alreadyExist": "該網址的頻道已經存在", "channel_flow.alreadyExist": "該網址的頻道已經存在",
@@ -1232,9 +1234,9 @@
"custom_emoji.header": "自訂繪文字", "custom_emoji.header": "自訂繪文字",
"custom_emoji.search": "搜尋自訂繪文字", "custom_emoji.search": "搜尋自訂繪文字",
"deactivate_member_modal.cancel": "取消", "deactivate_member_modal.cancel": "取消",
"deactivate_member_modal.deactivate": "Deactivate", "deactivate_member_modal.deactivate": "停用",
"deactivate_member_modal.desc": "This action deactivates {username}. They will be logged out and not have access to any teams or channels on this system. Are you sure you want to deactivate {username}?", "deactivate_member_modal.desc": "將會停用 {username}。他們將會被登出並且不再有權限存取此伺服氣上的任何頻道或團隊。請確認要停用 {username}",
"deactivate_member_modal.title": "Deactivate {username}", "deactivate_member_modal.title": "停用 {username}",
"default_channel.purpose": "在此張貼希望所有人都可以看到的訊息。每個人在加入團隊的時候會自動成為此頻道的永久成員。", "default_channel.purpose": "在此張貼希望所有人都可以看到的訊息。每個人在加入團隊的時候會自動成為此頻道的永久成員。",
"delete_channel.cancel": "取消", "delete_channel.cancel": "取消",
"delete_channel.confirm": "請確認刪除頻道", "delete_channel.confirm": "請確認刪除頻道",
@@ -1253,7 +1255,7 @@
"edit_channel_header_modal.save": "儲存", "edit_channel_header_modal.save": "儲存",
"edit_channel_header_modal.title": "修改{channel}的標題", "edit_channel_header_modal.title": "修改{channel}的標題",
"edit_channel_header_modal.title_dm": "修改標題", "edit_channel_header_modal.title_dm": "修改標題",
"edit_channel_private_purpose_modal.body": "This text appears in the \"View Info\" modal of the private channel.", "edit_channel_private_purpose_modal.body": "此文字將出現在私人頻道的檢視資訊對話框當中。",
"edit_channel_purpose_modal.body": "描述頻道的用途。這敘述會顯示在頻道列表的\"更多...\"選單當中,其他人可以以此決定要不要加入。", "edit_channel_purpose_modal.body": "描述頻道的用途。這敘述會顯示在頻道列表的\"更多...\"選單當中,其他人可以以此決定要不要加入。",
"edit_channel_purpose_modal.cancel": "取消", "edit_channel_purpose_modal.cancel": "取消",
"edit_channel_purpose_modal.error": "頻道用途太長,請長話短說", "edit_channel_purpose_modal.error": "頻道用途太長,請長話短說",
@@ -1304,10 +1306,10 @@
"emoji_picker.search": "搜尋", "emoji_picker.search": "搜尋",
"emoji_picker.symbols": "符號", "emoji_picker.symbols": "符號",
"emoji_picker.travel": "旅遊", "emoji_picker.travel": "旅遊",
"error.local_storage.help1": "Enable cookies", "error.local_storage.help1": "啟用 Cookies",
"error.local_storage.help2": "Turn off private browsing", "error.local_storage.help2": "關閉隱私瀏覽",
"error.local_storage.help3": "Use a supported browser (IE 11, Chrome 43+, Firefox 38+, Safari 9, Edge)", "error.local_storage.help3": "使用支援的瀏覽器 (IE 11, Chrome 43+, Firefox 38+, Safari 9, Edge)",
"error.local_storage.message": "Mattermost was unable to load because a setting in your browser prevents the use of its local storage features. To allow Mattermost to load, try the following actions:", "error.local_storage.message": "無法載入 Mattermost,您的瀏覽器有設定阻止使用 local storage 功能。請嘗試下列動作以讓 Mattermost 載入:",
"error.not_found.link_message": "回到 Mattermost", "error.not_found.link_message": "回到 Mattermost",
"error.not_found.message": "您所存取的頁面不存在", "error.not_found.message": "您所存取的頁面不存在",
"error.not_found.title": "找不到頁面", "error.not_found.title": "找不到頁面",
@@ -1315,13 +1317,14 @@
"error_bar.expiring": "企業版授權將於{date}過期。<a href='{link}' target='_blank'>請由此更新。</a>", "error_bar.expiring": "企業版授權將於{date}過期。<a href='{link}' target='_blank'>請由此更新。</a>",
"error_bar.past_grace": "企業版授權已過期,某些功能已被關閉。詳請聯絡系統管理員。", "error_bar.past_grace": "企業版授權已過期,某些功能已被關閉。詳請聯絡系統管理員。",
"error_bar.preview_mode": "預覽模式:電子郵件通知尚未設定", "error_bar.preview_mode": "預覽模式:電子郵件通知尚未設定",
"error_bar.site_url": "Please configure your {docsLink} in the {link}.", "error_bar.site_url": "請在 {link} 設定 {docsLink}。",
"error_bar.site_url.docsLink": "站台網址", "error_bar.site_url.docsLink": "站台網址",
"error_bar.site_url.link": "系統控制台", "error_bar.site_url.link": "系統控制台",
"error_bar.site_url_gitlab": "Please configure your {docsLink} in the System Console or in gitlab.rb if you're using GitLab Mattermost.", "error_bar.site_url_gitlab": "請在系統控制台設定 {docsLink};如果使用的是 GitLab Mattermost 請在 gitlab.rb 設定。",
"file_attachment.download": "下載", "file_attachment.download": "下載",
"file_info_preview.size": "大小 ", "file_info_preview.size": "大小 ",
"file_info_preview.type": "檔案類型 ", "file_info_preview.type": "檔案類型 ",
"file_upload.disabled": "檔案附件已被停用。",
"file_upload.fileAbove": "無法上傳超過{max}MB 的檔案:{filename}", "file_upload.fileAbove": "無法上傳超過{max}MB 的檔案:{filename}",
"file_upload.filesAbove": "無法上傳超過{max}MB 的檔案:{filenames}", "file_upload.filesAbove": "無法上傳超過{max}MB 的檔案:{filenames}",
"file_upload.limited": "同時只能上傳{count}個檔案。請用新訊息來上傳更多的檔案。", "file_upload.limited": "同時只能上傳{count}個檔案。請用新訊息來上傳更多的檔案。",
@@ -1331,7 +1334,7 @@
"filtered_channels_list.search": "搜尋頻道", "filtered_channels_list.search": "搜尋頻道",
"filtered_user_list.any_team": "所有使用者", "filtered_user_list.any_team": "所有使用者",
"filtered_user_list.count": "{count}位成員", "filtered_user_list.count": "{count}位成員",
"filtered_user_list.countPage": "{total}位中{startCount, number} - {endCount, number}位成員", "filtered_user_list.countPage": "{startCount, number} - {endCount, number}位成員",
"filtered_user_list.countTotal": "{total}位中{count}位成員", "filtered_user_list.countTotal": "{total}位中{count}位成員",
"filtered_user_list.countTotalPage": "{total}位中{startCount, number} - {endCount, number}位成員", "filtered_user_list.countTotalPage": "{total}位中{startCount, number} - {endCount, number}位成員",
"filtered_user_list.member": "成員", "filtered_user_list.member": "成員",
@@ -1549,14 +1552,14 @@
"integrations.outgoingWebhook.title": "傳出的 Webhook", "integrations.outgoingWebhook.title": "傳出的 Webhook",
"integrations.successful": "設定成功", "integrations.successful": "設定成功",
"intro_messages.DM": "這是跟{teammate}之間直接訊息的起頭。<br />直接訊息跟在這邊分享的檔案除了在此處以外的人都看不到。", "intro_messages.DM": "這是跟{teammate}之間直接訊息的起頭。<br />直接訊息跟在這邊分享的檔案除了在此處以外的人都看不到。",
"intro_messages.GM": "這是跟{teammate}之間直接訊息的起頭。<br />直接訊息跟在這邊分享的檔案除了在此處以外的人都看不到。", "intro_messages.GM": "這是跟{names}之間群組訊息的起頭。<br />直接訊息跟在這邊分享的檔案除了在此處以外的人都看不到。",
"intro_messages.anyMember": " 任何成員可以加入並閱讀此頻道。", "intro_messages.anyMember": " 任何成員可以加入並閱讀此頻道。",
"intro_messages.beginning": "{name}的開頭", "intro_messages.beginning": "{name}的開頭",
"intro_messages.channel": "頻道", "intro_messages.channel": "頻道",
"intro_messages.creator": "這是{name}{type}的開頭,由{creator}建立於{date}。", "intro_messages.creator": "這是{name}{type}的開頭,由{creator}建立於{date}。",
"intro_messages.default": "<h4 class=\"channel-intro__title\">{display_name}的開頭</h4><p class=\"channel-intro__content\"><strong>歡迎來到{display_name}</strong><br/><br/>在此張貼希望所有人都可以看到的訊息。每個人在加入團隊的時候會自動成為此頻道的永久成員。</p>", "intro_messages.default": "<h4 class=\"channel-intro__title\">{display_name}的開頭</h4><p class=\"channel-intro__content\"><strong>歡迎來到{display_name}</strong><br/><br/>在此張貼希望所有人都可以看到的訊息。每個人在加入團隊的時候會自動成為此頻道的永久成員。</p>",
"intro_messages.group": "私人頻道", "intro_messages.group": "私人頻道",
"intro_messages.group_message": "這是跟這團隊成員之間直接訊息的起頭。直接訊息跟在這邊分享的檔案除了在此處以外的人都看不到。", "intro_messages.group_message": "這是跟這團隊成員之間群組訊息的起頭。直接訊息跟在這邊分享的檔案除了在此處以外的人都看不到。",
"intro_messages.invite": "邀請他人來此{type}", "intro_messages.invite": "邀請他人來此{type}",
"intro_messages.inviteOthers": "邀請他人來此團隊", "intro_messages.inviteOthers": "邀請他人來此團隊",
"intro_messages.noCreator": "這是{name}{type}的開頭,建立於{date}。", "intro_messages.noCreator": "這是{name}{type}的開頭,建立於{date}。",
@@ -1587,9 +1590,9 @@
"ldap_signup.length_error": "名稱長度為3到15字元", "ldap_signup.length_error": "名稱長度為3到15字元",
"ldap_signup.teamName": "輸入新團隊名稱", "ldap_signup.teamName": "輸入新團隊名稱",
"ldap_signup.team_error": "請輸入團隊名稱", "ldap_signup.team_error": "請輸入團隊名稱",
"leave_private_channel_modal.leave": "Yes, leave channel", "leave_private_channel_modal.leave": "是,離開頻道",
"leave_private_channel_modal.message": "Are you sure you wish to leave the private channel {channel}? You must be re-invited in order to re-join this channel in the future.", "leave_private_channel_modal.message": "請確定要離開私人頻道 {channel} 。如果重新加入此頻道,必須要再次被邀請。",
"leave_private_channel_modal.title": "Leave Private Channel {channel}", "leave_private_channel_modal.title": "離開私人頻道 {channel}",
"leave_team_modal.desc": "將離開所有的公開與私人頻道。如果團隊是私人團隊,將無法重新加入。您確定嘛?", "leave_team_modal.desc": "將離開所有的公開與私人頻道。如果團隊是私人團隊,將無法重新加入。您確定嘛?",
"leave_team_modal.no": "否", "leave_team_modal.no": "否",
"leave_team_modal.title": "離開團隊?", "leave_team_modal.title": "離開團隊?",
@@ -1622,7 +1625,7 @@
"login.or": "或", "login.or": "或",
"login.password": "密碼", "login.password": "密碼",
"login.passwordChanged": " 已成功更新密碼", "login.passwordChanged": " 已成功更新密碼",
"login.placeholderOr": " or ", "login.placeholderOr": " ",
"login.session_expired": " 工作階段已逾期,請重新登入。", "login.session_expired": " 工作階段已逾期,請重新登入。",
"login.signIn": "登入", "login.signIn": "登入",
"login.signInLoading": "登入中...", "login.signInLoading": "登入中...",
@@ -1666,7 +1669,7 @@
"mobile.account_notifications.threads_mentions": "被提及的討論串", "mobile.account_notifications.threads_mentions": "被提及的討論串",
"mobile.account_notifications.threads_start": "我開啟的討論串", "mobile.account_notifications.threads_start": "我開啟的討論串",
"mobile.account_notifications.threads_start_participate": "我開啟或參與的討論串", "mobile.account_notifications.threads_start_participate": "我開啟或參與的討論串",
"mobile.channel_info.alertMessageDeleteChannel": "確定要離開{term} {name} 嘛?", "mobile.channel_info.alertMessageDeleteChannel": "確定要刪除{term} {name} 嘛?",
"mobile.channel_info.alertMessageLeaveChannel": "確定要離開{term} {name} 嘛?", "mobile.channel_info.alertMessageLeaveChannel": "確定要離開{term} {name} 嘛?",
"mobile.channel_info.alertNo": "否", "mobile.channel_info.alertNo": "否",
"mobile.channel_info.alertTitleDeleteChannel": "刪除{term}", "mobile.channel_info.alertTitleDeleteChannel": "刪除{term}",
@@ -1701,23 +1704,23 @@
"mobile.file_upload.camera": "照相或錄影", "mobile.file_upload.camera": "照相或錄影",
"mobile.file_upload.library": "相簿", "mobile.file_upload.library": "相簿",
"mobile.file_upload.more": "更多", "mobile.file_upload.more": "更多",
"mobile.intro_messages.DM": "這是跟{teammate}之間直接訊息的起頭。<br />直接訊息跟在這邊分享的檔案除了在此處以外的人都看不到。", "mobile.intro_messages.DM": "這是跟{teammate}之間直接訊息的起頭。直接訊息跟在這邊分享的檔案除了在此處以外的人都看不到。",
"mobile.intro_messages.default_message": "This is the first channel teammates see when they sign up - use it for posting updates everyone needs to know.", "mobile.intro_messages.default_message": "這將是團隊成員註冊後第一個看到的頻道,請利用它張貼所有人都應該知道的事項。",
"mobile.intro_messages.default_welcome": "Welcome to {name}!", "mobile.intro_messages.default_welcome": "歡迎來到{name}",
"mobile.loading_channels": "正在載入頻道...", "mobile.loading_channels": "正在載入頻道...",
"mobile.loading_members": "正在載入成員...", "mobile.loading_members": "正在載入成員...",
"mobile.loading_posts": "正在載入訊息...", "mobile.loading_posts": "正在載入訊息...",
"mobile.login_options.choose_title": "選擇登入方式", "mobile.login_options.choose_title": "選擇登入方式",
"mobile.offlineIndicator.connected": "Connected", "mobile.offlineIndicator.connected": "已連線",
"mobile.offlineIndicator.connecting": "連線中", "mobile.offlineIndicator.connecting": "連線中",
"mobile.offlineIndicator.offline": "No internet connection", "mobile.offlineIndicator.offline": "沒有網際網路連線",
"mobile.post.cancel": "取消", "mobile.post.cancel": "取消",
"mobile.post.delete_question": "確定要刪除此訊息嘛?", "mobile.post.delete_question": "確定要刪除此訊息嘛?",
"mobile.post.delete_title": "刪除訊息", "mobile.post.delete_title": "刪除訊息",
"mobile.post.failed_delete": "Delete Message", "mobile.post.failed_delete": "刪除訊息",
"mobile.post.failed_retry": "Try Again", "mobile.post.failed_retry": "重試",
"mobile.post.failed_title": "Unable to send your message", "mobile.post.failed_title": "無法傳送訊息",
"mobile.post.retry": "Refresh", "mobile.post.retry": "重新整理",
"mobile.request.invalid_response": "從伺服器傳來無效的回應。", "mobile.request.invalid_response": "從伺服器傳來無效的回應。",
"mobile.routes.channelInfo": "相關資訊", "mobile.routes.channelInfo": "相關資訊",
"mobile.routes.channelInfo.createdBy": "由 {creator} 建立於", "mobile.routes.channelInfo.createdBy": "由 {creator} 建立於",
@@ -1788,6 +1791,7 @@
"navbar_dropdown.integrations": "整合", "navbar_dropdown.integrations": "整合",
"navbar_dropdown.inviteMember": "發送電子郵件邀請", "navbar_dropdown.inviteMember": "發送電子郵件邀請",
"navbar_dropdown.join": "加入其他團隊", "navbar_dropdown.join": "加入其他團隊",
"navbar_dropdown.keyboardShortcuts": "快速鍵",
"navbar_dropdown.leave": "離開團隊", "navbar_dropdown.leave": "離開團隊",
"navbar_dropdown.logout": "登出", "navbar_dropdown.logout": "登出",
"navbar_dropdown.manageMembers": "會員管理", "navbar_dropdown.manageMembers": "會員管理",
@@ -1878,6 +1882,7 @@
"rhs_comment.permalink": "永久網址", "rhs_comment.permalink": "永久網址",
"rhs_header.backToCallTooltip": "回到通話", "rhs_header.backToCallTooltip": "回到通話",
"rhs_header.backToFlaggedTooltip": "回到被標記的訊息", "rhs_header.backToFlaggedTooltip": "回到被標記的訊息",
"rhs_header.backToPinnedTooltip": "回到被釘選的訊息",
"rhs_header.backToResultsTooltip": "回到搜尋結果", "rhs_header.backToResultsTooltip": "回到搜尋結果",
"rhs_header.closeSidebarTooltip": "關閉側邊欄", "rhs_header.closeSidebarTooltip": "關閉側邊欄",
"rhs_header.closeTooltip": "關閉側邊欄", "rhs_header.closeTooltip": "關閉側邊欄",
@@ -1916,7 +1921,7 @@
"setting_item_max.save": "儲存", "setting_item_max.save": "儲存",
"setting_item_min.edit": "編輯", "setting_item_min.edit": "編輯",
"setting_picture.cancel": "取消", "setting_picture.cancel": "取消",
"setting_picture.help": "請上傳個人圖像,格式為JPG或PNG至少寬{width}像素、高{height}像素。", "setting_picture.help": "請上傳個人圖像,格式為 BMP、JPG、JPEG 或 PNG至少寬{width}像素、高{height}像素。",
"setting_picture.save": "儲存", "setting_picture.save": "儲存",
"setting_picture.select": "選擇", "setting_picture.select": "選擇",
"setting_upload.import": "匯入", "setting_upload.import": "匯入",
@@ -1987,7 +1992,7 @@
"signup_user_completed.office365": "使用 Office 365", "signup_user_completed.office365": "使用 Office 365",
"signup_user_completed.onSite": "於{siteName}", "signup_user_completed.onSite": "於{siteName}",
"signup_user_completed.or": "或", "signup_user_completed.or": "或",
"signup_user_completed.passwordLength": "Please enter between {min} and {max} characters", "signup_user_completed.passwordLength": "請輸入{min}到{max}之間的字元",
"signup_user_completed.required": "此欄位是必需的", "signup_user_completed.required": "此欄位是必需的",
"signup_user_completed.reserved": "此使用者名稱為保留名稱,請選新的名稱。", "signup_user_completed.reserved": "此使用者名稱為保留名稱,請選新的名稱。",
"signup_user_completed.signIn": "按此處登入。", "signup_user_completed.signIn": "按此處登入。",
@@ -2003,7 +2008,7 @@
"sso_signup.length_error": "名稱長度為3到15字元", "sso_signup.length_error": "名稱長度為3到15字元",
"sso_signup.teamName": "輸入新團隊名稱", "sso_signup.teamName": "輸入新團隊名稱",
"sso_signup.team_error": "請輸入團隊名稱", "sso_signup.team_error": "請輸入團隊名稱",
"suggestion.mention.all": "CAUTION: This mentions everyone in channel", "suggestion.mention.all": "注意:這將會提及頻道中的所有人",
"suggestion.mention.channel": "通知頻道全員", "suggestion.mention.channel": "通知頻道全員",
"suggestion.mention.channels": "我的頻道", "suggestion.mention.channels": "我的頻道",
"suggestion.mention.here": "通知此頻道所有在線的人", "suggestion.mention.here": "通知此頻道所有在線的人",
@@ -2013,9 +2018,9 @@
"suggestion.mention.special": "特別提及", "suggestion.mention.special": "特別提及",
"suggestion.search.private": "私人頻道", "suggestion.search.private": "私人頻道",
"suggestion.search.public": "公開頻道", "suggestion.search.public": "公開頻道",
"system_users_list.count": "{count, number} {count, plural, one {user} other {users}}", "system_users_list.count": "{count, number}使用者",
"system_users_list.countPage": "{total}位中{startCount, number} - {endCount, number}位成員", "system_users_list.countPage": "{total}位中{startCount, number} - {endCount, number}位使用者",
"system_users_list.countSearch": "{count, number} {count, plural, one {user} other {users}} of {total} total", "system_users_list.countSearch": "{total}位中{count, number}位使用者",
"team_export_tab.download": "下載", "team_export_tab.download": "下載",
"team_export_tab.export": "匯出", "team_export_tab.export": "匯出",
"team_export_tab.exportTeam": "匯出團隊", "team_export_tab.exportTeam": "匯出團隊",
@@ -2044,7 +2049,7 @@
"team_members_dropdown.leave_team": "移出團隊", "team_members_dropdown.leave_team": "移出團隊",
"team_members_dropdown.makeActive": "啟用", "team_members_dropdown.makeActive": "啟用",
"team_members_dropdown.makeAdmin": "設為團隊管理員", "team_members_dropdown.makeAdmin": "設為團隊管理員",
"team_members_dropdown.makeInactive": "Deactivate", "team_members_dropdown.makeInactive": "停用",
"team_members_dropdown.makeMember": "設為成員", "team_members_dropdown.makeMember": "設為成員",
"team_members_dropdown.member": "成員", "team_members_dropdown.member": "成員",
"team_members_dropdown.systemAdmin": "系統管理", "team_members_dropdown.systemAdmin": "系統管理",
@@ -2169,7 +2174,7 @@
"user.settings.general.checkEmailNoAddress": "請檢查電子郵件信箱以驗證新的電子郵件地址。", "user.settings.general.checkEmailNoAddress": "請檢查電子郵件信箱以驗證新的電子郵件地址。",
"user.settings.general.close": "關閉", "user.settings.general.close": "關閉",
"user.settings.general.confirmEmail": "電子郵件地址確認", "user.settings.general.confirmEmail": "電子郵件地址確認",
"user.settings.general.currentEmail": "Current Email", "user.settings.general.currentEmail": "目前的電子郵件",
"user.settings.general.email": "電子郵件地址", "user.settings.general.email": "電子郵件地址",
"user.settings.general.emailGitlabCantUpdate": "經由 GitLab 登入。無法變更電子郵件地址。通知將會寄送到 {email}。", "user.settings.general.emailGitlabCantUpdate": "經由 GitLab 登入。無法變更電子郵件地址。通知將會寄送到 {email}。",
"user.settings.general.emailGoogleCantUpdate": "經由 Google 登入。無法變更電子郵件地址。通知將會寄送到 {email}。", "user.settings.general.emailGoogleCantUpdate": "經由 Google 登入。無法變更電子郵件地址。通知將會寄送到 {email}。",
@@ -2197,7 +2202,7 @@
"user.settings.general.loginOffice365": "已經由 Office 365 登入 ({email})", "user.settings.general.loginOffice365": "已經由 Office 365 登入 ({email})",
"user.settings.general.loginSaml": "已經由 SAML 登入 ({email})", "user.settings.general.loginSaml": "已經由 SAML 登入 ({email})",
"user.settings.general.newAddress": "新電子郵件地址:{email}<br />請檢查電子郵件信箱以驗證上面的地址。", "user.settings.general.newAddress": "新電子郵件地址:{email}<br />請檢查電子郵件信箱以驗證上面的地址。",
"user.settings.general.newEmail": "New Email", "user.settings.general.newEmail": "新的電子郵件",
"user.settings.general.nickname": "匿稱", "user.settings.general.nickname": "匿稱",
"user.settings.general.nicknameExtra": "暱稱讓您有個除了名字跟使用者名稱以外的稱呼。這通常使用在有多個人的名字跟使用者名稱聽起來差不多的情況。", "user.settings.general.nicknameExtra": "暱稱讓您有個除了名字跟使用者名稱以外的稱呼。這通常使用在有多個人的名字跟使用者名稱聽起來差不多的情況。",
"user.settings.general.notificationsExtra": "預設情況下當有人輸入您的名字時您將會收到提及通知。請到{notify}以變更設定。", "user.settings.general.notificationsExtra": "預設情況下當有人輸入您的名字時您將會收到提及通知。請到{notify}以變更設定。",
@@ -2340,22 +2345,22 @@
"user.settings.security.office365": "Office 365", "user.settings.security.office365": "Office 365",
"user.settings.security.oneSignin": "同時間只能只用一種登入方式。如果更換登入方式成功,將會寄送通知信。", "user.settings.security.oneSignin": "同時間只能只用一種登入方式。如果更換登入方式成功,將會寄送通知信。",
"user.settings.security.password": "密碼", "user.settings.security.password": "密碼",
"user.settings.security.passwordError": "觸發關鍵字必須包含{min}到{max}個字", "user.settings.security.passwordError": "密碼必須為{min}到{max}個字",
"user.settings.security.passwordErrorLowercase": "密碼最短必須{min}字元且至少有一個小寫英文字母。", "user.settings.security.passwordErrorLowercase": "密碼必須{min}到{max}字元且至少有一個小寫英文字母。",
"user.settings.security.passwordErrorLowercaseNumber": "密碼最短必須{min}個字元且至少有一個小寫英文字母和一個數字。", "user.settings.security.passwordErrorLowercaseNumber": "密碼必須{min}到{max}個字元且至少有一個小寫英文字母和一個數字。",
"user.settings.security.passwordErrorLowercaseNumberSymbol": "密碼最短必須{min}個字元且至少有一個小寫英文字母、一個數字和一個符號(\"~!@#$%^&*()\")。", "user.settings.security.passwordErrorLowercaseNumberSymbol": "密碼必須{min}到{max}個字元且至少有一個小寫英文字母、一個數字和一個符號(\"~!@#$%^&*()\")。",
"user.settings.security.passwordErrorLowercaseSymbol": "密碼最短必須{min}個字元且至少有一個小寫英文字母和一個符號(\"~!@#$%^&*()\")。", "user.settings.security.passwordErrorLowercaseSymbol": "密碼必須{min}到{max}個字元且至少有一個小寫英文字母和一個符號(\"~!@#$%^&*()\")。",
"user.settings.security.passwordErrorLowercaseUppercase": "密碼最短必須{min}個字元且至少有一個小寫英文字母和一個大寫英文字母。", "user.settings.security.passwordErrorLowercaseUppercase": "密碼必須{min}到{max}個字元且至少有一個小寫英文字母和一個大寫英文字母。",
"user.settings.security.passwordErrorLowercaseUppercaseNumber": "密碼最短必須{min}個字元且至少有一個小寫英文字母、一個大寫英文字母和一個數字。", "user.settings.security.passwordErrorLowercaseUppercaseNumber": "密碼必須{min}到{max}個字元且至少有一個小寫英文字母、一個大寫英文字母和一個數字。",
"user.settings.security.passwordErrorLowercaseUppercaseNumberSymbol": "密碼最短必須{min}個字元且至少有一個小寫英文字母、一個大寫英文字母、一個數字和一個符號(\"~!@#$%^&*()\")。", "user.settings.security.passwordErrorLowercaseUppercaseNumberSymbol": "密碼必須{min}到{max}個字元且至少有一個小寫英文字母、一個大寫英文字母、一個數字和一個符號(\"~!@#$%^&*()\")。",
"user.settings.security.passwordErrorLowercaseUppercaseSymbol": "密碼最短必須{min}個字元且至少有一個小寫英文字母、一個大寫英文字母和一個符號(\"~!@#$%^&*()\")。", "user.settings.security.passwordErrorLowercaseUppercaseSymbol": "密碼必須{min}到{max}個字元且至少有一個小寫英文字母、一個大寫英文字母和一個符號(\"~!@#$%^&*()\")。",
"user.settings.security.passwordErrorNumber": "密碼最短必須{min}個字元且至少有一個數字。", "user.settings.security.passwordErrorNumber": "密碼必須{min}到{max}個字元且至少有一個數字。",
"user.settings.security.passwordErrorNumberSymbol": "密碼最短必須{min}個字元且至少有一個數字和一個符號(\"~!@#$%^&*()\")。", "user.settings.security.passwordErrorNumberSymbol": "密碼必須{min}到{max}個字元且至少有一個數字和一個符號(\"~!@#$%^&*()\")。",
"user.settings.security.passwordErrorSymbol": "密碼最短必須{min}個字元且至少有一個符號(\"~!@#$%^&*()\")。", "user.settings.security.passwordErrorSymbol": "密碼必須{min}到{max}個字元且至少有一個符號(\"~!@#$%^&*()\")。",
"user.settings.security.passwordErrorUppercase": "密碼最短必須{min}個字元且至少有一個大寫英文字母。", "user.settings.security.passwordErrorUppercase": "密碼必須{min}到{max}個字元且至少有一個大寫英文字母。",
"user.settings.security.passwordErrorUppercaseNumber": "密碼最短必須{min}個字元且至少有一個大寫英文字母和一個數字。", "user.settings.security.passwordErrorUppercaseNumber": "密碼必須{min}到{max}個字元且至少有一個大寫英文字母和一個數字。",
"user.settings.security.passwordErrorUppercaseNumberSymbol": "密碼最短必須{min}個字元且至少有一個大寫英文字母、一個數字和一個符號(\"~!@#$%^&*()\")。", "user.settings.security.passwordErrorUppercaseNumberSymbol": "密碼必須{min}到{max}個字元且至少有一個大寫英文字母、一個數字和一個符號(\"~!@#$%^&*()\")。",
"user.settings.security.passwordErrorUppercaseSymbol": "密碼最短必須{min}個字元且至少有一個大寫英文字母和一個符號(\"~!@#$%^&*()\")。", "user.settings.security.passwordErrorUppercaseSymbol": "密碼必須{min}到{max}個字元且至少有一個大寫英文字母和一個符號(\"~!@#$%^&*()\")。",
"user.settings.security.passwordGitlabCantUpdate": "經由 GitLab 登入。無法變更密碼。", "user.settings.security.passwordGitlabCantUpdate": "經由 GitLab 登入。無法變更密碼。",
"user.settings.security.passwordGoogleCantUpdate": "經由 Gooel Apps 登入。無法變更密碼。", "user.settings.security.passwordGoogleCantUpdate": "經由 Gooel Apps 登入。無法變更密碼。",
"user.settings.security.passwordLdapCantUpdate": "經由 AD/LDAP 登入。無法變更密碼。", "user.settings.security.passwordLdapCantUpdate": "經由 AD/LDAP 登入。無法變更密碼。",

Просмотреть файл

@@ -22,7 +22,7 @@
"localforage": "1.5.0", "localforage": "1.5.0",
"marked": "mattermost/marked#8f5902fff9bad793cd6c66e0c44002c9e79e1317", "marked": "mattermost/marked#8f5902fff9bad793cd6c66e0c44002c9e79e1317",
"match-at": "0.1.0", "match-at": "0.1.0",
"mattermost-redux": "mattermost/mattermost-redux#webapp-part4", "mattermost-redux": "mattermost/mattermost-redux#webapp-3.9",
"object-assign": "4.1.1", "object-assign": "4.1.1",
"pdfjs-dist": "1.7.363", "pdfjs-dist": "1.7.363",
"perfect-scrollbar": "0.6.16", "perfect-scrollbar": "0.6.16",

Просмотреть файл

@@ -5,7 +5,9 @@
border-left: none; border-left: none;
font-size: 14px; font-size: 14px;
line-height: 56px; line-height: 56px;
position: relative;
width: 100%; width: 100%;
z-index: 5;
.member-popover__trigger, .member-popover__trigger,
.pinned-posts-button { .pinned-posts-button {

Просмотреть файл

@@ -31,6 +31,12 @@ h6 {
font-weight: 700; font-weight: 700;
line-height: 1.5; line-height: 1.5;
margin: 10px 0; margin: 10px 0;
.emoticon {
min-height: 1.5em;
min-width: 1.5em;
vertical-align: top;
}
} }
.markdown__paragraph-inline { .markdown__paragraph-inline {

Просмотреть файл

@@ -41,6 +41,14 @@
width: 43px; width: 43px;
z-index: 5; z-index: 5;
> span {
> svg {
position: relative;
top: 13px;
vertical-align: top;
}
}
.icon-bar { .icon-bar {
background: $white; background: $white;
width: 21px; width: 21px;
@@ -49,7 +57,8 @@
.icon-search { .icon-search {
font-size: 17px; font-size: 17px;
position: relative; position: relative;
top: -2px; top: 11px;
vertical-align: top;
} }
.icon--white { .icon--white {
@@ -93,7 +102,7 @@
.description { .description {
color: $white; color: $white;
display: inline-block; display: inline-block;
margin-right: .5em; margin-right: 1em;
&.info-popover { &.info-popover {
@include background-size(100% 100%); @include background-size(100% 100%);

Просмотреть файл

@@ -651,6 +651,12 @@
visibility: visible; visibility: visible;
} }
.post__header {
.col__reply {
z-index: 7;
}
}
.post__body { .post__body {
background: transparent !important; background: transparent !important;
} }

Просмотреть файл

@@ -8,7 +8,7 @@
position: fixed; position: fixed;
right: 0; right: 0;
width: 400px; width: 400px;
z-index: 6; z-index: 8;
&.webrtc { &.webrtc {
z-index: 5; z-index: 5;

Просмотреть файл

@@ -1,6 +1,12 @@
@charset 'UTF-8'; @charset 'UTF-8';
@media screen and (max-width: 768px) { @media screen and (max-width: 768px) {
.member-role .member-menu,
.member-drop .member-menu {
right: 0;
top: 30px;
}
.post-code { .post-code {
word-wrap: normal; word-wrap: normal;
} }
@@ -109,9 +115,10 @@
font-weight: 200; font-weight: 200;
height: 30px; height: 30px;
left: 50%; left: 50%;
line-height: 27px; line-height: 0;
margin-left: -15px; margin-left: -15px;
opacity: 1; opacity: 1;
padding-top: 13px;
position: fixed; position: fixed;
text-align: center; text-align: center;
text-shadow: none; text-shadow: none;
@@ -856,6 +863,18 @@
.navbar-brand { .navbar-brand {
white-space: nowrap; white-space: nowrap;
.heading {
line-height: normal;
position: relative;
top: 11px;
vertical-align: top;
}
.header-dropdown__icon {
top: 18px;
vertical-align: top;
}
} }
.dropdown { .dropdown {
@@ -892,9 +911,10 @@
font-weight: 200; font-weight: 200;
height: 30px; height: 30px;
left: 50%; left: 50%;
line-height: 27px; line-height: 0;
margin-left: -15px; margin-left: -15px;
opacity: 1; opacity: 1;
padding-top: 13px;
position: fixed; position: fixed;
text-align: center; text-align: center;
text-shadow: none; text-shadow: none;
@@ -1734,7 +1754,7 @@
} }
} }
@media screen and (max-width: 320px) and (max-height: 560px) { @media screen and (max-width: 380px) and (max-height: 580px) {
#navbar { #navbar {
.navbar-default { .navbar-default {
.dropdown-menu { .dropdown-menu {
@@ -1743,7 +1763,8 @@
> li { > li {
> a { > a {
border: none; border: none;
line-height: 28px; font-size: 13px;
line-height: 27px;
} }
} }
} }
@@ -1751,16 +1772,19 @@
} }
} }
// on iOS, allow clicks within an input's label to actually propagate through to the input itself, // on iOS, allow clicks within an input's label to actually propagate through to the input itself,
// but still allow clicks to a elements to go trough // but still allow clicks to a elements to go trough
// http://stackoverflow.com/a/34810294/6325807 // http://stackoverflow.com/a/34810294/6325807
label { label {
span { span {
pointer-events: none; pointer-events: none;
} }
span a {
pointer-events: all; span a {
} pointer-events: all;
}
} }
@media screen and (-webkit-min-device-pixel-ratio: 0) { @media screen and (-webkit-min-device-pixel-ratio: 0) {

Просмотреть файл

@@ -215,7 +215,9 @@
display: inline-block; display: inline-block;
height: 18px; height: 18px;
margin-right: 8px; margin-right: 8px;
position: relative;
text-align: center; text-align: center;
top: -1px;
width: 18px; width: 18px;
} }
@@ -231,6 +233,18 @@
text-align: left; text-align: left;
width: 200px; width: 200px;
> span {
position: relative;
top: 11px;
vertical-align: top;
> span {
display: inline-block;
line-height: normal;
vertical-align: top;
}
}
&.gitlab { &.gitlab {
background: #554488; background: #554488;
@@ -238,10 +252,6 @@
background: darken(#554488, 10%); background: darken(#554488, 10%);
} }
span {
vertical-align: middle;
}
.icon { .icon {
background-image: url('../images/gitlabLogo.png'); background-image: url('../images/gitlabLogo.png');
} }
@@ -254,10 +264,6 @@
background: darken(#dd4b39, 10%); background: darken(#dd4b39, 10%);
} }
span {
vertical-align: middle;
}
.icon { .icon {
background-image: url('../images/googleLogo.png'); background-image: url('../images/googleLogo.png');
} }
@@ -270,10 +276,6 @@
background: darken(#0079d6, 10%); background: darken(#0079d6, 10%);
} }
span {
vertical-align: middle;
}
.icon { .icon {
background-image: url('../images/office365Logo.png'); background-image: url('../images/office365Logo.png');
} }
@@ -285,10 +287,6 @@
&:hover { &:hover {
background: darken(#3AA1CF, 10%); background: darken(#3AA1CF, 10%);
} }
span {
vertical-align: middle;
}
} }
&.email { &.email {
@@ -297,10 +295,6 @@
&:hover { &:hover {
background: $primary-color--hover; background: $primary-color--hover;
} }
span {
vertical-align: middle;
}
} }
&.saml { &.saml {
@@ -309,10 +303,6 @@
&:hover { &:hover {
background: darken(#34a28b, 10%); background: darken(#34a28b, 10%);
} }
span {
vertical-align: middle;
}
} }
&.btn--full { &.btn--full {

Просмотреть файл

@@ -20,6 +20,7 @@ const LAST_VIEVED_EVENT = 'last_viewed';
import store from 'stores/redux_store.jsx'; import store from 'stores/redux_store.jsx';
import * as Selectors from 'mattermost-redux/selectors/entities/channels'; import * as Selectors from 'mattermost-redux/selectors/entities/channels';
import {ChannelTypes, UserTypes} from 'mattermost-redux/action_types'; import {ChannelTypes, UserTypes} from 'mattermost-redux/action_types';
import {batchActions} from 'redux-batched-actions';
class ChannelStoreClass extends EventEmitter { class ChannelStoreClass extends EventEmitter {
constructor(props) { constructor(props) {
@@ -456,16 +457,22 @@ class ChannelStoreClass extends EventEmitter {
const channel = {...this.get(id)}; const channel = {...this.get(id)};
channel.total_msg_count++; channel.total_msg_count++;
store.dispatch({
type: ChannelTypes.RECEIVED_CHANNEL,
data: channel
});
const actions = [];
if (markRead) { if (markRead) {
this.resetCounts([id]); actions.push({
} else { type: ChannelTypes.RECEIVED_MY_CHANNEL_MEMBER,
this.unreadCounts[id].msgs++; data: {...member, msg_count: channel.total_msg_count}
});
} }
actions.push(
{
type: ChannelTypes.RECEIVED_CHANNEL,
data: channel
}
);
store.dispatch(batchActions(actions));
} }
incrementMentionsIfNeeded(id, msgProps) { incrementMentionsIfNeeded(id, msgProps) {

Просмотреть файл

@@ -12,7 +12,7 @@ class LocalizationStoreClass extends EventEmitter {
constructor() { constructor() {
super(); super();
this.currentLocale = 'en'; this.currentLocale = '';
this.currentTranslations = null; this.currentTranslations = null;
} }

Просмотреть файл

@@ -5,6 +5,8 @@ const Preferences = Constants.Preferences;
import * as Utils from 'utils/utils.jsx'; import * as Utils from 'utils/utils.jsx';
import UserStore from 'stores/user_store.jsx'; import UserStore from 'stores/user_store.jsx';
import ChannelStore from 'stores/channel_store.jsx';
import TeamStore from 'stores/team_store.jsx';
import PreferenceStore from 'stores/preference_store.jsx'; import PreferenceStore from 'stores/preference_store.jsx';
import LocalizationStore from 'stores/localization_store.jsx'; import LocalizationStore from 'stores/localization_store.jsx';
@@ -251,6 +253,29 @@ export function buildGroupChannelName(channelId) {
return displayName; return displayName;
} }
export function getCountsStateFromStores(team = TeamStore.getCurrent(), teamMembers = TeamStore.getMyTeamMembers(), unreadCounts = ChannelStore.getUnreadCounts()) {
let mentionCount = 0;
let messageCount = 0;
teamMembers.forEach((member) => {
if (member.team_id !== TeamStore.getCurrentId()) {
mentionCount += (member.mention_count || 0);
messageCount += (member.msg_count || 0);
}
});
Object.keys(unreadCounts).forEach((chId) => {
const channel = ChannelStore.get(chId);
if (channel && (channel.type === Constants.DM_CHANNEL || channel.type === Constants.GM_CHANNEL || channel.team_id === team.id)) {
messageCount += unreadCounts[chId].msgs;
mentionCount += unreadCounts[chId].mentions;
}
});
return {mentionCount, messageCount};
}
/* /*
* not exported helpers * not exported helpers
*/ */

Просмотреть файл

@@ -558,13 +558,13 @@ export function applyTheme(theme) {
if (theme.mentionBj) { if (theme.mentionBj) {
changeCss('.sidebar--left .nav-pills__unread-indicator, .app__body .new-messages__button div', 'background:' + theme.mentionBj); changeCss('.sidebar--left .nav-pills__unread-indicator, .app__body .new-messages__button div', 'background:' + theme.mentionBj);
changeCss('.sidebar--left .badge', 'background:' + theme.mentionBj + ' !important'); changeCss('.app__body .sidebar--left .badge', 'background:' + theme.mentionBj);
changeCss('.multi-teams .team-sidebar .team-wrapper .team-container .team-btn .badge', 'background:' + theme.mentionBj + ' !important'); changeCss('.multi-teams .team-sidebar .team-wrapper .team-container .team-btn .badge', 'background:' + theme.mentionBj + ' !important');
} }
if (theme.mentionColor) { if (theme.mentionColor) {
changeCss('.app__body .sidebar--left .nav-pills__unread-indicator, .app__body .new-messages__button div', 'color:' + theme.mentionColor); changeCss('.app__body .sidebar--left .nav-pills__unread-indicator, .app__body .new-messages__button div', 'color:' + theme.mentionColor);
changeCss('.app__body .sidebar--left .badge', 'color:' + theme.mentionColor + ' !important'); changeCss('.app__body .sidebar--left .badge', 'color:' + theme.mentionColor);
changeCss('.app__body .multi-teams .team-sidebar .team-wrapper .team-container .team-btn .badge', 'color:' + theme.mentionColor + ' !important'); changeCss('.app__body .multi-teams .team-sidebar .team-wrapper .team-container .team-btn .badge', 'color:' + theme.mentionColor + ' !important');
} }