mirror of
https://github.com/hcengineering/platform.git
synced 2026-09-22 17:45:02 +02:00
Merge branch 'develop' into staging-new
This commit is contained in:
Generated
+6
@@ -24660,6 +24660,9 @@ importers:
|
||||
|
||||
../../plugins/process-resources:
|
||||
dependencies:
|
||||
'@hcengineering/account-client':
|
||||
specifier: workspace:^0.7.21
|
||||
version: link:../../foundations/core/packages/account-client
|
||||
'@hcengineering/analytics':
|
||||
specifier: workspace:^0.7.17
|
||||
version: link:../../foundations/core/packages/analytics
|
||||
@@ -24681,6 +24684,9 @@ importers:
|
||||
'@hcengineering/core':
|
||||
specifier: workspace:^0.7.24
|
||||
version: link:../../foundations/core/packages/core
|
||||
'@hcengineering/login':
|
||||
specifier: workspace:^0.7.0
|
||||
version: link:../login
|
||||
'@hcengineering/platform':
|
||||
specifier: workspace:^0.7.19
|
||||
version: link:../../foundations/core/packages/platform
|
||||
|
||||
@@ -412,7 +412,7 @@ export async function configurePlatform (onWorkbenchConnect?: () => Promise<void
|
||||
const languages =
|
||||
myBranding.languages !== undefined && myBranding.languages !== ''
|
||||
? myBranding.languages.split(',').map((l) => l.trim())
|
||||
: ['en', 'ru', 'es', 'pt', 'zh', 'fr', 'cs', 'it', 'de', 'ja', 'tr']
|
||||
: ['en', 'ru', 'es', 'pt', 'pt-br', 'zh', 'fr', 'cs', 'it', 'de', 'ja', 'tr']
|
||||
|
||||
setMetadata(uiPlugin.metadata.Languages, languages)
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"huly.local:8080": {
|
||||
"title": "Huly",
|
||||
"languages": "en,ru,pt,es,zh,fr,de,ja,tr",
|
||||
"languages": "en,ru,pt,pt-br,es,zh,fr,de,ja,tr",
|
||||
"defaultLanguage": "en",
|
||||
"defaultApplication": "tracker",
|
||||
"defaultSpace": "tracker:project:DefaultProject",
|
||||
@@ -30,7 +30,7 @@
|
||||
},
|
||||
"huly.local:8087": {
|
||||
"title": "Huly",
|
||||
"languages": "en,ru,pt,es,zh,fr,de,ja,tr",
|
||||
"languages": "en,ru,pt,pt-br,es,zh,fr,de,ja,tr",
|
||||
"defaultLanguage": "en",
|
||||
"defaultApplication": "tracker",
|
||||
"defaultSpace": "tracker:project:DefaultProject",
|
||||
|
||||
@@ -543,7 +543,7 @@ export async function configurePlatform() {
|
||||
|
||||
const languages = myBranding.languages
|
||||
? myBranding.languages.split(',').map((l) => l.trim())
|
||||
: ['en', 'ru', 'es', 'pt', 'zh', 'fr', 'cs', 'it', 'de', 'ja', 'tr']
|
||||
: ['en', 'ru', 'es', 'pt', 'pt-br', 'zh', 'fr', 'cs', 'it', 'de', 'ja', 'tr']
|
||||
|
||||
setMetadata(uiPlugin.metadata.Languages, languages)
|
||||
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
{
|
||||
"string": {
|
||||
"Id": "Id",
|
||||
"Space": "Espaço",
|
||||
"Spaces": "Espaços",
|
||||
"SpacesDescription": "Gestão do tipo de espaço para todas as espaços",
|
||||
"Modified": "Modificado",
|
||||
"ModifiedDate": "Data de modificação",
|
||||
"ModifiedBy": "Modificado por",
|
||||
"Class": "Classe",
|
||||
"AttachedTo": "Anexado a",
|
||||
"AttachedToClass": "Classe anexada",
|
||||
"Name": "Nome",
|
||||
"Description": "Descrição",
|
||||
"Private": "Privado",
|
||||
"Archived": "Arquivado",
|
||||
"ClassLabel": "Tipo",
|
||||
"ClassPropertyLabel": "Rótulo",
|
||||
"String": "Texto",
|
||||
"Markup": "Marcação",
|
||||
"Number": "Número",
|
||||
"Boolean": "Caixa de seleção",
|
||||
"Timestamp": "Marca de data/hora",
|
||||
"Date": "Data",
|
||||
"IntlString": "Cadeia de texto internacionalizada",
|
||||
"Ref": "Referência",
|
||||
"Collection": "Coleção",
|
||||
"Array": "Seleção múltipla",
|
||||
"Enum": "Seleção",
|
||||
"Members": "Membros",
|
||||
"Hyperlink": "URL",
|
||||
"MarkupBlobRef": "Colaborativo",
|
||||
"Object": "Objeto",
|
||||
"System": "Sistema",
|
||||
"CreatedBy": "Criado por",
|
||||
"CreatedDate": "Data de criação",
|
||||
"Status": "Estado",
|
||||
"StatusCategory": "Categoria de estado",
|
||||
"Account": "Conta",
|
||||
"Rank": "Ranking",
|
||||
"Owners": "Proprietários",
|
||||
"Permission": "Permissão",
|
||||
"CreateObject": "Criar objeto",
|
||||
"UpdateObject": "Atualizar objeto",
|
||||
"DeleteObject": "Apagar objeto",
|
||||
"ForbidDeleteObject": "Proibir apagar objeto",
|
||||
"UpdateSpace": "Atualizar espaço",
|
||||
"ArchiveSpace": "Arquivar espaço",
|
||||
"CreateObjectDescription": "Concede aos usuários a capacidade de criar objetos no espaço",
|
||||
"UpdateObjectDescription": "Concede aos usuários a capacidade de atualizar objetos no espaço",
|
||||
"DeleteObjectDescription": "Concede aos usuários a capacidade de apagar objetos no espaço",
|
||||
"ForbidDeleteObjectDescription": "Proíbe aos usuários a capacidade de apagar objetos no espaço",
|
||||
"UpdateSpaceDescription": "Concede aos usuários a capacidade de atualizar o espaço",
|
||||
"ArchiveSpaceDescription": "Concede aos usuários a capacidade de arquivar o espaço",
|
||||
"AutoJoin": "Auto adesão",
|
||||
"AutoJoinDescr": "Adesão automática de novos funcionários a este espaço",
|
||||
"RBAC": "Controle de acesso baseado em funções",
|
||||
"RBACDescr": "Exigir acesso baseado em funções para executar ações neste espaço",
|
||||
"BlobSize": "Tamanho",
|
||||
"BlobContentType": "Tipo de conteúdo",
|
||||
"Relation": "Relação",
|
||||
"Relations": "Relações",
|
||||
"AddRelation": "Adicionar relação",
|
||||
"PersonId": "ID de pessoa",
|
||||
"AccountId": "Conta",
|
||||
"Version": "Versão"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"status": {
|
||||
"LoadingPlugin": "Carregando plugin {plugin}...",
|
||||
"UnknownError": "Erro desconhecido: {message}",
|
||||
"InvalidId": "Id inválido: {id}",
|
||||
"BadRequest": "Pedido inválido",
|
||||
"Forbidden": "Proibido",
|
||||
"Conflict": "Conflito",
|
||||
"ExpiredLink": "Este link de convite expirou",
|
||||
"Unauthorized": "Não autorizado",
|
||||
"UnknownMethod": "Método desconhecido: {method}",
|
||||
"InternalServerError": "Erro interno do servidor",
|
||||
"MaintenanceWarning": "Manutenção programada dentro de",
|
||||
"MaintenanceWarningTime": "{time, plural, =1 {menos de um minuto} other {# minutos}}",
|
||||
"AccountNotFound": "Conta não encontrada",
|
||||
"AccountNotConfirmed": "Conta não confirmada",
|
||||
"WorkspaceNotFound": "Espaço de trabalho não encontrado",
|
||||
"InvalidPassword": "Senha inválida",
|
||||
"AccountAlreadyExists": "Conta já existe",
|
||||
"WorkspaceRateLimit": "O servidor está ocupado. Por favor, espere um pouco e tente novamente",
|
||||
"AccountAlreadyConfirmed": "Conta já confirmada",
|
||||
"WorkspaceAlreadyExists": "Espaço de trabalho já existe",
|
||||
"InvalidOtp": "Código inválido",
|
||||
"PasswordLoginLocked": "O login com senha está bloqueado devido a muitas tentativas falhadas. Use um método de login OTP para desbloquear sua conta.",
|
||||
"InviteNotFound": "Convite com e-mail:{email} não encontrado.",
|
||||
"WorkspaceLimitReached": "Você atingiu o limite de espaço de trabalho. Entre em contato conosco...",
|
||||
"ReadOnlyAccount": "Demonstração anônima de convidado",
|
||||
"SystemAccount": "Conta do sistema",
|
||||
"SocialIdAlreadyExists": "ID social já existe"
|
||||
}
|
||||
}
|
||||
@@ -234,6 +234,12 @@ function defineDrive (builder: Builder): void {
|
||||
icon: drive.icon.Drive,
|
||||
baseClass: drive.class.Drive,
|
||||
availablePermissions: [
|
||||
drive.permission.CreateFolder,
|
||||
drive.permission.UpdateFolder,
|
||||
drive.permission.RemoveFolder,
|
||||
drive.permission.CreateFile,
|
||||
drive.permission.UpdateFile,
|
||||
drive.permission.RemoveFile,
|
||||
core.permission.UpdateSpace,
|
||||
core.permission.ArchiveSpace,
|
||||
core.permission.ForbidDeleteObject
|
||||
@@ -326,7 +332,8 @@ function defineDrive (builder: Builder): void {
|
||||
mode: ['context', 'browser'],
|
||||
application: drive.app.Drive,
|
||||
group: 'create'
|
||||
}
|
||||
},
|
||||
visibilityTester: drive.function.CanCreateFolder
|
||||
},
|
||||
drive.action.CreateRootFolder
|
||||
)
|
||||
@@ -475,6 +482,7 @@ function defineFolder (builder: Builder): void {
|
||||
actions: [
|
||||
view.action.Open,
|
||||
view.action.OpenInNewTab,
|
||||
view.action.Delete,
|
||||
print.action.Print,
|
||||
tracker.action.EditRelatedTargets,
|
||||
tracker.action.NewRelatedIssue
|
||||
@@ -494,7 +502,8 @@ function defineFolder (builder: Builder): void {
|
||||
mode: ['context', 'browser'],
|
||||
application: drive.app.Drive,
|
||||
group: 'create'
|
||||
}
|
||||
},
|
||||
visibilityTester: drive.function.CanCreateFolder
|
||||
},
|
||||
drive.action.CreateChildFolder
|
||||
)
|
||||
@@ -518,6 +527,25 @@ function defineFolder (builder: Builder): void {
|
||||
drive.action.RenameFolder
|
||||
)
|
||||
|
||||
createAction(
|
||||
builder,
|
||||
{
|
||||
action: view.actionImpl.Delete,
|
||||
label: view.string.Delete,
|
||||
icon: view.icon.Delete,
|
||||
category: drive.category.Drive,
|
||||
input: 'none',
|
||||
target: drive.class.Folder,
|
||||
context: {
|
||||
mode: ['context', 'browser'],
|
||||
application: drive.app.Drive,
|
||||
group: 'edit'
|
||||
},
|
||||
visibilityTester: drive.function.CanDeleteFolder
|
||||
},
|
||||
drive.action.DeleteFolder
|
||||
)
|
||||
|
||||
createAction(builder, {
|
||||
...actionTemplates.move,
|
||||
action: view.actionImpl.ShowPopup,
|
||||
@@ -529,6 +557,7 @@ function defineFolder (builder: Builder): void {
|
||||
}
|
||||
},
|
||||
target: drive.class.Folder,
|
||||
visibilityTester: drive.function.CanUpdateFolder,
|
||||
context: {
|
||||
mode: ['browser', 'context'],
|
||||
group: 'tools'
|
||||
@@ -569,7 +598,8 @@ function defineFileVersion (builder: Builder): void {
|
||||
mode: ['context', 'browser'],
|
||||
application: drive.app.Drive,
|
||||
group: 'edit'
|
||||
}
|
||||
},
|
||||
visibilityTester: drive.function.CanUpdateFileVersion
|
||||
},
|
||||
drive.action.RestoreFileVersion
|
||||
)
|
||||
@@ -649,6 +679,7 @@ function defineFile (builder: Builder): void {
|
||||
actions: [
|
||||
view.action.Open,
|
||||
view.action.OpenInNewTab,
|
||||
view.action.Delete,
|
||||
print.action.Print,
|
||||
tracker.action.EditRelatedTargets,
|
||||
tracker.action.NewRelatedIssue
|
||||
@@ -692,6 +723,25 @@ function defineFile (builder: Builder): void {
|
||||
drive.action.RenameFile
|
||||
)
|
||||
|
||||
createAction(
|
||||
builder,
|
||||
{
|
||||
action: view.actionImpl.Delete,
|
||||
label: view.string.Delete,
|
||||
icon: view.icon.Delete,
|
||||
category: drive.category.Drive,
|
||||
input: 'none',
|
||||
target: drive.class.File,
|
||||
context: {
|
||||
mode: ['context', 'browser'],
|
||||
application: drive.app.Drive,
|
||||
group: 'edit'
|
||||
},
|
||||
visibilityTester: drive.function.CanDeleteFile
|
||||
},
|
||||
drive.action.DeleteFile
|
||||
)
|
||||
|
||||
// createAction(
|
||||
// builder,
|
||||
// {
|
||||
@@ -721,6 +771,7 @@ function defineFile (builder: Builder): void {
|
||||
}
|
||||
},
|
||||
target: drive.class.File,
|
||||
visibilityTester: drive.function.CanUpdateFile,
|
||||
context: {
|
||||
mode: ['browser', 'context'],
|
||||
group: 'tools'
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
//
|
||||
|
||||
import core, { type Blob, type Ref, DOMAIN_BLOB, generateId, toIdMap } from '@hcengineering/core'
|
||||
import type { Drive, File, FileVersion, Resource } from '@hcengineering/drive'
|
||||
import type { File, FileVersion, Resource } from '@hcengineering/drive'
|
||||
import {
|
||||
type MigrateOperation,
|
||||
type MigrationClient,
|
||||
@@ -56,7 +56,7 @@ async function migrateFileVersions (client: MigrationClient): Promise<void> {
|
||||
collection: 'versions',
|
||||
modifiedOn: file.modifiedOn,
|
||||
modifiedBy: file.modifiedBy,
|
||||
space: file.space as Ref<Drive>,
|
||||
space: file.space,
|
||||
title: exfile.title,
|
||||
file: blob._id,
|
||||
size: blob.size,
|
||||
|
||||
@@ -3,6 +3,84 @@ import core from '@hcengineering/core'
|
||||
import drive from '@hcengineering/drive'
|
||||
|
||||
export function definePermissions (builder: Builder): void {
|
||||
builder.createDoc(
|
||||
core.class.Permission,
|
||||
core.space.Model,
|
||||
{
|
||||
scope: 'space',
|
||||
label: drive.string.CreateFilePermission,
|
||||
description: drive.string.CreateFilePermissionDescription,
|
||||
txClass: core.class.TxCreateDoc,
|
||||
objectClass: drive.class.File
|
||||
},
|
||||
drive.permission.CreateFile
|
||||
)
|
||||
|
||||
builder.createDoc(
|
||||
core.class.Permission,
|
||||
core.space.Model,
|
||||
{
|
||||
scope: 'space',
|
||||
label: drive.string.UpdateFilePermission,
|
||||
description: drive.string.UpdateFilePermissionDescription,
|
||||
txClass: core.class.TxUpdateDoc,
|
||||
objectClass: drive.class.File
|
||||
},
|
||||
drive.permission.UpdateFile
|
||||
)
|
||||
|
||||
builder.createDoc(
|
||||
core.class.Permission,
|
||||
core.space.Model,
|
||||
{
|
||||
scope: 'space',
|
||||
label: drive.string.RemoveFilePermission,
|
||||
description: drive.string.RemoveFilePermissionDescription,
|
||||
txClass: core.class.TxRemoveDoc,
|
||||
objectClass: drive.class.File
|
||||
},
|
||||
drive.permission.RemoveFile
|
||||
)
|
||||
|
||||
builder.createDoc(
|
||||
core.class.Permission,
|
||||
core.space.Model,
|
||||
{
|
||||
scope: 'space',
|
||||
label: drive.string.CreateFolderPermission,
|
||||
description: drive.string.CreateFolderPermissionDescription,
|
||||
txClass: core.class.TxCreateDoc,
|
||||
objectClass: drive.class.Folder
|
||||
},
|
||||
drive.permission.CreateFolder
|
||||
)
|
||||
|
||||
builder.createDoc(
|
||||
core.class.Permission,
|
||||
core.space.Model,
|
||||
{
|
||||
scope: 'space',
|
||||
label: drive.string.UpdateFolderPermission,
|
||||
description: drive.string.UpdateFolderPermissionDescription,
|
||||
txClass: core.class.TxUpdateDoc,
|
||||
objectClass: drive.class.Folder
|
||||
},
|
||||
drive.permission.UpdateFolder
|
||||
)
|
||||
|
||||
builder.createDoc(
|
||||
core.class.Permission,
|
||||
core.space.Model,
|
||||
{
|
||||
scope: 'space',
|
||||
label: drive.string.RemoveFolderPermission,
|
||||
description: drive.string.RemoveFolderPermissionDescription,
|
||||
txClass: core.class.TxRemoveDoc,
|
||||
objectClass: drive.class.Folder
|
||||
},
|
||||
drive.permission.RemoveFolder
|
||||
)
|
||||
|
||||
builder.createDoc(
|
||||
core.class.Permission,
|
||||
core.space.Model,
|
||||
|
||||
@@ -53,8 +53,14 @@ export default mergeIds(driveId, drive, {
|
||||
DriveLinkProvider: '' as Resource<(doc: Doc, props: Record<string, any>) => Promise<Location>>,
|
||||
FolderLinkProvider: '' as Resource<(doc: Doc, props: Record<string, any>) => Promise<Location>>,
|
||||
FileLinkProvider: '' as Resource<(doc: Doc, props: Record<string, any>) => Promise<Location>>,
|
||||
CanCreateFolder: '' as Resource<ViewActionAvailabilityFunction>,
|
||||
CanUpdateFile: '' as Resource<ViewActionAvailabilityFunction>,
|
||||
CanUpdateFolder: '' as Resource<ViewActionAvailabilityFunction>,
|
||||
CanDeleteFile: '' as Resource<ViewActionAvailabilityFunction>,
|
||||
CanDeleteFolder: '' as Resource<ViewActionAvailabilityFunction>,
|
||||
CanRenameFile: '' as Resource<ViewActionAvailabilityFunction>,
|
||||
CanRenameFolder: '' as Resource<ViewActionAvailabilityFunction>,
|
||||
CanUpdateFileVersion: '' as Resource<ViewActionAvailabilityFunction>,
|
||||
CanDeleteFileVersion: '' as Resource<ViewActionAvailabilityFunction>,
|
||||
FileTitleProvider: '' as Resource<(client: Client, ref: Ref<Doc>, doc?: Doc) => Promise<string>>,
|
||||
FolderTitleProvider: '' as Resource<(client: Client, ref: Ref<Doc>, doc?: Doc) => Promise<string>>
|
||||
@@ -79,6 +85,8 @@ export default mergeIds(driveId, drive, {
|
||||
CreateRootFolder: '' as Ref<Action>,
|
||||
EditDrive: '' as Ref<Action>,
|
||||
DownloadFile: '' as Ref<Action>,
|
||||
DeleteFile: '' as Ref<Action>,
|
||||
DeleteFolder: '' as Ref<Action>,
|
||||
RenameFile: '' as Ref<Action>,
|
||||
RenameFolder: '' as Ref<Action>,
|
||||
DeleteFileVersion: '' as Ref<Action>,
|
||||
|
||||
@@ -31,6 +31,23 @@ export function defineMethods (builder: Builder): void {
|
||||
process.method.RunSubProcess
|
||||
)
|
||||
|
||||
builder.createDoc(
|
||||
process.class.Method,
|
||||
core.space.Model,
|
||||
{
|
||||
label: process.string.RequestApproval,
|
||||
objectClass: process.class.ApproveRequest,
|
||||
editor: process.component.ApproveRequestEditor,
|
||||
presenter: process.component.ApproveRequestPresenter,
|
||||
createdContext: {
|
||||
_class: process.class.ApproveRequest,
|
||||
nameField: 'title'
|
||||
},
|
||||
requiredParams: ['user']
|
||||
},
|
||||
process.method.RequestApproval
|
||||
)
|
||||
|
||||
builder.createDoc(
|
||||
process.class.Method,
|
||||
core.space.Model,
|
||||
@@ -103,4 +120,30 @@ export function defineMethods (builder: Builder): void {
|
||||
},
|
||||
process.method.AddTag
|
||||
)
|
||||
|
||||
builder.createDoc(
|
||||
process.class.Method,
|
||||
core.space.Model,
|
||||
{
|
||||
label: process.string.LockCard,
|
||||
objectClass: card.class.Card,
|
||||
requiredParams: [],
|
||||
createdContext: null
|
||||
},
|
||||
process.method.LockCard
|
||||
)
|
||||
|
||||
builder.createDoc(
|
||||
process.class.Method,
|
||||
core.space.Model,
|
||||
{
|
||||
label: process.string.LockSection,
|
||||
objectClass: card.class.Card,
|
||||
editor: process.component.LockSectionEditor,
|
||||
presenter: process.component.LockSectionPresenter,
|
||||
requiredParams: ['_id'],
|
||||
createdContext: null
|
||||
},
|
||||
process.method.LockSection
|
||||
)
|
||||
}
|
||||
|
||||
@@ -46,6 +46,7 @@ import workbench from '@hcengineering/model-workbench'
|
||||
import notification from '@hcengineering/notification'
|
||||
import { type Asset, type IntlString, type Resource } from '@hcengineering/platform'
|
||||
import {
|
||||
type ApproveRequest,
|
||||
type CheckFunc,
|
||||
type ContextId,
|
||||
type CreatedContext,
|
||||
@@ -204,6 +205,19 @@ export class TProcessToDo extends TToDo implements ProcessToDo {
|
||||
withRollback!: boolean
|
||||
}
|
||||
|
||||
@Model(process.class.ApproveRequest, process.class.ProcessToDo)
|
||||
export class TApproveRequest extends TProcessToDo implements ApproveRequest {
|
||||
@Prop(TypeBoolean(), process.string.IsApproved)
|
||||
approved?: boolean
|
||||
|
||||
@Prop(TypeString(), process.string.RejectionReason)
|
||||
reason?: string
|
||||
|
||||
group!: string
|
||||
|
||||
card!: Ref<Card>
|
||||
}
|
||||
|
||||
@Model(process.class.Method, core.class.Doc, DOMAIN_MODEL)
|
||||
export class TMethod extends TDoc implements Method<Doc> {
|
||||
label!: IntlString
|
||||
@@ -290,6 +304,7 @@ export function createModel (builder: Builder): void {
|
||||
TProcess,
|
||||
TExecution,
|
||||
TProcessToDo,
|
||||
TApproveRequest,
|
||||
TMethod,
|
||||
TState,
|
||||
TProcessFunction,
|
||||
@@ -323,6 +338,28 @@ export function createModel (builder: Builder): void {
|
||||
process.ids.ProcessToDoCreated
|
||||
)
|
||||
|
||||
builder.createDoc(
|
||||
notification.class.NotificationType,
|
||||
core.space.Model,
|
||||
{
|
||||
hidden: false,
|
||||
generated: false,
|
||||
allowedForAuthor: true,
|
||||
label: process.string.ApproveRequest,
|
||||
group: time.ids.TimeNotificationGroup,
|
||||
txClasses: [core.class.TxCreateDoc],
|
||||
objectClass: process.class.ApproveRequest,
|
||||
onlyOwn: true,
|
||||
defaultEnabled: true,
|
||||
templates: {
|
||||
textTemplate: '{body}',
|
||||
htmlTemplate: '<p>{body}</p>',
|
||||
subjectTemplate: '{title}'
|
||||
}
|
||||
},
|
||||
process.ids.ApproveRequestCreated
|
||||
)
|
||||
|
||||
createAction(builder, {
|
||||
action: view.actionImpl.Delete,
|
||||
label: view.string.Delete,
|
||||
@@ -413,6 +450,42 @@ export function createModel (builder: Builder): void {
|
||||
presenter: process.component.StatePresenter
|
||||
})
|
||||
|
||||
builder.createDoc(
|
||||
view.class.Viewlet,
|
||||
core.space.Model,
|
||||
{
|
||||
variant: 'cardRequests',
|
||||
attachTo: process.class.ApproveRequest,
|
||||
descriptor: view.viewlet.List,
|
||||
props: {
|
||||
baseMenuClass: process.class.ApproveRequest
|
||||
},
|
||||
viewOptions: {
|
||||
groupBy: ['user', 'approved'],
|
||||
orderBy: [
|
||||
['approved', SortingOrder.Descending],
|
||||
['modifiedOn', SortingOrder.Descending],
|
||||
['createdOn', SortingOrder.Descending]
|
||||
],
|
||||
other: []
|
||||
},
|
||||
configOptions: {
|
||||
strict: true
|
||||
},
|
||||
config: [
|
||||
{
|
||||
key: '',
|
||||
label: process.string.ApproveRequest,
|
||||
presenter: process.component.ApproveRequestPresenter
|
||||
},
|
||||
'user',
|
||||
'approved',
|
||||
'reason'
|
||||
]
|
||||
},
|
||||
process.viewlet.CardRequests
|
||||
)
|
||||
|
||||
builder.createDoc(
|
||||
view.class.Viewlet,
|
||||
core.space.Model,
|
||||
@@ -600,6 +673,12 @@ export function createModel (builder: Builder): void {
|
||||
props: {}
|
||||
})
|
||||
|
||||
builder.createDoc(presentation.class.ComponentPointExtension, core.space.Model, {
|
||||
extension: card.extensions.EditCardExtension,
|
||||
component: process.component.RequestsExtension,
|
||||
props: {}
|
||||
})
|
||||
|
||||
builder.createDoc(presentation.class.ComponentPointExtension, core.space.Model, {
|
||||
extension: card.extensions.EditCardHeaderExtension,
|
||||
component: process.component.ProcessesHeaderExtension,
|
||||
@@ -623,6 +702,19 @@ export function createModel (builder: Builder): void {
|
||||
process.section.CardProcesses
|
||||
)
|
||||
|
||||
builder.createDoc(
|
||||
card.class.CardSection,
|
||||
core.space.Model,
|
||||
{
|
||||
label: process.string.ApproveRequest,
|
||||
component: process.component.RequestsCardSection,
|
||||
checkVisibility: process.function.CheckRequestsSectionVisibility,
|
||||
order: 360,
|
||||
navigation: []
|
||||
},
|
||||
process.section.CardApproveRequest
|
||||
)
|
||||
|
||||
builder.createDoc(card.class.MasterTagEditorSection, core.space.Model, {
|
||||
id: 'processes',
|
||||
label: process.string.Processes,
|
||||
|
||||
@@ -24,14 +24,16 @@ export default mergeIds(processId, process, {
|
||||
Process: '' as Ref<Doc>
|
||||
},
|
||||
section: {
|
||||
CardProcesses: '' as Ref<CardSection>
|
||||
CardProcesses: '' as Ref<CardSection>,
|
||||
CardApproveRequest: '' as Ref<CardSection>
|
||||
},
|
||||
pipeline: {
|
||||
ProcessMiddleware: '' as Ref<PresentationMiddlewareFactory>
|
||||
},
|
||||
ids: {
|
||||
ProcessSettings: '' as Ref<Doc>,
|
||||
ProcessToDoCreated: '' as Ref<Doc>
|
||||
ProcessToDoCreated: '' as Ref<Doc>,
|
||||
ApproveRequestCreated: '' as Ref<Doc>
|
||||
},
|
||||
actionImpl: {
|
||||
ContinueExecution: '' as ViewAction
|
||||
|
||||
@@ -16,6 +16,38 @@ import { type Builder } from '@hcengineering/model'
|
||||
import process from './plugin'
|
||||
|
||||
export function defineTriggers (builder: Builder): void {
|
||||
builder.createDoc(
|
||||
process.class.Trigger,
|
||||
core.space.Model,
|
||||
{
|
||||
label: process.string.OnApproveRequestApproved,
|
||||
icon: process.icon.ToDo,
|
||||
editor: process.component.ApproveRequestTriggerEditor,
|
||||
presenter: process.component.ApproveRequestTriggerPresenter,
|
||||
requiredParams: ['_id'],
|
||||
checkFunction: process.triggerCheck.ApproveRequestApproved,
|
||||
init: false,
|
||||
auto: true
|
||||
},
|
||||
process.trigger.OnApproveRequestApproved
|
||||
)
|
||||
|
||||
builder.createDoc(
|
||||
process.class.Trigger,
|
||||
core.space.Model,
|
||||
{
|
||||
label: process.string.OnApproveRequestRejected,
|
||||
icon: process.icon.ToDoRemove,
|
||||
editor: process.component.ApproveRequestTriggerEditor,
|
||||
presenter: process.component.ApproveRequestTriggerPresenter,
|
||||
requiredParams: ['_id'],
|
||||
checkFunction: process.triggerCheck.ApproveRequestRejected,
|
||||
init: false,
|
||||
auto: true
|
||||
},
|
||||
process.trigger.OnApproveRequestRejected
|
||||
)
|
||||
|
||||
builder.createDoc(
|
||||
process.class.Trigger,
|
||||
core.space.Model,
|
||||
|
||||
@@ -70,6 +70,16 @@ export function createModel (builder: Builder): void {
|
||||
serverCheckFunc: serverProcess.func.FieldChangedCheck
|
||||
})
|
||||
|
||||
builder.mixin(process.trigger.OnApproveRequestApproved, process.class.Trigger, serverProcess.mixin.TriggerImpl, {
|
||||
preventRollback: true,
|
||||
serverCheckFunc: serverProcess.func.ApproveRequestApproved
|
||||
})
|
||||
|
||||
builder.mixin(process.trigger.OnApproveRequestRejected, process.class.Trigger, serverProcess.mixin.TriggerImpl, {
|
||||
preventRollback: true,
|
||||
serverCheckFunc: serverProcess.func.ApproveRequestRejected
|
||||
})
|
||||
|
||||
builder.mixin(process.trigger.OnExecutionStart, process.class.Trigger, serverProcess.mixin.TriggerImpl, {
|
||||
preventRollback: true
|
||||
})
|
||||
@@ -117,6 +127,18 @@ export function createModel (builder: Builder): void {
|
||||
func: serverProcess.func.AddTag
|
||||
})
|
||||
|
||||
builder.mixin(process.method.RequestApproval, process.class.Method, serverProcess.mixin.MethodImpl, {
|
||||
func: serverProcess.func.RequestApproval
|
||||
})
|
||||
|
||||
builder.mixin(process.method.LockCard, process.class.Method, serverProcess.mixin.MethodImpl, {
|
||||
func: serverProcess.func.LockCard
|
||||
})
|
||||
|
||||
builder.mixin(process.method.LockSection, process.class.Method, serverProcess.mixin.MethodImpl, {
|
||||
func: serverProcess.func.LockSection
|
||||
})
|
||||
|
||||
builder.mixin(process.function.FirstValue, process.class.ProcessFunction, serverProcess.mixin.FuncImpl, {
|
||||
func: serverProcess.transform.FirstValue
|
||||
})
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
{
|
||||
"string": {
|
||||
"Create": "Criar",
|
||||
"Cancel": "Cancelar",
|
||||
"Ok": "Ok",
|
||||
"Save": "Guardar",
|
||||
"Saved": "Guardado...",
|
||||
"Download": "Transferir",
|
||||
"DownloadOriginal": "Transferir original",
|
||||
"Delete": "Eliminar",
|
||||
"Close": "Fechar",
|
||||
"NotSelected": "Não selecionado",
|
||||
"Deselect": "Desmarcar",
|
||||
"Archived": "(arquivado)",
|
||||
"AddSocialLinks": "Adicionar links sociais",
|
||||
"EditSocialLinks": "Editar links sociais",
|
||||
"Change": "Alterar",
|
||||
"Remove": "Remover",
|
||||
"Search": "Pesquisar...",
|
||||
"Spaces": "Espaços",
|
||||
"NumberSpaces": "{count, plural, =0 {Em} =1 {Em 1 local} other {Em # locais}}",
|
||||
"InThis": "Neste {space}",
|
||||
"NoMatchesInThis": "Sem correspondências neste {space}",
|
||||
"NoMatchesFound": "Sem correspondências encontradas",
|
||||
"NotInThis": "Não está neste {space}",
|
||||
"Match": "Correspondência",
|
||||
"Add": "Adicionar",
|
||||
"Edit": "Editar",
|
||||
"DocumentPreview": "Visualizar",
|
||||
"MakePrivate": "Tornar privado",
|
||||
"MakePrivateDescription": "Apenas os membros podem ver",
|
||||
"Created": "Criado",
|
||||
"Selected": "Selecionado",
|
||||
"NoResults": "Sem resultados para mostrar",
|
||||
"Next": "Seguinte",
|
||||
"FailedToPreview": "Falha ao pré-visualizar",
|
||||
"ContentType": "Tipo de conteúdo",
|
||||
"ContentTypeNotSupported": "A visualização não está disponível para este tipo de conteúdo",
|
||||
"StartDrawing": "Scarabocchiare sopra",
|
||||
"DrawingHistory": "História de rabiscos",
|
||||
"ColorAdd": "Adicionar predefinição de cor",
|
||||
"ColorRemove": "Remover predefinição de cor",
|
||||
"ColorReset": "Repor predefinições de cores",
|
||||
"Copy": "Copiar",
|
||||
"DocumentUrlCopied": "Copiado!",
|
||||
"CopyLink": "Copiar link",
|
||||
"AccessDenied": "O objeto não existe ou você não tem permissão para acessá-lo.",
|
||||
"UnableToFollowMention": "Não foi possível abrir o objeto mencionado",
|
||||
"Undo": "Desfazer",
|
||||
"Redo": "Refazer",
|
||||
"ClearCanvas": "Limpar tela",
|
||||
"PenTool": "Caneta",
|
||||
"EraserTool": "Borracha",
|
||||
"PanTool": "Mover",
|
||||
"TextTool": "Texto",
|
||||
"LineTool": "Linha",
|
||||
"RectangleTool": "Retângulo",
|
||||
"EllipseTool": "Elipse",
|
||||
"PaletteManagementMenu": "Gerenciar predefinições de cor"
|
||||
},
|
||||
"status": {
|
||||
"FileTooLarge": "Ficheiro demasiado grande"
|
||||
}
|
||||
}
|
||||
@@ -584,9 +584,11 @@ pre.proseCodeBlock>pre.proseCode {
|
||||
|
||||
.mermaidPreview {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
|
||||
svg {
|
||||
width: 100%;
|
||||
width: auto;
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
display: block;
|
||||
|
||||
@@ -50,6 +50,7 @@
|
||||
"English": "English",
|
||||
"Russian": "Русский",
|
||||
"Portuguese": "Português",
|
||||
"PortugueseBrazil": "Português (Brasil)",
|
||||
"Spanish": "Español",
|
||||
"Chinese": "中文",
|
||||
"French": "Français",
|
||||
|
||||
@@ -50,6 +50,7 @@
|
||||
"English": "Englisch",
|
||||
"Russian": "Russisch",
|
||||
"Portuguese": "Portugiesisch",
|
||||
"PortugueseBrazil": "Português (Brasil)",
|
||||
"Spanish": "Spanisch",
|
||||
"Chinese": "Chinesisch",
|
||||
"French": "Französisch",
|
||||
|
||||
@@ -50,6 +50,7 @@
|
||||
"English": "English",
|
||||
"Russian": "Русский",
|
||||
"Portuguese": "Português",
|
||||
"PortugueseBrazil": "Português (Brasil)",
|
||||
"Spanish": "Español",
|
||||
"Chinese": "中文",
|
||||
"French": "Français",
|
||||
|
||||
@@ -50,6 +50,7 @@
|
||||
"English": "English",
|
||||
"Russian": "Русский",
|
||||
"Portuguese": "Português",
|
||||
"PortugueseBrazil": "Português (Brasil)",
|
||||
"Spanish": "Español",
|
||||
"Chinese": "中文",
|
||||
"French": "Français",
|
||||
|
||||
@@ -50,6 +50,7 @@
|
||||
"English": "English",
|
||||
"Russian": "Русский",
|
||||
"Portuguese": "Português",
|
||||
"PortugueseBrazil": "Português (Brasil)",
|
||||
"Spanish": "Español",
|
||||
"Chinese": "中文",
|
||||
"French": "Français",
|
||||
|
||||
@@ -50,6 +50,7 @@
|
||||
"English": "Inglese",
|
||||
"Russian": "Русский",
|
||||
"Portuguese": "Português",
|
||||
"PortugueseBrazil": "Português (Brasil)",
|
||||
"Spanish": "Español",
|
||||
"Chinese": "中文",
|
||||
"French": "Français",
|
||||
|
||||
@@ -50,6 +50,7 @@
|
||||
"English": "English",
|
||||
"Russian": "Русский",
|
||||
"Portuguese": "Português",
|
||||
"PortugueseBrazil": "Português (Brasil)",
|
||||
"Spanish": "Español",
|
||||
"Chinese": "中文",
|
||||
"French": "Français",
|
||||
|
||||
@@ -0,0 +1,114 @@
|
||||
{
|
||||
"string": {
|
||||
"EditBoxPlaceholder": "Digite o texto...",
|
||||
"Ok": "Ok",
|
||||
"Cancel": "Cancelar",
|
||||
"Save": "Salvar",
|
||||
"Publish": "Publicar",
|
||||
"SaveDraft": "Salvar rascunho",
|
||||
"MinutesAgo": "{minutes, plural, =0 {há menos de um minuto} =1 {há um minuto} other {há # minutos}}",
|
||||
"HoursAgo": "{hours, plural, =0 {há menos de uma hora} =1 {há uma hora} other {há # horas}}",
|
||||
"DaysAgo": "{days, plural, =0 {hoje} =1 {ontem} other {há # dias}}",
|
||||
"MonthsAgo": "{months, plural, =0 {este mês} =1 {há um mês} other {há # meses}}",
|
||||
"YearsAgo": "{years, plural, =0 {este ano} =1 {há um ano} other {há # anos}}",
|
||||
"Minutes": "{minutes, plural, =0 {menos de um minuto} =1 {um minuto} other {# minutos}}",
|
||||
"Hours": "{hours, plural, =0 {menos de uma hora} =1 {uma hora} other {# horas}}",
|
||||
"Days": "{days, plural, =0 {hoje} =1 {1 dia} other {# dias}}",
|
||||
"Weeks": "{weeks, plural, =0 {esta semana} =1 {1 semana} other {# semanas}}",
|
||||
"Months": "{months, plural, =0 {este mês} =1 {1 mês} other {# meses}}",
|
||||
"Years": "{years, plural, =0 {este ano} =1 {um ano} other {# anos}}",
|
||||
"Before": "Antes",
|
||||
"After": "Depois",
|
||||
"MinutesShort": "{value}m",
|
||||
"HoursShort": "{value}h",
|
||||
"DaysShort": "{value}d",
|
||||
"ShowMore": "Mostrar mais",
|
||||
"ShowLess": "Mostrar menos",
|
||||
"Search": "Pesquisar",
|
||||
"SearchDots": "Pesquisar...",
|
||||
"SearchResults": "Resultados da pesquisa",
|
||||
"Suggested": "Sugerido",
|
||||
"TimeTooltip": "{value}",
|
||||
"SelectDate": "Selecionar data",
|
||||
"None": "Nenhum",
|
||||
"NotSelected": "Não selecionado",
|
||||
"Today": "Hoje",
|
||||
"NoDate": "Sem data",
|
||||
"StartDate": "Data de início",
|
||||
"TargetDate": "Data alvo",
|
||||
"Overdue": "Atrasado",
|
||||
"DueDate": "Data de vencimento",
|
||||
"AddDueDate": "Adicionar data de vencimento",
|
||||
"SetDueDate": "Definir data de vencimento",
|
||||
"EditDueDate": "Editar data de vencimento",
|
||||
"SaveDueDate": "Salvar data de vencimento",
|
||||
"NeedsToBeCompletedByThisDate": "Precisa ser concluído até esta data",
|
||||
"DueDatePopupTitle": "Vence em {value}",
|
||||
"DueDatePopupOverdueTitle": "Venceu em {value}",
|
||||
"DueDatePopupDescription": "{value, plural, =0 {Hoje} =1 {Amanhã} other {# dias restantes}}",
|
||||
"DueDatePopupOverdueDescription": "{value, plural, =1 {1 dia em atraso} other {# dias em atraso}}",
|
||||
"English": "English",
|
||||
"Russian": "Русский",
|
||||
"Portuguese": "Português",
|
||||
"PortugueseBrazil": "Português (Brasil)",
|
||||
"Spanish": "Español",
|
||||
"Chinese": "中文",
|
||||
"French": "Français",
|
||||
"Italian": "Italiano",
|
||||
"Czech": "Čeština",
|
||||
"German": "Deutsch",
|
||||
"Japanese": "日本語",
|
||||
"Turkish": "Türkçe",
|
||||
"MinutesBefore": "{minutes, plural, =1 {um minuto antes} other {# minutos antes}}",
|
||||
"HoursBefore": "{hours, plural, =1 {uma hora antes} other {# horas antes}}",
|
||||
"DaysBefore": "{days, plural, =1 {um dia antes} other {# dias antes}}",
|
||||
"WeeksBefore": "{weeks, plural, =1 {uma semana antes} other {# semanas antes}}",
|
||||
"MonthsBefore": "{months, plural, =1 {um mês antes} other {# meses antes}}",
|
||||
"MinutesAfter": "{minutes, plural, =1 {em um minuto} other {em # minutos}}",
|
||||
"HoursAfter": "{hours, plural, =1 {em uma hora} other {em # horas}}",
|
||||
"DaysAfter": "{days, plural, =1 {em um dia} other {em # dias}}",
|
||||
"WeeksAfter": "{weeks, plural, =1 {daqui a um dia} other {daqui a # semanas}}",
|
||||
"MonthsAfter": "{months, plural, =1 {daqui a um mês} other {daqui a # meses}}",
|
||||
"NoActionsDefined": "Nenhuma ação aplicável",
|
||||
"Incoming": "Entrada",
|
||||
"HoursLabel": "Horas",
|
||||
"Back": "Voltar",
|
||||
"Next": "Próximo",
|
||||
"DropdownDefaultLabel": "Selecionar item",
|
||||
"DD": "DD",
|
||||
"MM": "MM",
|
||||
"YYYY": "AAAA",
|
||||
"HH": "HH",
|
||||
"Remove": "Remover",
|
||||
"NoResults": "Sem resultados",
|
||||
"MoreCount": "{count} mais",
|
||||
"Spacious": "Espaçoso",
|
||||
"Compact": "Compacto",
|
||||
"ThemeLight": "Claro",
|
||||
"ThemeDark": "Escuro",
|
||||
"ThemeSystem": "Sistema",
|
||||
"NoTimeZonesFound": "Nenhum fuso horário encontrado",
|
||||
"Selected": "Selecionado:",
|
||||
"Submit": "Enviar",
|
||||
"NextStep": "Próximo passo",
|
||||
"TypeHere": "Digite aqui...",
|
||||
"NormalSize": "Tamanho normal",
|
||||
"FullSize": "Tamanho completo",
|
||||
"UseMaxWidth": "Largura máxima",
|
||||
"Sidebar": "Barra lateral",
|
||||
"FontSize": "Tamanho da fonte",
|
||||
"Language": "Idioma",
|
||||
"DaysWOValue": "{days, plural, =1 {dia} other {dias}}",
|
||||
"WeeksWOValue": "{weeks, plural, =1 {semana} other {semanas}}",
|
||||
"MonthsWOValue": "{months, plural, =1 {mês} other {meses}}",
|
||||
"Filter": "Filtrar",
|
||||
"Clear": "Limpar",
|
||||
"Yesterday": "Ontem",
|
||||
"ThisWeek": "Esta semana",
|
||||
"ThisMonth": "Este mês",
|
||||
"ThisYear": "Este ano",
|
||||
"EmojiStyle": "Estilo de emoji",
|
||||
"EmojiSystem": "Padrão do sistema",
|
||||
"EmojiNoto": "Noto Color"
|
||||
}
|
||||
}
|
||||
@@ -50,6 +50,7 @@
|
||||
"English": "English",
|
||||
"Russian": "Русский",
|
||||
"Portuguese": "Português",
|
||||
"PortugueseBrazil": "Português (Brasil)",
|
||||
"Spanish": "Español",
|
||||
"Chinese": "中文",
|
||||
"French": "Français",
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
"Russian": "Русский",
|
||||
"Spanish": "Español",
|
||||
"Portuguese": "Português",
|
||||
"PortugueseBrazil": "Português (Brasil)",
|
||||
"Chinese": "中文",
|
||||
"French": "Français",
|
||||
"Italian": "Italiano",
|
||||
|
||||
@@ -50,6 +50,7 @@
|
||||
"English": "English",
|
||||
"Russian": "Русский",
|
||||
"Portuguese": "Português",
|
||||
"PortugueseBrazil": "Português (Brasil)",
|
||||
"Spanish": "Español",
|
||||
"Chinese": "中文",
|
||||
"French": "Français",
|
||||
|
||||
@@ -50,6 +50,7 @@
|
||||
"English": "English",
|
||||
"Russian": "Русский",
|
||||
"Portuguese": "Português",
|
||||
"PortugueseBrazil": "Português (Brasil)",
|
||||
"Spanish": "Español",
|
||||
"Chinese": "中文",
|
||||
"French": "Français",
|
||||
|
||||
@@ -14,29 +14,11 @@
|
||||
-->
|
||||
|
||||
<script lang="ts">
|
||||
import { onDestroy } from 'svelte'
|
||||
import Loading from './Loading.svelte'
|
||||
|
||||
export let src: string
|
||||
export let name: string
|
||||
export let fit: boolean = false
|
||||
export let css: string | undefined = undefined
|
||||
|
||||
let iframeSrc: string | undefined = undefined
|
||||
|
||||
async function loadFile (src: string): Promise<void> {
|
||||
if (iframeSrc !== undefined) {
|
||||
URL.revokeObjectURL(iframeSrc)
|
||||
iframeSrc = undefined
|
||||
}
|
||||
|
||||
const response = await fetch(src)
|
||||
const blob = await response.blob()
|
||||
iframeSrc = URL.createObjectURL(blob)
|
||||
}
|
||||
|
||||
$: void loadFile(src)
|
||||
|
||||
let iframe: HTMLIFrameElement | undefined = undefined
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/prefer-optional-chain
|
||||
@@ -58,19 +40,9 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
onDestroy(() => {
|
||||
if (iframeSrc !== undefined) {
|
||||
URL.revokeObjectURL(iframeSrc)
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
{#if iframeSrc}
|
||||
<iframe bind:this={iframe} class:fit src={iframeSrc + '#view=FitH&navpanes=0'} title={name} on:load />
|
||||
{:else}
|
||||
<Loading />
|
||||
{/if}
|
||||
<iframe bind:this={iframe} class:fit src={src + '#view=FitH&navpanes=0'} title={name} on:load />
|
||||
|
||||
<style lang="scss">
|
||||
iframe {
|
||||
|
||||
@@ -72,6 +72,7 @@
|
||||
const langs = [
|
||||
{ id: 'en', label: ui.string.English, logo: '🇺🇸' },
|
||||
{ id: 'pt', label: ui.string.Portuguese, logo: '🇵🇹' },
|
||||
{ id: 'pt-br', label: ui.string.PortugueseBrazil, logo: '🇧🇷' },
|
||||
{ id: 'es', label: ui.string.Spanish, logo: '🇪🇸' },
|
||||
{ id: 'ru', label: ui.string.Russian, logo: '🇷🇺' },
|
||||
{ id: 'zh', label: ui.string.Chinese, logo: '🇨🇳' },
|
||||
|
||||
@@ -83,6 +83,7 @@ export const uis = plugin(uiId, {
|
||||
German: '' as IntlString,
|
||||
Japanese: '' as IntlString,
|
||||
Turkish: '' as IntlString,
|
||||
PortugueseBrazil: '' as IntlString,
|
||||
MinutesBefore: '' as IntlString,
|
||||
HoursBefore: '' as IntlString,
|
||||
DaysBefore: '' as IntlString,
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"string": {
|
||||
"Achievements": "Conquistas",
|
||||
"EarliestAdopter": "Primeiro Adoptante",
|
||||
"Epic": "Epic",
|
||||
"Legendary": "Legendário"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
{
|
||||
"string": {
|
||||
"Activity": "Atividade",
|
||||
"Added": "adicionado",
|
||||
"All": "Tudo",
|
||||
"AllActivity": "Toda a atividade",
|
||||
"Attributes": "Atributos",
|
||||
"Changed": "alterado",
|
||||
"CollectionUpdated": "Atualizar {collection}",
|
||||
"Created": "Criado",
|
||||
"DocAdded": "adicionado {_class}",
|
||||
"DocCreated": "criado {_class}",
|
||||
"DocDeleted": "eliminado {_class}",
|
||||
"Edit": "Editar",
|
||||
"Edited": "Editado",
|
||||
"Emoji": "Emoji",
|
||||
"For": "Para",
|
||||
"From": "de",
|
||||
"In": "Em",
|
||||
"LastReply": "Última resposta",
|
||||
"New": "Novo",
|
||||
"NewestFirst": "Mais recente primeiro",
|
||||
"Pinned": "Fixado",
|
||||
"Reacted": "Reagiu",
|
||||
"Reactions": "Reações",
|
||||
"Reaction": "Reação",
|
||||
"Removed": "removido",
|
||||
"Replies": "Respostas",
|
||||
"RepliesCount": "{replies, plural, =1 {# resposta} other {# respostas}}",
|
||||
"Set": "definido",
|
||||
"To": "para",
|
||||
"Unset": "Não definido",
|
||||
"Update": "Atualizar",
|
||||
"Updated": "Atualizado",
|
||||
"UpdatedCollection": "Atualizado",
|
||||
"Message": "Mensagem",
|
||||
"Mentioned": "Mencionado",
|
||||
"You": "Tu",
|
||||
"Mentions": "Menções",
|
||||
"MentionedYouIn": "Foste Mencionado em {title}",
|
||||
"Messages": "Mensagens",
|
||||
"Thread": "Tópico",
|
||||
"AddReaction": "Adicionar Reação",
|
||||
"SaveForLater": "Guardar para mais tarde",
|
||||
"RemoveFromLater": "Remover dos Guardados",
|
||||
"ReactionNotificationTitle": "Reação em {title}",
|
||||
"ReactionNotificationBody": "{senderName}: {reaction}",
|
||||
"NewObject": "Novo {object}",
|
||||
"RemovedObject": "Removido {object}",
|
||||
"ChangedObject": "Alterado {object}",
|
||||
"UnsetObject": "Não definido {object}",
|
||||
"UpdatedObject": "Atualizado {object}",
|
||||
"NewObjectType": "Novo {type}: {title}",
|
||||
"RemovedObjectType": "Removido {type} : {title}",
|
||||
"AttributeSetTo": "{name} definido para {value}",
|
||||
"AddedTag": "Tag adicionado: {title}",
|
||||
"RemovedTag": "Tag removido: {title}",
|
||||
"ValueTooLarge": "Valor demasiado grande para mostrar"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"string": {
|
||||
"IntegrationLabel": "Assistente de IA",
|
||||
"IntegrationDescription": "Seu assistente pessoal alimentado por IA que ajuda a organizar, automatizar e simplificar seu fluxo de trabalho diário na plataforma",
|
||||
"ConfigLabel": "Assistente de IA",
|
||||
"ConfigDescription": "Assistente pessoal alimentado por IA",
|
||||
"Connect": "Conectar",
|
||||
"Cancel": "Cancelar",
|
||||
"Status": "Status",
|
||||
"FailedToConnect": "O serviço do Assistente de IA não está disponível",
|
||||
"Configure": "Configurar Assistente de IA"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"string": {
|
||||
"OnboardingChannelDescription": "User: {user}; Workspace: {workspace}",
|
||||
"Error": "Error: ",
|
||||
"InProject": " in project ",
|
||||
"NavigateToSpecial": "{app}: open {special}",
|
||||
"OpenSpecial": "open {special} ",
|
||||
"Set": "Set ",
|
||||
"To": " to ",
|
||||
"Open": "open ",
|
||||
"Workbench": "Workbench: ",
|
||||
"OnboardingChannel": "Canal de incorporación",
|
||||
"OnboardingChannels": "Canales de incorporación",
|
||||
"WorkspaceId": "Workspace id",
|
||||
"WorkspaceName": "Workspace name",
|
||||
"WorkspaceUrl": "Workspace url",
|
||||
"Account": "Conta",
|
||||
"UserName": "User name",
|
||||
"DisableAIReplies": "Disable AI replies",
|
||||
"ShowAIReplies": "Show AI replies"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
{
|
||||
"string": {
|
||||
"UploadDropFilesHere": "Carregar ou largar ficheiros aqui",
|
||||
"NoAttachments": "Não existem anexos para isto",
|
||||
"NoParticipants": "Não foram adicionados participantes",
|
||||
"AddAttachment": "anexou um ficheiro",
|
||||
"Attachments": "Anexos",
|
||||
"Photos": "Fotos",
|
||||
"File": "Ficheiro",
|
||||
"Files": "Ficheiros",
|
||||
"NoFiles": "Não existem ficheiros",
|
||||
"ShowMoreAttachments": "Mostrar mais",
|
||||
"Type": "Tipo",
|
||||
"Size": "Tamanho",
|
||||
"Photo": "Foto",
|
||||
"Date": "Data",
|
||||
"LastModified": "Última modificação",
|
||||
"Name": "Nome",
|
||||
"FileBrowser": "Navegador de ficheiros",
|
||||
"FileBrowserFileCounter": "{results, plural, =1 {# resultado} other {# resultados}}",
|
||||
"FileBrowserListView": "Lista",
|
||||
"FileBrowserGridView": "Grelha",
|
||||
"FileBrowserFilterFrom": "De",
|
||||
"FileBrowserFilterIn": "Em",
|
||||
"FileBrowserFilterDate": "Data",
|
||||
"FileBrowserFilterFileType": "Tipo de ficheiro",
|
||||
"FileBrowserSort": "Ordenar",
|
||||
"FileBrowserSortNewest": "Ficheiro mais recente",
|
||||
"FileBrowserSortOldest": "Ficheiro mais antigo",
|
||||
"FileBrowserSortAZ": "A a Z",
|
||||
"FileBrowserSortZA": "Z a A",
|
||||
"FileBrowserSortSmallest": "Ficheiro mais pequeno",
|
||||
"FileBrowserSortBiggest": "Ficheiro maior",
|
||||
"FileBrowserDateFilterAny": "Qualquer momento",
|
||||
"FileBrowserDateFilterToday": "Hoje",
|
||||
"FileBrowserDateFilterYesterday": "Ontem",
|
||||
"FileBrowserDateFilter7Days": "Últimos 7 dias",
|
||||
"FileBrowserDateFilter30Days": "Últimos 30 dias",
|
||||
"FileBrowserDateFilter3Months": "Últimos 3 meses",
|
||||
"FileBrowserDateFilter12Months": "Últimos 12 meses",
|
||||
"FileBrowserTypeFilterAny": "Qualquer tipo de ficheiro",
|
||||
"FileBrowserTypeFilterImages": "Imagens",
|
||||
"FileBrowserTypeFilterAudio": "Áudio",
|
||||
"FileBrowserTypeFilterVideos": "Vídeos",
|
||||
"FileBrowserTypeFilterPDFs": "PDFs",
|
||||
"AddAttachmentToSaved": "Adicionar anexo aos guardados",
|
||||
"RemoveAttachmentFromSaved": "Remover anexo dos guardados",
|
||||
"DeleteFile": "Eliminar ficheiro",
|
||||
"Description": "Descrição",
|
||||
"Pinned": "Importante",
|
||||
"PinAttachment": "Marcar como importante",
|
||||
"UnPinAttachment": "Marcar como menos importante",
|
||||
"FilterAttachments": "Anexos",
|
||||
"RemovedAttachment": "Anexo removido",
|
||||
"ContentType": "Tipo de conteúdo",
|
||||
"OpenInWindow": "Abrir numa janela",
|
||||
"Embeddings": "Incorporações"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
{
|
||||
"string": {
|
||||
"Billing": "Faturamento",
|
||||
"Subscriptions": "Assinaturas",
|
||||
"AllPlans": "Todos os planos",
|
||||
"ActivePlan": "Plano ativo",
|
||||
"ResourceUsage": "Uso de recursos",
|
||||
"DriveSize": "Tamanho dos arquivos",
|
||||
"DriveCount": "Quantidade de arquivos",
|
||||
"OfficeSessionsDuration": "Tempo de reuniões",
|
||||
"OfficeSessionsBandwidth": "Largura de banda de reuniões",
|
||||
"OfficeEgressDuration": "Tempo de gravação",
|
||||
"AI": "IA",
|
||||
"TranscriptionTime": "Tempo de transcrição",
|
||||
"TotalTokens": "Total de tokens",
|
||||
"Tier": "Plano",
|
||||
"StorageLimit": "{limit} {unit} de armazenamento",
|
||||
"TrafficLimit": "{limit} {unit} de tráfego de vídeo/áudio",
|
||||
"Common": "Common",
|
||||
"CommonDescription": "Para indivíduos e equipes começando com Huly.",
|
||||
"Rare": "Rare",
|
||||
"RareDescription": "Para criativos individuais, freelancers e micro-agências.",
|
||||
"Epic": "Epic",
|
||||
"EpicDescription": "Para empresas criativas profissionais e pequenas empresas.",
|
||||
"Legendary": "Legendary",
|
||||
"LegendaryDescription": "Melhor para grandes equipes que precisam de capacidades máximas.",
|
||||
"UnlimitedUsers": "Usuários ilimitados",
|
||||
"UnlimitedObjects": "Objetos Huly ilimitados",
|
||||
"ChangePlan": "Alterar plano",
|
||||
"Subscribe": "Assinar",
|
||||
"Monthly": "Mensal",
|
||||
"Active": "Ativo",
|
||||
"NoActivePlan": "Nenhum plano ativo",
|
||||
"SelectPlanToBegin": "Selecione um plano abaixo para começar",
|
||||
"SubscriptionEnds": "Até {date}",
|
||||
"SubscriptionRenews": "Próxima renovação: {date}",
|
||||
"SubscriptionValidUntil": "Válido até {date}",
|
||||
"ProcessingPayment": "Processando pagamento...",
|
||||
"Downgrade": "Fazer downgrade",
|
||||
"CancelSubscription": "Cancelar assinatura",
|
||||
"ConfirmUpgrade": "Atualizar assinatura?",
|
||||
"ConfirmDowngrade": "Fazer downgrade da assinatura?",
|
||||
"ConfirmCancel": "Cancelar assinatura?",
|
||||
"UpgradeDescription": "Você será cobrado até ${amount} imediatamente. O valor exato depende de seu período de faturamento atual.",
|
||||
"DowngradeDescription": "Você receberá um crédito de até ${amount} pelo tempo de assinatura restante. O downgrade entra em vigor imediatamente.",
|
||||
"CancelDescription": "Sua assinatura permanecerá ativa até o final do período de faturamento.",
|
||||
"UncancelSubscription": "Reativar assinatura",
|
||||
"ConfirmUncancel": "Reativar assinatura?",
|
||||
"UncancelDescription": "Sua assinatura será reativada e continuará a partir do final do período de faturamento atual.",
|
||||
"PriceDifference": "Diferença de preço: {amount}",
|
||||
"DialogCancel": "Cancelar",
|
||||
"DialogConfirm": "Confirmar",
|
||||
"StorageUsage": "Armazenamento",
|
||||
"TrafficUsage": "Tráfego de vídeo/áudio",
|
||||
"Usage": "Uso",
|
||||
"Of": "de",
|
||||
"UpgradePlan": "Atualizar Plano",
|
||||
"LimitReached": "Limite do workspace atingido, algumas funcionalidades podem estar desabilitadas. Atualize para restaurar acesso completo.",
|
||||
"RestrictedPlans": "Apenas o proprietário do workspace ou o administrador de faturamento podem alterar o plano de assinatura."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"string": {
|
||||
"BitrixTokenUrl": "URL do Token Bitrix24",
|
||||
"Bitrix": "",
|
||||
"BitrixDesc": "Integração com Bitrix24",
|
||||
"Settings": "Configurar",
|
||||
"NotAllowed": "Não permitido sem direitos administrativos",
|
||||
"BitrixEntityType": "Mapeamento de entidades",
|
||||
"FieldMapping": "Mapeamento de campos",
|
||||
"AddField": "Adicionar mapeamento",
|
||||
"Attribute": "Atributo",
|
||||
"MapField": "Mapear...",
|
||||
"BitrixImport": "Sincronizar com Bitrix",
|
||||
"AddMapping": "Adicionar mapeamento de entidade",
|
||||
"ConfigLabel": "Bitrix24",
|
||||
"ConfigDescription": "Extensão para integração com Bitrix 24"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,107 @@
|
||||
{
|
||||
"string": {
|
||||
"Completed": "Concluído",
|
||||
"Name": "Nome",
|
||||
"CreateBoard": "Criar quadro",
|
||||
"OpenCard": "Abrir cartão",
|
||||
"CreateCard": "Criar cartão",
|
||||
"CardName": "Nome do cartão",
|
||||
"Cards": "Cartões",
|
||||
"SelectBoard": "Selecionar quadro",
|
||||
"More": "Mais...",
|
||||
"Title": "Título",
|
||||
"ManageBoardStatuses": "Gerenciar status do quadro",
|
||||
"BoardName": "Quadro",
|
||||
"CardCreateLabel": "Cartão",
|
||||
"CardPlaceholder": "Espaço para cartão",
|
||||
"Board": "Quadro",
|
||||
"Boards": "Quadros",
|
||||
"MyBoards": "Meus quadros",
|
||||
"BoardApplication": "Quadros",
|
||||
"Card": "Cartão",
|
||||
"Assignee": "Responsável",
|
||||
"Description": "Descrição",
|
||||
"DescriptionPlaceholder": "Adicione uma descrição mais detalhada...",
|
||||
"Location": "Localização",
|
||||
"Members": "Membros",
|
||||
"IsArchived": "Arquivado",
|
||||
"BoardCreateLabel": "Quadro",
|
||||
"Settings": "Configurações",
|
||||
"Suggested": "Sugerido",
|
||||
"Labels": "Etiquetas",
|
||||
"CreateLabel": "Criar uma nova etiqueta",
|
||||
"SearchLabels": "Procurar etiquetas...",
|
||||
"SelectColor": "Selecionar uma cor",
|
||||
"NoColor": "Sem cor.",
|
||||
"NoColorInfo": "Isso não aparecerá na frente dos cartões.",
|
||||
"Checklists": "Listas de verificação",
|
||||
"ChecklistDropdownNone": "(nenhum)",
|
||||
"ShowDoneChecklistItems": "Mostrar itens marcados ({done})",
|
||||
"HideDoneChecklistItems": "Ocultar itens marcados",
|
||||
"CopyChecklistFrom": "Copiar itens de...",
|
||||
"Dates": "Datas",
|
||||
"Attachments": "Anexos",
|
||||
"AddAttachment": "Adicionar um anexo",
|
||||
"DropFileToUpload": "Solte arquivos para enviar.",
|
||||
"AttachFrom": "Anexar de...",
|
||||
"AttachmentTip": "Dica: Pode arrastar e soltar arquivos nos cartões para enviá-los.",
|
||||
"Computer": "Computador",
|
||||
"CustomFields": "Campos personalizados",
|
||||
"AddButton": "Adicionar botão",
|
||||
"Actions": "Ações",
|
||||
"Cover": "Capa",
|
||||
"Join": "Participar",
|
||||
"Move": "Mover",
|
||||
"Copy": "Copiar",
|
||||
"MakeTemplate": "Criar modelo",
|
||||
"Archive": "Arquivar",
|
||||
"SendToBoard": "Enviar para o quadro",
|
||||
"Delete": "Apagar",
|
||||
"HideDetails": "Ocultar detalhes",
|
||||
"ShowDetails": "Mostrar detalhes",
|
||||
"NewList": "Adicionar outra lista",
|
||||
"AddList": "Adicionar lista",
|
||||
"NewListPlaceholder": "Digite o título da lista...",
|
||||
"AddACard": "Adicionar um cartão",
|
||||
"AddCard": "Adicionar cartão",
|
||||
"CardTitlePlaceholder": "Digite um título para este cartão...",
|
||||
"MoveCard": "Mover cartão",
|
||||
"SelectDestination": "Selecionar destino",
|
||||
"Create": "Criar",
|
||||
"CreateDescription": "Se desejar, podemos criar um cartão para cada nova linha ({number}). Você também pode criar um cartão com um título longo.",
|
||||
"CreateSingle": "Apenas um cartão",
|
||||
"CreateMultiple": "Criar {number} cartões",
|
||||
"Cancel": "Cancelar",
|
||||
"List": "Lista",
|
||||
"Position": "Posição",
|
||||
"Current": "{label} (atual)",
|
||||
"Save": "Salvar",
|
||||
"Remove": "Remover",
|
||||
"NullDate": "D/M/AAAA",
|
||||
"ViewProfile": "Ver perfil",
|
||||
"RemoveFromCard": "Remover do cartão",
|
||||
"LinkName": "Nome do link",
|
||||
"Edit": "Editar",
|
||||
"Update": "Atualizar",
|
||||
"DeleteAttachment": "Excluir um anexo é permanente. Não há como desfazer.",
|
||||
"DeleteCard": "Todas as ações serão removidas do feed de atividades e você não poderá reabrir o cartão. Não há como desfazer.",
|
||||
"SearchMembers": "Procurar membros",
|
||||
"Menu": "Menu",
|
||||
"ShowMenu": "Mostrar menu",
|
||||
"ToArchive": "Arquivar",
|
||||
"CopyCard": "Copiar cartão",
|
||||
"AlsoCopy": "Manter...",
|
||||
"CopyTo": "Copiar para...",
|
||||
"NoResults": "Sem resultados",
|
||||
"SwitchToLists": "Alternar para listas",
|
||||
"SwitchToCards": "Alternar para cartões",
|
||||
"SearchArchive": "Pesquisar arquivo...",
|
||||
"Size": "Tamanho",
|
||||
"RemoveCover": "Remover capa",
|
||||
"DeleteChecklist": "Apagar lista de verificação",
|
||||
"DeleteChecklistConfirm": "Apagar uma lista de verificação é permanente e não há forma de a recuperar.",
|
||||
"ConvertToCard": "Converter para cartão",
|
||||
"ConfigLabel": "Quadro",
|
||||
"ConfigDescription": "Extensão para gerir quadros Kanban."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,129 @@
|
||||
{
|
||||
"string": {
|
||||
"ApplicationLabelCalendar": "Calendário",
|
||||
"Calendars": "Calendários",
|
||||
"Participants": "Participantes",
|
||||
"NoParticipants": "Nenhum participante adicionado",
|
||||
"PersonsLabel": "{name}",
|
||||
"AddDescription": "Adicionar descrição",
|
||||
"Date": "Data",
|
||||
"DueTo": "Data de vencimento",
|
||||
"Description": "Descrição",
|
||||
"Title": "Título",
|
||||
"Location": "Localização",
|
||||
"Company": "Empresa",
|
||||
"CreateCalendar": "Criar Calendário",
|
||||
"Calendar": "Calendário",
|
||||
"Events": "Eventos",
|
||||
"Event": "Evento",
|
||||
"ModeDay": "Dia",
|
||||
"ModeWeek": "Semana",
|
||||
"ModeMonth": "Mês",
|
||||
"ModeYear": "Ano",
|
||||
"Today": "Hoje",
|
||||
"TableView": "Tabela",
|
||||
"DueMinutes": "{minutes, plural, =0 {menos de um minuto} =1 {um minuto} other {# minutos}}",
|
||||
"DueHours": "{hours, plural, =0 {menos de uma hora} =1 {1 hora} other {# horas}}",
|
||||
"DueDays": "{days, plural, =0 {hoje} =1 {1 dia} other {# dias}}",
|
||||
"Reminder": "Lembrete",
|
||||
"ReminderTime": "Hora do lembrete",
|
||||
"RemindMeAt": "Lembrar-me às",
|
||||
"CreateReminder": "Criar lembrete",
|
||||
"CreatedReminder": "Lembrete criado",
|
||||
"Reminders": "Lembretes",
|
||||
"Shift": "Turno",
|
||||
"State": "Estado",
|
||||
"NoReminders": "Sem lembretes",
|
||||
"AllDay": "Todo o dia",
|
||||
"AndMore": "E mais {count}",
|
||||
"CreateEvent": "Criar evento",
|
||||
"EventFor": "Evento para: ",
|
||||
"ConfigLabel": "Calendário",
|
||||
"ConfigDescription": "Extensão para ver calendário com Eventos",
|
||||
"HideDetails": "Esconder detalhes",
|
||||
"ReccuringEvent": "Evento recorrente",
|
||||
"ExternalParticipants": "Participantes externos",
|
||||
"IntegrationDescr": "Utilize a integração com o Google Calendar",
|
||||
"Connect": "Conectar",
|
||||
"RedirectGoogle": "Será redirecionado para a página de autenticação do Google. Certifique-se de selecionar todas as permissões.",
|
||||
"ConnectCalendar": "Conectar conta Google Calendar",
|
||||
"EditRecEvent": "Editar evento recorrente",
|
||||
"RemoveRecEvent": "Remover evento recorrente",
|
||||
"ThisEvent": "Este evento",
|
||||
"ThisAndNext": "Este e os seguintes eventos",
|
||||
"AllEvents": "Todos os eventos",
|
||||
"EventTitlePlaceholder": "Título do evento",
|
||||
"TimeZone": "Fuso horário",
|
||||
"Repeat": "Repetir",
|
||||
"On": "Em",
|
||||
"Every": "Todos os",
|
||||
"After": "Depois de",
|
||||
"Ends": "Termina",
|
||||
"Never": "Nunca",
|
||||
"Day": "Dia",
|
||||
"Week": "Semana",
|
||||
"Month": "Mês",
|
||||
"Year": "Ano",
|
||||
"MondayShort": "Seg",
|
||||
"TuesdayShort": "Ter",
|
||||
"WednesdayShort": "Qua",
|
||||
"ThursdayShort": "Qui",
|
||||
"FridayShort": "Sex",
|
||||
"SaturdayShort": "Sáb",
|
||||
"SundayShort": "Dom",
|
||||
"OnUntil": "Em",
|
||||
"Times": "{count, plural, one {vez} other {vezes}}",
|
||||
"AddParticipants": "Adicionar participantes",
|
||||
"Sync": "Sincronização",
|
||||
"Busy": "Ocupado",
|
||||
"AddReminder": "Adicionar lembrete",
|
||||
"SeeAllNumberParticipants": "{value, plural, other {Ver todos # participantes}}",
|
||||
"SeeAllNumberReminders": "{value, plural, other {Ver todos # lembretes}}",
|
||||
"Visibility": "Visibilidade",
|
||||
"Private": "Apenas visível para si",
|
||||
"Public": "Visível para todos",
|
||||
"FreeBusy": "Ocupado/Livre",
|
||||
"DefaultVisibility": "Visibilidade padrão",
|
||||
"NotAllPermissions": "Não foram concedidas todas as permissões",
|
||||
"GooglePrivacy": "Huly’s use and transfer of information received from Google APIs to any other app will adhere to <a href=\"https://developers.google.com/terms/api-services-user-data-policy#additional_requirements_for_specific_api_scopes\" target=\"_blank\">Google API Services User Data Policy</a>, including the Limited Use requirements.",
|
||||
"Value": "{value}",
|
||||
"Schedule": "Agenda pública",
|
||||
"ScheduleNew": "Adicionar agenda",
|
||||
"ScheduleDeleteConfirm": "A agenda será eliminada. Confirma?",
|
||||
"ScheduleShareLink": "Partilhar link",
|
||||
"ScheduleSharedLinkMessage": "<p>Partilhe este link para permitir que outras pessoas agendem uma reunião consigo:</p><p><a href=\"{link}\" ></p>",
|
||||
"ScheduleAvailability": "Disponibilidade",
|
||||
"ScheduleUnavailable": "Indisponível",
|
||||
"ScheduleTitlePlaceholder": "Título da agenda",
|
||||
"ScheduleAddPeriod": "Adicionar período",
|
||||
"ScheduleRemovePeriod": "Remover período",
|
||||
"MeetingDuration": "Duração da reunião",
|
||||
"MeetingInterval": "Pausa entre reuniões",
|
||||
"CalDavAccess": "CalDAV Access",
|
||||
"CalDavAccessPrompt": "O protocolo CalDAV permite sincronizar o seu calendário pessoal Huly com aplicações de calendário externas. Utilize esta conta e a palavra-passe sugerida para registar o servidor Huly CalDAV numa aplicação cliente de calendário.",
|
||||
"CalDavAccessEnable": "Ativar o acesso CalDAV ao calendário pessoal no espaço de trabalho {ws}",
|
||||
"CalDavAccessServer": "Servidor CalDAV",
|
||||
"CalDavAccessAccount": "Conta Huly",
|
||||
"CalDavAccessPassword": "Password",
|
||||
"CalDavAccessPasswordWarning": "Não será possível ver esta palavra-passe novamente. Guarde-a num local seguro.",
|
||||
"MeetingScheduledNotification": "Reunião agendada",
|
||||
"MeetingRescheduledNotification": "Horário da reunião alterado",
|
||||
"MeetingCanceledNotification": "Reunião cancelada: {title}",
|
||||
"PrimaryCalendar": "Calendário principal",
|
||||
"Hidden": "Oculto",
|
||||
"Each": "Cada",
|
||||
"OnThe": "No dia",
|
||||
"First": "Primeiro",
|
||||
"Second": "Segundo",
|
||||
"Third": "Terceiro",
|
||||
"Fourth": "Quarto",
|
||||
"Fifth": "Quinto",
|
||||
"NextToLast": "Penúltimo",
|
||||
"Last": "Último",
|
||||
"Weekday": "Dia da semana",
|
||||
"WeekendDay": "Folga",
|
||||
"SynchronizedCalendars": "Calendários sincronizados",
|
||||
"Account": "Conta",
|
||||
"NoCalendars": "Nenhum calendário encontrado"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
{
|
||||
"string": {
|
||||
"Card": "Cartão",
|
||||
"CardApplication": "Cartões",
|
||||
"Cards": "Cartões",
|
||||
"Content": "Conteúdo",
|
||||
"CreateCard": "Criar Cartão",
|
||||
"CreateMasterTag": "Criar Tipo",
|
||||
"CreateTag": "Criar Tag",
|
||||
"MasterTag": "Tipo",
|
||||
"MasterTags": "Tipos",
|
||||
"Parent": "Principal",
|
||||
"Tags": "Tags",
|
||||
"Tag": "Tag",
|
||||
"AddTag": "Adicionar Tag",
|
||||
"CardLibrary": "Biblioteca de Cartões",
|
||||
"MinimizeAll": "Minimizar Tudo",
|
||||
"ExpandAll": "Expandir Tudo",
|
||||
"DeleteTag": "Excluir Tag",
|
||||
"TagRelations": "Relações de Tag",
|
||||
"DeleteTagConfirm": "Tem certeza que deseja excluir esta tag? Todas as propriedades relacionadas serão excluídas",
|
||||
"DeleteMasterTag": "Excluir Tipo",
|
||||
"DeleteMasterTagConfirm": "Tem certeza que deseja excluir este tipo? Todos os objetos relacionados a este tipo serão excluídos",
|
||||
"UnsetParent": "Remover pai",
|
||||
"SetParent": "Definir pai",
|
||||
"CreateChild": "Criar filho",
|
||||
"Children": "Filhos",
|
||||
"Views": "Visualizações",
|
||||
"CreateView": "Criar visualização",
|
||||
"EditView": "Editar visualização",
|
||||
"SelectViewType": "Selecionar tipo de visualização",
|
||||
"Document": "Documento",
|
||||
"Documents": "Documentos",
|
||||
"ChangeType": "Alterar tipo",
|
||||
"ChangeTypeWarning": "Aviso: Alterar o tipo de um cartão irá remover todos os dados para quaisquer atributos que não existem no tipo de destino. Dados anteriores do atributo podem ser restaurados alterando o cartão de volta para um tipo anterior. O conteúdo do cartão não será afetado.",
|
||||
"MasterDetailViews": "Visualizações Master-Detail",
|
||||
"SelectType": "Selecionar tipo",
|
||||
"CreateSpace": "Criar espaço",
|
||||
"NumberTypes": "{count, plural, one {# tipo} other {# tipos}}",
|
||||
"Labels": "Etiquetas",
|
||||
"Properties": "Propriedades",
|
||||
"NoChildren": "Sem filhos",
|
||||
"ConfigDescription": "Extensão para gerenciamento de conhecimento no estilo de banco de dados.",
|
||||
"AddCollaborators": "Adicionar colaboradores",
|
||||
"CardTitle": "Título",
|
||||
"Post": "Publicar",
|
||||
"GetIndividualPublicLink": "Obter link público personalizado",
|
||||
"ShowLess": "Mostrar menos",
|
||||
"CardContent": "O que você quer compartilhar?",
|
||||
"Feed": "Feed",
|
||||
"AllCards": "Todos os Cartões",
|
||||
"Favorites": "Favoritos",
|
||||
"RemoveCard": "Remover cartão",
|
||||
"UpdateCard": "Atualizar cartão",
|
||||
"CreateCardPermission": "Criar cartão",
|
||||
"AddTagPermission": "Adicionar etiqueta",
|
||||
"RemoveTag": "Remover etiqueta",
|
||||
"ForbidRemoveCard": "Proibir remoção de cartão",
|
||||
"ForbidUpdateCard": "Proibir atualização de cartão",
|
||||
"ForbidCreateCardPermission": "Proibir criação de cartão",
|
||||
"ForbidAddTagPermission": "Proibir adicionar etiqueta",
|
||||
"ForbidRemoveTag": "Proibir remover etiqueta",
|
||||
"Duplicate": "Duplicar",
|
||||
"Version": "Versão",
|
||||
"Versions": "Versões",
|
||||
"NewVersion": "Nova versão",
|
||||
"Versioning": "Controle de versões",
|
||||
"EnableVersioning": "Ativar controle de versões",
|
||||
"EnableVersioningConfirm": "Deseja ativar o controle de versões?",
|
||||
"NewVersionConfirmation": "Deseja criar uma nova versão?",
|
||||
"RelationCopyDescr": "Quais relações você deseja copiar?",
|
||||
"Import": "Importar",
|
||||
"Export": "Exportar"
|
||||
}
|
||||
}
|
||||
@@ -55,14 +55,26 @@
|
||||
<div class="divider" />
|
||||
{/if}
|
||||
<div class="masterTag">
|
||||
<MasterTagAttributes bind:this={masterTagAttributes} {readonly} {value} {ignoreKeys} fourRows={columns === 2} />
|
||||
<MasterTagAttributes
|
||||
bind:this={masterTagAttributes}
|
||||
readonly={readonly || value.readonlySections?.includes(value._class)}
|
||||
{value}
|
||||
{ignoreKeys}
|
||||
fourRows={columns === 2}
|
||||
/>
|
||||
</div>
|
||||
{#if mixins.length > 0}
|
||||
<div class="divider" />
|
||||
<Grid column={columns} columnGap={0} rowGap={0} alignItems={'start'}>
|
||||
{#each mixins as tag, i (tag._id)}
|
||||
<div class="tag" class:withoutBorder={Math.ceil((i + 1) / columns) === Math.ceil(mixins.length / columns)}>
|
||||
<TagAttributes bind:this={tagAttributes[i]} {readonly} {tag} {value} {ignoreKeys} />
|
||||
<TagAttributes
|
||||
bind:this={tagAttributes[i]}
|
||||
readonly={readonly || value.readonlySections?.includes(tag._id)}
|
||||
{tag}
|
||||
{value}
|
||||
{ignoreKeys}
|
||||
/>
|
||||
</div>
|
||||
{/each}
|
||||
</Grid>
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
<div class="content" class:hidden>
|
||||
<Content
|
||||
{doc}
|
||||
readonly={readonly || updatePermissionForbidden}
|
||||
readonly={readonly || updatePermissionForbidden || doc.readonlySections?.includes(doc._class)}
|
||||
content={contentDiv}
|
||||
showToc={false}
|
||||
on:loaded
|
||||
|
||||
@@ -57,9 +57,10 @@ export interface Card extends Doc, IconProps, VersionableDoc {
|
||||
parentInfo: ParentInfo[]
|
||||
parent?: Ref<Card> | null
|
||||
rank: Rank
|
||||
readonly?: boolean
|
||||
|
||||
peerId?: string
|
||||
|
||||
readonlySections?: Ref<MasterTag>[]
|
||||
}
|
||||
|
||||
export interface CardSpace extends TypedSpace {
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"string": {
|
||||
"Channel": "Canal",
|
||||
"Channels": "Canais",
|
||||
"Chat": "Chat",
|
||||
"Description": "Descrição",
|
||||
"Loading": "Carregando...",
|
||||
"MessageIn": "Mensagem em #{title}",
|
||||
"Thread": "Tópico",
|
||||
"Threads": "Tópicos",
|
||||
"Title": "Título",
|
||||
"All": "Tudo",
|
||||
"Inbox": "Caixa de entrada",
|
||||
"ReactedToYourMessage": "reacionou ao seu mensagem",
|
||||
"ClearAll": "Limpar tudo",
|
||||
"InboxIsClear": "Caixa de entrada está vazia",
|
||||
"YouDontHaveAnyNewMessages": "Não tem nenhuma nova mensagem"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,137 @@
|
||||
{
|
||||
"string": {
|
||||
"ApplicationLabelChunter": "Conversas",
|
||||
"LeftComment": "deixou um comentário",
|
||||
"Channels": "Canais",
|
||||
"DirectMessages": "Mensagens diretas",
|
||||
"CreateChannel": "Criar canal",
|
||||
"NewDirectMessage": "Nova mensagem direta",
|
||||
"ChannelName": "Nome",
|
||||
"ChannelNamePlaceholder": "Canal",
|
||||
"ChannelDescription": "Descrição",
|
||||
"Channel": "Canal",
|
||||
"DirectMessage": "Mensagem direta",
|
||||
"EditUpdate": "Guardar...",
|
||||
"EditCancel": "Cancelar",
|
||||
"Comments": "Comentários",
|
||||
"About": "Sobre",
|
||||
"Members": "Membros",
|
||||
"NoMembers": "Sem membros",
|
||||
"MentionedIn": "Mencionou-o(a) em ",
|
||||
"Mentioned": "Mencionado(a)",
|
||||
"ContactInfo": "Informações de contacto",
|
||||
"Content": "Conteúdo",
|
||||
"Comment": "Comentário",
|
||||
"Message": "Mensagem",
|
||||
"MessageOn": "Mensagem em",
|
||||
"On": "em",
|
||||
"Reference": "Referência",
|
||||
"Chat": "Conversa",
|
||||
"In": "Em",
|
||||
"MentionNotification": "Mencionado(a)",
|
||||
"Topic": "Tópico",
|
||||
"Thread": "Conversa em cadeia",
|
||||
"Threads": "Conversas em cadeia",
|
||||
"New": "Novo(a)",
|
||||
"MarkUnread": "Marcar como não lido",
|
||||
"GetNewReplies": "Ser notificado sobre novas respostas",
|
||||
"TurnOffReplies": "Desativar notificações para respostas",
|
||||
"PinMessage": "Fixar mensagem",
|
||||
"UnpinMessage": "Desafixar mensagem",
|
||||
"Pinned": "Fixado(a)",
|
||||
"EditMessage": "Editar mensagem",
|
||||
"Edited": "editado(a)",
|
||||
"DeleteMessage": "Eliminar mensagem",
|
||||
"AndYou": "{participants, plural, =0 {Apenas tu} other {e tu}}",
|
||||
"ShowMoreReplies": "Mostrar mais {count} respostas",
|
||||
"Settings": "Definições",
|
||||
"ArchiveChannel": "Arquivar canal",
|
||||
"UnarchiveChannel": "Desarquivar canal",
|
||||
"ArchiveConfirm": "Quando arquivar um canal, ele é arquivado para todos.<br/><br/>Ninguém poderá enviar mensagens, mas ainda terão acesso ao histórico do canal.<br/><br/>Ainda poderá encontrar o conteúdo do canal através da pesquisa.<br/>E poderá sempre desarquivar o canal no futuro, se necessário.\n",
|
||||
"UnarchiveConfirm": "Deseja desarquivar o canal?",
|
||||
"AddToSaved": "Adicionar aos guardados",
|
||||
"RemoveFromSaved": "Remover dos guardados",
|
||||
"EmptySavedHeader": "Adicione mensagens para consultar mais tarde",
|
||||
"EmptySavedText": "Marque as suas tarefas pendentes ou guarde algo para mais tarde. Apenas tu podes ver os seus itens guardados, por isso use-os como quiser.",
|
||||
"SharedBy": "Partilhado por {name} {time}",
|
||||
"LeaveChannel": "Sair do canal",
|
||||
"ChannelBrowser": "Explorador de canais",
|
||||
"Saved": "Guardado(a)",
|
||||
"ConvertToPrivate": "Converter em canal privado",
|
||||
"MessagesBrowser": "Explorador de mensagens",
|
||||
"CreateBy": "Criado por",
|
||||
"ThreadMessage": "Mensagem em cadeia",
|
||||
"ChunterBrowser": "Explorador",
|
||||
"Messages": "Mensagens",
|
||||
"NoResults": "Nenhum resultado",
|
||||
"CopyLink": "Copiar ligação",
|
||||
"FilterBacklinks": "Links anteriores",
|
||||
"DM": "MD (Mensagem direta)",
|
||||
"DMNotification": "Enviou-lhe uma mensagem",
|
||||
"ConfigLabel": "Conversas",
|
||||
"ConfigDescription": "Extensão para realizar comunicações por texto",
|
||||
"LastMessage": "Última mensagem",
|
||||
"You": "Tu",
|
||||
"YouHaveJoinedTheConversation": "Entrou na conversa",
|
||||
"NoMessages": "Ainda não existem mensagens",
|
||||
"DirectNotificationTitle": "{senderName}",
|
||||
"DirectNotificationBody": "{message}",
|
||||
"MessageNotificationBody": "{senderName}: {message}",
|
||||
"AddCommentPlaceholder": "Adicionar comentário...",
|
||||
"Reacted": "Reagiu",
|
||||
"Docs": "Documentos",
|
||||
"NewestFirst": "Mais recentes primeiro",
|
||||
"ReplyToThread": "Responder à conversa em cadeia",
|
||||
"SentMessage": "Mensagem enviada",
|
||||
"Direct": "Direto(a)",
|
||||
"RepliedToThread": "Respondido à conversa em cadeia",
|
||||
"RepliedTo": "respondeu a: {message}",
|
||||
"AllChannels": "Todos os canais",
|
||||
"AllContacts": "Todos os contatos",
|
||||
"NewChannel": "Novo canal",
|
||||
"TopicOptional": "Tópico (opcional)",
|
||||
"Visibility": "Visibilidade",
|
||||
"Public": "Público",
|
||||
"Private": "Privado",
|
||||
"NewDirectChat": "Novo chat direto",
|
||||
"AddMembers": "Adicionar membros",
|
||||
"PinnedCount": "{count} fixados",
|
||||
"LoadingHistory": "Carregando histórico...",
|
||||
"UnpinChannels": "Desafixar todos os canais",
|
||||
"ArchiveActivityConfirmationTitle": "Arquivar todos os canais de atividade?",
|
||||
"ArchiveActivityConfirmationMessage": "Tem a certeza de que deseja arquivar todos os canais de atividade? Esta operação não pode ser desfeita.",
|
||||
"CloseConversation": "Fechar conversa",
|
||||
"Starred": "Em destaque",
|
||||
"DeleteStarred": "Eliminar em destaque",
|
||||
"StarChannel": "Colocar em destaque o canal",
|
||||
"StarConversation": "Colocar em destaque a conversa",
|
||||
"UnstarChannel": "Remover destaque do canal",
|
||||
"UnstarConversation": "Remover destaque da conversa",
|
||||
"JoinChannelHeader": "Clique em \"Participar\" para começar.",
|
||||
"JoinChannelText": "Depois de entrar, você poderá ler todas as mensagens e contribuir na discussão.",
|
||||
"NoMessagesInChannel": "Ainda não existem mensagens neste canal.",
|
||||
"SendMessagesInChannel": "Envie a sua primeira mensagem!",
|
||||
"LatestMessages": "↓ Últimas mensagens",
|
||||
"Joined": "Entrou",
|
||||
"Left": "Saiu",
|
||||
"Added": "Adicionado(a)",
|
||||
"Removed": "Removido(a)",
|
||||
"CreatedChannelOn": "Criou este canal em {date}",
|
||||
"ChannelMessages": "Mensagens do canal",
|
||||
"JoinChannel": "Participar no canal",
|
||||
"YouJoinedChannel": "Entrou no canal",
|
||||
"AndMore": "e mais {count}",
|
||||
"IsTyping": "está a escrever...",
|
||||
"ThreadIn": "Conversa em cadeia em {name}",
|
||||
"TranslateMessage": "Traduzir mensagem",
|
||||
"Translate": "Traduzir",
|
||||
"ShowOriginal": "Mostrar original",
|
||||
"Translating": "A traduzir...",
|
||||
"StartConversation": "Iniciar conversa",
|
||||
"ViewingThreadFromArchivedChannel": "Está a visualizar uma conversa em cadeia de um canal arquivado",
|
||||
"ViewingArchivedChannel": "Está a visualizar um canal arquivado",
|
||||
"OpenChatInSidebar": "Abrir chat na barra lateral",
|
||||
"NoThreadsYet": "Não há conversas ainda.",
|
||||
"SummarizeMessages": "Resumir discussão"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,98 @@
|
||||
{
|
||||
"string": {
|
||||
"Messages": "Mensagens",
|
||||
"FirstMessages": "Primeiras Mensagens",
|
||||
"LatestMessages": "Últimas Mensagens",
|
||||
"Subscribe": "Subscrever",
|
||||
"Unsubscribe": "Cancelar subscrição",
|
||||
"File": "Arquivo",
|
||||
"Files": "Arquivos",
|
||||
"Added": "Adicionado",
|
||||
"All": "Todos ({count})",
|
||||
"Attach": "Anexar",
|
||||
"Cancel": "Cancelar",
|
||||
"Edit": "Editar",
|
||||
"Edited": "Editado",
|
||||
"Emoji": "Emoji",
|
||||
"HoursAgo": "{hours, plural, =0 {há menos de uma hora} =1 {há uma hora} other {há # horas}}",
|
||||
"JustNow": "Agora mesmo",
|
||||
"LastReply": "Última resposta",
|
||||
"Mention": "Mencionar",
|
||||
"MinutesAgo": "{minutes, plural, =0 {há menos de um minuto} =1 {há um minuto} other {há # minutos}}",
|
||||
"MonthAt": "{month} às {time}",
|
||||
"New": "Novo",
|
||||
"Removed": "Removido",
|
||||
"RepliesCount": "{count, plural, =0 {sem respostas} =1 {1 resposta} other {# respostas}}",
|
||||
"Reply": "Responder",
|
||||
"Send": "Enviar",
|
||||
"Set": "Definir",
|
||||
"ShowFormatting": "Mostrar formatação",
|
||||
"To": "Para",
|
||||
"Today": "Hoje",
|
||||
"Unset": "Não definido",
|
||||
"WeekdayAt": "{weekday} às {time}",
|
||||
"YearAt": "{year} às {time}",
|
||||
"Yesterday": "Ontem",
|
||||
"YesterdayAt": "Ontem às {time}",
|
||||
"AndMore": "e mais {count}",
|
||||
"IsTyping": "{count, plural, =1 {está digitando} other {estão digitando}}",
|
||||
"IsThinking": "{count, plural, =1 {está pensando} other {estão pensando}}",
|
||||
"Loading": "Carregando...",
|
||||
"MessageIn": "Mensagem #{title}",
|
||||
"ThreadWasDeleted": "Este thread foi excluído.",
|
||||
"MessageWasRemoved": "Este mensagem foi removida.",
|
||||
"JoinedThe": "Juntou-se ao",
|
||||
"LeftThe": "Deixou o",
|
||||
"Translating": "Traduzindo...",
|
||||
"ShowOriginal": "Mostrar original",
|
||||
"AddReaction": "Adicionar reação",
|
||||
"ReplyInThread": "Responder no thread",
|
||||
"TranslateMessage": "Traduzir mensagem",
|
||||
"ShowOriginalMessage": "Mostrar mensagem original",
|
||||
"EditMessage": "Editar mensagem",
|
||||
"RemoveMessage": "Remover mensagem",
|
||||
"CreateCard": "Criar cartão",
|
||||
"MessageAlreadyHasCardAttached": "Oops! Este mensagem já tem um cartão anexado.",
|
||||
"CreatePoll": "Criar enquete",
|
||||
"Poll": "Enquete",
|
||||
"QuestionIsRequired": "É necessária uma pergunta.",
|
||||
"AnswerIsRequired": "É necessária uma resposta.",
|
||||
"OptionIsRequired": "É necessária uma opção.",
|
||||
"StartDateMustBeInTheFuture": "A data de início deve estar no futuro.",
|
||||
"EndDateMustBeInTheFuture": "A data de término deve estar no futuro.",
|
||||
"Question": "Pergunta",
|
||||
"AskQuestion": "Fazer uma pergunta",
|
||||
"PollOptions": "Opções do enquete",
|
||||
"Option": "Opção",
|
||||
"AnonymousVoting": "Votação anônima",
|
||||
"MultipleChoice": "Escolha múltipla",
|
||||
"QuizMode": "Modo de quiz",
|
||||
"StartTime": "Hora de início",
|
||||
"EndTime": "Hora de término",
|
||||
"OpenPoll": "Abrir enquete",
|
||||
"RetractVote": "Retirar voto",
|
||||
"Quiz": "Quiz",
|
||||
"VotesCount": "{count, plural, =0 {nenhum voto} =1 {1 voto} other {# votos}}",
|
||||
"Vote": "Votar",
|
||||
"ShowResults": "Mostrar resultados",
|
||||
"Ended": "Termina",
|
||||
"StartsAt": "Começa às {date}",
|
||||
"EndsAt": "Termina às {date}",
|
||||
"StartsTomorrow": "Começa amanhã às {date}",
|
||||
"EndsTomorrow": "Termina amanhã às {date}",
|
||||
"PollResults": "Resultados do enquete",
|
||||
"Polls": "Enquetes",
|
||||
"TotalVotes": "Total de votos",
|
||||
"Voted": "Votado",
|
||||
"VotedFor": "Votado para",
|
||||
"RevokedVote": "Revogar voto",
|
||||
"AnonymousQuiz": "Quiz anônimo",
|
||||
"Direct": "Direto",
|
||||
"Directs": "Diretos",
|
||||
"Members": "Membros",
|
||||
"Translate": "Traduzir",
|
||||
"WriteMessageEllipsis": "Escreva uma mensagem...",
|
||||
"EditMessageEllipsis": "Editar mensagem...",
|
||||
"ArrowDownMessages": "↓ Últimas mensagens"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,134 @@
|
||||
{
|
||||
"string": {
|
||||
"Apply": "Aplicar",
|
||||
"Contacts": "Contatos",
|
||||
"Persons": "Pessoas",
|
||||
"Organizations": "Empresas",
|
||||
"CreatePerson": "Pessoa",
|
||||
"CreateOrganization": "Empresa",
|
||||
"OrganizationNamePlaceholder": "Nome da empresa",
|
||||
"OrganizationsNamePlaceholder": "Empresas",
|
||||
"PersonFirstNamePlaceholder": "Primeiro nome",
|
||||
"PersonLastNamePlaceholder": "Último nome",
|
||||
"PersonLocationPlaceholder": "Localização",
|
||||
"PersonsNamePlaceholder": "Pasta",
|
||||
"Name": "Nome",
|
||||
"SelectFolder": "Selecionar pasta",
|
||||
"OrganizationsFolder": "Pasta de empresas",
|
||||
"PersonsFolder": "Pasta de pessoas",
|
||||
"ContactCreateLabel": "Criar contato",
|
||||
"SearchEmployee": "Procurar por funcionário...",
|
||||
"SearchPerson": "Procurar por pessoa...",
|
||||
"SearchOrganization": "Procurar por empresa...",
|
||||
"ContactInfo": "Informações de contato",
|
||||
"Contact": "Contato",
|
||||
"Location": "Localização",
|
||||
"Channel": "Registro de contato",
|
||||
"ChannelProvider": "Provedor de canal",
|
||||
"Person": "Pessoa",
|
||||
"Organization": "Empresa",
|
||||
"Employee": "Funcionário",
|
||||
"DeleteEmployee": "Excluir funcionário",
|
||||
"DeleteEmployeeDescr": "Tem certeza de que deseja excluir o funcionário da área de trabalho?",
|
||||
"Value": "Valor",
|
||||
"FullDescription": "Descrição completa",
|
||||
"Phone": "Telefone",
|
||||
"LinkedIn": "LinkedIn",
|
||||
"GitHub": "GitHub",
|
||||
"Twitter": "Twitter",
|
||||
"Google": "Google",
|
||||
"Telegram": "Telegram",
|
||||
"PhonePlaceholder": "+351 21 123 4567",
|
||||
"LinkedInPlaceholder": "https://pt.linkedin.com/in/jappleseed",
|
||||
"AtPlaceHolder": "@appleseed",
|
||||
"FacebookPlaceholder": "https://www.facebook.com/jappleseed",
|
||||
"Facebook": "Facebook",
|
||||
"HomepagePlaceholder": "https://jappleseed.com",
|
||||
"Homepage": "Página inicial",
|
||||
"SocialLinks": "Links sociais",
|
||||
"ViewActivity": "Ver atividade",
|
||||
"PersonAlreadyExists": "Contato já existe...",
|
||||
"Status": "Estado",
|
||||
"SetStatus": "Definir estado",
|
||||
"ClearStatus": "Limpar estado",
|
||||
"SaveStatus": "Salvar",
|
||||
"Cancel": "Cancelar",
|
||||
"StatusDueDate": "Data de vencimento",
|
||||
"NoExpire": "Sem expiração",
|
||||
"TypeLabel": "Tipo",
|
||||
"StatusDueDateTooltip": "Até {date}",
|
||||
"CopyToClipboard": "Copiar",
|
||||
"ViewFullProfile": "Ver perfil completo",
|
||||
"Member": "Membro",
|
||||
"Members": "Membros",
|
||||
"NoMembers": "Nenhum membro adicionado",
|
||||
"AddMember": "Adicionar membro",
|
||||
"KickEmployee": "Expulsar funcionário",
|
||||
"KickEmployeeDescr": "Tem certeza de que deseja expulsar o funcionário da área de trabalho? Esta ação não pode ser desfeita",
|
||||
"ResendInvite": "Reenviar Convite",
|
||||
"ResendInviteDescr": "Tem certeza de que deseja reenviar um convite para este usuário no espaço de trabalho?",
|
||||
"Email": "E-mail",
|
||||
"CreateEmployee": "Criar funcionário",
|
||||
"Inactive": "Inativo",
|
||||
"Active": "Ativo",
|
||||
"Role": "Função",
|
||||
"Birthday": "Aniversário",
|
||||
"UseImage": "Foto anexada",
|
||||
"UseGravatar": "Gravatar",
|
||||
"UseColor": "Cor",
|
||||
"NotSpecified": "Não especificado",
|
||||
"Whatsapp": "WhatsApp",
|
||||
"WhatsappPlaceholder": "WhatsApp",
|
||||
"Skype": "Skype",
|
||||
"SkypePlaceholder": "Skype",
|
||||
"Profile": "Perfil",
|
||||
"ProfilePlaceholder": "Perfil...",
|
||||
"CurrentEmployee": "Funcionário atual",
|
||||
"MergePersons": "Mesclar contatos",
|
||||
"MergePersonsFrom": "Contato de origem",
|
||||
"MergePersonsTo": "Contato final",
|
||||
"SelectAvatar": "Selecionar avatar",
|
||||
"Avatar": "Avatar",
|
||||
"AvatarProvider": "Provedor de avatar",
|
||||
"GravatarsManaged": "Gravatars gerenciados",
|
||||
"Through": "através de",
|
||||
"AddMembersHeader": "Adicionar membros a {value}:",
|
||||
"Assigned": "Atribuído",
|
||||
"Unassigned": "Não atribuído",
|
||||
"CategoryCurrentUser": "Utilizador atual",
|
||||
"CategoryOther": "Outro",
|
||||
"NumberMembers": "{count, plural, =0 {sem membros} =1 {1 membro} other {# membros}}",
|
||||
"Position": "Posição",
|
||||
"ConfigLabel": "Contactos",
|
||||
"ConfigDescription": "Extensão para armazenar informações sobre todos os Funcionários e outros contactos de Pessoas/Organizações.",
|
||||
"HasMessagesIn": "tem mensagens em",
|
||||
"HasNewMessagesIn": "tem novas mensagens em",
|
||||
"Employees": "Funcionários",
|
||||
"People": "Pessoas",
|
||||
"For": "Para",
|
||||
"SelectUsers": "Selecionar utilizadores",
|
||||
"AddGuest": "Adicionar convidado",
|
||||
"ViewProfile": "Ver perfil",
|
||||
"Viber": "Viber",
|
||||
"ViberPlaceholder": "Viber",
|
||||
"SocialId": "Identificação social",
|
||||
"SocialIds": "Identificações sociais",
|
||||
"Type": "Tipo",
|
||||
"Confirmed": "Confirmado",
|
||||
"UserProfile": "Perfil do usuário",
|
||||
"DeactivatedAccount": "Conta desativada",
|
||||
"LocalTime": "hora local",
|
||||
"Everyone": "Todos",
|
||||
"Here": "Aqui",
|
||||
"EveryoneDescription": "Notificar todos neste {title}",
|
||||
"HereDescription": "Notificar todos neste {title}",
|
||||
"Guest": "Convidado",
|
||||
"Deleted": "Excluído",
|
||||
"CannotMerge": "Erro: Não é possível mesclar pessoas globais",
|
||||
"AutoTranslation": "Tradução automática",
|
||||
"TranslateTo": "Traduzir para",
|
||||
"DontTranslate": "Não traduzir",
|
||||
"SelectLanguage": "Selecionar idioma",
|
||||
"SelectLanguages": "Selecionar idiomas"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,115 @@
|
||||
{
|
||||
"string": {
|
||||
"ID": "ID",
|
||||
"Code": "Código",
|
||||
"Number": "Número",
|
||||
"Category": "Categoria",
|
||||
"CollaborativeDocument": "Documento colaborativo",
|
||||
"ControlledDocument": "Documento controlado",
|
||||
"Requests": "Solicitações",
|
||||
"EffectiveDate": "Data de vigência",
|
||||
"PlannedEffectiveDate": "Data de vigência planejada",
|
||||
"Rank": "Classificação",
|
||||
"DocumentRequest": "Solicitação de documento",
|
||||
"DocumentReviewRequest": "Solicitação de revisão de documento",
|
||||
"DocumentApprovalRequest": "Solicitação de aprovação de documento",
|
||||
"ControlledStatus": "Status de controle",
|
||||
"Categories": "Categorias",
|
||||
"Guidance": "Orientação",
|
||||
"Required": "Obrigatório",
|
||||
"Description": "Descrição",
|
||||
"Major": "Principal",
|
||||
"Minor": "Secundária",
|
||||
"Patch": "Correção",
|
||||
"ValidationWorkflow": "Fluxo de validação",
|
||||
"Creator": "Criador",
|
||||
"ChangeOwner": "Alterar autor do documento",
|
||||
"ChangeOwnerHintBeginning": "Transferir autoria do documento",
|
||||
"ChangeOwnerHintEnd": "para outra pessoa.",
|
||||
"ChangeOwnerWarning": "Você não poderá mais editar este documento após essa ação.",
|
||||
"SelectOwner": "Selecionar novo autor",
|
||||
"CreateDocument": "Criar novo documento",
|
||||
"CreateTemplate": "Criar novo modelo",
|
||||
"Documents": "Documentos",
|
||||
"Document": "Documento",
|
||||
"NewDocumentDialogClose": "Deseja fechar este diálogo?",
|
||||
"NewDocumentCloseNote": "Todas as alterações serão perdidas",
|
||||
"Cancel": "Cancelar",
|
||||
"EditorPlaceholder": "Digite para começar a editar...",
|
||||
"Version": "Versão",
|
||||
"TemplateVersion": "Versão do modelo",
|
||||
"VersionValue": "v{major}.{minor}",
|
||||
"SearchDocument": "Buscar documento...",
|
||||
"CreateEnVersion": "Criar versão para revisão",
|
||||
"Approvers": "Aprovadores",
|
||||
"ExternalApprovers": "Aprovadores externos",
|
||||
"CoAuthors": "Coautores",
|
||||
"Status": "Status",
|
||||
"TemplateName": "Nome do modelo",
|
||||
"DocumentApplication": "Documentos controlados",
|
||||
"MyDocuments": "Meus documentos",
|
||||
"Library": "Biblioteca",
|
||||
"Labels": "Etiquetas",
|
||||
"Author": "Autor",
|
||||
"Review": "Revisão",
|
||||
"Approval": "Aprovação",
|
||||
"Reviewer": "Revisor",
|
||||
"Approver": "Aprovador",
|
||||
"DeleteCategory": "Excluir categoria?",
|
||||
"DeleteCategoryHint": "Essa ação não pode ser desfeita",
|
||||
"DeleteCategoryWarning": "A categoria não pode ser excluída porque está em uso",
|
||||
"Latest": "Atual",
|
||||
"Draft": "Rascunho",
|
||||
"Reviewers": "Revisores",
|
||||
"ViewMode": "Visualização",
|
||||
"EditMode": "Edição",
|
||||
"ComparisonMode": "Comparar",
|
||||
"Compare": "Comparar:",
|
||||
"Against": "Contra:",
|
||||
"ComparisonModeNotSupported": "Modo de comparação não suportado.",
|
||||
"CreateDraft": "Criar rascunho",
|
||||
"SendForApproval": "Enviar para aprovação",
|
||||
"SendForReview": "Enviar para revisão",
|
||||
"CompleteReview": "Finalizar revisão",
|
||||
"Approve": "Aprovar",
|
||||
"Reject": "Rejeitar",
|
||||
"ConfirmApproval": "Confirmar aprovação",
|
||||
"ConfirmRejection": "Confirmar rejeição",
|
||||
"ProvideRejectionReason": "Informe o motivo da rejeição...",
|
||||
"RejectionReason": "Motivo da rejeição",
|
||||
"ConfirmReviewCompletion": "Confirmar conclusão da revisão",
|
||||
"ConfirmApprovalSubmission": "Confirmar envio para aprovação",
|
||||
"ConfirmReviewSubmission": "Confirmar envio para revisão",
|
||||
"AddApprovalTitle": "Envie seu documento para aprovação",
|
||||
"AddApprovalDescription1": "Para que seu documento seja aprovado, ele deve atender a alguns requisitos:",
|
||||
"AddApprovalDescription2": "deve estar no status 'Rascunho' ou 'Revisado'",
|
||||
"AddApprovalDescription3": "não deve conter comentários não resolvidos",
|
||||
"AddApprovalDescription4": "se houver treinamento planejado, ele deve estar no status 'Liberado'",
|
||||
"NoApprovalsDescription": "Não há aprovações para esta versão do documento",
|
||||
"CurrentVersion": "Versão atual",
|
||||
"FirstDraftVersion": "Esta é a primeira versão de rascunho do documento. Ainda não há histórico.",
|
||||
"FirstOrNotAvailable": "Esta é a primeira versão disponível do documento. Ainda não há histórico ou não está disponível.",
|
||||
"Obsolete": "Obsoleto",
|
||||
"MakeDocumentObsolete": "Marcar como obsoleto",
|
||||
"MakeDocumentObsoleteConfirm": "Tem certeza de que deseja marcar os seguintes documentos como obsoletos: {titles}?",
|
||||
"ModificationDate": "Modificado em",
|
||||
"Modified": "Modificado",
|
||||
"Owner": "Responsável",
|
||||
"AssignedTo": "Atribuído a",
|
||||
"Unassigned": "Não atribuído",
|
||||
"Title": "Título",
|
||||
"CreateFolder": "Criar nova pasta",
|
||||
"RenameFolder": "Renomear pasta",
|
||||
"CreateChildFolder": "Criar subpasta",
|
||||
"AllDocumentSpaces": "Todos os espaços de documentos"
|
||||
},
|
||||
"controlledDocStates": {
|
||||
"Empty": "",
|
||||
"Approved": "Aprovado",
|
||||
"InApproval": "Em aprovação",
|
||||
"InReview": "Em revisão",
|
||||
"Reviewed": "Revisado",
|
||||
"Rejected": "Rejeitado",
|
||||
"ToReview": "A revisar"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"string": {
|
||||
"Downloads": "Descargas",
|
||||
"Completed": "Completado",
|
||||
"Cancelled": "Cancelado",
|
||||
"Interrupted": "Interrumpido",
|
||||
"Paused": "Pausado",
|
||||
"Progressing": "Progresando"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"string": {
|
||||
"ShowNotifications": "Mostrar notificações",
|
||||
"PlaySound": "Reproduzir som",
|
||||
"BounceAppIcon": "Fazer o ícone da aplicação saltar (apenas Mac)",
|
||||
"ShowBadge": "Mostrar um distintivo no ícone da aplicação",
|
||||
"SoundAndAppearance": "Som e aparência",
|
||||
"HaveGotANotification": "Recebeu uma notificação",
|
||||
"TotalNotificationsCount": "Tem {count, plural, =1 {# notificação} other {# notificações}} no total"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"string": {
|
||||
"ViewMode": "Modo de visualização",
|
||||
"Unified": "Unificado",
|
||||
"Split": "Dividido",
|
||||
"Viewed": "Visualizado",
|
||||
"ShowDiff": "Mostrar diferença",
|
||||
"NoChanges": "A diferença do ficheiro não tem alterações",
|
||||
"LargeDiffsAreHidden": "As diferenças grandes não são renderizadas por padrão.",
|
||||
"FileIsTooLarge": "O ficheiro é demasiado grande para ser exibido.",
|
||||
"FileWasRenamed": "O ficheiro foi renomeado sem alterações.",
|
||||
"FileWasDeleted": "O ficheiro foi eliminado."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"string": {
|
||||
"Document": "Documento",
|
||||
"ParentDocument": "Documento superior",
|
||||
"ChildDocument": "Documento inferior",
|
||||
"CreateDocument": "Criar um documento",
|
||||
"Documents": "Documentos",
|
||||
"CreateAnVersion": "Criar uma nova versão",
|
||||
"DocumentNamePlaceholder": "Sin título",
|
||||
"Name": "Nome",
|
||||
"Cancel": "Cancelar",
|
||||
"Version": "Versão",
|
||||
"SearchDocument": "Pesquisar documento...",
|
||||
"Snapshot": "Instantâneo",
|
||||
"NoVersions": "Não há versões definidas",
|
||||
"DocumentApplication": "Documentos",
|
||||
"MyDocuments": "Meus documentos",
|
||||
"Teamspace": "Espaço de trabalho",
|
||||
"Teamspaces": "Espaços de trabalho",
|
||||
"Labels": "Etiquetas",
|
||||
"AddLabel": "Adicionar etiqueta",
|
||||
"Authors": "Autores",
|
||||
"Backlinks": "Links de retorno",
|
||||
"History": "Histórico",
|
||||
"DescriptionPlaceholder": "digite detalhes...",
|
||||
"CreateTeamspace": "Criar espaço de trabalho",
|
||||
"EditTeamspace": "Editar espaço de trabalho",
|
||||
"NewTeamspace": "Novo espaço de trabalho",
|
||||
"TeamspaceTitle": "Título do espaço de trabalho",
|
||||
"TeamspaceTitlePlaceholder": "Novo espaço de trabalho",
|
||||
"TeamspaceDescriptionPlaceholder": "Adicionar descrição ...",
|
||||
"ChooseIcon": "Escolher ícone",
|
||||
"TeamspaceMembers": "Membros",
|
||||
"NoParentDocument": "Sem documento pai",
|
||||
"NoBacklinks": "Sem links de retorno",
|
||||
"NoHistory": "Sem histórico anterior",
|
||||
"Untitled": "Sin título",
|
||||
"Description": "Descrição",
|
||||
"CopyDocumentUrl": "Copiar URL do documento para a área de transferência",
|
||||
"DocumentUrlCopied": "Copiado!",
|
||||
"ViewMode": "Visualização",
|
||||
"EditMode": "Edição",
|
||||
"SuggestMode": "Sugestão",
|
||||
"CompareTo": "Comparar com...",
|
||||
"Star": "Destacar",
|
||||
"Unstar": "Remover destaque",
|
||||
"Lock": "Bloquear",
|
||||
"Unlock": "Desbloquear",
|
||||
"Locked": "Bloqueado",
|
||||
"ConfigLabel": "Documentos",
|
||||
"ConfigDescription": "Extensão para edição colaborativa de documentos",
|
||||
"Icon": "Ícone",
|
||||
"Color": "Cor",
|
||||
"ForbidCreateTeamspacePermission": "Proibir criação de espaço de trabalho",
|
||||
"ForbidCreateTeamspacePermissionDescription": "Proíbe os utilizadores de criar novos espaços de trabalho"
|
||||
}
|
||||
}
|
||||
@@ -28,6 +28,18 @@
|
||||
"Restore": "Obnovit",
|
||||
"Root": "/",
|
||||
"ForbidCreateDrivePermission": "Zakázat vytvoření disku",
|
||||
"ForbidCreateDrivePermissionDescription": "Zakazuje uživatelům vytvářet nové disky"
|
||||
"ForbidCreateDrivePermissionDescription": "Zakazuje uživatelům vytvářet nové disky",
|
||||
"CreateFilePermission": "Create File",
|
||||
"CreateFilePermissionDescription": "Grants users ability to create files",
|
||||
"UpdateFilePermission": "Update File",
|
||||
"UpdateFilePermissionDescription": "Grants users ability to update files",
|
||||
"RemoveFilePermission": "Remove File",
|
||||
"RemoveFilePermissionDescription": "Grants users ability to remove files",
|
||||
"CreateFolderPermission": "Create Folder",
|
||||
"CreateFolderPermissionDescription": "Grants users ability to create folders",
|
||||
"UpdateFolderPermission": "Update Folder",
|
||||
"UpdateFolderPermissionDescription": "Grants users ability to update folders",
|
||||
"RemoveFolderPermission": "Remove Folder",
|
||||
"RemoveFolderPermissionDescription": "Grants users ability to remove folders"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,6 +28,18 @@
|
||||
"Restore": "Wiederherstellen",
|
||||
"Root": "/",
|
||||
"ForbidCreateDrivePermission": "Laufwerkserstellung verbieten",
|
||||
"ForbidCreateDrivePermissionDescription": "Verbietet Benutzern die Erstellung neuer Laufwerke"
|
||||
"ForbidCreateDrivePermissionDescription": "Verbietet Benutzern die Erstellung neuer Laufwerke",
|
||||
"CreateFilePermission": "Create File",
|
||||
"CreateFilePermissionDescription": "Grants users ability to create files",
|
||||
"UpdateFilePermission": "Update File",
|
||||
"UpdateFilePermissionDescription": "Grants users ability to update files",
|
||||
"RemoveFilePermission": "Remove File",
|
||||
"RemoveFilePermissionDescription": "Grants users ability to remove files",
|
||||
"CreateFolderPermission": "Create Folder",
|
||||
"CreateFolderPermissionDescription": "Grants users ability to create folders",
|
||||
"UpdateFolderPermission": "Update Folder",
|
||||
"UpdateFolderPermissionDescription": "Grants users ability to update folders",
|
||||
"RemoveFolderPermission": "Remove Folder",
|
||||
"RemoveFolderPermissionDescription": "Grants users ability to remove folders"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,6 +28,18 @@
|
||||
"Restore": "Restore",
|
||||
"Root": "/",
|
||||
"ForbidCreateDrivePermission": "Forbid create drive",
|
||||
"ForbidCreateDrivePermissionDescription": "Forbid users creating new drives"
|
||||
"ForbidCreateDrivePermissionDescription": "Forbid users creating new drives",
|
||||
"CreateFilePermission": "Create File",
|
||||
"CreateFilePermissionDescription": "Grants users ability to create files",
|
||||
"UpdateFilePermission": "Update File",
|
||||
"UpdateFilePermissionDescription": "Grants users ability to update files",
|
||||
"RemoveFilePermission": "Remove File",
|
||||
"RemoveFilePermissionDescription": "Grants users ability to remove files",
|
||||
"CreateFolderPermission": "Create Folder",
|
||||
"CreateFolderPermissionDescription": "Grants users ability to create folders",
|
||||
"UpdateFolderPermission": "Update Folder",
|
||||
"UpdateFolderPermissionDescription": "Grants users ability to update folders",
|
||||
"RemoveFolderPermission": "Remove Folder",
|
||||
"RemoveFolderPermissionDescription": "Grants users ability to remove folders"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,6 +28,18 @@
|
||||
"Restore": "Restaurar",
|
||||
"Root": "/",
|
||||
"ForbidCreateDrivePermission": "Prohibir crear unidad",
|
||||
"ForbidCreateDrivePermissionDescription": "Prohíbe a los usuarios crear nuevas unidades"
|
||||
"ForbidCreateDrivePermissionDescription": "Prohíbe a los usuarios crear nuevas unidades",
|
||||
"CreateFilePermission": "Create File",
|
||||
"CreateFilePermissionDescription": "Grants users ability to create files",
|
||||
"UpdateFilePermission": "Update File",
|
||||
"UpdateFilePermissionDescription": "Grants users ability to update files",
|
||||
"RemoveFilePermission": "Remove File",
|
||||
"RemoveFilePermissionDescription": "Grants users ability to remove files",
|
||||
"CreateFolderPermission": "Create Folder",
|
||||
"CreateFolderPermissionDescription": "Grants users ability to create folders",
|
||||
"UpdateFolderPermission": "Update Folder",
|
||||
"UpdateFolderPermissionDescription": "Grants users ability to update folders",
|
||||
"RemoveFolderPermission": "Remove Folder",
|
||||
"RemoveFolderPermissionDescription": "Grants users ability to remove folders"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,6 +28,18 @@
|
||||
"Restore": "Restaurer",
|
||||
"Root": "/",
|
||||
"ForbidCreateDrivePermission": "Interdire la création de disque",
|
||||
"ForbidCreateDrivePermissionDescription": "Interdit aux utilisateurs de créer de nouveaux disques"
|
||||
"ForbidCreateDrivePermissionDescription": "Interdit aux utilisateurs de créer de nouveaux disques",
|
||||
"CreateFilePermission": "Create File",
|
||||
"CreateFilePermissionDescription": "Grants users ability to create files",
|
||||
"UpdateFilePermission": "Update File",
|
||||
"UpdateFilePermissionDescription": "Grants users ability to update files",
|
||||
"RemoveFilePermission": "Remove File",
|
||||
"RemoveFilePermissionDescription": "Grants users ability to remove files",
|
||||
"CreateFolderPermission": "Create Folder",
|
||||
"CreateFolderPermissionDescription": "Grants users ability to create folders",
|
||||
"UpdateFolderPermission": "Update Folder",
|
||||
"UpdateFolderPermissionDescription": "Grants users ability to update folders",
|
||||
"RemoveFolderPermission": "Remove Folder",
|
||||
"RemoveFolderPermissionDescription": "Grants users ability to remove folders"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,6 +28,18 @@
|
||||
"Restore": "Ripristina",
|
||||
"Root": "/",
|
||||
"ForbidCreateDrivePermission": "Vieta creazione drive",
|
||||
"ForbidCreateDrivePermissionDescription": "Vieta agli utenti di creare nuovi drive"
|
||||
"ForbidCreateDrivePermissionDescription": "Vieta agli utenti di creare nuovi drive",
|
||||
"CreateFilePermission": "Create File",
|
||||
"CreateFilePermissionDescription": "Grants users ability to create files",
|
||||
"UpdateFilePermission": "Update File",
|
||||
"UpdateFilePermissionDescription": "Grants users ability to update files",
|
||||
"RemoveFilePermission": "Remove File",
|
||||
"RemoveFilePermissionDescription": "Grants users ability to remove files",
|
||||
"CreateFolderPermission": "Create Folder",
|
||||
"CreateFolderPermissionDescription": "Grants users ability to create folders",
|
||||
"UpdateFolderPermission": "Update Folder",
|
||||
"UpdateFolderPermissionDescription": "Grants users ability to update folders",
|
||||
"RemoveFolderPermission": "Remove Folder",
|
||||
"RemoveFolderPermissionDescription": "Grants users ability to remove folders"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,6 +28,18 @@
|
||||
"Restore": "復元",
|
||||
"Root": "/",
|
||||
"ForbidCreateDrivePermission": "ドライブの作成禁止",
|
||||
"ForbidCreateDrivePermissionDescription": "ユーザーが新しいドライブを作成することを禁止します"
|
||||
"ForbidCreateDrivePermissionDescription": "ユーザーが新しいドライブを作成することを禁止します",
|
||||
"CreateFilePermission": "Create File",
|
||||
"CreateFilePermissionDescription": "Grants users ability to create files",
|
||||
"UpdateFilePermission": "Update File",
|
||||
"UpdateFilePermissionDescription": "Grants users ability to update files",
|
||||
"RemoveFilePermission": "Remove File",
|
||||
"RemoveFilePermissionDescription": "Grants users ability to remove files",
|
||||
"CreateFolderPermission": "Create Folder",
|
||||
"CreateFolderPermissionDescription": "Grants users ability to create folders",
|
||||
"UpdateFolderPermission": "Update Folder",
|
||||
"UpdateFolderPermissionDescription": "Grants users ability to update folders",
|
||||
"RemoveFolderPermission": "Remove Folder",
|
||||
"RemoveFolderPermissionDescription": "Grants users ability to remove folders"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"string": {
|
||||
"Drive": "Unidade",
|
||||
"Drives": "Unidades",
|
||||
"Grid": "Grade",
|
||||
"File": "Ficheiro",
|
||||
"Files": "Ficheiros",
|
||||
"FileVersion": "Versão do ficheiro",
|
||||
"FileVersions": "Versões de ficheiro",
|
||||
"Folder": "Pasta",
|
||||
"Folders": "Pastas",
|
||||
"Resource": "Recurso",
|
||||
"Name": "Nome",
|
||||
"Description": "Descrição",
|
||||
"Parent": "Pai",
|
||||
"Path": "Caminho",
|
||||
"Version": "Versão",
|
||||
"Size": "Tamanho",
|
||||
"ContentType": "Tipo de conteúdo",
|
||||
"LastModified": "Última modificação",
|
||||
"Download": "Descarregar",
|
||||
"Upload": "Carregar",
|
||||
"CreateDrive": "Criar unidade",
|
||||
"CreateFolder": "Criar pasta",
|
||||
"UploadFile": "Carregar ficheiros",
|
||||
"EditDrive": "Editar unidade",
|
||||
"Rename": "Renomear",
|
||||
"Restore": "Restaurar",
|
||||
"Root": "/",
|
||||
"ForbidCreateDrivePermission": "Proibir criação de unidade",
|
||||
"ForbidCreateDrivePermissionDescription": "Proíbe os utilizadores de criar novas unidades"
|
||||
}
|
||||
}
|
||||
@@ -28,6 +28,18 @@
|
||||
"Restore": "Restaurar",
|
||||
"Root": "/",
|
||||
"ForbidCreateDrivePermission": "Proibir criação de unidade",
|
||||
"ForbidCreateDrivePermissionDescription": "Proíbe os utilizadores de criar novas unidades"
|
||||
"ForbidCreateDrivePermissionDescription": "Proíbe os utilizadores de criar novas unidades",
|
||||
"CreateFilePermission": "Create File",
|
||||
"CreateFilePermissionDescription": "Grants users ability to create files",
|
||||
"UpdateFilePermission": "Update File",
|
||||
"UpdateFilePermissionDescription": "Grants users ability to update files",
|
||||
"RemoveFilePermission": "Remove File",
|
||||
"RemoveFilePermissionDescription": "Grants users ability to remove files",
|
||||
"CreateFolderPermission": "Create Folder",
|
||||
"CreateFolderPermissionDescription": "Grants users ability to create folders",
|
||||
"UpdateFolderPermission": "Update Folder",
|
||||
"UpdateFolderPermissionDescription": "Grants users ability to update folders",
|
||||
"RemoveFolderPermission": "Remove Folder",
|
||||
"RemoveFolderPermissionDescription": "Grants users ability to remove folders"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,6 +28,18 @@
|
||||
"Restore": "Восстановить",
|
||||
"Root": "/",
|
||||
"ForbidCreateDrivePermission": "Запретить создание диска",
|
||||
"ForbidCreateDrivePermissionDescription": "Запрещает пользователям создавать новые диски"
|
||||
"ForbidCreateDrivePermissionDescription": "Запрещает пользователям создавать новые диски",
|
||||
"CreateFilePermission": "Create File",
|
||||
"CreateFilePermissionDescription": "Grants users ability to create files",
|
||||
"UpdateFilePermission": "Update File",
|
||||
"UpdateFilePermissionDescription": "Grants users ability to update files",
|
||||
"RemoveFilePermission": "Remove File",
|
||||
"RemoveFilePermissionDescription": "Grants users ability to remove files",
|
||||
"CreateFolderPermission": "Create Folder",
|
||||
"CreateFolderPermissionDescription": "Grants users ability to create folders",
|
||||
"UpdateFolderPermission": "Update Folder",
|
||||
"UpdateFolderPermissionDescription": "Grants users ability to update folders",
|
||||
"RemoveFolderPermission": "Remove Folder",
|
||||
"RemoveFolderPermissionDescription": "Grants users ability to remove folders"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,6 +26,18 @@
|
||||
"EditDrive": "Sürücüyü Düzenle",
|
||||
"Rename": "Yeniden adlandır",
|
||||
"Restore": "Geri yükle",
|
||||
"Root": "/"
|
||||
"Root": "/",
|
||||
"CreateFilePermission": "Create File",
|
||||
"CreateFilePermissionDescription": "Grants users ability to create files",
|
||||
"UpdateFilePermission": "Update File",
|
||||
"UpdateFilePermissionDescription": "Grants users ability to update files",
|
||||
"RemoveFilePermission": "Remove File",
|
||||
"RemoveFilePermissionDescription": "Grants users ability to remove files",
|
||||
"CreateFolderPermission": "Create Folder",
|
||||
"CreateFolderPermissionDescription": "Grants users ability to create folders",
|
||||
"UpdateFolderPermission": "Update Folder",
|
||||
"UpdateFolderPermissionDescription": "Grants users ability to update folders",
|
||||
"RemoveFolderPermission": "Remove Folder",
|
||||
"RemoveFolderPermissionDescription": "Grants users ability to remove folders"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,6 +28,18 @@
|
||||
"Restore": "恢复",
|
||||
"Root": "/",
|
||||
"ForbidCreateDrivePermission": "禁止创建磁盘",
|
||||
"ForbidCreateDrivePermissionDescription": "禁止用户创建新磁盘"
|
||||
"ForbidCreateDrivePermissionDescription": "禁止用户创建新磁盘",
|
||||
"CreateFilePermission": "Create File",
|
||||
"CreateFilePermissionDescription": "Grants users ability to create files",
|
||||
"UpdateFilePermission": "Update File",
|
||||
"UpdateFilePermissionDescription": "Grants users ability to update files",
|
||||
"RemoveFilePermission": "Remove File",
|
||||
"RemoveFilePermissionDescription": "Grants users ability to remove files",
|
||||
"CreateFolderPermission": "Create Folder",
|
||||
"CreateFolderPermissionDescription": "Grants users ability to create folders",
|
||||
"UpdateFolderPermission": "Update Folder",
|
||||
"UpdateFolderPermissionDescription": "Grants users ability to update folders",
|
||||
"RemoveFolderPermission": "Remove Folder",
|
||||
"RemoveFolderPermissionDescription": "Grants users ability to remove folders"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
import { AccountArrayEditor, employeeRefByAccountUuidStore } from '@hcengineering/contact-resources'
|
||||
import core, {
|
||||
Data,
|
||||
DocumentUpdate,
|
||||
RolesAssignment,
|
||||
Ref,
|
||||
Role,
|
||||
@@ -48,6 +47,8 @@
|
||||
let description: string = drive?.description ?? ''
|
||||
let isPrivate: boolean = drive?.private ?? false
|
||||
|
||||
let autoJoin = drive?.autoJoin ?? false
|
||||
let restricted: boolean = drive?.restricted ?? false
|
||||
let members: AccountUuid[] =
|
||||
drive?.members !== undefined ? hierarchy.clone(drive.members) : [getCurrentAccount().uuid]
|
||||
let owners: AccountUuid[] = drive?.owners !== undefined ? hierarchy.clone(drive.owners) : [getCurrentAccount().uuid]
|
||||
@@ -102,7 +103,9 @@
|
||||
private: isPrivate,
|
||||
members,
|
||||
owners,
|
||||
archived: false
|
||||
autoJoin,
|
||||
archived: false,
|
||||
restricted
|
||||
}
|
||||
}
|
||||
|
||||
@@ -111,41 +114,8 @@
|
||||
return
|
||||
}
|
||||
|
||||
const data = getDriveData()
|
||||
const update: DocumentUpdate<Drive> = {}
|
||||
if (data.name !== drive?.name) {
|
||||
update.name = data.name
|
||||
}
|
||||
if (data.description !== drive?.description) {
|
||||
update.description = data.description
|
||||
}
|
||||
if (data.private !== drive?.private) {
|
||||
update.private = data.private
|
||||
}
|
||||
if (data.members.length !== drive?.members.length) {
|
||||
update.members = data.members
|
||||
} else {
|
||||
for (const member of data.members) {
|
||||
if (drive.members.findIndex((p) => p === member) === -1) {
|
||||
update.members = data.members
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
if (data.owners?.length !== drive?.owners?.length) {
|
||||
update.owners = data.owners
|
||||
} else {
|
||||
for (const owner of data.owners ?? []) {
|
||||
if (drive.owners?.findIndex((p) => p === owner) === -1) {
|
||||
update.owners = data.owners
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (Object.keys(update).length > 0) {
|
||||
await client.update(drive, update)
|
||||
}
|
||||
const update = getDriveData()
|
||||
await client.diffUpdate(drive, update)
|
||||
|
||||
if (!deepEqual(rolesAssignment, getRolesAssignment())) {
|
||||
await client.updateMixin(
|
||||
@@ -307,6 +277,22 @@
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="antiGrid-row">
|
||||
<div class="antiGrid-row__header withDesciption">
|
||||
<Label label={core.string.AutoJoin} />
|
||||
<span><Label label={core.string.AutoJoinDescr} /></span>
|
||||
</div>
|
||||
<Toggle id={'space-autoJoin'} bind:on={autoJoin} />
|
||||
</div>
|
||||
|
||||
<div class="antiGrid-row">
|
||||
<div class="antiGrid-row__header withDesciption">
|
||||
<Label label={core.string.RBAC} />
|
||||
<span><Label label={core.string.RBACDescr} /></span>
|
||||
</div>
|
||||
<Toggle id={'space-restricted'} bind:on={restricted} />
|
||||
</div>
|
||||
|
||||
{#each roles as role}
|
||||
<div class="antiGrid-row">
|
||||
<div class="antiGrid-row__header">
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
-->
|
||||
<script lang="ts">
|
||||
import { AccountRole, Ref, getCurrentAccount } from '@hcengineering/core'
|
||||
import { checkMyPermission, permissionsStore } from '@hcengineering/contact-resources'
|
||||
import { type Drive } from '@hcengineering/drive'
|
||||
import { getResource } from '@hcengineering/platform'
|
||||
import { createQuery, getClient } from '@hcengineering/presentation'
|
||||
@@ -23,6 +24,7 @@
|
||||
import { getFolderIdFromFragment } from '../navigation'
|
||||
import { showCreateDrivePopup, showCreateFolderPopup, getUploadOptionsByFragment } from '../utils'
|
||||
import { onMount } from 'svelte'
|
||||
import { canCreateObject } from '@hcengineering/view-resources'
|
||||
|
||||
export let currentSpace: Ref<Drive> | undefined
|
||||
export let currentFragment: string | undefined
|
||||
@@ -44,6 +46,8 @@
|
||||
]
|
||||
|
||||
let uploadActions: HeaderButtonAction[] = []
|
||||
let filteredUploadActions: HeaderButtonAction[] = []
|
||||
let filteredBasicActions: HeaderButtonAction[] = []
|
||||
let allActions: HeaderButtonAction[] = []
|
||||
|
||||
const myAcc = getCurrentAccount()
|
||||
@@ -84,6 +88,12 @@
|
||||
)
|
||||
|
||||
$: parent = getFolderIdFromFragment(currentFragment ?? '') ?? drive.ids.Root
|
||||
$: canCreateFolder =
|
||||
currentSpace !== undefined && canCreateObject(drive.class.Folder, currentSpace, $permissionsStore)
|
||||
$: canUpload = currentSpace !== undefined && canCreateObject(drive.class.File, currentSpace, $permissionsStore)
|
||||
|
||||
$: filteredBasicActions = [basicActions[0], ...(canCreateFolder ? [basicActions[1]] : [])]
|
||||
$: filteredUploadActions = canUpload ? uploadActions : []
|
||||
|
||||
function handleCreateDrive (): void {
|
||||
void showCreateDrivePopup()
|
||||
@@ -94,7 +104,11 @@
|
||||
}
|
||||
|
||||
let visibleActions: (string | number | null)[] = []
|
||||
function updateActions (hasSpace: boolean, uploadActions: HeaderButtonAction[]): void {
|
||||
function updateActions (
|
||||
hasSpace: boolean,
|
||||
uploadActions: HeaderButtonAction[],
|
||||
basicActions: HeaderButtonAction[]
|
||||
): void {
|
||||
allActions = [...basicActions, ...uploadActions]
|
||||
if (hasSpace) {
|
||||
visibleActions = allActions.map((a) => a.id)
|
||||
@@ -103,7 +117,13 @@
|
||||
}
|
||||
}
|
||||
|
||||
$: updateActions(hasDrive, uploadActions)
|
||||
$: updateActions(hasDrive, filteredUploadActions, filteredBasicActions)
|
||||
</script>
|
||||
|
||||
<HeaderButton loading={false} {client} mainActionId={uploadActions[0]?.id} {visibleActions} actions={allActions} />
|
||||
<HeaderButton
|
||||
loading={false}
|
||||
{client}
|
||||
mainActionId={filteredUploadActions[0]?.id}
|
||||
{visibleActions}
|
||||
actions={allActions}
|
||||
/>
|
||||
|
||||
@@ -13,19 +13,14 @@
|
||||
// limitations under the License.
|
||||
-->
|
||||
<script lang="ts">
|
||||
import { type Drive, type Folder } from '@hcengineering/drive'
|
||||
import { type Folder } from '@hcengineering/drive'
|
||||
|
||||
import { type Ref } from '@hcengineering/core'
|
||||
import FolderBrowser from './FolderBrowser.svelte'
|
||||
|
||||
export let object: Folder
|
||||
export let readonly: boolean = false
|
||||
|
||||
function getSpace (object: Folder): Ref<Drive> {
|
||||
return object.space as Ref<Drive>
|
||||
}
|
||||
</script>
|
||||
|
||||
{#if object}
|
||||
<FolderBrowser space={getSpace(object)} parent={object._id} {readonly} type={'folder'} />
|
||||
<FolderBrowser space={object.space} parent={object._id} {readonly} type={'folder'} />
|
||||
{/if}
|
||||
|
||||
@@ -14,13 +14,14 @@
|
||||
-->
|
||||
<script lang="ts">
|
||||
import { type Ref, type WithLookup } from '@hcengineering/core'
|
||||
import { checkMyPermission, permissionsStore } from '@hcengineering/contact-resources'
|
||||
import { createFileVersion, type File as DriveFile, type FileVersion } from '@hcengineering/drive'
|
||||
import { Panel } from '@hcengineering/panel'
|
||||
import { createQuery, getClient, getFileUrl } from '@hcengineering/presentation'
|
||||
import { Button, IconMoreH } from '@hcengineering/ui'
|
||||
import { FileUploadCallbackParams, showFilesUploadPopup } from '@hcengineering/uploader'
|
||||
import view from '@hcengineering/view'
|
||||
import { showMenu } from '@hcengineering/view-resources'
|
||||
import { canChangeDoc, showMenu } from '@hcengineering/view-resources'
|
||||
|
||||
import EditFile from './EditFile.svelte'
|
||||
import FileAside from './FileAside.svelte'
|
||||
@@ -58,6 +59,7 @@
|
||||
}
|
||||
}
|
||||
)
|
||||
$: canUploadVersion = object !== undefined && canChangeDoc(drive.class.File, object.space, $permissionsStore)
|
||||
|
||||
function handleDownloadFile (): void {
|
||||
if (object != null && download != null) {
|
||||
@@ -66,7 +68,7 @@
|
||||
}
|
||||
|
||||
function handleUploadFile (): void {
|
||||
if (object != null) {
|
||||
if (object != null && canUploadVersion) {
|
||||
const target = { objectId: object._id, objectClass: object._class }
|
||||
void showFilesUploadPopup(
|
||||
{
|
||||
@@ -123,13 +125,15 @@
|
||||
on:click={handleDownloadFile}
|
||||
/>
|
||||
</a>
|
||||
<Button
|
||||
icon={IconUpload}
|
||||
iconProps={{ size: 'medium' }}
|
||||
kind={'icon'}
|
||||
showTooltip={{ label: drive.string.Upload }}
|
||||
on:click={handleUploadFile}
|
||||
/>
|
||||
{#if canUploadVersion}
|
||||
<Button
|
||||
icon={IconUpload}
|
||||
iconProps={{ size: 'medium' }}
|
||||
kind={'icon'}
|
||||
showTooltip={{ label: drive.string.Upload }}
|
||||
on:click={handleUploadFile}
|
||||
/>
|
||||
{/if}
|
||||
<Button
|
||||
icon={IconMoreH}
|
||||
iconProps={{ size: 'medium' }}
|
||||
|
||||
@@ -13,7 +13,8 @@
|
||||
// limitations under the License.
|
||||
-->
|
||||
<script lang="ts">
|
||||
import { type Doc, type DocumentQuery, type Space, type Ref, type WithLookup } from '@hcengineering/core'
|
||||
import { type Doc, type DocumentQuery, type Ref, type WithLookup } from '@hcengineering/core'
|
||||
import { permissionsStore } from '@hcengineering/contact-resources'
|
||||
import drive, { type Drive, type Folder } from '@hcengineering/drive'
|
||||
import { Scroller, SearchInput, Panel, Button, IconMoreH } from '@hcengineering/ui'
|
||||
import view, { Viewlet, ViewOptions } from '@hcengineering/view'
|
||||
@@ -24,7 +25,8 @@
|
||||
ViewletSelector,
|
||||
ViewletSettingButton,
|
||||
DocAttributeBar,
|
||||
showMenu
|
||||
showMenu,
|
||||
canCreateObject
|
||||
} from '@hcengineering/view-resources'
|
||||
|
||||
import DrivePresenter from './DrivePresenter.svelte'
|
||||
@@ -42,6 +44,7 @@
|
||||
|
||||
$: object = type === 'drive' ? (object as Drive) : (object as Folder)
|
||||
$: query = { space, parent }
|
||||
$: canUpload = canCreateObject(drive.class.File, space, $permissionsStore)
|
||||
|
||||
let viewlet: WithLookup<Viewlet> | undefined = undefined
|
||||
let viewOptions: ViewOptions | undefined
|
||||
@@ -101,7 +104,7 @@
|
||||
<!-- svelte-ignore a11y-no-static-element-interactions -->
|
||||
<div class="popupPanel-body" on:contextmenu>
|
||||
{#if viewlet}
|
||||
<FileDropArea {space} {parent} canDrop={() => !readonly}>
|
||||
<FileDropArea {space} {parent} canDrop={() => !readonly && canUpload}>
|
||||
<Scroller horizontal={true}>
|
||||
<ViewletContentView {_class} {viewlet} query={resultQuery} {space} {viewOptions} />
|
||||
</Scroller>
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
|
||||
const dispatch = createEventDispatcher()
|
||||
|
||||
let space: Ref<Drive> = value.space as Ref<Drive>
|
||||
let space: Ref<Drive> = value.space
|
||||
let parent: Ref<Folder> = value.parent as Ref<Folder>
|
||||
|
||||
async function save (): Promise<void> {
|
||||
|
||||
@@ -13,11 +13,14 @@
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
import { permissionsStore } from '@hcengineering/contact-resources'
|
||||
import type { Class, Client, Doc, DocumentQuery, Ref, RelatedDocument, WithLookup } from '@hcengineering/core'
|
||||
import drive, { type Drive, type File, type FileVersion, type Folder } from '@hcengineering/drive'
|
||||
import { type Resources } from '@hcengineering/platform'
|
||||
import { type ObjectSearchResult, getFileUrl } from '@hcengineering/presentation'
|
||||
import { showPopup, type Location } from '@hcengineering/ui'
|
||||
import { canChangeDoc, canCreateObject, canDeleteObject, canRemoveDoc } from '@hcengineering/view-resources'
|
||||
import { get } from 'svelte/store'
|
||||
|
||||
import CreateDrive from './components/CreateDrive.svelte'
|
||||
import DrivePanel from './components/DrivePanel.svelte'
|
||||
@@ -153,22 +156,96 @@ async function RestoreFileVersion (doc: FileVersion | FileVersion[]): Promise<vo
|
||||
}
|
||||
|
||||
export async function CanRenameFile (doc: File | File[] | undefined): Promise<boolean> {
|
||||
return doc !== undefined && !Array.isArray(doc)
|
||||
if (doc === undefined || Array.isArray(doc)) {
|
||||
return false
|
||||
}
|
||||
return canChangeDoc(drive.class.File, doc.space, get(permissionsStore))
|
||||
}
|
||||
|
||||
export async function CanRenameFolder (doc: Folder | Folder[] | undefined): Promise<boolean> {
|
||||
return doc !== undefined && !Array.isArray(doc)
|
||||
if (doc === undefined || Array.isArray(doc)) {
|
||||
return false
|
||||
}
|
||||
return canChangeDoc(drive.class.Folder, doc.space, get(permissionsStore))
|
||||
}
|
||||
|
||||
export async function CanUpdateFileVersion (doc: FileVersion | FileVersion[] | undefined): Promise<boolean> {
|
||||
if (doc === undefined || Array.isArray(doc)) {
|
||||
return false
|
||||
}
|
||||
|
||||
return canChangeDoc(drive.class.File, doc.space, get(permissionsStore))
|
||||
}
|
||||
|
||||
export async function CanDeleteFileVersion (
|
||||
doc: WithLookup<FileVersion> | Array<WithLookup<FileVersion>> | undefined
|
||||
): Promise<boolean> {
|
||||
if (doc === undefined) {
|
||||
if (doc === undefined || Array.isArray(doc)) {
|
||||
return false
|
||||
}
|
||||
|
||||
const docs = Array.isArray(doc) ? doc : [doc]
|
||||
return docs.every((p) => p.$lookup?.attachedTo !== undefined && p.$lookup?.attachedTo.file !== p._id)
|
||||
const canDeleteByVersion = docs.every(
|
||||
(p) => p.$lookup?.attachedTo !== undefined && p.$lookup?.attachedTo.file !== p._id
|
||||
)
|
||||
if (!canDeleteByVersion) {
|
||||
return false
|
||||
}
|
||||
|
||||
const permissions = get(permissionsStore)
|
||||
return docs.every((p) => canChangeDoc(drive.class.File, doc.space, permissions))
|
||||
}
|
||||
|
||||
export async function CanCreateFolder (doc: Drive | Folder | Array<Drive | Folder> | undefined): Promise<boolean> {
|
||||
if (doc === undefined || Array.isArray(doc)) {
|
||||
return false
|
||||
}
|
||||
const space = ((doc as Drive).space ?? doc._id) as Ref<Drive>
|
||||
return canCreateObject(drive.class.Folder, space, get(permissionsStore))
|
||||
}
|
||||
|
||||
export async function CanUpdateFile (doc: File | File[] | undefined): Promise<boolean> {
|
||||
if (doc === undefined || Array.isArray(doc)) {
|
||||
return false
|
||||
}
|
||||
return canChangeDoc(drive.class.File, doc.space, get(permissionsStore))
|
||||
}
|
||||
|
||||
export async function CanUpdateFolder (doc: Folder | Folder[] | undefined): Promise<boolean> {
|
||||
if (doc === undefined || Array.isArray(doc)) {
|
||||
return false
|
||||
}
|
||||
return canChangeDoc(drive.class.Folder, doc.space, get(permissionsStore))
|
||||
}
|
||||
|
||||
export async function CanDeleteFile (doc: File | File[] | undefined): Promise<boolean> {
|
||||
if (doc === undefined) return false
|
||||
doc = Array.isArray(doc) ? doc : [doc]
|
||||
|
||||
const permissions = get(permissionsStore)
|
||||
const results = await Promise.all(
|
||||
doc.map(async (p) => {
|
||||
return permissions.restrictedSpaces.has(p.space)
|
||||
? canRemoveDoc(drive.class.File, p.space, permissions)
|
||||
: await canDeleteObject(doc)
|
||||
})
|
||||
)
|
||||
return results.every(Boolean)
|
||||
}
|
||||
|
||||
export async function CanDeleteFolder (doc: Folder | Folder[] | undefined): Promise<boolean> {
|
||||
if (doc === undefined) return false
|
||||
doc = Array.isArray(doc) ? doc : [doc]
|
||||
|
||||
const permissions = get(permissionsStore)
|
||||
const results = await Promise.all(
|
||||
doc.map(async (p) => {
|
||||
return permissions.restrictedSpaces.has(p.space)
|
||||
? canRemoveDoc(drive.class.Folder, p.space, permissions)
|
||||
: await canDeleteObject(doc)
|
||||
})
|
||||
)
|
||||
return results.every(Boolean)
|
||||
}
|
||||
|
||||
export async function FileTitleProvider (client: Client, ref: Ref<File>, doc?: File): Promise<string> {
|
||||
@@ -222,8 +299,14 @@ export default async (): Promise<Resources> => ({
|
||||
DriveLinkProvider,
|
||||
FileLinkProvider,
|
||||
FolderLinkProvider,
|
||||
CanCreateFolder,
|
||||
CanUpdateFile,
|
||||
CanUpdateFolder,
|
||||
CanDeleteFile,
|
||||
CanDeleteFolder,
|
||||
CanRenameFile,
|
||||
CanRenameFolder,
|
||||
CanUpdateFileVersion,
|
||||
CanDeleteFileVersion,
|
||||
FileTitleProvider,
|
||||
FolderTitleProvider
|
||||
|
||||
@@ -161,7 +161,7 @@ export async function resolveParents (object: Resource): Promise<Doc[]> {
|
||||
}
|
||||
}
|
||||
|
||||
const root = await client.findOne(drive.class.Drive, { _id: object.space as Ref<Drive> })
|
||||
const root = await client.findOne(drive.class.Drive, { _id: object.space })
|
||||
if (root !== undefined) {
|
||||
parents.push(root)
|
||||
}
|
||||
|
||||
@@ -66,7 +66,19 @@ export const drivePlugin = plugin(driveId, {
|
||||
Folder: '' as IntlString,
|
||||
Resource: '' as IntlString,
|
||||
ForbidCreateDrivePermission: '' as IntlString,
|
||||
ForbidCreateDrivePermissionDescription: '' as IntlString
|
||||
ForbidCreateDrivePermissionDescription: '' as IntlString,
|
||||
CreateFilePermission: '' as IntlString,
|
||||
CreateFilePermissionDescription: '' as IntlString,
|
||||
UpdateFilePermission: '' as IntlString,
|
||||
UpdateFilePermissionDescription: '' as IntlString,
|
||||
RemoveFilePermission: '' as IntlString,
|
||||
RemoveFilePermissionDescription: '' as IntlString,
|
||||
CreateFolderPermission: '' as IntlString,
|
||||
CreateFolderPermissionDescription: '' as IntlString,
|
||||
UpdateFolderPermission: '' as IntlString,
|
||||
UpdateFolderPermissionDescription: '' as IntlString,
|
||||
RemoveFolderPermission: '' as IntlString,
|
||||
RemoveFolderPermissionDescription: '' as IntlString
|
||||
},
|
||||
descriptor: {
|
||||
DriveType: '' as Ref<SpaceTypeDescriptor>
|
||||
@@ -75,7 +87,13 @@ export const drivePlugin = plugin(driveId, {
|
||||
DefaultDrive: '' as Ref<SpaceType>
|
||||
},
|
||||
permission: {
|
||||
ForbidCreateDrive: '' as Ref<Permission>
|
||||
ForbidCreateDrive: '' as Ref<Permission>,
|
||||
CreateFile: '' as Ref<Permission>,
|
||||
UpdateFile: '' as Ref<Permission>,
|
||||
RemoveFile: '' as Ref<Permission>,
|
||||
CreateFolder: '' as Ref<Permission>,
|
||||
UpdateFolder: '' as Ref<Permission>,
|
||||
RemoveFolder: '' as Ref<Permission>
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ export function TypeFileVersion (): Type<number> {
|
||||
export interface Drive extends TypedSpace {}
|
||||
|
||||
/** @public */
|
||||
export interface Resource extends Doc {
|
||||
export interface Resource extends Doc<Drive> {
|
||||
title: string
|
||||
parent: Ref<Resource>
|
||||
path: Ref<Resource>[]
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"string": {
|
||||
"SmileysAndPeople": "Carinhas & Pessoas",
|
||||
"Components": "Componentes",
|
||||
"AnimalsAndNature": "Animais & Natureza",
|
||||
"FoodAndDrink": "Alimentos & Bebidas",
|
||||
"TravelAndPlaces": "Viagens e Locais",
|
||||
"Activities": "Actividades",
|
||||
"Objects": "Objetos",
|
||||
"Symbols": "Símbolos",
|
||||
"Flags": "Bandeiras",
|
||||
"FrequentlyUsed": "Frequentemente utilizado",
|
||||
"GettingWorkDone": "A fazer",
|
||||
"DefaultSkinTone": "Tom de pele padrão",
|
||||
"NoTone": "Sem tom",
|
||||
"Light": "Claro",
|
||||
"MediumLight": "Médio Claro",
|
||||
"Medium": "Médio",
|
||||
"MediumDark": "Médio Escuro",
|
||||
"Dark": "Escuro",
|
||||
"Remove": "Remover",
|
||||
"SearchDots": "Pesquisar...",
|
||||
"SearchResults": "Resultados da pesquisa",
|
||||
"CustomEmojis": "Emojis personalizados",
|
||||
"Shortcode": "Nome",
|
||||
"ShortcodeDescription": "Pode conter letras, números e os símbolos '-', '+' e '_'.",
|
||||
"Image": "Imagem",
|
||||
"ImageDescription": "Especifique um arquivo .gif, .png ou .jpg para seu emoji.",
|
||||
"UploadImage": "Carregar",
|
||||
"Preview": "Pré-visualização",
|
||||
"PreviewTextBegin": "Esta é uma frase com ",
|
||||
"PreviewTextEnd": " dentro.",
|
||||
"CreateTitle": "Criar emoji personalizado",
|
||||
"Create": "Criar",
|
||||
"ImageAspectError": "A imagem deve ter proporção 1:1.",
|
||||
"ShortcodeMatchError": "Pode conter letras, números e os símbolos '-', '+' e '_'.",
|
||||
"ShortcodeExistsError": "Este nome já está em uso. Escolha outro nome.",
|
||||
"NewCustomEmojiDialogClose": "Fechar diálogo?",
|
||||
"NewCustomEmojiDialogCloseNote": "Todas as alterações serão perdidas"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"string": {
|
||||
"WorkspaceNamePattern": "O nome deve ter 40 caracteres ou menos, não está vazio e não pode conter caracteres especiais (<, >, /)",
|
||||
"Export": "Exportar",
|
||||
"DataToExport": "Dados para exportar",
|
||||
"ExportDocuments": "Documentos",
|
||||
"ExportMilestones": "Marco",
|
||||
"ExportIssues": "Problemas",
|
||||
"ExportTestCases": "Casos de teste",
|
||||
"ExportTestRuns": "Execuções de teste",
|
||||
"ExportTestPlans": "Planos de teste",
|
||||
"ExportFormat": "Formato de exportação",
|
||||
"ExportJSON": "JSON",
|
||||
"ExportCSV": "CSV",
|
||||
"ExportUnifiedFormat": "Formato Unificado Huly",
|
||||
"ExportIncludeContent": "Incluir conteúdo",
|
||||
"ExportEverything": "Tudo",
|
||||
"ExportAttributesOnly": "Apenas atributos",
|
||||
"ExportRequestSuccess": "Exportação iniciada.",
|
||||
"ExportRequestSuccessMessage": "Exportação iniciada. Você receberá uma notificação em sua caixa de entrada quando for concluída.",
|
||||
"ExportRequestFailed": "Falha ao enviar exportação.",
|
||||
"ExportRequestFailedMessage": "Ocorreu um erro ao enviar a exportação. Por favor, tente novamente mais tarde.",
|
||||
"ExportCompleted": "Exportação concluída. Seus arquivos estão prontos. Você pode baixá-los do drive.",
|
||||
"ExportFailed": "Falha ao exportar dados. Por favor, tente novamente mais tarde.",
|
||||
"ExportToWorkspace": "Exportar para outro espaço de trabalho",
|
||||
"TargetWorkspace": "Espaço de destino",
|
||||
"ExportSource": "Fonte de exportação",
|
||||
"ExportSelected": "Itens selecionados",
|
||||
"ExportAll": "Todos os itens",
|
||||
"ExportStarted": "Exportação iniciada",
|
||||
"ExportStartedMessage": "Exportação iniciada. Você receberá uma notificação quando for concluída.",
|
||||
"ExportToWorkspaceCompleted": "Exportação concluída",
|
||||
"ExportToWorkspaceCompletedMessage": "Exportação concluída com sucesso.",
|
||||
"ImportToWorkspaceNotificationMessage": "{count} documentos importados para o seu espaço de trabalho",
|
||||
"ImportCompleted": "Documentos importados para o espaço de trabalho",
|
||||
"SourceWorkspace": "Espaço de trabalho de origem",
|
||||
"ExportedCount": "Quantidade exportada",
|
||||
"ExportedDocumentIds": "IDs dos documentos exportados",
|
||||
"DocumentsImportedFromWorkspace": "{count, plural, one {1 documento foi importado do espaço de trabalho {workspace}} other {# documentos foram importados do espaço de trabalho {workspace}}}:",
|
||||
"ExportedDocumentClass": "Classe dos documentos exportados",
|
||||
"Import": "Importar",
|
||||
"ImportedDocuments": "Novos documentos",
|
||||
"ExportToWorkspaceFailed": "Exportação falhou",
|
||||
"SelectWorkspace": "Selecionar espaço de trabalho",
|
||||
"SelectWorkspaceToExport": "Selecionar espaço de trabalho para exportar {count, plural, =1 {1 documento} other {# documentos}}",
|
||||
"SelectWorkspaceToExportSpace": "Selecionar espaço de trabalho para exportar documentos do espaço",
|
||||
"SelectSpace": "Selecionar espaço",
|
||||
"NoSelectedDocuments": "Nenhum documento selecionado",
|
||||
"RequestPermissionToImport": "Por favor, solicite permissão ao proprietário do espaço de trabalho de destino para importar documentos.",
|
||||
"SkipDeletedObsolete": "Pular documentos arquivados ou obsoletos",
|
||||
"ExportOnlyEffective": "Exportar apenas documentos com status efetivo",
|
||||
"ExportFilterMode": "Documentos a exportar",
|
||||
"ExportFilterEffectiveOnly": "Apenas documentos efetivos",
|
||||
"ExportFilterSkipArchivedObsolete": "Todos exceto arquivados e obsoletos",
|
||||
"ExportFilterAll": "Todos os documentos",
|
||||
"ExportResultRecordTitle": "Exportação de documentos do espaço de trabalho {workspace} ({date})"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"string": {
|
||||
"GlobalProfile": "Perfil global",
|
||||
"EditProfile": "Editar perfil",
|
||||
"GeneralInformation": "Informações gerais",
|
||||
"FirstName": "Nome",
|
||||
"LastName": "Sobrenome",
|
||||
"City": "Cidade",
|
||||
"Country": "País",
|
||||
"Bio": "Bio",
|
||||
"FirstNamePlaceholder": "Digite o nome",
|
||||
"LastNamePlaceholder": "Digite o sobrenome",
|
||||
"CityPlaceholder": "Digite a cidade",
|
||||
"CountryPlaceholder": "Digite o país",
|
||||
"BioPlaceholder": "Conte-nos sobre você...",
|
||||
"Save": "Salvar",
|
||||
"Cancel": "Cancelar",
|
||||
"MaximumLength": "Máximo {count} caracteres",
|
||||
"Required": "Este campo é obrigatório",
|
||||
"ProfileVisibility": "Visibilidade do perfil",
|
||||
"PublicProfile": "Público",
|
||||
"PrivateProfile": "Privado",
|
||||
"PublicProfileDescription": "Seu perfil é visível para todos",
|
||||
"PrivateProfileDescription": "Seu perfil é visível apenas para você",
|
||||
"AddBioPlaceholder": "Adicione uma biografia para contar aos outros sobre você...",
|
||||
"AddLocationPlaceholder": "Adicione sua localização...",
|
||||
"ProfileNotAvailable": "Perfil não disponível"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"string": {
|
||||
"MessageID": "ID da mensagem",
|
||||
"IntegrationLabel": "Gmail",
|
||||
"IntegrationDescription": "Usar integração do Gmail",
|
||||
"SharedMessages": "emails partilhados",
|
||||
"To": "Para:",
|
||||
"From": "De:",
|
||||
"Copy": "Cópia",
|
||||
"MessagesSelected": "mensagens selecionadas",
|
||||
"PublishSelected": "Publicar selecionados",
|
||||
"CreateMessage": "Criar mensagem",
|
||||
"ShareMessages": "Partilhar mensagens",
|
||||
"Connect": "Conectar",
|
||||
"RedirectGoogle": "Será redirecionado para a página de autenticação do Google",
|
||||
"ConnectGmail": "Conectar conta do Gmail",
|
||||
"Reply": "Responder",
|
||||
"Subject": "Assunto",
|
||||
"Send": "Enviar",
|
||||
"Resend": "Reenviar",
|
||||
"NewMessage": "Nova mensagem",
|
||||
"NewMessageTo": "Nova mensagem para",
|
||||
"Cancel": "Cancelar",
|
||||
"SubjectPlaceholder": "Assunto da mensagem",
|
||||
"CopyPlaceholder": "Cópia para",
|
||||
"ReplyTo": "Responder a",
|
||||
"Message": "Mensagem",
|
||||
"Messages": "Mensagens",
|
||||
"Incoming": "Recebido",
|
||||
"Email": "Email",
|
||||
"Status": "Estado",
|
||||
"EmailPlaceholder": "joao.silva@gmail.com",
|
||||
"WriteEmail": "Escrever Email",
|
||||
"Shared": "Partilhado",
|
||||
"AvailableTo": "Disponível para",
|
||||
"HaveWrittenEmail": "escreveram um email",
|
||||
"NewIncomingMessage": "Recebeu um novo email",
|
||||
"ConfigLabel": "Email",
|
||||
"ConfigDescription": "Extensão para a integração de email do Gmail",
|
||||
"GooglePrivacy": "Huly’s use and transfer of information received from Google APIs to any other app will adhere to <a href=\"https://developers.google.com/terms/api-services-user-data-policy#additional_requirements_for_specific_api_scopes\" target=\"_blank\">Google API Services User Data Policy</a>, including the Limited Use requirements.",
|
||||
"EmailNotificationsDescription": "Receba notificações pessoais por e-mail.",
|
||||
"FailedToConnect": "O serviço Gmail não está disponível",
|
||||
"TotalMessages": "Total de mensagens:",
|
||||
"Configure": "Configurar integração do Gmail",
|
||||
"GmailSpace": "Espaço para mensagens do Gmail",
|
||||
"PersonSpaceInfo": "O email estará disponível apenas para você",
|
||||
"SharedSpaceInfo": "O email estará disponível para todos os participantes do espaço",
|
||||
"ConfigurationRequired": "Por favor, configure sua integração de Gmail para começar a usá-la"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"string": {
|
||||
"CreatePublicLink": "Criar link público",
|
||||
"PublicLink": "Link público",
|
||||
"Revoke": "Revogar",
|
||||
"RevokeConfirmation": "Isto fará com que o link compartilhado anteriormente pare de funcionar. Tem certeza de que deseja revogar este link público?",
|
||||
"LinkWasRevoked": "Link público revogado",
|
||||
"Copy": "Copiar"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
{
|
||||
"string": {
|
||||
"Department": "Departamento",
|
||||
"ParentDepartmentLabel": "Departamento Superior",
|
||||
"Structure": "Estrutura",
|
||||
"CreateDepartment": "Criar departamento",
|
||||
"CreateDepartmentLabel": "Departamento",
|
||||
"DepartmentPlaceholder": "Departamento",
|
||||
"TeamLead": "Líder de equipa",
|
||||
"UnAssignLead": "Retirar líder de equipa",
|
||||
"MemberCount": "{count, plural, =0 {sem colaboradores} =1 {1 colaborador} other {# colaboradores}}",
|
||||
"AssignLead": "Atribuir líder de equipa",
|
||||
"TeamLeadTooltip": "{value}",
|
||||
"HRApplication": "Recursos Humanos (beta)",
|
||||
"MoveStaff": "Transferência de colaborador",
|
||||
"MoveStaffDescr": "Pretende transferir o colaborador de {current} para {department}?",
|
||||
"Departments": "Departamentos",
|
||||
"Positions": "Cargos",
|
||||
"ShowEmployees": "Mostrar colaboradores",
|
||||
"AddEmployee": "Adicionar colaborador",
|
||||
"SelectEmployee": "Selecionar colaborador",
|
||||
"Schedule": "Calendário",
|
||||
"RequestType": "Tipo",
|
||||
"CreateRequest": "Criar {type}",
|
||||
"Today": "Hoje",
|
||||
"Summary": "Total",
|
||||
"NoEmployeesInDepartment": "Não existem colaboradores no departamento selecionado",
|
||||
"Vacation": "Férias",
|
||||
"Sick": "Doença",
|
||||
"PTO": "Ausência remunerada",
|
||||
"PTOs": "PTOs",
|
||||
"Remote": "Remoto",
|
||||
"Overtime": "Horas extra",
|
||||
"PTO2": "Ausência remunerada/2",
|
||||
"Overtime2": "Horas extra/2",
|
||||
"EditRequest": "Editar {type}",
|
||||
"EditRequestType": "Editar tipo",
|
||||
"ChooseNewType": "Escolher novo tipo:",
|
||||
"UnchangeableType": "Este tipo não pode ser alterado",
|
||||
"Request": "Pedido",
|
||||
"ExistingRequests": "Já existem pedidos para as datas selecionadas",
|
||||
"Staff": "Colaborador",
|
||||
"Member": "Membro",
|
||||
"Members": "Membros",
|
||||
"NoMembers": "Nenhum membro adicionado",
|
||||
"AddMember": "Adicionar membro",
|
||||
"Subscribers": "Subscritores",
|
||||
"PublicHoliday": "Feriado",
|
||||
"Title": "Título",
|
||||
"Description": "Descrição",
|
||||
"PublicHolidays": "Public holidays",
|
||||
"MarkAsPublicHoliday": "Marcar como feriado",
|
||||
"EditPublicHoliday": "Editar feriado",
|
||||
"Managers": "Gestores",
|
||||
"Export": "Exportar",
|
||||
"Separator": "Separador",
|
||||
"ChooseSeparator": "Escolher separador",
|
||||
"RequestCreated": "Pedido criado",
|
||||
"RequestUpdated": "Pedido atualizado",
|
||||
"RequestRemoved": "Pedido removido",
|
||||
"ConfigLabel": "Recursos humanos",
|
||||
"ConfigDescription": "Extensão para gestão da estrutura organizacional e calendário de trabalho dos colaboradors",
|
||||
"WorkingDays": "Working days",
|
||||
"ReportedDays": "Reported days",
|
||||
"Tasks": "Tasks",
|
||||
"TPD": "TPD",
|
||||
"EXTRa": "EXTRa"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"string": {
|
||||
"IntegrationLabel": "Huly Mail",
|
||||
"IntegrationDescription": "Conecte sua caixa de correio Huly para enviar, receber e gerenciar e-mails",
|
||||
"Connect": "Conectar",
|
||||
"ConnectHulyMail": "Conectar caixa de correio Huly",
|
||||
"Cancel": "Cancelar",
|
||||
"Email": "E-mail",
|
||||
"Status": "Status",
|
||||
"FailedToConnect": "O serviço de e-mail Huly não está disponível",
|
||||
"TotalMessages": "Total de mensagens:",
|
||||
"Configure": "Configurar Huly Mail",
|
||||
"ChannelSpace": "Espaço para canal de mensagens",
|
||||
"PersonSpaceInfo": "O e-mail estará disponível apenas para você",
|
||||
"SharedSpaceInfo": "O e-mail estará disponível para todos os participantes do espaço",
|
||||
"Mailbox": "Caixa de correio",
|
||||
"MailboxesNotConfigured": "Nenhuma caixa de correio encontrada",
|
||||
"ConfigureMailBoxes": "Por favor, adicione uma caixa de correio na seção de Caixas de correio para começar"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"string": {
|
||||
"Inbox": "Caixa de entrada",
|
||||
"ReactedToYourMessage": "reacionou ao seu mensagem",
|
||||
"ClearAll": "Limpar tudo",
|
||||
"InboxIsClear": "Caixa de entrada está vazia",
|
||||
"YouDontHaveAnyNewMessages": "Não tem nenhuma nova mensagem",
|
||||
"ReadAll": "Ler tudo",
|
||||
"Clearing": "Limpando...",
|
||||
"Reading": "Lendo...",
|
||||
"HideUserNames": "Esconder nomes de usuário"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"status": {
|
||||
"CategoryRequired": "Categoria Obrigatória",
|
||||
"NameRequired": "Nome Obrigatório"
|
||||
},
|
||||
"string": {
|
||||
"Categories": "Categorias",
|
||||
"Category": "Categoria",
|
||||
"CategoryCreateLabel": "Categoria",
|
||||
"CreateCategory": "Criar Categoria",
|
||||
"CreateSubcategory": "Criar Sub-Categoria",
|
||||
"Inventory": "Inventário",
|
||||
"ProductCreateLabel": "Produto",
|
||||
"CreateProduct": "Criar Produto",
|
||||
"Products": "Produtos",
|
||||
"Product": "Produto",
|
||||
"Variant": "Variante",
|
||||
"SKU": "SKU",
|
||||
"Variants": "Variantes",
|
||||
"NoVariantsForProduct": "Não existem variantes para este produto.",
|
||||
"CreateVariant": "Criar Variante",
|
||||
"ConfigLabel": "Inventário",
|
||||
"ConfigDescription": "Extensão para gerir extensões"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"string": {
|
||||
"CreateFunnel": "Criar Funil",
|
||||
"CreateLead": "Criar Lead",
|
||||
"Funnel": "Funil",
|
||||
"FunnelName": "Nome do Funil",
|
||||
"Funnels": "Funis",
|
||||
"LeadApplication": "Leads (beta)",
|
||||
"LeadCreateLabel": "Lead",
|
||||
"SelectFunnel": "Selecionar Funil",
|
||||
"LeadName": "Nome do Lead",
|
||||
"More": "Mais...",
|
||||
"Customer": "Cliente",
|
||||
"Customers": "Clientes",
|
||||
"Leads": "Leads",
|
||||
"MyLeads": "As minhas leads",
|
||||
"SelectCustomer": "Selecionar Cliente",
|
||||
"Lead": "Lead",
|
||||
"Assignee": "Atribuído a",
|
||||
"Title": "Título",
|
||||
"LeadPlaceholder": "O lead simples",
|
||||
"ManageFunnelStatuses": "Gerir estados do Funil",
|
||||
"GotoLeadApplication": "Mudar para a aplicação de Leads",
|
||||
"IssueDescriptionPlaceholder": "Adicionar descrição...",
|
||||
"CreateCustomer": "Criar Cliente",
|
||||
"CreateCustomerLabel": "Novo Cliente",
|
||||
"NoLeadsForDocument": "Sem leads para o documento",
|
||||
"Description": "Cliente Descrição",
|
||||
"FullDescription": "Descrição completa",
|
||||
"FunnelPlaceholder": "O Funil simples",
|
||||
"Members": "Membros",
|
||||
"UnAssign": "Desatribuir",
|
||||
"ConfigLabel": "CRM",
|
||||
"ConfigDescription": "Extensão para gestão de relacionamento com o Cliente",
|
||||
"EditFunnel": "Editar Funil",
|
||||
"FunnelMembers": "Membros",
|
||||
"ForbidCreateFunnelPermission": "Proibir criação de funil",
|
||||
"ForbidCreateFunnelPermissionDescription": "Proíbe os utilizadores de criar novos funis"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
{
|
||||
"status": {
|
||||
"RequiredField": "Campo obrigatório {field}",
|
||||
"FieldsDoNotMatch": "{field} não coincidem com {field2}",
|
||||
"ConnectingToServer": "A ligar ao servidor....",
|
||||
"IncorrectValue": "Valor incorreto {field}"
|
||||
},
|
||||
"string": {
|
||||
"ChangePassword": "Mudar senha",
|
||||
"CurrentPassword": "Senha atual",
|
||||
"NewPassword": "Nova senha",
|
||||
"EnterCurrentPassword": "Digite a senha atual",
|
||||
"EnterNewPassword": "Digite a nova senha",
|
||||
"RepeatNewPassword": "Repita a nova senha",
|
||||
"PasswordExpiredDesc": "A sua senha expirou. Por favor, defina uma nova senha para continuar.",
|
||||
"LogIn": "Iniciar Sessão",
|
||||
"SignUp": "Registar",
|
||||
"CreateWorkspace": "Criar espaço de trabalho",
|
||||
"HaveWorkspace": "Já tem um espaço de trabalho?",
|
||||
"LastName": "Apelido",
|
||||
"FirstName": "Nome",
|
||||
"Join": "Participar",
|
||||
"Email": "Email",
|
||||
"Password": "Palavra-Passe",
|
||||
"Workspace": "Nome do espaço de trabalho",
|
||||
"DoNotHaveAnAccount": "Não tem uma conta?",
|
||||
"PasswordRepeat": "Repetir palavra-passe",
|
||||
"HaveAccount": "Já tem uma conta?",
|
||||
"LoadingAccount": "Carregando...",
|
||||
"SelectWorkspace": "Selecionar espaço de trabalho",
|
||||
"Copy": "Copiar",
|
||||
"Copied": "Copiado",
|
||||
"Close": "Fechar",
|
||||
"InviteDescription": "Partilhe este link para convidar outros utilizadores",
|
||||
"WantAnotherWorkspace": "Quer criar outro espaço de trabalho?",
|
||||
"ChangeAccount": "Alterar conta",
|
||||
"NotSeeingWorkspace": "Não vê o seu espaço de trabalho?",
|
||||
"ForgotPassword": "Esqueceu-se da palavra-passe?",
|
||||
"KnowPassword": "Sabe a sua palavra-passe?",
|
||||
"Recover": "Recuperar",
|
||||
"PasswordRecovery": "Recuperação da palavra-passe",
|
||||
"RecoveryLinkSent": "Link de recuperação de palavra-passe enviado para o email",
|
||||
"UseWorkspaceInviteSettings": "Utilizar definições de convite para o espaço de trabalho",
|
||||
"LinkValidHours": "Link válido (horas):",
|
||||
"EmailMask": "Máscara de email:",
|
||||
"InviteLimit": "Limite de convites:",
|
||||
"GetLink": "Obter link de convite",
|
||||
"NoLimit": "Sem limite",
|
||||
"AlreadyJoined": "Já participou?",
|
||||
"ConfirmationSent": "Foi enviada uma mensagem para o seu email contendo um link para confirmar o seu endereço.",
|
||||
"ConfirmationSent2": "Por favor, siga o link para concluir o seu registo.",
|
||||
"ContinueWith": "Continuar com {provider}",
|
||||
"HaventReceivedCode": "Não recebeu o código?",
|
||||
"ResendCode": "Reenviar código",
|
||||
"WrongEmail": "Email errado?",
|
||||
"ChangeEmail": "Alterar email",
|
||||
"SentTo": "Enviamos um código para ",
|
||||
"CanFindCode": "Não encontra o seu código? Verifique a sua pasta de spam.",
|
||||
"LoginWithPassword": "Iniciar sessão com palavra-passe",
|
||||
"LoginWithCode": "Iniciar sessão com código",
|
||||
"SignUpWithPassword": "Registar com palavra-passe",
|
||||
"SignUpWithCode": "Registar com código",
|
||||
"FillInProfile": "Preencha o seu perfil",
|
||||
"SetUpPassword": "Definir a sua palavra-passe",
|
||||
"Next": "Seguinte",
|
||||
"Skip": "Saltar",
|
||||
"SignUpCompleted": "Registo concluído",
|
||||
"StartUsingHuly": "Começar a usar Huly",
|
||||
"PasswordMinLength": "{count, plural, =1 {A senha deve ter pelo menos # caractere} other {A senha deve ter pelo menos # caracteres}}",
|
||||
"PasswordMinSpecialChars": "{count, plural, =1 {A senha deve conter pelo menos # caractere especial} other {A senha deve conter pelo menos # caracteres especiais}}",
|
||||
"PasswordMinDigits": "{count, plural, =1 {A senha deve conter pelo menos # número} other {A senha deve conter pelo menos # números}}",
|
||||
"PasswordMinUpperChars": "{count, plural, =1 {A senha deve conter pelo menos # letra maiúscula} other {A senha deve conter pelo menos # letras maiúsculas}}",
|
||||
"PasswordMinLowerChars": "{count, plural, =1 {A senha deve conter pelo menos # letra minúscula} other {A senha deve conter pelo menos # letras minúsculas}}",
|
||||
"WorkspaceArchivedDesc": "O espaço de trabalho está arquivado por estar inativo.",
|
||||
"RestoreArchivedWorkspace": "Restaurar",
|
||||
"Hello": "Olá {name},",
|
||||
"ProcessingInvite": "Processando convite, aguarde...",
|
||||
"SignToProceed": "Por favor, inicie sessão para continuar",
|
||||
"Proceed": "Continuar",
|
||||
"SetPasswordLater": "Vou definir uma senha mais tarde",
|
||||
"SetPasswordNow": "Vou definir uma senha agora",
|
||||
"LoginAsGuest": "Continuar como convidado",
|
||||
"SignUpToCreateWorkspace": "Não há espaços de trabalho com acesso de convidado. Por favor, cadastre-se para criar o seu.",
|
||||
"WhatIsYourName": "Qual é o seu nome?",
|
||||
"AccessExpired": "O tempo de acesso expirou. Por favor, solicite um novo link de acesso.",
|
||||
"AccessNotActive": "O tempo de acesso ainda não começou. Começa em: "
|
||||
}
|
||||
}
|
||||
@@ -34,9 +34,6 @@ export default mergeIds(loginId, login, {
|
||||
HaveAccount: '' as IntlString,
|
||||
LoadingAccount: '' as IntlString,
|
||||
Join: '' as IntlString,
|
||||
Email: '' as IntlString,
|
||||
Password: '' as IntlString,
|
||||
PasswordRepeat: '' as IntlString,
|
||||
Workspace: '' as IntlString,
|
||||
SignUp: '' as IntlString,
|
||||
DoNotHaveAnAccount: '' as IntlString,
|
||||
|
||||
@@ -89,7 +89,10 @@ export default plugin(loginId, {
|
||||
WorkspaceArchived: '' as IntlString,
|
||||
WorkspaceArchivedDesc: '' as IntlString,
|
||||
RestoreArchivedWorkspace: '' as IntlString,
|
||||
PasswordExpiredDesc: '' as IntlString
|
||||
PasswordExpiredDesc: '' as IntlString,
|
||||
Email: '' as IntlString,
|
||||
Password: '' as IntlString,
|
||||
PasswordRepeat: '' as IntlString
|
||||
},
|
||||
function: {
|
||||
SendInvite: '' as Resource<(email: string, role: AccountRole) => Promise<void>>,
|
||||
|
||||
@@ -0,0 +1,98 @@
|
||||
{
|
||||
"string": {
|
||||
"Office": "Escritório",
|
||||
"Room": "Sala",
|
||||
"RoomType": "Tipo de sala",
|
||||
"Share": "Compartilhar",
|
||||
"StopShare": "Parar compartilhamento",
|
||||
"StartVideo": "Iniciar vídeo",
|
||||
"StopVideo": "Parar vídeo",
|
||||
"Mute": "Mudo",
|
||||
"UnMute": "Desmutar",
|
||||
"LeaveRoom": "Sair da sala",
|
||||
"Floors": "Andares",
|
||||
"MyOffice": "Meu Escritório",
|
||||
"EditOffice": "Editar escritório",
|
||||
"FinalizeEditing": "Feito",
|
||||
"Floor": "Andar",
|
||||
"ChangeFloor": "Trocar andar",
|
||||
"IsKnocking": "{name} está batendo...",
|
||||
"Accept": "Aceitar",
|
||||
"Decline": "Recusar",
|
||||
"EnterRoom": "Entrar na sala",
|
||||
"TeamRoom": "Sala de equipe",
|
||||
"MeetingRoom": "Sala de reunião",
|
||||
"KnockingTo": "Estamos batendo em...",
|
||||
"Cancel": "Cancelar",
|
||||
"AnotherWindowError": "Você já está conectado em outra janela. Por favor, utilize essa janela ou reconecte-se",
|
||||
"Speaker": "Alto-falante",
|
||||
"Microphone": "Microfone",
|
||||
"Camera": "Câmera",
|
||||
"Settings": "Configurações",
|
||||
"LoveDescription": "Ambiente Virtual de Escritório ao Vivo",
|
||||
"DefaultDevice": "Dispositivo Padrão",
|
||||
"Knock": "Bater",
|
||||
"Open": "Aberto",
|
||||
"DND": "Não Perturbe",
|
||||
"ChangeAccess": "Alterar acesso",
|
||||
"AddAFloor": "Adicionar um piso",
|
||||
"RenameAFloor": "Mudar o nome de um piso",
|
||||
"StartWithoutVideo": "Sempre começar sem vídeo",
|
||||
"StartWithMutedMic": "Sempre começar com o microfone silenciado",
|
||||
"InvitingYou": "{name} está te convidando para entrar",
|
||||
"YouInivite": "Você está convidando para entrar",
|
||||
"NoiseCancellation": "Cancelamento de ruído",
|
||||
"KnockingLabel": "Batendo",
|
||||
"InivitingLabel": "Convite",
|
||||
"Invite": "Convidar",
|
||||
"KnockAction": "Bater",
|
||||
"NoiseCancellationNotSupported": "Seu navegador não suporta cancelamento de ruído",
|
||||
"Blur": "Desfoque de fundo",
|
||||
"BlurRadius": "Raio de desfoque",
|
||||
"BlurTooltip": "A função de desfoque aumenta significativamente o consumo da CPU, o que pode afetar o desempenho geral do sistema.",
|
||||
"GuestLink": "Link de convidado",
|
||||
"CopyGuestLink": "Copiar link de convidado",
|
||||
"Record": "Gravar",
|
||||
"StopRecord": "Parar gravação",
|
||||
"LeaveRoomConfirmation": "Tem certeza de que deseja sair da sala?",
|
||||
"ServiceNotConfigured": "O serviço não está configurado",
|
||||
"FullscreenMode": "Modo de ecrã inteiro",
|
||||
"ExitingFullscreenMode": "Saindo do modo de tela cheia",
|
||||
"Select": "Seleccione",
|
||||
"ChooseShare": "Escolha o que partilhar",
|
||||
"CreateMeeting": "Criar reunião",
|
||||
"MoreOptions": "Mais opções",
|
||||
"StartTranscription": "Iniciar transcrição",
|
||||
"StopTranscription": "Parar transcrição",
|
||||
"Meeting": "Reunião",
|
||||
"Transcription": "Transcrição",
|
||||
"StartWithTranscription": "Começar com transcrição",
|
||||
"MeetingMinutes": "Minutos da reunião",
|
||||
"MeetingsMinutes": "Minutos das reuniões",
|
||||
"StartMeeting": "Iniciar reunião",
|
||||
"Video": "Vídeo",
|
||||
"NoMeetingMinutes": "Sem minutos de reunião",
|
||||
"JoinMeeting": "Participar na reunião",
|
||||
"MeetingStart": "Início da reunião",
|
||||
"MeetingEnd": "Fim da reunião",
|
||||
"EndMeeting": "Terminar reunião",
|
||||
"Status": "Estado",
|
||||
"Active": "Ativo",
|
||||
"Finished": "Finalizado",
|
||||
"StartWithRecording": "Começar com gravação",
|
||||
"Language": "Idioma",
|
||||
"Kick": "Expulsar",
|
||||
"WithAudio": "Incluir áudio do sistema",
|
||||
"ShareWithAudioTooltip": "Compartilhe sua tela com o áudio do sistema. Reinicie o compartilhamento de tela para aplicar as alterações.",
|
||||
"MicPermission": "Microfone não encontrado, verifique as permissões do navegador",
|
||||
"CamPermission": "Câmera não encontrada, verifique as permissões do navegador",
|
||||
"SearchMeetingMinutes": "Procurar minutos de reunião...",
|
||||
"Sharing": "A partilhar...",
|
||||
"Browser": "Navegador",
|
||||
"Monitor": "Monitor",
|
||||
"Window": "Janela",
|
||||
"MeetingEmptyTitle": "Reunião encerrada?",
|
||||
"MeetingEmptyMessage": "Todos os participantes saíram. Você será desconectado em 1 minuto. Deseja permanecer?",
|
||||
"StayInRoom": "Permanecer na sala"
|
||||
}
|
||||
}
|
||||
@@ -80,7 +80,7 @@ export const languagesDisplayData: {
|
||||
no: { emoji: '🇳🇴', label: 'Norsk' },
|
||||
pl: { emoji: '🇵🇱', label: 'Polski' },
|
||||
pt: { emoji: '🇵🇹', label: 'Português' },
|
||||
'pt-BR': { emoji: '🇧🇷', label: 'Português (Brasil)' },
|
||||
'pt-br': { emoji: '🇧🇷', label: 'Português (Brasil)' },
|
||||
'pt-PT': { emoji: '🇵🇹', label: 'Português (Portugal)' },
|
||||
ro: { emoji: '🇷🇴', label: 'Română' },
|
||||
ru: { emoji: '🇷🇺', label: 'Русский' },
|
||||
|
||||
@@ -60,7 +60,7 @@ export type RoomLanguage =
|
||||
| 'no'
|
||||
| 'pl'
|
||||
| 'pt'
|
||||
| 'pt-BR'
|
||||
| 'pt-br'
|
||||
| 'pt-PT'
|
||||
| 'ro'
|
||||
| 'ru'
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"string": {
|
||||
"MailTag": "Correio"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"string": {
|
||||
"Camera": "Câmera",
|
||||
"Microphone": "Microfone",
|
||||
"Speaker": "Alto-falante",
|
||||
"DefaultCam": "Câmera padrão",
|
||||
"DefaultMic": "Microfone padrão",
|
||||
"DefaultSpeaker": "Alto-falante padrão",
|
||||
"TurnOnCam": "Ligar câmera",
|
||||
"TurnOffCam": "Desligar câmera",
|
||||
"TurnOnMic": "Ligar microfone",
|
||||
"TurnOffMic": "Desligar microfone",
|
||||
"NoCam": "Sem câmera",
|
||||
"NoMic": "Sem microfone",
|
||||
"NoSpeaker": "Sem alto-falante",
|
||||
"On": "Ligado",
|
||||
"Off": "Desligado"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
{
|
||||
"string": {
|
||||
"Notification": "Notificação",
|
||||
"Notifications": "Notificações",
|
||||
"NoNotifications": "Sem notificações",
|
||||
"EmailNotification": "Correio eletrónico",
|
||||
"PlatformNotification": "na plataforma",
|
||||
"Track": "Seguir",
|
||||
"DontTrack": "Não seguir",
|
||||
"BrowserNotification": "no navegador",
|
||||
"Remove": "Remover notificação",
|
||||
"RemoveAll": "Remover todas as notificações",
|
||||
"MarkAllAsRead": "Marcar todas as notificações como lidas",
|
||||
"MarkAsRead": "Marcar como lido",
|
||||
"MarkAsUnread": "Marcar como não lido",
|
||||
"Archive": "Arquivar",
|
||||
"Inbox": "Caixa de Entrada",
|
||||
"Collaborators": "Colaboradores",
|
||||
"Change": "Alteração",
|
||||
"AddedRemoved": "Adicionado/Removido",
|
||||
"YouAddedCollaborators": "Foi adicionado a colaboradores",
|
||||
"YouHaveJoinedTheConversation": "Você se juntou à conversa",
|
||||
"ChangeCollaborators": "Colaboradores Alterados",
|
||||
"Activity": "Atividade",
|
||||
"People": "Pessoas",
|
||||
"All": "Todos",
|
||||
"Read": "Lido",
|
||||
"Unread": "Não lido",
|
||||
"CommonNotificationTitle": "{title}",
|
||||
"CommonNotificationBody": "Atualizado por {senderName}",
|
||||
"CommonNotificationChanged": "{senderName} alterou {property}",
|
||||
"CommonNotificationChangedProperty": "{senderName} alterou {property} para \"{newValue}\"",
|
||||
"ChangedCollaborators": "Colaboradores alterados",
|
||||
"NewCollaborators": "Novos colaboradores",
|
||||
"RemovedCollaborators": "Colaboradores removidos",
|
||||
"Edited": "Editado",
|
||||
"Pinned": "Fixado",
|
||||
"Message": "Mensagem",
|
||||
"FlatList": "Lista Plana",
|
||||
"GroupedList": "Lista Agrupada",
|
||||
"ArchiveAll": "Arquivar tudo",
|
||||
"MarkReadAll": "Marcar tudo como lido",
|
||||
"MarkUnreadAll": "Marcar tudo como não lido",
|
||||
"ArchiveAllConfirmationTitle": "Arquivar todas as notificações?",
|
||||
"ArchiveAllConfirmationMessage": "Esta seguro que quer arquivar todas as notificações? Esta operação não se pode desfazer.",
|
||||
"StarDocument": "Marcar documento",
|
||||
"UnstarDocument": "Desmarcar documento",
|
||||
"Push": "Push",
|
||||
"EnablePush": "Ativar notificações push",
|
||||
"NotificationBlockedInBrowser": "Notificações bloqueadas no navegador. Por favor habilite las notificaciones en la configuración de su navegador.",
|
||||
"General": "Geral",
|
||||
"InboxNotificationsDescription": "Receba notificações pessoais em sua caixa de entrada do Huly.",
|
||||
"PushNotificationsDescription": "Receba notificações pessoais no desktop.",
|
||||
"Sound": "Som",
|
||||
"SoundNotificationsDescription": "Receba notificações sonoras para eventos.",
|
||||
"CommonNotificationCollectionAdded": "{senderName} adicionou {collection}",
|
||||
"CommonNotificationCollectionRemoved": "{senderName} removeu {collection}",
|
||||
"NoAccessToObject": "Você não tem mais acesso a este objeto",
|
||||
"ViewIn": "Ver em {app}"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"status": {
|
||||
"RequiredField": "Campo obrigatório {field}",
|
||||
"FieldsDoNotMatch": "{field} não coincidem com {field2}",
|
||||
"ConnectingToServer": "A ligar ao servidor...."
|
||||
},
|
||||
"string": {
|
||||
"CreateWorkspace": "Criar espaço de trabalho",
|
||||
"LastName": "Apelido",
|
||||
"FirstName": "Nome",
|
||||
"Workspace": "Nome do espaço de trabalho",
|
||||
"FillInProfile": "Preencha o seu perfil",
|
||||
"SetUpPassword": "Definir a sua palavra-passe",
|
||||
"Next": "Seguinte",
|
||||
"Skip": "Saltar",
|
||||
"SignUpCompleted": "Registo concluído",
|
||||
"StartUsingHuly": "Começar a usar Huly"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"string": {
|
||||
"Starred": "Destacados",
|
||||
"Star": "Destacar",
|
||||
"Unstar": "Remover destaque"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"string": {
|
||||
"PrintToPDF": "Imprimir em PDF",
|
||||
"PrintingDocumentOf": "Imprimindo documento {current} de {total}",
|
||||
"DownloadAll": "Descarregar tudo",
|
||||
"PrintFailed": "Falha na impressão"
|
||||
}
|
||||
}
|
||||
@@ -121,7 +121,23 @@
|
||||
"RunProcessPermission": "Spustit proces",
|
||||
"CancelProcessPermission": "Zrušit proces",
|
||||
"ForbidRunProcessPermission": "Zakázat spuštění procesu",
|
||||
"ForbidCancelProcessPermission": "Zakázat zrušení procesu"
|
||||
"ForbidCancelProcessPermission": "Forbid cancelling process",
|
||||
"RequestApproval": "Požádat o schválení",
|
||||
"IsApproved": "Schváleno",
|
||||
"Approve": "Schválit",
|
||||
"Reject": "Odmítnout",
|
||||
"Reason": "Důvod",
|
||||
"ApproveRequest": "Schválit požadavek",
|
||||
"OnApproveRequestApproved": "Při schválení požadavku",
|
||||
"OnApproveRequestRejected": "Při zamítnutí požadavku",
|
||||
"ConfirmApproval": "Potvrdit schválení",
|
||||
"ConfirmRejection": "Potvrdit zamítnutí",
|
||||
"RejectionReason": "Důvod zamítnutí",
|
||||
"ProvideRejectionReason": "Poskytnout důvod zamítnutí",
|
||||
"FieldIsEmpty": "Pole je prázdné",
|
||||
"Reviewers": "Recenzenti",
|
||||
"LockCard": "Zamknout kartu",
|
||||
"LockSection": "Zamknout sekci"
|
||||
},
|
||||
"error": {
|
||||
"MethodNotFound": "Metoda nenalezena: {methodId}",
|
||||
|
||||
@@ -121,7 +121,23 @@
|
||||
"RunProcessPermission": "Prozess ausführen",
|
||||
"CancelProcessPermission": "Prozess abbrechen",
|
||||
"ForbidRunProcessPermission": "Ausführen des Prozesses verbieten",
|
||||
"ForbidCancelProcessPermission": "Abbrechen des Prozesses verbieten"
|
||||
"ForbidCancelProcessPermission": "Abbrechen des Prozesses verbieten",
|
||||
"RequestApproval": "Genehmigung anfordern",
|
||||
"IsApproved": "Ist genehmigt",
|
||||
"Approve": "Genehmigen",
|
||||
"Reject": "Ablehnen",
|
||||
"Reason": "Grund",
|
||||
"ApproveRequest": "Genehmigungsanfrage",
|
||||
"OnApproveRequestApproved": "Bei Genehmigung der Anfrage",
|
||||
"OnApproveRequestRejected": "Bei Ablehnung der Anfrage",
|
||||
"ConfirmApproval": "Genehmigung bestätigen",
|
||||
"ConfirmRejection": "Ablehnung bestätigen",
|
||||
"RejectionReason": "Ablehnungsgrund",
|
||||
"ProvideRejectionReason": "Ablehnungsgrund angeben",
|
||||
"FieldIsEmpty": "Feld ist leer",
|
||||
"Reviewers": "Prüfer",
|
||||
"LockCard": "Karte sperren",
|
||||
"LockSection": "Abschnitt sperren"
|
||||
},
|
||||
"error": {
|
||||
"MethodNotFound": "Methode nicht gefunden: {methodId}",
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user