Merge branch 'master' into stable

stable
Alejandro Alonso 2016-04-01 11:31:18 +02:00
commit 8699fe3ec6
417 changed files with 8370 additions and 3367 deletions

1
.babelrc Normal file
View File

@ -0,0 +1 @@
{ "presets": ["es2015", "stage-0"] }

1
.gitignore vendored
View File

@ -14,3 +14,4 @@ tmp/
app/config/main.coffee
scss-lint.log
e2e/screenshots/
app/modules/compile-modules/

View File

@ -1,6 +1,22 @@
# Changelog #
## 2.0.0 Pulsatilla Patens (2016-04-04)
### Features
- Ability to create url custom fields. (thanks to [@astagi](https://github.com/astagi)).
- Blocked projects support
- Moved from iconfont to SVG sprite icon system and redesign.
- Redesign 'Admin > Project > Modules' panel.
- Add badge to project owners
- Limit of user per project.
- Redesign of the create project wizard
- Transfer project ownership
### Misc
- Lots of small and not so small bugfixes.
## 1.10.0 Dryas Octopetala (2016-01-30)
### Features

View File

@ -42,7 +42,7 @@ Please read carefully [our license](https://github.com/taigaio/taiga-front/blob/
#### Bug reports, enhancements and support ####
If you **need help to setup Taiga**, want to **talk about some cool enhancemnt** or you have **some questions**, please write us to our [mailing list](http://groups.google.com/d/forum/taigaio).
If you **need help to setup Taiga**, want to **talk about some cool enhancement** or you have **some questions**, please write us to our [mailing list](http://groups.google.com/d/forum/taigaio).
If you **find a bug** in Taiga you can always report it:
@ -127,7 +127,7 @@ Complete process for all OS at: http://sass-lang.com/install
**Node + Bower + Gulp**
We recommend using [nvm](https://github.com/creationix/nvm) to manage diferent node versions
We recommend using [nvm](https://github.com/creationix/nvm) to manage different node versions
```
npm install -g gulp
npm install -g bower

View File

@ -53,7 +53,10 @@ loadPlugins = (plugins) ->
promise = $.getJSON "/conf.json"
promise.done (data) ->
window.taigaConfig = _.extend({}, window.taigaConfig, data)
window.taigaConfig = _.assign({}, window.taigaConfig, data)
promise.fail () ->
console.error "Your conf.json file is not a valid json file, please review it."
promise.always ->
if window.taigaConfig.contribPlugins.length > 0

View File

@ -111,6 +111,16 @@ configure = ($routeProvider, $locationProvider, $httpProvider, $provide, $tgEven
}
)
$routeProvider.when("/blocked-project/:pslug/",
{
templateUrl: "projects/project/blocked-project.html",
loader: true,
controller: "Project",
controllerAs: "vm"
}
)
$routeProvider.when("/project/:pslug/",
{
templateUrl: "projects/project/project.html",
@ -323,6 +333,16 @@ configure = ($routeProvider, $locationProvider, $httpProvider, $provide, $tgEven
$routeProvider.when("/project/:pslug/admin/contrib/:plugin",
{templateUrl: "contrib/main.html"})
# Transfer project
$routeProvider.when("/project/:pslug/transfer/:token",
{
templateUrl: "projects/transfer/transfer-page.html",
loader: true,
controller: "Project",
controllerAs: "vm"
}
)
# User settings
$routeProvider.when("/user-settings/user-profile",
{templateUrl: "user/user-profile.html"})
@ -335,6 +355,10 @@ configure = ($routeProvider, $locationProvider, $httpProvider, $provide, $tgEven
$routeProvider.when("/cancel-account/:cancel_token",
{templateUrl: "user/cancel-account.html"})
# UserSettings - Contrib Plugins
$routeProvider.when("/user-settings/contrib/:plugin",
{templateUrl: "contrib/user-settings.html"})
# User profile
$routeProvider.when("/profile",
{
@ -363,7 +387,8 @@ configure = ($routeProvider, $locationProvider, $httpProvider, $provide, $tgEven
templateUrl: "auth/login.html",
title: "LOGIN.PAGE_TITLE",
description: "LOGIN.PAGE_DESCRIPTION",
disableHeader: true
disableHeader: true,
controller: "LoginPage",
}
)
$routeProvider.when("/register",
@ -510,15 +535,41 @@ configure = ($routeProvider, $locationProvider, $httpProvider, $provide, $tgEven
$httpProvider.interceptors.push("versionCheckHttpIntercept")
window.checksley.updateValidators({
linewidth: (val, width) ->
lines = taiga.nl2br(val).split("<br />")
valid = _.every lines, (line) ->
line.length < width
blockingIntercept = ($q, $routeParams, $location, $navUrls) ->
# API calls can return blocked elements and in that situation the user will be redirected
# to the blocked project page
# This can happens in two scenarios
# - An ok response containing a blocked_code in the data
# - An error reponse when updating/creating/deleting including a 451 error code
redirectToBlockedPage = ->
pslug = $routeParams.pslug
blockedUrl = $navUrls.resolve("blocked-project", {project: pslug})
currentUrl = $location.url()
if currentUrl.indexOf(blockedUrl) == -1
$location.replace().path(blockedUrl)
responseOk = (response) ->
if response.data.blocked_code
redirectToBlockedPage()
return response
responseError = (response) ->
if response.status == 451
redirectToBlockedPage()
return $q.reject(response)
return {
response: responseOk
responseError: responseError
}
$provide.factory("blockingIntercept", ["$q", "$routeParams", "$location", "$tgNavUrls", blockingIntercept])
$httpProvider.interceptors.push("blockingIntercept")
return valid
})
$compileProvider.debugInfoEnabled(window.taigaConfig.debugInfo || false)
@ -577,6 +628,8 @@ i18nInit = (lang, $translate) ->
maxcheck: $translate.instant("COMMON.FORM_ERRORS.MAX_CHECK")
rangecheck: $translate.instant("COMMON.FORM_ERRORS.RANGE_CHECK")
equalto: $translate.instant("COMMON.FORM_ERRORS.EQUAL_TO")
linewidth: $translate.instant("COMMON.FORM_ERRORS.LINEWIDTH") # Extra validator
pikaday: $translate.instant("COMMON.FORM_ERRORS.PIKADAY") # Extra validator
}
checksley.updateMessages('default', messages)
@ -584,9 +637,28 @@ i18nInit = (lang, $translate) ->
init = ($log, $rootscope, $auth, $events, $analytics, $translate, $location, $navUrls, appMetaService, projectService, loaderService, navigationBarService) ->
$log.debug("Initialize application")
$rootscope.$on '$translatePartialLoaderStructureChanged', () ->
$translate.refresh()
# Checksley - Extra validators
validators = {
linewidth: (val, width) ->
lines = taiga.nl2br(val).split("<br />")
valid = _.every lines, (line) ->
line.length < width
return valid
pikaday: (val) ->
prettyDate = $translate.instant("COMMON.PICKERDATE.FORMAT")
return moment(val, prettyDate).isValid()
}
checksley.updateValidators(validators)
# Taiga Plugins
$rootscope.contribPlugins = @.taigaContribPlugins
$rootscope.adminPlugins = _.where(@.taigaContribPlugins, {"type": "admin"})
$rootscope.adminPlugins = _.filter(@.taigaContribPlugins, {"type": "admin"})
$rootscope.userSettingsPlugins = _.filter(@.taigaContribPlugins, {"type": "userSettings"})
$rootscope.$on "$translateChangeEnd", (e, ctx) ->
lang = ctx.language

View File

@ -27,141 +27,256 @@ debounce = @.taiga.debounce
module = angular.module("taigaKanban")
MAX_MEMBERSHIP_FIELDSETS = 4
#############################################################################
## Create Members Lightbox Directive
#############################################################################
CreateMembersDirective = ($rs, $rootScope, $confirm, $loading, lightboxService, $compile) ->
extraTextTemplate = """
<fieldset class="extra-text">
<textarea ng-attr-placeholder="{{'LIGHTBOX.CREATE_MEMBER.PLACEHOLDER_INVITATION_TEXT' | translate}}"
maxlength="255"></textarea>
</fieldset>
"""
class LightboxAddMembersController
@.$inject = [
"$scope",
"lightboxService",
"tgLoader",
"$tgConfirm",
"$tgResources",
"$rootScope",
]
template = _.template("""
<div class="add-member-wrapper">
<fieldset>
<input tg-capslock type="email" placeholder="{{'LIGHTBOX.CREATE_MEMBER.PLACEHOLDER_TYPE_EMAIL' | translate}}"
<% if(required) { %> data-required="true" <% } %> data-type="email" />
</fieldset>
<fieldset>
<select <% if(required) { %> data-required="true" <% } %> data-required="true">
<% _.each(roleList, function(role) { %>
<option value="<%- role.id %>"><%- role.name %></option>
<% }); %>
</select>
<a class="icon icon-plus add-fieldset" href=""></a>
</fieldset>
</div>
""")
constructor: (@scope, @lightboxService, @tgLoader, @confirm, @rs, @rootScope) ->
@._defaultMaxInvites = 4
@._defaultRole = @.project.roles[0].id
@.form = null
@.submitInvites = false
@.canAddUsers = true
@.memberInvites = []
link = ($scope, $el, $attrs) ->
createFieldSet = (required = true)->
ctx = {roleList: $scope.project.roles, required: required}
return $compile(template(ctx))($scope)
if @.project.max_memberships == null
@.membersLimit = @._defaultMaxInvites
else
pendingMembersCount = Math.max(@.project.max_memberships - @.project.total_memberships, 0)
@.membersLimit = Math.min(pendingMembersCount, @._defaultMaxInvites)
resetForm = ->
$el.find("form textarea").remove()
$el.find("form .add-member-wrapper").remove()
@.addSingleMember()
invitations = $el.find(".add-member-forms")
invitations.html($compile(extraTextTemplate)($scope))
addSingleMember: () ->
@.memberInvites.push({email:'', role_id: @._defaultRole})
fieldSet = createFieldSet()
invitations.prepend(fieldSet)
if @.memberInvites.length >= @.membersLimit
@.canAddUsers = false
@.showWarningMessage = (!@.canAddUsers &&
@.project.total_memberships + @.memberInvites.length == @.project.max_memberships)
$scope.$on "membersform:new", ->
resetForm()
lightboxService.open($el)
removeSingleMember: (index) ->
@.memberInvites.splice(index, 1)
$scope.$on "$destroy", ->
$el.off()
@.canAddUsers = true
@.showWarningMessage = @.membersLimit == 1
$el.on "click", ".delete-fieldset", (event) ->
event.preventDefault()
target = angular.element(event.currentTarget)
fieldSet = target.closest('.add-member-wrapper')
submit: () ->
# Need to reset the form constrains
@.form.initializeFields()
@.form.reset()
return if not @.form.validate()
fieldSet.remove()
@.memberInvites = _.filter(@.memberInvites, (invites) ->
invites.email != "")
lastActionButton = $el.find(".add-member-wrapper fieldset:last > a")
if lastActionButton.hasClass("icon-delete delete-fieldset")
lastActionButton.removeClass("icon-delete delete-fieldset")
.addClass("icon-plus add-fieldset")
@.submitInvites = true
promise = @rs.memberships.bulkCreateMemberships(
@.project.id,
@.memberInvites,
@.invitationText
)
promise.then(
@._onSuccessInvite.bind(this),
@._onErrorInvite.bind(this)
)
$el.on "click", ".add-fieldset", (event) ->
event.preventDefault()
target = angular.element(event.currentTarget)
fieldSet = target.closest('.add-member-wrapper')
_onSuccessInvite: () ->
@.submitInvites = false
@rootScope.$broadcast("membersform:new:success")
@lightboxService.closeAll()
@confirm.notify("success")
target.removeClass("icon-plus add-fieldset")
.addClass("icon-delete delete-fieldset")
_onErrorInvite: (response) ->
@.submitInvites = false
@.form.setErrors(response.data)
if response.data._error_message
@confirm.notify("error", response.data._error_message)
newFieldSet = createFieldSet(false)
fieldSet.after(newFieldSet)
module.controller("LbAddMembersController", LightboxAddMembersController)
$scope.$digest() # To compile newFieldSet and translate text
if $el.find(".add-member-wrapper").length == MAX_MEMBERSHIP_FIELDSETS
$el.find(".add-member-wrapper fieldset:last > a").removeClass("icon-plus add-fieldset")
.addClass("icon-delete delete-fieldset")
submit = debounce 2000, (event) =>
event.preventDefault()
currentLoading = $loading()
.target(submitButton)
.start()
onSuccess = (data) ->
currentLoading.finish()
lightboxService.close($el)
$confirm.notify("success")
$rootScope.$broadcast("membersform:new:success")
onError = (data) ->
currentLoading.finish()
lightboxService.close($el)
$confirm.notify("error")
$rootScope.$broadcast("membersform:new:error")
form = $el.find("form").checksley()
#checksley find new fields
form.destroy()
form.initialize()
if not form.validate()
return
memberWrappers = $el.find("form .add-member-wrapper")
memberWrappers = _.filter memberWrappers, (mw) ->
angular.element(mw).find("input").hasClass('checksley-ok')
invitations = _.map memberWrappers, (mw) ->
memberWrapper = angular.element(mw)
email = memberWrapper.find("input")
role = memberWrapper.find("select")
LightboxAddMembersDirective = (lightboxService) ->
link = (scope, el, attrs, ctrl) ->
lightboxService.open(el)
ctrl.form = el.find("form").checksley()
return {
email: email.val()
role_id: role.val()
scope: {},
bindToController: {
project: '=',
},
controller: 'LbAddMembersController',
controllerAs: 'vm',
templateUrl: 'admin/lightbox-add-members.html',
link: link
}
if invitations.length
invitation_extra_text = $el.find("form textarea").val()
module.directive("tgLbAddMembers", ["lightboxService", LightboxAddMembersDirective])
promise = $rs.memberships.bulkCreateMemberships($scope.project.id,
invitations, invitation_extra_text)
promise.then(onSuccess, onError)
submitButton = $el.find(".submit-button")
#############################################################################
## Warning message directive
#############################################################################
$el.on "submit", "form", submit
LightboxAddMembersWarningMessageDirective = () ->
return {
templateUrl: "admin/lightbox-add-members-no-more=memberships-warning-message.html"
scope: {
project: "="
}
}
return {link: link}
module.directive("tgLightboxAddMembersWarningMessage", [LightboxAddMembersWarningMessageDirective])
module.directive("tgLbCreateMembers", ["$tgResources", "$rootScope", "$tgConfirm", "$tgLoading",
"lightboxService", "$compile", CreateMembersDirective])
#############################################################################
## Transfer project ownership
#############################################################################
LbRequestOwnershipDirective = (lightboxService, rs, confirmService, $translate) ->
return {
link: (scope, el) ->
lightboxService.open(el)
scope.request = () ->
scope.loading = true
rs.projects.transferRequest(scope.projectId).then () ->
scope.loading = false
lightboxService.close(el)
confirmService.notify("success", $translate.instant("ADMIN.PROJECT_PROFILE.REQUEST_OWNERSHIP_SUCCESS"))
templateUrl: "common/lightbox/lightbox-request-ownership.html"
}
module.directive('tgLbRequestOwnership', [
"lightboxService",
"tgResources",
"$tgConfirm",
"$translate",
LbRequestOwnershipDirective])
class ChangeOwnerLightboxController
constructor: (@rs, @lightboxService, @confirm, @translate) ->
@.users = []
@.q = ""
@.commentOpen = false
limit: 3
normalizeString: (normalizedString) ->
normalizedString = normalizedString.replace("Á", "A").replace("Ä", "A").replace("À", "A")
normalizedString = normalizedString.replace("É", "E").replace("Ë", "E").replace("È", "E")
normalizedString = normalizedString.replace("Í", "I").replace("Ï", "I").replace("Ì", "I")
normalizedString = normalizedString.replace("Ó", "O").replace("Ö", "O").replace("Ò", "O")
normalizedString = normalizedString.replace("Ú", "U").replace("Ü", "U").replace("Ù", "U")
return normalizedString
filterUsers: (user) ->
username = user.full_name_display.toUpperCase()
username = @.normalizeString(username)
text = @.q.toUpperCase()
text = @.normalizeString(text)
return _.includes(username, text)
getUsers: () ->
if !@.users.length && !@.q.length
users = @.activeUsers
else
users = @.users
users = users.slice(0, @.limit)
users = _.reject(users, {"selected": true})
return _.reject(users, {"id": @.currentOwnerId})
userSearch: () ->
@.users = @.activeUsers
@.selected = _.find(@.users, {"selected": true})
@.users = _.filter(@.users, @.filterUsers.bind(this)) if @.q
selectUser: (user) ->
@.activeUsers = _.map @.activeUsers, (user) ->
user.selected = false
return user
user.selected = true
@.userSearch()
submit: () ->
@.loading = true
@rs.projects.transferStart(@.projectId, @.selected.id, @.comment)
.then () =>
@.loading = false
@lightboxService.closeAll()
title = @translate.instant("ADMIN.PROJECT_PROFILE.CHANGE_OWNER_SUCCESS_TITLE")
desc = @translate.instant("ADMIN.PROJECT_PROFILE.CHANGE_OWNER_SUCCESS_DESC")
@confirm.success(title, desc, {
type: "svg",
name: "icon-speak-up"
})
ChangeOwnerLightboxController.$inject = [
"tgResources",
"lightboxService",
"$tgConfirm",
"$translate"
]
module.controller('ChangeOwnerLightbox', ChangeOwnerLightboxController)
ChangeOwnerLightboxDirective = (lightboxService, lightboxKeyboardNavigationService, $template, $compile) ->
link = (scope, el) ->
lightboxService.open(el)
return {
scope: true,
controller: "ChangeOwnerLightbox",
controllerAs: "vm",
bindToController: {
currentOwnerId: "=",
projectId: "=",
activeUsers: "="
},
templateUrl: "common/lightbox/lightbox-change-owner.html"
link:link
}
module.directive("tgLbChangeOwner", ["lightboxService", "lightboxKeyboardNavigationService", "$tgTemplate", "$compile", ChangeOwnerLightboxDirective])
TransferProjectStartSuccessDirective = (lightboxService) ->
link = (scope, el) ->
scope.close = () ->
lightboxService.close(el)
lightboxService.open(el)
return {
templateUrl: "common/lightbox/lightbox-transfer-project-start-success.html"
link:link
}
module.directive("tgLbTransferProjectStartSuccess", ["lightboxService", TransferProjectStartSuccessDirective])

View File

@ -47,11 +47,13 @@ class MembershipsController extends mixOf(taiga.Controller, taiga.PageMixin, tai
"$tgNavUrls",
"$tgAnalytics",
"tgAppMetaService",
"$translate"
"$translate",
"$tgAuth"
"tgLightboxFactory"
]
constructor: (@scope, @rootscope, @repo, @confirm, @rs, @params, @q, @location, @navUrls, @analytics,
@appMetaService, @translate) ->
@appMetaService, @translate, @auth, @lightboxFactory) ->
bindMethods(@)
@scope.project = {}
@ -67,21 +69,25 @@ class MembershipsController extends mixOf(taiga.Controller, taiga.PageMixin, tai
promise.then null, @.onInitialDataError.bind(@)
@scope.$on "membersform:new:success", =>
@.loadMembers()
@.loadInitialData()
@analytics.trackEvent("membership", "create", "create memberships on admin", 1)
loadProject: ->
return @rs.projects.getBySlug(@params.pslug).then (project) =>
if not project.i_am_owner
if not project.i_am_admin
@location.path(@navUrls.resolve("permission-denied"))
@scope.projectId = project.id
@scope.project = project
@scope.canAddUsers = project.max_memberships == null || project.max_memberships > project.total_memberships
@scope.$emit('project:loaded', project)
return project
loadMembers: ->
httpFilters = @.getUrlFilters()
return @rs.memberships.list(@scope.projectId, httpFilters).then (data) =>
@scope.memberships = _.filter(data.models, (membership) ->
membership.user == null or membership.is_user_active)
@ -92,20 +98,41 @@ class MembershipsController extends mixOf(taiga.Controller, taiga.PageMixin, tai
return data
loadInitialData: ->
promise = @.loadProject()
promise.then =>
@.loadMembers()
return promise
return @.loadProject().then () =>
return @q.all([
@.loadMembers(),
@auth.refresh()
])
getUrlFilters: ->
filters = _.pick(@location.search(), "page")
filters.page = 1 if not filters.page
return filters
addNewMembers: ->
@rootscope.$broadcast("membersform:new")
# Actions
addNewMembers: ->
@lightboxFactory.create(
'tg-lb-add-members',
{
"class": "lightbox lightbox-add-member",
"project": "project"
},
{
"project": @scope.project
}
)
showLimitUsersWarningMessage: ->
title = @translate.instant("ADMIN.MEMBERSHIPS.LIMIT_USERS_WARNING")
message = @translate.instant("ADMIN.MEMBERSHIPS.LIMIT_USERS_WARNING_MESSAGE", {
members: @scope.project.max_memberships
})
icon = "/" + window._version + "/svg/icons/team-question.svg"
@confirm.success(title, message, {
name: icon,
type: "img"
})
module.controller("MembershipsController", MembershipsController)
@ -224,6 +251,7 @@ MembershipsRowAvatarDirective = ($log, $template, $translate) ->
email: if member.user_email then member.user_email else member.email
imgurl: if member.photo then member.photo else "/" + window._version + "/images/unnamed.png"
pending: if !member.is_user_active then pending else ""
isOwner: member.is_owner
}
html = template(ctx)
@ -252,6 +280,18 @@ MembershipsRowAdminCheckboxDirective = ($log, $repo, $confirm, $template, $compi
template = $template.get("admin/admin-memberships-row-checkbox.html", true)
link = ($scope, $el, $attrs) ->
$scope.$on "$destroy", ->
$el.off()
if not $attrs.tgMembershipsRowAdminCheckbox?
return $log.error "MembershipsRowAdminCheckboxDirective: the directive need a member"
member = $scope.$eval($attrs.tgMembershipsRowAdminCheckbox)
if member.is_owner
$el.find(".js-check").remove()
return
render = (member) ->
ctx = {inputId: "is-admin-#{member.id}"}
@ -260,30 +300,23 @@ MembershipsRowAdminCheckboxDirective = ($log, $repo, $confirm, $template, $compi
$el.html(html)
if not $attrs.tgMembershipsRowAdminCheckbox?
return $log.error "MembershipsRowAdminCheckboxDirective: the directive need a member"
member = $scope.$eval($attrs.tgMembershipsRowAdminCheckbox)
html = render(member)
if member.is_owner
$el.find(":checkbox").prop("checked", true)
$el.on "click", ":checkbox", (event) =>
onSuccess = ->
$confirm.notify("success")
onError = (data) ->
member.revert()
$el.find(":checkbox").prop("checked", member.is_owner)
$confirm.notify("error", data.is_owner[0])
$el.find(":checkbox").prop("checked", member.is_admin)
$confirm.notify("error", data.is_admin[0])
target = angular.element(event.currentTarget)
member.is_owner = target.prop("checked")
member.is_admin = target.prop("checked")
$repo.save(member).then(onSuccess, onError)
$scope.$on "$destroy", ->
$el.off()
html = render(member)
if member.is_admin
$el.find(":checkbox").prop("checked", true)
return {link: link}
@ -352,14 +385,17 @@ module.directive("tgMembershipsRowRoleSelector", ["$log", "$tgRepo", "$tgConfirm
## Member Actions Directive
#############################################################################
MembershipsRowActionsDirective = ($log, $repo, $rs, $confirm, $compile, $translate) ->
MembershipsRowActionsDirective = ($log, $repo, $rs, $confirm, $compile, $translate, $location,
$navUrls, lightboxFactory) ->
activedTemplate = """
<div class="active"
translate="ADMIN.MEMBERSHIP.STATUS_ACTIVE">
</div>
<a class="delete" href=""
title="{{ 'ADMIN.MEMBERSHIP.DELETE_MEMBER' | translate }}">
<span class="icon icon-delete"></span>
<svg class="icon icon-trash">
<use xlink:href="#icon-trash">
</svg>
</a>
"""
@ -370,7 +406,9 @@ MembershipsRowActionsDirective = ($log, $repo, $rs, $confirm, $compile, $transla
</a>
<a class="delete" href=""
title="{{ 'ADMIN.MEMBERSHIP.DELETE_MEMBER' | translate }}">
<span class="icon icon-delete"></span>
<svg class="icon icon-trash">
<use xlink:href="#icon-trash">
</svg>
</a>
"""
@ -403,9 +441,7 @@ MembershipsRowActionsDirective = ($log, $repo, $rs, $confirm, $compile, $transla
$rs.memberships.resendInvitation($scope.member.id).then(onSuccess, onError)
$el.on "click", ".delete", (event) ->
event.preventDefault()
leaveConfirm = () ->
title = $translate.instant("ADMIN.MEMBERSHIP.DELETE_MEMBER")
defaultMsg = $translate.instant("ADMIN.MEMBERSHIP.DEFAULT_DELETE_MESSAGE", {email: member.email})
message = if member.user then member.full_name else defaultMsg
@ -413,28 +449,60 @@ MembershipsRowActionsDirective = ($log, $repo, $rs, $confirm, $compile, $transla
$confirm.askOnDelete(title, message).then (askResponse) ->
onSuccess = =>
askResponse.finish()
if member.user != $scope.user.id
if $scope.page > 1 && ($scope.count - 1) <= $scope.paginatedBy
$ctrl.selectFilter("page", $scope.page - 1)
$ctrl.loadMembers()
$ctrl.loadInitialData()
else
$location.path($navUrls.resolve("home"))
text = $translate.instant("ADMIN.MEMBERSHIP.SUCCESS_DELETE")
$confirm.notify("success", null, text)
text = $translate.instant("ADMIN.MEMBERSHIP.SUCCESS_DELETE", {message: message})
$confirm.notify("success", text, null, 5000)
onError = =>
askResponse.finish(false)
text = $translate.instant("ADMIN.MEMBERSHIP.ERROR_DELETE", {message: message})
$confirm.notify("error", null, text)
$confirm.notify("error", text)
$repo.remove(member).then(onSuccess, onError)
$el.on "click", ".delete", (event) ->
event.preventDefault()
if $scope.project.owner.id == member.user
isCurrentUser = $scope.user.id == member.user
lightboxFactory.create("tg-lightbox-leave-project-warning", {
class: "lightbox lightbox-leave-project-warning"
}, {
isCurrentUser: isCurrentUser,
project: $scope.project
})
else
leaveConfirm()
$scope.$on "$destroy", ->
$el.off()
return {link: link}
module.directive("tgMembershipsRowActions", ["$log", "$tgRepo", "$tgResources", "$tgConfirm", "$compile",
"$translate", MembershipsRowActionsDirective])
"$translate", "$tgLocation", "$tgNavUrls", "tgLightboxFactory",
MembershipsRowActionsDirective])
#############################################################################
## No more memberships explanation directive
#############################################################################
NoMoreMembershipsExplanationDirective = () ->
return {
templateUrl: "admin/no-more-memberships-explanation.html"
scope: {
project: "="
}
}
module.directive("tgNoMoreMembershipsExplanation", [NoMoreMembershipsExplanationDirective])

View File

@ -51,11 +51,13 @@ class ProjectProfileController extends mixOf(taiga.Controller, taiga.PageMixin)
"$tgLocation",
"$tgNavUrls",
"tgAppMetaService",
"$translate"
"$translate",
"$tgAuth",
"tgCurrentUserService"
]
constructor: (@scope, @rootscope, @repo, @confirm, @rs, @params, @q, @location, @navUrls,
@appMetaService, @translate) ->
@appMetaService, @translate, @tgAuth, @currentUserService) ->
@scope.project = {}
promise = @.loadInitialData()
@ -67,6 +69,8 @@ class ProjectProfileController extends mixOf(taiga.Controller, taiga.PageMixin)
description = @scope.project.description
@appMetaService.setAll(title, description)
@.fillUsersAndRoles(@scope.project.members, @scope.project.roles)
promise.then null, @.onInitialDataError.bind(@)
@scope.$on "project:loaded", =>
@ -78,7 +82,7 @@ class ProjectProfileController extends mixOf(taiga.Controller, taiga.PageMixin)
loadProject: ->
return @rs.projects.getBySlug(@params.pslug).then (project) =>
if not project.i_am_owner
if not project.i_am_admin
@location.path(@navUrls.resolve("permission-denied"))
@scope.projectId = project.id
@ -94,8 +98,10 @@ class ProjectProfileController extends mixOf(taiga.Controller, taiga.PageMixin)
return project
loadInitialData: ->
promise = @.loadProject()
return promise
return @q.all([
@.loadProject(),
@tgAuth.refresh()
])
openDeleteLightbox: ->
@rootscope.$broadcast("deletelightbox:new", @scope.project)
@ -198,41 +204,51 @@ ProjectModulesDirective = ($repo, $confirm, $loading, projectService) ->
link = ($scope, $el, $attrs) ->
submit = =>
form = $el.find("form").checksley()
form.initializeFields() # Need to reset the form constrains
form.reset() # Need to reset the form constrains
return if not form.validate()
target = angular.element(".admin-functionalities .submit-button")
currentLoading = $loading()
.target(target)
.start()
promise = $repo.save($scope.project)
promise.then ->
currentLoading.finish()
$confirm.notify("success")
$scope.$emit("project:loaded", $scope.project)
$confirm.notify("success")
projectService.fetchProject()
promise.then null, (data) ->
currentLoading.finish()
form.setErrors(data)
if data._error_message
$confirm.notify("error", data._error_message)
$el.on "change", ".module-activation.module-direct-active input", (event) ->
event.preventDefault()
submit()
$el.on "submit", "form", (event) ->
event.preventDefault()
submit()
$el.on "click", ".admin-functionalities a.button-green", (event) ->
$el.on "click", ".icon-save", (event) ->
event.preventDefault()
submit()
$scope.$watch "isVideoconferenceActivated", (isVideoconferenceActivated) ->
if isVideoconferenceActivated
$el.find(".videoconference-attributes").removeClass("hidden")
else
$el.find(".videoconference-attributes").addClass("hidden")
$el.on "keydown", ".videoconference-attributes input", (e) ->
return e.which != 32
$scope.$watch "project.videoconferences", (newVal, oldVal) ->
# Reset videoconferences_extra_data if videoconference system change
if newVal? and oldVal? and newVal != oldVal
$scope.project.videoconferences_extra_data = ""
$scope.$watch "isVideoconferenceActivated", (newValue, oldValue) ->
if newValue == false
# Reset videoconference attributes
$scope.project.videoconferences = null
$scope.project.videoconferences_extra_data = ""
# Save when videoconference is desactivated
submit() if oldValue == true
$scope.$watch "project", (project) ->
if project.videoconferences?
$scope.isVideoconferenceActivated = true
@ -510,3 +526,60 @@ ProjectLogoModelDirective = ($parse) ->
return {link:link}
module.directive('tgProjectLogoModel', ['$parse', ProjectLogoModelDirective])
AdminProjectRestrictionsDirective = () ->
return {
scope: {
"project": "="
},
templateUrl: "admin/admin-project-restrictions.html"
}
module.directive('tgAdminProjectRestrictions', [AdminProjectRestrictionsDirective])
AdminProjectRequestOwnershipDirective = (lightboxFactory) ->
return {
link: (scope) ->
scope.requestOwnership = () ->
lightboxFactory.create("tg-lb-request-ownership", {
"class": "lightbox lightbox-request-ownership"
}, {
projectId: scope.projectId
})
scope: {
"projectId": "=",
"owner": "="
},
templateUrl: "admin/admin-project-request-ownership.html"
}
module.directive('tgAdminProjectRequestOwnership', ["tgLightboxFactory", AdminProjectRequestOwnershipDirective])
AdminProjectChangeOwnerDirective = (lightboxFactory) ->
return {
link: (scope) ->
scope.changeOwner = () ->
lightboxFactory.create("tg-lb-change-owner", {
"class": "lightbox lightbox-select-user",
"project-id": "projectId",
"active-users": "activeUsers",
"current-owner-id": "currentOwnerId"
}, {
projectId: scope.projectId,
activeUsers: scope.activeUsers,
currentOwnerId: scope.owner.id,
members: scope.members
})
scope: {
"activeUsers": "="
"projectId": "="
"owner": "="
"members": "="
},
templateUrl: "admin/admin-project-change-owner.html"
}
module.directive('tgAdminProjectChangeOwner', ["tgLightboxFactory", AdminProjectChangeOwnerDirective])

View File

@ -73,7 +73,7 @@ class ProjectValuesSectionController extends mixOf(taiga.Controller, taiga.PageM
loadProject: ->
return @rs.projects.getBySlug(@params.pslug).then (project) =>
if not project.i_am_owner
if not project.i_am_admin
@location.path(@navUrls.resolve("permission-denied"))
@scope.projectId = project.id
@ -108,7 +108,7 @@ class ProjectValuesController extends taiga.Controller
loadValues: =>
return @rs[@scope.resource].listValues(@scope.projectId, @scope.type).then (values) =>
@scope.values = values
@scope.maxValueOrder = _.max(values, "order").order
@scope.maxValueOrder = _.maxBy(values, "order").order
return values
moveValue: (ctx, itemValue, itemIndex) =>
@ -381,6 +381,7 @@ module.directive("tgColorSelection", ColorSelectionDirective)
TEXT_TYPE = "text"
MULTILINE_TYPE = "multiline"
DATE_TYPE = "date"
URL_TYPE = "url"
TYPE_CHOICES = [
@ -395,6 +396,10 @@ TYPE_CHOICES = [
{
key: DATE_TYPE,
name: "ADMIN.CUSTOM_FIELDS.FIELD_TYPE_DATE"
},
{
key: URL_TYPE,
name: "ADMIN.CUSTOM_FIELDS.FIELD_TYPE_URL"
}
]
@ -436,7 +441,7 @@ class ProjectCustomAttributesController extends mixOf(taiga.Controller, taiga.Pa
loadCustomAttributes: =>
return @rs.customAttributes[@scope.type].list(@scope.projectId).then (customAttributes) =>
@scope.customAttributes = customAttributes
@scope.maxOrder = _.max(customAttributes, "order").order
@scope.maxOrder = _.maxBy(customAttributes, "order").order
return customAttributes
createCustomAttribute: (attrValues) =>
@ -555,7 +560,6 @@ ProjectCustomAttributesDirective = ($log, $confirm, animationFrame, $translate)
$el.on "click", ".js-add-custom-field-button", (event) ->
event.preventDefault()
showCreateForm()
$el.on "click", ".js-create-custom-field-button", debounce 2000, (event) ->
@ -567,7 +571,6 @@ ProjectCustomAttributesDirective = ($log, $confirm, animationFrame, $translate)
$el.on "click", ".js-cancel-new-custom-field-button", (event) ->
event.preventDefault()
cancelCreate()
$el.on "keyup", ".js-new-custom-field input", (event) ->

View File

@ -70,7 +70,7 @@ class RolesController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fil
loadProject: ->
return @rs.projects.getBySlug(@params.pslug).then (project) =>
if not project.i_am_owner
if not project.i_am_admin
@location.path(@navUrls.resolve("permission-denied"))
@scope.projectId = project.id
@ -193,7 +193,7 @@ EditRoleDirective = ($repo, $confirm) ->
toggleView()
$el.on "click", "a.icon-edit", ->
$el.on "click", ".edit-value", ->
toggleView()
$el.find("input").focus()
$el.find("input").val($scope.role.name)
@ -251,7 +251,7 @@ NewRoleDirective = ($tgrepo, $confirm) ->
project: $scope.projectId
name: target.val()
permissions: DEFAULT_PERMISSIONS
order: _.max($scope.roles, (r) -> r.order).order + 1
order: _.maxBy($scope.roles, (r) -> r.order).order + 1
computable: false
}
@ -292,7 +292,9 @@ RolePermissionsDirective = ($rootscope, $repo, $confirm, $compile) ->
title="{{ '<%- permission.name %>' | translate }}"></div>
<% }) %>
</div>
<div class="icon icon-arrow-bottom"></div>
<svg class="icon icon-arrow-right">
<use xlink:href="#icon-arrow-right">
</svg>
""")
categoryTemplate = _.template("""
@ -431,6 +433,7 @@ RolePermissionsDirective = ($rootscope, $repo, $confirm, $compile) ->
$el.on "click", ".resume", (event) ->
event.preventDefault()
target = angular.element(event.currentTarget)
target.toggleClass("open-drawer")
target.next().toggleClass("open")
$el.on "change", ".category-item input", (event) ->

View File

@ -71,7 +71,7 @@ class WebhooksController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.
loadProject: ->
return @rs.projects.getBySlug(@params.pslug).then (project) =>
if not project.i_am_owner
if not project.i_am_admin
@location.path(@navUrls.resolve("permission-denied"))
@scope.projectId = project.id
@ -103,7 +103,7 @@ WebhookDirective = ($rs, $repo, $confirm, $loading, $translate) ->
$rs.webhooklogs.list(webhook.id).then (webhooklogs) =>
for log in webhooklogs
log.validStatus = 200 <= log.status < 300
log.prettySentHeaders = _.map(_.pairs(log.request_headers), ([header, value]) -> "#{header}: #{value}").join("\n")
log.prettySentHeaders = _.map(_.toPairs(log.request_headers), ([header, value]) -> "#{header}: #{value}").join("\n")
log.prettySentData = JSON.stringify(log.request_data)
log.prettyDate = moment(log.created).format(prettyDate)

View File

@ -27,6 +27,26 @@ debounce = @.taiga.debounce
module = angular.module("taigaAuth", ["taigaResources"])
class LoginPage
@.$inject = [
'tgCurrentUserService',
'$location',
'$tgNavUrls',
'$routeParams'
]
constructor: (currentUserService, $location, $navUrls, $routeParams) ->
if currentUserService.isAuthenticated()
url = $navUrls.resolve("home")
if $routeParams['next']
url = $routeParams['next']
$location.search('next', null)
$location.path(url)
module.controller('LoginPage', LoginPage)
#############################################################################
## Authentication Service
#############################################################################
@ -122,6 +142,17 @@ class AuthService extends taiga.Service
return false
## Http interface
refresh: () ->
url = @urls.resolve("user-me")
return @http.get(url).then (data, status) =>
user = data.data
user.token = @.getUser().auth_token
user = @model.make_model("users", user)
@.setUser(user)
return user
login: (data, type) ->
url = @urls.resolve("auth")
@ -214,7 +245,6 @@ PublicRegisterMessageDirective = ($config, $navUrls, $routeParams, templates) ->
url = $navUrls.resolve("register")
if $routeParams['next'] and $routeParams['next'] != $navUrls.resolve("register")
nextUrl = encodeURIComponent($routeParams['next'])
console.log "-----", nextUrl
url += "?next=#{nextUrl}"
return template({url:url})
@ -287,16 +317,11 @@ RegisterDirective = ($auth, $confirm, $location, $navUrls, $config, $routeParams
$scope.data = {}
form = $el.find("form").checksley({onlyOneErrorElement: true})
if $routeParams['next'] and $routeParams['next'] != $navUrls.resolve("register")
$scope.nextUrl = decodeURIComponent($routeParams['next'])
else
$scope.nextUrl = $navUrls.resolve("home")
onSuccessSubmit = (response) ->
$analytics.trackEvent("auth", "register", "user registration", 1)
$confirm.notify("success", $translate.instant("LOGIN_FORM.SUCCESS"))
$location.url($scope.nextUrl)
onErrorSubmit = (response) ->
@ -340,8 +365,10 @@ ForgotPasswordDirective = ($auth, $confirm, $location, $navUrls, $translate) ->
onSuccessSubmit = (response) ->
$location.path($navUrls.resolve("login"))
text = $translate.instant("FORGOT_PASSWORD_FORM.SUCCESS")
$confirm.success(text)
title = $translate.instant("FORGOT_PASSWORD_FORM.SUCCESS_TITLE")
message = $translate.instant("FORGOT_PASSWORD_FORM.SUCCESS_TEXT")
$confirm.success(title, message)
onErrorSubmit = (response) ->
text = $translate.instant("FORGOT_PASSWORD_FORM.ERROR")

View File

@ -36,8 +36,11 @@ CreateEditSprint = ($repo, $confirm, $rs, $rootscope, lightboxService, $loading,
link = ($scope, $el, attrs) ->
hasErrors = false
createSprint = true
form = null
resetSprint = () ->
form.reset() if form
$scope.sprint = {
project: null
name: null
@ -201,7 +204,7 @@ CreateEditSprint = ($repo, $confirm, $rs, $rootscope, lightboxService, $loading,
$el.on "submit", "form", submit
$el.on "click", ".delete-sprint .icon-delete", (event) ->
$el.on "click", ".delete-sprint", (event) ->
event.preventDefault()
remove()

View File

@ -563,7 +563,7 @@ class BacklogController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.F
currentLoading = @loading()
.target(target)
.removeClasses("icon-edit")
.removeClasses("edit-story")
.timeout(200)
.start()
@ -959,7 +959,7 @@ UsPointsDirective = ($tgEstimationsService, $repo, $tgTemplate) ->
$el.find(".pop-role").popover().open(() -> $(this).remove())
bindClickElements = () ->
$el.on "click", "a.us-points span", (event) ->
$el.on "click", "a.us-points", (event) ->
event.preventDefault()
event.stopPropagation()
us = $scope.$eval($attrs.tgBacklogUsPoints)

View File

@ -40,7 +40,7 @@ BacklogSprintDirective = ($repo, $rootscope) ->
toggleSprint = ($el) =>
sprintTable = $el.find(".sprint-table")
sprintArrow = $el.find(".icon-arrow-up")
sprintArrow = $el.find(".compact-sprint")
sprintArrow.toggleClass('active')
sprintTable.toggleClass('open')
@ -55,7 +55,7 @@ BacklogSprintDirective = ($repo, $rootscope) ->
toggleSprint($el)
# Event Handlers
$el.on "click", ".sprint-name > .icon-arrow-up", (event) ->
$el.on "click", ".sprint-name > .compact-sprint", (event) ->
event.preventDefault()
toggleSprint($el)

View File

@ -67,6 +67,7 @@ urls = {
"profile": "/profile"
"user-profile": "/profile/:username"
"blocked-project": "/blocked-project/:project"
"project": "/project/:project"
"project-backlog": "/project/:project/backlog"
"project-taskboard": "/project/:project/taskboard/:sprint"
@ -112,6 +113,7 @@ urls = {
"user-settings-user-change-password": "/user-settings/user-change-password"
"user-settings-user-avatar": "/user-settings/user-avatar"
"user-settings-mail-notifications": "/user-settings/mail-notifications"
"user-settings-contrib": "/user-settings/contrib/:plugin"
}

View File

@ -36,7 +36,7 @@ class ContribController extends taiga.Controller
]
constructor: (@rootScope, @scope, @params, @repo, @rs, @confirm) ->
@scope.currentPlugin = _.first(_.where(@rootScope.adminPlugins, {"slug": @params.plugin}))
@scope.currentPlugin = _.head(_.filter(@rootScope.adminPlugins, {"slug": @params.plugin}))
@scope.projectSlug = @params.pslug
promise = @.loadInitialData()
@ -56,3 +56,16 @@ class ContribController extends taiga.Controller
return @.loadProject()
module.controller("ContribController", ContribController)
class ContribUserSettingsController extends taiga.Controller
@.$inject = [
"$rootScope",
"$scope",
"$routeParams"
]
constructor: (@rootScope, @scope, @params) ->
@scope.currentPlugin = _.head(_.filter(@rootScope.userSettingsPlugins, {"slug": @params.plugin}))
module.controller("ContribUserSettingsController", ContribUserSettingsController)

View File

@ -47,12 +47,12 @@ class HttpService extends taiga.Service
return headers
request: (options) ->
options.headers = _.merge({}, options.headers or {}, @.headers())
options.headers = _.assign({}, options.headers or {}, @.headers())
return @http(options)
get: (url, params, options) ->
options = _.merge({method: "GET", url: url}, options)
options = _.assign({method: "GET", url: url}, options)
options.params = params if params
# prevent duplicated http request
@ -62,25 +62,27 @@ class HttpService extends taiga.Service
@.cache.removeAll()
post: (url, data, params, options) ->
options = _.merge({method: "POST", url: url}, options)
options = _.assign({method: "POST", url: url}, options)
options.data = data if data
options.params = params if params
return @.request(options)
put: (url, data, params, options) ->
options = _.merge({method: "PUT", url: url}, options)
options = _.assign({method: "PUT", url: url}, options)
options.data = data if data
options.params = params if params
return @.request(options)
patch: (url, data, params, options) ->
options = _.merge({method: "PATCH", url: url}, options)
options = _.assign({method: "PATCH", url: url}, options)
options.data = data if data
options.params = params if params
return @.request(options)
delete: (url, data, params, options) ->
options = _.merge({method: "DELETE", url: url}, options)
options = _.assign({method: "DELETE", url: url}, options)
options.data = data if data
options.params = params if params
return @.request(options)

View File

@ -59,7 +59,7 @@ module.service("$tgNavUrls", NavigationUrlsService)
## Navigation Urls Directive
#############################################################################
NavigationUrlsDirective = ($navurls, $auth, $q, $location) ->
NavigationUrlsDirective = ($navurls, $auth, $q, $location, lightboxService) ->
# Example:
# link(tg-nav="project-backlog:project='sss',")
@ -157,9 +157,11 @@ NavigationUrlsDirective = ($navurls, $auth, $q, $location) ->
when 2
window.open fullUrl
lightboxService.closeAll()
$scope.$on "$destroy", ->
$el.off()
return {link: link}
module.directive("tgNav", ["$tgNavUrls", "$tgAuth", "$q", "$tgLocation", NavigationUrlsDirective])
module.directive("tgNav", ["$tgNavUrls", "$tgAuth", "$q", "$tgLocation", "lightboxService", NavigationUrlsDirective])

View File

@ -48,8 +48,8 @@ class UrlsService extends taiga.Service
url = format(@.urls[name], args.slice(1))
return format("%s/%s", [
_.str.rtrim(@.mainUrl, "/"),
_.str.ltrim(url, "/")
_.trimEnd(@.mainUrl, "/"),
_.trimStart(url, "/")
])
resolveAbsolute: ->

View File

@ -234,26 +234,6 @@ ProjectUrl = ($navurls) ->
module.factory("$projectUrl", ["$tgNavUrls", ProjectUrl])
#############################################################################
## Limite line size in a text area
#############################################################################
LimitLineLengthDirective = () ->
link = ($scope, $el, $attrs) ->
maxColsPerLine = parseInt($el.attr("cols"))
$el.on "keyup", (event) ->
code = event.keyCode
lines = $el.val().split("\n")
_.each lines, (line, index) ->
lines[index] = line.substring(0, maxColsPerLine - 2)
$el.val(lines.join("\n"))
return {link:link}
module.directive("tgLimitLineLength", LimitLineLengthDirective)
#############################################################################
## Queue Q promises
#############################################################################
@ -308,13 +288,11 @@ Capslock = ($translate) ->
link = ($scope, $el, $attrs) ->
open = false
warningIcon = $('<div>')
.addClass('icon')
.addClass('icon-capslock')
.attr('title', $translate.instant('COMMON.CAPSLOCK_WARNING'))
warningIcon = "<svg class='icon icon-capslock' title='" + $translate.instant('COMMON.CAPSLOCK_WARNING') + "'><use xlink:href='#icon-capslock'></svg>";
hideIcon = () ->
warningIcon.fadeOut () ->
$('.icon-capslock').fadeOut () ->
open = false
$(this).remove()

View File

@ -321,7 +321,7 @@ AssignedToDirective = ($rootscope, $confirm, $repo, $loading, $qqueue, $template
$model.$modelValue.assigned_to = $currentUserService.getUser().get('id')
save($currentUserService.getUser().get('id'))
$el.on "click", ".icon-delete", (event) ->
$el.on "click", ".remove-user", (event) ->
event.preventDefault()
return if not isEditable()
title = $translate.instant("COMMON.ASSIGNED_TO.CONFIRM_UNASSIGNED")
@ -498,11 +498,10 @@ EditableSubjectDirective = ($rootscope, $repo, $confirm, $loading, $qqueue, $tem
else if event.keyCode == 27
$scope.$apply () => $model.$modelValue.revert()
$el.find('div.edit-subject').hide()
$el.find('div.view-subject').show()
$el.find('.edit-subject').hide()
$el.find('.view-subject').show()
$el.find('div.edit-subject').hide()
$el.find('div.view-subject span.edit').hide()
$el.find('.edit-subject').hide()
$scope.$watch $attrs.ngModel, (value) ->
return if not value

View File

@ -59,12 +59,12 @@ class ConfirmService extends taiga.Service
el = angular.element(lightboxSelector)
# Render content
el.find("h2.title").text(title)
el.find("span.subtitle").text(subtitle)
el.find("span.message").text(message)
el.find(".title").text(title)
el.find(".subtitle").text(subtitle)
el.find(".message").text(message)
# Assign event handlers
el.on "click.confirm-dialog", "a.button-green", debounce 2000, (event) =>
el.on "click.confirm-dialog", ".button-green", debounce 2000, (event) =>
event.preventDefault()
target = angular.element(event.currentTarget)
currentLoading = @loading()
@ -77,7 +77,7 @@ class ConfirmService extends taiga.Service
@.hide(el)
}
el.on "click.confirm-dialog", "a.button-red", (event) =>
el.on "click.confirm-dialog", ".button-red", (event) =>
event.preventDefault()
defered.reject()
@.hide(el)
@ -129,7 +129,7 @@ class ConfirmService extends taiga.Service
@.hide(el)
}
el.on "click.confirm-dialog", "a.button-red", (event) =>
el.on "click.confirm-dialog", ".button-red", (event) =>
event.preventDefault()
defered.reject()
@.hide(el)
@ -144,15 +144,15 @@ class ConfirmService extends taiga.Service
el = angular.element(".lightbox-generic-error")
# Render content
el.find("h2.title").html(message)
el.find(".title").html(message)
# Assign event handlers
el.on "click.confirm-dialog", "a.button-green", (event) =>
el.on "click.confirm-dialog", ".button-green", (event) =>
event.preventDefault()
defered.resolve()
@.hide(el)
el.on "click.confirm-dialog", "a.close", (event) =>
el.on "click.confirm-dialog", ".close", (event) =>
event.preventDefault()
defered.resolve()
@.hide(el)
@ -161,22 +161,41 @@ class ConfirmService extends taiga.Service
return defered.promise
success: (title, message) ->
success: (title, message, icon) ->
defered = @q.defer()
el = angular.element(".lightbox-generic-success")
el.find("img").remove()
el.find("svg").remove()
if icon
if icon.type == "img"
detailImage = $('<img>').addClass('lb-icon').attr('src', icon.name)
else if icon.type == "svg"
useSVG = document.createElementNS('http://www.w3.org/2000/svg', 'use')
useSVG.setAttributeNS('http://www.w3.org/1999/xlink','href', '#' + icon.name)
detailImage = document.createElementNS("http://www.w3.org/2000/svg", "svg")
detailImage.classList.add("icon")
detailImage.classList.add("lb-icon")
detailImage.classList.add(icon.name)
detailImage.appendChild(useSVG)
if detailImage
el.find('section').prepend(detailImage)
# Render content
el.find("h2.title").html(title) if title
el.find("p.message").html(message) if message
el.find(".title").html(title) if title
el.find(".message").html(message) if message
# Assign event handlers
el.on "click.confirm-dialog", "a.button-green", (event) =>
el.on "click.confirm-dialog", ".button-green", (event) =>
event.preventDefault()
defered.resolve()
@.hide(el)
el.on "click.confirm-dialog", "a.close", (event) =>
el.on "click.confirm-dialog", ".close", (event) =>
event.preventDefault()
defered.resolve()
@.hide(el)
@ -189,15 +208,15 @@ class ConfirmService extends taiga.Service
el = angular.element(".lightbox-generic-loading")
# Render content
el.find("h2.title").html(title) if title
el.find("p.message").html(message) if message
el.find(".title").html(title) if title
el.find(".message").html(message) if message
return {
start: => @lightboxService.open(el)
stop: => @lightboxService.close(el)
update: (status, title, message, percent) =>
el.find("h2.title").html(title) if title
el.find("p.message").html(message) if message
el.find(".title").html(title) if title
el.find(".message").html(message) if message
if percent
el.find(".spin").addClass("hidden")
@ -248,10 +267,11 @@ class ConfirmService extends taiga.Service
body.find(selector)
.removeClass('active')
.addClass('inactive')
.one 'animationend', () -> $(this).removeClass('inactive')
delete @.tsem
el.on "click", ".icon-delete, .close", (event) =>
el.on "click", ".icon-close, .close", (event) =>
body.find(selector)
.removeClass('active')
.addClass('inactive')

View File

@ -34,6 +34,7 @@ module = angular.module("taigaCommon")
TEXT_TYPE = "text"
MULTILINE_TYPE = "multiline"
DATE_TYPE = "date"
URL_TYPE = "url"
TYPE_CHOICES = [
@ -48,6 +49,10 @@ TYPE_CHOICES = [
{
key: DATE_TYPE,
name: "ADMIN.CUSTOM_FIELDS.FIELD_TYPE_DATE"
},
{
key: URL_TYPE,
name: "ADMIN.CUSTOM_FIELDS.FIELD_TYPE_URL"
}
]
@ -100,6 +105,7 @@ class CustomAttributesValuesController extends taiga.Controller
CustomAttributesValuesDirective = ($templates, $storage) ->
template = $templates.get("custom-attributes/custom-attributes-values.html", true)
collapsedHash = (type) ->
return generateHash(["custom-attributes-collapsed", type])
@ -111,15 +117,15 @@ CustomAttributesValuesDirective = ($templates, $storage) ->
$ctrl.initialize($attrs.type, value.id)
$ctrl.loadCustomAttributesValues()
$el.on "click", ".custom-fields-header a", ->
$el.on "click", ".custom-fields-header .icon", ->
hash = collapsedHash($attrs.type)
collapsed = not($storage.get(hash) or false)
$storage.set(hash, collapsed)
if collapsed
$el.find(".custom-fields-header a").removeClass("open")
$el.find(".custom-fields-header .icon").removeClass("open")
$el.find(".custom-fields-body").removeClass("open")
else
$el.find(".custom-fields-header a").addClass("open")
$el.find(".custom-fields-header .icon").addClass("open")
$el.find(".custom-fields-body").addClass("open")
$scope.$on "$destroy", ->
@ -198,12 +204,14 @@ CustomAttributeValueDirective = ($template, $selectedText, $compile, $translate,
submit = debounce 2000, (event) =>
event.preventDefault()
attributeValue.value = $el.find("input[name=value], textarea[name='value']").val()
form = $el.find("form").checksley()
return if not form.validate()
input = $el.find("input[name=value], textarea[name='value']")
attributeValue.value = input.val()
if attributeValue.type is DATE_TYPE
if moment(attributeValue.value, prettyDate).isValid()
attributeValue.value = moment(attributeValue.value, prettyDate).format("YYYY-MM-DD")
else
attributeValue.value = ""
$scope.$apply ->
$ctrl.updateAttributeValue(attributeValue).then ->
@ -217,13 +225,17 @@ CustomAttributeValueDirective = ($template, $selectedText, $compile, $translate,
render(attributeValue)
## Actions (on view mode)
$el.on "click", ".js-value-view-mode span a", (event) ->
event.stopPropagation()
$el.on "click", ".js-value-view-mode", ->
return if not isEditable()
return if $selectedText.get().length
render(attributeValue, true)
setFocusAndSelectOnInputField()
$el.on "click", "a.icon-edit", (event) ->
$el.on "click", ".js-edit-description", (event) ->
event.preventDefault()
render(attributeValue, true)
setFocusAndSelectOnInputField()
@ -237,7 +249,7 @@ CustomAttributeValueDirective = ($template, $selectedText, $compile, $translate,
$el.on "submit", "form", submit
$el.on "click", "a.icon-floppy", submit
$el.on "click", ".js-save-description", submit
$scope.$on "$destroy", ->
$el.off()

View File

@ -370,10 +370,12 @@ HistoryDirective = ($log, $loading, $qqueue, $template, $confirm, $translate, $c
renderComments = ->
comments = $scope.comments or []
totalComments = comments.length
if not showAllComments
comments = _.last(comments, 4)
comments = _.map(comments, (x) -> renderComment(x))
if not showAllComments
comments = _.takeRight(comments, 4)
comments = _.map comments, (x) -> renderComment(x)
html = renderHistory(comments, totalComments)
$el.find(".comments-list").html(html)
@ -381,7 +383,7 @@ HistoryDirective = ($log, $loading, $qqueue, $template, $confirm, $translate, $c
changes = $scope.history or []
totalChanges = changes.length
if not showAllActivity
changes = _.last(changes, 4)
changes = _.takeRight(changes, 4)
changes = _.map(changes, (x) -> renderChange(x))
html = renderHistory(changes, totalChanges)

View File

@ -25,8 +25,60 @@
module = angular.module("taigaCommon")
ImportProjectButtonDirective = ($rs, $confirm, $location, $navUrls, $translate) ->
ImportProjectButtonDirective = ($rs, $confirm, $location, $navUrls, $translate, $lightboxFactory, currentUserService, $tgAuth) ->
link = ($scope, $el, $attrs) ->
getRestrictionError = (result) ->
if result.headers
errorKey = ''
user = currentUserService.getUser()
maxMemberships = 0
if result.headers.isPrivate
privateError = !currentUserService.canCreatePrivateProjects().valid
maxMemberships = null
if user.get('max_memberships_private_projects') != null && result.headers.memberships >= user.get('max_memberships_private_projects')
membersError = true
else
membersError = false
if privateError && membersError
errorKey = 'private-space-members'
maxMemberships = user.get('max_memberships_private_projects')
else if privateError
errorKey = 'private-space'
else if membersError
errorKey = 'private-members'
maxMemberships = user.get('max_memberships_private_projects')
else
publicError = !currentUserService.canCreatePublicProjects().valid
if user.get('max_memberships_public_projects') != null && result.headers.memberships >= user.get('max_memberships_public_projects')
membersError = true
else
membersError = false
if publicError && membersError
errorKey = 'public-space-members'
maxMemberships = user.get('max_memberships_public_projects')
else if publicError
errorKey = 'public-space'
else if membersError
errorKey = 'public-members'
maxMemberships = user.get('max_memberships_public_projects')
return {
key: errorKey,
values: {
max_memberships: maxMemberships,
members: result.headers.memberships
}
}
else
return false
$el.on "click", ".import-project-button", (event) ->
event.preventDefault()
$el.find("input.import-file").val("")
@ -40,7 +92,9 @@ ImportProjectButtonDirective = ($rs, $confirm, $location, $navUrls, $translate)
loader = $confirm.loader($translate.instant("PROJECT.IMPORT.UPLOADING_FILE"))
onSuccess = (result) ->
currentUserService.loadProjects().then () ->
loader.stop()
if result.status == 202 # Async mode
title = $translate.instant("PROJECT.IMPORT.ASYNC_IN_PROGRESS_TITLE")
message = $translate.instant("PROJECT.IMPORT.ASYNC_IN_PROGRESS_MESSAGE")
@ -53,7 +107,17 @@ ImportProjectButtonDirective = ($rs, $confirm, $location, $navUrls, $translate)
$confirm.notify("success", msg)
onError = (result) ->
$tgAuth.refresh().then () ->
restrictionError = getRestrictionError(result)
loader.stop()
if restrictionError
$lightboxFactory.create('tg-lb-import-error', {
class: 'lightbox lightbox-import-error'
}, restrictionError)
else
errorMsg = $translate.instant("PROJECT.IMPORT.ERROR")
if result.status == 429 # TOO MANY REQUESTS
@ -67,5 +131,23 @@ ImportProjectButtonDirective = ($rs, $confirm, $location, $navUrls, $translate)
return {link: link}
module.directive("tgImportProjectButton", ["$tgResources", "$tgConfirm", "$location", "$tgNavUrls", "$translate",
module.directive("tgImportProjectButton",
["$tgResources", "$tgConfirm", "$location", "$tgNavUrls", "$translate", "tgLightboxFactory", "tgCurrentUserService", "$tgAuth",
ImportProjectButtonDirective])
LbImportErrorDirective = (lightboxService) ->
link = (scope, el, attrs) ->
lightboxService.open(el)
scope.close = () ->
lightboxService.close(el)
return
return {
templateUrl: "common/lightbox/lightbox-import-error.html",
link: link
}
LbImportErrorDirective.$inject = ["lightboxService"]
module.directive("tgLbImportError", LbImportErrorDirective)

View File

@ -38,6 +38,8 @@ class LightboxService extends taiga.Service
constructor: (@animationFrame, @q) ->
open: ($el) ->
if _.isString($el)
$el = $($el)
defered = @q.defer()
lightboxContent = $el.children().not(".close")
@ -63,6 +65,8 @@ class LightboxService extends taiga.Service
return defered.promise
close: ($el) ->
if _.isString($el)
$el = $($el)
docEl = angular.element(document)
docEl.off(".lightbox")
docEl.off(".keyboard-navigation") # Hack: to fix problems in the WYSIWYG textareas when press ENTER
@ -70,6 +74,7 @@ class LightboxService extends taiga.Service
$el.removeAttr('style')
$el.removeClass("open").removeClass('close')
@animationFrame.add ->
$el.addClass('close')
if $el.hasClass("remove-on-close")
@ -268,6 +273,7 @@ module.directive("tgBlockingMessageInput", ["$log", "$tgTemplate", "$compile", B
CreateEditUserstoryDirective = ($repo, $model, $rs, $rootScope, lightboxService, $loading, $translate, $confirm, $q, attachmentsService) ->
link = ($scope, $el, attrs) ->
form = null
$scope.createEditUs = {}
$scope.isNew = true
@ -285,6 +291,7 @@ CreateEditUserstoryDirective = ($repo, $model, $rs, $rootScope, lightboxService,
attachmentsToDelete = attachmentsToDelete.push(attachment)
$scope.$on "usform:new", (ctx, projectId, status, statusList) ->
form.reset() if form
$scope.isNew = true
$scope.usStatusList = statusList
$scope.attachments = Immutable.List()
@ -312,6 +319,8 @@ CreateEditUserstoryDirective = ($repo, $model, $rs, $rootScope, lightboxService,
lightboxService.open($el)
$scope.$on "usform:edit", (ctx, us, attachments) ->
form.reset() if form
$scope.us = us
$scope.attachments = Immutable.fromJS(attachments)
$scope.isNew = false
@ -431,7 +440,11 @@ module.directive("tgLbCreateEditUserstory", [
CreateBulkUserstoriesDirective = ($repo, $rs, $rootscope, lightboxService, $loading) ->
link = ($scope, $el, attrs) ->
form = null
$scope.$on "usform:bulk", (ctx, projectId, status) ->
form.reset() if form
$scope.new = {
projectId: projectId
statusId: status
@ -505,7 +518,7 @@ AssignedToLightboxDirective = (lightboxService, lightboxKeyboardNavigationServic
username = normalizeString(username)
text = text.toUpperCase()
text = normalizeString(text)
return _.contains(username, text)
return _.includes(username, text)
render = (selected, text) ->
users = _.clone($scope.activeUsers, true)
@ -514,7 +527,7 @@ AssignedToLightboxDirective = (lightboxService, lightboxKeyboardNavigationServic
ctx = {
selected: selected
users: _.first(users, 5)
users: _.slice(users, 0, 5)
showMore: users.length > 5
}
@ -600,7 +613,7 @@ WatchersLightboxDirective = ($repo, lightboxService, lightboxKeyboardNavigationS
username = user.full_name_display.toUpperCase()
text = text.toUpperCase()
return _.contains(username, text)
return _.includes(username, text)
users = _.clone($scope.activeUsers, true)
users = _.filter(users, _.partial(_filterUsers, text))
@ -610,7 +623,7 @@ WatchersLightboxDirective = ($repo, lightboxService, lightboxKeyboardNavigationS
render = (users) ->
ctx = {
selected: false
users: _.first(users, 5)
users: _.slice(users, 0, 5)
showMore: users.length > 5
}
@ -684,3 +697,15 @@ AttachmentPreviewLightboxDirective = (lightboxService, $template, $compile) ->
}
module.directive("tgLbAttachmentPreview", ["lightboxService", "$tgTemplate", "$compile", AttachmentPreviewLightboxDirective])
LightboxLeaveProjectWarningDirective = (lightboxService, $template, $compile) ->
link = ($scope, $el, attrs) ->
lightboxService.open($el)
return {
templateUrl: 'common/lightbox/lightbox-leave-project-warning.html',
link: link,
scope: true
}
module.directive("tgLightboxLeaveProjectWarning", ["lightboxService", LightboxLeaveProjectWarningDirective])

View File

@ -38,7 +38,7 @@ TagsDirective = ->
parser = (v) ->
return [] if not v
result = _(v.split(",")).map((x) -> _.str.trim(x))
result = _(v.split(",")).map((x) -> _.trim(x))
return result.value()
@ -120,10 +120,13 @@ LbTagLineDirective = ($rs, $template, $compile) ->
tag.style = "border-left: 5px solid #{tag.color}"
html = $compile(templateTags(ctx))($scope)
$el.find("div.tags-container").html(html)
$el.find(".tags-container").html(html)
showSaveButton = -> $el.find(".save").removeClass("hidden")
hideSaveButton = -> $el.find(".save").addClass("hidden")
showSaveButton = ->
$el.find(".save").removeClass("hidden")
hideSaveButton = ->
$el.find(".save").addClass("hidden")
resetInput = ->
$el.find("input").val("")
@ -179,7 +182,7 @@ LbTagLineDirective = ($rs, $template, $compile) ->
event.preventDefault()
saveInputTag()
$el.on "click", ".icon-delete", (event) ->
$el.on "click", ".remove-tag", (event) ->
event.preventDefault()
target = angular.element(event.currentTarget)
@ -348,7 +351,7 @@ TagLineDirective = ($rootScope, $repo, $rs, $confirm, $qqueue, $template, $compi
hideAddTagButton()
showInput()
$el.on "click", ".icon-delete", (event) ->
$el.on "click", ".remove-tag", (event) ->
event.preventDefault()
target = angular.element(event.currentTarget)

View File

@ -73,10 +73,16 @@ MarkitupDirective = ($rootscope, $rs, $selectedText, $template, $compile, $trans
closePreviewMode()
cancelablePromise = null
previewInProgress = false
preview = ->
return if previewInProgress
previewInProgress = true
markdownDomNode = element.parents(".markdown")
markItUpDomNode = element.parents(".markItUp")
$rs.mdrender.render($scope.projectId, $model.$modelValue).then (data) ->
html = previewTemplate({data: data.data})
html = $compile(html)($scope)
@ -84,6 +90,8 @@ MarkitupDirective = ($rootscope, $rs, $selectedText, $template, $compile, $trans
markdownDomNode.append(html)
markItUpDomNode.hide()
previewInProgress = false
markdown = element.closest(".markdown")
markdown.on "mouseup.preview", ".preview", (event) ->

View File

@ -46,7 +46,7 @@ class PageMixin
@scope.roles = _.sortBy(roles, "order")
computableRoles = _(@scope.project.members).map("role").uniq().value()
@scope.computableRoles = _(roles).filter("computable")
.filter((x) -> _.contains(computableRoles, x.id))
.filter((x) -> _.includes(computableRoles, x.id))
.value()
loadUsersAndRoles: ->
promise = @q.all([

View File

@ -59,7 +59,7 @@ class EventsService
if not startswith(url, "ws:") and not startswith(url, "wss:")
loc = @win.location
scheme = if loc.protocol == "https:" then "wss:" else "ws:"
path = _.str.ltrim(url, "/")
path = _.trimStart(url, "/")
url = "#{scheme}//#{loc.host}/#{path}"
@.ws = new @win.WebSocket(url)

View File

@ -119,7 +119,11 @@ module.directive("tgLbCreateIssue", ["$tgRepo", "$tgConfirm", "$rootScope", "lig
CreateBulkIssuesDirective = ($repo, $rs, $confirm, $rootscope, $loading, lightboxService) ->
link = ($scope, $el, attrs) ->
form = null
$scope.$on "issueform:bulk", (ctx, projectId, status)->
form.reset() if form
lightboxService.open($el)
$scope.new = {
projectId: projectId

View File

@ -461,14 +461,14 @@ IssuesFiltersDirective = ($q, $log, $location, $rs, $confirm, $loading, $templat
showFilters = (title, type) ->
$el.find(".filters-cats").hide()
$el.find(".filter-list").removeClass("hidden")
$el.find("h2.breadcrumb").removeClass("hidden")
$el.find("h2 a.subfilter span.title").html(title)
$el.find("h2 a.subfilter span.title").prop("data-type", type)
$el.find(".breadcrumb").removeClass("hidden")
$el.find("h2 .subfilter .title").html(title)
$el.find("h2 .subfilter .title").prop("data-type", type)
showCategories = ->
$el.find(".filters-cats").show()
$el.find(".filter-list").addClass("hidden")
$el.find("h2.breadcrumb").addClass("hidden")
$el.find(".breadcrumb").addClass("hidden")
initializeSelectedFilters = (filters) ->
selectedFilters = []
@ -502,7 +502,7 @@ IssuesFiltersDirective = ($q, $log, $location, $rs, $confirm, $loading, $templat
$el.find(".filter-list").html(html)
getFiltersType = () ->
return $el.find("h2 a.subfilter span.title").prop('data-type')
return $el.find(".subfilter .title").prop('data-type')
reloadIssues = () ->
currentFiltersType = getFiltersType()
@ -617,7 +617,7 @@ IssuesFiltersDirective = ($q, $log, $location, $rs, $confirm, $loading, $templat
toggleFilterSelection(type, id)
$el.on "click", ".filter-list .single-filter .icon-delete", (event) ->
$el.on "click", ".filter-list .single-filter .remove-filter", (event) ->
event.preventDefault()
event.stopPropagation()
@ -665,7 +665,7 @@ IssuesFiltersDirective = ($q, $log, $location, $rs, $confirm, $loading, $templat
currentLoading.finish()
$scope.filters.myFilters = filters
currentfilterstype = $el.find("h2 a.subfilter span.title").prop('data-type')
currentfilterstype = $el.find("h2 .subfilter .title").prop('data-type')
if currentfilterstype == "myFilters"
renderFilters($scope.filters.myFilters)

View File

@ -0,0 +1,8 @@
module = angular.module("taigaProject")
createProjectRestrictionDirective = () ->
return {
templateUrl: "project/wizard-restrictions.html"
}
module.directive('tgCreateProjectRestriction', [createProjectRestrictionDirective])

View File

@ -29,12 +29,16 @@ debounce = @.taiga.debounce
module = angular.module("taigaProject")
CreateProject = ($rootscope, $repo, $confirm, $location, $navurls, $rs, $projectUrl, $loading, lightboxService, $cacheFactory, $translate, currentUserService) ->
CreateProject = ($rootscope, $repo, $confirm, $location, $navurls, $rs, $projectUrl, $loading, lightboxService, $cacheFactory, $translate, currentUserService, $auth) ->
link = ($scope, $el, attrs) ->
$scope.data = {}
$scope.templates = []
currentLoading = null
$auth.refresh()
$scope.canCreatePrivateProjects = currentUserService.canCreatePrivateProjects()
$scope.canCreatePublicProjects = currentUserService.canCreatePublicProjects()
form = $el.find("form").checksley({"onlyOneErrorElement": true})
onSuccessSubmit = (response) ->
@ -58,10 +62,6 @@ CreateProject = ($rootscope, $repo, $confirm, $location, $navurls, $rs, $project
selectors = []
for error_field in _.keys(response)
selectors.push("[name=#{error_field}]")
$el.find(".active").removeClass("active")
error_step = $el.find(selectors.join(",")).first().parents(".wizard-step")
error_step.addClass("active")
$el.find('.progress-bar').removeClass().addClass('progress-bar').addClass(error_step.data("step"))
submit = (event) =>
event.preventDefault()
@ -77,7 +77,9 @@ CreateProject = ($rootscope, $repo, $confirm, $location, $navurls, $rs, $project
promise.then(onSuccessSubmit, onErrorSubmit)
openLightbox = ->
$scope.data = {}
$scope.data = {
is_private: false
}
if !$scope.templates.length
$rs.projects.templates().then (result) =>
@ -86,40 +88,7 @@ CreateProject = ($rootscope, $repo, $confirm, $location, $navurls, $rs, $project
else
$scope.data.creation_template = _.head(_.filter($scope.templates, (x) -> x.slug == "scrum")).id
$el.find(".active").removeClass("active")
$el.find(".create-step1").addClass("active")
lightboxService.open($el)
timeout 600, ->
$el.find(".progress-bar").addClass('step1')
$el.on "click", ".button-next", (event) ->
event.preventDefault()
current = $el.find(".active")
valid = true
for field in form.fields
if current.find("[name=#{field.element.attr('name')}]").length
valid = field.validate() != false and valid
if not valid
return
next = current.next()
current.toggleClass('active')
next.toggleClass('active')
step = next.data('step')
$el.find('.progress-bar').removeClass().addClass('progress-bar').addClass(step)
$el.on "click", ".button-prev", (event) ->
event.preventDefault()
current = $el.find(".active")
prev = current.prev()
current.toggleClass('active')
prev.toggleClass('active')
step = prev.data('step')
$el.find('.progress-bar').removeClass().addClass('progress-bar').addClass(step)
submitButton = $el.find(".submit-button")
@ -145,7 +114,7 @@ CreateProject = ($rootscope, $repo, $confirm, $location, $navurls, $rs, $project
module.directive("tgLbCreateProject", ["$rootScope", "$tgRepo", "$tgConfirm",
"$location", "$tgNavUrls", "$tgResources", "$projectUrl", "$tgLoading",
"lightboxService", "$cacheFactory", "$translate", "tgCurrentUserService", CreateProject])
"lightboxService", "$cacheFactory", "$translate", "tgCurrentUserService", "$tgAuth", CreateProject])
#############################################################################

View File

@ -62,7 +62,7 @@ RelatedTaskRowDirective = ($repo, $compile, $confirm, $rootscope, $loading, $tem
else if event.keyCode == 27
renderView($model.$modelValue)
$el.on "click", ".icon-floppy", (event) ->
$el.on "click", ".save-task", (event) ->
saveTask($model.$modelValue).then ->
renderView($model.$modelValue)
@ -79,7 +79,7 @@ RelatedTaskRowDirective = ($repo, $compile, $confirm, $rootscope, $loading, $tem
$el.html($compile(templateView({task: task, perms: perms}))($scope))
$el.on "click", ".icon-edit", ->
$el.on "click", ".edit-task", ->
renderEdit($model.$modelValue)
$el.find('input').focus().select()
@ -170,10 +170,10 @@ RelatedTaskCreateFormDirective = ($repo, $compile, $confirm, $tgmodel, $loading,
else if event.keyCode == 27
$scope.$apply () -> close()
$el.on "click", ".icon-delete", (event)->
$el.on "click", ".icon-close", (event)->
$scope.$apply () -> close()
$el.on "click", ".icon-floppy", (event)->
$el.on "click", ".icon-save", (event)->
createTask(newTask).then ->
close()

View File

@ -45,6 +45,7 @@ urls = {
"user-voted": "/users/%s/voted"
"user-watched": "/users/%s/watched"
"user-contacts": "/users/%s/contacts"
"user-me": "/users/me"
# User - Notification
"permissions": "/permissions"
@ -73,6 +74,11 @@ urls = {
"project-unlike": "/projects/%s/unlike"
"project-watch": "/projects/%s/watch"
"project-unwatch": "/projects/%s/unwatch"
"project-transfer-validate-token": "/projects/%s/transfer_validate_token"
"project-transfer-accept": "/projects/%s/transfer_accept"
"project-transfer-reject": "/projects/%s/transfer_reject"
"project-transfer-request": "/projects/%s/transfer_request"
"project-transfer-start": "/projects/%s/transfer_start"
# Project Values - Choises
"userstory-statuses": "/userstory-statuses"

View File

@ -128,7 +128,11 @@ resourceProvider = ($config, $repo, $http, $urls, $auth, $q, $translate) ->
catch
response.data = {}
response.status = evt.target.status
if evt.target.getResponseHeader('Taiga-Info-Project-Is-Private')
response.headers = {
isPrivate: evt.target.getResponseHeader('Taiga-Info-Project-Is-Private') == 'True',
memberships: parseInt(evt.target.getResponseHeader('Taiga-Info-Project-Memberships'))
}
defered.resolve(response) if response.status in [201, 202]
defered.reject(response)

View File

@ -50,7 +50,6 @@ CreateEditTaskDirective = ($repo, $model, $rs, $rootscope, $loading, lightboxSer
return $q.all(promises)
deleteAttachments = (obj) ->
console.log attachmentsToDelete.toJS()
promises = _.map attachmentsToDelete.toJS(), (attachment) ->
return attachmentsService.delete("task", attachment.id)

View File

@ -95,6 +95,7 @@ class TeamController extends mixOf(taiga.Controller, taiga.PageMixin)
@scope.issuesEnabled = project.is_issues_activated
@scope.tasksEnabled = project.is_kanban_activated or project.is_backlog_activated
@scope.wikiEnabled = project.is_wiki_activated
@scope.owner = project.owner.id
return project
@ -110,15 +111,18 @@ class TeamController extends mixOf(taiga.Controller, taiga.PageMixin)
@scope.stats.totals = @scope.totals
_processStat: (stat) ->
max = _.max(stat)
min = _.min(stat)
singleStat = _.map stat, (value, key) ->
max = _.max(_.toArray(stat))
min = _.min(_.toArray(stat))
singleStat = Object()
for own key, value of stat
if value == min
return [key, 0.1]
if value == max
return [key, 1]
return [key, (value * 0.5) / max]
singleStat = _.object(singleStat)
singleStat[key] = 0.1
else if value == max
singleStat[key] = 1
else
singleStat[key] = (value * 0.5) / max
return singleStat
_processStats: (stats) ->
@ -131,6 +135,11 @@ class TeamController extends mixOf(taiga.Controller, taiga.PageMixin)
return promise.then (project) =>
@.fillUsersAndRoles(project.members, project.roles)
@.loadMembers()
userRoles = _.map @scope.users, (user) -> user.role
@scope.roles = _.filter @scope.roles, (role) -> userRoles.indexOf(role.id) != -1
return @.loadMemberStats()
module.controller("TeamController", TeamController)
@ -175,12 +184,13 @@ TeamMemberCurrentUserDirective = () ->
return {
templateUrl: "team/team-member-current-user.html"
scope: {
projectId: "=projectid",
project: "=project",
currentUser: "=currentuser",
stats: "="
issuesEnabled: "=issuesenabled"
tasksEnabled: "=tasksenabled"
wikiEnabled: "=wikienabled"
stats: "=",
issuesEnabled: "=issuesenabled",
tasksEnabled: "=tasksenabled",
wikiEnabled: "=wikienabled",
owner: "=owner"
}
}
@ -200,10 +210,11 @@ TeamMembersDirective = () ->
memberships: "=",
filtersQ: "=filtersq",
filtersRole: "=filtersrole",
stats: "="
issuesEnabled: "=issuesenabled"
tasksEnabled: "=tasksenabled"
wikiEnabled: "=wikienabled"
stats: "=",
issuesEnabled: "=issuesenabled",
tasksEnabled: "=tasksenabled",
wikiEnabled: "=wikienabled",
owner: "=owner"
}
}
@ -214,16 +225,17 @@ module.directive("tgTeamMembers", TeamMembersDirective)
## Leave project Directive
#############################################################################
LeaveProjectDirective = ($repo, $confirm, $location, $rs, $navurls, $translate) ->
LeaveProjectDirective = ($repo, $confirm, $location, $rs, $navurls, $translate, lightboxFactory, currentUserService) ->
link = ($scope, $el, $attrs) ->
$scope.leave = () ->
leaveConfirm = () ->
leave_project_text = $translate.instant("TEAM.ACTION_LEAVE_PROJECT")
confirm_leave_project_text = $translate.instant("TEAM.CONFIRM_LEAVE_PROJECT")
$confirm.ask(leave_project_text, confirm_leave_project_text).then (response) =>
promise = $rs.projects.leave($attrs.projectid)
promise = $rs.projects.leave($scope.project.id)
promise.then =>
currentUserService.loadProjects().then () ->
response.finish()
$confirm.notify("success")
$location.path($navurls.resolve("home"))
@ -232,13 +244,27 @@ LeaveProjectDirective = ($repo, $confirm, $location, $rs, $navurls, $translate)
response.finish()
$confirm.notify('error', response.data._error_message)
$scope.leave = () ->
if $scope.project.owner.id == $scope.user.id
lightboxFactory.create("tg-lightbox-leave-project-warning", {
class: "lightbox lightbox-leave-project-warning"
}, {
isCurrentUser: true,
project: $scope.project
})
else
leaveConfirm()
return {
scope: {},
scope: {
user: "=",
project: "="
},
templateUrl: "team/leave-project.html",
link: link
}
module.directive("tgLeaveProject", ["$tgRepo", "$tgConfirm", "$tgLocation", "$tgResources", "$tgNavUrls", "$translate",
module.directive("tgLeaveProject", ["$tgRepo", "$tgConfirm", "$tgLocation", "$tgResources", "$tgNavUrls", "$translate", "tgLightboxFactory", "tgCurrentUserService",
LeaveProjectDirective])

View File

@ -63,9 +63,14 @@ module.controller("UserChangePasswordController", UserChangePasswordController)
UserChangePasswordDirective = ($rs, $confirm, $loading, $translate) ->
link = ($scope, $el, $attrs, ctrl) ->
form = new checksley.Form($el.find("form"))
submit = debounce 2000, (event) =>
event.preventDefault()
if not form.validate()
return
if $scope.newPassword1 != $scope.newPassword2
$confirm.notify('error', $translate.instant("CHANGE_PASSWORD.ERROR_PASSWORD_MATCH"))
return

View File

@ -33,7 +33,7 @@ module = angular.module("taigaUserSettings")
## Delete User Lightbox Directive
#############################################################################
DeleteUserDirective = ($repo, $rootscope, $auth, $location, $navUrls, lightboxService) ->
DeleteUserDirective = ($repo, $rootscope, $auth, $location, $navUrls, lightboxService, $loading) ->
link = ($scope, $el, $attrs) ->
$scope.$on "deletelightbox:new", (ctx, user)->
lightboxService.open($el)
@ -42,29 +42,37 @@ DeleteUserDirective = ($repo, $rootscope, $auth, $location, $navUrls, lightboxSe
$el.off()
submit = ->
currentLoading = $loading()
.target(submitButton)
.start()
promise = $repo.remove($scope.user)
promise.then (data) ->
currentLoading.finish()
lightboxService.close($el)
$auth.logout()
$location.path($navUrls.resolve("login"))
# FIXME: error handling?
promise.then null, ->
currentLoading.finish()
console.log "FAIL"
$el.on "click", ".button-red", (event) ->
$el.on "click", ".button-green", (event) ->
event.preventDefault()
lightboxService.close($el)
$el.on "click", ".button-green", debounce 2000, (event) ->
$el.on "click", ".button-red", debounce 2000, (event) ->
event.preventDefault()
submit()
submitButton = $el.find(".button-red")
return {
link: link,
templateUrl: "user/lightbox/lightbox-delete-account.html"
}
module.directive("tgLbDeleteUser", ["$tgRepo", "$rootScope", "$tgAuth", "$tgLocation", "$tgNavUrls",
"lightboxService", DeleteUserDirective])
"lightboxService", "$tgLoading", DeleteUserDirective])

View File

@ -59,16 +59,19 @@ mixOf = (base, mixins...) ->
trim = (data, char) ->
return _.str.trim(data, char)
return _.trim(data, char)
slugify = (data) ->
return _.str.slugify(data)
return data.toString().toLowerCase().trim()
.replace(/\s+/g, '-')
.replace(/&/g, '-and-')
.replace(/[^\w\-]+/g, '')
.replace(/\-\-+/g, '-')
unslugify = (data) ->
if data
return _.str.capitalize(data.replace(/-/g, ' '))
return _.capitalize(data.replace(/-/g, ' '))
return data
@ -114,7 +117,7 @@ toString = (value) ->
joinStr = (str, coll) ->
return _.str.join(str, coll)
return coll.join(str)
debounce = (wait, func) ->
@ -126,7 +129,7 @@ debounceLeading = (wait, func) ->
startswith = (str1, str2) ->
return _.str.startsWith(str1, str2)
return _.startsWith(str1, str2)
truncate = (str, maxLength, suffix="...") ->

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

View File

@ -45,3 +45,4 @@ html(lang="en")
script(src="/#{v}/js/libs.js")
script(src="/#{v}/js/templates.js")
script(src="/#{v}/js/app-loader.js")
include svg/sprite.svg

View File

@ -41,7 +41,8 @@
"IOCAINE_TEXT": "Un poc saturat per una tasca? Fes-ho saber als teus companys clicant a Iocaina quan edites la tasca. Es possible ser inmune a aquesta (fictícia) poció mortal consumint xicotetes dòsis poc a poc, així com es possible millorar amb xicotets nous desafiaments!",
"CLIENT_REQUIREMENT": "Client requirement is new requirement that was not previously expected and it is required to be part of the project",
"TEAM_REQUIREMENT": "Team requirement is a requirement that must exist in the project but should have no cost for the client",
"CAPSLOCK_WARNING": "Be careful! You're writing with capital letters and this input is case sensitive.",
"OWNER": "Project Owner",
"CAPSLOCK_WARNING": "Be careful! You are using capital letters in an input field that is case sensitive.",
"FORM_ERRORS": {
"DEFAULT_MESSAGE": "Aquest valor pareix invàlid.",
"TYPE_EMAIL": "Deu ser un correu vàlid.",
@ -65,7 +66,9 @@
"MIN_CHECK": "You must select at least %s choices.",
"MAX_CHECK": "Heu de seleccionar la opció %s o inferior.",
"RANGE_CHECK": "Heu de seleccionar entre les opcions %s i %s.",
"EQUAL_TO": "Aquest valor hauria de ser el mateix."
"EQUAL_TO": "Aquest valor hauria de ser el mateix.",
"LINEWIDTH": "One or more lines is perhaps too long. Try to keep under %s characters.",
"PIKADAY": "Invalid date format, please use DD MMM YYYY (like 23 Mar 1984)"
},
"PICKERDATE": {
"FORMAT": "DD MMM YYYY",
@ -315,7 +318,8 @@
"PLACEHOLDER_FIELD": "Nom d'usuari o correu electrònic",
"ACTION_RESET_PASSWORD": "Resetejar contrasenya",
"LINK_CANCEL": "No, porta'm enrere, crec que ja ho recordo.",
"SUCCESS": "<strong>Mira el teu correu!</strong><br /> Hem enviat un correu amb les instrucciones per a setejar una nova contrasenya.",
"SUCCESS_TITLE": "Check your inbox!",
"SUCCESS_TEXT": "We sent you an email with the instructions to set a new password",
"ERROR": "Segons els nostres Oompa Loompas, no estàs registrat encara."
},
"CHANGE_PASSWORD": {
@ -373,7 +377,6 @@
"DEPRECATED_FILE": "Obsolet?",
"ADD": "Afegeix un nou adjunt. {{maxFileSizeMsg}}",
"DROP": "Deixa els adjunts ací",
"MAX_FILE_SIZE": "[Max. grandària: {{maxFileSize}}]",
"SHOW_DEPRECATED": "+ mostra els adjunts obsolets",
"HIDE_DEPRECATED": "- Amagar els adjunts obsolets",
"COUNT_DEPRECATED": "({{ counter }} obsolet)",
@ -406,7 +409,9 @@
"TITLE": "Gestió de Membres",
"PAGE_TITLE": "Afiliacions - {{projectName}}",
"ADD_BUTTON": "+ Nou membre",
"ADD_BUTTON_TITLE": "Afegir nou membre"
"ADD_BUTTON_TITLE": "Afegir nou membre",
"LIMIT_USERS_WARNING_MESSAGE_FOR_ADMIN": "Unfortunately, this project has reached its limit of <strong>({{members}})</strong> allowed members.",
"LIMIT_USERS_WARNING_MESSAGE_FOR_OWNER": "This project has reached its limit of <strong>({{members}})</strong> allowed members. If you would like to increase that limit please contact the administrator."
},
"PROJECT_EXPORT": {
"TITLE": "Exportar",
@ -428,6 +433,10 @@
"DISABLE": "Desactiva",
"BACKLOG": "Backlog",
"BACKLOG_DESCRIPTION": "Organitza les històries d'usuari per a mantindre una vista organitzada i prioritzada del treball.",
"NUMBER_SPRINTS": "Expected number of sprints",
"NUMBER_SPRINTS_HELP": "0 for an undetermined number",
"NUMBER_US_POINTS": "Expected total of story points",
"NUMBER_US_POINTS_HELP": "0 for an undetermined number",
"KANBAN": "Kanban",
"KANBAN_DESCRIPTION": "Organitza els projectes de un mode sencill amb aquest tauler",
"ISSUES": "Incidències",
@ -435,9 +444,9 @@
"WIKI": "Wiki",
"WIKI_DESCRIPTION": "Afegix, modifica o borra contingut en col3laboració amb altres. Aquest es el lloc correcte per a la teua documentació.",
"MEETUP": "Trobar-se",
"MEETUP_DESCRIPTION": "Tria el teu sistema de videonconferéncia. Inclosos els desenvolupadors necessitan contacte cara a cara",
"MEETUP_DESCRIPTION": "Choose your videoconference system.",
"SELECT_VIDEOCONFERENCE": "Selecciona un sistema de videconferència",
"SALT_CHAT_ROOM": "Pots afegir un code salt a la sala de xat",
"SALT_CHAT_ROOM": "Add a prefix to the chatroom name",
"JITSI_CHAT_ROOM": "Jitsi",
"APPEARIN_CHAT_ROOM": "AppearIn",
"TALKY_CHAT_ROOM": "Talky",
@ -449,22 +458,31 @@
"PROJECT_DETAILS": "Detalls de projecte",
"PROJECT_NAME": "Nom del projecte",
"PROJECT_SLUG": "Slug de projecte",
"NUMBER_SPRINTS": "Nombre d'sprints (0 per a quantitat indetermindad)",
"NUMBER_US_POINTS": "Nombre de punts d'històries (0 per a una quantitat indeterminada)",
"TAGS": "Etiquetes",
"DESCRIPTION": "Descripció",
"RECRUITING": "Este projecte busca col·laboracions?",
"RECRUITING_MESSAGE": "A qui estàs buscant?",
"RECRUITING_PLACEHOLDER": "Defineix els perfils que estàs buscant",
"PUBLIC_PROJECT": "Projecte públic",
"PUBLIC_PROJECT_DESC": "Els usuaris podràn trobar i vore el teu projecte",
"PRIVATE_PROJECT": "Projecte privat",
"PRIVATE_PROJECT_DESC": "By default, this project will be hidden to the public",
"PRIVATE_OR_PUBLIC": "What's the difference between public and private projects?",
"DELETE": "Esborra aquest projecte",
"LOGO_HELP": "The image will be scaled to 80x80px.",
"CHANGE_LOGO": "Change logo",
"ACTION_USE_DEFAULT_LOGO": "Use default image"
"ACTION_USE_DEFAULT_LOGO": "Use default image",
"MAX_PRIVATE_PROJECTS": "You've reached the maximum number of private projects allowed by your current plan",
"MAX_PRIVATE_PROJECTS_MEMBERS": "The maximum number of members for private projects has been exceeded",
"MAX_PUBLIC_PROJECTS": "Unfortunately, you've reached the maximum number of public projects allowed by your current plan",
"MAX_PUBLIC_PROJECTS_MEMBERS": "The project exceeds your maximum number of members for public projects",
"PROJECT_OWNER": "Project owner",
"REQUEST_OWNERSHIP": "Request ownership",
"REQUEST_OWNERSHIP_CONFIRMATION_TITLE": "Do you want to become the new project owner?",
"REQUEST_OWNERSHIP_DESC": "Request that current project owner {{name}} transfer ownership of this project to you.",
"REQUEST_OWNERSHIP_BUTTON": "Petició",
"REQUEST_OWNERSHIP_SUCCESS": "We'll notify the project owner",
"CHANGE_OWNER": "Change owner",
"CHANGE_OWNER_SUCCESS_TITLE": "Ok, your request has been sent!",
"CHANGE_OWNER_SUCCESS_DESC": "We will notify you by email if the project ownership request is accepted or declined"
},
"REPORTS": {
"TITLE": "Informes",
@ -495,7 +513,8 @@
"ISSUE_ADD": "Afegix camps personalitzats en incidències",
"FIELD_TYPE_TEXT": "Text",
"FIELD_TYPE_MULTI": "Múltiples línies",
"FIELD_TYPE_DATE": "Data"
"FIELD_TYPE_DATE": "Data",
"FIELD_TYPE_URL": "Url"
},
"PROJECT_VALUES": {
"PAGE_TITLE": "{{sectionName}} - Valors de projecte - {{projectName}}",
@ -543,7 +562,7 @@
"COUNT_MEMBERS": "{{ role.members_count }} membres amb aquest rol",
"TITLE_DELETE_ROLE": "Esborrar rol",
"REPLACEMENT_ROLE": "Tots els usuaris amb aquest rol es canviaran a",
"WARNING_DELETE_ROLE": "<strong>Atenció, totes les estimacions del rol seràn esborrades</strong>",
"WARNING_DELETE_ROLE": "Be careful! All role estimations will be removed",
"ERROR_DELETE_ALL": "No pots esborrar tots els valors",
"EXTERNAL_USER": "Usuari extern"
},
@ -671,6 +690,24 @@
},
"SUBMENU_THIDPARTIES": {
"TITLE": "Serveis"
},
"PROJECT_TRANSFER": {
"DO_YOU_ACCEPT_PROJECT_OWNERNSHIP": "Would you like to become the new project owner?",
"PRIVATE": "Private",
"ACCEPTED_PROJECT_OWNERNSHIP": "Congratulations! You're now the new project owner.",
"REJECTED_PROJECT_OWNERNSHIP": "OK. We'll contact the current project owner",
"ACCEPT": "Acceptar",
"REJECT": "Reject",
"PROPOSE_OWNERSHIP": "<strong>{{owner}}</strong>, the current owner of the project <strong>{{project}}</strong> has asked that you become the new project owner.",
"ADD_COMMENT_QUESTION": "Would you like to send a question to the project owner?",
"ADD_COMMENT": "Would you like to add a comment for the project owner?",
"UNLIMITED_PROJECTS": "Unlimited",
"OWNER_MESSAGE": {
"PRIVATE": "Please remember that you can own up to <strong>{{maxProjects}}</strong> private projects. You currently own <strong>{{currentProjects}}</strong> private projects",
"PUBLIC": "Please remember that you can own up to <strong>{{maxProjects}}</strong> public projects. You currently own <strong>{{currentProjects}}</strong> public projects"
},
"CANT_BE_OWNED": "At the moment you cannot become an owner of a project of this type. If you would like to become the owner of this project, please contact the administrator so they change your account settings to enable project ownership.",
"CHANGE_MY_PLAN": "Change my plan"
}
},
"USER": {
@ -731,6 +768,11 @@
"FANS_COUNTER_TITLE": "{total, plural, one{un fan} other{# fans}}",
"WATCHERS_COUNTER_TITLE": "{total, plural, one{un seguidor} other{# seguidors}}",
"MEMBERS_COUNTER_TITLE": "{total, plural, one{un membre} other{# membres}}",
"BLOCKED_PROJECT": {
"BLOCKED": "Blocked project",
"THIS_PROJECT_IS_BLOCKED": "This project is temporarily blocked",
"TO_UNBLOCK_CONTACT_THE_ADMIN_STAFF": "In order to unblock your projects, contact the administrator."
},
"STATS": {
"PROJECT": "punts<br/> projecte",
"DEFINED": "punts<br/> definits",
@ -777,6 +819,7 @@
"CHANGE_PASSWORD": "Canvi de contrasenya",
"DASHBOARD_TITLE": "Tauler",
"DISCOVER_TITLE": "Discover trending projects",
"NEW_ITEM": "New",
"DISCOVER": "Descobreix",
"ACTION_REORDER": "Arrossega els elements per endreçar"
},
@ -791,7 +834,32 @@
"ERROR_TOO_MANY_REQUEST": "Ho sentim, els Oompa Loompas estàn molt ocupats ara mateix. Intenta-ho de nou en uns moments.",
"ERROR_MESSAGE": "Els Oompa Loompas tenen problemes important les teues dades: {{error_message}}",
"ERROR_MAX_SIZE_EXCEEDED": "'{{fileName}}' ({{fileSize}}) es massa gran per als nostres Oompa Loompas, prova amb algun inferior a ({{maxFileSize}})",
"SYNC_SUCCESS": "El teu projecte s'ha importat correctament"
"SYNC_SUCCESS": "El teu projecte s'ha importat correctament",
"PROJECT_RESTRICTIONS": {
"PROJECT_MEMBERS_DESC": "The project you are trying to import has {{members}} members, unfortunately, your current plan allows for a maximum of {{max_memberships}} members per project. If you would like to increase that limit please contact the administrator.",
"PRIVATE_PROJECTS_SPACE": {
"TITLE": "Unfortunately, your current plan does not allow for additional private projects",
"DESC": "The project you are trying to import is private. Unfortunately, your current plan does not allow for additional private projects."
},
"PUBLIC_PROJECTS_SPACE": {
"TITLE": "Unfortunately, your current plan does not allow for additional private projects",
"DESC": "The project you are trying to import is public. Unfortunately, your current plan does not allow additional public projects."
},
"PRIVATE_PROJECTS_MEMBERS": {
"TITLE": "Your current plan allows for a maximum of {{max_memberships}} members per private project"
},
"PUBLIC_PROJECTS_MEMBERS": {
"TITLE": "Your current plan allows for a maximum of {{max_memberships}} members per public project."
},
"PRIVATE_PROJECTS_SPACE_MEMBERS": {
"TITLE": "Unfortunately your current plan doesn't allow additional private projects or an increase of more than {{max_memberships}} members per private project",
"DESC": "The project that you are trying to import is private and has {{members}} members."
},
"PUBLIC_PROJECTS_SPACE_MEMBERS": {
"TITLE": "Unfortunately your current plan doesn't allow additional public projects or an increase of more than {{max_memberships}} members per public project",
"DESC": "The project that you are trying to import is public and has more than {{members}} members."
}
}
},
"LIKE_BUTTON": {
"LIKE": "M'agrada",
@ -819,8 +887,11 @@
"DELETE_ACCOUNT": {
"SECTION_NAME": "Esborrar compte de Taiga",
"CONFIRM": "Segur que vols borrar el teu compte de Taiga? ",
"SUBTITLE": "Te trobarem a faltar! :-(",
"NEWSLETTER_LABEL_TEXT": "No vull rebre més el vostre butlletí de notícies"
"NEWSLETTER_LABEL_TEXT": "No vull rebre més el vostre butlletí de notícies",
"CANCEL": "Back to settings",
"ACCEPT": "Delete account",
"BLOCK_PROJECT": "Note that all the projects you own projects will be <strong>blocked</strong> after you delete your account. If you do want a project blocked, transfer ownership to another member of each project prior to deleting your account.",
"SUBTITLE": "Sorry to see you go. We'll be here if you should ever consider us again! :("
},
"DELETE_PROJECT": {
"TITLE": "Esborrar projecte",
@ -876,7 +947,25 @@
},
"CREATE_MEMBER": {
"PLACEHOLDER_INVITATION_TEXT": "(Opcional) Afegix un text personalizat a la invitació. Dis-li algo divertit als nous membres. ;-)",
"PLACEHOLDER_TYPE_EMAIL": "Escriu un correu"
"PLACEHOLDER_TYPE_EMAIL": "Escriu un correu",
"LIMIT_USERS_WARNING_MESSAGE_FOR_OWNER": "Unfortunately, this project can't have more than <strong>{{maxMembers}}</strong> members.<br> If you would like to increase the current limit, please contact the administrator.",
"LIMIT_USERS_WARNING_MESSAGE": "Unfortunately, this project can't have more than <strong>{{maxMembers}}</strong> members."
},
"LEAVE_PROJECT_WARNING": {
"TITLE": "Unfortunately, this project can't be left without an owner",
"CURRENT_USER_OWNER": {
"DESC": "You are the current owner of this project. Before leaving, please transfer ownership to someone else.",
"BUTTON": "Change the project owner"
},
"OTHER_USER_OWNER": {
"DESC": "Unfortunately, you can't delete a member who is also the current project owner. First, please assign a new project owner.",
"BUTTON": "Request project owner change"
}
},
"CHANGE_OWNER": {
"TITLE": "Who do you want to be the new project owner?",
"ADD_COMMENT": "Add comment",
"BUTTON": "Ask this project member to become the new project owner"
}
},
"US": {
@ -1304,12 +1393,18 @@
}
},
"WIZARD": {
"SECTION_TITLE_CHOOSE_TEMPLATE": "Tria una plantilla",
"CHOOSE_TEMPLATE_TEXT": "Quina plantilla encaixa millor al teu projecte?",
"SECTION_TITLE_CREATE_PROJECT": "Crear projecte",
"CREATE_PROJECT_TEXT": "Nou projecte. Qué il·lusió!",
"PROGRESS_TEMPLATE_SELECTION": "Selecció de plantilla",
"PROGRESS_NAME_DESCRIPTION": "Nom i descripció"
"CHOOSE_TEMPLATE": "Which template fits your project best?",
"CHOOSE_TEMPLATE_TITLE": "More info about project templates",
"CHOOSE_TEMPLATE_INFO": "More info",
"PROJECT_DETAILS": "Project Details",
"PUBLIC_PROJECT": "Public Project",
"PRIVATE_PROJECT": "Private Project",
"CREATE_PROJECT": "Crear projecte",
"MAX_PRIVATE_PROJECTS": "You've reached the maximum number of private projects",
"MAX_PUBLIC_PROJECTS": "Unfortunately, you've reached the maximum number of public projects",
"CHANGE_PLANS": "change plans"
},
"WIKI": {
"PAGE_TITLE": "{{wikiPageName}} - Wiki - {{projectName}}",

View File

@ -24,38 +24,39 @@
"UNBLOCK": "Blockierung aufheben",
"UNBLOCK_TITLE": "Unblock this item",
"BLOCKED_NOTE": "Why is this blocked?",
"BLOCKED_REASON": "Bitte erklären Sie den Grund ",
"BLOCKED_REASON": "Bitte erklären Sie den Grund",
"CREATED_BY": "Erstellt durch {{fullDisplayName}}",
"FROM": "von",
"TO": "zu",
"CLOSE": "schließen",
"GO_HOME": "Führe mich heim",
"PLUGINS": "Plugins",
"BETA": "Wir sind auf beta! ",
"BETA": "Wir sind auf beta!",
"ONE_ITEM_LINE": "Ein Eintrag pro Zeile...",
"NEW_BULK": "Neue Massenerstellung",
"RELATED_TASKS": "Verbundene Aufgaben",
"LOGOUT": "Ausloggen",
"EXTERNAL_USER": "ein externer Benutzer",
"GENERIC_ERROR": "Eins unserer Helferlein sagt {{error}}.",
"IOCAINE_TEXT": "Fühlen Sie sich von einer Aufgabe etwas erdrückt? Stellen Sie sicher, dass andere davon erfahren, indem Sie auf Locaine klicken, wenn Sie eine Aufgabe ändern. Es ist möglich, gegen dieses (fiktive) tödliche Gift immun zu werden, indem man kleine Mengen über einen Zeitraum hinweg einnimmt. Genauso, wie es möglich ist, besser in dem zu werden, was man tut, indem man gelegentlich zusätzliche Herausforderungen annimmt! ",
"IOCAINE_TEXT": "Fühlen Sie sich von einer Aufgabe etwas erdrückt? Stellen Sie sicher, dass andere davon erfahren, indem Sie auf Locaine klicken, wenn Sie eine Aufgabe ändern. Es ist möglich, gegen dieses (fiktive) tödliche Gift immun zu werden, indem man kleine Mengen über einen Zeitraum hinweg einnimmt. Genauso, wie es möglich ist, besser in dem zu werden, was man tut, indem man gelegentlich zusätzliche Herausforderungen annimmt!",
"CLIENT_REQUIREMENT": "Client requirement is new requirement that was not previously expected and it is required to be part of the project",
"TEAM_REQUIREMENT": "Team requirement is a requirement that must exist in the project but should have no cost for the client",
"CAPSLOCK_WARNING": "Achtung! SIe schreiben in Großbuchstaben und bei dieser Eingabe ist Groß- und Kleinschreibung zu beachten",
"OWNER": "Project Owner",
"CAPSLOCK_WARNING": "Be careful! You are using capital letters in an input field that is case sensitive.",
"FORM_ERRORS": {
"DEFAULT_MESSAGE": "Dieser Wert scheint ungültig zu sein. ",
"DEFAULT_MESSAGE": "Dieser Wert scheint ungültig zu sein.",
"TYPE_EMAIL": "Dieser Wert sollte eine gültige E-Mail Adresse enthalten.",
"TYPE_URL": "Dieser Wert sollte eine gültige URL enthalten. ",
"TYPE_URLSTRICT": "Dieser Wert sollte eine gültige URL enthalten. ",
"TYPE_NUMBER": "Dieser Wert sollte eine gültige Nummer enthalten. ",
"TYPE_URL": "Dieser Wert sollte eine gültige URL enthalten.",
"TYPE_URLSTRICT": "Dieser Wert sollte eine gültige URL enthalten.",
"TYPE_NUMBER": "Dieser Wert sollte eine gültige Nummer enthalten.",
"TYPE_DIGITS": "Dieser Wert sollte Ziffern enthalten.",
"TYPE_DATEISO": "Dieser Wert sollte ein gültiges Datum sein (JJJJ-MM-TT)",
"TYPE_ALPHANUM": "Dieser Wert sollte alphanumersich sein. ",
"TYPE_ALPHANUM": "Dieser Wert sollte alphanumersich sein.",
"TYPE_PHONE": "Dieser Wert sollte eine gültige Telefonnummer enthalten.",
"NOTNULL": "Dieser Wert darf nicht leer sein. ",
"NOT_BLANK": "Dieser Wert darf nicht leer bleiben. ",
"NOTNULL": "Dieser Wert darf nicht leer sein.",
"NOT_BLANK": "Dieser Wert darf nicht leer bleiben.",
"REQUIRED": "Diese Angabe ist erforderlich",
"REGEXP": "Dieser Wert scheint ungültig zu sein. ",
"REGEXP": "Dieser Wert scheint ungültig zu sein.",
"MIN": "Dieser Wert sollte größer oder gleich %s sein.",
"MAX": "Dieser Wert sollte niedriger oder gleich %s sein.",
"RANGE": "Der Wert sollte zwischen %s und %s liegen.",
@ -65,14 +66,16 @@
"MIN_CHECK": "Sie müssen mindestens %s auswählen.",
"MAX_CHECK": "Wählen Sie %s oder weniger.",
"RANGE_CHECK": "Wählen Sie zwischen %s und %s",
"EQUAL_TO": "Dieser Wert sollte der gleiche sein."
"EQUAL_TO": "Dieser Wert sollte der gleiche sein.",
"LINEWIDTH": "One or more lines is perhaps too long. Try to keep under %s characters.",
"PIKADAY": "Invalid date format, please use DD MMM YYYY (like 23 Mar 1984)"
},
"PICKERDATE": {
"FORMAT": "DD MMM YYYY",
"IS_RTL": "falsch",
"FIRST_DAY_OF_WEEK": "1",
"PREV_MONTH": "Vorheriger Monat",
"NEXT_MONTH": "Nächster Monat ",
"NEXT_MONTH": "Nächster Monat",
"MONTHS": {
"JAN": "Januar",
"FEB": "Februar",
@ -85,7 +88,7 @@
"SEP": "September",
"OCT": "Oktober",
"NOV": "November",
"DEC": "Diciember"
"DEC": "Dezember"
},
"WEEK_DAYS": {
"SUN": "Sonntag",
@ -97,13 +100,13 @@
"SAT": "Samstag"
},
"WEEK_DAYS_SHORT": {
"SUN": "Son",
"MON": "Mon",
"TUE": "Die",
"WED": "Mit",
"THU": "Don",
"FRI": "Fre",
"SAT": "Sam"
"SUN": "So",
"MON": "Mo",
"TUE": "Di",
"WED": "Mi",
"THU": "Do",
"FRI": "Fr",
"SAT": "Sa"
}
},
"SEE_USER_PROFILE": "Profil von {{username }} ansehen",
@ -117,7 +120,7 @@
},
"DESCRIPTION": {
"EMPTY": "Bitte geben Sie eine Beschreibung ein...",
"NO_DESCRIPTION": "Noch keine Beschreibung "
"NO_DESCRIPTION": "Noch keine Beschreibung"
},
"FIELDS": {
"SUBJECT": "Thema",
@ -144,13 +147,13 @@
},
"ASSIGNED_TO": {
"NOT_ASSIGNED": "Nicht zugeordnet",
"ASSIGN": "Assign",
"ASSIGN": "Zuweisen",
"DELETE_ASSIGNMENT": "Zuordnung löschen",
"REMOVE_ASSIGNED": "Zugewiesene entfernen",
"TOO_MANY": "...zu viele Benutzer. Filtern Sie! ",
"TOO_MANY": "...zu viele Benutzer. Filtern Sie!",
"CONFIRM_UNASSIGNED": "Möchten dies wirklich ohne eine Zuordnung verlassen?",
"TITLE_ACTION_EDIT_ASSIGNMENT": "Zuordnungen bearbeiten",
"SELF": "Assign to me"
"SELF": "An mich zuweisen"
},
"STATUS": {
"CLOSED": "Geschlossen",
@ -184,7 +187,7 @@
"SAVE": "Benutzerdefiniertes Feld speichern",
"EDIT": "Benutzerdefiniertes Feld bearbeiten",
"DELETE": "Benutzerattribut löschen",
"CONFIRM_DELETE": "Remeber that all values in this custom field will be deleted.\n Are you sure you want to continue?"
"CONFIRM_DELETE": "Alle Werte in benutzerdefinierten Feldern werden gelöscht.\n Sind Sie sicher, dass Sie fortfahren wollen?"
},
"FILTERS": {
"TITLE": "Filter",
@ -242,7 +245,7 @@
"NAME": "Aufgaben",
"VIEW_TASKS": "Aufgaben ansehen",
"ADD_TASKS": "Aufgaben hinzufügen",
"MODIFY_TASKS": "Aufgaben ändern ",
"MODIFY_TASKS": "Aufgaben ändern",
"DELETE_TASKS": "Aufgaben löschen"
},
"ISSUES": {
@ -265,12 +268,12 @@
},
"META": {
"PAGE_TITLE": "Taiga",
"PAGE_DESCRIPTION": "Taiga ist ein Projekt-Management Plattform für Neugründer und agile Entwickler und Designer, die ein unkompliziertes und ansprechendes Tool möchten, das die Arbeit wirklich angenehm macht. "
"PAGE_DESCRIPTION": "Taiga ist ein Projekt-Management Plattform für Neugründer und agile Entwickler und Designer, die ein unkompliziertes und ansprechendes Tool möchten, das die Arbeit wirklich angenehm macht."
}
},
"LOGIN": {
"PAGE_TITLE": "Login - Taiga",
"PAGE_DESCRIPTION": "Melden Sie sich bei Taiga an, einer Projekt-Management Plattform für Neugründer und agile Entwickler und Designer, die ein unkompliziertes und ansprechendes Tool möchten, das die Arbeit wirklich angenehm macht. "
"PAGE_DESCRIPTION": "Melden Sie sich bei Taiga an, einer Projekt-Management Plattform für Neugründer und agile Entwickler und Designer, die ein unkompliziertes und ansprechendes Tool möchten, das die Arbeit wirklich angenehm macht."
},
"AUTH": {
"INVITED_YOU": "hat Sie zum Projekt eingeladen",
@ -289,11 +292,11 @@
},
"LOGIN_FORM": {
"ERROR_AUTH_INCORRECT": "Laut unseren Helferlein ist Dein Benutzername/Deine E-Mail-Adresse oder Dein Passwort nicht korrekt. (Bitte achte auf die Groß- und Kleinschreibung.)",
"SUCCESS": "Herzlich willkommen bei Taiga, unsere Helferlein freuen sich. "
"SUCCESS": "Herzlich willkommen bei Taiga, unsere Helferlein freuen sich."
},
"REGISTER": {
"PAGE_TITLE": "Registrieren - Taiga",
"PAGE_DESCRIPTION": "Erstellee Dein Benutzerkonto in Taiga, einer Projekt-Management Plattform für Neugründer und agile Entwickler und Designer, die ein unkompliziertes und ansprechendes Tool möchten, das die Arbeit wirklich angenehm macht. "
"PAGE_DESCRIPTION": "Erstelle Dein Benutzerkonto in Taiga, einer Projekt-Management Plattform für Neugründer und agile Entwickler und Designer, die ein unkompliziertes und ansprechendes Tool möchten, das die Arbeit wirklich angenehm macht."
},
"REGISTER_FORM": {
"TITLE": "Ein neues Taiga Benutzerkonto registrieren (kostenlos)",
@ -311,12 +314,13 @@
},
"FORGOT_PASSWORD_FORM": {
"TITLE": "Huch, hast Du Dein Passwort vergessen?",
"SUBTITLE": "Gib Deinen Benutzernamen oder Deine E-Mail-Adresse ein, um einen neuen zu erhalten. ",
"SUBTITLE": "Gib Deinen Benutzernamen oder Deine E-Mail-Adresse ein, um einen neuen zu erhalten.",
"PLACEHOLDER_FIELD": "Benutzername oder E-Mail-Adresse",
"ACTION_RESET_PASSWORD": "Passwort zurücksetzen",
"LINK_CANCEL": "Nein, bring mich zurück. Ich denke, ich erinnere mich daran. ",
"SUCCESS": "<strong>Sehen Sie in Ihren Posteingang!</strong><br />Wir haben Ihnen eine E-Mail mit einer Anleitung gesendet, um ein neues Passwort festzulegen.",
"ERROR": "Laut unseren Helferlein sind Sie bislang noch nicht registriert. "
"LINK_CANCEL": "Nein, bring mich zurück. Ich denke, ich erinnere mich daran.",
"SUCCESS_TITLE": "Check your inbox!",
"SUCCESS_TEXT": "We sent you an email with the instructions to set a new password",
"ERROR": "Laut unseren Helferlein sind Sie bislang noch nicht registriert."
},
"CHANGE_PASSWORD": {
"PAGE_TITLE": "Ändere Dein Passwort - Taiga",
@ -331,36 +335,36 @@
"ERROR_PASSWORD_MATCH": "Die Passwörter stimmen nicht überein"
},
"CHANGE_PASSWORD_RECOVERY_FORM": {
"TITLE": "Erstellen Sie einen neuen Taiga Pass",
"SUBTITLE": "Und hey, es empfiehlt sich, mehr eisenreiche Nahrung zu sich zu nehmen - die ist gut für's Gehirn :P ",
"TITLE": "Erstellen Sie einen neues Passwort",
"SUBTITLE": "Und hey, es empfiehlt sich, mehr eisenreiche Nahrung zu sich zu nehmen - die ist gut für's Gehirn :P",
"PLACEHOLDER_NEW_PASSWORD": "Neues Passwort",
"PLACEHOLDER_RE_TYPE_NEW_PASSWORD": "Wiederholen Sie die Eingabe des neuen Passworts ",
"PLACEHOLDER_RE_TYPE_NEW_PASSWORD": "Wiederholen Sie die Eingabe des neuen Passworts",
"ACTION_RESET_PASSWORD": "Passwort zurücksetzen",
"ERROR": "Unsere Helferelein haben Probleme deine Anfrage zum Zurücksetzen des Passworts zu finden. Probiere es einfach nochmal.",
"SUCCESS": "Unsere Oompa Loompas haben das neue Passwort gespeichert.<br /> <strong>Hier</strong> gehts zum login."
},
"INVITATION": {
"PAGE_TITLE": "Einladung Annahme - Taiga",
"PAGE_DESCRIPTION": "Nehmen Sie die Einladung an und treten Sie einem Projekt in Taiga bei, einer Projekt-Management Plattform für Neugründer und agile Entwickler und Designer, die ein unkompliziertes und ansprechendes Tool möchten, das die Arbeit wirklich angenehm macht. "
"PAGE_DESCRIPTION": "Nehmen Sie die Einladung an und treten Sie einem Projekt in Taiga bei, einer Projekt-Management Plattform für Neugründer und agile Entwickler und Designer, die ein unkompliziertes und ansprechendes Tool möchten, das die Arbeit wirklich angenehm macht."
},
"INVITATION_LOGIN_FORM": {
"NOT_FOUND": "Unsere Helferlein können deine Einladung nicht finden.",
"SUCCESS": "Sie sind diesem Projekt erfolgreich beigetreten. Herzlich willkommen bei {{project_name}}",
"ERROR": "Laut unseren Helferlein sind Sie noch nicht registriert, oder Sie haben ein ungültiges Passwort eingegeben. "
"ERROR": "Laut unseren Helferlein sind Sie noch nicht registriert, oder Sie haben ein ungültiges Passwort eingegeben."
},
"HOME": {
"PAGE_TITLE": "Home - Taiga",
"PAGE_DESCRIPTION": "Die Taiga Homepage mit Ihren wichtigsten Projekten und all Ihren zugeordneten und beobachteten User-Stories, Aufgaben und Tickets. ",
"PAGE_DESCRIPTION": "Die Taiga Homepage mit Ihren wichtigsten Projekten und all Ihren zugeordneten und beobachteten User-Stories, Aufgaben und Tickets.",
"EMPTY_WORKING_ON": "<strong>Hier siehts ziemlich leer aus, oder?</strong> Beginne deine Arbeit mit Taiga und wir zeigen dir hier die Stories, Tasks und Issues an denen du arbeitest.",
"EMPTY_WATCHING": "<strong>Follow</strong> User Stories, Tasks, Issues in your projects and be notified about its changes :)",
"EMPTY_WATCHING": "<strong>Folge</strong> User Stories, Tasks, Issues in deinem Projekt und erhalte Benachrichtigungen, wenn sich etwas ändert. :)",
"EMPTY_PROJECT_LIST": "Sie haben noch keine Projekte",
"WORKING_ON_SECTION": "Zuletzt bearbeitet",
"WATCHING_SECTION": "Beobachtet",
"DASHBOARD": "Projects Dashboard"
"DASHBOARD": "ProjeKte Dashboard"
},
"PROJECTS": {
"PAGE_TITLE": "Meine Projekte - Taiga",
"PAGE_DESCRIPTION": "Eine Liste mit all Deinen Projekten. Du kannst sie ordnen oder ein Neues anlegen. ",
"PAGE_DESCRIPTION": "Eine Liste mit all Deinen Projekten. Du kannst sie ordnen oder ein Neues anlegen.",
"MY_PROJECTS": "Meine Projekte"
},
"ATTACHMENT": {
@ -372,8 +376,7 @@
"DEPRECATED": "(verworfen)",
"DEPRECATED_FILE": "Verworfen?",
"ADD": "Neuen Anhang hinzufügen. {{maxFileSizeMsg}}",
"DROP": "Drop attachments here!",
"MAX_FILE_SIZE": "[Max. Größe: {{maxFileSize}}]",
"DROP": "Ziehe Anhänge hierher!",
"SHOW_DEPRECATED": "+ verworfene Anhänge zeigen",
"HIDE_DEPRECATED": "- verworfene Anhänge verbergen",
"COUNT_DEPRECATED": "({{ counter }} verworfen)",
@ -406,38 +409,44 @@
"TITLE": "Mitglieder verwalten",
"PAGE_TITLE": "Mitgliedschaften - {{projectName}}",
"ADD_BUTTON": "+ Neues Mitglied",
"ADD_BUTTON_TITLE": "Neues Mitglied hinzufügen"
"ADD_BUTTON_TITLE": "Neues Mitglied hinzufügen",
"LIMIT_USERS_WARNING_MESSAGE_FOR_ADMIN": "Unfortunately, this project has reached its limit of <strong>({{members}})</strong> allowed members.",
"LIMIT_USERS_WARNING_MESSAGE_FOR_OWNER": "This project has reached its limit of <strong>({{members}})</strong> allowed members. If you would like to increase that limit please contact the administrator."
},
"PROJECT_EXPORT": {
"TITLE": "Exportieren",
"SUBTITLE": "Exportieren Sie Ihr Projekt, um ein Backup durchzuführen, oder ein neues, darauf basierendes, zu erstellen. ",
"SUBTITLE": "Exportieren Sie Ihr Projekt, um ein Backup durchzuführen, oder ein neues, darauf basierendes, zu erstellen.",
"EXPORT_BUTTON": "Exportieren",
"EXPORT_BUTTON_TITLE": "Exportieren Sie Ihr Projekt",
"LOADING_TITLE": "Wir erzeugen die Exportdatei",
"DUMP_READY": "Ihre Export-Datei ist fertig! ",
"DUMP_READY": "Ihre Export-Datei ist fertig!",
"LOADING_MESSAGE": "Bitte lassen Sie diese Seite geöffnet!",
"ASYNC_MESSAGE": "Wir werden nach Fertigstellung eine E-Mail senden.",
"SYNC_MESSAGE": "Wenn der Download nicht automatisch startet, klicken Sie <a href='{{url}}' download title='Download the dump file'>hier</a>.",
"ERROR": "Unsere Helferlein haben Probleme, Ihre Export-Datei zu erzeugen. Bitte versuchen Sie es erneut.",
"ERROR_BUSY": "Entschuldigung, unsere Helferlein sind zur Zeit sehr beschäftigt. Bitte versuchen Sie es in ein paar Minuten erneut. ",
"ERROR_MESSAGE": "Unsere Helferlein haben Probleme, Ihre Export-Datei zu erstellen: {{message}} "
"ERROR_BUSY": "Entschuldigung, unsere Helferlein sind zur Zeit sehr beschäftigt. Bitte versuchen Sie es in ein paar Minuten erneut.",
"ERROR_MESSAGE": "Unsere Helferlein haben Probleme, Ihre Export-Datei zu erstellen: {{message}}"
},
"MODULES": {
"TITLE": "Module",
"ENABLE": "Aktivieren",
"DISABLE": "Deaktivieren",
"BACKLOG": "Auftragsliste",
"BACKLOG_DESCRIPTION": "Verwalten Sie Ihre User-Stories, um einen organisierten Überblick der anstehenden und priorisierten Aufgaben zu erhalten. ",
"BACKLOG_DESCRIPTION": "Verwalten Sie Ihre User-Stories, um einen organisierten Überblick der anstehenden und priorisierten Aufgaben zu erhalten.",
"NUMBER_SPRINTS": "Expected number of sprints",
"NUMBER_SPRINTS_HELP": "0 for an undetermined number",
"NUMBER_US_POINTS": "Expected total of story points",
"NUMBER_US_POINTS_HELP": "0 for an undetermined number",
"KANBAN": "Kanban",
"KANBAN_DESCRIPTION": "Organisieren Sie Ihr Projekt auf übersichtliche Art.",
"ISSUES": "Tickets",
"ISSUES_DESCRIPTION": "Verfolgen Sie Fehler, Fragen und Verbesserungen, die mit Ihrem Projekt verbunden sind. Vermissen Sie nichts! ",
"ISSUES_DESCRIPTION": "Verfolgen Sie Fehler, Fragen und Verbesserungen, die mit Ihrem Projekt verbunden sind. Vermissen Sie nichts!",
"WIKI": "Wiki",
"WIKI_DESCRIPTION": "Fügen Sie Inhalte hinzu, ändern oder löschen Sie sie in Zusammenarbeit mit anderen. Dies ist der richtige Ort für Ihre Projektdokumentation.",
"MEETUP": "Zusammentreffen",
"MEETUP_DESCRIPTION": "Wählen Sie Ihr Videokonferenzsystem. Auch Entwickler brauchen Kontakt von Angesicht zu Angesicht. ",
"MEETUP_DESCRIPTION": "Choose your videoconference system.",
"SELECT_VIDEOCONFERENCE": "Wählen Sie ein Videokonferenzsystem",
"SALT_CHAT_ROOM": "Wenn Sie möchten, können Sie einen Salt Code zum Namen des Chatrooms hinzufügen",
"SALT_CHAT_ROOM": "Add a prefix to the chatroom name",
"JITSI_CHAT_ROOM": "Jitsi",
"APPEARIN_CHAT_ROOM": "Erscheint in",
"TALKY_CHAT_ROOM": "Gesprächig",
@ -449,36 +458,45 @@
"PROJECT_DETAILS": "Projekt Details",
"PROJECT_NAME": "Projektname",
"PROJECT_SLUG": "Projekt Slug",
"NUMBER_SPRINTS": "Anzahl von Sprints (0 für unbegrenzte Anzahl)",
"NUMBER_US_POINTS": "Anzahl an US Points (0 für unbegrenzte Anzahl)",
"TAGS": "Schlagwörter",
"DESCRIPTION": "Beschreibung",
"RECRUITING": "Is this project looking for people?",
"RECRUITING_MESSAGE": "Who are you looking for?",
"RECRUITING_PLACEHOLDER": "Define the profiles you are looking for",
"PUBLIC_PROJECT": "Öffentliches Projekt",
"PUBLIC_PROJECT_DESC": "Users will be able to find and view your project",
"PRIVATE_PROJECT": "Privates Projekt",
"PRIVATE_PROJECT_DESC": "By default, this project will be hidden to the public",
"PRIVATE_OR_PUBLIC": "What's the difference between public and private projects?",
"PRIVATE_OR_PUBLIC": "Was ist der Unterschied zwischen öffentlichen und privaten Projekten?",
"DELETE": "Dieses Projekt löschen",
"LOGO_HELP": "The image will be scaled to 80x80px.",
"CHANGE_LOGO": "Change logo",
"ACTION_USE_DEFAULT_LOGO": "Use default image"
"LOGO_HELP": "Das Bild wird auf 80x80px skaliert.",
"CHANGE_LOGO": "Logo ändern",
"ACTION_USE_DEFAULT_LOGO": "Nutze Standardbild",
"MAX_PRIVATE_PROJECTS": "You've reached the maximum number of private projects allowed by your current plan",
"MAX_PRIVATE_PROJECTS_MEMBERS": "The maximum number of members for private projects has been exceeded",
"MAX_PUBLIC_PROJECTS": "Unfortunately, you've reached the maximum number of public projects allowed by your current plan",
"MAX_PUBLIC_PROJECTS_MEMBERS": "The project exceeds your maximum number of members for public projects",
"PROJECT_OWNER": "Project owner",
"REQUEST_OWNERSHIP": "Request ownership",
"REQUEST_OWNERSHIP_CONFIRMATION_TITLE": "Do you want to become the new project owner?",
"REQUEST_OWNERSHIP_DESC": "Request that current project owner {{name}} transfer ownership of this project to you.",
"REQUEST_OWNERSHIP_BUTTON": "Anfrage",
"REQUEST_OWNERSHIP_SUCCESS": "We'll notify the project owner",
"CHANGE_OWNER": "Change owner",
"CHANGE_OWNER_SUCCESS_TITLE": "Ok, your request has been sent!",
"CHANGE_OWNER_SUCCESS_DESC": "We will notify you by email if the project ownership request is accepted or declined"
},
"REPORTS": {
"TITLE": "Berichte",
"SUBTITLE": "Exportieren Sie Ihre Projektdaten in CSV Format und erstellen Sie Ihre eigenen Berichte. ",
"SUBTITLE": "Exportieren Sie Ihre Projektdaten in CSV Format und erstellen Sie Ihre eigenen Berichte.",
"DESCRIPTION": "Laden Sie eine CSV-Datei herunter oder kopieren Sie die generierte URL und öffnen Sie sie in Ihrem Lieblingstexteditor oder Tabellenkalkulationsprogramm um Ihre eigenen Projektdaten Berichte zu erstellen. So können Sie Ihre Daten einfach visualisieren und analysieren.",
"HELP": "Wie kann ich dies in meiner eigenen Tabellenkalkulation nutzen?",
"REGENERATE_TITLE": "Die URL ändern",
"REGENERATE_SUBTITLE": "Sie sind im Begriff, die CSV data access URL zu ändern. Die vorherige URL wird deaktiviert. Sind Sie sicher?"
},
"CSV": {
"SECTION_TITLE_US": "User-Stories Berichte ",
"SECTION_TITLE_US": "User-Stories Berichte",
"SECTION_TITLE_TASK": "Aufgabenberichte",
"SECTION_TITLE_ISSUE": "Ticket Berichte ",
"DOWNLOAD": "CSV herunterladen ",
"SECTION_TITLE_ISSUE": "Ticket Berichte",
"DOWNLOAD": "CSV herunterladen",
"URL_FIELD_PLACEHOLDER": "Bitte erstellen Sie die CSV URL neu",
"TITLE_REGENERATE_URL": "Erstellen Sie die CSV URL neu",
"ACTION_GENERATE_URL": "URL erzeugen",
@ -486,16 +504,17 @@
},
"CUSTOM_FIELDS": {
"TITLE": "Benutzerfelder",
"SUBTITLE": "Spezifizieren Sie die Benutzerfelder für Ihre User-Stories, Aufgaben und Tickets. ",
"SUBTITLE": "Spezifizieren Sie die Benutzerfelder für Ihre User-Stories, Aufgaben und Tickets.",
"US_DESCRIPTION": "Benutzerdefinierte Felder der User-Story",
"US_ADD": "Benutzerdefiniertes Feld bei User-Stories hinzufügen",
"TASK_DESCRIPTION": "Aufgaben benutzerdefinierte Felder",
"TASK_ADD": "Fügen Sie ein benutzerdefiniertes Feld bei Aufgaben hinzu",
"ISSUE_DESCRIPTION": "Tickets benutzerdefinierte Felder",
"ISSUE_ADD": "Fügen Sie den Tickets ein benutzerdefiniertes Feld hinzu ",
"ISSUE_ADD": "Fügen Sie den Tickets ein benutzerdefiniertes Feld hinzu",
"FIELD_TYPE_TEXT": "Text",
"FIELD_TYPE_MULTI": "Mehrzeilig",
"FIELD_TYPE_DATE": "Datum"
"FIELD_TYPE_DATE": "Datum",
"FIELD_TYPE_URL": "Url"
},
"PROJECT_VALUES": {
"PAGE_TITLE": "{{sectionName}} - Projekt Werte - {{projectName}}",
@ -522,7 +541,7 @@
},
"PROJECT_VALUES_STATUS": {
"TITLE": "Status",
"SUBTITLE": "Spezifizieren Sie die Status, die Ihre User-Stories, Aufgaben und Tickets durchlaufen werden. ",
"SUBTITLE": "Spezifizieren Sie die Status, die Ihre User-Stories, Aufgaben und Tickets durchlaufen werden.",
"US_TITLE": "User-Story Status",
"TASK_TITLE": "Aufgaben-Status",
"ISSUE_TITLE": "Ticket-Status"
@ -535,21 +554,21 @@
},
"ROLES": {
"PAGE_TITLE": "Rollen - {{projectName}}",
"WARNING_NO_ROLE": "Beachten Sie, keine Rolle in Ihrem Projekt wird in der Lage sein, die Punktevergabe für User-Stories einzuschätzen. ",
"HELP_ROLE_ENABLED": "Wenn Sie dies freischalten, werden Mitglieder, denen diese Rolle zugewiesen ist, in der Lage sein, die Punktevergabe für User-Stories vorzunehmen. ",
"WARNING_NO_ROLE": "Beachten Sie, keine Rolle in Ihrem Projekt wird in der Lage sein, die Punktevergabe für User-Stories einzuschätzen.",
"HELP_ROLE_ENABLED": "Wenn Sie dies freischalten, werden Mitglieder, denen diese Rolle zugewiesen ist, in der Lage sein, die Punktevergabe für User-Stories vorzunehmen.",
"DISABLE_COMPUTABLE_ALERT_TITLE": "Deaktiviere Estimatepoints für diese Rolle",
"DISABLE_COMPUTABLE_ALERT_SUBTITLE": "Wenn du die Estimatepoints für die Rolle {{roleName}} deaktivierst, werden alle bisherigen gelöscht",
"DISABLE_COMPUTABLE_ALERT_MESSAGE": "<strong>Bist du sicher, dass in dieser Rolle Estimatepoints deaktivieren möchtest?</strong>",
"COUNT_MEMBERS": "{{ role.members_count }} Mitglieder mit dieser Rolle",
"TITLE_DELETE_ROLE": "Rolle löschen",
"REPLACEMENT_ROLE": "Alle Benutzer mit dieser Rolle werden verschoben nach ",
"WARNING_DELETE_ROLE": "<strong>Vorsicht, alle Rollen Bewertungen werden entfernt</strong>",
"REPLACEMENT_ROLE": "Alle Benutzer mit dieser Rolle werden verschoben nach",
"WARNING_DELETE_ROLE": "Be careful! All role estimations will be removed",
"ERROR_DELETE_ALL": "Sie können nicht alle Werte löschen",
"EXTERNAL_USER": "Externer Benutzer"
},
"THIRD_PARTIES": {
"SECRET_KEY": "Geheimschlüssel",
"PAYLOAD_URL": "Payload URL ",
"PAYLOAD_URL": "Payload URL",
"VALID_IPS": "Gültige Quell-IPs (getrennt von ,)"
},
"BITBUCKET": {
@ -574,7 +593,7 @@
"TYPE_NAME": "Servicename...",
"TYPE_PAYLOAD_URL": "Geben Sie die Service Payload URL ein",
"TYPE_SERVICE_SECRET": "Sicherheitsschlüssel...",
"SAVE": "Webhook sichern ",
"SAVE": "Webhook sichern",
"CANCEL": "Webhook beenden",
"SHOW_HISTORY": "(Chronik anzeigen)",
"TEST": "Webhook Test",
@ -615,18 +634,18 @@
"DELETE_MEMBER": "Mitglied löschen",
"RESEND": "Neu&nbsp;senden",
"SUCCESS_SEND_INVITATION": "Wir haben die Einladung erneut versandt an '{{email}}'.",
"ERROR_SEND_INVITATION": "Wir haben die Einladung nicht versandt. ",
"ERROR_SEND_INVITATION": "Wir haben die Einladung nicht versandt.",
"SUCCESS_DELETE": "Gelöscht {{message}}.",
"ERROR_DELETE": "Das Löschen ist fehlgeschlagen {{message}}.",
"DEFAULT_DELETE_MESSAGE": "die Einladung an {{email}}"
},
"DEFAULT_VALUES": {
"LABEL_POINTS": "Vorgegebener Wert für Punkteauswahl",
"LABEL_US": "Vorgegebener Wert für User-Story-Status Auswahl ",
"LABEL_US": "Vorgegebener Wert für User-Story-Status Auswahl",
"LABEL_TASK_STATUS": "Vorgegebene Auswahl für den Aufgaben-Status",
"LABEL_PRIORITY": "Vorgegebener Wert für Prioritätsauswahl",
"LABEL_SEVERITY": "Vorgegebener Wert für Gewichtungsauswahl",
"LABEL_ISSUE_TYPE": "Vorgegebener Wert für Ticketartauswahl ",
"LABEL_ISSUE_TYPE": "Vorgegebener Wert für Ticketartauswahl",
"LABEL_ISSUE_STATUS": "Vorgegebene Auswahl für den Ticket-Status"
},
"STATUS": {
@ -642,7 +661,7 @@
"PLACEHOLDER_WRITE_NAME": "Benennen Sie den neuen Status"
},
"MENU": {
"TITLE": "Administrator ",
"TITLE": "Administrator",
"PROJECT": "Projekt",
"ATTRIBUTES": "Attribute",
"MEMBERS": "Mitglieder",
@ -671,6 +690,24 @@
},
"SUBMENU_THIDPARTIES": {
"TITLE": "Dienste"
},
"PROJECT_TRANSFER": {
"DO_YOU_ACCEPT_PROJECT_OWNERNSHIP": "Would you like to become the new project owner?",
"PRIVATE": "Private",
"ACCEPTED_PROJECT_OWNERNSHIP": "Congratulations! You're now the new project owner.",
"REJECTED_PROJECT_OWNERNSHIP": "OK. We'll contact the current project owner",
"ACCEPT": "Akzeptieren",
"REJECT": "Reject",
"PROPOSE_OWNERSHIP": "<strong>{{owner}}</strong>, the current owner of the project <strong>{{project}}</strong> has asked that you become the new project owner.",
"ADD_COMMENT_QUESTION": "Would you like to send a question to the project owner?",
"ADD_COMMENT": "Would you like to add a comment for the project owner?",
"UNLIMITED_PROJECTS": "Unlimited",
"OWNER_MESSAGE": {
"PRIVATE": "Please remember that you can own up to <strong>{{maxProjects}}</strong> private projects. You currently own <strong>{{currentProjects}}</strong> private projects",
"PUBLIC": "Please remember that you can own up to <strong>{{maxProjects}}</strong> public projects. You currently own <strong>{{currentProjects}}</strong> public projects"
},
"CANT_BE_OWNED": "At the moment you cannot become an owner of a project of this type. If you would like to become the owner of this project, please contact the administrator so they change your account settings to enable project ownership.",
"CHANGE_MY_PLAN": "Change my plan"
}
},
"USER": {
@ -683,11 +720,11 @@
"PROJECTS_EMPTY": "{{username}} besitzt noch keine Projekte",
"CONTACTS": "Kontakte",
"CONTACTS_EMPTY": "{{username}} hat noch keine Kontakte",
"CURRENT_USER_CONTACTS_EMPTY": "Sie haben noch keine Kontakte ",
"CURRENT_USER_CONTACTS_EMPTY_EXPLAIN": "Die Leute, mit denen Sie auf Taiga zusammenarbeiten, werden automatisch zu Ihren Kontakten ",
"REPORT": "Missbrauch melden ",
"CURRENT_USER_CONTACTS_EMPTY": "Sie haben noch keine Kontakte",
"CURRENT_USER_CONTACTS_EMPTY_EXPLAIN": "Die Leute, mit denen Sie auf Taiga zusammenarbeiten, werden automatisch zu Ihren Kontakten",
"REPORT": "Missbrauch melden",
"TABS": {
"ACTIVITY_TAB": "Zeitlinie ",
"ACTIVITY_TAB": "Zeitlinie",
"ACTIVITY_TAB_TITLE": "Alle Aktivitäten dieses Benutzers anzeigen",
"PROJECTS_TAB": "Projekte",
"PROJECTS_TAB_TITLE": "Liste alle Projekte auf, bei denen der Benutzer Mitglied ist",
@ -704,7 +741,7 @@
"PROFILE_SIDEBAR": {
"TITLE": "Dein Profil",
"DESCRIPTION": "Da andere Mitglieder sehen, dass sie ebenfalls an einem Projekt arbeiten wäre es schön, wenn Sie ein paar Informationen zu Ihrer Person angeben.",
"ADD_INFO": "Bio bearbeiten"
"ADD_INFO": "Biographie bearbeiten"
},
"PROFILE_FAVS": {
"FILTER_INPUT_PLACEHOLDER": "Geben sie etwas ein...",
@ -727,19 +764,24 @@
"SECTION_PROJECTS": "Projekte",
"HELP": "Sortieren Sie Ihre Projekte nach Wichtigkeit.<br/> Die ersten 10 Projekte erscheinen prominent in der Projektliste der Navigationsleiste.",
"PRIVATE": "Privates Projekt",
"LOOKING_FOR_PEOPLE": "This project is looking for people",
"FANS_COUNTER_TITLE": "{total, plural, one{ein Fan} other{# Fans}}",
"WATCHERS_COUNTER_TITLE": "{total, plural, one{ein Beobachter} other{# Beobachter}}",
"MEMBERS_COUNTER_TITLE": "{total, plural, one{one member} other{# members}}",
"LOOKING_FOR_PEOPLE": "Dieses Projekt sucht nach Mitarbeitern",
"FANS_COUNTER_TITLE": "{total, plural, one{ein Fan} andere{# Fans}}",
"WATCHERS_COUNTER_TITLE": "{total, plural, one{ein Beobachter} andere{# Beobachter}}",
"MEMBERS_COUNTER_TITLE": "{total, plural, one{one member} andere{# members}}",
"BLOCKED_PROJECT": {
"BLOCKED": "Blocked project",
"THIS_PROJECT_IS_BLOCKED": "This project is temporarily blocked",
"TO_UNBLOCK_CONTACT_THE_ADMIN_STAFF": "In order to unblock your projects, contact the administrator."
},
"STATS": {
"PROJECT": "Projekt<br/> Punkte",
"DEFINED": "definierte<br/> Punkte",
"ASSIGNED": "zugewiesene<br/> Punkte",
"CLOSED": "geschlossen<br/> Punkte"
"CLOSED": "geschlossene<br/> Punkte"
},
"SECTION": {
"SEARCH": "Suche",
"TIMELINE": "Zeitlinie ",
"TIMELINE": "Zeitlinie",
"BACKLOG": "Auftragsliste",
"KANBAN": "Kanban",
"ISSUES": "Tickets",
@ -753,7 +795,7 @@
"PLACEHOLDER_SEARCH": "Suchen...",
"ACTION_CREATE_PROJECT": "Projekt anlegen",
"ACTION_IMPORT_PROJECT": "Projekt importieren",
"MANAGE_PROJECTS": "Manage projects",
"MANAGE_PROJECTS": "Projekte verwalten",
"TITLE_CREATE_PROJECT": "Projekt anlegen",
"TITLE_IMPORT_PROJECT": "Projekt importieren",
"TITLE_PRVIOUS_PROJECT": "Frühere Projekte anzeigen",
@ -771,12 +813,13 @@
"SETTINGS": "Einstellungen",
"VIEW_PROFILE_TITLE": "Profil ansehen",
"VIEW_PROFILE": "Profil ansehen",
"EDIT_PROFILE_TITLE": "Bearbeiten Sie Ihr Profil ",
"EDIT_PROFILE_TITLE": "Bearbeiten Sie Ihr Profil",
"EDIT_PROFILE": "Profil bearbeiten",
"CHANGE_PASSWORD_TITLE": "Passwort ändern",
"CHANGE_PASSWORD": "Passwort ändern",
"DASHBOARD_TITLE": "Dashboard",
"DISCOVER_TITLE": "Entdecke aktuelle Projekte",
"NEW_ITEM": "Neu",
"DISCOVER": "Entdecken",
"ACTION_REORDER": "Benutzen Sie Drag & Drop zum neuen Ordnen"
},
@ -787,11 +830,36 @@
"ASYNC_IN_PROGRESS_TITLE": "Unsere Helferlein importieren Ihr Projekt",
"ASYNC_IN_PROGRESS_MESSAGE": "Dieser Vorgang könnte ein paar Minuten benötigen <br/> Nach Fertigstellung benachrichtigen wir Sie per E-Mail.",
"UPLOAD_IN_PROGRESS_MESSAGE": "Hochgeladen {{uploadedSize}} von {{totalSize}}",
"ERROR": "Unsere Helferlein haben Probleme beim Importieren Ihrer Daten. Bitte versuchen Sie es erneut. ",
"ERROR_TOO_MANY_REQUEST": "Entschuldigung, unsere Helferlein sind derzeit sehr beschäftigt. Bitte versuchen Sie es in ein paar Minuten erneut. ",
"ERROR": "Unsere Helferlein haben Probleme beim Importieren Ihrer Daten. Bitte versuchen Sie es erneut.",
"ERROR_TOO_MANY_REQUEST": "Entschuldigung, unsere Helferlein sind derzeit sehr beschäftigt. Bitte versuchen Sie es in ein paar Minuten erneut.",
"ERROR_MESSAGE": "Unsere Helferlein haben Probleme beim Importieren Ihrer Datei: {{error_message}}",
"ERROR_MAX_SIZE_EXCEEDED": "'{{fileName}}' ({{fileSize}}) ist zu schwierig für unsere Helferlein, versuchen Sie es bitte mit einer kleineren Datei als ({{maxFileSize}})",
"SYNC_SUCCESS": "Ihr Projekt wurde erfolgreich importiert"
"SYNC_SUCCESS": "Ihr Projekt wurde erfolgreich importiert",
"PROJECT_RESTRICTIONS": {
"PROJECT_MEMBERS_DESC": "The project you are trying to import has {{members}} members, unfortunately, your current plan allows for a maximum of {{max_memberships}} members per project. If you would like to increase that limit please contact the administrator.",
"PRIVATE_PROJECTS_SPACE": {
"TITLE": "Unfortunately, your current plan does not allow for additional private projects",
"DESC": "The project you are trying to import is private. Unfortunately, your current plan does not allow for additional private projects."
},
"PUBLIC_PROJECTS_SPACE": {
"TITLE": "Unfortunately, your current plan does not allow for additional private projects",
"DESC": "The project you are trying to import is public. Unfortunately, your current plan does not allow additional public projects."
},
"PRIVATE_PROJECTS_MEMBERS": {
"TITLE": "Your current plan allows for a maximum of {{max_memberships}} members per private project"
},
"PUBLIC_PROJECTS_MEMBERS": {
"TITLE": "Your current plan allows for a maximum of {{max_memberships}} members per public project."
},
"PRIVATE_PROJECTS_SPACE_MEMBERS": {
"TITLE": "Unfortunately your current plan doesn't allow additional private projects or an increase of more than {{max_memberships}} members per private project",
"DESC": "The project that you are trying to import is private and has {{members}} members."
},
"PUBLIC_PROJECTS_SPACE_MEMBERS": {
"TITLE": "Unfortunately your current plan doesn't allow additional public projects or an increase of more than {{max_memberships}} members per public project",
"DESC": "The project that you are trying to import is public and has more than {{members}} members."
}
}
},
"LIKE_BUTTON": {
"LIKE": "Gefällt mir",
@ -819,8 +887,11 @@
"DELETE_ACCOUNT": {
"SECTION_NAME": "Dein Taiga Benutzerkonto löschen",
"CONFIRM": "Sind Sie sicher, dass Sie Ihr Taiga Benutzerkonto löschen wollen?",
"SUBTITLE": "Wir werden Sie vermissen! :-(",
"NEWSLETTER_LABEL_TEXT": "Ich möchte keinen Newsletter mehr erhalten"
"NEWSLETTER_LABEL_TEXT": "Ich möchte keinen Newsletter mehr erhalten",
"CANCEL": "Back to settings",
"ACCEPT": "Delete account",
"BLOCK_PROJECT": "Note that all the projects you own projects will be <strong>blocked</strong> after you delete your account. If you do want a project blocked, transfer ownership to another member of each project prior to deleting your account.",
"SUBTITLE": "Sorry to see you go. We'll be here if you should ever consider us again! :("
},
"DELETE_PROJECT": {
"TITLE": "Projekt löschen",
@ -876,7 +947,25 @@
},
"CREATE_MEMBER": {
"PLACEHOLDER_INVITATION_TEXT": "(Optional) Fügen Sie einen persönlichen Text zur Einladung hinzu. Erzählen Sie Ihren neuen Mitgliedern etwas Schönes. ;-)",
"PLACEHOLDER_TYPE_EMAIL": "Geben Sie eine E-Mail ein"
"PLACEHOLDER_TYPE_EMAIL": "Geben Sie eine E-Mail ein",
"LIMIT_USERS_WARNING_MESSAGE_FOR_OWNER": "Unfortunately, this project can't have more than <strong>{{maxMembers}}</strong> members.<br> If you would like to increase the current limit, please contact the administrator.",
"LIMIT_USERS_WARNING_MESSAGE": "Unfortunately, this project can't have more than <strong>{{maxMembers}}</strong> members."
},
"LEAVE_PROJECT_WARNING": {
"TITLE": "Unfortunately, this project can't be left without an owner",
"CURRENT_USER_OWNER": {
"DESC": "You are the current owner of this project. Before leaving, please transfer ownership to someone else.",
"BUTTON": "Change the project owner"
},
"OTHER_USER_OWNER": {
"DESC": "Unfortunately, you can't delete a member who is also the current project owner. First, please assign a new project owner.",
"BUTTON": "Request project owner change"
}
},
"CHANGE_OWNER": {
"TITLE": "Who do you want to be the new project owner?",
"ADD_COMMENT": "Add comment",
"BUTTON": "Ask this project member to become the new project owner"
}
},
"US": {
@ -888,7 +977,7 @@
"TOTAL_POINTS": "Gesamtpunkte",
"ADD": "+ Neue User-Story anlegen",
"ADD_BULK": "Mehrere neue User-Stories hinzufügen",
"PROMOTED": "Diese User-Story entstand aus Ticket: ",
"PROMOTED": "Diese User-Story entstand aus Ticket:",
"TITLE_LINK_GO_TO_ISSUE": "Zum Ticket wechseln",
"EXTERNAL_REFERENCE": "Dies User-Story wurde angelegt von",
"GO_TO_EXTERNAL_REFERENCE": "Zur Quelle wechseln",
@ -903,7 +992,7 @@
"TOTAL_US_POINTS": "User-Story-Punkte insgesamt",
"FIELDS": {
"TEAM_REQUIREMENT": "Team Anforderung",
"CLIENT_REQUIREMENT": "Kundenanforderung ",
"CLIENT_REQUIREMENT": "Kundenanforderung",
"FINISH_DATE": "Endtermin"
}
},
@ -914,7 +1003,7 @@
"TYPE_NEW_COMMENT": "Geben Sie hier einen neuen Kommentar ein",
"SHOW_DELETED": "Gelöschten Kommentar anzeigen",
"HIDE_DELETED": "Gelöschten Kommentar ausblenden",
"DELETE": "Delete comment",
"DELETE": "Kommentar löschen",
"RESTORE": "Kommentar wiederherstellen"
},
"ACTIVITY": {
@ -928,7 +1017,7 @@
"NEW_ATTACHMENT": "Neuer Anhang",
"DELETED_ATTACHMENT": "Gelöschter Anhang",
"UPDATED_ATTACHMENT": "aktualisierter Anhang {{filename}}",
"DELETED_CUSTOM_ATTRIBUTE": "gelöschtes Kundenattribut ",
"DELETED_CUSTOM_ATTRIBUTE": "gelöschtes Kundenattribut",
"SIZE_CHANGE": "Machte {size, plural, one{eine Änderung} other{# Änderungen}}",
"VALUES": {
"YES": "ja",
@ -950,14 +1039,14 @@
"ASSIGNED_TO": "zugewiesen an",
"WATCHERS": "Beobachter",
"MILESTONE": "Sprint",
"USER_STORY": "User-Story ",
"USER_STORY": "User-Story",
"PROJECT": "Projekt",
"IS_BLOCKED": "wird blockiert",
"BLOCKED_NOTE": "Blockierungsgrund",
"POINTS": "Punkte",
"CLIENT_REQUIREMENT": "Kunden Anforderung ",
"TEAM_REQUIREMENT": "Team Anforderung ",
"IS_IOCAINE": "ist Iocaine ",
"CLIENT_REQUIREMENT": "Kunden Anforderung",
"TEAM_REQUIREMENT": "Team Anforderung",
"IS_IOCAINE": "ist Iocaine",
"TAGS": "Schlagwörter",
"ATTACHMENTS": "Anhänge",
"IS_DEPRECATED": "ist veraltet",
@ -975,7 +1064,7 @@
"SECTION_NAME": "Auftragsliste",
"CUSTOMIZE_GRAPH": "Personalisiere deinen Backloggraph",
"CUSTOMIZE_GRAPH_TEXT": "Um schöne Graphen, die Dir bei der Entwicklung Deines Projekts helfen, zu sehen, musst du Estimatepoints und Sprints einstellen",
"CUSTOMIZE_GRAPH_ADMIN": "Administrator ",
"CUSTOMIZE_GRAPH_ADMIN": "Administrator",
"CUSTOMIZE_GRAPH_TITLE": "Stelle Points und Sprints über das Adminpanel ein",
"MOVE_US_TO_CURRENT_SPRINT": "Zum aktuellen Sprint wechseln",
"MOVE_US_TO_LATEST_SPRINT": "Move to latest Sprint",
@ -985,14 +1074,14 @@
"CREATE_NEW_US": "Eine neue User-Story anlegen",
"CREATE_NEW_US_EMPTY_HELP": "Sie sollten eine User-Story anlegen",
"EXCESS_OF_POINTS": "Punkte Überschuss",
"PENDING_POINTS": "Unerledigte Punkte ",
"PENDING_POINTS": "Unerledigte Punkte",
"CLOSED_POINTS": "geschlossen",
"COMPACT_SPRINT": "Kompakt Sprint ",
"COMPACT_SPRINT": "Kompakt Sprint",
"GO_TO_TASKBOARD": "Gehen Sie zum Taskboard von {{::name}}",
"EDIT_SPRINT": "Sprint bearbeiten",
"TOTAL_POINTS": "insgesamt",
"STATUS_NAME": "Status Bezeichnung",
"SORTABLE_FILTER_ERROR": "Es ist kein Drag & Drop über dem Backlog möglich wenn Filter geöffnet sind.",
"SORTABLE_FILTER_ERROR": "Es ist kein Drag & Drop über dem Backlog möglich, wenn Filter geöffnet sind.",
"DOOMLINE": "Projekt Umfang [Doomline]",
"CHART": {
"XAXIS_LABEL": "Sprints",
@ -1027,7 +1116,7 @@
"POINTS_PER_SPRINT": "Punkte /<br />Sprint"
},
"FILTERS": {
"TOGGLE": "Filter sichtbar schalten ",
"TOGGLE": "Filter sichtbar schalten",
"TITLE": "Filter",
"REMOVE": "Filter entfernen",
"HIDE": "Filter verbergen",
@ -1037,13 +1126,13 @@
},
"SPRINTS": {
"TITLE": "SPRINTS",
"DATE": "DD MMM YYYY",
"DATE": "TT MMM JJJJ",
"LINK_TASKBOARD": "Sprint Taskboard",
"TITLE_LINK_TASKBOARD": "Gehe zu Taskboard von \"{{name}}\"",
"NUMBER_SPRINTS": "<br/>Sprints",
"EMPTY": "Derzeit sind keine Sprints vorhanden",
"WARNING_EMPTY_SPRINT_ANONYMOUS": "This sprint has no User Stories",
"WARNING_EMPTY_SPRINT": "Ziehe Stories aus deiner Auftragsliste her um einen neuen Sprint zu starten",
"WARNING_EMPTY_SPRINT_ANONYMOUS": "Dieser Sprint enthält keiner User Stories",
"WARNING_EMPTY_SPRINT": "Ziehe Stories aus deiner Auftragsliste her, um einen neuen Sprint zu starten",
"TITLE_ACTION_NEW_SPRINT": "Neuen Sprint hinzufügen",
"TEXT_ACTION_NEW_SPRINT": "Du möchtest einen neuen Sprint in Deinem Projekt erstellen",
"ACTION_SHOW_CLOSED_SPRINTS": "Geschlossene Sprints anzeigen",
@ -1053,7 +1142,7 @@
"ERROR": {
"TEXT1": "Es gibt ein Problem und unsere Helferlein arbeiten schon daran!",
"NOT_FOUND": "Nicht gefunden",
"NOT_FOUND_TEXT": "Fehler 404. Die angeforderte Seite existiert nicht mehr. Möglicherweise finden Sie das Gesuchte, wenn Sie zur TAIGA Homepage zurückkehren. ",
"NOT_FOUND_TEXT": "Fehler 404. Die angeforderte Seite existiert nicht mehr. Möglicherweise finden Sie das Gesuchte, wenn Sie zur TAIGA Homepage zurückkehren.",
"PERMISSION_DENIED": "Berechtigung verweigert",
"PERMISSION_DENIED_TEXT": "Sie haben nicht die Berechtigung um auf diese Seite zuzugreifen",
"VERSION_ERROR": "Jemand anderes hat dies schon geändert und unsere Helferlein können Ihre Änderungen deshalb nicht übernehmen. Bitte laden Sie die Seite neu und machen Sie die Änderungen erneut (die aktuelle Eingabe geht dabei verloren)."
@ -1093,9 +1182,9 @@
"TITLE_LINK_TASKBOARD": "Zu Taskboard wechseln",
"PLACEHOLDER_SUBJECT": "Betreff...",
"TITLE_SELECT_STATUS": "Status Bezeichnung",
"OWNER_US": "Diese Aufgabe gehört zu ",
"OWNER_US": "Diese Aufgabe gehört zu",
"TITLE_LINK_GO_OWNER": "Zur User-Story wechseln",
"ORIGIN_US": "Diese Aufgabe wurde erstellt durch ",
"ORIGIN_US": "Diese Aufgabe wurde erstellt durch",
"TITLE_LINK_GO_ORIGIN": "Zu User-Story wechseln",
"BLOCKED": "Diese Aufgabe wird blockiert",
"PREVIOUS": "vorherige Aufgabe",
@ -1113,7 +1202,7 @@
"NOTIFICATION": {
"OK": "Alles in Ordnung",
"WARNING": "Huch, es gibt ein Problem...",
"WARNING_TEXT": "Unsere Helferlein bedauern, Ihre Änderungen wurden nicht gespeichert! ",
"WARNING_TEXT": "Unsere Helferlein bedauern, Ihre Änderungen wurden nicht gespeichert!",
"SAVED": "Die Helferlein haben Ihre Änderungen gespeichert!",
"CLOSE": "Benachrichtigung schließen",
"MAIL": "Benachrichtigungen per Mail",
@ -1123,12 +1212,12 @@
"TITLE": "Ihr Benutzerkonto löschen",
"SUBTITLE": "Wir bedauern, dass Sie die Taiga verlassen. Wir hoffen, Sie hatten einen angenehmen Aufenthalt. :)",
"PLACEHOLDER_INPUT_TOKEN": "Benutzerkonto Token ungültig machen",
"ACTION_LEAVING": "Ja, ich gehe! ",
"SUCCESS": "Unsere Helferlein haben Ihr Benutzerkonto entfernt. "
"ACTION_LEAVING": "Ja, ich gehe!",
"SUCCESS": "Unsere Helferlein haben Ihr Benutzerkonto entfernt."
},
"CHANGE_EMAIL_FORM": {
"TITLE": "Ändern Sie Ihre E-Mail",
"SUBTITLE": "Noch ein Klick und Ihre E-Mail wird aktualisiert! ",
"SUBTITLE": "Noch ein Klick und Ihre E-Mail wird aktualisiert!",
"PLACEHOLDER_INPUT_TOKEN": "E-Mail-Token ändern",
"ACTION_CHANGE_EMAIL": "E-Mail ändern",
"SUCCESS": "Unsere Helferlein haben Ihre E-Mail-Adresse aktualisiert"
@ -1138,14 +1227,14 @@
"PAGE_DESCRIPTION": "Das Ticket-Listen Panel des Projekts {{projectName}}: {{projectDescription}}",
"LIST_SECTION_NAME": "Tickets",
"SECTION_NAME": "Ticket Details",
"ACTION_NEW_ISSUE": "+ NEUES TICKET ",
"ACTION_NEW_ISSUE": "+ NEUES TICKET",
"ACTION_PROMOTE_TO_US": "Zur User-Story aufwerten",
"PLACEHOLDER_FILTER_NAME": "Benennen Sie den Filter und drücken Sie die Eingabetaste",
"PROMOTED": "Dieses Ticket wurde aufgewertet zu User-Story:",
"EXTERNAL_REFERENCE": "Dieses Ticket wurde erstellt durch ",
"EXTERNAL_REFERENCE": "Dieses Ticket wurde erstellt durch",
"GO_TO_EXTERNAL_REFERENCE": "Zur Quelle wechseln",
"BLOCKED": "Dieses Ticket wird blockiert",
"TITLE_PREVIOUS_ISSUE": "vorheriges Ticket ",
"TITLE_PREVIOUS_ISSUE": "vorheriges Ticket",
"TITLE_NEXT_ISSUE": "nächstes Ticket",
"ACTION_DELETE": "Ticket löschen",
"LIGHTBOX_TITLE_BLOKING_ISSUE": "Blockierendes Ticket",
@ -1192,7 +1281,7 @@
"ASSIGNED_TO": "Zugeordnet"
},
"TITLE_ACTION_CHANGE_STATUS": "Status wechseln",
"TITLE_ACTION_ASSIGNED_TO": "Zugeordnet zu ",
"TITLE_ACTION_ASSIGNED_TO": "Zugeordnet zu",
"BLOCKED": "Blockiert",
"EMPTY": {
"TITLE": "Es gibt keine Probleme zu berichten :-)",
@ -1216,9 +1305,9 @@
"TITLE_ACTION_ADD_BULK": "Neue Menge hinzufügen",
"ACTION_SHOW_ARCHIVED": "Archivierte anzeigen",
"ACTION_HIDE_ARCHIVED": "Archivierte verbergen",
"HIDDEN_USER_STORIES": "Die User-Stories in diesem Status werden automatisch verborgen ",
"HIDDEN_USER_STORIES": "Die User-Stories in diesem Status werden automatisch verborgen",
"ARCHIVED": "Sie haben es archiviert",
"UNDO_ARCHIVED": "Wiederholen Sie Drag & Drop zum Rückgängigmachen ",
"UNDO_ARCHIVED": "Wiederholen Sie Drag & Drop zum Rückgängigmachen",
"PLACEHOLDER_CARD_TITLE": "Dies sind deine User Stories",
"PLACEHOLDER_CARD_TEXT": "Stories können Unteraufgaben für weitere Anforderungen haben"
},
@ -1231,7 +1320,7 @@
"FILTER_WIKI": "Wiki Seiten",
"PLACEHOLDER_SEARCH": "Suchen in...",
"TITLE_ACTION_SEARCH": "suchen",
"EMPTY_TITLE": "Es sieht so aus, als könnte unter Ihren Suchkriterien nichts gefunden werden. ",
"EMPTY_TITLE": "Es sieht so aus, als könnte unter Ihren Suchkriterien nichts gefunden werden.",
"EMPTY_DESCRIPTION": "Vielleicht versuchen Sie es mit einem der oberen Reiter, oder Sie suchen erneut"
},
"TEAM": {
@ -1242,12 +1331,12 @@
"PLACEHOLDER_INPUT_SEARCH": "Unter Anzeigenamen suchen...",
"COLUMN_MR_WOLF": "Herr Wolf",
"EXPLANATION_COLUMN_MR_WOLF": "Geschlossene Tickets",
"COLUMN_IOCAINE": "Locaine Trinker ",
"EXPLANATION_COLUMN_IOCAINE": "Locaine Dosen eingenommen ",
"COLUMN_IOCAINE": "Locaine Trinker",
"EXPLANATION_COLUMN_IOCAINE": "Locaine Dosen eingenommen",
"COLUMN_CERVANTES": "Cervantes",
"EXPLANATION_COLUMN_CERVANTES": "Wiki Seiten geändert",
"COLUMN_BUG_HUNTER": "Bug-Jäger",
"EXPLANATION_COLUMN_BUG_HUNTER": "Gemeldete Tickets ",
"EXPLANATION_COLUMN_BUG_HUNTER": "Gemeldete Tickets",
"COLUMN_NIGHT_SHIFT": "Nachtschicht",
"EXPLANATION_COLUMN_NIGHT_SHIFT": "Aufgaben geschlossen",
"COLUMN_TOTAL_POWER": "Gesamtleistung",
@ -1263,13 +1352,13 @@
"SECTION_TITLE": "Benutzereinstellungen",
"USER_PROFILE": "Benutzerprofil",
"CHANGE_PASSWORD": "Passwort ändern",
"EMAIL_NOTIFICATIONS": "E-Mail Benachrichtigungen "
"EMAIL_NOTIFICATIONS": "E-Mail Benachrichtigungen"
},
"NOTIFICATIONS": {
"SECTION_NAME": "E-Mail-Benachrichtigungen",
"COLUMN_PROJECT": "Projekt",
"COLUMN_RECEIVE_ALL": "Alle erhalten",
"COLUMN_ONLY_INVOLVED": "Nur Einbezogene ",
"COLUMN_ONLY_INVOLVED": "Nur Einbezogene",
"COLUMN_NO_NOTIFICATIONS": "Keine Benachrichtigungen",
"OPTION_ALL": "Alle",
"OPTION_INVOLVED": "Beteiligt",
@ -1280,7 +1369,7 @@
"CHANGE_PASSWORD": "Passwort ändern",
"NOTIFICATIONS": "Benachrichtigungen",
"FEEDBACK": "Feedback",
"TITLE_AVATAR": "Benutzereinstellungen "
"TITLE_AVATAR": "Benutzereinstellungen"
}
},
"USER_PROFILE": {
@ -1304,18 +1393,24 @@
}
},
"WIZARD": {
"SECTION_TITLE_CHOOSE_TEMPLATE": "Wählen Sie ein Template",
"CHOOSE_TEMPLATE_TEXT": "Welches Template würde besser zu Ihrem Projekt passen?",
"SECTION_TITLE_CREATE_PROJECT": "Projekt erstellen",
"CREATE_PROJECT_TEXT": "Frisch und sauber. Wie aufregend! ",
"PROGRESS_TEMPLATE_SELECTION": "Template Auswahl ",
"PROGRESS_NAME_DESCRIPTION": "Name und Beschreibung"
"CREATE_PROJECT_TEXT": "Frisch und sauber. Wie aufregend!",
"CHOOSE_TEMPLATE": "Which template fits your project best?",
"CHOOSE_TEMPLATE_TITLE": "More info about project templates",
"CHOOSE_TEMPLATE_INFO": "More info",
"PROJECT_DETAILS": "Project Details",
"PUBLIC_PROJECT": "Public Project",
"PRIVATE_PROJECT": "Private Project",
"CREATE_PROJECT": "Projekt anlegen",
"MAX_PRIVATE_PROJECTS": "You've reached the maximum number of private projects",
"MAX_PUBLIC_PROJECTS": "Unfortunately, you've reached the maximum number of public projects",
"CHANGE_PLANS": "change plans"
},
"WIKI": {
"PAGE_TITLE": "{{wikiPageName}} - Wiki - {{projectName}}",
"PAGE_DESCRIPTION": "Letzte Bearbeitung am {{lastModifiedDate}} ({{totalEditions}} Gesamtzahl der Bearbeitungen) Inhalt: {{ wikiPageContent }}",
"DATETIME": "DD MMM YYYY HH:mm",
"PLACEHOLDER_PAGE": "Schreiben Sie Ihre Wiki Seite ",
"DATETIME": "TT MMM JJJJ hh:mm",
"PLACEHOLDER_PAGE": "Schreiben Sie Ihre Wiki Seite",
"REMOVE": "Diese Wiki Seite entfernen",
"DELETE_LIGHTBOX_TITLE": "Wiki Seite löschen",
"NAVIGATION": {
@ -1330,21 +1425,21 @@
},
"HINTS": {
"SECTION_NAME": "Hinweis",
"LINK": "Mehr dazu auf unserer Support Seite ",
"LINK": "Mehr dazu auf unserer Support Seite",
"LINK_TITLE": "Besuchen Sie unsere Support Seite",
"HINT1_TITLE": "Wussten Sie, dass Sie Projekte importieren und exportieren?",
"HINT1_TEXT": "Dies erlaubt Ihnen, alle Ihre Daten zu extrahieren und sie von einer Taiga zur nächsten zu transportieren",
"HINT2_TITLE": "Wussten Sie, dass Sie benutzerdefinierte Felder erstellen können?",
"HINT2_TEXT": "Teams können nun benutzerdefinierte Felder anlegen, um Werte einzugeben, die für Ihren Workflow wichtig sind.",
"HINT3_TITLE": "Sortiere Deine Projekte, um Dir vor allem die anzuzeigen, die relevant für Dich sind.",
"HINT3_TEXT": "Die 10 Projekt sind in der Zugriffsleiste am oberen Bildschirmrand aufgelistet. ",
"HINT3_TEXT": "Die 10 Projekt sind in der Zugriffsleiste am oberen Bildschirmrand aufgelistet.",
"HINT4_TITLE": "Did you forget what were you working on?",
"HINT4_TEXT": "Machen Sie sich keine Sorgen, im Dashboard finden Sie Aufgaben, Tickets und User-Stories in der Reihenfolge in der Sie diese bearbeitet haben."
},
"TIMELINE": {
"UPLOAD_ATTACHMENT": "{{username}} fügte {{obj_name}} einen neuen Anhang zu",
"US_CREATED": "{{username}} erstellte die neue User-Story {{obj_name}} in {{project_name}}",
"ISSUE_CREATED": "{{username}} erstellte das neue Ticket {{obj_name}} in {{project_name}} ",
"ISSUE_CREATED": "{{username}} erstellte das neue Ticket {{obj_name}} in {{project_name}}",
"TASK_CREATED": "{{username}} erstellte die neue Aufgabe {{obj_name}} in {{project_name}}",
"TASK_CREATED_WITH_US": "{{username}} erstellte die neue Aufgabe {{obj_name}} in {{project_name}}, die zur User-Story {{us_name}} gehört",
"WIKI_CREATED": "{{username}} erstellte die neue Wiki Seite {{obj_name}} in {{project_name}}",
@ -1380,14 +1475,14 @@
"PAGE_DESCRIPTION": "Eine externe Anwendung benötigt eine Genehmigung",
"AUTHORIZATION_REQUEST": "{{application}} erlauben ihren Taiga Account zu benutzen?",
"LOGIN_WITH_ANOTHER_USER": "Mit einem anderen Benutzer einloggen.",
"AUTHORIZE_APP": "App autorisieren",
"AUTHORIZE_APP": "Anwendung autorisieren",
"CANCEL": "Abbrechen"
},
"JOYRIDE": {
"NAV": {
"NEXT": "Weiter",
"BACK": "Back",
"SKIP": "Skip",
"BACK": "Zurück",
"SKIP": "Überspringen",
"DONE": "Erledigt"
},
"DASHBOARD": {
@ -1397,7 +1492,7 @@
},
"STEP2": {
"TITLE": "Zuletzt bearbeitet",
"TEXT": "Here wirst du deine User Stories, Tasks und Issues sehen, an denen du arbeitest."
"TEXT": "Hier wirst du deine User Stories, Tasks und Issues sehen, an denen du arbeitest."
},
"STEP3": {
"TITLE": "Beobachtet",
@ -1455,7 +1550,7 @@
"MOST_LIKED": "Most liked",
"MOST_LIKED_EMPTY": "There are no LIKED projects yet",
"VIEW_MORE": "View more",
"RECRUITING": "This project is looking for people",
"RECRUITING": "Dieses Projekt sucht nach Mitarbeitern",
"FEATURED": "Featured Projects",
"EMPTY": "There are no projects to show with this search criteria.<br> Try again!",
"FILTERS": {
@ -1463,18 +1558,18 @@
"KANBAN": "Kanban",
"SCRUM": "Scrum",
"PEOPLE": "Looking for people",
"WEEK": "Last week",
"MONTH": "Last month",
"YEAR": "Last year",
"WEEK": "Letzte Woche",
"MONTH": "Letzter Monat",
"YEAR": "Letztes Jahr",
"ALL_TIME": "All time",
"CLEAR": "Clear filters"
"CLEAR": "Filter zurücksetzen"
},
"SEARCH": {
"PAGE_TITLE": "Search - Discover projects - Taiga",
"PAGE_DESCRIPTION": "Searchable directory of Public Projects in Taiga. Explore backlogs, timelines, issues, and teams. Check out the most liked or most active projects. Filter by Kanban or Scrum.",
"INPUT_PLACEHOLDER": "Geben sie etwas ein...",
"ACTION_TITLE": "Suche",
"RESULTS": "Search results"
"RESULTS": "Suchergebnisse"
}
}
}

View File

@ -41,7 +41,8 @@
"IOCAINE_TEXT": "Feeling a bit overwhelmed by a task? Make sure others know about it by clicking on Iocaine when editing a task. It's possible to become immune to this (fictional) deadly poison by consuming small amounts over time just as it's possible to get better at what you do by occasionally taking on extra challenges!",
"CLIENT_REQUIREMENT": "Client requirement is new requirement that was not previously expected and it is required to be part of the project",
"TEAM_REQUIREMENT": "Team requirement is a requirement that must exist in the project but should have no cost for the client",
"CAPSLOCK_WARNING": "Be careful! You're writing with capital letters and this input is case sensitive.",
"OWNER": "Project Owner",
"CAPSLOCK_WARNING": "Be careful! You are using capital letters in an input field that is case sensitive.",
"FORM_ERRORS": {
"DEFAULT_MESSAGE": "This value seems to be invalid.",
"TYPE_EMAIL": "This value should be a valid email.",
@ -65,7 +66,9 @@
"MIN_CHECK": "You must select at least %s choices.",
"MAX_CHECK": "You must select %s choices or less.",
"RANGE_CHECK": "You must select between %s and %s choices.",
"EQUAL_TO": "This value should be the same."
"EQUAL_TO": "This value should be the same.",
"LINEWIDTH": "One or more lines is perhaps too long. Try to keep under %s characters.",
"PIKADAY": "Invalid date format, please use DD MMM YYYY (like 23 Mar 1984)"
},
"PICKERDATE": {
"FORMAT": "DD MMM YYYY",
@ -315,7 +318,8 @@
"PLACEHOLDER_FIELD": "Username or email",
"ACTION_RESET_PASSWORD": "Reset Password",
"LINK_CANCEL": "Nah, take me back. I think I remember it.",
"SUCCESS": "<strong>Check your inbox!</strong><br />We have sent you an email with the instructions to set a new password",
"SUCCESS_TITLE": "Check your inbox!",
"SUCCESS_TEXT": "We sent you an email with the instructions to set a new password",
"ERROR": "According to our Oompa Loompas, your are not registered yet."
},
"CHANGE_PASSWORD": {
@ -405,7 +409,9 @@
"TITLE": "Manage members",
"PAGE_TITLE": "Memberships - {{projectName}}",
"ADD_BUTTON": "+ New member",
"ADD_BUTTON_TITLE": "Add new member"
"ADD_BUTTON_TITLE": "Add new member",
"LIMIT_USERS_WARNING_MESSAGE_FOR_ADMIN": "Unfortunately, this project has reached its limit of <strong>({{members}})</strong> allowed members.",
"LIMIT_USERS_WARNING_MESSAGE_FOR_OWNER": "This project has reached its limit of <strong>({{members}})</strong> allowed members. If you would like to increase that limit please contact the administrator."
},
"PROJECT_EXPORT": {
"TITLE": "Export",
@ -427,6 +433,10 @@
"DISABLE": "Disable",
"BACKLOG": "Backlog",
"BACKLOG_DESCRIPTION": "Manage your user stories to maintain an organized view of upcoming and prioritized work.",
"NUMBER_SPRINTS": "Expected number of sprints",
"NUMBER_SPRINTS_HELP": "0 for an undetermined number",
"NUMBER_US_POINTS": "Expected total of story points",
"NUMBER_US_POINTS_HELP": "0 for an undetermined number",
"KANBAN": "Kanban",
"KANBAN_DESCRIPTION": "Organize your project in a lean way with this board.",
"ISSUES": "Issues",
@ -434,9 +444,9 @@
"WIKI": "Wiki",
"WIKI_DESCRIPTION": "Add, modify, or delete content in collaboration with others. This is the right place for your project documentation.",
"MEETUP": "Meet Up",
"MEETUP_DESCRIPTION": "Choose your videoconference system. Even developers need face to face contact.",
"MEETUP_DESCRIPTION": "Choose your videoconference system.",
"SELECT_VIDEOCONFERENCE": "Select a videoconference system",
"SALT_CHAT_ROOM": "If you want you can append a salt code to the name of the chat room",
"SALT_CHAT_ROOM": "Add a prefix to the chatroom name",
"JITSI_CHAT_ROOM": "Jitsi",
"APPEARIN_CHAT_ROOM": "AppearIn",
"TALKY_CHAT_ROOM": "Talky",
@ -448,22 +458,31 @@
"PROJECT_DETAILS": "Project details",
"PROJECT_NAME": "Project name",
"PROJECT_SLUG": "Project slug",
"NUMBER_SPRINTS": "Number of sprints (0 for an undetermined quantity)",
"NUMBER_US_POINTS": "Number of US points (0 for an undetermined quantity)",
"TAGS": "Tags",
"DESCRIPTION": "Description",
"RECRUITING": "Is this project looking for people?",
"RECRUITING_MESSAGE": "Who are you looking for?",
"RECRUITING_PLACEHOLDER": "Define the profiles you are looking for",
"PUBLIC_PROJECT": "Public project",
"PUBLIC_PROJECT_DESC": "Users will be able to find and view your project",
"PRIVATE_PROJECT": "Private project",
"PRIVATE_PROJECT_DESC": "By default, this project will be hidden to the public",
"PRIVATE_OR_PUBLIC": "What's the difference between public and private projects?",
"DELETE": "Delete this project",
"LOGO_HELP": "The image will be scaled to 80x80px.",
"CHANGE_LOGO": "Change logo",
"ACTION_USE_DEFAULT_LOGO": "Use default image"
"ACTION_USE_DEFAULT_LOGO": "Use default image",
"MAX_PRIVATE_PROJECTS": "You've reached the maximum number of private projects allowed by your current plan",
"MAX_PRIVATE_PROJECTS_MEMBERS": "The maximum number of members for private projects has been exceeded",
"MAX_PUBLIC_PROJECTS": "Unfortunately, you've reached the maximum number of public projects allowed by your current plan",
"MAX_PUBLIC_PROJECTS_MEMBERS": "The project exceeds your maximum number of members for public projects",
"PROJECT_OWNER": "Project owner",
"REQUEST_OWNERSHIP": "Request ownership",
"REQUEST_OWNERSHIP_CONFIRMATION_TITLE": "Do you want to become the new project owner?",
"REQUEST_OWNERSHIP_DESC": "Request that current project owner {{name}} transfer ownership of this project to you.",
"REQUEST_OWNERSHIP_BUTTON": "Request",
"REQUEST_OWNERSHIP_SUCCESS": "We'll notify the project owner",
"CHANGE_OWNER": "Change owner",
"CHANGE_OWNER_SUCCESS_TITLE": "Ok, your request has been sent!",
"CHANGE_OWNER_SUCCESS_DESC": "We will notify you by email if the project ownership request is accepted or declined"
},
"REPORTS": {
"TITLE": "Reports",
@ -494,7 +513,8 @@
"ISSUE_ADD": "Add a custom field in issues",
"FIELD_TYPE_TEXT": "Text",
"FIELD_TYPE_MULTI": "Multi-line",
"FIELD_TYPE_DATE": "Date"
"FIELD_TYPE_DATE": "Date",
"FIELD_TYPE_URL": "Url"
},
"PROJECT_VALUES": {
"PAGE_TITLE": "{{sectionName}} - Project values - {{projectName}}",
@ -542,7 +562,7 @@
"COUNT_MEMBERS": "{{ role.members_count }} members with this role",
"TITLE_DELETE_ROLE": "Delete Role",
"REPLACEMENT_ROLE": "All the users with this role will be moved to",
"WARNING_DELETE_ROLE": "<strong>Be careful, all role estimations will be removed</strong>",
"WARNING_DELETE_ROLE": "Be careful! All role estimations will be removed",
"ERROR_DELETE_ALL": "You can't delete all values",
"EXTERNAL_USER": "External user"
},
@ -670,6 +690,24 @@
},
"SUBMENU_THIDPARTIES": {
"TITLE": "Services"
},
"PROJECT_TRANSFER": {
"DO_YOU_ACCEPT_PROJECT_OWNERNSHIP": "Would you like to become the new project owner?",
"PRIVATE": "Private",
"ACCEPTED_PROJECT_OWNERNSHIP": "Congratulations! You're now the new project owner.",
"REJECTED_PROJECT_OWNERNSHIP": "OK. We'll contact the current project owner",
"ACCEPT": "Accept",
"REJECT": "Reject",
"PROPOSE_OWNERSHIP": "<strong>{{owner}}</strong>, the current owner of the project <strong>{{project}}</strong> has asked that you become the new project owner.",
"ADD_COMMENT_QUESTION": "Would you like to send a question to the project owner?",
"ADD_COMMENT": "Would you like to add a comment for the project owner?",
"UNLIMITED_PROJECTS": "Unlimited",
"OWNER_MESSAGE": {
"PRIVATE": "Please remember that you can own up to <strong>{{maxProjects}}</strong> private projects. You currently own <strong>{{currentProjects}}</strong> private projects",
"PUBLIC": "Please remember that you can own up to <strong>{{maxProjects}}</strong> public projects. You currently own <strong>{{currentProjects}}</strong> public projects"
},
"CANT_BE_OWNED": "At the moment you cannot become an owner of a project of this type. If you would like to become the owner of this project, please contact the administrator so they change your account settings to enable project ownership.",
"CHANGE_MY_PLAN": "Change my plan"
}
},
"USER": {
@ -730,6 +768,11 @@
"FANS_COUNTER_TITLE": "{total, plural, one{one fan} other{# fans}}",
"WATCHERS_COUNTER_TITLE": "{total, plural, one{one watcher} other{# watchers}}",
"MEMBERS_COUNTER_TITLE": "{total, plural, one{one member} other{# members}}",
"BLOCKED_PROJECT": {
"BLOCKED": "Blocked project",
"THIS_PROJECT_IS_BLOCKED": "This project is temporarily blocked",
"TO_UNBLOCK_CONTACT_THE_ADMIN_STAFF": "In order to unblock your projects, contact the administrator."
},
"STATS": {
"PROJECT": "project<br/> points",
"DEFINED": "defined<br/> points",
@ -776,6 +819,7 @@
"CHANGE_PASSWORD": "Change password",
"DASHBOARD_TITLE": "Dashboard",
"DISCOVER_TITLE": "Discover trending projects",
"NEW_ITEM": "New",
"DISCOVER": "Discover",
"ACTION_REORDER": "Drag & drop to reorder"
},
@ -790,7 +834,32 @@
"ERROR_TOO_MANY_REQUEST": "Sorry, our Oompa Loompas are very busy right now. Please try again in a few minutes.",
"ERROR_MESSAGE": "Our Oompa Loompas have some problems importing your dump data: {{error_message}}",
"ERROR_MAX_SIZE_EXCEEDED": "'{{fileName}}' ({{fileSize}}) is too heavy for our Oompa Loompas, try it with a smaller than ({{maxFileSize}})",
"SYNC_SUCCESS": "Your project has been imported successfuly"
"SYNC_SUCCESS": "Your project has been imported successfuly",
"PROJECT_RESTRICTIONS": {
"PROJECT_MEMBERS_DESC": "The project you are trying to import has {{members}} members, unfortunately, your current plan allows for a maximum of {{max_memberships}} members per project. If you would like to increase that limit please contact the administrator.",
"PRIVATE_PROJECTS_SPACE": {
"TITLE": "Unfortunately, your current plan does not allow for additional private projects",
"DESC": "The project you are trying to import is private. Unfortunately, your current plan does not allow for additional private projects."
},
"PUBLIC_PROJECTS_SPACE": {
"TITLE": "Unfortunately, your current plan does not allow for additional private projects",
"DESC": "The project you are trying to import is public. Unfortunately, your current plan does not allow additional public projects."
},
"PRIVATE_PROJECTS_MEMBERS": {
"TITLE": "Your current plan allows for a maximum of {{max_memberships}} members per private project"
},
"PUBLIC_PROJECTS_MEMBERS": {
"TITLE": "Your current plan allows for a maximum of {{max_memberships}} members per public project."
},
"PRIVATE_PROJECTS_SPACE_MEMBERS": {
"TITLE": "Unfortunately your current plan doesn't allow additional private projects or an increase of more than {{max_memberships}} members per private project",
"DESC": "The project that you are trying to import is private and has {{members}} members."
},
"PUBLIC_PROJECTS_SPACE_MEMBERS": {
"TITLE": "Unfortunately your current plan doesn't allow additional public projects or an increase of more than {{max_memberships}} members per public project",
"DESC": "The project that you are trying to import is public and has more than {{members}} members."
}
}
},
"LIKE_BUTTON": {
"LIKE": "Like",
@ -818,9 +887,11 @@
"DELETE_ACCOUNT": {
"SECTION_NAME": "Delete Taiga Account",
"CONFIRM": "Are you sure you want to delete your Taiga account?",
"SUBTITLE": "We're going to miss you! :-(",
"NEWSLETTER_LABEL_TEXT": "I don't wanna receive your newsletter anymore"
"NEWSLETTER_LABEL_TEXT": "I don't wanna receive your newsletter anymore",
"CANCEL": "Back to settings",
"ACCEPT": "Delete account",
"BLOCK_PROJECT": "Note that all the projects you own projects will be <strong>blocked</strong> after you delete your account. If you do want a project blocked, transfer ownership to another member of each project prior to deleting your account. ",
"SUBTITLE": "Sorry to see you go. We'll be here if you should ever consider us again! :("
},
"DELETE_PROJECT": {
"TITLE": "Delete project",
@ -855,7 +926,7 @@
"PLACEHOLDER_SPRINT_END": "Estimated End",
"ACTION_DELETE_SPRINT": "Do you want to delete this sprint?",
"TITLE_ACTION_DELETE_SPRINT": "delete sprint",
"LAST_SPRINT_NAME": " last sprint is <strong> {{lastSprint}} ;-) </strong>"
"LAST_SPRINT_NAME": "last sprint is <strong> {{lastSprint}} ;-) </strong>"
},
"CREATE_EDIT_TASK": {
"TITLE": "New task",
@ -876,13 +947,30 @@
},
"CREATE_MEMBER": {
"PLACEHOLDER_INVITATION_TEXT": "(Optional) Add a personalized text to the invitation. Tell something lovely to your new members ;-)",
"PLACEHOLDER_TYPE_EMAIL": "Type an Email"
"PLACEHOLDER_TYPE_EMAIL": "Type an Email",
"LIMIT_USERS_WARNING_MESSAGE_FOR_OWNER": "Unfortunately, this project can't have more than <strong>{{maxMembers}}</strong> members.<br> If you would like to increase the current limit, please contact the administrator.",
"LIMIT_USERS_WARNING_MESSAGE": "Unfortunately, this project can't have more than <strong>{{maxMembers}}</strong> members."
},
"LEAVE_PROJECT_WARNING": {
"TITLE": "Unfortunately, this project can't be left without an owner",
"CURRENT_USER_OWNER": {
"DESC": "You are the current owner of this project. Before leaving, please transfer ownership to someone else.",
"BUTTON": "Change the project owner"
},
"OTHER_USER_OWNER": {
"DESC": "Unfortunately, you can't delete a member who is also the current project owner. First, please assign a new project owner.",
"BUTTON": "Request project owner change"
}
},
"CHANGE_OWNER": {
"TITLE": "Who do you want to be the new project owner?",
"ADD_COMMENT": "Add comment",
"BUTTON": "Ask this project member to become the new project owner"
}
},
"US": {
"PAGE_TITLE": "{{userStorySubject}} - User Story {{userStoryRef}} - {{projectName}}",
"PAGE_DESCRIPTION": "Status: {{userStoryStatus }}. Completed {{userStoryProgressPercentage}}% ({{userStoryClosedTasks}} of {{userStoryTotalTasks}} tasks closed). Points: {{userStoryPoints}}. Description: {{userStoryDescription}}",
"SECTION_NAME": "User story details",
"LINK_TASKBOARD": "Taskboard",
"TITLE_LINK_TASKBOARD": "Go to the taskboard",
@ -938,36 +1026,36 @@
"UNASSIGNED": "unassigned"
},
"FIELDS": {
"SUBJECT" : "subject",
"SUBJECT": "subject",
"NAME": "name",
"DESCRIPTION" : "description",
"DESCRIPTION": "description",
"CONTENT": "content",
"STATUS": "status",
"IS_CLOSED" : "is closed",
"FINISH_DATE" : "finish date",
"IS_CLOSED": "is closed",
"FINISH_DATE": "finish date",
"TYPE": "type",
"PRIORITY": "priority",
"SEVERITY": "severity",
"ASSIGNED_TO" : "assigned to",
"WATCHERS" : "watchers",
"MILESTONE" : "sprint",
"ASSIGNED_TO": "assigned to",
"WATCHERS": "watchers",
"MILESTONE": "sprint",
"USER_STORY": "user story",
"PROJECT": "project",
"IS_BLOCKED": "is blocked",
"BLOCKED_NOTE": "blocked note",
"POINTS": "points",
"CLIENT_REQUIREMENT" : "client requirement",
"TEAM_REQUIREMENT" : "team requirement",
"CLIENT_REQUIREMENT": "client requirement",
"TEAM_REQUIREMENT": "team requirement",
"IS_IOCAINE": "is iocaine",
"TAGS": "tags",
"ATTACHMENTS" : "attachments",
"ATTACHMENTS": "attachments",
"IS_DEPRECATED": "is deprecated",
"ORDER" : "order",
"BACKLOG_ORDER" : "backlog order",
"SPRINT_ORDER" : "sprint order",
"KANBAN_ORDER" : "kanban order",
"TASKBOARD_ORDER" : "taskboard order",
"US_ORDER" : "us order"
"ORDER": "order",
"BACKLOG_ORDER": "backlog order",
"SPRINT_ORDER": "sprint order",
"KANBAN_ORDER": "kanban order",
"TASKBOARD_ORDER": "taskboard order",
"US_ORDER": "us order"
}
},
"BACKLOG": {
@ -987,11 +1075,10 @@
"CREATE_NEW_US_EMPTY_HELP": "You may want to create a new user story",
"EXCESS_OF_POINTS": "Excess of points",
"PENDING_POINTS": "Pending Points",
"CLOSED_POINTS": "Closed points",
"CLOSED_POINTS": "closed",
"COMPACT_SPRINT": "Compact Sprint",
"GO_TO_TASKBOARD": "Go to the taskboard of {{::name}}",
"EDIT_SPRINT": "Edit Sprint",
"CLOSED_POINTS": "closed",
"TOTAL_POINTS": "total",
"STATUS_NAME": "Status Name",
"SORTABLE_FILTER_ERROR": "You can't drop on backlog when filters are open",
@ -1062,7 +1149,7 @@
},
"TASKBOARD": {
"PAGE_TITLE": "{{sprintName}} - Sprint taskboard - {{projectName}}",
"PAGE_DESCRIPTION": "Sprint {{sprintName}} (from {{startDate}} to {{endDate}}) of {{projectName}}. Completed {{completedPercentage}}% ({{completedPoints}} of {{totalPoints}} points). {{openTasks}} opened tasks of {{totalTasks}}." ,
"PAGE_DESCRIPTION": "Sprint {{sprintName}} (from {{startDate}} to {{endDate}}) of {{projectName}}. Completed {{completedPercentage}}% ({{completedPoints}} of {{totalPoints}} points). {{openTasks}} opened tasks of {{totalTasks}}.",
"SECTION_NAME": "Taskboard",
"TITLE_ACTION_ADD": "Add a new Task",
"TITLE_ACTION_ADD_BULK": "Add some new Tasks in bulk",
@ -1306,12 +1393,18 @@
}
},
"WIZARD": {
"SECTION_TITLE_CHOOSE_TEMPLATE": "Choose a template",
"CHOOSE_TEMPLATE_TEXT": "Which template would fit better in your project?",
"SECTION_TITLE_CREATE_PROJECT": "Create Project",
"CREATE_PROJECT_TEXT": "Fresh and clean. So exciting!",
"PROGRESS_TEMPLATE_SELECTION": "Template selection",
"PROGRESS_NAME_DESCRIPTION": "Name and description"
"CHOOSE_TEMPLATE": "Which template fits your project best?",
"CHOOSE_TEMPLATE_TITLE": "More info about project templates",
"CHOOSE_TEMPLATE_INFO": "More info",
"PROJECT_DETAILS": "Project Details",
"PUBLIC_PROJECT": "Public Project",
"PRIVATE_PROJECT": "Private Project",
"CREATE_PROJECT": "Create project",
"MAX_PRIVATE_PROJECTS": "You've reached the maximum number of private projects",
"MAX_PUBLIC_PROJECTS": "Unfortunately, you've reached the maximum number of public projects",
"CHANGE_PLANS": "change plans"
},
"WIKI": {
"PAGE_TITLE": "{{wikiPageName}} - Wiki - {{projectName}}",

View File

@ -41,7 +41,8 @@
"IOCAINE_TEXT": "¿Te sientes fuera de tu zona de confort en una tarea? Asegúrate de que los demás están al tanto de ello, marca el check de la Iocaína al editar una tarea. Igual eu era posible llegar a ser inmune a este veneno mortal a base de consumir pequeñas dosis a lo largo del tiempo, es posible conseguir mejor en lo que estás haciendo si afrontas de vez en cuando esta clase de retos!",
"CLIENT_REQUIREMENT": "Requerimiento de cliente es un nuevo requisito que no se esperaba y es necesario que forme parte del proyecto.",
"TEAM_REQUIREMENT": "Requerimiento del equipo es un nuevo requisito que debe existir en el proyecto pero que no conllevará ningún coste para el cliente.",
"CAPSLOCK_WARNING": "¡Ten cuidado! Usted está escribiendo con mayúsculas y esta entrada es sensible a mayúsculas.",
"OWNER": "Project Owner",
"CAPSLOCK_WARNING": "Be careful! You are using capital letters in an input field that is case sensitive.",
"FORM_ERRORS": {
"DEFAULT_MESSAGE": "Este valor parece inválido.",
"TYPE_EMAIL": "El valor debe ser un email.",
@ -65,7 +66,9 @@
"MIN_CHECK": "Debes seleccionar al menos %s.",
"MAX_CHECK": "Debes seleccionar %s o menos.",
"RANGE_CHECK": "Debes seleccionar de %s a %s.",
"EQUAL_TO": "Este valor debe ser el mismo."
"EQUAL_TO": "Este valor debe ser el mismo.",
"LINEWIDTH": "One or more lines is perhaps too long. Try to keep under %s characters.",
"PIKADAY": "Invalid date format, please use DD MMM YYYY (like 23 Mar 1984)"
},
"PICKERDATE": {
"FORMAT": "DD MMM YYYY",
@ -315,7 +318,8 @@
"PLACEHOLDER_FIELD": "Nombre de usuario o email",
"ACTION_RESET_PASSWORD": "Restablecer Contraseña",
"LINK_CANCEL": "Nah, llévame de vuelta, creo que lo recordé.",
"SUCCESS": "<strong>¡Revisa tu bandeja de entrada!</strong><br />Te hemos enviado un mail con las instrucciones necesarias para restablecer tu contraseña\n",
"SUCCESS_TITLE": "Check your inbox!",
"SUCCESS_TEXT": "We sent you an email with the instructions to set a new password",
"ERROR": "Según nuestros Oompa Loompas tú no estás registrado"
},
"CHANGE_PASSWORD": {
@ -373,7 +377,6 @@
"DEPRECATED_FILE": "¿Desactualizado?",
"ADD": "Agrega nuevos adjunto. {{maxFileSizeMsg}}",
"DROP": "¡Arrastre los archivos adjuntos aquí!",
"MAX_FILE_SIZE": "[Tamaño Max. : {{maxFileSize}}]",
"SHOW_DEPRECATED": "+ muestra adjuntos desactualizados",
"HIDE_DEPRECATED": "- ocultar adjuntos obsoletos",
"COUNT_DEPRECATED": "({{ counter }} obsoletos)\n",
@ -406,7 +409,9 @@
"TITLE": "Administrar miembros",
"PAGE_TITLE": "Miembros - {{projectName}}",
"ADD_BUTTON": "+ Nuevo miembro",
"ADD_BUTTON_TITLE": "Añadir un nuevo miembro"
"ADD_BUTTON_TITLE": "Añadir un nuevo miembro",
"LIMIT_USERS_WARNING_MESSAGE_FOR_ADMIN": "Unfortunately, this project has reached its limit of <strong>({{members}})</strong> allowed members.",
"LIMIT_USERS_WARNING_MESSAGE_FOR_OWNER": "This project has reached its limit of <strong>({{members}})</strong> allowed members. If you would like to increase that limit please contact the administrator."
},
"PROJECT_EXPORT": {
"TITLE": "Exportar",
@ -428,6 +433,10 @@
"DISABLE": "Desactivado",
"BACKLOG": "Backlog",
"BACKLOG_DESCRIPTION": "Gestiona tus historias de usuario para mantener una vista organizada y priorizada de los próximos trabajos que deberás afrontar. ",
"NUMBER_SPRINTS": "Expected number of sprints",
"NUMBER_SPRINTS_HELP": "0 for an undetermined number",
"NUMBER_US_POINTS": "Expected total of story points",
"NUMBER_US_POINTS_HELP": "0 for an undetermined number",
"KANBAN": "Kanban",
"KANBAN_DESCRIPTION": "Organiza tus proyectos de una manera flexible con este panel.",
"ISSUES": "Peticiones",
@ -435,9 +444,9 @@
"WIKI": "Wiki",
"WIKI_DESCRIPTION": "Añade, modifica o borra contenido en colaboración con otros miembros. Este es el lugar adecuado para la documentación de tu proyecto.",
"MEETUP": "Meet Up",
"MEETUP_DESCRIPTION": "Elige tu sistema de videoconferencia. Incluso los desarrolladores necesitan el contacto cara a cara.",
"MEETUP_DESCRIPTION": "Choose your videoconference system.",
"SELECT_VIDEOCONFERENCE": "Elige un sistema de videoconferencia",
"SALT_CHAT_ROOM": "Puedes añadirle un código salt al nombre del chat room",
"SALT_CHAT_ROOM": "Add a prefix to the chatroom name",
"JITSI_CHAT_ROOM": "Jitsi",
"APPEARIN_CHAT_ROOM": "AppearIn",
"TALKY_CHAT_ROOM": "Talky",
@ -449,22 +458,31 @@
"PROJECT_DETAILS": "Info del proyecto",
"PROJECT_NAME": "Nombre del proyecto",
"PROJECT_SLUG": "Slug de proyecto",
"NUMBER_SPRINTS": "Número de sprints (0 para cantidad indeterminada)",
"NUMBER_US_POINTS": "Número de puntos de historias de usuario (0 para indeterminado)",
"TAGS": "Etiquetas",
"DESCRIPTION": "Descripción",
"RECRUITING": "¿Este proyecto está buscando a gente?",
"RECRUITING_MESSAGE": "¿Qué estás buscando?",
"RECRUITING_PLACEHOLDER": "Define el perfil de lo que estás buscando",
"PUBLIC_PROJECT": "Proyecto público",
"PUBLIC_PROJECT_DESC": "Los usuarios serán capaces de encontrar y ver tu proyecto",
"PRIVATE_PROJECT": "Proyecto privado",
"PRIVATE_PROJECT_DESC": "Este proyecto estará oculto al público por defecto.",
"PRIVATE_OR_PUBLIC": "¿Cuál es la diferencia entre proyecto público y privado?",
"DELETE": "Eliminar este proyecto",
"LOGO_HELP": "La imagen se escalará a 80x80px.",
"CHANGE_LOGO": "Cambia el logo",
"ACTION_USE_DEFAULT_LOGO": "Usar imagen por defecto"
"ACTION_USE_DEFAULT_LOGO": "Usar imagen por defecto",
"MAX_PRIVATE_PROJECTS": "You've reached the maximum number of private projects allowed by your current plan",
"MAX_PRIVATE_PROJECTS_MEMBERS": "The maximum number of members for private projects has been exceeded",
"MAX_PUBLIC_PROJECTS": "Unfortunately, you've reached the maximum number of public projects allowed by your current plan",
"MAX_PUBLIC_PROJECTS_MEMBERS": "The project exceeds your maximum number of members for public projects",
"PROJECT_OWNER": "Project owner",
"REQUEST_OWNERSHIP": "Request ownership",
"REQUEST_OWNERSHIP_CONFIRMATION_TITLE": "Do you want to become the new project owner?",
"REQUEST_OWNERSHIP_DESC": "Request that current project owner {{name}} transfer ownership of this project to you.",
"REQUEST_OWNERSHIP_BUTTON": "Solicitud",
"REQUEST_OWNERSHIP_SUCCESS": "We'll notify the project owner",
"CHANGE_OWNER": "Change owner",
"CHANGE_OWNER_SUCCESS_TITLE": "Ok, your request has been sent!",
"CHANGE_OWNER_SUCCESS_DESC": "We will notify you by email if the project ownership request is accepted or declined"
},
"REPORTS": {
"TITLE": "Informes",
@ -495,7 +513,8 @@
"ISSUE_ADD": "Añadir un atributo personalizado en las peticiones",
"FIELD_TYPE_TEXT": "Texto",
"FIELD_TYPE_MULTI": "Multilínea",
"FIELD_TYPE_DATE": "Fecha"
"FIELD_TYPE_DATE": "Fecha",
"FIELD_TYPE_URL": "Url"
},
"PROJECT_VALUES": {
"PAGE_TITLE": "{{sectionName}} - Valores del Proyectos - {{projectName}}",
@ -543,7 +562,7 @@
"COUNT_MEMBERS": "{{ role.members_count }} miembros con este rol",
"TITLE_DELETE_ROLE": "Borrar Rol",
"REPLACEMENT_ROLE": "Todos los usuarios con este rol serán movidos a",
"WARNING_DELETE_ROLE": "<strong>Cuidado, todas las estimaciones asociadas a este rol se perderán</strong>",
"WARNING_DELETE_ROLE": "Be careful! All role estimations will be removed",
"ERROR_DELETE_ALL": "No puedes eliminar todos los valores",
"EXTERNAL_USER": "Usuario externo"
},
@ -671,6 +690,24 @@
},
"SUBMENU_THIDPARTIES": {
"TITLE": "Servicios"
},
"PROJECT_TRANSFER": {
"DO_YOU_ACCEPT_PROJECT_OWNERNSHIP": "Would you like to become the new project owner?",
"PRIVATE": "Private",
"ACCEPTED_PROJECT_OWNERNSHIP": "Congratulations! You're now the new project owner.",
"REJECTED_PROJECT_OWNERNSHIP": "OK. We'll contact the current project owner",
"ACCEPT": "Aceptar",
"REJECT": "Reject",
"PROPOSE_OWNERSHIP": "<strong>{{owner}}</strong>, the current owner of the project <strong>{{project}}</strong> has asked that you become the new project owner.",
"ADD_COMMENT_QUESTION": "Would you like to send a question to the project owner?",
"ADD_COMMENT": "Would you like to add a comment for the project owner?",
"UNLIMITED_PROJECTS": "Unlimited",
"OWNER_MESSAGE": {
"PRIVATE": "Please remember that you can own up to <strong>{{maxProjects}}</strong> private projects. You currently own <strong>{{currentProjects}}</strong> private projects",
"PUBLIC": "Please remember that you can own up to <strong>{{maxProjects}}</strong> public projects. You currently own <strong>{{currentProjects}}</strong> public projects"
},
"CANT_BE_OWNED": "At the moment you cannot become an owner of a project of this type. If you would like to become the owner of this project, please contact the administrator so they change your account settings to enable project ownership.",
"CHANGE_MY_PLAN": "Change my plan"
}
},
"USER": {
@ -731,6 +768,11 @@
"FANS_COUNTER_TITLE": "{total, plural, one{un fan} other{# fans}}",
"WATCHERS_COUNTER_TITLE": "{total, plural, one{un observador} other{# observadores}}",
"MEMBERS_COUNTER_TITLE": "{total, plural, one{un miembro} other{# miembros}}",
"BLOCKED_PROJECT": {
"BLOCKED": "Blocked project",
"THIS_PROJECT_IS_BLOCKED": "This project is temporarily blocked",
"TO_UNBLOCK_CONTACT_THE_ADMIN_STAFF": "In order to unblock your projects, contact the administrator."
},
"STATS": {
"PROJECT": "puntos<br/> proyecto",
"DEFINED": "puntos<br/> definidos",
@ -777,6 +819,7 @@
"CHANGE_PASSWORD": "Cambiar contraseña",
"DASHBOARD_TITLE": "Dashboard",
"DISCOVER_TITLE": "Descubre los proyectos más relevantes",
"NEW_ITEM": "Nueva",
"DISCOVER": "Descubrir",
"ACTION_REORDER": "Arrastrar y soltar para reordenar"
},
@ -791,7 +834,32 @@
"ERROR_TOO_MANY_REQUEST": "Lo sentimos, nuestros Oompa Loompas están muy ocupados en este momento. Por favor inténtalo nuevamente en unos minutos.",
"ERROR_MESSAGE": "Nuestros Oompa Loompas tienen algunos problemas importando tus datos: {{error_message}}",
"ERROR_MAX_SIZE_EXCEEDED": "El fichero '{{fileName}}' ({{fileSize}}) es demasiado pesado para nuestros Oompa Loompas, prueba con uno de menos de ({{maxFileSize}}).",
"SYNC_SUCCESS": "Tu proyecto se ha importado con éxito."
"SYNC_SUCCESS": "Tu proyecto se ha importado con éxito.",
"PROJECT_RESTRICTIONS": {
"PROJECT_MEMBERS_DESC": "The project you are trying to import has {{members}} members, unfortunately, your current plan allows for a maximum of {{max_memberships}} members per project. If you would like to increase that limit please contact the administrator.",
"PRIVATE_PROJECTS_SPACE": {
"TITLE": "Unfortunately, your current plan does not allow for additional private projects",
"DESC": "The project you are trying to import is private. Unfortunately, your current plan does not allow for additional private projects."
},
"PUBLIC_PROJECTS_SPACE": {
"TITLE": "Unfortunately, your current plan does not allow for additional private projects",
"DESC": "The project you are trying to import is public. Unfortunately, your current plan does not allow additional public projects."
},
"PRIVATE_PROJECTS_MEMBERS": {
"TITLE": "Your current plan allows for a maximum of {{max_memberships}} members per private project"
},
"PUBLIC_PROJECTS_MEMBERS": {
"TITLE": "Your current plan allows for a maximum of {{max_memberships}} members per public project."
},
"PRIVATE_PROJECTS_SPACE_MEMBERS": {
"TITLE": "Unfortunately your current plan doesn't allow additional private projects or an increase of more than {{max_memberships}} members per private project",
"DESC": "The project that you are trying to import is private and has {{members}} members."
},
"PUBLIC_PROJECTS_SPACE_MEMBERS": {
"TITLE": "Unfortunately your current plan doesn't allow additional public projects or an increase of more than {{max_memberships}} members per public project",
"DESC": "The project that you are trying to import is public and has more than {{members}} members."
}
}
},
"LIKE_BUTTON": {
"LIKE": "Me gusta",
@ -819,8 +887,11 @@
"DELETE_ACCOUNT": {
"SECTION_NAME": "Eliminar cuenta de Taiga",
"CONFIRM": "¿Está seguro que deseas eliminar tu cuenta de Taiga?",
"SUBTITLE": "¡Te extrañaremos! :-(",
"NEWSLETTER_LABEL_TEXT": "No quiero recibir la newsletter nunca más."
"NEWSLETTER_LABEL_TEXT": "No quiero recibir la newsletter nunca más.",
"CANCEL": "Back to settings",
"ACCEPT": "Delete account",
"BLOCK_PROJECT": "Note that all the projects you own projects will be <strong>blocked</strong> after you delete your account. If you do want a project blocked, transfer ownership to another member of each project prior to deleting your account.",
"SUBTITLE": "Sorry to see you go. We'll be here if you should ever consider us again! :("
},
"DELETE_PROJECT": {
"TITLE": "Borrar proyecto",
@ -876,7 +947,25 @@
},
"CREATE_MEMBER": {
"PLACEHOLDER_INVITATION_TEXT": "(Opcional) Añade un texto personalizado a la invitación. Dile algo encantador a tus nuevos miembros ;-)",
"PLACEHOLDER_TYPE_EMAIL": "Escribe un email"
"PLACEHOLDER_TYPE_EMAIL": "Escribe un email",
"LIMIT_USERS_WARNING_MESSAGE_FOR_OWNER": "Unfortunately, this project can't have more than <strong>{{maxMembers}}</strong> members.<br> If you would like to increase the current limit, please contact the administrator.",
"LIMIT_USERS_WARNING_MESSAGE": "Unfortunately, this project can't have more than <strong>{{maxMembers}}</strong> members."
},
"LEAVE_PROJECT_WARNING": {
"TITLE": "Unfortunately, this project can't be left without an owner",
"CURRENT_USER_OWNER": {
"DESC": "You are the current owner of this project. Before leaving, please transfer ownership to someone else.",
"BUTTON": "Change the project owner"
},
"OTHER_USER_OWNER": {
"DESC": "Unfortunately, you can't delete a member who is also the current project owner. First, please assign a new project owner.",
"BUTTON": "Request project owner change"
}
},
"CHANGE_OWNER": {
"TITLE": "Who do you want to be the new project owner?",
"ADD_COMMENT": "Add comment",
"BUTTON": "Ask this project member to become the new project owner"
}
},
"US": {
@ -1304,12 +1393,18 @@
}
},
"WIZARD": {
"SECTION_TITLE_CHOOSE_TEMPLATE": "Elija una plantilla",
"CHOOSE_TEMPLATE_TEXT": "¿Que plantilla se ajusta mejor con tu proyecto?",
"SECTION_TITLE_CREATE_PROJECT": "Crear Proyecto",
"CREATE_PROJECT_TEXT": "Fresco y claro. ¡Es emocionante!",
"PROGRESS_TEMPLATE_SELECTION": "Selección de plantilla",
"PROGRESS_NAME_DESCRIPTION": "Nombre y descripción"
"CHOOSE_TEMPLATE": "Which template fits your project best?",
"CHOOSE_TEMPLATE_TITLE": "More info about project templates",
"CHOOSE_TEMPLATE_INFO": "More info",
"PROJECT_DETAILS": "Project Details",
"PUBLIC_PROJECT": "Public Project",
"PRIVATE_PROJECT": "Private Project",
"CREATE_PROJECT": "Crear proyecto",
"MAX_PRIVATE_PROJECTS": "You've reached the maximum number of private projects",
"MAX_PUBLIC_PROJECTS": "Unfortunately, you've reached the maximum number of public projects",
"CHANGE_PLANS": "change plans"
},
"WIKI": {
"PAGE_TITLE": "{{wikiPageName}} - Wiki - {{projectName}}",
@ -1446,8 +1541,8 @@
}
},
"DISCOVER": {
"PAGE_TITLE": "Discover projects - Taiga",
"PAGE_DESCRIPTION": "Searchable directory of Public Projects in Taiga. Explore backlogs, timelines, issues, and teams. Check out the most liked or most active projects. Filter by Kanban or Scrum.",
"PAGE_TITLE": "Descubre proyectos - Taiga",
"PAGE_DESCRIPTION": "Directorio de búsqueda de Proyectos Públicos en Taiga. Explora los backlogs, timelines, peticiones y equipos. Echa un vistazo a los proyectos que más gustan o más activos. Filtrar por Kanban o Scrum.",
"DISCOVER_TITLE": "Descubre proyectos",
"DISCOVER_SUBTITLE": "{projects, plural, one{Un proyecto público por descubrir} other{# proyectos público por descubrir}}\n",
"MOST_ACTIVE": "Más activos",
@ -1470,8 +1565,8 @@
"CLEAR": "Borrar filtros"
},
"SEARCH": {
"PAGE_TITLE": "Search - Discover projects - Taiga",
"PAGE_DESCRIPTION": "Searchable directory of Public Projects in Taiga. Explore backlogs, timelines, issues, and teams. Check out the most liked or most active projects. Filter by Kanban or Scrum.",
"PAGE_TITLE": "Buscar - Descubre proyectos - Taiga",
"PAGE_DESCRIPTION": "Directorio de búsqueda de Proyectos Públicos en Taiga. Explora los backlogs, timelines, peticiones y equipos. Echa un vistazo a los proyectos que más gustan o más activos. Filtrar por Kanban o Scrum.",
"INPUT_PLACEHOLDER": "Escribe algo...",
"ACTION_TITLE": "Buscar",
"RESULTS": "Resultados de búsqueda"

View File

@ -41,7 +41,8 @@
"IOCAINE_TEXT": "Jos tehtävä ahdistaa, merkitse se myrkylliseksi. Ajan mittaa pieninä annoksina saattaa kastokykysi myrkkyä vastaan parantua.",
"CLIENT_REQUIREMENT": "Client requirement is new requirement that was not previously expected and it is required to be part of the project",
"TEAM_REQUIREMENT": "Team requirement is a requirement that must exist in the project but should have no cost for the client",
"CAPSLOCK_WARNING": "Be careful! You're writing with capital letters and this input is case sensitive.",
"OWNER": "Project Owner",
"CAPSLOCK_WARNING": "Be careful! You are using capital letters in an input field that is case sensitive.",
"FORM_ERRORS": {
"DEFAULT_MESSAGE": "Tämä arvo vaikuttaa virheelliseltä.",
"TYPE_EMAIL": "Tämän pitäisi olla toimiva sähköpostiosoite.",
@ -65,7 +66,9 @@
"MIN_CHECK": "Sinun täytyy valita vähintään %s valintaa.",
"MAX_CHECK": "Valitse korkeintaan %s vaihtoehtoa.",
"RANGE_CHECK": "Valitse %s - %s vaihteohtoa.",
"EQUAL_TO": "Arvojen pitäisi olla samat."
"EQUAL_TO": "Arvojen pitäisi olla samat.",
"LINEWIDTH": "One or more lines is perhaps too long. Try to keep under %s characters.",
"PIKADAY": "Invalid date format, please use DD MMM YYYY (like 23 Mar 1984)"
},
"PICKERDATE": {
"FORMAT": "DD.MM.YY",
@ -315,7 +318,8 @@
"PLACEHOLDER_FIELD": "Käyttäjänimi tai sähköposti",
"ACTION_RESET_PASSWORD": "Uusi salsanasi",
"LINK_CANCEL": "Vie minut takaisin, muistan sen.",
"SUCCESS": "<strong>Tarkista sähköpostisi!</strong><br />Olemme lähettäneet sinulle sähköpostissa kirjautumisohjeet",
"SUCCESS_TITLE": "Check your inbox!",
"SUCCESS_TEXT": "We sent you an email with the instructions to set a new password",
"ERROR": "Oompa Loompas sanovat että käyttäjänimesi tai sähköpostisi tai salasanasi on väärä."
},
"CHANGE_PASSWORD": {
@ -373,7 +377,6 @@
"DEPRECATED_FILE": "Vanhentunut?",
"ADD": "Add new attachment. {{maxFileSizeMsg}}",
"DROP": "Drop attachments here!",
"MAX_FILE_SIZE": "[Maks. koko: {{maxFileSize}}]",
"SHOW_DEPRECATED": "+ näytä vanhentuneet liitteet",
"HIDE_DEPRECATED": "- piilota vanhentuneet liitteet",
"COUNT_DEPRECATED": "({{ counter }} vanhentunutta)",
@ -406,7 +409,9 @@
"TITLE": "Hallinnoi jäseniä",
"PAGE_TITLE": "Memberships - {{projectName}}",
"ADD_BUTTON": "+ Uusi jäsen",
"ADD_BUTTON_TITLE": "Lisää jäsen"
"ADD_BUTTON_TITLE": "Lisää jäsen",
"LIMIT_USERS_WARNING_MESSAGE_FOR_ADMIN": "Unfortunately, this project has reached its limit of <strong>({{members}})</strong> allowed members.",
"LIMIT_USERS_WARNING_MESSAGE_FOR_OWNER": "This project has reached its limit of <strong>({{members}})</strong> allowed members. If you would like to increase that limit please contact the administrator."
},
"PROJECT_EXPORT": {
"TITLE": "Vie",
@ -428,6 +433,10 @@
"DISABLE": "Passivoi",
"BACKLOG": "Odottavat",
"BACKLOG_DESCRIPTION": "Hallinnoi käyttäjätarinoita: järjestele ja priorisoi työtä.",
"NUMBER_SPRINTS": "Expected number of sprints",
"NUMBER_SPRINTS_HELP": "0 for an undetermined number",
"NUMBER_US_POINTS": "Expected total of story points",
"NUMBER_US_POINTS_HELP": "0 for an undetermined number",
"KANBAN": "Kanban",
"KANBAN_DESCRIPTION": "Järjestä projektisi tehokkaasti tällä taululla.",
"ISSUES": "Pyynnöt",
@ -435,9 +444,9 @@
"WIKI": "Wiki",
"WIKI_DESCRIPTION": "Lisää, muokkaa tai poista sisältöä yhteistyössä muiden kanssa. Tämä on oikea paikka projektin dokumentaatiolle.",
"MEETUP": "Tapaa",
"MEETUP_DESCRIPTION": "Valitse videoneuvottelu- järjestelmä. Jopa kehittäjät tarvitsevat katsekontaktia.",
"MEETUP_DESCRIPTION": "Choose your videoconference system.",
"SELECT_VIDEOCONFERENCE": "Valitse videoconferenssi-järjestelmä",
"SALT_CHAT_ROOM": "Voit halutessasi lisätä suolaan chat-huoneen nimeen",
"SALT_CHAT_ROOM": "Add a prefix to the chatroom name",
"JITSI_CHAT_ROOM": "Jitsi",
"APPEARIN_CHAT_ROOM": "AppearIn",
"TALKY_CHAT_ROOM": "Talky",
@ -449,22 +458,31 @@
"PROJECT_DETAILS": "Projektin tiedot",
"PROJECT_NAME": "Projektin nimi",
"PROJECT_SLUG": "Projektin hukka-aika",
"NUMBER_SPRINTS": "Number of sprints (0 for an undetermined quantity)",
"NUMBER_US_POINTS": "Number of US points (0 for an undetermined quantity)",
"TAGS": "Avainsanat",
"DESCRIPTION": "Kuvaus",
"RECRUITING": "Is this project looking for people?",
"RECRUITING_MESSAGE": "Who are you looking for?",
"RECRUITING_PLACEHOLDER": "Define the profiles you are looking for",
"PUBLIC_PROJECT": "Julkinen projekti",
"PUBLIC_PROJECT_DESC": "Users will be able to find and view your project",
"PRIVATE_PROJECT": "Yksityinen projekti",
"PRIVATE_PROJECT_DESC": "By default, this project will be hidden to the public",
"PRIVATE_OR_PUBLIC": "What's the difference between public and private projects?",
"DELETE": "Poista tämä projekti",
"LOGO_HELP": "The image will be scaled to 80x80px.",
"CHANGE_LOGO": "Change logo",
"ACTION_USE_DEFAULT_LOGO": "Use default image"
"ACTION_USE_DEFAULT_LOGO": "Use default image",
"MAX_PRIVATE_PROJECTS": "You've reached the maximum number of private projects allowed by your current plan",
"MAX_PRIVATE_PROJECTS_MEMBERS": "The maximum number of members for private projects has been exceeded",
"MAX_PUBLIC_PROJECTS": "Unfortunately, you've reached the maximum number of public projects allowed by your current plan",
"MAX_PUBLIC_PROJECTS_MEMBERS": "The project exceeds your maximum number of members for public projects",
"PROJECT_OWNER": "Project owner",
"REQUEST_OWNERSHIP": "Request ownership",
"REQUEST_OWNERSHIP_CONFIRMATION_TITLE": "Do you want to become the new project owner?",
"REQUEST_OWNERSHIP_DESC": "Request that current project owner {{name}} transfer ownership of this project to you.",
"REQUEST_OWNERSHIP_BUTTON": "Pyyntö",
"REQUEST_OWNERSHIP_SUCCESS": "We'll notify the project owner",
"CHANGE_OWNER": "Change owner",
"CHANGE_OWNER_SUCCESS_TITLE": "Ok, your request has been sent!",
"CHANGE_OWNER_SUCCESS_DESC": "We will notify you by email if the project ownership request is accepted or declined"
},
"REPORTS": {
"TITLE": "Raportit",
@ -495,7 +513,8 @@
"ISSUE_ADD": "Lisää oma kenttä pyynnöille",
"FIELD_TYPE_TEXT": "Text",
"FIELD_TYPE_MULTI": "Multi-line",
"FIELD_TYPE_DATE": "Date"
"FIELD_TYPE_DATE": "Date",
"FIELD_TYPE_URL": "Url"
},
"PROJECT_VALUES": {
"PAGE_TITLE": "{{sectionName}} - Project values - {{projectName}}",
@ -543,7 +562,7 @@
"COUNT_MEMBERS": "{{ role.members_count }} jäsentä joilla tämä rooli",
"TITLE_DELETE_ROLE": "Poista rooli",
"REPLACEMENT_ROLE": "Kaikki käyttäjä joilla on tämä rooli siirretään",
"WARNING_DELETE_ROLE": "<strong>Ole varovainen, rooli-arvioinnit poistetaan</strong>",
"WARNING_DELETE_ROLE": "Be careful! All role estimations will be removed",
"ERROR_DELETE_ALL": "Voit poistaa kaikki arvot",
"EXTERNAL_USER": "Ulkoinen käyttäjä"
},
@ -671,6 +690,24 @@
},
"SUBMENU_THIDPARTIES": {
"TITLE": "Palvelut"
},
"PROJECT_TRANSFER": {
"DO_YOU_ACCEPT_PROJECT_OWNERNSHIP": "Would you like to become the new project owner?",
"PRIVATE": "Private",
"ACCEPTED_PROJECT_OWNERNSHIP": "Congratulations! You're now the new project owner.",
"REJECTED_PROJECT_OWNERNSHIP": "OK. We'll contact the current project owner",
"ACCEPT": "Hyväksy",
"REJECT": "Reject",
"PROPOSE_OWNERSHIP": "<strong>{{owner}}</strong>, the current owner of the project <strong>{{project}}</strong> has asked that you become the new project owner.",
"ADD_COMMENT_QUESTION": "Would you like to send a question to the project owner?",
"ADD_COMMENT": "Would you like to add a comment for the project owner?",
"UNLIMITED_PROJECTS": "Unlimited",
"OWNER_MESSAGE": {
"PRIVATE": "Please remember that you can own up to <strong>{{maxProjects}}</strong> private projects. You currently own <strong>{{currentProjects}}</strong> private projects",
"PUBLIC": "Please remember that you can own up to <strong>{{maxProjects}}</strong> public projects. You currently own <strong>{{currentProjects}}</strong> public projects"
},
"CANT_BE_OWNED": "At the moment you cannot become an owner of a project of this type. If you would like to become the owner of this project, please contact the administrator so they change your account settings to enable project ownership.",
"CHANGE_MY_PLAN": "Change my plan"
}
},
"USER": {
@ -731,6 +768,11 @@
"FANS_COUNTER_TITLE": "{total, plural, one{one fan} other{# fans}}",
"WATCHERS_COUNTER_TITLE": "{total, plural, one{one watcher} other{# watchers}}",
"MEMBERS_COUNTER_TITLE": "{total, plural, one{one member} other{# members}}",
"BLOCKED_PROJECT": {
"BLOCKED": "Blocked project",
"THIS_PROJECT_IS_BLOCKED": "This project is temporarily blocked",
"TO_UNBLOCK_CONTACT_THE_ADMIN_STAFF": "In order to unblock your projects, contact the administrator."
},
"STATS": {
"PROJECT": "projekti<br/> pisteet",
"DEFINED": "määritely<br/> pistettä",
@ -777,6 +819,7 @@
"CHANGE_PASSWORD": "Muuta salasanaa",
"DASHBOARD_TITLE": "Dashboard",
"DISCOVER_TITLE": "Discover trending projects",
"NEW_ITEM": "Uusi",
"DISCOVER": "Discover",
"ACTION_REORDER": "Drag & drop to reorder"
},
@ -791,7 +834,32 @@
"ERROR_TOO_MANY_REQUEST": "Oompa Loompas ovat kiireisiä juuri nyt. Yritä hetken päästä uudelleen.",
"ERROR_MESSAGE": "Oompa Loompas eivät pysty lukemaan tiedostoasi: {{error_message}}",
"ERROR_MAX_SIZE_EXCEEDED": "'{{fileName}}' ({{fileSize}}) on liian iso Oompa Loompaseille, kokeile pienemmällä kuin ({{maxFileSize}})",
"SYNC_SUCCESS": "Projektisi on tuotu sisään onnistuneesti"
"SYNC_SUCCESS": "Projektisi on tuotu sisään onnistuneesti",
"PROJECT_RESTRICTIONS": {
"PROJECT_MEMBERS_DESC": "The project you are trying to import has {{members}} members, unfortunately, your current plan allows for a maximum of {{max_memberships}} members per project. If you would like to increase that limit please contact the administrator.",
"PRIVATE_PROJECTS_SPACE": {
"TITLE": "Unfortunately, your current plan does not allow for additional private projects",
"DESC": "The project you are trying to import is private. Unfortunately, your current plan does not allow for additional private projects."
},
"PUBLIC_PROJECTS_SPACE": {
"TITLE": "Unfortunately, your current plan does not allow for additional private projects",
"DESC": "The project you are trying to import is public. Unfortunately, your current plan does not allow additional public projects."
},
"PRIVATE_PROJECTS_MEMBERS": {
"TITLE": "Your current plan allows for a maximum of {{max_memberships}} members per private project"
},
"PUBLIC_PROJECTS_MEMBERS": {
"TITLE": "Your current plan allows for a maximum of {{max_memberships}} members per public project."
},
"PRIVATE_PROJECTS_SPACE_MEMBERS": {
"TITLE": "Unfortunately your current plan doesn't allow additional private projects or an increase of more than {{max_memberships}} members per private project",
"DESC": "The project that you are trying to import is private and has {{members}} members."
},
"PUBLIC_PROJECTS_SPACE_MEMBERS": {
"TITLE": "Unfortunately your current plan doesn't allow additional public projects or an increase of more than {{max_memberships}} members per public project",
"DESC": "The project that you are trying to import is public and has more than {{members}} members."
}
}
},
"LIKE_BUTTON": {
"LIKE": "Like",
@ -819,8 +887,11 @@
"DELETE_ACCOUNT": {
"SECTION_NAME": "Poista Taiga-tunnus",
"CONFIRM": "Haluatko varmasti poistaa Taiga-tunnuksesi?",
"SUBTITLE": "Tulemme kaipaamaan sinua! :-(",
"NEWSLETTER_LABEL_TEXT": "En halua uutiskirjettä enää"
"NEWSLETTER_LABEL_TEXT": "En halua uutiskirjettä enää",
"CANCEL": "Back to settings",
"ACCEPT": "Delete account",
"BLOCK_PROJECT": "Note that all the projects you own projects will be <strong>blocked</strong> after you delete your account. If you do want a project blocked, transfer ownership to another member of each project prior to deleting your account.",
"SUBTITLE": "Sorry to see you go. We'll be here if you should ever consider us again! :("
},
"DELETE_PROJECT": {
"TITLE": "Poista projekti",
@ -876,7 +947,25 @@
},
"CREATE_MEMBER": {
"PLACEHOLDER_INVITATION_TEXT": "(Vapaaehtoinen) Lisää oma kuvaus kutsuusi uusille jäsenille ;-)",
"PLACEHOLDER_TYPE_EMAIL": "Anna sähköposti"
"PLACEHOLDER_TYPE_EMAIL": "Anna sähköposti",
"LIMIT_USERS_WARNING_MESSAGE_FOR_OWNER": "Unfortunately, this project can't have more than <strong>{{maxMembers}}</strong> members.<br> If you would like to increase the current limit, please contact the administrator.",
"LIMIT_USERS_WARNING_MESSAGE": "Unfortunately, this project can't have more than <strong>{{maxMembers}}</strong> members."
},
"LEAVE_PROJECT_WARNING": {
"TITLE": "Unfortunately, this project can't be left without an owner",
"CURRENT_USER_OWNER": {
"DESC": "You are the current owner of this project. Before leaving, please transfer ownership to someone else.",
"BUTTON": "Change the project owner"
},
"OTHER_USER_OWNER": {
"DESC": "Unfortunately, you can't delete a member who is also the current project owner. First, please assign a new project owner.",
"BUTTON": "Request project owner change"
}
},
"CHANGE_OWNER": {
"TITLE": "Who do you want to be the new project owner?",
"ADD_COMMENT": "Add comment",
"BUTTON": "Ask this project member to become the new project owner"
}
},
"US": {
@ -1304,12 +1393,18 @@
}
},
"WIZARD": {
"SECTION_TITLE_CHOOSE_TEMPLATE": "Valitse pohja",
"CHOOSE_TEMPLATE_TEXT": "Mikä pohja sopii paremmin projektillesi?",
"SECTION_TITLE_CREATE_PROJECT": "Luo projekti",
"CREATE_PROJECT_TEXT": "Täysin koskematon. Jännittävää!",
"PROGRESS_TEMPLATE_SELECTION": "Pohjan valinta",
"PROGRESS_NAME_DESCRIPTION": "Nimi ja kuvaus"
"CHOOSE_TEMPLATE": "Which template fits your project best?",
"CHOOSE_TEMPLATE_TITLE": "More info about project templates",
"CHOOSE_TEMPLATE_INFO": "More info",
"PROJECT_DETAILS": "Project Details",
"PUBLIC_PROJECT": "Public Project",
"PRIVATE_PROJECT": "Private Project",
"CREATE_PROJECT": "Luo projekti",
"MAX_PRIVATE_PROJECTS": "You've reached the maximum number of private projects",
"MAX_PUBLIC_PROJECTS": "Unfortunately, you've reached the maximum number of public projects",
"CHANGE_PLANS": "change plans"
},
"WIKI": {
"PAGE_TITLE": "{{wikiPageName}} - Wiki - {{projectName}}",

View File

@ -24,7 +24,7 @@
"UNBLOCK": "Débloquer",
"UNBLOCK_TITLE": "Débloquer cet élément",
"BLOCKED_NOTE": "Pourquoi est-ce bloqué ?",
"BLOCKED_REASON": "Veillez s'il vous plait indiquer la raison",
"BLOCKED_REASON": "Veuillez s'il vous plait indiquer la raison",
"CREATED_BY": "Créé par {{fullDisplayName}}",
"FROM": "de",
"TO": "à",
@ -38,10 +38,11 @@
"LOGOUT": "Déconnexion",
"EXTERNAL_USER": "un utilisateur externe",
"GENERIC_ERROR": "L'un de nos Oompa Loompas dit {{error}}.",
"IOCAINE_TEXT": "Vous vous sentez un peu submergé par une tâche ? Soyez certains d'en informer les autres en cliquant su Iocaine lors de la modification de la tâche. Il est possible de s'immuniser contre ce poison (fictif) en consommant de petites quantités en heures supplémentaires, tout comme il est possible de s'améliorer en acceptant parfois de nouveaux défis !",
"IOCAINE_TEXT": "Vous vous sentez un peu submergé(e) par une tâche ? Soyez certains d'en informer les autres en cliquant sur Iocaine lors de la modification de la tâche. Il est possible de s'immuniser contre ce poison (fictif) en consommant de petites quantités en heures supplémentaires, tout comme il est possible de s'améliorer en acceptant parfois de nouveaux défis !",
"CLIENT_REQUIREMENT": "Un besoin client est un nouveau besoin qui n'était pas prévu et qu'il est nécessaire d'intégrer au projet",
"TEAM_REQUIREMENT": "Un besoin projet est un besoin qui est nécessaire au projet mais qui ne doit avoir aucun impact pour le client",
"CAPSLOCK_WARNING": "Attention ! Vous tapez en lettres majuscules et ce champ est sensible à la casse.",
"OWNER": "Propriétaire du Projet",
"CAPSLOCK_WARNING": "Be careful! You are using capital letters in an input field that is case sensitive.",
"FORM_ERRORS": {
"DEFAULT_MESSAGE": "Cette valeur semble être invalide.",
"TYPE_EMAIL": "Cette valeur devrait être une adresse courriel valide.",
@ -65,7 +66,9 @@
"MIN_CHECK": "Vous devez sélectionner au moins %s options.",
"MAX_CHECK": "Vous devez sélectionner %s options ou moins.",
"RANGE_CHECK": "Vous devez sélectionner parmi les choix %s et %s.",
"EQUAL_TO": "Cette valeur doit être identique."
"EQUAL_TO": "Cette valeur doit être identique.",
"LINEWIDTH": "One or more lines is perhaps too long. Try to keep under %s characters.",
"PIKADAY": "Invalid date format, please use DD MMM YYYY (like 23 Mar 1984)"
},
"PICKERDATE": {
"FORMAT": "DD MMM YYYY",
@ -116,7 +119,7 @@
"ADD": "Ajouter un mot-clé"
},
"DESCRIPTION": {
"EMPTY": "Un espace vide est si ennuyeux… allez-y, soyez descriptif… ",
"EMPTY": "Un espace vide est si ennuyeux… allez-y, soyez descriptif…",
"NO_DESCRIPTION": "Pas encore de description"
},
"FIELDS": {
@ -144,13 +147,13 @@
},
"ASSIGNED_TO": {
"NOT_ASSIGNED": "Non affecté",
"ASSIGN": "Assigné",
"ASSIGN": "Affecter",
"DELETE_ASSIGNMENT": "Supprimer l'affectation",
"REMOVE_ASSIGNED": "Supprimer l'affectation",
"TOO_MANY": "...trop d'utilisateurs ; filtrez davantage",
"CONFIRM_UNASSIGNED": "Etes-vous sûr de vouloir continuer sans affectation ?",
"TITLE_ACTION_EDIT_ASSIGNMENT": "Modifier l'affectation",
"SELF": "Me l'assigné"
"SELF": "Me l'affecter"
},
"STATUS": {
"CLOSED": "Fermé",
@ -315,7 +318,8 @@
"PLACEHOLDER_FIELD": "Nom d'utilisateur ou adresse courriel",
"ACTION_RESET_PASSWORD": "Réinitialiser le mot de passe",
"LINK_CANCEL": "Nan, ramenez-moi en arrière. Je crois que je m'en souviens.",
"SUCCESS": "<strong>Consultez votre messagerie !</strong><br />Nous venons d'envoyer un courriel avec les instructions pour créer un nouveau mot de passe",
"SUCCESS_TITLE": "Check your inbox!",
"SUCCESS_TEXT": "We sent you an email with the instructions to set a new password",
"ERROR": "D'après nos Oompa Loompas, vous n'êtes pas encore enregistré."
},
"CHANGE_PASSWORD": {
@ -373,7 +377,6 @@
"DEPRECATED_FILE": "Obsolète ?",
"ADD": "Ajoutez une nouvelle pièce jointe. {{maxFileSizeMsg}}",
"DROP": "Déposer les pièces jointes ici !",
"MAX_FILE_SIZE": "[Taille max. : {{maxFileSize}}]",
"SHOW_DEPRECATED": "+ montrer les pièces jointes obsolètes",
"HIDE_DEPRECATED": "- cacher les pièces jointes obsolètes",
"COUNT_DEPRECATED": "({{ counter }} obsolètes)",
@ -406,7 +409,9 @@
"TITLE": "Gérer les membres",
"PAGE_TITLE": "Membres - {{projectName}}",
"ADD_BUTTON": "+ Nouveau membre",
"ADD_BUTTON_TITLE": "Ajouter un membre"
"ADD_BUTTON_TITLE": "Ajouter un membre",
"LIMIT_USERS_WARNING_MESSAGE_FOR_ADMIN": "Unfortunately, this project has reached its limit of <strong>({{members}})</strong> allowed members.",
"LIMIT_USERS_WARNING_MESSAGE_FOR_OWNER": "This project has reached its limit of <strong>({{members}})</strong> allowed members. If you would like to increase that limit please contact the administrator."
},
"PROJECT_EXPORT": {
"TITLE": "Exporter",
@ -428,6 +433,10 @@
"DISABLE": "Désactiver",
"BACKLOG": "Backlog",
"BACKLOG_DESCRIPTION": "Gérez votre récits utilisateur pour garder une vue organisée des travaux à venir et priorisés.",
"NUMBER_SPRINTS": "Nombre prévu de sprints",
"NUMBER_SPRINTS_HELP": "0 for an undetermined number",
"NUMBER_US_POINTS": "Total prévu de points d'histoire",
"NUMBER_US_POINTS_HELP": "0 for an undetermined number",
"KANBAN": "Kanban",
"KANBAN_DESCRIPTION": "Organisez votre projet de manière agile avec ce tableau.",
"ISSUES": "Tickets",
@ -435,9 +444,9 @@
"WIKI": "Wiki",
"WIKI_DESCRIPTION": "Ajoutez, modifiez, ou supprimez du contenu en collaboration avec d'autres. C'est le bon endroit pour la documentation de votre projet.",
"MEETUP": "Meet Up",
"MEETUP_DESCRIPTION": "Choisissez votre système de vidéoconférence. Même les développeurs ont besoin de contact en face à face.",
"MEETUP_DESCRIPTION": "Choisissez un système de vidéoconférence",
"SELECT_VIDEOCONFERENCE": "Choisissez un système de vidéoconférence",
"SALT_CHAT_ROOM": "Si vous le souhaitez vous pouvez ajouter un code de salage au nom du salon de discussion",
"SALT_CHAT_ROOM": "Add a prefix to the chatroom name",
"JITSI_CHAT_ROOM": "Jitsi",
"APPEARIN_CHAT_ROOM": "AppearIn",
"TALKY_CHAT_ROOM": "Talky",
@ -449,22 +458,31 @@
"PROJECT_DETAILS": "Détails du projet",
"PROJECT_NAME": "Nom du projet",
"PROJECT_SLUG": "Label du projet",
"NUMBER_SPRINTS": "Nombre de sprints (0 pour non déterminé)",
"NUMBER_US_POINTS": "Nombre de points de RU (0 pour non déterminé)",
"TAGS": "Mots-clés",
"DESCRIPTION": "Description",
"RECRUITING": "Est-ce que ce projet recherche des membres ?",
"RECRUITING_MESSAGE": "Qui cherchez-vous ?",
"RECRUITING_PLACEHOLDER": "Définissez le profil que vous recherchez",
"PUBLIC_PROJECT": "Projet public",
"PUBLIC_PROJECT_DESC": "Les membres vont pouvoir chercher et voir votre projet.",
"PRIVATE_PROJECT": "Projet privé",
"PRIVATE_PROJECT_DESC": "Par défaut, ce project va être caché au public",
"PRIVATE_OR_PUBLIC": "Quelle est la différence entre les projets publics et privés ?",
"DELETE": "Supprimer ce projet",
"LOGO_HELP": "L'image va être agrandie à 80x80px",
"CHANGE_LOGO": "Changer le logo",
"ACTION_USE_DEFAULT_LOGO": "Utiliser l'image par défaut "
"ACTION_USE_DEFAULT_LOGO": "Utiliser l'image par défaut",
"MAX_PRIVATE_PROJECTS": "You've reached the maximum number of private projects allowed by your current plan",
"MAX_PRIVATE_PROJECTS_MEMBERS": "The maximum number of members for private projects has been exceeded",
"MAX_PUBLIC_PROJECTS": "Unfortunately, you've reached the maximum number of public projects allowed by your current plan",
"MAX_PUBLIC_PROJECTS_MEMBERS": "The project exceeds your maximum number of members for public projects",
"PROJECT_OWNER": "Project owner",
"REQUEST_OWNERSHIP": "Request ownership",
"REQUEST_OWNERSHIP_CONFIRMATION_TITLE": "Do you want to become the new project owner?",
"REQUEST_OWNERSHIP_DESC": "Request that current project owner {{name}} transfer ownership of this project to you.",
"REQUEST_OWNERSHIP_BUTTON": "Requête",
"REQUEST_OWNERSHIP_SUCCESS": "We'll notify the project owner",
"CHANGE_OWNER": "Change owner",
"CHANGE_OWNER_SUCCESS_TITLE": "Ok, your request has been sent!",
"CHANGE_OWNER_SUCCESS_DESC": "We will notify you by email if the project ownership request is accepted or declined"
},
"REPORTS": {
"TITLE": "Rapports",
@ -495,11 +513,12 @@
"ISSUE_ADD": "Ajouter un champ personnalisé dans les tickets",
"FIELD_TYPE_TEXT": "Texte",
"FIELD_TYPE_MULTI": "Multiligne",
"FIELD_TYPE_DATE": "Date"
"FIELD_TYPE_DATE": "Date",
"FIELD_TYPE_URL": "Url"
},
"PROJECT_VALUES": {
"PAGE_TITLE": "{{sectionName}} - Valeurs du projet - {{projectName}}",
"REPLACEMENT": "Tous les éléments avec cette valeur seront modifiés pour ",
"REPLACEMENT": "Tous les éléments avec cette valeur seront modifiés pour",
"ERROR_DELETE_ALL": "Vous ne pouvez pas effacer toutes les valeurs."
},
"PROJECT_VALUES_POINTS": {
@ -543,9 +562,9 @@
"COUNT_MEMBERS": "{{ role.members_count }} membres avec ce rôle",
"TITLE_DELETE_ROLE": "Supprimer des rôles",
"REPLACEMENT_ROLE": "Tous les utilisateurs avec ce rôle seront déplacés dans",
"WARNING_DELETE_ROLE": "<strong>Attention, toutes les estimations de rôle seront supprimées</strong>",
"WARNING_DELETE_ROLE": "Be careful! All role estimations will be removed",
"ERROR_DELETE_ALL": "Vous ne pouvez pas supprimer toutes les valeurs",
"EXTERNAL_USER": "Utilisateur externe "
"EXTERNAL_USER": "Utilisateur externe"
},
"THIRD_PARTIES": {
"SECRET_KEY": "Clé secrète",
@ -583,7 +602,7 @@
"REQUEST": "Requête",
"RESEND_REQUEST": "Renvoyer la requête",
"HEADERS": "Entêtes",
"PAYLOAD": "Données utiles ",
"PAYLOAD": "Données utiles",
"RESPONSE": "Réponse",
"DATE": "DD MMM YYYY [at] hh:mm:ss",
"ACTION_HIDE_HISTORY": "(Cacher l'historique)",
@ -671,6 +690,24 @@
},
"SUBMENU_THIDPARTIES": {
"TITLE": "Services"
},
"PROJECT_TRANSFER": {
"DO_YOU_ACCEPT_PROJECT_OWNERNSHIP": "Would you like to become the new project owner?",
"PRIVATE": "Private",
"ACCEPTED_PROJECT_OWNERNSHIP": "Congratulations! You're now the new project owner.",
"REJECTED_PROJECT_OWNERNSHIP": "OK. We'll contact the current project owner",
"ACCEPT": "Accepter",
"REJECT": "Reject",
"PROPOSE_OWNERSHIP": "<strong>{{owner}}</strong>, the current owner of the project <strong>{{project}}</strong> has asked that you become the new project owner.",
"ADD_COMMENT_QUESTION": "Would you like to send a question to the project owner?",
"ADD_COMMENT": "Would you like to add a comment for the project owner?",
"UNLIMITED_PROJECTS": "Unlimited",
"OWNER_MESSAGE": {
"PRIVATE": "Please remember that you can own up to <strong>{{maxProjects}}</strong> private projects. You currently own <strong>{{currentProjects}}</strong> private projects",
"PUBLIC": "Please remember that you can own up to <strong>{{maxProjects}}</strong> public projects. You currently own <strong>{{currentProjects}}</strong> public projects"
},
"CANT_BE_OWNED": "At the moment you cannot become an owner of a project of this type. If you would like to become the owner of this project, please contact the administrator so they change your account settings to enable project ownership.",
"CHANGE_MY_PLAN": "Change my plan"
}
},
"USER": {
@ -703,7 +740,7 @@
},
"PROFILE_SIDEBAR": {
"TITLE": "Votre profil",
"DESCRIPTION": "Tout le monde peut voir ce que vous fêtes et ce sur quoi vous travaillez. Ajoutez votre bio pour donner une version améliorée de vos informations.",
"DESCRIPTION": "Tout le monde peut voir ce que vous faites et ce sur quoi vous travaillez. Ajoutez votre bio pour donner une version améliorée de vos informations.",
"ADD_INFO": "Editer la biographie"
},
"PROFILE_FAVS": {
@ -731,6 +768,11 @@
"FANS_COUNTER_TITLE": "{total, plural, one{un fan} other{# fans}}",
"WATCHERS_COUNTER_TITLE": "{total, plural, one{un observateur} other{# observateurs}}",
"MEMBERS_COUNTER_TITLE": "{total, plural, one{un membre} other{# membres}}",
"BLOCKED_PROJECT": {
"BLOCKED": "Projet bloqué",
"THIS_PROJECT_IS_BLOCKED": "Ce projet est temporairement verrouillé",
"TO_UNBLOCK_CONTACT_THE_ADMIN_STAFF": "In order to unblock your projects, contact the administrator."
},
"STATS": {
"PROJECT": "points<br/> projet",
"DEFINED": "points<br/> définis",
@ -760,7 +802,7 @@
"TITLE_NEXT_PROJECT": "Montrer les projets suivants",
"HELP_TITLE": "Page d'assistance Taiga",
"HELP": "Aide",
"HOMEPAGE": "Page d'accueil ",
"HOMEPAGE": "Page d'accueil",
"FEEDBACK_TITLE": "Envoyez vos commentaires",
"FEEDBACK": "Feedback",
"NOTIFICATIONS_TITLE": "Modifier vos réglages de notification",
@ -777,6 +819,7 @@
"CHANGE_PASSWORD": "Modifier le mot de passe",
"DASHBOARD_TITLE": "Tableau de bord",
"DISCOVER_TITLE": "Découvrir les projets populaires",
"NEW_ITEM": "Nouveau",
"DISCOVER": "Découvrir",
"ACTION_REORDER": "Glisser-déposer pour réorganiser"
},
@ -791,7 +834,32 @@
"ERROR_TOO_MANY_REQUEST": "Nous sommes désolés, nos Oompa Loompas sont très occupés en ce moment. Veuillez réessayer dans quelques minutes.",
"ERROR_MESSAGE": "Nos Oompa Loompas ont des problèmes pour importer vos données de vidage : {{error_message}}",
"ERROR_MAX_SIZE_EXCEEDED": "'{{fileName}}' ({{fileSize}}) est un peu trop lourd pour nos Oompa Loompas, réessayez avec un fichier d'une taille inférieure à ({{maxFileSize}})",
"SYNC_SUCCESS": "Votre projet a été importé avec succès"
"SYNC_SUCCESS": "Votre projet a été importé avec succès",
"PROJECT_RESTRICTIONS": {
"PROJECT_MEMBERS_DESC": "The project you are trying to import has {{members}} members, unfortunately, your current plan allows for a maximum of {{max_memberships}} members per project. If you would like to increase that limit please contact the administrator.",
"PRIVATE_PROJECTS_SPACE": {
"TITLE": "Unfortunately, your current plan does not allow for additional private projects",
"DESC": "The project you are trying to import is private. Unfortunately, your current plan does not allow for additional private projects."
},
"PUBLIC_PROJECTS_SPACE": {
"TITLE": "Unfortunately, your current plan does not allow for additional private projects",
"DESC": "The project you are trying to import is public. Unfortunately, your current plan does not allow additional public projects."
},
"PRIVATE_PROJECTS_MEMBERS": {
"TITLE": "Your current plan allows for a maximum of {{max_memberships}} members per private project"
},
"PUBLIC_PROJECTS_MEMBERS": {
"TITLE": "Your current plan allows for a maximum of {{max_memberships}} members per public project."
},
"PRIVATE_PROJECTS_SPACE_MEMBERS": {
"TITLE": "Unfortunately your current plan doesn't allow additional private projects or an increase of more than {{max_memberships}} members per private project",
"DESC": "The project that you are trying to import is private and has {{members}} members."
},
"PUBLIC_PROJECTS_SPACE_MEMBERS": {
"TITLE": "Unfortunately your current plan doesn't allow additional public projects or an increase of more than {{max_memberships}} members per public project",
"DESC": "The project that you are trying to import is public and has more than {{members}} members."
}
}
},
"LIKE_BUTTON": {
"LIKE": "J'aime",
@ -819,8 +887,11 @@
"DELETE_ACCOUNT": {
"SECTION_NAME": "Supprimer le compte Taiga",
"CONFIRM": "Etes-vous sûr de vouloir supprimer votre compte Taiga ?",
"SUBTITLE": "Vous allez nous manquer ! :-(",
"NEWSLETTER_LABEL_TEXT": "Je ne veux plus recevoir votre bulletin d'information"
"NEWSLETTER_LABEL_TEXT": "Je ne veux plus recevoir votre bulletin d'information",
"CANCEL": "Retour aux réglages",
"ACCEPT": "Supprimer le compte",
"BLOCK_PROJECT": "Note that all the projects you own projects will be <strong>blocked</strong> after you delete your account. If you do want a project blocked, transfer ownership to another member of each project prior to deleting your account.",
"SUBTITLE": "Sorry to see you go. We'll be here if you should ever consider us again! :("
},
"DELETE_PROJECT": {
"TITLE": "Supprimer le projet",
@ -876,7 +947,25 @@
},
"CREATE_MEMBER": {
"PLACEHOLDER_INVITATION_TEXT": "(Optionnel) Ajoutez un texte personnalisé à l'invitation. Dites quelque chose de gentil à vos nouveaux membres ;-)",
"PLACEHOLDER_TYPE_EMAIL": "Saisissez une adresse courriel"
"PLACEHOLDER_TYPE_EMAIL": "Saisissez une adresse courriel",
"LIMIT_USERS_WARNING_MESSAGE_FOR_OWNER": "Unfortunately, this project can't have more than <strong>{{maxMembers}}</strong> members.<br> If you would like to increase the current limit, please contact the administrator.",
"LIMIT_USERS_WARNING_MESSAGE": "Unfortunately, this project can't have more than <strong>{{maxMembers}}</strong> members."
},
"LEAVE_PROJECT_WARNING": {
"TITLE": "Unfortunately, this project can't be left without an owner",
"CURRENT_USER_OWNER": {
"DESC": "You are the current owner of this project. Before leaving, please transfer ownership to someone else.",
"BUTTON": "Change the project owner"
},
"OTHER_USER_OWNER": {
"DESC": "Unfortunately, you can't delete a member who is also the current project owner. First, please assign a new project owner.",
"BUTTON": "Request project owner change"
}
},
"CHANGE_OWNER": {
"TITLE": "Who do you want to be the new project owner?",
"ADD_COMMENT": "Add comment",
"BUTTON": "Ask this project member to become the new project owner"
}
},
"US": {
@ -1013,7 +1102,7 @@
},
"SPRINT_SUMMARY": {
"TOTAL_POINTS": "total<br />points",
"COMPLETED_POINTS": "complétés<br />points",
"COMPLETED_POINTS": "points<br />complétés",
"OPEN_TASKS": "tâches<br /> ouvertes",
"CLOSED_TASKS": "tâches<br />fermées",
"IOCAINE_DOSES": "doses<br />de iocaine",
@ -1108,7 +1197,7 @@
"IS_IOCAINE": "est sous iocaine"
},
"ACTION_IOCAINE": "locaine",
"TITLE_ACTION_IOCAINE": "Vous vous sentez un peu dépassé par une tâche ? Assurez-vous que les autres le savent en cliquant sur locaine en éditant une tâche. Il est possible de s'immuniser contre ce poison (fictif) en en consommant de faibles doses pendant un moment tout comme il est possible de devenir meilleur à ce que vous faîtes en relevant quelques défis à l'occasion !"
"TITLE_ACTION_IOCAINE": "Vous vous sentez un peu dépassé(e) par une tâche ? Assurez-vous que les autres le savent en cliquant sur locaine en éditant une tâche. Il est possible de s'immuniser contre ce poison (fictif) en en consommant de faibles doses pendant un moment tout comme il est possible de devenir meilleur à ce que vous faîtes en relevant quelques défis à l'occasion !"
},
"NOTIFICATION": {
"OK": "Tout est ok",
@ -1286,7 +1375,7 @@
"USER_PROFILE": {
"IMAGE_HELP": "L'image va être agrandie à 80x80px",
"ACTION_CHANGE_IMAGE": "Modifier",
"ACTION_USE_GRAVATAR": "Utiliser l'image par défaut ",
"ACTION_USE_GRAVATAR": "Utiliser l'image par défaut",
"ACTION_DELETE_ACCOUNT": "Supprime le compte Taiga",
"CHANGE_EMAIL_SUCCESS": "<strong>Consultez votre messagerie !</strong><br />Nous vous avons envoyé un courriel<br />avec les instructions à suivre pour saisir votre nouvelle adresse",
"CHANGE_PHOTO": "Changer la photo",
@ -1300,16 +1389,22 @@
"LANGUAGE": "Langue",
"LANGUAGE_DEFAULT": "-- utiliser la langue par défaut --",
"THEME": "Thème",
"THEME_DEFAULT": "-- Utiliser la langue par défaut --"
"THEME_DEFAULT": "-- utiliser le thème par défaut --"
}
},
"WIZARD": {
"SECTION_TITLE_CHOOSE_TEMPLATE": "Choisissez un template",
"CHOOSE_TEMPLATE_TEXT": "Quel template conviendrait le mieux à votre projet ?",
"SECTION_TITLE_CREATE_PROJECT": "Créer un projet",
"CREATE_PROJECT_TEXT": "Tout beau, tout nouveau !",
"PROGRESS_TEMPLATE_SELECTION": "Choix du modèle",
"PROGRESS_NAME_DESCRIPTION": "Nom et description"
"CHOOSE_TEMPLATE": "Which template fits your project best?",
"CHOOSE_TEMPLATE_TITLE": "Plus d'information sur les templates de projets",
"CHOOSE_TEMPLATE_INFO": "Plus d'informations",
"PROJECT_DETAILS": "Détails du projet",
"PUBLIC_PROJECT": "Projet public",
"PRIVATE_PROJECT": "Projet privé",
"CREATE_PROJECT": "Créer un projet",
"MAX_PRIVATE_PROJECTS": "Vous avez atteint le nombre maximum de projets privés",
"MAX_PUBLIC_PROJECTS": "Unfortunately, you've reached the maximum number of public projects",
"CHANGE_PLANS": "changer de souscription"
},
"WIKI": {
"PAGE_TITLE": "{{wikiPageName}} - Wiki - {{projectName}}",
@ -1446,12 +1541,12 @@
}
},
"DISCOVER": {
"PAGE_TITLE": "Discover projects - Taiga",
"PAGE_TITLE": "Découvrir les projets - Taiga",
"PAGE_DESCRIPTION": "Searchable directory of Public Projects in Taiga. Explore backlogs, timelines, issues, and teams. Check out the most liked or most active projects. Filter by Kanban or Scrum.",
"DISCOVER_TITLE": "Découvrir les projets",
"DISCOVER_SUBTITLE": "{projects, plural, one{Un projet public à découvrir} other{# projets publics à découvrir}}",
"MOST_ACTIVE": "les plus actifs",
"MOST_ACTIVE_EMPTY": "Il n'y a pas de projets actifs pour le moment",
"MOST_ACTIVE_EMPTY": "Il n'y a pas de projet actif pour le moment",
"MOST_LIKED": "Les plus « aimés »",
"MOST_LIKED_EMPTY": "Il n'y a pas encore de projet « aimé »",
"VIEW_MORE": "Voir plus",
@ -1465,12 +1560,12 @@
"PEOPLE": "En recherche de membres",
"WEEK": "Semaine dernière",
"MONTH": "Mois dernier",
"YEAR": "Leanne dernière",
"YEAR": "Année dernière",
"ALL_TIME": "Tout le temps",
"CLEAR": "Effacer les filtres"
},
"SEARCH": {
"PAGE_TITLE": "Search - Discover projects - Taiga",
"PAGE_TITLE": "Rechercher - Découvrir les projets - Taiga",
"PAGE_DESCRIPTION": "Searchable directory of Public Projects in Taiga. Explore backlogs, timelines, issues, and teams. Check out the most liked or most active projects. Filter by Kanban or Scrum.",
"INPUT_PLACEHOLDER": "Écrivez quelque chose...",
"ACTION_TITLE": "Rechercher",

View File

@ -2,7 +2,7 @@
"COMMON": {
"YES": "Sì",
"NO": "No",
"OR": "or",
"OR": "o",
"LOADING": "Caricamento...",
"LOADING_PROJECT": "Stiamo caricando il progetto...",
"DATE": "DD MMM YYYY",
@ -22,8 +22,8 @@
"BLOCK_TITLE": "Block this item for example if it has a dependency that can not be satisfied",
"BLOCKED": "Bloccato",
"UNBLOCK": "Sblocca",
"UNBLOCK_TITLE": "Unblock this item",
"BLOCKED_NOTE": "Why is this blocked?",
"UNBLOCK_TITLE": "Sblocca questo elemento",
"BLOCKED_NOTE": "Perché questo compito è bloccato?",
"BLOCKED_REASON": "Spiega il motivo",
"CREATED_BY": "Creato da {{fullDisplayName}}",
"FROM": "da",
@ -41,7 +41,8 @@
"IOCAINE_TEXT": "Sei stremato? Assicurati che gli altri lo sappiano cliccando su 'aspirina' quando stai lavorando su un compito che ti affatica. Ma non demordere, ricordati: si può migliorare solo se di tanto in tanto si accettano sfide extra!",
"CLIENT_REQUIREMENT": "Requisito del Cliente è un nuovo requisito che non era stato previsto ed ora è stato richiesto come requisito del progetto",
"TEAM_REQUIREMENT": "Requisito del Team è un requisito che deve esistere nel progetto ma non deve avere costi per il cliente",
"CAPSLOCK_WARNING": "Attento! stai scrivendo in maiuscolo e questo input è sensibile alle maiuscole..",
"OWNER": "Project Owner",
"CAPSLOCK_WARNING": "Be careful! You are using capital letters in an input field that is case sensitive.",
"FORM_ERRORS": {
"DEFAULT_MESSAGE": "Questo valore non è valido.",
"TYPE_EMAIL": "Questo valore dovrebbe corrispondere ad una mail valida",
@ -65,7 +66,9 @@
"MIN_CHECK": "Devi selezionare almeno %s scelte.",
"MAX_CHECK": "Devi selezionare la scelta %s o meno.",
"RANGE_CHECK": "Devi selezionare tra %s e %s scelta.",
"EQUAL_TO": "Il valore dovrebbe essere uguale"
"EQUAL_TO": "Il valore dovrebbe essere uguale",
"LINEWIDTH": "One or more lines is perhaps too long. Try to keep under %s characters.",
"PIKADAY": "Invalid date format, please use DD MMM YYYY (like 23 Mar 1984)"
},
"PICKERDATE": {
"FORMAT": "DD MMM YYYY",
@ -315,7 +318,8 @@
"PLACEHOLDER_FIELD": "Nome utente o email",
"ACTION_RESET_PASSWORD": "Reimposta la password",
"LINK_CANCEL": "Fa niente dai, riportami indietro. Penso di ricordarmela.",
"SUCCESS": "<strong>Controlla la tua posta!</strong><br />Ti abbiamo inviato una email con le istruzioni per reimpostare la password",
"SUCCESS_TITLE": "Check your inbox!",
"SUCCESS_TEXT": "We sent you an email with the instructions to set a new password",
"ERROR": "Secondo i nostri Oompa Loompa, non sei ancora registrato."
},
"CHANGE_PASSWORD": {
@ -373,7 +377,6 @@
"DEPRECATED_FILE": "Deprecato?",
"ADD": "Aggiungi un nuovo allegato. {{maxFileSizeMsg}}",
"DROP": "Rilascia qui l'allegato!",
"MAX_FILE_SIZE": "[Dimensione max. {{maxFileSize}}]",
"SHOW_DEPRECATED": "+ visualizza allegati deprecati",
"HIDE_DEPRECATED": "- nascondi allegati deprecati",
"COUNT_DEPRECATED": "({{ counter }} deprecati)",
@ -406,7 +409,9 @@
"TITLE": "Gestisci membri",
"PAGE_TITLE": "Webhooks - {{projectName}}",
"ADD_BUTTON": "Nuovo Membro",
"ADD_BUTTON_TITLE": "Aggiungi un nuovo membro"
"ADD_BUTTON_TITLE": "Aggiungi un nuovo membro",
"LIMIT_USERS_WARNING_MESSAGE_FOR_ADMIN": "Unfortunately, this project has reached its limit of <strong>({{members}})</strong> allowed members.",
"LIMIT_USERS_WARNING_MESSAGE_FOR_OWNER": "This project has reached its limit of <strong>({{members}})</strong> allowed members. If you would like to increase that limit please contact the administrator."
},
"PROJECT_EXPORT": {
"TITLE": "Esporta",
@ -428,6 +433,10 @@
"DISABLE": "Disabilita",
"BACKLOG": "Backlog",
"BACKLOG_DESCRIPTION": "Amministra le storie degli utenti per mantenere una visione organizzata dei lavori in arrivo e di quelli ad alta priorità ",
"NUMBER_SPRINTS": "Expected number of sprints",
"NUMBER_SPRINTS_HELP": "0 for an undetermined number",
"NUMBER_US_POINTS": "Expected total of story points",
"NUMBER_US_POINTS_HELP": "0 for an undetermined number",
"KANBAN": "Kanban",
"KANBAN_DESCRIPTION": "Organizza in modo semplice il tuo progetto con questa board",
"ISSUES": "problemi",
@ -435,9 +444,9 @@
"WIKI": "Wiki",
"WIKI_DESCRIPTION": "Aggiungi, modifica o elimina i contenuti in collaborazione con gli altri. E' il posto giusto per la documentazione del tuo progetto",
"MEETUP": "Incontro",
"MEETUP_DESCRIPTION": "Scegli il tuo sistema di videoconferenza. Anche gli sviluppatori hanno bisogno di qualche contatto faccia a faccia. ",
"MEETUP_DESCRIPTION": "Choose your videoconference system.",
"SELECT_VIDEOCONFERENCE": "Seleziona un sistema di videoconferenza",
"SALT_CHAT_ROOM": "Se preferisci puoi aggiungere un valore sale al nome della chat room",
"SALT_CHAT_ROOM": "Add a prefix to the chatroom name",
"JITSI_CHAT_ROOM": "Jitsi",
"APPEARIN_CHAT_ROOM": "AppearIn",
"TALKY_CHAT_ROOM": "Talky",
@ -449,22 +458,31 @@
"PROJECT_DETAILS": "Dettagli progetto",
"PROJECT_NAME": "Nome progetto",
"PROJECT_SLUG": "Progetto lumaca",
"NUMBER_SPRINTS": "Numero di sprint (0 come quantità indeterminata)",
"NUMBER_US_POINTS": "Numero di punti delle storie utente (0 come quantità indeterminata)",
"TAGS": "Tag",
"DESCRIPTION": "Descrizione",
"RECRUITING": "Il progetto cerca persone?",
"RECRUITING_MESSAGE": "Chi stai cercando?",
"RECRUITING_PLACEHOLDER": "Definisci il profilo che stai cercando",
"PUBLIC_PROJECT": "Progetto pubblico",
"PUBLIC_PROJECT_DESC": "Gli utenti possono cercare e vedere il tuo progetto",
"PRIVATE_PROJECT": "Progetto privato",
"PRIVATE_PROJECT_DESC": "Di default, il progetto sarà nascosto al pubblico",
"PRIVATE_OR_PUBLIC": "Quale è la differenza tra progetto privato e pubblico?",
"DELETE": "Elimina questo progetto",
"LOGO_HELP": "L'immagine sarà scalata a 80x80px.",
"CHANGE_LOGO": "Cambia Logo",
"ACTION_USE_DEFAULT_LOGO": "Usa l'immagine di default"
"ACTION_USE_DEFAULT_LOGO": "Usa l'immagine di default",
"MAX_PRIVATE_PROJECTS": "You've reached the maximum number of private projects allowed by your current plan",
"MAX_PRIVATE_PROJECTS_MEMBERS": "The maximum number of members for private projects has been exceeded",
"MAX_PUBLIC_PROJECTS": "Unfortunately, you've reached the maximum number of public projects allowed by your current plan",
"MAX_PUBLIC_PROJECTS_MEMBERS": "The project exceeds your maximum number of members for public projects",
"PROJECT_OWNER": "Project owner",
"REQUEST_OWNERSHIP": "Request ownership",
"REQUEST_OWNERSHIP_CONFIRMATION_TITLE": "Do you want to become the new project owner?",
"REQUEST_OWNERSHIP_DESC": "Request that current project owner {{name}} transfer ownership of this project to you.",
"REQUEST_OWNERSHIP_BUTTON": "Richiesta",
"REQUEST_OWNERSHIP_SUCCESS": "We'll notify the project owner",
"CHANGE_OWNER": "Change owner",
"CHANGE_OWNER_SUCCESS_TITLE": "Ok, your request has been sent!",
"CHANGE_OWNER_SUCCESS_DESC": "We will notify you by email if the project ownership request is accepted or declined"
},
"REPORTS": {
"TITLE": "Rapporti",
@ -495,7 +513,8 @@
"ISSUE_ADD": "Aggiungi un campo personalizzato alla criticitá",
"FIELD_TYPE_TEXT": "Testo",
"FIELD_TYPE_MULTI": "Multilinea",
"FIELD_TYPE_DATE": "Data"
"FIELD_TYPE_DATE": "Data",
"FIELD_TYPE_URL": "Url"
},
"PROJECT_VALUES": {
"PAGE_TITLE": "{{sectionName}} - Valori di progetto - {{projectName}}",
@ -543,7 +562,7 @@
"COUNT_MEMBERS": "{{ role.members_count }} membri con questo ruolo",
"TITLE_DELETE_ROLE": "Elimina ruolo",
"REPLACEMENT_ROLE": "Tutti gli utenti con questo ruolo saranno spostati a ",
"WARNING_DELETE_ROLE": "<strong>Attento, tutte le stime dei ruoli saranno eliminate</strong>",
"WARNING_DELETE_ROLE": "Be careful! All role estimations will be removed",
"ERROR_DELETE_ALL": "Non puoi cancellare tutti i valori",
"EXTERNAL_USER": "Utente esterno"
},
@ -671,6 +690,24 @@
},
"SUBMENU_THIDPARTIES": {
"TITLE": "Servizi"
},
"PROJECT_TRANSFER": {
"DO_YOU_ACCEPT_PROJECT_OWNERNSHIP": "Would you like to become the new project owner?",
"PRIVATE": "Private",
"ACCEPTED_PROJECT_OWNERNSHIP": "Congratulations! You're now the new project owner.",
"REJECTED_PROJECT_OWNERNSHIP": "OK. We'll contact the current project owner",
"ACCEPT": "Accetta",
"REJECT": "Reject",
"PROPOSE_OWNERSHIP": "<strong>{{owner}}</strong>, the current owner of the project <strong>{{project}}</strong> has asked that you become the new project owner.",
"ADD_COMMENT_QUESTION": "Would you like to send a question to the project owner?",
"ADD_COMMENT": "Would you like to add a comment for the project owner?",
"UNLIMITED_PROJECTS": "Unlimited",
"OWNER_MESSAGE": {
"PRIVATE": "Please remember that you can own up to <strong>{{maxProjects}}</strong> private projects. You currently own <strong>{{currentProjects}}</strong> private projects",
"PUBLIC": "Please remember that you can own up to <strong>{{maxProjects}}</strong> public projects. You currently own <strong>{{currentProjects}}</strong> public projects"
},
"CANT_BE_OWNED": "At the moment you cannot become an owner of a project of this type. If you would like to become the owner of this project, please contact the administrator so they change your account settings to enable project ownership.",
"CHANGE_MY_PLAN": "Change my plan"
}
},
"USER": {
@ -731,6 +768,11 @@
"FANS_COUNTER_TITLE": "{total, plural, one{un follower} other{# followers}}",
"WATCHERS_COUNTER_TITLE": "{total, plural, one{un osservatore} other{# osservatori}} ",
"MEMBERS_COUNTER_TITLE": "{total, plural, one{un membro} other{# membri}}",
"BLOCKED_PROJECT": {
"BLOCKED": "Blocked project",
"THIS_PROJECT_IS_BLOCKED": "This project is temporarily blocked",
"TO_UNBLOCK_CONTACT_THE_ADMIN_STAFF": "In order to unblock your projects, contact the administrator."
},
"STATS": {
"PROJECT": "progetto<br/> punti",
"DEFINED": "Definiti <br/> punti",
@ -777,6 +819,7 @@
"CHANGE_PASSWORD": "Cambia password",
"DASHBOARD_TITLE": "Dashboard",
"DISCOVER_TITLE": "Scopri i progetti più seguiti",
"NEW_ITEM": "Nuovo",
"DISCOVER": "Scopri",
"ACTION_REORDER": "Usa drag & drop per riordinare"
},
@ -791,7 +834,32 @@
"ERROR_TOO_MANY_REQUEST": "Scusaci, i nostri Oompa Loompa sono di nuovo occupati. Riprova di nuovo in qualche minuto.",
"ERROR_MESSAGE": "I nostri Oompa Loompa hanno qualche problema ad importare il dump dei tuoi dati: {{error_message}}",
"ERROR_MAX_SIZE_EXCEEDED": "'{{fileName}}' ({{fileSize}}) è troppo pesante per i nostri Oompa Loompa; falli contenti, prova con una dimensione minore di ({{maxFileSize}})",
"SYNC_SUCCESS": "Il tuo progetto è stato importato con successo"
"SYNC_SUCCESS": "Il tuo progetto è stato importato con successo",
"PROJECT_RESTRICTIONS": {
"PROJECT_MEMBERS_DESC": "The project you are trying to import has {{members}} members, unfortunately, your current plan allows for a maximum of {{max_memberships}} members per project. If you would like to increase that limit please contact the administrator.",
"PRIVATE_PROJECTS_SPACE": {
"TITLE": "Unfortunately, your current plan does not allow for additional private projects",
"DESC": "The project you are trying to import is private. Unfortunately, your current plan does not allow for additional private projects."
},
"PUBLIC_PROJECTS_SPACE": {
"TITLE": "Unfortunately, your current plan does not allow for additional private projects",
"DESC": "The project you are trying to import is public. Unfortunately, your current plan does not allow additional public projects."
},
"PRIVATE_PROJECTS_MEMBERS": {
"TITLE": "Your current plan allows for a maximum of {{max_memberships}} members per private project"
},
"PUBLIC_PROJECTS_MEMBERS": {
"TITLE": "Your current plan allows for a maximum of {{max_memberships}} members per public project."
},
"PRIVATE_PROJECTS_SPACE_MEMBERS": {
"TITLE": "Unfortunately your current plan doesn't allow additional private projects or an increase of more than {{max_memberships}} members per private project",
"DESC": "The project that you are trying to import is private and has {{members}} members."
},
"PUBLIC_PROJECTS_SPACE_MEMBERS": {
"TITLE": "Unfortunately your current plan doesn't allow additional public projects or an increase of more than {{max_memberships}} members per public project",
"DESC": "The project that you are trying to import is public and has more than {{members}} members."
}
}
},
"LIKE_BUTTON": {
"LIKE": "Mi piace",
@ -819,8 +887,11 @@
"DELETE_ACCOUNT": {
"SECTION_NAME": "Elimina Account Taiga",
"CONFIRM": "Sei sicuro di voler eliminare il tuo account Taiga?",
"SUBTITLE": "Ci mancherai! :-(",
"NEWSLETTER_LABEL_TEXT": "Non voglio più ricevere le vostre newsletter"
"NEWSLETTER_LABEL_TEXT": "Non voglio più ricevere le vostre newsletter",
"CANCEL": "Back to settings",
"ACCEPT": "Delete account",
"BLOCK_PROJECT": "Note that all the projects you own projects will be <strong>blocked</strong> after you delete your account. If you do want a project blocked, transfer ownership to another member of each project prior to deleting your account.",
"SUBTITLE": "Sorry to see you go. We'll be here if you should ever consider us again! :("
},
"DELETE_PROJECT": {
"TITLE": "Elimina progetto",
@ -876,7 +947,25 @@
},
"CREATE_MEMBER": {
"PLACEHOLDER_INVITATION_TEXT": "(facoltativo) aggiungi un testo personalizzato all'invito. Di qualcosa di simpatico ai tuoi nuovi membri ;-)",
"PLACEHOLDER_TYPE_EMAIL": "Scrivi una mail"
"PLACEHOLDER_TYPE_EMAIL": "Scrivi una mail",
"LIMIT_USERS_WARNING_MESSAGE_FOR_OWNER": "Unfortunately, this project can't have more than <strong>{{maxMembers}}</strong> members.<br> If you would like to increase the current limit, please contact the administrator.",
"LIMIT_USERS_WARNING_MESSAGE": "Unfortunately, this project can't have more than <strong>{{maxMembers}}</strong> members."
},
"LEAVE_PROJECT_WARNING": {
"TITLE": "Unfortunately, this project can't be left without an owner",
"CURRENT_USER_OWNER": {
"DESC": "You are the current owner of this project. Before leaving, please transfer ownership to someone else.",
"BUTTON": "Change the project owner"
},
"OTHER_USER_OWNER": {
"DESC": "Unfortunately, you can't delete a member who is also the current project owner. First, please assign a new project owner.",
"BUTTON": "Request project owner change"
}
},
"CHANGE_OWNER": {
"TITLE": "Who do you want to be the new project owner?",
"ADD_COMMENT": "Add comment",
"BUTTON": "Ask this project member to become the new project owner"
}
},
"US": {
@ -914,7 +1003,7 @@
"TYPE_NEW_COMMENT": "Scrivi un nuovo commento qui",
"SHOW_DELETED": "Visualizza commento cancellato",
"HIDE_DELETED": "Nascondi commento cancellato",
"DELETE": "Delete comment",
"DELETE": "Cancella commento",
"RESTORE": "Ripristina commento"
},
"ACTIVITY": {
@ -1304,12 +1393,18 @@
}
},
"WIZARD": {
"SECTION_TITLE_CHOOSE_TEMPLATE": "Scegli il tema",
"CHOOSE_TEMPLATE_TEXT": "Quale template si adatta meglio al tuo progetto?",
"SECTION_TITLE_CREATE_PROJECT": "Crea Progetto",
"CREATE_PROJECT_TEXT": "Nuovo di zecca. Vai così!",
"PROGRESS_TEMPLATE_SELECTION": "Selezione del template",
"PROGRESS_NAME_DESCRIPTION": "Nome e descrizione"
"CHOOSE_TEMPLATE": "Which template fits your project best?",
"CHOOSE_TEMPLATE_TITLE": "More info about project templates",
"CHOOSE_TEMPLATE_INFO": "More info",
"PROJECT_DETAILS": "Project Details",
"PUBLIC_PROJECT": "Public Project",
"PRIVATE_PROJECT": "Private Project",
"CREATE_PROJECT": "Crea progetto",
"MAX_PRIVATE_PROJECTS": "You've reached the maximum number of private projects",
"MAX_PUBLIC_PROJECTS": "Unfortunately, you've reached the maximum number of public projects",
"CHANGE_PLANS": "change plans"
},
"WIKI": {
"PAGE_TITLE": "{{wikiPageName}} - Wiki - {{projectName}}",
@ -1446,7 +1541,7 @@
}
},
"DISCOVER": {
"PAGE_TITLE": "Discover projects - Taiga",
"PAGE_TITLE": "Scopri i progetti - Taiga",
"PAGE_DESCRIPTION": "Searchable directory of Public Projects in Taiga. Explore backlogs, timelines, issues, and teams. Check out the most liked or most active projects. Filter by Kanban or Scrum.",
"DISCOVER_TITLE": "Scopri progetti",
"DISCOVER_SUBTITLE": "{projects, plural, one{Un progetto pubblico da scoprire} other{# progetti pubblici da scoprire}}",
@ -1470,7 +1565,7 @@
"CLEAR": "Cancella filtri"
},
"SEARCH": {
"PAGE_TITLE": "Search - Discover projects - Taiga",
"PAGE_TITLE": "Cerca - Scopri i progetti - Taiga",
"PAGE_DESCRIPTION": "Searchable directory of Public Projects in Taiga. Explore backlogs, timelines, issues, and teams. Check out the most liked or most active projects. Filter by Kanban or Scrum.",
"INPUT_PLACEHOLDER": "Inserisci testo...",
"ACTION_TITLE": "Cerca",

View File

@ -2,7 +2,7 @@
"COMMON": {
"YES": "Ja",
"NO": "Nee",
"OR": "or",
"OR": "of",
"LOADING": "Aan het laden...",
"LOADING_PROJECT": "Project laden...",
"DATE": "DD MMM YYYY",
@ -41,7 +41,8 @@
"IOCAINE_TEXT": "Voel je je wat overweldigd door een taak? Zorg ervoor dat anderen dit weten door op Iocaine te klikken bij het wijzigen van een taak. Je kan stapsgewijs immuun worden tegen dit (fictioneel) dodelijk gif door kleine dosissen op te nemen. Net zoals je beter kan worden in wat je doet door af en toe een extra uitdaging aan te gaan!",
"CLIENT_REQUIREMENT": "Client requirement is new requirement that was not previously expected and it is required to be part of the project",
"TEAM_REQUIREMENT": "Team requirement is a requirement that must exist in the project but should have no cost for the client",
"CAPSLOCK_WARNING": "Let op! Je schrijft met alleen hoofdletters en dit veld is hoofdlettergevoelig.",
"OWNER": "Project Owner",
"CAPSLOCK_WARNING": "Be careful! You are using capital letters in an input field that is case sensitive.",
"FORM_ERRORS": {
"DEFAULT_MESSAGE": "Deze waarde lijkt ongeldig te zijn",
"TYPE_EMAIL": "Deze waarde moet een geldig emailadres bevatten",
@ -65,7 +66,9 @@
"MIN_CHECK": "Je moet minstens %s opties selecteren.",
"MAX_CHECK": "Je moet %s keuzes of minder selecteren.",
"RANGE_CHECK": "Je moet tussen %s en %s keuzes selecteren.",
"EQUAL_TO": "Deze waarde zou hetzelfde moeten zijn."
"EQUAL_TO": "Deze waarde zou hetzelfde moeten zijn.",
"LINEWIDTH": "One or more lines is perhaps too long. Try to keep under %s characters.",
"PIKADAY": "Invalid date format, please use DD MMM YYYY (like 23 Mar 1984)"
},
"PICKERDATE": {
"FORMAT": "DD MMM YYYY",
@ -282,9 +285,9 @@
"HEADER": "Ik heb al een Taiga login",
"PLACEHOLDER_AUTH_NAME": "Gebruikersnaam of email (case sensitive)",
"LINK_FORGOT_PASSWORD": "Vergeten?",
"TITLE_LINK_FORGOT_PASSWORD": "Did you forget your password?",
"TITLE_LINK_FORGOT_PASSWORD": "Ben je je wachtwoord vergeten?",
"ACTION_ENTER": "Enter",
"ACTION_SIGN_IN": "Login",
"ACTION_SIGN_IN": "Log in",
"PLACEHOLDER_AUTH_PASSWORD": "Wachtwoord (hoofdlettergevoelig)"
},
"LOGIN_FORM": {
@ -315,7 +318,8 @@
"PLACEHOLDER_FIELD": "Gebruikersnaam of e-mail",
"ACTION_RESET_PASSWORD": "Wachtwoord resetten",
"LINK_CANCEL": "Nah, stuur me terug. I denk dat ik het zal onthouden.",
"SUCCESS": "<strong>Controleer je inbox!</strong><br />We hebben je een email gestuurd met instructie om een nieuw wachtwoord aan te maken",
"SUCCESS_TITLE": "Check your inbox!",
"SUCCESS_TEXT": "We sent you an email with the instructions to set a new password",
"ERROR": "Volgens onze Oempa-Loempa's ben je nog niet geregisteerd"
},
"CHANGE_PASSWORD": {
@ -336,7 +340,7 @@
"PLACEHOLDER_NEW_PASSWORD": "Nieuw wachtwoord",
"PLACEHOLDER_RE_TYPE_NEW_PASSWORD": "Herhaal wachtwoord",
"ACTION_RESET_PASSWORD": "Wachtwoord resetten",
"ERROR": "Our Oompa Loompas can't find your request to recover your password. Try to ask for it again.",
"ERROR": "Onze Oempa-Loempa's kunnen het verzoek om je wachtwoord te herstellen niet terugvinden. Probeer het nog een keer.",
"SUCCESS": "Onze Oempa-Loempas hebben je nieuwe wachtwoord opgeslagen.<br /> Probeer ermee <strong>in te loggen</strong>."
},
"INVITATION": {
@ -351,8 +355,8 @@
"HOME": {
"PAGE_TITLE": "Home -Taiga",
"PAGE_DESCRIPTION": "De Taiga start pagina met jouw projecten en de aan jou toegewezen en gevolgde user stories, taken en issues",
"EMPTY_WORKING_ON": "<strong>It feels empty, doesn't it?</strong> Start working with Taiga and you'll see here the stories, tasks and issues you are workin on.",
"EMPTY_WATCHING": "<strong>Follow</strong> User Stories, Tasks, Issues in your projects and be notified about its changes :)",
"EMPTY_WORKING_ON": "<strong>Beetje kaal, vind je niet?</strong> Als je aan de slag gaat met Taiga, zie je hier de stories, taken en issues waar je aan werkt",
"EMPTY_WATCHING": "<strong>Volg</strong> User Stories, Taken, Issues binnen jouw projecten en ontvang een bericht bij veranderingen :)",
"EMPTY_PROJECT_LIST": "Je hebt nog geen projecten",
"WORKING_ON_SECTION": "Werkt aan",
"WATCHING_SECTION": "Volgers",
@ -366,14 +370,13 @@
"ATTACHMENT": {
"SECTION_NAME": "bijlagen",
"TITLE": "{{ fileName }} toegevoegd op {{ date }}",
"LIST_VIEW_MODE": "List view mode",
"GALLERY_VIEW_MODE": "Gallery view mode",
"LIST_VIEW_MODE": "Lijst weergave",
"GALLERY_VIEW_MODE": "Afbeeldingweergave",
"DESCRIPTION": "Geef een korte beschrijving",
"DEPRECATED": "(verouderd)",
"DEPRECATED_FILE": "Verouderd?",
"ADD": "Nieuwe bijlage toevoegen. {{maxFileSizeMsg}}",
"DROP": "Drop attachments here!",
"MAX_FILE_SIZE": "[Max. grootte: {{maxFileSize}}]",
"SHOW_DEPRECATED": "+ toon verouderde bijlagen",
"HIDE_DEPRECATED": "- verberg verouderde bijlagen",
"COUNT_DEPRECATED": "({{ counter }} verouderd)",
@ -406,7 +409,9 @@
"TITLE": "Gebruikers beheren",
"PAGE_TITLE": "Lidmaatschappen - {{projectName}}",
"ADD_BUTTON": "+ Nieuwe gebruiker",
"ADD_BUTTON_TITLE": "Nieuwe gebruiker toevoegen"
"ADD_BUTTON_TITLE": "Nieuwe gebruiker toevoegen",
"LIMIT_USERS_WARNING_MESSAGE_FOR_ADMIN": "Unfortunately, this project has reached its limit of <strong>({{members}})</strong> allowed members.",
"LIMIT_USERS_WARNING_MESSAGE_FOR_OWNER": "This project has reached its limit of <strong>({{members}})</strong> allowed members. If you would like to increase that limit please contact the administrator."
},
"PROJECT_EXPORT": {
"TITLE": "Export",
@ -428,6 +433,10 @@
"DISABLE": "Uitschakelen",
"BACKLOG": "Backlog",
"BACKLOG_DESCRIPTION": "Organiseer je user stories om een duidelijk overzicht van aankomend en geprioritiseerd werk te behouden.",
"NUMBER_SPRINTS": "Expected number of sprints",
"NUMBER_SPRINTS_HELP": "0 for an undetermined number",
"NUMBER_US_POINTS": "Expected total of story points",
"NUMBER_US_POINTS_HELP": "0 for an undetermined number",
"KANBAN": "Kanban",
"KANBAN_DESCRIPTION": "Organiseer je project volgens het lean principe met dit bord.",
"ISSUES": "Issues",
@ -435,9 +444,9 @@
"WIKI": "Wiki\n",
"WIKI_DESCRIPTION": "Voeg toe, wijzig of verwijder inhoud in samenwerking met anderen. Dit is the juiste plaats voor je project documentatie.",
"MEETUP": "Meet Up",
"MEETUP_DESCRIPTION": "Kies je videoconference systeem. Zelfs programmeurs hebben face-to-face contact nodig.",
"MEETUP_DESCRIPTION": "Choose your videoconference system.",
"SELECT_VIDEOCONFERENCE": "Kies een videoconference systeem",
"SALT_CHAT_ROOM": "Als je wil kan je een salt code aan de naam van de chatroom toevoegen",
"SALT_CHAT_ROOM": "Add a prefix to the chatroom name",
"JITSI_CHAT_ROOM": "Jitsi",
"APPEARIN_CHAT_ROOM": "AppearIn",
"TALKY_CHAT_ROOM": "Talky",
@ -449,22 +458,31 @@
"PROJECT_DETAILS": "Project details",
"PROJECT_NAME": "Naam project",
"PROJECT_SLUG": "Project Slug",
"NUMBER_SPRINTS": "Aantal sprinten (0 voor een onbepaalde hoeveelheid)",
"NUMBER_US_POINTS": "Aantal US punten (0 voor een onbepaalde hoeveelheid)",
"TAGS": "Tags",
"DESCRIPTION": "Beschrijving",
"RECRUITING": "Is this project looking for people?",
"RECRUITING_MESSAGE": "Who are you looking for?",
"RECRUITING_PLACEHOLDER": "Define the profiles you are looking for",
"PUBLIC_PROJECT": "Open project",
"PUBLIC_PROJECT_DESC": "Users will be able to find and view your project",
"PRIVATE_PROJECT": "Gesloten project",
"PRIVATE_PROJECT_DESC": "By default, this project will be hidden to the public",
"PRIVATE_OR_PUBLIC": "What's the difference between public and private projects?",
"DELETE": "Verwijder dit project",
"LOGO_HELP": "The image will be scaled to 80x80px.",
"CHANGE_LOGO": "Change logo",
"ACTION_USE_DEFAULT_LOGO": "Use default image"
"ACTION_USE_DEFAULT_LOGO": "Use default image",
"MAX_PRIVATE_PROJECTS": "You've reached the maximum number of private projects allowed by your current plan",
"MAX_PRIVATE_PROJECTS_MEMBERS": "The maximum number of members for private projects has been exceeded",
"MAX_PUBLIC_PROJECTS": "Unfortunately, you've reached the maximum number of public projects allowed by your current plan",
"MAX_PUBLIC_PROJECTS_MEMBERS": "The project exceeds your maximum number of members for public projects",
"PROJECT_OWNER": "Project owner",
"REQUEST_OWNERSHIP": "Request ownership",
"REQUEST_OWNERSHIP_CONFIRMATION_TITLE": "Do you want to become the new project owner?",
"REQUEST_OWNERSHIP_DESC": "Request that current project owner {{name}} transfer ownership of this project to you.",
"REQUEST_OWNERSHIP_BUTTON": "Verzoek",
"REQUEST_OWNERSHIP_SUCCESS": "We'll notify the project owner",
"CHANGE_OWNER": "Change owner",
"CHANGE_OWNER_SUCCESS_TITLE": "Ok, your request has been sent!",
"CHANGE_OWNER_SUCCESS_DESC": "We will notify you by email if the project ownership request is accepted or declined"
},
"REPORTS": {
"TITLE": "Rapporten",
@ -495,7 +513,8 @@
"ISSUE_ADD": "Voeg een aangepast veld toe in issues",
"FIELD_TYPE_TEXT": "Tekst",
"FIELD_TYPE_MULTI": "Over meerdere regels",
"FIELD_TYPE_DATE": "Date"
"FIELD_TYPE_DATE": "Date",
"FIELD_TYPE_URL": "Url"
},
"PROJECT_VALUES": {
"PAGE_TITLE": "{{sectionName}} - Project waardes - {{projectName}}",
@ -543,7 +562,7 @@
"COUNT_MEMBERS": "{{ role.members_count }} leden met deze rol",
"TITLE_DELETE_ROLE": "Verwijder Rol",
"REPLACEMENT_ROLE": "Al de gebruikers met deze rol zullen verplaats worden naar",
"WARNING_DELETE_ROLE": "<strong>Wees voorzichtig, alle schattingen door deze rol zullen worden verwijderd</strong>",
"WARNING_DELETE_ROLE": "Be careful! All role estimations will be removed",
"ERROR_DELETE_ALL": "Je kan niet alle waarden verwijderen",
"EXTERNAL_USER": "Externe gebruiker"
},
@ -671,6 +690,24 @@
},
"SUBMENU_THIDPARTIES": {
"TITLE": "Services"
},
"PROJECT_TRANSFER": {
"DO_YOU_ACCEPT_PROJECT_OWNERNSHIP": "Would you like to become the new project owner?",
"PRIVATE": "Private",
"ACCEPTED_PROJECT_OWNERNSHIP": "Congratulations! You're now the new project owner.",
"REJECTED_PROJECT_OWNERNSHIP": "OK. We'll contact the current project owner",
"ACCEPT": "Accepteren",
"REJECT": "Reject",
"PROPOSE_OWNERSHIP": "<strong>{{owner}}</strong>, the current owner of the project <strong>{{project}}</strong> has asked that you become the new project owner.",
"ADD_COMMENT_QUESTION": "Would you like to send a question to the project owner?",
"ADD_COMMENT": "Would you like to add a comment for the project owner?",
"UNLIMITED_PROJECTS": "Unlimited",
"OWNER_MESSAGE": {
"PRIVATE": "Please remember that you can own up to <strong>{{maxProjects}}</strong> private projects. You currently own <strong>{{currentProjects}}</strong> private projects",
"PUBLIC": "Please remember that you can own up to <strong>{{maxProjects}}</strong> public projects. You currently own <strong>{{currentProjects}}</strong> public projects"
},
"CANT_BE_OWNED": "At the moment you cannot become an owner of a project of this type. If you would like to become the owner of this project, please contact the administrator so they change your account settings to enable project ownership.",
"CHANGE_MY_PLAN": "Change my plan"
}
},
"USER": {
@ -731,6 +768,11 @@
"FANS_COUNTER_TITLE": "{total, plural, one{one fan} other{# fans}}",
"WATCHERS_COUNTER_TITLE": "{total, plural, one{one watcher} other{# watchers}}",
"MEMBERS_COUNTER_TITLE": "{total, plural, one{one member} other{# members}}",
"BLOCKED_PROJECT": {
"BLOCKED": "Blocked project",
"THIS_PROJECT_IS_BLOCKED": "This project is temporarily blocked",
"TO_UNBLOCK_CONTACT_THE_ADMIN_STAFF": "In order to unblock your projects, contact the administrator."
},
"STATS": {
"PROJECT": "project<br/> punten",
"DEFINED": "gedefinieerde<br/> punten",
@ -777,6 +819,7 @@
"CHANGE_PASSWORD": "Wachtwoord wijzigen",
"DASHBOARD_TITLE": "Dashboard",
"DISCOVER_TITLE": "Ontdek trending projecten",
"NEW_ITEM": "Nieuw",
"DISCOVER": "Ontdek",
"ACTION_REORDER": "Sleep om de volgorde te veranderen"
},
@ -791,7 +834,32 @@
"ERROR_TOO_MANY_REQUEST": "Sorry, onze Oempa-Loempa's zijn op het moment erg druk. Probeer het nog eens over een paar minuten.",
"ERROR_MESSAGE": "Onze Oempa-Loempa's hebben wat problemen met het importeren van je dump: {{error_message}}",
"ERROR_MAX_SIZE_EXCEEDED": "'{{fileName}}' ({{fileSize}}) is te zwaar voor onze Oempa-Loempa's, probeer het met een bestand kleiner dan ({{maxFileSize}})",
"SYNC_SUCCESS": "Je project werd met succes geïmporteerd"
"SYNC_SUCCESS": "Je project werd met succes geïmporteerd",
"PROJECT_RESTRICTIONS": {
"PROJECT_MEMBERS_DESC": "The project you are trying to import has {{members}} members, unfortunately, your current plan allows for a maximum of {{max_memberships}} members per project. If you would like to increase that limit please contact the administrator.",
"PRIVATE_PROJECTS_SPACE": {
"TITLE": "Unfortunately, your current plan does not allow for additional private projects",
"DESC": "The project you are trying to import is private. Unfortunately, your current plan does not allow for additional private projects."
},
"PUBLIC_PROJECTS_SPACE": {
"TITLE": "Unfortunately, your current plan does not allow for additional private projects",
"DESC": "The project you are trying to import is public. Unfortunately, your current plan does not allow additional public projects."
},
"PRIVATE_PROJECTS_MEMBERS": {
"TITLE": "Your current plan allows for a maximum of {{max_memberships}} members per private project"
},
"PUBLIC_PROJECTS_MEMBERS": {
"TITLE": "Your current plan allows for a maximum of {{max_memberships}} members per public project."
},
"PRIVATE_PROJECTS_SPACE_MEMBERS": {
"TITLE": "Unfortunately your current plan doesn't allow additional private projects or an increase of more than {{max_memberships}} members per private project",
"DESC": "The project that you are trying to import is private and has {{members}} members."
},
"PUBLIC_PROJECTS_SPACE_MEMBERS": {
"TITLE": "Unfortunately your current plan doesn't allow additional public projects or an increase of more than {{max_memberships}} members per public project",
"DESC": "The project that you are trying to import is public and has more than {{members}} members."
}
}
},
"LIKE_BUTTON": {
"LIKE": "Vind ik leuk",
@ -819,8 +887,11 @@
"DELETE_ACCOUNT": {
"SECTION_NAME": "Taiga account verwijderen",
"CONFIRM": "Weet je zeker dat je je Taiga account wilt verwijderen?",
"SUBTITLE": "We gaan je missen! :-(",
"NEWSLETTER_LABEL_TEXT": "Ik wil de nieuwsbrief niet meer ontvangen"
"NEWSLETTER_LABEL_TEXT": "Ik wil de nieuwsbrief niet meer ontvangen",
"CANCEL": "Back to settings",
"ACCEPT": "Delete account",
"BLOCK_PROJECT": "Note that all the projects you own projects will be <strong>blocked</strong> after you delete your account. If you do want a project blocked, transfer ownership to another member of each project prior to deleting your account.",
"SUBTITLE": "Sorry to see you go. We'll be here if you should ever consider us again! :("
},
"DELETE_PROJECT": {
"TITLE": "Verwijder project",
@ -876,7 +947,25 @@
},
"CREATE_MEMBER": {
"PLACEHOLDER_INVITATION_TEXT": "(Optioneel) Voeg een gepersonaliseerd bericht toe aan je uitnodiging. Vertel iets leuks aan je nieuwe leden ;-)",
"PLACEHOLDER_TYPE_EMAIL": "Type en E-mail"
"PLACEHOLDER_TYPE_EMAIL": "Type en E-mail",
"LIMIT_USERS_WARNING_MESSAGE_FOR_OWNER": "Unfortunately, this project can't have more than <strong>{{maxMembers}}</strong> members.<br> If you would like to increase the current limit, please contact the administrator.",
"LIMIT_USERS_WARNING_MESSAGE": "Unfortunately, this project can't have more than <strong>{{maxMembers}}</strong> members."
},
"LEAVE_PROJECT_WARNING": {
"TITLE": "Unfortunately, this project can't be left without an owner",
"CURRENT_USER_OWNER": {
"DESC": "You are the current owner of this project. Before leaving, please transfer ownership to someone else.",
"BUTTON": "Change the project owner"
},
"OTHER_USER_OWNER": {
"DESC": "Unfortunately, you can't delete a member who is also the current project owner. First, please assign a new project owner.",
"BUTTON": "Request project owner change"
}
},
"CHANGE_OWNER": {
"TITLE": "Who do you want to be the new project owner?",
"ADD_COMMENT": "Add comment",
"BUTTON": "Ask this project member to become the new project owner"
}
},
"US": {
@ -1171,7 +1260,7 @@
"SEVERITY": "Ernst",
"PRIORITIES": "Prioriteiten",
"TAGS": "Tags",
"ASSIGNED_TO": "Toegezen aan",
"ASSIGNED_TO": "Toegewezen aan",
"CREATED_BY": "Aangemaakt door",
"CUSTOM_FILTERS": "Eigen filters"
},
@ -1304,12 +1393,18 @@
}
},
"WIZARD": {
"SECTION_TITLE_CHOOSE_TEMPLATE": "Kies een template",
"CHOOSE_TEMPLATE_TEXT": "Welk template zou beter bij je project passen?",
"SECTION_TITLE_CREATE_PROJECT": "Project aanmaken",
"CREATE_PROJECT_TEXT": "Vers en proper. Spanned!",
"PROGRESS_TEMPLATE_SELECTION": "Template selectie",
"PROGRESS_NAME_DESCRIPTION": "Naam en beschrijving"
"CHOOSE_TEMPLATE": "Which template fits your project best?",
"CHOOSE_TEMPLATE_TITLE": "More info about project templates",
"CHOOSE_TEMPLATE_INFO": "More info",
"PROJECT_DETAILS": "Project Details",
"PUBLIC_PROJECT": "Public Project",
"PRIVATE_PROJECT": "Private Project",
"CREATE_PROJECT": "Project aanmaken",
"MAX_PRIVATE_PROJECTS": "You've reached the maximum number of private projects",
"MAX_PUBLIC_PROJECTS": "Unfortunately, you've reached the maximum number of public projects",
"CHANGE_PLANS": "change plans"
},
"WIKI": {
"PAGE_TITLE": "{{wikiPageName}} - Wiki - {{projectName}}",

View File

@ -41,7 +41,8 @@
"IOCAINE_TEXT": "Czujesz się trochę przytłoczony zadaniem? Daj znać innym klikając na ikonę Iokainy podczas edycji zadania. Jest szansa, że staniesz się odporny na tą (fikcyjną ;) ) śmiertelną truciznę biorąc małe dawki. Z pewnością jednak da Ci ona dodatkowego kopa, który pomoże w pokonaniu nowego wyzwania i staniu się lepszym w tym co robisz!",
"CLIENT_REQUIREMENT": "Client requirement is new requirement that was not previously expected and it is required to be part of the project",
"TEAM_REQUIREMENT": "Team requirement is a requirement that must exist in the project but should have no cost for the client",
"CAPSLOCK_WARNING": "UWAGA! Klawisz CAPSLOCK jest aktywny.",
"OWNER": "Project Owner",
"CAPSLOCK_WARNING": "Be careful! You are using capital letters in an input field that is case sensitive.",
"FORM_ERRORS": {
"DEFAULT_MESSAGE": "Nieprawidłowa wartość",
"TYPE_EMAIL": "Podaj prawidłowy adres email.",
@ -65,7 +66,9 @@
"MIN_CHECK": "Musisz zaznaczyć przynajmniej %s pozycji.",
"MAX_CHECK": "Musisz zaznaczyć %s pozycji lub mniej.",
"RANGE_CHECK": "Musisz zaznaczyć pomiędzy %s a %s pozycji.",
"EQUAL_TO": "Ta wartość powinna być taka sama."
"EQUAL_TO": "Ta wartość powinna być taka sama.",
"LINEWIDTH": "One or more lines is perhaps too long. Try to keep under %s characters.",
"PIKADAY": "Invalid date format, please use DD MMM YYYY (like 23 Mar 1984)"
},
"PICKERDATE": {
"FORMAT": "DD MMM YYYY",
@ -315,7 +318,8 @@
"PLACEHOLDER_FIELD": "Login albo e-mail",
"ACTION_RESET_PASSWORD": "Resetuj hasło",
"LINK_CANCEL": "Nie, zabierz mnie stąd. Chyba je pamiętam.",
"SUCCESS": "<strong>Sprawdź swoją skrzynkę!</strong><br />Wysłaliśmy Ci wiadomość e-mail z instrukcją jak ustawić nowe hasło.",
"SUCCESS_TITLE": "Check your inbox!",
"SUCCESS_TEXT": "We sent you an email with the instructions to set a new password",
"ERROR": "Nasze Umpa Lumpy twierdzą, że nie jesteś jeszcze zarejestrowany."
},
"CHANGE_PASSWORD": {
@ -373,7 +377,6 @@
"DEPRECATED_FILE": "Przestarzałe?",
"ADD": "Dodaj nowy załącznik. {{maxFileSizeMsg}}",
"DROP": "Drop attachments here!",
"MAX_FILE_SIZE": "[Maks. rozmiar: {{maxFileSize}}]",
"SHOW_DEPRECATED": "+ pokaż przestarzałe załączniki",
"HIDE_DEPRECATED": "- ukryj przestarzałe załączniki",
"COUNT_DEPRECATED": "({{ counter }} przestarzałych",
@ -406,7 +409,9 @@
"TITLE": "Zarządzaj członkami",
"PAGE_TITLE": "Członkostwa - {{projectName}}",
"ADD_BUTTON": "+ Nowy członek",
"ADD_BUTTON_TITLE": "Dodaj nowego członka"
"ADD_BUTTON_TITLE": "Dodaj nowego członka",
"LIMIT_USERS_WARNING_MESSAGE_FOR_ADMIN": "Unfortunately, this project has reached its limit of <strong>({{members}})</strong> allowed members.",
"LIMIT_USERS_WARNING_MESSAGE_FOR_OWNER": "This project has reached its limit of <strong>({{members}})</strong> allowed members. If you would like to increase that limit please contact the administrator."
},
"PROJECT_EXPORT": {
"TITLE": "Eksport",
@ -428,6 +433,10 @@
"DISABLE": "Wyłącz",
"BACKLOG": "Dziennik",
"BACKLOG_DESCRIPTION": "Zarządzaj swoimi historyjkami użytkownika aby utrzymać zorganizowany widok i priorytety zadań",
"NUMBER_SPRINTS": "Expected number of sprints",
"NUMBER_SPRINTS_HELP": "0 for an undetermined number",
"NUMBER_US_POINTS": "Expected total of story points",
"NUMBER_US_POINTS_HELP": "0 for an undetermined number",
"KANBAN": "Kanban",
"KANBAN_DESCRIPTION": "Organizuj swój projekt przy użyciu metody lean.",
"ISSUES": "Zgłoszenia",
@ -435,9 +444,9 @@
"WIKI": "Wiki",
"WIKI_DESCRIPTION": "Dodawaj, modyfikuj lub usuwaj dane we współpracy z innymi. To jest właściwe miejsce dla Twojej dokumentacji projektowej.",
"MEETUP": "Spotkaj się",
"MEETUP_DESCRIPTION": "Wybierz system wideokonferencji. Nawet programiści potrzebują kontaktu twarzą w twarz.",
"MEETUP_DESCRIPTION": "Choose your videoconference system.",
"SELECT_VIDEOCONFERENCE": "Wybierz system do wideokonferencji.",
"SALT_CHAT_ROOM": "Jeśli chcesz możesz dodać salt code do nazwy pokoju chatu.",
"SALT_CHAT_ROOM": "Add a prefix to the chatroom name",
"JITSI_CHAT_ROOM": "Jitsi",
"APPEARIN_CHAT_ROOM": "AppearIn",
"TALKY_CHAT_ROOM": "Talky",
@ -449,22 +458,31 @@
"PROJECT_DETAILS": "Szczegóły projektu",
"PROJECT_NAME": "Nazwa projektu",
"PROJECT_SLUG": "Szczegóły projektu",
"NUMBER_SPRINTS": "Number of sprints (0 for an undetermined quantity)",
"NUMBER_US_POINTS": "Number of US points (0 for an undetermined quantity)",
"TAGS": "Tagi",
"DESCRIPTION": "Opis",
"RECRUITING": "Is this project looking for people?",
"RECRUITING_MESSAGE": "Who are you looking for?",
"RECRUITING_PLACEHOLDER": "Define the profiles you are looking for",
"PUBLIC_PROJECT": "Projekt publiczny",
"PUBLIC_PROJECT_DESC": "Users will be able to find and view your project",
"PRIVATE_PROJECT": "Projekt prywatny",
"PRIVATE_PROJECT_DESC": "By default, this project will be hidden to the public",
"PRIVATE_OR_PUBLIC": "What's the difference between public and private projects?",
"DELETE": "Usuń ten projekt",
"LOGO_HELP": "The image will be scaled to 80x80px.",
"CHANGE_LOGO": "Change logo",
"ACTION_USE_DEFAULT_LOGO": "Use default image"
"ACTION_USE_DEFAULT_LOGO": "Use default image",
"MAX_PRIVATE_PROJECTS": "You've reached the maximum number of private projects allowed by your current plan",
"MAX_PRIVATE_PROJECTS_MEMBERS": "The maximum number of members for private projects has been exceeded",
"MAX_PUBLIC_PROJECTS": "Unfortunately, you've reached the maximum number of public projects allowed by your current plan",
"MAX_PUBLIC_PROJECTS_MEMBERS": "The project exceeds your maximum number of members for public projects",
"PROJECT_OWNER": "Project owner",
"REQUEST_OWNERSHIP": "Request ownership",
"REQUEST_OWNERSHIP_CONFIRMATION_TITLE": "Do you want to become the new project owner?",
"REQUEST_OWNERSHIP_DESC": "Request that current project owner {{name}} transfer ownership of this project to you.",
"REQUEST_OWNERSHIP_BUTTON": "Żądanie",
"REQUEST_OWNERSHIP_SUCCESS": "We'll notify the project owner",
"CHANGE_OWNER": "Change owner",
"CHANGE_OWNER_SUCCESS_TITLE": "Ok, your request has been sent!",
"CHANGE_OWNER_SUCCESS_DESC": "We will notify you by email if the project ownership request is accepted or declined"
},
"REPORTS": {
"TITLE": "Raporty",
@ -495,7 +513,8 @@
"ISSUE_ADD": "Dodaj własne pole dla zgłoszeń",
"FIELD_TYPE_TEXT": "Tekst",
"FIELD_TYPE_MULTI": "Pole wielowierszowe",
"FIELD_TYPE_DATE": "Date"
"FIELD_TYPE_DATE": "Date",
"FIELD_TYPE_URL": "Url"
},
"PROJECT_VALUES": {
"PAGE_TITLE": "{{sectionName}} - Wartości projektu - {{projectName}}",
@ -543,7 +562,7 @@
"COUNT_MEMBERS": "{{ role.members_count }} użytkowników pełniących tę rolę w projekcie",
"TITLE_DELETE_ROLE": "Usuń rolę",
"REPLACEMENT_ROLE": "Wszyscy użytkownicy pełniący tę rolę zostaną przeniesieni do",
"WARNING_DELETE_ROLE": "<strong>Ostrożnie, wszystkie estymaty dodane przez ludzi pełniących tę rolę zostaną usunięte</strong>",
"WARNING_DELETE_ROLE": "Be careful! All role estimations will be removed",
"ERROR_DELETE_ALL": "Nie możesz usunąć wszystkich wartości",
"EXTERNAL_USER": "Zewnętrzny użytkownik"
},
@ -671,6 +690,24 @@
},
"SUBMENU_THIDPARTIES": {
"TITLE": "Ważność"
},
"PROJECT_TRANSFER": {
"DO_YOU_ACCEPT_PROJECT_OWNERNSHIP": "Would you like to become the new project owner?",
"PRIVATE": "Private",
"ACCEPTED_PROJECT_OWNERNSHIP": "Congratulations! You're now the new project owner.",
"REJECTED_PROJECT_OWNERNSHIP": "OK. We'll contact the current project owner",
"ACCEPT": "Akceptuj",
"REJECT": "Reject",
"PROPOSE_OWNERSHIP": "<strong>{{owner}}</strong>, the current owner of the project <strong>{{project}}</strong> has asked that you become the new project owner.",
"ADD_COMMENT_QUESTION": "Would you like to send a question to the project owner?",
"ADD_COMMENT": "Would you like to add a comment for the project owner?",
"UNLIMITED_PROJECTS": "Unlimited",
"OWNER_MESSAGE": {
"PRIVATE": "Please remember that you can own up to <strong>{{maxProjects}}</strong> private projects. You currently own <strong>{{currentProjects}}</strong> private projects",
"PUBLIC": "Please remember that you can own up to <strong>{{maxProjects}}</strong> public projects. You currently own <strong>{{currentProjects}}</strong> public projects"
},
"CANT_BE_OWNED": "At the moment you cannot become an owner of a project of this type. If you would like to become the owner of this project, please contact the administrator so they change your account settings to enable project ownership.",
"CHANGE_MY_PLAN": "Change my plan"
}
},
"USER": {
@ -731,6 +768,11 @@
"FANS_COUNTER_TITLE": "{total, plural, one{one fan} other{# fans}}",
"WATCHERS_COUNTER_TITLE": "{total, plural, one{one watcher} other{# watchers}}",
"MEMBERS_COUNTER_TITLE": "{total, plural, one{one member} other{# members}}",
"BLOCKED_PROJECT": {
"BLOCKED": "Blocked project",
"THIS_PROJECT_IS_BLOCKED": "This project is temporarily blocked",
"TO_UNBLOCK_CONTACT_THE_ADMIN_STAFF": "In order to unblock your projects, contact the administrator."
},
"STATS": {
"PROJECT": "projekt<br/> punkty",
"DEFINED": "zdefiniowane<br/> punkty",
@ -777,6 +819,7 @@
"CHANGE_PASSWORD": "Zmień hasło",
"DASHBOARD_TITLE": "Dashboard",
"DISCOVER_TITLE": "Odkryj projekty",
"NEW_ITEM": "Nowe",
"DISCOVER": "Odkryj",
"ACTION_REORDER": "Przeciągnij i upuść żeby zmienić kolejność"
},
@ -791,7 +834,32 @@
"ERROR_TOO_MANY_REQUEST": "Umpa Lumpy są teraz zajęte a serwer ma zadyszkę. Spróbuj ponownie za chwilę.",
"ERROR_MESSAGE": "Przy imporcie wystąpił następujący problem: {{error_message}}",
"ERROR_MAX_SIZE_EXCEEDED": "'{{fileName}}' ({{fileSize}}) plik jest za ciężki, maksymalna wartość to: ({{maxFileSize}})",
"SYNC_SUCCESS": "Twój projekt zaimportował się prawidłowo!"
"SYNC_SUCCESS": "Twój projekt zaimportował się prawidłowo!",
"PROJECT_RESTRICTIONS": {
"PROJECT_MEMBERS_DESC": "The project you are trying to import has {{members}} members, unfortunately, your current plan allows for a maximum of {{max_memberships}} members per project. If you would like to increase that limit please contact the administrator.",
"PRIVATE_PROJECTS_SPACE": {
"TITLE": "Unfortunately, your current plan does not allow for additional private projects",
"DESC": "The project you are trying to import is private. Unfortunately, your current plan does not allow for additional private projects."
},
"PUBLIC_PROJECTS_SPACE": {
"TITLE": "Unfortunately, your current plan does not allow for additional private projects",
"DESC": "The project you are trying to import is public. Unfortunately, your current plan does not allow additional public projects."
},
"PRIVATE_PROJECTS_MEMBERS": {
"TITLE": "Your current plan allows for a maximum of {{max_memberships}} members per private project"
},
"PUBLIC_PROJECTS_MEMBERS": {
"TITLE": "Your current plan allows for a maximum of {{max_memberships}} members per public project."
},
"PRIVATE_PROJECTS_SPACE_MEMBERS": {
"TITLE": "Unfortunately your current plan doesn't allow additional private projects or an increase of more than {{max_memberships}} members per private project",
"DESC": "The project that you are trying to import is private and has {{members}} members."
},
"PUBLIC_PROJECTS_SPACE_MEMBERS": {
"TITLE": "Unfortunately your current plan doesn't allow additional public projects or an increase of more than {{max_memberships}} members per public project",
"DESC": "The project that you are trying to import is public and has more than {{members}} members."
}
}
},
"LIKE_BUTTON": {
"LIKE": "Like",
@ -819,8 +887,11 @@
"DELETE_ACCOUNT": {
"SECTION_NAME": "Usuń konto z Taiga",
"CONFIRM": "Czy na pewno chcesz usunąć swoje konto z Taiga?",
"SUBTITLE": "Będziemy tęsknić! :(",
"NEWSLETTER_LABEL_TEXT": "Nie chcę więcej otrzymywać waszego newslettera"
"NEWSLETTER_LABEL_TEXT": "Nie chcę więcej otrzymywać waszego newslettera",
"CANCEL": "Back to settings",
"ACCEPT": "Delete account",
"BLOCK_PROJECT": "Note that all the projects you own projects will be <strong>blocked</strong> after you delete your account. If you do want a project blocked, transfer ownership to another member of each project prior to deleting your account.",
"SUBTITLE": "Sorry to see you go. We'll be here if you should ever consider us again! :("
},
"DELETE_PROJECT": {
"TITLE": "Usuń projekt",
@ -876,7 +947,25 @@
},
"CREATE_MEMBER": {
"PLACEHOLDER_INVITATION_TEXT": "(Opcjonalne) Dodaj spersonalizowany tekst do zaproszenia. Napisz coś słodziachnego do nowego członka zespołu :)",
"PLACEHOLDER_TYPE_EMAIL": "Wpisz Email"
"PLACEHOLDER_TYPE_EMAIL": "Wpisz Email",
"LIMIT_USERS_WARNING_MESSAGE_FOR_OWNER": "Unfortunately, this project can't have more than <strong>{{maxMembers}}</strong> members.<br> If you would like to increase the current limit, please contact the administrator.",
"LIMIT_USERS_WARNING_MESSAGE": "Unfortunately, this project can't have more than <strong>{{maxMembers}}</strong> members."
},
"LEAVE_PROJECT_WARNING": {
"TITLE": "Unfortunately, this project can't be left without an owner",
"CURRENT_USER_OWNER": {
"DESC": "You are the current owner of this project. Before leaving, please transfer ownership to someone else.",
"BUTTON": "Change the project owner"
},
"OTHER_USER_OWNER": {
"DESC": "Unfortunately, you can't delete a member who is also the current project owner. First, please assign a new project owner.",
"BUTTON": "Request project owner change"
}
},
"CHANGE_OWNER": {
"TITLE": "Who do you want to be the new project owner?",
"ADD_COMMENT": "Add comment",
"BUTTON": "Ask this project member to become the new project owner"
}
},
"US": {
@ -1304,12 +1393,18 @@
}
},
"WIZARD": {
"SECTION_TITLE_CHOOSE_TEMPLATE": "Wybierz szablon",
"CHOOSE_TEMPLATE_TEXT": "Który szablon lepiej pasuje do Twojego projektu?",
"SECTION_TITLE_CREATE_PROJECT": "Utwórz projekt",
"CREATE_PROJECT_TEXT": "Nowy, zwinny! To takie ekscytujące!",
"PROGRESS_TEMPLATE_SELECTION": "Wybór szablonu",
"PROGRESS_NAME_DESCRIPTION": "Nazwa i opis"
"CHOOSE_TEMPLATE": "Which template fits your project best?",
"CHOOSE_TEMPLATE_TITLE": "More info about project templates",
"CHOOSE_TEMPLATE_INFO": "More info",
"PROJECT_DETAILS": "Project Details",
"PUBLIC_PROJECT": "Public Project",
"PRIVATE_PROJECT": "Private Project",
"CREATE_PROJECT": "Utwórz projekt",
"MAX_PRIVATE_PROJECTS": "You've reached the maximum number of private projects",
"MAX_PUBLIC_PROJECTS": "Unfortunately, you've reached the maximum number of public projects",
"CHANGE_PLANS": "change plans"
},
"WIKI": {
"PAGE_TITLE": "{{wikiPageName}} - Wiki - {{projectName}}",

View File

@ -2,7 +2,7 @@
"COMMON": {
"YES": "Sim",
"NO": "Não",
"OR": "or",
"OR": "ou",
"LOADING": "Carregando...",
"LOADING_PROJECT": "Carregando o projeto...",
"DATE": "DD MMM YYYY",
@ -19,11 +19,11 @@
"TAG_LINE": "Sua ferramenta de código aberto, gratuita e ágil.",
"TAG_LINE_2": "AME SEU PROJETO",
"BLOCK": "Bloquear",
"BLOCK_TITLE": "Block this item for example if it has a dependency that can not be satisfied",
"BLOCK_TITLE": "Bloqueia este item, por exemplo, se ele possui uma dependência não resolvida",
"BLOCKED": "Bloqueado",
"UNBLOCK": "Desbloquear",
"UNBLOCK_TITLE": "Unblock this item",
"BLOCKED_NOTE": "Why is this blocked?",
"UNBLOCK_TITLE": "Desbloquear este item",
"BLOCKED_NOTE": "Por que esta bloqueado?",
"BLOCKED_REASON": "Por favor, explique a razão",
"CREATED_BY": "Criado por {{fullDisplayName}}",
"FROM": "de",
@ -41,7 +41,8 @@
"IOCAINE_TEXT": "Se sentindo sobrecarregado por uma tarefa? Assegure-se de que os outros saibam disso clicando em Iocaine quando estiver editando a tarefa. É possível se tornar imune a essse veneno mortal (fictício) consumindo pequenas quantidades ao longo do tempo, assim como é possível ficar melhor no que faz, ocasionalmente, por assumir desafios extras!",
"CLIENT_REQUIREMENT": "Client requirement is new requirement that was not previously expected and it is required to be part of the project",
"TEAM_REQUIREMENT": "Team requirement is a requirement that must exist in the project but should have no cost for the client",
"CAPSLOCK_WARNING": "Seja cuidadoso! Você está escrevendo em letras maiúsculas e esse campo é case sensitive, ou seja trata com distinção letras maiúsculas das minúsculas",
"OWNER": "Project Owner",
"CAPSLOCK_WARNING": "Be careful! You are using capital letters in an input field that is case sensitive.",
"FORM_ERRORS": {
"DEFAULT_MESSAGE": "Este valor parece ser inválido.",
"TYPE_EMAIL": "Este valor deve ser um e-mail válido.",
@ -65,7 +66,9 @@
"MIN_CHECK": "Você deve selecionar pelo menos %s escolhas.",
"MAX_CHECK": "Você deve selecionar %s escolhas ou menos.",
"RANGE_CHECK": "Você deve selecionar entre %s e %s escolhas.",
"EQUAL_TO": "Esse valor deveria ser o mesmo."
"EQUAL_TO": "Esse valor deveria ser o mesmo.",
"LINEWIDTH": "One or more lines is perhaps too long. Try to keep under %s characters.",
"PIKADAY": "Invalid date format, please use DD MMM YYYY (like 23 Mar 1984)"
},
"PICKERDATE": {
"FORMAT": "DD MMM YYYY",
@ -205,11 +208,11 @@
"BOLD_BUTTON_SAMPLE_TEXT": "Seu texto aqui...",
"ITALIC_BUTTON": "Itálico",
"ITALIC_SAMPLE_TEXT": "Seu texto aqui...",
"STRIKE_BUTTON": "Strike",
"STRIKE_BUTTON": "Riscar",
"STRIKE_SAMPLE_TEXT": "Seu texto aqui...",
"BULLETED_LIST_BUTTON": "Lista de Marcadores",
"BULLETED_LIST_BUTTON": "Lista de marcadores",
"BULLETED_LIST_SAMPLE_TEXT": "Seu texto aqui...",
"NUMERIC_LIST_BUTTON": "Lista Numérica",
"NUMERIC_LIST_BUTTON": "Lista numérica",
"NUMERIC_LIST_SAMPLE_TEXT": "Seu texto aqui...",
"PICTURE_BUTTON": "Imagem",
"PICTURE_SAMPLE_TEXT": "Seu texto alternativo para a imagem aqui...",
@ -217,7 +220,7 @@
"LINK_SAMPLE_TEXT": "Seu texto para o link vai aqui...",
"QUOTE_BLOCK_BUTTON": "Bloco de citação",
"QUOTE_BLOCK_SAMPLE_TEXT": "Seu texto aqui...",
"CODE_BLOCK_BUTTON": "Bloco de Código",
"CODE_BLOCK_BUTTON": "Bloco de código",
"CODE_BLOCK_SAMPLE_TEXT": "Seu texto aqui...",
"PREVIEW_BUTTON": "Pré Visualizar",
"EDIT_BUTTON": "Editar",
@ -229,13 +232,13 @@
"VIEW_SPRINTS": "Ver sprints",
"ADD_SPRINTS": "Adicionar sprints",
"MODIFY_SPRINTS": "Modificar sprints",
"DELETE_SPRINTS": "Apagar Sprints"
"DELETE_SPRINTS": "Apagar sprints"
},
"USER_STORIES": {
"NAME": "User Stories",
"VIEW_USER_STORIES": "Ver user stories",
"ADD_USER_STORIES": "Adicionar user stories",
"MODIFY_USER_STORIES": "Modificar user stories",
"MODIFY_USER_STORIES": "Modificar estórias de usuário",
"DELETE_USER_STORIES": "Apagar user stories"
},
"TASKS": {
@ -315,7 +318,8 @@
"PLACEHOLDER_FIELD": "Nome de usuário ou email",
"ACTION_RESET_PASSWORD": "Resetar Senha",
"LINK_CANCEL": "Nããão, me leve de volta. Acho que me lembrei.",
"SUCCESS": "<strong>Verifique sua conta de email</strong><br />Enviamos um email com as instruções para configurar uma nova senha",
"SUCCESS_TITLE": "Check your inbox!",
"SUCCESS_TEXT": "We sent you an email with the instructions to set a new password",
"ERROR": "Segundo nossos Oompa Loompas, você ainda não está inscrito."
},
"CHANGE_PASSWORD": {
@ -350,9 +354,9 @@
},
"HOME": {
"PAGE_TITLE": "Início - Taiga",
"PAGE_DESCRIPTION": "A página inicial do Taiga contém seus projetos principais e todos as user stories atribuídas ou observadas por você, tarefas e casos",
"EMPTY_WORKING_ON": "<strong>Isso parece vazio não acha?</strong> Comece a trabalhar com Taiga para começar a ver estórias, tarefas e casos em que está trabalhando.",
"EMPTY_WATCHING": "<strong>Siga</strong> Estórias, Tarefas e Casos nos seus projetos e seja notificado das mudanças :)",
"PAGE_DESCRIPTION": "A página inicial do Taiga com seus principais projetos e todas as estórias atribuídas ou observadas por você, tarefas e problemas",
"EMPTY_WORKING_ON": "<strong>Isso parece vazio não acha?</strong> Comece a trabalhar com Taiga para começar a ver estórias, tarefas e problemas em que está trabalhando.",
"EMPTY_WATCHING": "<strong>Siga</strong> Estórias, Tarefas e Problemas nos seus projetos e seja notificado das mudanças :)",
"EMPTY_PROJECT_LIST": "Você ainda não tem projetos",
"WORKING_ON_SECTION": "Trabalhando em",
"WATCHING_SECTION": "Observando",
@ -366,14 +370,13 @@
"ATTACHMENT": {
"SECTION_NAME": "anexos",
"TITLE": "{{ fileName }} enviado em {{ date }}",
"LIST_VIEW_MODE": "List view mode",
"GALLERY_VIEW_MODE": "Gallery view mode",
"LIST_VIEW_MODE": "Modo de visualização lista",
"GALLERY_VIEW_MODE": "Modo de Visualização Galeria",
"DESCRIPTION": "Escreva uma curta descrição",
"DEPRECATED": "(obsoleto)",
"DEPRECATED_FILE": "Obsoleto?",
"ADD": "Adicionar novo anexo. {{maxFileSizeMsg}}",
"DROP": "Jogue os anexos aqui!",
"MAX_FILE_SIZE": "[Tamanho Máximo: {{maxFileSize}}]",
"SHOW_DEPRECATED": "+ mostrar anexos deprecados",
"HIDE_DEPRECATED": "- esconder anexos obsoletos",
"COUNT_DEPRECATED": "({{ counter }} deprecados)",
@ -406,7 +409,9 @@
"TITLE": "Gerenciar Membros",
"PAGE_TITLE": "Filiados - {{projectName}}",
"ADD_BUTTON": "+ Novo Membro",
"ADD_BUTTON_TITLE": "Adicionar novo membro"
"ADD_BUTTON_TITLE": "Adicionar novo membro",
"LIMIT_USERS_WARNING_MESSAGE_FOR_ADMIN": "Unfortunately, this project has reached its limit of <strong>({{members}})</strong> allowed members.",
"LIMIT_USERS_WARNING_MESSAGE_FOR_OWNER": "This project has reached its limit of <strong>({{members}})</strong> allowed members. If you would like to increase that limit please contact the administrator."
},
"PROJECT_EXPORT": {
"TITLE": "Exportar",
@ -428,16 +433,20 @@
"DISABLE": "Desabilitar",
"BACKLOG": "Backlog",
"BACKLOG_DESCRIPTION": "Gerencie suas user stories para manter uma visualização organizada de trabalhos futuros e priorizados.",
"NUMBER_SPRINTS": "Expected number of sprints",
"NUMBER_SPRINTS_HELP": "0 for an undetermined number",
"NUMBER_US_POINTS": "Expected total of story points",
"NUMBER_US_POINTS_HELP": "0 for an undetermined number",
"KANBAN": "Kanban",
"KANBAN_DESCRIPTION": "Organize seu projeto de um jeito \"lean\" com esse mural",
"ISSUES": "Casos",
"ISSUES": "Problemas",
"ISSUES_DESCRIPTION": "Acompanhe os bugs, questões e melhorias relacionadas ao seu projeto. Não perca nada!",
"WIKI": "Wiki",
"WIKI_DESCRIPTION": "Adicione, modifique ou apague conteúdo em colaboração com outras pessoas. Este é o local certo pra documentação do seu projeto.",
"MEETUP": "Reunião",
"MEETUP_DESCRIPTION": "Escolha seu sistema de vídeo conferência. Até desenvolvedores precisam de contato cara a cara.",
"MEETUP_DESCRIPTION": "Choose your videoconference system.",
"SELECT_VIDEOCONFERENCE": "Selecione um sistema de video conferência",
"SALT_CHAT_ROOM": "Se você quiser, pode acrescentar um 'salt code' para o nome da sala de bate-papo",
"SALT_CHAT_ROOM": "Add a prefix to the chatroom name",
"JITSI_CHAT_ROOM": "Jitsi",
"APPEARIN_CHAT_ROOM": "AppearIn",
"TALKY_CHAT_ROOM": "Talky",
@ -449,22 +458,31 @@
"PROJECT_DETAILS": "Detalhes do projeto",
"PROJECT_NAME": "Nome do projeto",
"PROJECT_SLUG": "Slug do projeto",
"NUMBER_SPRINTS": "Número de sprints (0 para uma quantidade indeterminada)",
"NUMBER_US_POINTS": "Número de pontos US (0 para uma quantidade indeterminada)",
"TAGS": "Tags",
"DESCRIPTION": "Descrição",
"RECRUITING": "Is this project looking for people?",
"RECRUITING": "Este projeto esta a procura de colaboradores?",
"RECRUITING_MESSAGE": "O que você está procurando?",
"RECRUITING_PLACEHOLDER": "Define the profiles you are looking for",
"RECRUITING_PLACEHOLDER": "Defina o perfil que você procura?",
"PUBLIC_PROJECT": "Projeto Publico",
"PUBLIC_PROJECT_DESC": "Users will be able to find and view your project",
"PRIVATE_PROJECT": "Projeto Privado",
"PRIVATE_PROJECT_DESC": "Por padrão, esse projeto é escondido do público",
"PRIVATE_OR_PUBLIC": "Qual a diferença entre projeto público e privado?",
"DELETE": "Apagar este projeto",
"LOGO_HELP": "A imagem deve ser na escala de 80x80px.",
"CHANGE_LOGO": "Alterar logo",
"ACTION_USE_DEFAULT_LOGO": "Usar imagem padrão"
"ACTION_USE_DEFAULT_LOGO": "Usar imagem padrão",
"MAX_PRIVATE_PROJECTS": "You've reached the maximum number of private projects allowed by your current plan",
"MAX_PRIVATE_PROJECTS_MEMBERS": "The maximum number of members for private projects has been exceeded",
"MAX_PUBLIC_PROJECTS": "Unfortunately, you've reached the maximum number of public projects allowed by your current plan",
"MAX_PUBLIC_PROJECTS_MEMBERS": "The project exceeds your maximum number of members for public projects",
"PROJECT_OWNER": "Project owner",
"REQUEST_OWNERSHIP": "Request ownership",
"REQUEST_OWNERSHIP_CONFIRMATION_TITLE": "Do you want to become the new project owner?",
"REQUEST_OWNERSHIP_DESC": "Request that current project owner {{name}} transfer ownership of this project to you.",
"REQUEST_OWNERSHIP_BUTTON": "Solicitação",
"REQUEST_OWNERSHIP_SUCCESS": "We'll notify the project owner",
"CHANGE_OWNER": "Change owner",
"CHANGE_OWNER_SUCCESS_TITLE": "Ok, your request has been sent!",
"CHANGE_OWNER_SUCCESS_DESC": "We will notify you by email if the project ownership request is accepted or declined"
},
"REPORTS": {
"TITLE": "Relatórios",
@ -477,7 +495,7 @@
"CSV": {
"SECTION_TITLE_US": "Relatórios de user stories",
"SECTION_TITLE_TASK": "relatórios de tarefas",
"SECTION_TITLE_ISSUE": "relatórios de casos",
"SECTION_TITLE_ISSUE": "relatórios de problemas",
"DOWNLOAD": "Baixar CSV",
"URL_FIELD_PLACEHOLDER": "Por favor, gere novamente a url do CSV",
"TITLE_REGENERATE_URL": "Regerar URL CSV",
@ -486,16 +504,17 @@
},
"CUSTOM_FIELDS": {
"TITLE": "Campos Personalizados",
"SUBTITLE": "Especificar campos personalizados para user stories, tarefas e casos",
"SUBTITLE": "Especificar campos personalizados para estórias, tarefas e problemas",
"US_DESCRIPTION": "Campos personalizados das user stories",
"US_ADD": "Adicionar campo personalizado nas user stories",
"TASK_DESCRIPTION": "Campos personalizados das Tarefas\n",
"TASK_ADD": "Adicionar campos personalizados na tarefa",
"ISSUE_DESCRIPTION": "Campos personalizados dos casos",
"ISSUE_ADD": "Adicionar um campo personalizado no caso",
"ISSUE_DESCRIPTION": "Campos personalizados dos problemas",
"ISSUE_ADD": "Adicionar um campo personalizado no problema",
"FIELD_TYPE_TEXT": "Texto",
"FIELD_TYPE_MULTI": "Multi-linha",
"FIELD_TYPE_DATE": "Data"
"FIELD_TYPE_DATE": "Data",
"FIELD_TYPE_URL": "Url"
},
"PROJECT_VALUES": {
"PAGE_TITLE": "{{sectionName}} - Valores do projeto - {{projectName}}",
@ -510,26 +529,26 @@
},
"PROJECT_VALUES_PRIORITIES": {
"TITLE": "Prioridades",
"SUBTITLE": "Especifique as prioridades que seus casos terão",
"ISSUE_TITLE": "Prioridades do caso",
"SUBTITLE": "Especifique as prioridades que seus problemas terão",
"ISSUE_TITLE": "Prioridades do problema",
"ACTION_ADD": "Adicionar nova prioridade"
},
"PROJECT_VALUES_SEVERITIES": {
"TITLE": "Seriedades",
"SUBTITLE": "Especifique a severidade que seus casos terão",
"ISSUE_TITLE": "Seriedades do caso",
"SUBTITLE": "Especifique as severidades que seus problemas terão",
"ISSUE_TITLE": "Seriedades do problema",
"ACTION_ADD": "Adicionar nova severidade"
},
"PROJECT_VALUES_STATUS": {
"TITLE": "Situação",
"SUBTITLE": "Especifique os status pelos quais suas user stories, tarefas e casos passarão",
"SUBTITLE": "Especifique os status pelos quais suas estórias, tarefas e problemas passarão",
"US_TITLE": "Estados das Users Strories",
"TASK_TITLE": "Estados da tarefa",
"ISSUE_TITLE": "Estados do caso"
},
"PROJECT_VALUES_TYPES": {
"TITLE": "Tipos",
"SUBTITLE": "Especifique os tipos que seu caso pode ser",
"SUBTITLE": "Especifique os tipos que seu problema pode ser",
"ISSUE_TITLE": "Tipos de casos",
"ACTION_ADD": "Adicionar novo {{objName}}"
},
@ -543,7 +562,7 @@
"COUNT_MEMBERS": "{{ role.members_count }} membros com a mesma função",
"TITLE_DELETE_ROLE": "Apagar Função",
"REPLACEMENT_ROLE": "Todos os usuários com essa função serão movidos para",
"WARNING_DELETE_ROLE": "<strong>Seja cuidadoso, todas as estimativas para as funções serão removidas.</strong>",
"WARNING_DELETE_ROLE": "Be careful! All role estimations will be removed",
"ERROR_DELETE_ALL": "Você não pode apagar todos os valores",
"EXTERNAL_USER": "Usuário externo"
},
@ -671,6 +690,24 @@
},
"SUBMENU_THIDPARTIES": {
"TITLE": "Serviços"
},
"PROJECT_TRANSFER": {
"DO_YOU_ACCEPT_PROJECT_OWNERNSHIP": "Would you like to become the new project owner?",
"PRIVATE": "Private",
"ACCEPTED_PROJECT_OWNERNSHIP": "Congratulations! You're now the new project owner.",
"REJECTED_PROJECT_OWNERNSHIP": "OK. We'll contact the current project owner",
"ACCEPT": "Aceitar",
"REJECT": "Reject",
"PROPOSE_OWNERSHIP": "<strong>{{owner}}</strong>, the current owner of the project <strong>{{project}}</strong> has asked that you become the new project owner.",
"ADD_COMMENT_QUESTION": "Would you like to send a question to the project owner?",
"ADD_COMMENT": "Would you like to add a comment for the project owner?",
"UNLIMITED_PROJECTS": "Unlimited",
"OWNER_MESSAGE": {
"PRIVATE": "Please remember that you can own up to <strong>{{maxProjects}}</strong> private projects. You currently own <strong>{{currentProjects}}</strong> private projects",
"PUBLIC": "Please remember that you can own up to <strong>{{maxProjects}}</strong> public projects. You currently own <strong>{{currentProjects}}</strong> public projects"
},
"CANT_BE_OWNED": "At the moment you cannot become an owner of a project of this type. If you would like to become the owner of this project, please contact the administrator so they change your account settings to enable project ownership.",
"CHANGE_MY_PLAN": "Change my plan"
}
},
"USER": {
@ -703,7 +740,7 @@
},
"PROFILE_SIDEBAR": {
"TITLE": "Seu perfil",
"DESCRIPTION": "People can see everything you do and what you are working on. Add a nice bio to give an enhanced version of your information.",
"DESCRIPTION": "As pessoas podem ver tudo que você faz e no que você está trabalhando. Adicione uma bela biografia para disponibilizar uma versão melhorada das sua informações.",
"ADD_INFO": "Editar biografia"
},
"PROFILE_FAVS": {
@ -716,7 +753,7 @@
"FILTER_TYPE_USER_STORIES_TITLES": "Mostrar apenas user stories",
"FILTER_TYPE_TASKS": "Tarefas",
"FILTER_TYPE_TASK_TITLES": "Mostrar apenas tarefas",
"FILTER_TYPE_ISSUES": "Casos",
"FILTER_TYPE_ISSUES": "Problemas",
"FILTER_TYPE_ISSUES_TITLE": "mostrar apenas problemas",
"EMPTY_TITLE": "Parece que não há nada para exibir aqui."
}
@ -727,10 +764,15 @@
"SECTION_PROJECTS": "Projetos",
"HELP": "Reordene seus projetos para colocar no topo os mais usados.<br/> Os 10 primeiros projetos aparecerão na lista de projetos da barra de navegação superior.",
"PRIVATE": "Projeto Privado",
"LOOKING_FOR_PEOPLE": "This project is looking for people",
"LOOKING_FOR_PEOPLE": "Este projeto esta a procura de colaboradores",
"FANS_COUNTER_TITLE": "{total, plural, um{um fã} outro{# fãs}}",
"WATCHERS_COUNTER_TITLE": "{total, plural, um{um observador} outro{#watchers}}",
"MEMBERS_COUNTER_TITLE": "{total, plural, um{one member} outro{# members}}",
"BLOCKED_PROJECT": {
"BLOCKED": "Blocked project",
"THIS_PROJECT_IS_BLOCKED": "This project is temporarily blocked",
"TO_UNBLOCK_CONTACT_THE_ADMIN_STAFF": "In order to unblock your projects, contact the administrator."
},
"STATS": {
"PROJECT": "projetos<br/> pontos",
"DEFINED": "pontos<br/> definidos",
@ -742,7 +784,7 @@
"TIMELINE": "Linha do Tempo",
"BACKLOG": "Backlog",
"KANBAN": "Kanban",
"ISSUES": "Casos",
"ISSUES": "Problemas",
"WIKI": "Wiki",
"TEAM": "Time",
"MEETUP": "Reunião",
@ -777,6 +819,7 @@
"CHANGE_PASSWORD": "Alterar senha",
"DASHBOARD_TITLE": "Painel",
"DISCOVER_TITLE": "Descobrir projetos em destaques",
"NEW_ITEM": "Novo",
"DISCOVER": "Descubra",
"ACTION_REORDER": "Seguro e arraste para ordenar"
},
@ -791,7 +834,32 @@
"ERROR_TOO_MANY_REQUEST": "Desculpe, nossos Oompa Loompas estão muito ocupados neste instante. Tente novamente em alguns minutos.",
"ERROR_MESSAGE": "Nossos Oompa Loompas tiveram alguns problemas ao importar seu arquivo de despejo: {{error_message}}",
"ERROR_MAX_SIZE_EXCEEDED": "'{{fileName}}' ({{fileSize}}) é muito pesado para nossos Oompa Loompas, tente algo menor que ({{maxFileSize}})",
"SYNC_SUCCESS": "Seu projeto foi importado com sucesso"
"SYNC_SUCCESS": "Seu projeto foi importado com sucesso",
"PROJECT_RESTRICTIONS": {
"PROJECT_MEMBERS_DESC": "The project you are trying to import has {{members}} members, unfortunately, your current plan allows for a maximum of {{max_memberships}} members per project. If you would like to increase that limit please contact the administrator.",
"PRIVATE_PROJECTS_SPACE": {
"TITLE": "Unfortunately, your current plan does not allow for additional private projects",
"DESC": "The project you are trying to import is private. Unfortunately, your current plan does not allow for additional private projects."
},
"PUBLIC_PROJECTS_SPACE": {
"TITLE": "Unfortunately, your current plan does not allow for additional private projects",
"DESC": "The project you are trying to import is public. Unfortunately, your current plan does not allow additional public projects."
},
"PRIVATE_PROJECTS_MEMBERS": {
"TITLE": "Your current plan allows for a maximum of {{max_memberships}} members per private project"
},
"PUBLIC_PROJECTS_MEMBERS": {
"TITLE": "Your current plan allows for a maximum of {{max_memberships}} members per public project."
},
"PRIVATE_PROJECTS_SPACE_MEMBERS": {
"TITLE": "Unfortunately your current plan doesn't allow additional private projects or an increase of more than {{max_memberships}} members per private project",
"DESC": "The project that you are trying to import is private and has {{members}} members."
},
"PUBLIC_PROJECTS_SPACE_MEMBERS": {
"TITLE": "Unfortunately your current plan doesn't allow additional public projects or an increase of more than {{max_memberships}} members per public project",
"DESC": "The project that you are trying to import is public and has more than {{members}} members."
}
}
},
"LIKE_BUTTON": {
"LIKE": "Curtir",
@ -819,13 +887,16 @@
"DELETE_ACCOUNT": {
"SECTION_NAME": "Apagar conta no Taiga",
"CONFIRM": "Você tem certeza que quer apagar sua conta Taiga?",
"SUBTITLE": "Nós vamos sentir sua falta! :-(",
"NEWSLETTER_LABEL_TEXT": "Eu não quero receber mais os informativos"
"NEWSLETTER_LABEL_TEXT": "Eu não quero receber mais os informativos",
"CANCEL": "Back to settings",
"ACCEPT": "Delete account",
"BLOCK_PROJECT": "Note that all the projects you own projects will be <strong>blocked</strong> after you delete your account. If you do want a project blocked, transfer ownership to another member of each project prior to deleting your account.",
"SUBTITLE": "Sorry to see you go. We'll be here if you should ever consider us again! :("
},
"DELETE_PROJECT": {
"TITLE": "Apagar projeto",
"QUESTION": "Você tem certeza que quer apagar este projeto?",
"SUBTITLE": "Todas as informações do projeto (estórias de uso, tarefas, casos, sprints e páginas de wiki) serão perdidos! :-(",
"SUBTITLE": "Todas as informações do projeto (estórias, tarefas, problemas, sprints e páginas de wiki) serão perdidos! :-(",
"CONFIRM": "Sim, eu tenho certeza"
},
"ASSIGNED_TO": {
@ -837,7 +908,7 @@
"HELP_TEXT": "Se os usuários já estiverem registrados no Taiga, eles serão adicionados automaticamente. Caso contrário, eles receberão um convite."
},
"CREATE_ISSUE": {
"TITLE": "Adicionar caso"
"TITLE": "Adicionar problema"
},
"FEEDBACK": {
"TITLE": "Diga-nos algo...",
@ -850,10 +921,10 @@
},
"ADD_EDIT_SPRINT": {
"TITLE": "Novo Sprint",
"PLACEHOLDER_SPRINT_NAME": "nome do Sprint",
"PLACEHOLDER_SPRINT_NAME": "nome do sprint",
"PLACEHOLDER_SPRINT_START": "Inicio Estimado",
"PLACEHOLDER_SPRINT_END": "Estimativa de Termino",
"ACTION_DELETE_SPRINT": "Você quer apagar este Sprint?",
"ACTION_DELETE_SPRINT": "Você quer apagar este sprint?",
"TITLE_ACTION_DELETE_SPRINT": "apagar sprint",
"LAST_SPRINT_NAME": "último sprint é <strong>{{lastSprint}} ;-) </strong>"
},
@ -872,11 +943,29 @@
"EDIT_US": "Editar user story"
},
"DELETE_SPRINT": {
"TITLE": "Apagar Sprint"
"TITLE": "Apagar sprint"
},
"CREATE_MEMBER": {
"PLACEHOLDER_INVITATION_TEXT": "(Opcional) Adicione uma mensagem de texto ao convite. Diga algo animador para os novos membros ;-)",
"PLACEHOLDER_TYPE_EMAIL": "Digite um Email"
"PLACEHOLDER_TYPE_EMAIL": "Digite um Email",
"LIMIT_USERS_WARNING_MESSAGE_FOR_OWNER": "Unfortunately, this project can't have more than <strong>{{maxMembers}}</strong> members.<br> If you would like to increase the current limit, please contact the administrator.",
"LIMIT_USERS_WARNING_MESSAGE": "Unfortunately, this project can't have more than <strong>{{maxMembers}}</strong> members."
},
"LEAVE_PROJECT_WARNING": {
"TITLE": "Unfortunately, this project can't be left without an owner",
"CURRENT_USER_OWNER": {
"DESC": "You are the current owner of this project. Before leaving, please transfer ownership to someone else.",
"BUTTON": "Change the project owner"
},
"OTHER_USER_OWNER": {
"DESC": "Unfortunately, you can't delete a member who is also the current project owner. First, please assign a new project owner.",
"BUTTON": "Request project owner change"
}
},
"CHANGE_OWNER": {
"TITLE": "Who do you want to be the new project owner?",
"ADD_COMMENT": "Add comment",
"BUTTON": "Ask this project member to become the new project owner"
}
},
"US": {
@ -888,8 +977,8 @@
"TOTAL_POINTS": "total de pontos",
"ADD": "+ Adicionar uma nova User Story",
"ADD_BULK": "Adicionar User Stories em lote",
"PROMOTED": "Esta estória de uso foi promovida do caso:",
"TITLE_LINK_GO_TO_ISSUE": "Ir para caso",
"PROMOTED": "Esta estória de uso foi promovida do problema:",
"TITLE_LINK_GO_TO_ISSUE": "Ir para problema",
"EXTERNAL_REFERENCE": "Esta EU foi criada de",
"GO_TO_EXTERNAL_REFERENCE": "Ir para a origem",
"BLOCKED": "Esta user story está bloqueada",
@ -914,7 +1003,7 @@
"TYPE_NEW_COMMENT": "Escreva um novo comentário aqui",
"SHOW_DELETED": "Mostrar comentários apagados",
"HIDE_DELETED": "Esconder comentário apagado",
"DELETE": "Delete comment",
"DELETE": "Apagar comentário",
"RESTORE": "Restaurar comentário"
},
"ACTIVITY": {
@ -977,8 +1066,8 @@
"CUSTOMIZE_GRAPH_TEXT": "To have a nice graph that helps you follow the evolution of the project you have to set up the points and sprints through the",
"CUSTOMIZE_GRAPH_ADMIN": "Administrador",
"CUSTOMIZE_GRAPH_TITLE": "Configure os pontos e sprints pelo Administrador",
"MOVE_US_TO_CURRENT_SPRINT": "Mover para Sprint Corrente",
"MOVE_US_TO_LATEST_SPRINT": "ir para o último Sprint",
"MOVE_US_TO_CURRENT_SPRINT": "Mover para sprint corrente",
"MOVE_US_TO_LATEST_SPRINT": "ir para o último sprint",
"SHOW_FILTERS": "Mostrar filtros",
"SHOW_TAGS": "Exibir tags",
"EMPTY": "O backlog está vazio!",
@ -989,7 +1078,7 @@
"CLOSED_POINTS": "fechado",
"COMPACT_SPRINT": "Sprint Resumido",
"GO_TO_TASKBOARD": "Ir ao quadro de tarefas de {{::name}}",
"EDIT_SPRINT": "Editar Sprint",
"EDIT_SPRINT": "Editar sprint",
"TOTAL_POINTS": "total",
"STATUS_NAME": "Nome de Situação",
"SORTABLE_FILTER_ERROR": "Você não pode jogar sobre o backlog quando filtros estão abertos",
@ -998,9 +1087,9 @@
"XAXIS_LABEL": "Sprintes",
"YAXIS_LABEL": "Pontos",
"OPTIMAL": "Ideal de pontos pendentes para o sprint \"{{sprintName}}\" deve ser {{value}}",
"REAL": "Real pending points for sprint \"{{sprintName}}\" is {{value}}",
"INCREMENT_TEAM": "Pontos incrementados pelos requerimentos do time para o sprint \"{{sprintName}}\" é {{value}}",
"INCREMENT_CLIENT": "Pontos incrementados pelos requerimentos do cliente para o sprint \"{{sprintName}}\" é {{value}}"
"REAL": "Pontos realmente pendentes para o sprint \"{{sprintName}}\" é {{value}}",
"INCREMENT_TEAM": "Pontos incrementados pelos requisitos do time para o sprint \"{{sprintName}}\" é {{value}}",
"INCREMENT_CLIENT": "Pontos incrementados pelos requisitos do cliente para o sprint \"{{sprintName}}\" é {{value}}"
},
"TAGS": {
"TOGGLE": "Alternar visibilidade das tags",
@ -1014,7 +1103,7 @@
"SPRINT_SUMMARY": {
"TOTAL_POINTS": "pontos<br />totais",
"COMPLETED_POINTS": "pontos <br />completados",
"OPEN_TASKS": "tasks<br />abertas",
"OPEN_TASKS": "tarefas<br />abertas",
"CLOSED_TASKS": "tarefas<br />fechadas",
"IOCAINE_DOSES": "iocaine<br />doses",
"SHOW_STATISTICS_TITLE": "Mostrar estatísticas",
@ -1038,13 +1127,13 @@
"SPRINTS": {
"TITLE": "SPRINTS",
"DATE": "DD MMM YYYY",
"LINK_TASKBOARD": "Sprint quadro de tarefas",
"LINK_TASKBOARD": "Quadro de tarefas do sprint",
"TITLE_LINK_TASKBOARD": "ir para quadro de tarefas de \"{{name}}\"",
"NUMBER_SPRINTS": "<br/>sprints",
"EMPTY": "Ainda não temos sprints.",
"WARNING_EMPTY_SPRINT_ANONYMOUS": "Esse sprint não tem Estórias",
"WARNING_EMPTY_SPRINT": "Solte aqui Estórias do seu backlog para iniciar uma nova sprint",
"TITLE_ACTION_NEW_SPRINT": "Add nova sprint",
"WARNING_EMPTY_SPRINT_ANONYMOUS": "Esse sprint não tem estórias de usuário",
"WARNING_EMPTY_SPRINT": "Solte aqui estórias do seu backlog para iniciar uma nova sprint",
"TITLE_ACTION_NEW_SPRINT": "Adicionar nova sprint",
"TEXT_ACTION_NEW_SPRINT": "Você poderá querer criar uma nova sprint em seu projeto",
"ACTION_SHOW_CLOSED_SPRINTS": "Mostre os sprints fechados",
"ACTION_HIDE_CLOSED_SPRINTS": "Esconder sprints fechados"
@ -1134,9 +1223,9 @@
"SUCCESS": "Nossos Oompa Loompas atualizaram seu email"
},
"ISSUES": {
"PAGE_TITLE": "Casos - {{projectName}}",
"PAGE_DESCRIPTION": "O painel de casos do projeto {{projectName}}: {{projectDescription}}",
"LIST_SECTION_NAME": "Casos",
"PAGE_TITLE": "Problemas - {{projectName}}",
"PAGE_DESCRIPTION": "O painel de problemas do projeto {{projectName}}: {{projectDescription}}",
"LIST_SECTION_NAME": "Problemas",
"SECTION_NAME": "Detalhes do caso",
"ACTION_NEW_ISSUE": "+ NOVO CASO",
"ACTION_PROMOTE_TO_US": "Promover para User Story",
@ -1201,7 +1290,7 @@
}
},
"ISSUE": {
"PAGE_TITLE": "{{issueSubject}} - caso {{issueRef}} - {{projectName}}",
"PAGE_TITLE": "{{issueSubject}} - problema {{issueRef}} - {{projectName}}",
"PAGE_DESCRIPTION": "Estado: {{issueStatus }}. Tipo: {{issueType}}, Prioridade: {{issuePriority}}. severidade: {{issueSeverity}}. Descrição: {{issueDescription}}"
},
"KANBAN": {
@ -1304,12 +1393,18 @@
}
},
"WIZARD": {
"SECTION_TITLE_CHOOSE_TEMPLATE": "Escolher um template",
"CHOOSE_TEMPLATE_TEXT": "Qual template se encaixa melhor no seu projeto?",
"SECTION_TITLE_CREATE_PROJECT": "Criar Projeto",
"CREATE_PROJECT_TEXT": "Novo em folha. Tão excitante!",
"PROGRESS_TEMPLATE_SELECTION": "Seleção de tipo de projeto",
"PROGRESS_NAME_DESCRIPTION": "Nome e descrição"
"CHOOSE_TEMPLATE": "Which template fits your project best?",
"CHOOSE_TEMPLATE_TITLE": "More info about project templates",
"CHOOSE_TEMPLATE_INFO": "More info",
"PROJECT_DETAILS": "Project Details",
"PUBLIC_PROJECT": "Public Project",
"PRIVATE_PROJECT": "Private Project",
"CREATE_PROJECT": "Criar projeto",
"MAX_PRIVATE_PROJECTS": "You've reached the maximum number of private projects",
"MAX_PUBLIC_PROJECTS": "Unfortunately, you've reached the maximum number of public projects",
"CHANGE_PLANS": "change plans"
},
"WIKI": {
"PAGE_TITLE": "{{wikiPageName}} - Wiki - {{projectName}}",
@ -1335,7 +1430,7 @@
"HINT1_TITLE": "Você sabia que você pode importar e exportar projetos?",
"HINT1_TEXT": "Isso permite você extrair todo o seu conteúdo de um Taiga e mover para outro.",
"HINT2_TITLE": "Você sabia que pode criar campos personalizados?",
"HINT2_TEXT": "Teams can now create custom fields as a flexible means to enter specific data useful for their particular workflow.",
"HINT2_TEXT": "Equipes agora podem personalizar campos, um jeito flexível de inserir dados específicos para uso em seu próprio fluxo de trabalho.",
"HINT3_TITLE": "Reorder your projects to feature those most relevant to you.",
"HINT3_TEXT": "The 10 projects are listed in the direct access bar at the top.",
"HINT4_TITLE": "Você esqueceu onde está trabalhando?",
@ -1365,12 +1460,12 @@
"NEW_COMMENT_ISSUE": "{{username}} comentou no issue {{obj_name}}",
"NEW_COMMENT_TASK": "{{username}} comentou na tarefa {{obj_name}}",
"NEW_MEMBER": "{{project_name}} tem um membro novo",
"US_ADDED_MILESTONE": "{{username}} adicionou a US {{obj_name}} a {{sprint_name}}",
"US_ADDED_MILESTONE": "{{username}} adicionou a estória {{obj_name}} a {{sprint_name}}",
"US_MOVED": "{{username}} moveu a US {{obj_name}}",
"US_REMOVED_FROM_MILESTONE": "{{username}} adicionou a US {{obj_name}} ao backlog",
"BLOCKED": "{{username}} bloqueou {{obj_name}}",
"UNBLOCKED": "{{username}} desbloqueou {{obj_name}}",
"NEW_USER": "{{username}} ingressou no taiga"
"NEW_USER": "{{username}} ingressou no Taiga"
},
"LEGAL": {
"TERMS_OF_SERVICE_AND_PRIVACY_POLICY_AD": "<span>When creating a new account, you agree to our <br /></span><a href=\"{{ termsOfServiceUrl }}\" title=\"See terms of service\" target=\"_blank\">terms of service</a><span> and </span><a href=\"{{ privacyPolicyUrl }}\" title=\"See privacy policy\" target=\"_blank\">privacy policy</a>."
@ -1414,7 +1509,7 @@
"STEP1": {
"TITLE": "Sumário do projeto",
"TEXT1": "Aqui você verá o estado do seu projeto",
"TEXT2": "You can change every kind of project settings through the admin."
"TEXT2": "Você pode alterar qualquer configuração do projeto no menu admin."
},
"STEP2": {
"TITLE": "Backlog do Produto",
@ -1426,7 +1521,7 @@
},
"STEP4": {
"TITLE": "User Stories",
"TEXT": "Those are the requirements at high level. You can add them to the backlog and drag them to the sprint in which it should be delivered."
"TEXT": "Estes são os requisitos em alto nível. Você pode adicioná-los ao backlog e arrastá-los ao sprint em que deve ser entregue. "
}
},
"KANBAN": {
@ -1455,7 +1550,7 @@
"MOST_LIKED": "Mais curtidas",
"MOST_LIKED_EMPTY": "Não existe projetos curtidos ainda",
"VIEW_MORE": "Visualizar mais",
"RECRUITING": "This project is looking for people",
"RECRUITING": "Este projeto esta procurando colaboradores",
"FEATURED": "Featured Projects",
"EMPTY": "There are no projects to show with this search criteria.<br> Try again!",
"FILTERS": {
@ -1470,7 +1565,7 @@
"CLEAR": "Limpar filtros"
},
"SEARCH": {
"PAGE_TITLE": "Search - Discover projects - Taiga",
"PAGE_TITLE": "Procurar - Descobrir projetos - Taiga",
"PAGE_DESCRIPTION": "Searchable directory of Public Projects in Taiga. Explore backlogs, timelines, issues, and teams. Check out the most liked or most active projects. Filter by Kanban or Scrum.",
"INPUT_PLACEHOLDER": "Digite algo...",
"ACTION_TITLE": "Procurar",

View File

@ -2,7 +2,7 @@
"COMMON": {
"YES": "Да",
"NO": "Нет",
"OR": "or",
"OR": "или",
"LOADING": "Пожалуйста, подождите...",
"LOADING_PROJECT": "Проект загружается...",
"DATE": "DD MMM YYYY",
@ -19,11 +19,11 @@
"TAG_LINE": "Ваш свободный, agile инструмент управления проектами с открытым исходным кодом",
"TAG_LINE_2": "Любит ваши проекты",
"BLOCK": "Блокировать",
"BLOCK_TITLE": "Block this item for example if it has a dependency that can not be satisfied",
"BLOCK_TITLE": "Заблокировать это, например, если имеются зависимости, которые не могут быть удовлетворены",
"BLOCKED": "Заблокирован",
"UNBLOCK": "Разблокировать",
"UNBLOCK_TITLE": "Unblock this item",
"BLOCKED_NOTE": "Why is this blocked?",
"UNBLOCK_TITLE": "Разблокировать это",
"BLOCKED_NOTE": "Почему это заблокировано?",
"BLOCKED_REASON": "Пожалуйста разъясните причину",
"CREATED_BY": "Создано {{fullDisplayName}}",
"FROM": "от",
@ -41,7 +41,8 @@
"IOCAINE_TEXT": "Чувствуете, что задание берет верх над вами? Дайте другим знать об этом, нажав на \"Иокаин\", когда редактируете задание. Возможно стать неуязвимым к этому (выдуманному) смертельном яду, потребляя небольшие количества время от времени, так же как возможно стать лучше в том, что вы делаете, временами беря на себя дополнительные препятствия!",
"CLIENT_REQUIREMENT": "Client requirement is new requirement that was not previously expected and it is required to be part of the project",
"TEAM_REQUIREMENT": "Team requirement is a requirement that must exist in the project but should have no cost for the client",
"CAPSLOCK_WARNING": "Будьте внимательны! Введённый текст состоит из заглавных букв, а регистр имеет значение.",
"OWNER": "Project Owner",
"CAPSLOCK_WARNING": "Be careful! You are using capital letters in an input field that is case sensitive.",
"FORM_ERRORS": {
"DEFAULT_MESSAGE": "Кажется, это значение некорректно.",
"TYPE_EMAIL": "Это значение должно быть корректным email-адресом.",
@ -65,7 +66,9 @@
"MIN_CHECK": "Вы должны выбрать хотя бы %s вариантов.",
"MAX_CHECK": "Вы должны выбрать %s вариантов или меньше.",
"RANGE_CHECK": "Вы должны выбрать от %s до %s вариантов.",
"EQUAL_TO": "Это значение должно быть таким же."
"EQUAL_TO": "Это значение должно быть таким же.",
"LINEWIDTH": "One or more lines is perhaps too long. Try to keep under %s characters.",
"PIKADAY": "Invalid date format, please use DD MMM YYYY (like 23 Mar 1984)"
},
"PICKERDATE": {
"FORMAT": "DD MMM YYYY",
@ -144,13 +147,13 @@
},
"ASSIGNED_TO": {
"NOT_ASSIGNED": "Не назначен",
"ASSIGN": "Assign",
"ASSIGN": "Назначить",
"DELETE_ASSIGNMENT": "Удалить назначение",
"REMOVE_ASSIGNED": "Удалить назначение",
"TOO_MANY": "...слишком много пользователей, продолжайте фильтровать",
"CONFIRM_UNASSIGNED": "Вы уверены что не хотите назначить ответственного?",
"TITLE_ACTION_EDIT_ASSIGNMENT": "Изменить назначение",
"SELF": "Assign to me"
"SELF": "Назначено мне"
},
"STATUS": {
"CLOSED": "Закрыт",
@ -175,7 +178,7 @@
"UPVOTE": "Повысить",
"UPVOTED": "Повышено",
"DOWNVOTE": "Понизить",
"VOTERS": "Voters",
"VOTERS": "Проголосовавшие",
"BUTTON_TITLE": "Повысить/понизить",
"COUNTER_TITLE": "{total, plural, one{один голос} other{# голоса (-ов)}}"
},
@ -315,7 +318,8 @@
"PLACEHOLDER_FIELD": "Логин или e-mail",
"ACTION_RESET_PASSWORD": "Сбросить пароль",
"LINK_CANCEL": "Не, давай назад, думаю я вспомню.",
"SUCCESS": "<strong>Проверьте почту!</strong><br />Мы выслали Вам письмо с инструкцией по установке нового пароля",
"SUCCESS_TITLE": "Check your inbox!",
"SUCCESS_TEXT": "We sent you an email with the instructions to set a new password",
"ERROR": "Умпа-Лумпы говорят, что вы еще не зарегистрированы."
},
"CHANGE_PASSWORD": {
@ -352,11 +356,11 @@
"PAGE_TITLE": "Домашняя страница - Taiga",
"PAGE_DESCRIPTION": "Главная страница Taiga с вашими основными проектами, назначенными и отслеживаемыми ПИ, задачами и запросами",
"EMPTY_WORKING_ON": "<strong>Пустовато, не правда ли?</strong> Начните работать в Taiga - и тут появятся ПИ, задачи и запросы, над которыми вы работаете.",
"EMPTY_WATCHING": "<strong>Follow</strong> User Stories, Tasks, Issues in your projects and be notified about its changes :)",
"EMPTY_WATCHING": "<strong>Следите</strong> за пользовательскими историями, задачами, запросами в ваших проектах и будьте уведомлены об изменениях :)",
"EMPTY_PROJECT_LIST": "У Вас пока нет проектов",
"WORKING_ON_SECTION": "Работает над",
"WATCHING_SECTION": "Отслеживаемые",
"DASHBOARD": "Projects Dashboard"
"DASHBOARD": "Рабочий стол с проектами"
},
"PROJECTS": {
"PAGE_TITLE": "Мои проекты",
@ -366,14 +370,13 @@
"ATTACHMENT": {
"SECTION_NAME": "Вложения",
"TITLE": "{{ fileName }} загружен {{ date }}",
"LIST_VIEW_MODE": "List view mode",
"GALLERY_VIEW_MODE": "Gallery view mode",
"LIST_VIEW_MODE": "Режим \"список\"",
"GALLERY_VIEW_MODE": "Режим \"галерея\"",
"DESCRIPTION": "Введите краткое описание",
"DEPRECATED": "(устаревший)",
"DEPRECATED_FILE": "Устаревший?",
"ADD": "Добавить вложение. {{maxFileSizeMsg}}",
"DROP": "Drop attachments here!",
"MAX_FILE_SIZE": "[Макс. размер: {{maxFileSize}}]",
"DROP": "Перетяните вложение сюда",
"SHOW_DEPRECATED": "Показать устаревшие приложения",
"HIDE_DEPRECATED": "- спрятать устаревшие приложения",
"COUNT_DEPRECATED": "({{ counter }} устарело)",
@ -406,7 +409,9 @@
"TITLE": "Управление участниками",
"PAGE_TITLE": "Участие - {{projectName}}",
"ADD_BUTTON": "+ Новый участник",
"ADD_BUTTON_TITLE": "Добавить нового участника"
"ADD_BUTTON_TITLE": "Добавить нового участника",
"LIMIT_USERS_WARNING_MESSAGE_FOR_ADMIN": "Unfortunately, this project has reached its limit of <strong>({{members}})</strong> allowed members.",
"LIMIT_USERS_WARNING_MESSAGE_FOR_OWNER": "This project has reached its limit of <strong>({{members}})</strong> allowed members. If you would like to increase that limit please contact the administrator."
},
"PROJECT_EXPORT": {
"TITLE": "Экспорт",
@ -428,6 +433,10 @@
"DISABLE": "Выключить",
"BACKLOG": "Список задач",
"BACKLOG_DESCRIPTION": "Управляйте пользовательскими историями, чтобы поддерживать организованное видение важных и приоритетных задач.",
"NUMBER_SPRINTS": "Expected number of sprints",
"NUMBER_SPRINTS_HELP": "0 for an undetermined number",
"NUMBER_US_POINTS": "Expected total of story points",
"NUMBER_US_POINTS_HELP": "0 for an undetermined number",
"KANBAN": "Kanban",
"KANBAN_DESCRIPTION": "Организуйте эффективную работу с проектом с помощью этой панели",
"ISSUES": "Запросы",
@ -435,9 +444,9 @@
"WIKI": "Вики",
"WIKI_DESCRIPTION": "Добавляйте, изменяйте или удаляйте контент совместно с остальными. Это самое правильное место для документации вашего проекта.",
"MEETUP": "Созвониться",
"MEETUP_DESCRIPTION": "Выберите вашу систему для видеоконференций. Даже разработчикам нужны митинги \"лицом к лицу\"",
"MEETUP_DESCRIPTION": "Choose your videoconference system.",
"SELECT_VIDEOCONFERENCE": "Выберите систему видеоконференций",
"SALT_CHAT_ROOM": "Если хотите, можете добавить \"соль\" к имени чат-комнаты",
"SALT_CHAT_ROOM": "Add a prefix to the chatroom name",
"JITSI_CHAT_ROOM": "Jitsi",
"APPEARIN_CHAT_ROOM": "AppearIn",
"TALKY_CHAT_ROOM": "Talky",
@ -449,22 +458,31 @@
"PROJECT_DETAILS": "Детали проекта",
"PROJECT_NAME": "Название проекта",
"PROJECT_SLUG": "Ссылочное имя проекта",
"NUMBER_SPRINTS": "Количество спринтов (0 - неопределенное количество)",
"NUMBER_US_POINTS": "Количество очков ПИ (0 - неопределенное количество)",
"TAGS": "Тэги",
"DESCRIPTION": "Описание",
"RECRUITING": "Is this project looking for people?",
"RECRUITING_MESSAGE": "Who are you looking for?",
"RECRUITING_PLACEHOLDER": "Define the profiles you are looking for",
"RECRUITING": "Этот проект ищет людей?",
"RECRUITING_MESSAGE": "Кого вы ищете?",
"RECRUITING_PLACEHOLDER": "Уточните, какие профили вы ищете",
"PUBLIC_PROJECT": "Публичный проект",
"PUBLIC_PROJECT_DESC": "Users will be able to find and view your project",
"PRIVATE_PROJECT": "Закрытый проект",
"PRIVATE_PROJECT_DESC": "By default, this project will be hidden to the public",
"PRIVATE_OR_PUBLIC": "What's the difference between public and private projects?",
"PRIVATE_OR_PUBLIC": "В чём разница между публичными и приватными проектами?",
"DELETE": "Удалить проект",
"LOGO_HELP": "The image will be scaled to 80x80px.",
"LOGO_HELP": "Изображение будет отмасштабировано до 80x80px.",
"CHANGE_LOGO": "Change logo",
"ACTION_USE_DEFAULT_LOGO": "Use default image"
"ACTION_USE_DEFAULT_LOGO": "Использовать картинку по умолчанию",
"MAX_PRIVATE_PROJECTS": "You've reached the maximum number of private projects allowed by your current plan",
"MAX_PRIVATE_PROJECTS_MEMBERS": "The maximum number of members for private projects has been exceeded",
"MAX_PUBLIC_PROJECTS": "Unfortunately, you've reached the maximum number of public projects allowed by your current plan",
"MAX_PUBLIC_PROJECTS_MEMBERS": "The project exceeds your maximum number of members for public projects",
"PROJECT_OWNER": "Project owner",
"REQUEST_OWNERSHIP": "Request ownership",
"REQUEST_OWNERSHIP_CONFIRMATION_TITLE": "Do you want to become the new project owner?",
"REQUEST_OWNERSHIP_DESC": "Request that current project owner {{name}} transfer ownership of this project to you.",
"REQUEST_OWNERSHIP_BUTTON": "Запрос",
"REQUEST_OWNERSHIP_SUCCESS": "We'll notify the project owner",
"CHANGE_OWNER": "Change owner",
"CHANGE_OWNER_SUCCESS_TITLE": "Ok, your request has been sent!",
"CHANGE_OWNER_SUCCESS_DESC": "We will notify you by email if the project ownership request is accepted or declined"
},
"REPORTS": {
"TITLE": "Отчеты",
@ -495,7 +513,8 @@
"ISSUE_ADD": "Добавить специальное поле для запросов",
"FIELD_TYPE_TEXT": "Текст",
"FIELD_TYPE_MULTI": "Многостроковое",
"FIELD_TYPE_DATE": "Дата"
"FIELD_TYPE_DATE": "Дата",
"FIELD_TYPE_URL": "Url"
},
"PROJECT_VALUES": {
"PAGE_TITLE": "{{sectionName}} - Значения атрибутов проекта - {{projectName}}",
@ -539,11 +558,11 @@
"HELP_ROLE_ENABLED": "Когда включено, участники, назначенные на эту роль, смогут оценивать очки для пользовательских историй",
"DISABLE_COMPUTABLE_ALERT_TITLE": "Отключить оценку очков для этой роли",
"DISABLE_COMPUTABLE_ALERT_SUBTITLE": "If you disable estimation permissions for role {{roleName}} all previous estimations made by this role will be removed",
"DISABLE_COMPUTABLE_ALERT_MESSAGE": "<strong>Are you sure you want to disable this role estimations?</strong>",
"DISABLE_COMPUTABLE_ALERT_MESSAGE": "<strong>Вы уверены, что хотите отключить оценку очков для этой роли?</strong>",
"COUNT_MEMBERS": "{{ role.members_count }} участников с этой ролью",
"TITLE_DELETE_ROLE": "Удалить Роль",
"REPLACEMENT_ROLE": "Все пользователи этой роли будут перемещены в",
"WARNING_DELETE_ROLE": "<strong>Осторожнее, все оценки, связанные с этой будут удалены</strong>",
"WARNING_DELETE_ROLE": "Be careful! All role estimations will be removed",
"ERROR_DELETE_ALL": "Вы не можете удалить все значения",
"EXTERNAL_USER": "Внешний пользователь"
},
@ -671,6 +690,24 @@
},
"SUBMENU_THIDPARTIES": {
"TITLE": "Сервисы"
},
"PROJECT_TRANSFER": {
"DO_YOU_ACCEPT_PROJECT_OWNERNSHIP": "Would you like to become the new project owner?",
"PRIVATE": "Private",
"ACCEPTED_PROJECT_OWNERNSHIP": "Congratulations! You're now the new project owner.",
"REJECTED_PROJECT_OWNERNSHIP": "OK. We'll contact the current project owner",
"ACCEPT": "Принимаю",
"REJECT": "Reject",
"PROPOSE_OWNERSHIP": "<strong>{{owner}}</strong>, the current owner of the project <strong>{{project}}</strong> has asked that you become the new project owner.",
"ADD_COMMENT_QUESTION": "Would you like to send a question to the project owner?",
"ADD_COMMENT": "Would you like to add a comment for the project owner?",
"UNLIMITED_PROJECTS": "Unlimited",
"OWNER_MESSAGE": {
"PRIVATE": "Please remember that you can own up to <strong>{{maxProjects}}</strong> private projects. You currently own <strong>{{currentProjects}}</strong> private projects",
"PUBLIC": "Please remember that you can own up to <strong>{{maxProjects}}</strong> public projects. You currently own <strong>{{currentProjects}}</strong> public projects"
},
"CANT_BE_OWNED": "At the moment you cannot become an owner of a project of this type. If you would like to become the owner of this project, please contact the administrator so they change your account settings to enable project ownership.",
"CHANGE_MY_PLAN": "Change my plan"
}
},
"USER": {
@ -692,13 +729,13 @@
"PROJECTS_TAB": "Проекты",
"PROJECTS_TAB_TITLE": "Список всех проектов, в которых участвует пользователь",
"LIKES_TAB": "Лайки",
"LIKES_TAB_TITLE": "List all likes made by this user",
"LIKES_TAB_TITLE": "Список всех лайков, поставленных этим пользователем",
"VOTES_TAB": "Голоса",
"VOTES_TAB_TITLE": "List all votes made by this user",
"VOTES_TAB_TITLE": "Список всех голосов, сделанных этим пользователем",
"WATCHED_TAB": "Просмотренные",
"WATCHED_TAB_TITLE": "Список всего, за чем наблюдает пользователь",
"CONTACTS_TAB": "Контакты",
"CONTACTS_TAB_TITLE": "List all contacts made by this user"
"CONTACTS_TAB_TITLE": "Список всех контактов, созданных этим пользователем"
}
},
"PROFILE_SIDEBAR": {
@ -727,10 +764,15 @@
"SECTION_PROJECTS": "Проекты",
"HELP": "Реорганизуйте свои проекты так чтобы часто используемые были бы наверху.<br/> Первые 10 проектов будут находится вверху списка проектов.",
"PRIVATE": "Закрытый проект",
"LOOKING_FOR_PEOPLE": "This project is looking for people",
"LOOKING_FOR_PEOPLE": "Этот проект ищет людей",
"FANS_COUNTER_TITLE": "{total, plural, one{один фанат} other{# фаната (-ов)}}",
"WATCHERS_COUNTER_TITLE": "{total, plural, one{один наблюдатель} other{# наблюдателя (-ей)}}",
"MEMBERS_COUNTER_TITLE": "{total, plural, one{one member} other{# members}}",
"BLOCKED_PROJECT": {
"BLOCKED": "Blocked project",
"THIS_PROJECT_IS_BLOCKED": "This project is temporarily blocked",
"TO_UNBLOCK_CONTACT_THE_ADMIN_STAFF": "In order to unblock your projects, contact the administrator."
},
"STATS": {
"PROJECT": "проекта<br/> очки",
"DEFINED": "заданные<br/> очки",
@ -753,14 +795,14 @@
"PLACEHOLDER_SEARCH": "Искать в...",
"ACTION_CREATE_PROJECT": "Создать проект",
"ACTION_IMPORT_PROJECT": "Импортировать проект",
"MANAGE_PROJECTS": "Manage projects",
"MANAGE_PROJECTS": "Управлять проектами",
"TITLE_CREATE_PROJECT": "Создать проект",
"TITLE_IMPORT_PROJECT": "Импортировать проект",
"TITLE_PRVIOUS_PROJECT": "Показать предыдущие проекты",
"TITLE_NEXT_PROJECT": "Показать следующие проекты",
"HELP_TITLE": "Страница поддержки Taiga",
"HELP": "Помощь",
"HOMEPAGE": "Homepage",
"HOMEPAGE": "Домашняя страница",
"FEEDBACK_TITLE": "Оставить отзыв",
"FEEDBACK": "Обратная связь",
"NOTIFICATIONS_TITLE": "Настроить уведомления",
@ -777,6 +819,7 @@
"CHANGE_PASSWORD": "Изменить пароль",
"DASHBOARD_TITLE": "Рабочий стол",
"DISCOVER_TITLE": "Найти проекты в тренде",
"NEW_ITEM": "Новая",
"DISCOVER": "Найти",
"ACTION_REORDER": "Можно перетаскивать мышкой"
},
@ -791,7 +834,32 @@
"ERROR_TOO_MANY_REQUEST": "Извините, Oompa Loompas очень загружен сейчас. Повторите через несколько минут.",
"ERROR_MESSAGE": "У Oompa Loompas возникли проблемы при импорте резервной копии: {{error_message}}",
"ERROR_MAX_SIZE_EXCEEDED": "'{{fileName}}' ({{fileSize}}) это слишком много для наших Умпа-Лумп, попробуйте еще раз с размером меньшим, чем ({{maxFileSize}})",
"SYNC_SUCCESS": "Импорт проекта выполнен успешно"
"SYNC_SUCCESS": "Импорт проекта выполнен успешно",
"PROJECT_RESTRICTIONS": {
"PROJECT_MEMBERS_DESC": "The project you are trying to import has {{members}} members, unfortunately, your current plan allows for a maximum of {{max_memberships}} members per project. If you would like to increase that limit please contact the administrator.",
"PRIVATE_PROJECTS_SPACE": {
"TITLE": "Unfortunately, your current plan does not allow for additional private projects",
"DESC": "The project you are trying to import is private. Unfortunately, your current plan does not allow for additional private projects."
},
"PUBLIC_PROJECTS_SPACE": {
"TITLE": "Unfortunately, your current plan does not allow for additional private projects",
"DESC": "The project you are trying to import is public. Unfortunately, your current plan does not allow additional public projects."
},
"PRIVATE_PROJECTS_MEMBERS": {
"TITLE": "Your current plan allows for a maximum of {{max_memberships}} members per private project"
},
"PUBLIC_PROJECTS_MEMBERS": {
"TITLE": "Your current plan allows for a maximum of {{max_memberships}} members per public project."
},
"PRIVATE_PROJECTS_SPACE_MEMBERS": {
"TITLE": "Unfortunately your current plan doesn't allow additional private projects or an increase of more than {{max_memberships}} members per private project",
"DESC": "The project that you are trying to import is private and has {{members}} members."
},
"PUBLIC_PROJECTS_SPACE_MEMBERS": {
"TITLE": "Unfortunately your current plan doesn't allow additional public projects or an increase of more than {{max_memberships}} members per public project",
"DESC": "The project that you are trying to import is public and has more than {{members}} members."
}
}
},
"LIKE_BUTTON": {
"LIKE": "Мне нравится",
@ -819,8 +887,11 @@
"DELETE_ACCOUNT": {
"SECTION_NAME": "Удалить аккаунт",
"CONFIRM": "Вы уверены, что хотите удалить ваш аккаунт?",
"SUBTITLE": "Мы будем скучать по вам! :-(",
"NEWSLETTER_LABEL_TEXT": "Я больше не хочу получать вашу новостную рассылку"
"NEWSLETTER_LABEL_TEXT": "Я больше не хочу получать вашу новостную рассылку",
"CANCEL": "Back to settings",
"ACCEPT": "Delete account",
"BLOCK_PROJECT": "Note that all the projects you own projects will be <strong>blocked</strong> after you delete your account. If you do want a project blocked, transfer ownership to another member of each project prior to deleting your account.",
"SUBTITLE": "Sorry to see you go. We'll be here if you should ever consider us again! :("
},
"DELETE_PROJECT": {
"TITLE": "Удалить проект",
@ -876,7 +947,25 @@
},
"CREATE_MEMBER": {
"PLACEHOLDER_INVITATION_TEXT": "(Необязательно) Добавьте персональный текст в приглашение. Скажите что-нибудь приятное вашим новым участникам ;-)",
"PLACEHOLDER_TYPE_EMAIL": "Укажите e-mail"
"PLACEHOLDER_TYPE_EMAIL": "Укажите e-mail",
"LIMIT_USERS_WARNING_MESSAGE_FOR_OWNER": "Unfortunately, this project can't have more than <strong>{{maxMembers}}</strong> members.<br> If you would like to increase the current limit, please contact the administrator.",
"LIMIT_USERS_WARNING_MESSAGE": "Unfortunately, this project can't have more than <strong>{{maxMembers}}</strong> members."
},
"LEAVE_PROJECT_WARNING": {
"TITLE": "Unfortunately, this project can't be left without an owner",
"CURRENT_USER_OWNER": {
"DESC": "You are the current owner of this project. Before leaving, please transfer ownership to someone else.",
"BUTTON": "Change the project owner"
},
"OTHER_USER_OWNER": {
"DESC": "Unfortunately, you can't delete a member who is also the current project owner. First, please assign a new project owner.",
"BUTTON": "Request project owner change"
}
},
"CHANGE_OWNER": {
"TITLE": "Who do you want to be the new project owner?",
"ADD_COMMENT": "Add comment",
"BUTTON": "Ask this project member to become the new project owner"
}
},
"US": {
@ -914,7 +1003,7 @@
"TYPE_NEW_COMMENT": "Добавить комментарий",
"SHOW_DELETED": "Показать удаленный комментарий",
"HIDE_DELETED": "Скрыть удаленный комментарий",
"DELETE": "Delete comment",
"DELETE": "Удалить комментарий",
"RESTORE": "Показать удаленный комментарий"
},
"ACTIVITY": {
@ -973,12 +1062,12 @@
"PAGE_TITLE": "Список задач - {{projectName}}",
"PAGE_DESCRIPTION": "Список задач с пользовательскими историями и спринтами проекта {{projectName}}: {{projectDescription}}",
"SECTION_NAME": "Список задач",
"CUSTOMIZE_GRAPH": "Customize your backlog graph",
"CUSTOMIZE_GRAPH": "Настроить граф вашего списка задач",
"CUSTOMIZE_GRAPH_TEXT": "To have a nice graph that helps you follow the evolution of the project you have to set up the points and sprints through the",
"CUSTOMIZE_GRAPH_ADMIN": "Админка",
"CUSTOMIZE_GRAPH_TITLE": "Настройте очки и спринты в админке",
"MOVE_US_TO_CURRENT_SPRINT": "Перейти к текущему спринту",
"MOVE_US_TO_LATEST_SPRINT": "Move to latest Sprint",
"MOVE_US_TO_LATEST_SPRINT": "Перейти к последнему спринту",
"SHOW_FILTERS": "Показать фильтры",
"SHOW_TAGS": "Показать теги",
"EMPTY": "Список задач пуст!",
@ -1042,7 +1131,7 @@
"TITLE_LINK_TASKBOARD": "Перейти к Панели Задач \"{{name}}\"",
"NUMBER_SPRINTS": "<br/>спринты",
"EMPTY": "Спринтов пока что нет",
"WARNING_EMPTY_SPRINT_ANONYMOUS": "This sprint has no User Stories",
"WARNING_EMPTY_SPRINT_ANONYMOUS": "У этого спринта нет пользовательских историй",
"WARNING_EMPTY_SPRINT": "Накидайте сюда ПИ из списка задач чтобы начать новый спринт",
"TITLE_ACTION_NEW_SPRINT": "Добавить новый спринт",
"TEXT_ACTION_NEW_SPRINT": "Вы можете создать новый спринт в проекте",
@ -1066,7 +1155,7 @@
"TITLE_ACTION_ADD_BULK": "Добавить новые задачи пакетно",
"TITLE_ACTION_ASSIGN": "Назначить задачу",
"TITLE_ACTION_EDIT": "Редактировать задачу",
"PLACEHOLDER_CARD_TITLE": "This could be a task",
"PLACEHOLDER_CARD_TITLE": "Это может быть задачей",
"PLACEHOLDER_CARD_TEXT": "Разделяйте ПИ в задачи чтобы отслеживать их по отдельности",
"TABLE": {
"COLUMN": "Пользовательская история",
@ -1268,8 +1357,8 @@
"NOTIFICATIONS": {
"SECTION_NAME": "Уведомления почтой",
"COLUMN_PROJECT": "Проект",
"COLUMN_RECEIVE_ALL": "Получать Всё",
"COLUMN_ONLY_INVOLVED": "Только задействованные",
"COLUMN_RECEIVE_ALL": "Получать все",
"COLUMN_ONLY_INVOLVED": "Только вовлечённые",
"COLUMN_NO_NOTIFICATIONS": "Уведомлений нет",
"OPTION_ALL": "Все",
"OPTION_INVOLVED": "Вовлечен",
@ -1284,9 +1373,9 @@
}
},
"USER_PROFILE": {
"IMAGE_HELP": "The image will be scaled to 80x80px.",
"IMAGE_HELP": "Изображение будет отмасштабировано до 80x80px.",
"ACTION_CHANGE_IMAGE": "Изменить",
"ACTION_USE_GRAVATAR": "Use default image",
"ACTION_USE_GRAVATAR": "Использовать картинку по умолчанию",
"ACTION_DELETE_ACCOUNT": "Удалить аккаунт",
"CHANGE_EMAIL_SUCCESS": "<strong>Проверьте входящие письма!</strong><br />Мы послали письмо на ваш аккаунт<br />с инструкциями по установке вашего нового адреса.",
"CHANGE_PHOTO": "Изменить фото",
@ -1294,7 +1383,7 @@
"USERNAME": "Имя пользователя",
"EMAIL": "Email",
"FULL_NAME": "Полное имя",
"PLACEHOLDER_FULL_NAME": "Установите ваше полное имя (например, Игорь Николаев)",
"PLACEHOLDER_FULL_NAME": "Полное имя (например, Игорь Николаев)",
"BIO": "Биография (не более 210 символов)",
"PLACEHOLDER_BIO": "Расскажите нам что-нибудь о себе",
"LANGUAGE": "Язык",
@ -1304,12 +1393,18 @@
}
},
"WIZARD": {
"SECTION_TITLE_CHOOSE_TEMPLATE": "Выберете шаблон",
"CHOOSE_TEMPLATE_TEXT": "Какой шаблон лучше всего подойдет для Вашего проекта?",
"SECTION_TITLE_CREATE_PROJECT": "Создать проект",
"CREATE_PROJECT_TEXT": "Свежий и чистый! Так здóрово!",
"PROGRESS_TEMPLATE_SELECTION": "Выбор шаблона",
"PROGRESS_NAME_DESCRIPTION": "Название и описание"
"CHOOSE_TEMPLATE": "Which template fits your project best?",
"CHOOSE_TEMPLATE_TITLE": "More info about project templates",
"CHOOSE_TEMPLATE_INFO": "More info",
"PROJECT_DETAILS": "Project Details",
"PUBLIC_PROJECT": "Public Project",
"PRIVATE_PROJECT": "Private Project",
"CREATE_PROJECT": "Создать проект",
"MAX_PRIVATE_PROJECTS": "You've reached the maximum number of private projects",
"MAX_PUBLIC_PROJECTS": "Unfortunately, you've reached the maximum number of public projects",
"CHANGE_PLANS": "change plans"
},
"WIKI": {
"PAGE_TITLE": "{{wikiPageName}} - Вики - {{projectName}}",
@ -1338,7 +1433,7 @@
"HINT2_TEXT": "Теперь команды могут создавать специальные поля, чтобы гибко вводить данные, специфические для их рабочего процесса.",
"HINT3_TITLE": "Перестройте список своих проектов так, чтобы выделить самые важные для себя.",
"HINT3_TEXT": "Первые 10 проектов доступны из панели прямого доступа сверху.",
"HINT4_TITLE": "Did you forget what were you working on?",
"HINT4_TITLE": "Забыли, над чем вы работали?",
"HINT4_TEXT": "Не переживайте, на вашем рабочем столе вы найдёте ваши активные задачи, запросы и пользовательские истории в том порядке, в котором вы над ними работали."
},
"TIMELINE": {
@ -1387,7 +1482,7 @@
"NAV": {
"NEXT": "Следующий",
"BACK": "Бэкенд разработчик",
"SKIP": "Skip",
"SKIP": "Пропустить",
"DONE": "Завершена"
},
"DASHBOARD": {
@ -1402,7 +1497,7 @@
"STEP3": {
"TITLE": "Отслеживаемое",
"TEXT1": "And right here you will find the ones in your projects that you want to know about.",
"TEXT2": "You are already working with Taiga ;)"
"TEXT2": "Вы уже работаете с Taiga ;)"
},
"STEP4": {
"TITLE": "Давайте начнём",
@ -1446,35 +1541,35 @@
}
},
"DISCOVER": {
"PAGE_TITLE": "Discover projects - Taiga",
"PAGE_TITLE": "Найти проекты - Taiga",
"PAGE_DESCRIPTION": "Searchable directory of Public Projects in Taiga. Explore backlogs, timelines, issues, and teams. Check out the most liked or most active projects. Filter by Kanban or Scrum.",
"DISCOVER_TITLE": "Discover projects",
"DISCOVER_TITLE": "Найти проекты",
"DISCOVER_SUBTITLE": "{projects, plural, one{One public project to discover} other{# public projects to discover}}",
"MOST_ACTIVE": "Most active",
"MOST_ACTIVE": "Наиболее активные",
"MOST_ACTIVE_EMPTY": "There are no ACTIVE projects yet",
"MOST_LIKED": "Most liked",
"MOST_LIKED": "Больше всего лайков",
"MOST_LIKED_EMPTY": "There are no LIKED projects yet",
"VIEW_MORE": "View more",
"RECRUITING": "This project is looking for people",
"FEATURED": "Featured Projects",
"EMPTY": "There are no projects to show with this search criteria.<br> Try again!",
"VIEW_MORE": "Показать больше",
"RECRUITING": "Этот проект ищет людей",
"FEATURED": "Популярные проекты",
"EMPTY": "Нету проектов, удовлетворяющих заданным критериям поиска.<br/> Попробуйте снова!",
"FILTERS": {
"ALL": "Все",
"KANBAN": "Kanban",
"SCRUM": "Scrum",
"PEOPLE": "Looking for people",
"WEEK": "Last week",
"MONTH": "Last month",
"YEAR": "Last year",
"ALL_TIME": "All time",
"CLEAR": "Clear filters"
"PEOPLE": "Ищем людей",
"WEEK": "За неделю",
"MONTH": "За месяц",
"YEAR": "За год",
"ALL_TIME": "За всё время",
"CLEAR": "Очистить фильтры"
},
"SEARCH": {
"PAGE_TITLE": "Search - Discover projects - Taiga",
"PAGE_TITLE": "Поиск - Найти проекты - Taiga",
"PAGE_DESCRIPTION": "Searchable directory of Public Projects in Taiga. Explore backlogs, timelines, issues, and teams. Check out the most liked or most active projects. Filter by Kanban or Scrum.",
"INPUT_PLACEHOLDER": "Введите что-нибудь...",
"ACTION_TITLE": "Поиск",
"RESULTS": "Search results"
"RESULTS": "Результаты поиска"
}
}
}

View File

@ -41,7 +41,8 @@
"IOCAINE_TEXT": "Känner du dig lite bortkommen med en uppgift? Försäkra dig om att andra känner till uppgiften när du klickar på Iocaine-knappen när du ändrar uppgiften. Det är möjligt att bli immun till det här (påhittade) dödliga giftet om du tar små mängder över tid - och du kan även så småningom om bli bättre på vad du gör när du då och då tar på dig större utmaningar!",
"CLIENT_REQUIREMENT": "Client requirement is new requirement that was not previously expected and it is required to be part of the project",
"TEAM_REQUIREMENT": "Team requirement is a requirement that must exist in the project but should have no cost for the client",
"CAPSLOCK_WARNING": "Var försiktig! Du skriver med STORA bokstäver och det här fältet är skriftlägekänsligt.",
"OWNER": "Project Owner",
"CAPSLOCK_WARNING": "Be careful! You are using capital letters in an input field that is case sensitive.",
"FORM_ERRORS": {
"DEFAULT_MESSAGE": "Det här värdet är felaktigt. ",
"TYPE_EMAIL": "Värdet måste vara en giltig e-postadress",
@ -65,7 +66,9 @@
"MIN_CHECK": "Du måste välja minst %s val.",
"MAX_CHECK": "Du måste välja %s val eller mindre.",
"RANGE_CHECK": "Du måste välja mellan %s och %s val.",
"EQUAL_TO": "Det här värdet skulle vara det samma. "
"EQUAL_TO": "Det här värdet skulle vara det samma. ",
"LINEWIDTH": "One or more lines is perhaps too long. Try to keep under %s characters.",
"PIKADAY": "Invalid date format, please use DD MMM YYYY (like 23 Mar 1984)"
},
"PICKERDATE": {
"FORMAT": "YYYY-MM-DD",
@ -315,7 +318,8 @@
"PLACEHOLDER_FIELD": "Användarnamn eller e-postadress",
"ACTION_RESET_PASSWORD": "Återställ lösenord",
"LINK_CANCEL": "Nej, ta mig tillbaka. Jag tror att jag minns det.",
"SUCCESS": "<strong>Kolla inboxen!</strong><br/>Du ska ha fått ett e-postmeddelande med instruktioner för hur du ändrar lösenordet",
"SUCCESS_TITLE": "Check your inbox!",
"SUCCESS_TEXT": "We sent you an email with the instructions to set a new password",
"ERROR": "Enligt våra Oompaloompier är du inte registrerad ännu."
},
"CHANGE_PASSWORD": {
@ -373,7 +377,6 @@
"DEPRECATED_FILE": "Borttagen?",
"ADD": "Lägg till ny bilaga. {{maxFileSizeMsg}}",
"DROP": "Drag och släpp filer som ska bifogas här!",
"MAX_FILE_SIZE": "[Max. size: {{maxFileSize}}]",
"SHOW_DEPRECATED": "+ visa ogillade bilagor",
"HIDE_DEPRECATED": "- dölj ogillade bilagor",
"COUNT_DEPRECATED": "({{ counter }} deprecated)",
@ -406,7 +409,9 @@
"TITLE": "Hantera medlemmar",
"PAGE_TITLE": "Medlemskap - {{projectName}}",
"ADD_BUTTON": "+ Ny medlem",
"ADD_BUTTON_TITLE": "Lägg till ny medlem"
"ADD_BUTTON_TITLE": "Lägg till ny medlem",
"LIMIT_USERS_WARNING_MESSAGE_FOR_ADMIN": "Unfortunately, this project has reached its limit of <strong>({{members}})</strong> allowed members.",
"LIMIT_USERS_WARNING_MESSAGE_FOR_OWNER": "This project has reached its limit of <strong>({{members}})</strong> allowed members. If you would like to increase that limit please contact the administrator."
},
"PROJECT_EXPORT": {
"TITLE": "Exportera",
@ -428,6 +433,10 @@
"DISABLE": "Avvaktivera",
"BACKLOG": "Inkorg",
"BACKLOG_DESCRIPTION": "Hantera dina användarhistorier för att organisera visningar av kommande och prioriterade jobb. ",
"NUMBER_SPRINTS": "Expected number of sprints",
"NUMBER_SPRINTS_HELP": "0 for an undetermined number",
"NUMBER_US_POINTS": "Expected total of story points",
"NUMBER_US_POINTS_HELP": "0 for an undetermined number",
"KANBAN": "Kanban",
"KANBAN_DESCRIPTION": "Organisera dina projekt med Lean med den här tavlan. ",
"ISSUES": "Frågor",
@ -435,9 +444,9 @@
"WIKI": "Wiki",
"WIKI_DESCRIPTION": "Lägg till, modifiera eller ta bort innehåll i samarbetet med andra. Det här är rätt plats för ditt projektdokumentation. ",
"MEETUP": "Möt upp",
"MEETUP_DESCRIPTION": "Välj ditt videokonferenssystem. Även utvecklare behöver mötas ansikte mot ansikte.",
"MEETUP_DESCRIPTION": "Choose your videoconference system.",
"SELECT_VIDEOCONFERENCE": "Välj videokonferenssystem",
"SALT_CHAT_ROOM": "Om du önskar det kan du lägga till några tillfälliga tecken till chat-rummets namn. ",
"SALT_CHAT_ROOM": "Add a prefix to the chatroom name",
"JITSI_CHAT_ROOM": "Jitsi",
"APPEARIN_CHAT_ROOM": "Dyker upp i ",
"TALKY_CHAT_ROOM": "Talky",
@ -449,22 +458,31 @@
"PROJECT_DETAILS": "Projektdetaljer",
"PROJECT_NAME": "Projektnamn",
"PROJECT_SLUG": "Projektslugg",
"NUMBER_SPRINTS": "Antal sprintar (0 för en obestämd kvantitet)",
"NUMBER_US_POINTS": "Antal US-poäng (0 för ett obestämd antal)",
"TAGS": "Etiketter",
"DESCRIPTION": "Beskrivning",
"RECRUITING": "Is this project looking for people?",
"RECRUITING_MESSAGE": "Vem letar du efter?",
"RECRUITING_PLACEHOLDER": "Define the profiles you are looking for",
"PUBLIC_PROJECT": "Publika projekt",
"PUBLIC_PROJECT_DESC": "Users will be able to find and view your project",
"PRIVATE_PROJECT": "Privata projekt",
"PRIVATE_PROJECT_DESC": "By default, this project will be hidden to the public",
"PRIVATE_OR_PUBLIC": "Vad är skillnaden mellan publika och privata projekt?",
"DELETE": "Ta bort projekt",
"LOGO_HELP": "Bilden kommer skalas till 80x80px.",
"CHANGE_LOGO": "Ändra logga",
"ACTION_USE_DEFAULT_LOGO": "Use default image"
"ACTION_USE_DEFAULT_LOGO": "Use default image",
"MAX_PRIVATE_PROJECTS": "You've reached the maximum number of private projects allowed by your current plan",
"MAX_PRIVATE_PROJECTS_MEMBERS": "The maximum number of members for private projects has been exceeded",
"MAX_PUBLIC_PROJECTS": "Unfortunately, you've reached the maximum number of public projects allowed by your current plan",
"MAX_PUBLIC_PROJECTS_MEMBERS": "The project exceeds your maximum number of members for public projects",
"PROJECT_OWNER": "Project owner",
"REQUEST_OWNERSHIP": "Request ownership",
"REQUEST_OWNERSHIP_CONFIRMATION_TITLE": "Do you want to become the new project owner?",
"REQUEST_OWNERSHIP_DESC": "Request that current project owner {{name}} transfer ownership of this project to you.",
"REQUEST_OWNERSHIP_BUTTON": "Förfrågan",
"REQUEST_OWNERSHIP_SUCCESS": "We'll notify the project owner",
"CHANGE_OWNER": "Change owner",
"CHANGE_OWNER_SUCCESS_TITLE": "Ok, your request has been sent!",
"CHANGE_OWNER_SUCCESS_DESC": "We will notify you by email if the project ownership request is accepted or declined"
},
"REPORTS": {
"TITLE": "Rapporter",
@ -495,7 +513,8 @@
"ISSUE_ADD": "Anpassade fält för ärenden",
"FIELD_TYPE_TEXT": "Text",
"FIELD_TYPE_MULTI": "Flerradig",
"FIELD_TYPE_DATE": "Datum"
"FIELD_TYPE_DATE": "Datum",
"FIELD_TYPE_URL": "Url"
},
"PROJECT_VALUES": {
"PAGE_TITLE": "{{sectionName}} - Projektvärden - {{projectName}}",
@ -543,7 +562,7 @@
"COUNT_MEMBERS": "{{ role.members_count }} medlemmar med den här rollen",
"TITLE_DELETE_ROLE": "Ta bort rollen",
"REPLACEMENT_ROLE": "Alla användarna med den här rollen vill flyttas till",
"WARNING_DELETE_ROLE": "<strong>Var försiktig. Alla beräkninger för den här rollen vill tas bort</strong>",
"WARNING_DELETE_ROLE": "Be careful! All role estimations will be removed",
"ERROR_DELETE_ALL": "Du kan inte ta bort alla värden",
"EXTERNAL_USER": "Extern användare"
},
@ -671,6 +690,24 @@
},
"SUBMENU_THIDPARTIES": {
"TITLE": "Tjänster"
},
"PROJECT_TRANSFER": {
"DO_YOU_ACCEPT_PROJECT_OWNERNSHIP": "Would you like to become the new project owner?",
"PRIVATE": "Private",
"ACCEPTED_PROJECT_OWNERNSHIP": "Congratulations! You're now the new project owner.",
"REJECTED_PROJECT_OWNERNSHIP": "OK. We'll contact the current project owner",
"ACCEPT": "Acceptera",
"REJECT": "Reject",
"PROPOSE_OWNERSHIP": "<strong>{{owner}}</strong>, the current owner of the project <strong>{{project}}</strong> has asked that you become the new project owner.",
"ADD_COMMENT_QUESTION": "Would you like to send a question to the project owner?",
"ADD_COMMENT": "Would you like to add a comment for the project owner?",
"UNLIMITED_PROJECTS": "Unlimited",
"OWNER_MESSAGE": {
"PRIVATE": "Please remember that you can own up to <strong>{{maxProjects}}</strong> private projects. You currently own <strong>{{currentProjects}}</strong> private projects",
"PUBLIC": "Please remember that you can own up to <strong>{{maxProjects}}</strong> public projects. You currently own <strong>{{currentProjects}}</strong> public projects"
},
"CANT_BE_OWNED": "At the moment you cannot become an owner of a project of this type. If you would like to become the owner of this project, please contact the administrator so they change your account settings to enable project ownership.",
"CHANGE_MY_PLAN": "Change my plan"
}
},
"USER": {
@ -731,6 +768,11 @@
"FANS_COUNTER_TITLE": "{total, plural, one{one fan} andra{# fans}}",
"WATCHERS_COUNTER_TITLE": "{total, plural, en{one watcher} andra{# watchers}}",
"MEMBERS_COUNTER_TITLE": "{total, plural, one{one member} other{# members}}",
"BLOCKED_PROJECT": {
"BLOCKED": "Blocked project",
"THIS_PROJECT_IS_BLOCKED": "This project is temporarily blocked",
"TO_UNBLOCK_CONTACT_THE_ADMIN_STAFF": "In order to unblock your projects, contact the administrator."
},
"STATS": {
"PROJECT": "projekt<br/> poäng",
"DEFINED": "definierad<br/> poäng",
@ -777,6 +819,7 @@
"CHANGE_PASSWORD": "Byt lösenord",
"DASHBOARD_TITLE": "Instrumentpanel",
"DISCOVER_TITLE": "Upptäck nya rörliga projekt",
"NEW_ITEM": "Ny",
"DISCOVER": "Upptäck",
"ACTION_REORDER": "Dra & släpp för att sortera"
},
@ -791,7 +834,32 @@
"ERROR_TOO_MANY_REQUEST": "Beklagar. Våra oompa loompier är mycket upptagna. Vänligen försök på nytt om några minuter. ",
"ERROR_MESSAGE": "Våra Oompa Loompier har lite problem med att importera dina hämtningsdata: {{error_message}}",
"ERROR_MAX_SIZE_EXCEEDED": "'{{fileName}}' ({{fileSize}}) är för tungt för våra Oompa Loompier. Försök med något mindre än ({{maxFileSize}})",
"SYNC_SUCCESS": "Ditt projekt är korrekt importerad"
"SYNC_SUCCESS": "Ditt projekt är korrekt importerad",
"PROJECT_RESTRICTIONS": {
"PROJECT_MEMBERS_DESC": "The project you are trying to import has {{members}} members, unfortunately, your current plan allows for a maximum of {{max_memberships}} members per project. If you would like to increase that limit please contact the administrator.",
"PRIVATE_PROJECTS_SPACE": {
"TITLE": "Unfortunately, your current plan does not allow for additional private projects",
"DESC": "The project you are trying to import is private. Unfortunately, your current plan does not allow for additional private projects."
},
"PUBLIC_PROJECTS_SPACE": {
"TITLE": "Unfortunately, your current plan does not allow for additional private projects",
"DESC": "The project you are trying to import is public. Unfortunately, your current plan does not allow additional public projects."
},
"PRIVATE_PROJECTS_MEMBERS": {
"TITLE": "Your current plan allows for a maximum of {{max_memberships}} members per private project"
},
"PUBLIC_PROJECTS_MEMBERS": {
"TITLE": "Your current plan allows for a maximum of {{max_memberships}} members per public project."
},
"PRIVATE_PROJECTS_SPACE_MEMBERS": {
"TITLE": "Unfortunately your current plan doesn't allow additional private projects or an increase of more than {{max_memberships}} members per private project",
"DESC": "The project that you are trying to import is private and has {{members}} members."
},
"PUBLIC_PROJECTS_SPACE_MEMBERS": {
"TITLE": "Unfortunately your current plan doesn't allow additional public projects or an increase of more than {{max_memberships}} members per public project",
"DESC": "The project that you are trying to import is public and has more than {{members}} members."
}
}
},
"LIKE_BUTTON": {
"LIKE": "Gillar",
@ -819,8 +887,11 @@
"DELETE_ACCOUNT": {
"SECTION_NAME": "Ta bort konto",
"CONFIRM": "Är du säker på att du vill radera kontot?",
"SUBTITLE": "Vi kommer att sakna dig!",
"NEWSLETTER_LABEL_TEXT": "Jag vill inte motta flera nyhetsbrev"
"NEWSLETTER_LABEL_TEXT": "Jag vill inte motta flera nyhetsbrev",
"CANCEL": "Back to settings",
"ACCEPT": "Delete account",
"BLOCK_PROJECT": "Note that all the projects you own projects will be <strong>blocked</strong> after you delete your account. If you do want a project blocked, transfer ownership to another member of each project prior to deleting your account.",
"SUBTITLE": "Sorry to see you go. We'll be here if you should ever consider us again! :("
},
"DELETE_PROJECT": {
"TITLE": "Ta bort projekt",
@ -876,7 +947,25 @@
},
"CREATE_MEMBER": {
"PLACEHOLDER_INVITATION_TEXT": "(Valfritt) Lägg till en personlig hälsning till invitationen. Berätta något trevligt till din nya projektmedlem ;-)",
"PLACEHOLDER_TYPE_EMAIL": "Skriv in en e-postadress"
"PLACEHOLDER_TYPE_EMAIL": "Skriv in en e-postadress",
"LIMIT_USERS_WARNING_MESSAGE_FOR_OWNER": "Unfortunately, this project can't have more than <strong>{{maxMembers}}</strong> members.<br> If you would like to increase the current limit, please contact the administrator.",
"LIMIT_USERS_WARNING_MESSAGE": "Unfortunately, this project can't have more than <strong>{{maxMembers}}</strong> members."
},
"LEAVE_PROJECT_WARNING": {
"TITLE": "Unfortunately, this project can't be left without an owner",
"CURRENT_USER_OWNER": {
"DESC": "You are the current owner of this project. Before leaving, please transfer ownership to someone else.",
"BUTTON": "Change the project owner"
},
"OTHER_USER_OWNER": {
"DESC": "Unfortunately, you can't delete a member who is also the current project owner. First, please assign a new project owner.",
"BUTTON": "Request project owner change"
}
},
"CHANGE_OWNER": {
"TITLE": "Who do you want to be the new project owner?",
"ADD_COMMENT": "Add comment",
"BUTTON": "Ask this project member to become the new project owner"
}
},
"US": {
@ -1304,12 +1393,18 @@
}
},
"WIZARD": {
"SECTION_TITLE_CHOOSE_TEMPLATE": "Välj en mall",
"CHOOSE_TEMPLATE_TEXT": "Vilken mall skulle passa bättre i det här projektet? ",
"SECTION_TITLE_CREATE_PROJECT": "Skapa projekt",
"CREATE_PROJECT_TEXT": "Fräscht och rent. Så trevligt!",
"PROGRESS_TEMPLATE_SELECTION": "Urval mallar",
"PROGRESS_NAME_DESCRIPTION": "Namn och beskrivning"
"CHOOSE_TEMPLATE": "Which template fits your project best?",
"CHOOSE_TEMPLATE_TITLE": "More info about project templates",
"CHOOSE_TEMPLATE_INFO": "More info",
"PROJECT_DETAILS": "Project Details",
"PUBLIC_PROJECT": "Public Project",
"PRIVATE_PROJECT": "Private Project",
"CREATE_PROJECT": "Skapa projekt",
"MAX_PRIVATE_PROJECTS": "You've reached the maximum number of private projects",
"MAX_PUBLIC_PROJECTS": "Unfortunately, you've reached the maximum number of public projects",
"CHANGE_PLANS": "change plans"
},
"WIKI": {
"PAGE_TITLE": "{{wikiPageName}} - Wiki - {{projectName}}",

View File

@ -41,7 +41,8 @@
"IOCAINE_TEXT": "Bir görev size ağır geldi ve bunaldınız mı? Diğerlerinin bu durumdan haberi olması için bir görevi düzenlerken baldıran zehrinin üzerine tıklayın. Nasıl ki zaman zaman ekstra meydan okumalarla bir işte gittikce iyi olmanız mümkünse, zaman içerisinde küçük dozlar alarak bu ölümcül zehre de bağışıklık kazanabilmek mümkün!",
"CLIENT_REQUIREMENT": "Müşteri gereksinimi, daha önceden belli olmayan ama projeye dahil olması gereken bir gereksinimdir",
"TEAM_REQUIREMENT": "Takım gereksinimi, müsteriyi ilgilendirmeyen, ama projede yer alması zorunlu olan bir gereksinimdir.",
"CAPSLOCK_WARNING": "Dikkat! Büyük harflerle yazıyorsunuz ve bu girdi büyüklük küçüklük duyarlı.",
"OWNER": "Project Owner",
"CAPSLOCK_WARNING": "Be careful! You are using capital letters in an input field that is case sensitive.",
"FORM_ERRORS": {
"DEFAULT_MESSAGE": "Bu değer geçersiz gözüküyor",
"TYPE_EMAIL": "Bu değer geçerli bir e-posta adresi olmalı.",
@ -65,7 +66,9 @@
"MIN_CHECK": "En az %s seçenek belirtmek zorundasınız.",
"MAX_CHECK": "%s seçenek ya da daha azını seçmek zorunlu.",
"RANGE_CHECK": "%s ve %s seçenekleri arasında bir seçim yapmak zorunludu.",
"EQUAL_TO": "Bu değer aynı olmalı."
"EQUAL_TO": "Bu değer aynı olmalı.",
"LINEWIDTH": "One or more lines is perhaps too long. Try to keep under %s characters.",
"PIKADAY": "Invalid date format, please use DD MMM YYYY (like 23 Mar 1984)"
},
"PICKERDATE": {
"FORMAT": "DD MM YYYY",
@ -315,7 +318,8 @@
"PLACEHOLDER_FIELD": "Kullanıcı adı veya e-posta",
"ACTION_RESET_PASSWORD": "Parolayı Sıfırla",
"LINK_CANCEL": "Boşver, geri gidelim. Sanırım hatırladım.",
"SUCCESS": "<strong>Gelen kutunuzu kontrol edin!</strong><br />Yeni parolanızı oluşturabilmeniz için gerekli yönergeleri içeren bir e-posta gönderdik",
"SUCCESS_TITLE": "Check your inbox!",
"SUCCESS_TEXT": "We sent you an email with the instructions to set a new password",
"ERROR": "Honki ponkilerimize göre, siz henüz bir kayıt yaptırmamış durumdasınız."
},
"CHANGE_PASSWORD": {
@ -373,7 +377,6 @@
"DEPRECATED_FILE": "Kaldırıldı mı?",
"ADD": "Yeni ek ekleyin {{maxFileSizeMsg}}",
"DROP": "Ekleri buraya bırakın!",
"MAX_FILE_SIZE": "[Max. boyut: {{maxFileSize}}]",
"SHOW_DEPRECATED": "+ kaldırılan ekleri göster",
"HIDE_DEPRECATED": "- kaldırılan ekleri gizle",
"COUNT_DEPRECATED": "({{ counter }} kaldırılmış)",
@ -406,7 +409,9 @@
"TITLE": "Üyeleri yönet",
"PAGE_TITLE": "Üyelikler - {{projectName}}",
"ADD_BUTTON": "+ Yeni üye",
"ADD_BUTTON_TITLE": "Yeni üye ekle"
"ADD_BUTTON_TITLE": "Yeni üye ekle",
"LIMIT_USERS_WARNING_MESSAGE_FOR_ADMIN": "Unfortunately, this project has reached its limit of <strong>({{members}})</strong> allowed members.",
"LIMIT_USERS_WARNING_MESSAGE_FOR_OWNER": "This project has reached its limit of <strong>({{members}})</strong> allowed members. If you would like to increase that limit please contact the administrator."
},
"PROJECT_EXPORT": {
"TITLE": "Dışarı aktar",
@ -428,6 +433,10 @@
"DISABLE": "Pasifleştir",
"BACKLOG": "Havuz",
"BACKLOG_DESCRIPTION": "Yeni gelen ve önceliklendirilmiş işler için düzenli bir görünüm elde etmek için kullanıcı hikayelerinizi yönetin.",
"NUMBER_SPRINTS": "Expected number of sprints",
"NUMBER_SPRINTS_HELP": "0 for an undetermined number",
"NUMBER_US_POINTS": "Expected total of story points",
"NUMBER_US_POINTS_HELP": "0 for an undetermined number",
"KANBAN": "Kanban",
"KANBAN_DESCRIPTION": "Bu pano ile projenizi güzel bir şekilde düzenleyin.",
"ISSUES": "Sorunlar",
@ -435,9 +444,9 @@
"WIKI": "Wiki",
"WIKI_DESCRIPTION": "Diğerleriyle işbirliği yaparak içerik ekleyin, düzenleyin ve silin. Burası projenizin dokümantasyonu için doğru yer.",
"MEETUP": "Toplantı",
"MEETUP_DESCRIPTION": "Video konferans sisteminizi seçin. Yazılımcılar bile yüz yüze görüşmeye ihtiyaç duyarlar.",
"MEETUP_DESCRIPTION": "Choose your videoconference system.",
"SELECT_VIDEOCONFERENCE": "Bir video konferans sistemi seç",
"SALT_CHAT_ROOM": "Eğer isterseniz sohbet odası adına salt kod ekleyebilirsiniz",
"SALT_CHAT_ROOM": "Add a prefix to the chatroom name",
"JITSI_CHAT_ROOM": "Jitsi",
"APPEARIN_CHAT_ROOM": "AppearIn",
"TALKY_CHAT_ROOM": "Talky",
@ -449,22 +458,31 @@
"PROJECT_DETAILS": "Proje detayları",
"PROJECT_NAME": "Proje adı",
"PROJECT_SLUG": "Proje satırı",
"NUMBER_SPRINTS": "Koşu sayısı (belirsiz bir miktar için 0)",
"NUMBER_US_POINTS": "KH puanları sayısı (belirlenmemiş miktarlar için 0)",
"TAGS": "Etiketler",
"DESCRIPTION": "Tanım",
"RECRUITING": "Bu proje insan arıyor mu?",
"RECRUITING_MESSAGE": "Ne aramıştınız?",
"RECRUITING_PLACEHOLDER": "Aradığınız özellikleri yazın",
"PUBLIC_PROJECT": "Açık Proje",
"PUBLIC_PROJECT_DESC": "Kullanıcılar projenizi bulabilir ve görebilir",
"PRIVATE_PROJECT": "Gizli proje",
"PRIVATE_PROJECT_DESC": "Normalde bu proje gizli olacak",
"PRIVATE_OR_PUBLIC": "Açık ve özel projeler arasındaki fark nedir?",
"DELETE": "Bu projeyi sil",
"LOGO_HELP": "Resim 80×80 piksel boyutuna ölçeklenecek. ",
"CHANGE_LOGO": "Logoyu değiştir",
"ACTION_USE_DEFAULT_LOGO": "Varsayılan resmi kullan"
"ACTION_USE_DEFAULT_LOGO": "Varsayılan resmi kullan",
"MAX_PRIVATE_PROJECTS": "You've reached the maximum number of private projects allowed by your current plan",
"MAX_PRIVATE_PROJECTS_MEMBERS": "The maximum number of members for private projects has been exceeded",
"MAX_PUBLIC_PROJECTS": "Unfortunately, you've reached the maximum number of public projects allowed by your current plan",
"MAX_PUBLIC_PROJECTS_MEMBERS": "The project exceeds your maximum number of members for public projects",
"PROJECT_OWNER": "Project owner",
"REQUEST_OWNERSHIP": "Request ownership",
"REQUEST_OWNERSHIP_CONFIRMATION_TITLE": "Do you want to become the new project owner?",
"REQUEST_OWNERSHIP_DESC": "Request that current project owner {{name}} transfer ownership of this project to you.",
"REQUEST_OWNERSHIP_BUTTON": "Talep",
"REQUEST_OWNERSHIP_SUCCESS": "We'll notify the project owner",
"CHANGE_OWNER": "Change owner",
"CHANGE_OWNER_SUCCESS_TITLE": "Ok, your request has been sent!",
"CHANGE_OWNER_SUCCESS_DESC": "We will notify you by email if the project ownership request is accepted or declined"
},
"REPORTS": {
"TITLE": "Raporlar",
@ -495,7 +513,8 @@
"ISSUE_ADD": "Sorunlara yeni bir özel alan ekle",
"FIELD_TYPE_TEXT": "Metin",
"FIELD_TYPE_MULTI": "Çoklu-satır",
"FIELD_TYPE_DATE": "Tarih"
"FIELD_TYPE_DATE": "Tarih",
"FIELD_TYPE_URL": "Url"
},
"PROJECT_VALUES": {
"PAGE_TITLE": "{{sectionName}} - Proje değerleri- {{projectName}}",
@ -543,7 +562,7 @@
"COUNT_MEMBERS": "bu roldeki üyelerin sayısı {{ role.members_count }} ",
"TITLE_DELETE_ROLE": "Rol Sil",
"REPLACEMENT_ROLE": "Bu role sahip kullanıcıların taşınacağı",
"WARNING_DELETE_ROLE": "<strong>Dikkat lütfen, bütün rol kestirimleri silinecek</strong>",
"WARNING_DELETE_ROLE": "Be careful! All role estimations will be removed",
"ERROR_DELETE_ALL": "Bütün değerleri silemezsiniz",
"EXTERNAL_USER": "Dış kullanıcı"
},
@ -671,6 +690,24 @@
},
"SUBMENU_THIDPARTIES": {
"TITLE": "Servisler"
},
"PROJECT_TRANSFER": {
"DO_YOU_ACCEPT_PROJECT_OWNERNSHIP": "Would you like to become the new project owner?",
"PRIVATE": "Private",
"ACCEPTED_PROJECT_OWNERNSHIP": "Congratulations! You're now the new project owner.",
"REJECTED_PROJECT_OWNERNSHIP": "OK. We'll contact the current project owner",
"ACCEPT": "Kabul et",
"REJECT": "Reject",
"PROPOSE_OWNERSHIP": "<strong>{{owner}}</strong>, the current owner of the project <strong>{{project}}</strong> has asked that you become the new project owner.",
"ADD_COMMENT_QUESTION": "Would you like to send a question to the project owner?",
"ADD_COMMENT": "Would you like to add a comment for the project owner?",
"UNLIMITED_PROJECTS": "Unlimited",
"OWNER_MESSAGE": {
"PRIVATE": "Please remember that you can own up to <strong>{{maxProjects}}</strong> private projects. You currently own <strong>{{currentProjects}}</strong> private projects",
"PUBLIC": "Please remember that you can own up to <strong>{{maxProjects}}</strong> public projects. You currently own <strong>{{currentProjects}}</strong> public projects"
},
"CANT_BE_OWNED": "At the moment you cannot become an owner of a project of this type. If you would like to become the owner of this project, please contact the administrator so they change your account settings to enable project ownership.",
"CHANGE_MY_PLAN": "Change my plan"
}
},
"USER": {
@ -731,6 +768,11 @@
"FANS_COUNTER_TITLE": "{total, plural, one{bir meraklı} other{# meraklı}}",
"WATCHERS_COUNTER_TITLE": "{total, plural, one{bir takipçi} other{# takipçi}}",
"MEMBERS_COUNTER_TITLE": "{total, plural, one{bir üye} other{# üye}}",
"BLOCKED_PROJECT": {
"BLOCKED": "Blocked project",
"THIS_PROJECT_IS_BLOCKED": "This project is temporarily blocked",
"TO_UNBLOCK_CONTACT_THE_ADMIN_STAFF": "In order to unblock your projects, contact the administrator."
},
"STATS": {
"PROJECT": "proje<br/> puanlar",
"DEFINED": "tanımlı<br/> puanlar",
@ -777,6 +819,7 @@
"CHANGE_PASSWORD": "Parolayı değiştir",
"DASHBOARD_TITLE": "Pano",
"DISCOVER_TITLE": "Trend projeleri keşfet",
"NEW_ITEM": "Yeni",
"DISCOVER": "Keşfet",
"ACTION_REORDER": "Yeniden sıralamak için sürükleyin ve bırakın"
},
@ -791,7 +834,32 @@
"ERROR_TOO_MANY_REQUEST": "Üzgünüm, bizim honki ponkiler şu anda çok meşgul. Lütfen birkaç dakika içinde yeniden deneyin.",
"ERROR_MESSAGE": "Honki ponkilerimiz döküm dosyanızı içeri aktarırken birkaç problem yaşadı: {{error_message}}",
"ERROR_MAX_SIZE_EXCEEDED": "({{fileSize}}) boyutundaki '{{fileName}}' dosya honki ponkilerimiz için oldukça ağır geldi, ({{maxFileSize}}) boyutundan daha küçük bir şeylerle deneyin",
"SYNC_SUCCESS": "Projeniz başarıyla içe aktarıldı"
"SYNC_SUCCESS": "Projeniz başarıyla içe aktarıldı",
"PROJECT_RESTRICTIONS": {
"PROJECT_MEMBERS_DESC": "The project you are trying to import has {{members}} members, unfortunately, your current plan allows for a maximum of {{max_memberships}} members per project. If you would like to increase that limit please contact the administrator.",
"PRIVATE_PROJECTS_SPACE": {
"TITLE": "Unfortunately, your current plan does not allow for additional private projects",
"DESC": "The project you are trying to import is private. Unfortunately, your current plan does not allow for additional private projects."
},
"PUBLIC_PROJECTS_SPACE": {
"TITLE": "Unfortunately, your current plan does not allow for additional private projects",
"DESC": "The project you are trying to import is public. Unfortunately, your current plan does not allow additional public projects."
},
"PRIVATE_PROJECTS_MEMBERS": {
"TITLE": "Your current plan allows for a maximum of {{max_memberships}} members per private project"
},
"PUBLIC_PROJECTS_MEMBERS": {
"TITLE": "Your current plan allows for a maximum of {{max_memberships}} members per public project."
},
"PRIVATE_PROJECTS_SPACE_MEMBERS": {
"TITLE": "Unfortunately your current plan doesn't allow additional private projects or an increase of more than {{max_memberships}} members per private project",
"DESC": "The project that you are trying to import is private and has {{members}} members."
},
"PUBLIC_PROJECTS_SPACE_MEMBERS": {
"TITLE": "Unfortunately your current plan doesn't allow additional public projects or an increase of more than {{max_memberships}} members per public project",
"DESC": "The project that you are trying to import is public and has more than {{members}} members."
}
}
},
"LIKE_BUTTON": {
"LIKE": "Beğen",
@ -819,8 +887,11 @@
"DELETE_ACCOUNT": {
"SECTION_NAME": "Taiga Hesabını Sil",
"CONFIRM": "Taiga hesabınızı silmek istediğinizden emin misiniz?",
"SUBTITLE": "Sizi özleyeceğiz! :-(",
"NEWSLETTER_LABEL_TEXT": "Bundan böyle bülteninizi almak istemiyorum."
"NEWSLETTER_LABEL_TEXT": "Bundan böyle bülteninizi almak istemiyorum.",
"CANCEL": "Back to settings",
"ACCEPT": "Delete account",
"BLOCK_PROJECT": "Note that all the projects you own projects will be <strong>blocked</strong> after you delete your account. If you do want a project blocked, transfer ownership to another member of each project prior to deleting your account.",
"SUBTITLE": "Sorry to see you go. We'll be here if you should ever consider us again! :("
},
"DELETE_PROJECT": {
"TITLE": "Proje Sil",
@ -876,7 +947,25 @@
},
"CREATE_MEMBER": {
"PLACEHOLDER_INVITATION_TEXT": "(Opsiyonel) Davetinize kişiselleştirilmiş bir metin ekleyin. Yeni üyelerinize tatlı bir şeyler söyleyin ;-)",
"PLACEHOLDER_TYPE_EMAIL": "Bir e-posta girin"
"PLACEHOLDER_TYPE_EMAIL": "Bir e-posta girin",
"LIMIT_USERS_WARNING_MESSAGE_FOR_OWNER": "Unfortunately, this project can't have more than <strong>{{maxMembers}}</strong> members.<br> If you would like to increase the current limit, please contact the administrator.",
"LIMIT_USERS_WARNING_MESSAGE": "Unfortunately, this project can't have more than <strong>{{maxMembers}}</strong> members."
},
"LEAVE_PROJECT_WARNING": {
"TITLE": "Unfortunately, this project can't be left without an owner",
"CURRENT_USER_OWNER": {
"DESC": "You are the current owner of this project. Before leaving, please transfer ownership to someone else.",
"BUTTON": "Change the project owner"
},
"OTHER_USER_OWNER": {
"DESC": "Unfortunately, you can't delete a member who is also the current project owner. First, please assign a new project owner.",
"BUTTON": "Request project owner change"
}
},
"CHANGE_OWNER": {
"TITLE": "Who do you want to be the new project owner?",
"ADD_COMMENT": "Add comment",
"BUTTON": "Ask this project member to become the new project owner"
}
},
"US": {
@ -1304,12 +1393,18 @@
}
},
"WIZARD": {
"SECTION_TITLE_CHOOSE_TEMPLATE": "Bir şablon seç",
"CHOOSE_TEMPLATE_TEXT": "Hangi şablon sizin projeniz için daha uygun?",
"SECTION_TITLE_CREATE_PROJECT": "Proje Oluştur",
"CREATE_PROJECT_TEXT": "Taze ve temiz. Heycan verici!",
"PROGRESS_TEMPLATE_SELECTION": "Şablon seçimi",
"PROGRESS_NAME_DESCRIPTION": "İsim ve tanım"
"CHOOSE_TEMPLATE": "Which template fits your project best?",
"CHOOSE_TEMPLATE_TITLE": "More info about project templates",
"CHOOSE_TEMPLATE_INFO": "More info",
"PROJECT_DETAILS": "Project Details",
"PUBLIC_PROJECT": "Public Project",
"PRIVATE_PROJECT": "Private Project",
"CREATE_PROJECT": "Proje oluştur",
"MAX_PRIVATE_PROJECTS": "You've reached the maximum number of private projects",
"MAX_PUBLIC_PROJECTS": "Unfortunately, you've reached the maximum number of public projects",
"CHANGE_PLANS": "change plans"
},
"WIKI": {
"PAGE_TITLE": "{{wikiPageName}} - Wiki - {{projectName}}",

View File

@ -41,7 +41,8 @@
"IOCAINE_TEXT": "感到任務的不堪負荷確認其它人在編輯任務時知道此狀況可以點選Iocaine。它可能會成為免疫的致命狀況只要長期小量消耗但如果你只是偶而挑戰它可有助表現。",
"CLIENT_REQUIREMENT": "Client requirement is new requirement that was not previously expected and it is required to be part of the project",
"TEAM_REQUIREMENT": "Team requirement is a requirement that must exist in the project but should have no cost for the client",
"CAPSLOCK_WARNING": "注意你輸入了大寫符號,大小寫字母有所不同",
"OWNER": "Project Owner",
"CAPSLOCK_WARNING": "Be careful! You are using capital letters in an input field that is case sensitive.",
"FORM_ERRORS": {
"DEFAULT_MESSAGE": "該數值似乎為無效",
"TYPE_EMAIL": "該電子郵件應為有效地址",
@ -65,7 +66,9 @@
"MIN_CHECK": "你必須至少選擇 %s 選項",
"MAX_CHECK": "你必須至多選出 %s選項",
"RANGE_CHECK": "你必須在%s 與 %s 之間作出選擇",
"EQUAL_TO": "該數值應為一致"
"EQUAL_TO": "該數值應為一致",
"LINEWIDTH": "One or more lines is perhaps too long. Try to keep under %s characters.",
"PIKADAY": "Invalid date format, please use DD MMM YYYY (like 23 Mar 1984)"
},
"PICKERDATE": {
"FORMAT": "DD MMM YYYY",
@ -315,7 +318,8 @@
"PLACEHOLDER_FIELD": "使用者名稱或電子郵件",
"ACTION_RESET_PASSWORD": "重設密碼 ",
"LINK_CANCEL": "不,請帶我回去,我記起來了",
"SUCCESS": "<strong>檢查你的收信箱</strong><br />我們送出了一封信<br />裏面有設定你新電子郵件的相關指示",
"SUCCESS_TITLE": "Check your inbox!",
"SUCCESS_TEXT": "We sent you an email with the instructions to set a new password",
"ERROR": "按我們的記錄,你尚未註冊"
},
"CHANGE_PASSWORD": {
@ -373,7 +377,6 @@
"DEPRECATED_FILE": "棄用?",
"ADD": "加入新附件 {{maxFileSizeMsg}}",
"DROP": "在此移除附件 ",
"MAX_FILE_SIZE": "[Max. size: {{maxFileSize}}]",
"SHOW_DEPRECATED": "+ 顯示棄用的附件",
"HIDE_DEPRECATED": "+ 隱藏棄用的附件",
"COUNT_DEPRECATED": "({{ counter }} 遭棄用)",
@ -406,7 +409,9 @@
"TITLE": "管理成員",
"PAGE_TITLE": "成員資格 - {{projectName}}",
"ADD_BUTTON": "+ 新成員",
"ADD_BUTTON_TITLE": "增加新成員"
"ADD_BUTTON_TITLE": "增加新成員",
"LIMIT_USERS_WARNING_MESSAGE_FOR_ADMIN": "Unfortunately, this project has reached its limit of <strong>({{members}})</strong> allowed members.",
"LIMIT_USERS_WARNING_MESSAGE_FOR_OWNER": "This project has reached its limit of <strong>({{members}})</strong> allowed members. If you would like to increase that limit please contact the administrator."
},
"PROJECT_EXPORT": {
"TITLE": "匯出",
@ -428,6 +433,10 @@
"DISABLE": "停用",
"BACKLOG": "待辦任務優先表",
"BACKLOG_DESCRIPTION": "管理你的 User Story 讓接下來的及優先的工作能被有條理地檢視 ",
"NUMBER_SPRINTS": "Expected number of sprints",
"NUMBER_SPRINTS_HELP": "0 for an undetermined number",
"NUMBER_US_POINTS": "Expected total of story points",
"NUMBER_US_POINTS_HELP": "0 for an undetermined number",
"KANBAN": "Kanban(看板)",
"KANBAN_DESCRIPTION": "在此看板上組織你的專案",
"ISSUES": "問題 ",
@ -435,9 +444,9 @@
"WIKI": "維基",
"WIKI_DESCRIPTION": "新增,修正或是刪除與他人合作的內容。這裏正是專案文件記錄區",
"MEETUP": "符合",
"MEETUP_DESCRIPTION": "選擇你的視訊系統。有些開發者需要面對面接觸",
"MEETUP_DESCRIPTION": "Choose your videoconference system.",
"SELECT_VIDEOCONFERENCE": "選擇一個視訊會議系統 ",
"SALT_CHAT_ROOM": "你可以把聊天室名稱加上salt code亂數密碼 ",
"SALT_CHAT_ROOM": "Add a prefix to the chatroom name",
"JITSI_CHAT_ROOM": "Jitsi",
"APPEARIN_CHAT_ROOM": "AppearIn",
"TALKY_CHAT_ROOM": "Talky",
@ -449,22 +458,31 @@
"PROJECT_DETAILS": "專案細節",
"PROJECT_NAME": "專案名稱",
"PROJECT_SLUG": "專案代稱",
"NUMBER_SPRINTS": "衝刺任務數目(0為未決定數量)",
"NUMBER_US_POINTS": "使用者故事點數數目 (0 為未決定數目)",
"TAGS": "標籤",
"DESCRIPTION": "描述",
"RECRUITING": "這個專案是否在徵人",
"RECRUITING_MESSAGE": "你在找誰?",
"RECRUITING_PLACEHOLDER": "定義你要找的資訊",
"PUBLIC_PROJECT": "公開專案",
"PUBLIC_PROJECT_DESC": "用戶能夠找到並檢視你的專案",
"PRIVATE_PROJECT": "不公開專案",
"PRIVATE_PROJECT_DESC": "本專案預設為私密不公開顯示",
"PRIVATE_OR_PUBLIC": "公開專案和私密專案有何差異?",
"DELETE": "刪除此專案",
"LOGO_HELP": "此圖片將被裁成80x80px.<br>",
"CHANGE_LOGO": "更改圖標",
"ACTION_USE_DEFAULT_LOGO": "使用設預圖片"
"ACTION_USE_DEFAULT_LOGO": "使用設預圖片",
"MAX_PRIVATE_PROJECTS": "You've reached the maximum number of private projects allowed by your current plan",
"MAX_PRIVATE_PROJECTS_MEMBERS": "The maximum number of members for private projects has been exceeded",
"MAX_PUBLIC_PROJECTS": "Unfortunately, you've reached the maximum number of public projects allowed by your current plan",
"MAX_PUBLIC_PROJECTS_MEMBERS": "The project exceeds your maximum number of members for public projects",
"PROJECT_OWNER": "Project owner",
"REQUEST_OWNERSHIP": "Request ownership",
"REQUEST_OWNERSHIP_CONFIRMATION_TITLE": "Do you want to become the new project owner?",
"REQUEST_OWNERSHIP_DESC": "Request that current project owner {{name}} transfer ownership of this project to you.",
"REQUEST_OWNERSHIP_BUTTON": "要求",
"REQUEST_OWNERSHIP_SUCCESS": "We'll notify the project owner",
"CHANGE_OWNER": "Change owner",
"CHANGE_OWNER_SUCCESS_TITLE": "Ok, your request has been sent!",
"CHANGE_OWNER_SUCCESS_DESC": "We will notify you by email if the project ownership request is accepted or declined"
},
"REPORTS": {
"TITLE": "Reports",
@ -495,7 +513,8 @@
"ISSUE_ADD": "在問題中加入客制欄位",
"FIELD_TYPE_TEXT": "單行文字",
"FIELD_TYPE_MULTI": "多行",
"FIELD_TYPE_DATE": "日期"
"FIELD_TYPE_DATE": "日期",
"FIELD_TYPE_URL": "Url"
},
"PROJECT_VALUES": {
"PAGE_TITLE": "{{sectionName}} - 專案數值 - {{projectName}}",
@ -543,7 +562,7 @@
"COUNT_MEMBERS": "{{ role.members_count }} 這類角色的成員",
"TITLE_DELETE_ROLE": "删除角色",
"REPLACEMENT_ROLE": "和此角色有關的使用者都將遭移除 ",
"WARNING_DELETE_ROLE": "<strong>小心, 所有角色的估算都將會移除</strong>",
"WARNING_DELETE_ROLE": "Be careful! All role estimations will be removed",
"ERROR_DELETE_ALL": "你不能刪除所有數值",
"EXTERNAL_USER": "外部使用者"
},
@ -671,6 +690,24 @@
},
"SUBMENU_THIDPARTIES": {
"TITLE": "服務 "
},
"PROJECT_TRANSFER": {
"DO_YOU_ACCEPT_PROJECT_OWNERNSHIP": "Would you like to become the new project owner?",
"PRIVATE": "Private",
"ACCEPTED_PROJECT_OWNERNSHIP": "Congratulations! You're now the new project owner.",
"REJECTED_PROJECT_OWNERNSHIP": "OK. We'll contact the current project owner",
"ACCEPT": "接受",
"REJECT": "Reject",
"PROPOSE_OWNERSHIP": "<strong>{{owner}}</strong>, the current owner of the project <strong>{{project}}</strong> has asked that you become the new project owner.",
"ADD_COMMENT_QUESTION": "Would you like to send a question to the project owner?",
"ADD_COMMENT": "Would you like to add a comment for the project owner?",
"UNLIMITED_PROJECTS": "Unlimited",
"OWNER_MESSAGE": {
"PRIVATE": "Please remember that you can own up to <strong>{{maxProjects}}</strong> private projects. You currently own <strong>{{currentProjects}}</strong> private projects",
"PUBLIC": "Please remember that you can own up to <strong>{{maxProjects}}</strong> public projects. You currently own <strong>{{currentProjects}}</strong> public projects"
},
"CANT_BE_OWNED": "At the moment you cannot become an owner of a project of this type. If you would like to become the owner of this project, please contact the administrator so they change your account settings to enable project ownership.",
"CHANGE_MY_PLAN": "Change my plan"
}
},
"USER": {
@ -731,6 +768,11 @@
"FANS_COUNTER_TITLE": "{total, plural, one{一個粉絲} other{# 粉絲}}",
"WATCHERS_COUNTER_TITLE": "{total, plural, one{一個觀注者} other{# 觀注者}}",
"MEMBERS_COUNTER_TITLE": "{total, plural, one{one member} other{# members}}",
"BLOCKED_PROJECT": {
"BLOCKED": "Blocked project",
"THIS_PROJECT_IS_BLOCKED": "This project is temporarily blocked",
"TO_UNBLOCK_CONTACT_THE_ADMIN_STAFF": "In order to unblock your projects, contact the administrator."
},
"STATS": {
"PROJECT": "專案<br/> 點數",
"DEFINED": "已定義<br/> 點數",
@ -777,6 +819,7 @@
"CHANGE_PASSWORD": "更換密碼 ",
"DASHBOARD_TITLE": "控制台",
"DISCOVER_TITLE": "發現流行專案",
"NEW_ITEM": "新 ",
"DISCOVER": "發現",
"ACTION_REORDER": "拖移 & 丟到來記錄"
},
@ -791,7 +834,32 @@
"ERROR_TOO_MANY_REQUEST": "抱歉系統繁忙中,請稍後再試試 ",
"ERROR_MESSAGE": "我們的系統無法滙入你的資料",
"ERROR_MAX_SIZE_EXCEEDED": "'{{fileName}}' ({{fileSize}}) 超過系統容量上限, 請重傳小一點的檔案 ({{maxFileSize}})",
"SYNC_SUCCESS": "你的專案已成功滙入"
"SYNC_SUCCESS": "你的專案已成功滙入",
"PROJECT_RESTRICTIONS": {
"PROJECT_MEMBERS_DESC": "The project you are trying to import has {{members}} members, unfortunately, your current plan allows for a maximum of {{max_memberships}} members per project. If you would like to increase that limit please contact the administrator.",
"PRIVATE_PROJECTS_SPACE": {
"TITLE": "Unfortunately, your current plan does not allow for additional private projects",
"DESC": "The project you are trying to import is private. Unfortunately, your current plan does not allow for additional private projects."
},
"PUBLIC_PROJECTS_SPACE": {
"TITLE": "Unfortunately, your current plan does not allow for additional private projects",
"DESC": "The project you are trying to import is public. Unfortunately, your current plan does not allow additional public projects."
},
"PRIVATE_PROJECTS_MEMBERS": {
"TITLE": "Your current plan allows for a maximum of {{max_memberships}} members per private project"
},
"PUBLIC_PROJECTS_MEMBERS": {
"TITLE": "Your current plan allows for a maximum of {{max_memberships}} members per public project."
},
"PRIVATE_PROJECTS_SPACE_MEMBERS": {
"TITLE": "Unfortunately your current plan doesn't allow additional private projects or an increase of more than {{max_memberships}} members per private project",
"DESC": "The project that you are trying to import is private and has {{members}} members."
},
"PUBLIC_PROJECTS_SPACE_MEMBERS": {
"TITLE": "Unfortunately your current plan doesn't allow additional public projects or an increase of more than {{max_memberships}} members per public project",
"DESC": "The project that you are trying to import is public and has more than {{members}} members."
}
}
},
"LIKE_BUTTON": {
"LIKE": "喜歡",
@ -819,8 +887,11 @@
"DELETE_ACCOUNT": {
"SECTION_NAME": "刪除Taiga帳戶",
"CONFIRM": "你確定要刪除Taiga帳戶嗎",
"SUBTITLE": "我們會想念你:-(",
"NEWSLETTER_LABEL_TEXT": "不願再收到電子月報"
"NEWSLETTER_LABEL_TEXT": "不願再收到電子月報",
"CANCEL": "Back to settings",
"ACCEPT": "Delete account",
"BLOCK_PROJECT": "Note that all the projects you own projects will be <strong>blocked</strong> after you delete your account. If you do want a project blocked, transfer ownership to another member of each project prior to deleting your account.",
"SUBTITLE": "Sorry to see you go. We'll be here if you should ever consider us again! :("
},
"DELETE_PROJECT": {
"TITLE": "刪除專案",
@ -876,7 +947,25 @@
},
"CREATE_MEMBER": {
"PLACEHOLDER_INVITATION_TEXT": "(非必要) 加上一段私人文字在邀請信,告訴你的新成員一些好事 ;-)",
"PLACEHOLDER_TYPE_EMAIL": "輸入一個電郵地址"
"PLACEHOLDER_TYPE_EMAIL": "輸入一個電郵地址",
"LIMIT_USERS_WARNING_MESSAGE_FOR_OWNER": "Unfortunately, this project can't have more than <strong>{{maxMembers}}</strong> members.<br> If you would like to increase the current limit, please contact the administrator.",
"LIMIT_USERS_WARNING_MESSAGE": "Unfortunately, this project can't have more than <strong>{{maxMembers}}</strong> members."
},
"LEAVE_PROJECT_WARNING": {
"TITLE": "Unfortunately, this project can't be left without an owner",
"CURRENT_USER_OWNER": {
"DESC": "You are the current owner of this project. Before leaving, please transfer ownership to someone else.",
"BUTTON": "Change the project owner"
},
"OTHER_USER_OWNER": {
"DESC": "Unfortunately, you can't delete a member who is also the current project owner. First, please assign a new project owner.",
"BUTTON": "Request project owner change"
}
},
"CHANGE_OWNER": {
"TITLE": "Who do you want to be the new project owner?",
"ADD_COMMENT": "Add comment",
"BUTTON": "Ask this project member to become the new project owner"
}
},
"US": {
@ -1304,12 +1393,18 @@
}
},
"WIZARD": {
"SECTION_TITLE_CHOOSE_TEMPLATE": "選擇外觀 ",
"CHOOSE_TEMPLATE_TEXT": "哪一個樣版最適合你的專案",
"SECTION_TITLE_CREATE_PROJECT": "創建專案",
"CREATE_PROJECT_TEXT": "新鮮與乾淨,太好了",
"PROGRESS_TEMPLATE_SELECTION": "外觀選擇",
"PROGRESS_NAME_DESCRIPTION": "名稱與描述"
"CHOOSE_TEMPLATE": "Which template fits your project best?",
"CHOOSE_TEMPLATE_TITLE": "More info about project templates",
"CHOOSE_TEMPLATE_INFO": "More info",
"PROJECT_DETAILS": "Project Details",
"PUBLIC_PROJECT": "Public Project",
"PRIVATE_PROJECT": "Private Project",
"CREATE_PROJECT": "創建專案",
"MAX_PRIVATE_PROJECTS": "You've reached the maximum number of private projects",
"MAX_PUBLIC_PROJECTS": "Unfortunately, you've reached the maximum number of public projects",
"CHANGE_PLANS": "change plans"
},
"WIKI": {
"PAGE_TITLE": "{{wikiPageName}} - 維基 - {{projectName}}",

View File

@ -13,6 +13,12 @@
opacity: 1;
}
}
.attachment-name {
@extend %light;
@include ellipsis(175px);
display: inline-block;
}
}
.attachment-image {
display: inline-block;
}
@ -38,20 +44,20 @@
display: flex;
justify-content: space-between;
}
.attachment-name {
@extend %light;
@include ellipsis(175px);
display: inline-block;
}
.icon-delete {
color: $red-light;
margin-left: auto;
opacity: 0;
transition: opacity .3s ease-in;
transition-delay: .2s;
transition: opacity .2s ease-in;
transition-delay: .1s;
svg {
fill: $red-light;
}
&:hover {
svg {
color: $red;
}
}
}
.loading-container {
align-items: center;
@ -66,5 +72,4 @@
max-height: 3rem;
max-width: 3rem;
}
}
}

View File

@ -47,36 +47,31 @@
flex-shrink: 0;
justify-content: space-around;
margin-left: auto;
.settings,
.editable-settings {
@extend %large;
color: $gray-light;
&:hover {
color: $primary;
}
}
.settings {
opacity: 0;
}
.editable-settings {
opacity: 1;
}
.icon-delete {
svg {
fill: $gray-light;
}
.icon-edit,
.icon-save {
&:hover {
color: $red;
fill: $primary;
}
}
.icon-drag-v {
.icon-trash,
.icon-close {
&:hover {
fill: $red;
}
}
.icon-drag {
cursor: move;
}
}
.icon-delete {
@extend %large;
color: $gray-light;
&:hover {
color: $red;
}
}
.editable-attachment-deprecated {
display: flex;
padding-left: 1rem;

View File

@ -3,7 +3,7 @@
}
.attachments-header {
align-content: space-between;
align-content: center;
align-items: center;
background: $whitish;
display: flex;
@ -34,9 +34,9 @@
}
svg {
fill: $white;
height: 1.25rem;
height: 1.2rem;
margin-bottom: -.2rem;
width: 1.25rem;
width: 1.2rem;
}
}
button {
@ -51,7 +51,6 @@
svg {
fill: $gray-light;
height: 1.6rem;
margin-bottom: -.2rem;
width: 1.6rem;
}
}
@ -78,6 +77,7 @@
.single-attachment {
@extend %small;
background: rgba($white, .9);
&.ui-sortable-helper {
background: lighten($primary, 60%);
box-shadow: 1px 1px 10px rgba($black, .1);
@ -90,12 +90,11 @@
.attachment-name {
@extend %bold;
padding-right: 1rem;
.icon {
margin-right: .25rem;
}
svg {
height: 1.2rem;
width: 1.2rem;
fill: $gray;
height: .9rem;
margin-right: .25rem;
width: .9rem;
}
}
.attachment-size {

View File

@ -30,8 +30,9 @@
span {{::vm.attachment.getIn(['file', 'name'])}}
a.icon-delete(
ng-if="vm.attachment.get('editable')"
href=""
title="{{'COMMON.DELETE' | translate}}"
ng-click="vm.delete()"
)
svg.icon.icon-trash
use(xlink:href="#icon-trash")

View File

@ -12,8 +12,8 @@ form.single-attachment(
target="_blank"
download="{{::vm.attachment.getIn(['file', 'name'])}}"
)
span.icon
include ../../../svg/attachment.svg
svg.icon.icon-attachment
use(xlink:href="#icon-attachment")
span {{::vm.attachment.getIn(['file', 'name'])}}
.attachment-comments(ng-if="!vm.attachment.get('editable') && vm.attachment.getIn(['file', 'description'])")
@ -47,34 +47,44 @@ form.single-attachment(
.attachment-settings(ng-if="vm.attachment.get('editable')")
div(tg-loading="vm.attachment.get('loading')")
a.editable-settings.icon.icon-floppy(
a.editable-settings(
href=""
title="{{'COMMON.SAVE' | translate}}"
ng-click="vm.save()"
)
svg.drag.icon.icon-save
use(xlink:href="#icon-save")
div
a.editable-settings.icon.icon-delete(
a.editable-settings(
href=""
title="{{'COMMON.CANCEL' | translate}}"
ng-click="vm.editMode(false)"
)
svg.drag.icon.icon-close
use(xlink:href="#icon-close")
.attachment-settings(
ng-if="!vm.attachment.get('editable')"
tg-check-permission="modify_{{vm.type}}"
)
a.settings.icon.icon-edit(
a.settings(
href=""
title="{{'COMMON.EDIT' | translate}}"
ng-click="vm.editMode(true)"
)
a.settings.icon.icon-delete(
svg.drag.icon.icon-edit
use(xlink:href="#icon-edit")
a.settings(
href=""
title="{{'COMMON.DELETE' | translate}}"
ng-click="vm.delete()"
)
a.settings.icon.icon-drag-v(
svg.drag.icon.icon-trash
use(xlink:href="#icon-trash")
a.settings(
href=""
title="{{'COMMON.DRAG' | translate}}"
)
svg.drag.icon.icon-drag
use(xlink:href="#icon-drag")

View File

@ -11,21 +11,24 @@ section.attachments(
ng-click="vm.setMode('gallery')"
title="{{ 'ATTACHMENT.GALLERY_VIEW_MODE' | translate }}"
)
include ../../../svg/gallery.svg
svg.icon.icon-gallery
use(xlink:href="#icon-gallery")
button.view-list(
ng-class="{'is-active': vm.mode == 'list'}"
ng-if="vm.attachments.size"
ng-click="vm.setMode('list')"
title="{{ 'ATTACHMENT.LIST_VIEW_MODE' | translate }}"
)
include ../../../svg/list.svg
svg.icon.icon-list
use(xlink:href="#icon-list")
.add-attach(
tg-check-permission="modify_{{vm.type}}"
title!="{{'ATTACHMENT.ADD' | translate}}"
)
label.add-attachment-button(for="add-attach")
include ../../../svg/add.svg
svg.icon.icon-add
use(xlink:href="#icon-add")
input(
id="add-attach",
@ -52,12 +55,11 @@ section.attachments(
.single-attachment(ng-repeat="file in vm.uploadingAttachments()")
.attachment-name
span.icon
include ../../../svg/attachment.svg
svg.icon.icon-attachment
use(xlink:href="#icon-attachment")
span {{file.name}}
.attachment-size
span {{file.size | sizeFormat}}
.attachment-comments
span {{file.progressMessage}}
.percentage(ng-style="{'width': file.progressPercent}")

View File

@ -5,7 +5,8 @@ section.attachments(tg-attachments-drop="vm.addAttachments(files)")
h3.attachments-title #[span.attachments-num {{vm.attachments.size}}] #[span.attachments-text(translate="ATTACHMENT.SECTION_NAME")]
.add-attach(title!="{{'ATTACHMENT.ADD' | translate}}")
label.add-attachment-button(for="add-attach")
include ../../../svg/add.svg
svg.icon.icon-add
use(xlink:href="#icon-add")
input(
id="add-attach"
type="file"
@ -18,8 +19,8 @@ section.attachments(tg-attachments-drop="vm.addAttachments(files)")
.attachment-body.attachment-list
.single-attachment(tg-repeat="attachment in vm.attachments track by $index")
.attachment-name
span.icon
include ../../../svg/attachment.svg
svg.icon.icon-attachment
use(xlink:href="#icon-attachment")
span {{attachment.get('name')}}
.attachment-size
span {{attachment.get('size') | sizeFormat}}
@ -30,4 +31,5 @@ section.attachments(tg-attachments-drop="vm.addAttachments(files)")
title="{{'COMMON.DELETE' | translate}}"
ng-click="vm.deleteAttachment(attachment)"
)
include ../../../svg/remove.svg
svg.icon.icon-trash
use(xlink:href="#icon-trash")

View File

@ -23,7 +23,7 @@ AttachmentSortableDirective = ($parse) ->
el.sortable({
items: "div[tg-bind-scope]"
handle: "a.settings.icon.icon-drag-v"
handle: ".settings .icon"
containment: ".attachments"
dropOnEmpty: true
helper: 'clone'

View File

@ -9,4 +9,5 @@
href=""
title="{{ COMMON.CLOSE | translate }}"
)
include ../../../svg/remove.svg
svg.icon.icon-close
use(xlink:href="#icon-close")

View File

@ -95,25 +95,28 @@ class ProjectMenuController
return sectionName
_videoConferenceUrl: () ->
# Get base url
if @.project.get("videoconferences") == "appear-in"
baseUrl = "https://appear.in/"
else if @.project.get("videoconferences") == "talky"
baseUrl = "https://talky.io/"
else if @.project.get("videoconferences") == "jitsi"
baseUrl = "https://meet.jit.si/"
url = @.project.get("slug") + "-" + taiga.slugify(@.project.get("videoconferences_extra_data"))
url = url.replace(/-/g, "")
return baseUrl + url
else if @.project.get("videoconferences") == "custom"
return @.project.get("videoconferences_extra_data")
else
return ""
# Add prefix to the chat room name if exist
if @.project.get("videoconferences_extra_data")
url = @.project.get("slug") + "-" + @.project.get("videoconferences_extra_data")
url = @.project.get("slug") + "-" + taiga.slugify(@.project.get("videoconferences_extra_data"))
else
url = @.project.get("slug")
# Some special cases
if @.project.get("videoconferences") == "jitsi"
url = url.replace(/-/g, "")
return baseUrl + url
angular.module("taigaComponents").controller("ProjectMenu", ProjectMenuController)

View File

@ -12,7 +12,8 @@ nav.menu(
aria-label="{{'PROJECT.SECTION.SEARCH' | translate}}"
tabindex="1"
)
span.icon.icon-search
svg.icon.icon-search
use(xlink:href="#icon-search")
span.helper(translate="PROJECT.SECTION.SEARCH")
li(id="nav-timeline")
@ -22,7 +23,8 @@ nav.menu(
aria-label="{{'PROJECT.SECTION.TIMELINE' | translate}}"
tabindex="2"
)
include ../../../svg/timeline.svg
svg.icon.icon-timeline
use(xlink:href="#icon-timeline")
span.helper(translate="PROJECT.SECTION.TIMELINE")
li(id="nav-backlog", ng-if="vm.menu.get('backlog')")
@ -32,7 +34,8 @@ nav.menu(
aria-label="{{'PROJECT.SECTION.BACKLOG' | translate}}"
tabindex="2"
)
span.icon.icon-scrum
svg.icon.icon-scrum
use(xlink:href="#icon-scrum")
span.helper(translate="PROJECT.SECTION.BACKLOG")
li(id="nav-kanban", ng-if="vm.menu.get('kanban')")
@ -42,7 +45,8 @@ nav.menu(
aria-label="{{'PROJECT.SECTION.KANBAN' | translate}}"
tabindex="3"
)
span.icon.icon-kanban
svg.icon.icon-kanban
use(xlink:href="#icon-kanban")
span.helper(translate="PROJECT.SECTION.KANBAN")
li(id="nav-issues", ng-if="vm.menu.get('issues')")
@ -52,7 +56,8 @@ nav.menu(
aria-label="{{'PROJECT.SECTION.ISSUES' | translate}}"
tabindex="4"
)
span.icon.icon-issues
svg.icon.icon-issues
use(xlink:href="#icon-issues")
span.helper(translate="PROJECT.SECTION.ISSUES")
li(id="nav-wiki", ng-if="vm.menu.get('wiki')")
@ -62,7 +67,8 @@ nav.menu(
aria-label="{{'PROJECT.SECTION.WIKI' | translate}}"
tabindex="5"
)
span.icon.icon-wiki
svg.icon.icon-wiki
use(xlink:href="#icon-wiki")
span.helper(translate="PROJECT.SECTION.WIKI")
li(id="nav-team")
@ -72,7 +78,8 @@ nav.menu(
aria-label="{{'PROJECT.SECTION.TEAM' | translate}}"
tabindex="6"
)
span(class="icon icon-team")
svg.icon.icon-team
use(xlink:href="#icon-team")
span.helper(translate="PROJECT.SECTION.TEAM")
li(id="nav-video", ng-if="vm.project.get('videoconferenceUrl')")
@ -82,15 +89,17 @@ nav.menu(
aria-label="{{'PROJECT.SECTION.MEETUP' | translate}}"
tabindex="7"
)
span.icon.icon-video
svg.icon.icon-bubble
use(xlink:href="#icon-bubble")
span.helper(translate="PROJECT.SECTION.MEETUP")
li(id="nav-admin", ng-if="vm.project.get('i_am_owner')")
li(id="nav-admin", ng-if="vm.project.get('i_am_admin')")
a(
tg-nav="project-admin-home:project=vm.project.get('slug')"
ng-class="{active: vm.active == 'admin'}"
aria-label="{{'PROJECT.SECTION.ADMIN' | translate}}"
tabindex="8"
)
span.icon.icon-settings
svg.icon.icon-settings
use(xlink:href="#icon-settings")
span.helper(translate="PROJECT.SECTION.ADMIN")

View File

@ -9,7 +9,8 @@ a.vote-inner(
ng-mouseleave="vm.showTextWhenMouseIsLeave()"
)
span.track-icon
include ../../../svg/upvote.svg
svg.icon.icon-upvote
use(xlink:href="#icon-upvote")
span.track-button-counter(
title="{{ 'COMMON.VOTE_BUTTON.COUNTER_TITLE'|translate:{total:vm.item.total_voters||0}:'messageformat' }}",
tg-loading="vm.loading"
@ -18,7 +19,8 @@ a.vote-inner(
//- Anonymous user button
span.vote-inner(ng-if="::!vm.user")
span.track-icon
include ../../../svg/upvote.svg
svg.icon.icon-upvote
use(xlink:href="#icon-upvote")
span.track-button-counter(
title="{{ 'COMMON.VOTE_BUTTON.COUNTER_TITLE'|translate:{total:vm.item.total_voters||0}:'messageformat' }}"
) {{ ::vm.item.total_voters }}

View File

@ -13,20 +13,18 @@ div.ticket-watch-inner
ng-mouseover="vm.showTextWhenMouseIsOver()"
ng-mouseleave="vm.showTextWhenMouseIsLeave()"
)
span.track-icon
include ../../../svg/watch.svg
span(
ng-if="!vm.item.is_watcher",
translate="COMMON.WATCH_BUTTON.WATCH"
)
span(
ng-if="vm.item.is_watcher && !vm.isMouseOver",
translate="COMMON.WATCH_BUTTON.WATCHING"
)
span(
ng-if="vm.item.is_watcher && vm.isMouseOver",
translate="COMMON.WATCH_BUTTON.UNWATCH"
)
span(ng-if="!vm.item.is_watcher")
svg.icon.icon-watch
use(xlink:href="#icon-watch")
| {{'COMMON.WATCH_BUTTON.WATCH' | translate}}
span(ng-if="vm.item.is_watcher && !vm.isMouseOver",)
svg.icon.icon-watch
use(xlink:href="#icon-watch")
| {{'COMMON.WATCH_BUTTON.WATCHING' | translate}}
span(ng-if="vm.item.is_watcher && vm.isMouseOver")
svg.icon.icon-unwatch
use(xlink:href="#icon-unwatch")
| {{'COMMON.WATCH_BUTTON.UNWATCH' | translate}}
a.add-watcher(
href=""

View File

@ -2,8 +2,7 @@ mixin counter
span.track-button-counter(
title="{{ 'COMMON.WATCH_BUTTON.COUNTER_TITLE'|translate:{total:vm.item.watchers.length||0}:'messageformat' }}",
tg-loading="vm.loading"
)
| {{ vm.item.watchers.length }}
) {{ vm.item.watchers.length }}
//- Registered user button
@ -17,8 +16,8 @@ a.track-button.watch-button.watch-container(
ng-mouseleave="vm.showTextWhenMouseIsLeave()"
)
span.track-inner
span.track-icon
include ../../../svg/watch.svg
svg.icon.icon-watch
use(xlink:href="#icon-watch")
span(
ng-if="!vm.item.is_watcher",
translate="COMMON.WATCH_BUTTON.WATCH"
@ -39,6 +38,7 @@ span.track-button.watch-button.watch-container(
)
span.track-inner
span.track-icon
include ../../../svg/watch.svg
svg.icon.icon-watch
use(xlink:href="#icon-watch")
span(translate="COMMON.WATCH_BUTTON.WATCHERS")
+counter

View File

@ -3,7 +3,8 @@
href="#"
ng-click="vm.open()"
) {{vm.currentText()}}
span.icon-arrow-bottom
svg.icon.icon-arrow-down
use(xlink:href="#icon-arrow-down")
ul.filter-list(ng-if="vm.is_open")
li(ng-click="vm.orderBy('week')") {{ 'DISCOVER.FILTERS.WEEK' | translate }}

View File

@ -18,12 +18,12 @@ div.discover-header
placeholder="{{ 'DISCOVER.SEARCH.INPUT_PLACEHOLDER' | translate }}"
ng-model="vm.q"
)
a.search-button(
svg.search-button.icon.icon-search(
ng-click="vm.submitFilter()"
href="#"
title="{{ 'DISCOVER.SEARCH.ACTION_TITLE' | translate }}"
)
include ../../../../svg/search.svg
use(xlink:href="#icon-search")
fieldset.searchbox-filters(ng-if="vm.filter")
input(

View File

@ -36,19 +36,15 @@
}
}
.search-button {
@include svg-size(1.5rem);
fill: $gray-light;
position: absolute;
right: 1rem;
top: 1rem;
transition: fill .2s;
&:hover {
svg {
cursor: pointer;
fill: $primary;
}
}
}
svg {
fill: $gray-light;
height: 1.5rem;
transition: all .2;
width: 1.5rem;
}
}

View File

@ -1,7 +1,8 @@
.discover-results-header
.discover-results-header-inner
.title
include ../../../../svg/search.svg
svg.icon.icon-search
use(xlink:href="#icon-search")
h2 {{ 'DISCOVER.SEARCH.RESULTS' | translate }}
.filter-discover-search(ng-mouseleave="vm.toggleClose()")
@ -10,14 +11,16 @@
ng-click="vm.openLike()"
ng-class="{active: vm.like_is_open}"
)
include ../../../../svg/like.svg
svg.icon.icon-like
use(xlink:href="#icon-like")
span {{ 'DISCOVER.MOST_LIKED' | translate }}
a.discover-search-filter(
href="#"
ng-click="vm.openActivity()"
ng-class="{active: vm.activity_is_open}"
)
include ../../../../svg/activity.svg
svg.icon.icon-activity
use(xlink:href="#icon-activity")
span {{ 'DISCOVER.MOST_ACTIVE' | translate }}
.discover-search-subfilter.most-liked-subfilter(ng-if="vm.like_is_open")

View File

@ -5,8 +5,9 @@
justify-content: space-between;
}
svg {
@include svg-size(1.1rem);
@include svg-size(1.2rem);
fill: $gray-light;
margin-right: .25rem;
}
.title {
@extend %bold;
@ -23,8 +24,14 @@
margin-right: 1rem;
&.active {
color: $primary;
svg {
fill: $primary;
}
}
}
svg {
@include svg-size(.8rem);
}
}
.discover-search-subfilter {

View File

@ -26,28 +26,31 @@
tg-nav="project:project=project.get('slug')"
title="{{::project.get('name')}}"
) {{::project.get('name')}}
span.look-for-people(
svg.look-for-people.icon.icon-recruit(
ng-if="project.get('is_looking_for_people')"
title="{{ ::project.get('looking_for_people_note') }}"
)
include ../../../../svg/recruit.svg
use(xlink:href="#icon-recruit")
title="{{ ::project.get('looking_for_people_note') }}"
p.project-card-description {{ ::project.get('description') | limitTo:100 }}{{ ::project.get('description').length < 100 ? '' : '...'}}
.project-card-statistics
span.statistic(
ng-class="{'active': project.get('is_fan')}"
title="{{ 'PROJECT.FANS_COUNTER_TITLE'|translate:{total:project.get('total_fans')||0}:'messageformat' }}"
)
include ../../../../svg/like.svg
svg.icon.icon-like
use(xlink:href="#icon-like")
span {{::project.get('total_fans')}}
span.statistic(
ng-class="{'active': project.get('is_watcher')}"
title="{{ 'PROJECT.WATCHERS_COUNTER_TITLE'|translate:{total:project.get('total_watchers')||0}:'messageformat' }}"
)
include ../../../../svg/eye.svg
svg.icon.icon-watch
use(xlink:href="#icon-watch")
span {{::project.get('total_watchers')}}
span.statistic(
ng-class="{'active': project.get('i_am_member')}"
title="{{ 'PROJECT.MEMBERS_COUNTER_TITLE'|translate:{total:project.get('members').size||0}:'messageformat' }}"
)
include ../../../../svg/team.svg
svg.icon.icon-team
use(xlink:href="#icon-team")
span.statistics-num {{ ::project.get('members').size }}

View File

@ -24,29 +24,30 @@
tg-nav="project:project=project.get('slug')"
title="{{::project.get('name')}}"
) {{::project.get('name')}}
span.look-for-people(
ng-if="project.get('is_looking_for_people')"
svg.look-for-people.icon.icon-recruit(ng-if="project.get('is_looking_for_people')")
use(xlink:href="#icon-recruit")
title="{{ ::project.get('looking_for_people_note') }}"
)
include ../../../../svg/recruit.svg
.project-statistics
span.statistic(
ng-class="{'active': project.get('is_fan')}"
title="{{ 'PROJECT.FANS_COUNTER_TITLE'|translate:{total:project.get('total_fans')||0}:'messageformat' }}"
)
include ../../../../svg/like.svg
svg.icon.icon-like
use(xlink:href="#icon-like")
span {{::project.get('total_fans')}}
span.statistic(
ng-class="{'active': project.get('is_watcher')}"
title="{{ 'PROJECT.WATCHERS_COUNTER_TITLE'|translate:{total:project.get('total_watchers')||0}:'messageformat' }}"
)
include ../../../../svg/eye.svg
svg.icon.icon-watch
use(xlink:href="#icon-watch")
span {{::project.get('total_watchers')}}
span.statistic(
ng-class="{'active': project.get('i_am_member')}"
title="{{ 'PROJECT.MEMBERS_COUNTER_TITLE'|translate:{total:project.get('members').size||0}:'messageformat' }}"
)
include ../../../../svg/team.svg
svg.icon.icon-team
use(xlink:href="#icon-team")
span.statistics-num {{ ::project.get('members').size }}
p.project-description {{ ::project.get('description') | limitTo:150 }}{{ ::project.get('description').length < 150 ? '' : '...'}}

View File

@ -34,14 +34,19 @@
justify-content: space-between;
margin-bottom: 1rem;
svg {
@include svg-size(1.5rem);
@include svg-size(.8rem);
fill: $gray-light;
margin: .5rem;
margin-left: .5rem;
}
}
.title-wrapper {
align-items: center;
display: flex;
svg {
@include svg-size(1.25rem);
fill: $gray-light;
margin-right: .5rem;
}
}
.title {
@extend %bold;
@ -97,6 +102,11 @@
position: relative;
top: .2rem;
}
&:hover {
svg {
fill: currentColor;
}
}
}
.filter-list {
background: $black;
@ -163,12 +173,10 @@
}
}
.look-for-people {
svg {
@include svg-size();
fill: $gray-light;
margin-left: .5rem;
}
}
.project-description {
@extend %small;
color: $gray;
@ -179,8 +187,9 @@
flex-basis: 140px;
justify-content: flex-end;
svg {
@include svg-size(.8rem);
@include svg-size(.75rem);
fill: $gray-light;
margin-right: .25rem;
}
.svg-eye-closed {
display: none;

View File

@ -1,7 +1,8 @@
.most-active(ng-if="vm.highlighted.size")
.header
.title-wrapper
include ../../../../svg/activity.svg
svg.icon.icon-activity
use(xlink:href="#icon-activity")
h1.title {{ 'DISCOVER.MOST_ACTIVE' | translate }}
tg-discover-home-order-by(on-change="vm.orderBy(orderBy)", order-by="vm.currentOrderBy")
@ -14,5 +15,6 @@
.empty-highlighted-project(
ng-if="!vm.highlighted.size"
)
include ../../../../svg/activity.svg
svg.icon.icon-activity
use(xlink:href="#icon-activity")
span {{ 'DISCOVER.MOST_ACTIVE_EMPTY' | translate }}

View File

@ -1,7 +1,8 @@
.most-liked(ng-if="vm.highlighted.size")
.header
.title-wrapper
include ../../../../svg/like.svg
svg.icon.icon-like
use(xlink:href="#icon-like")
h1.title {{ 'DISCOVER.MOST_LIKED' | translate }}
tg-discover-home-order-by(on-change="vm.orderBy(orderBy)", order-by="vm.currentOrderBy")
tg-highlighted(
@ -13,5 +14,6 @@
.empty-highlighted-project(
ng-if="!vm.highlighted.size"
)
include ../../../../svg/like.svg
svg.icon.icon-like
use(xlink:href="#icon-like")
span {{ 'DISCOVER.MOST_LIKED_EMPTY' | translate }}

View File

@ -43,11 +43,9 @@ div(tg-discover-search)
tg-nav="project:project=project.get('slug')"
title="{{ ::project.get('name') }}"
) {{project.get('name')}}
span.look-for-people(
ng-if="project.get('is_looking_for_people')"
svg.look-for-people.icon.icon-recruit(ng-if="project.get('is_looking_for_people')")
use(xlink:href="#icon-recruit")
title="{{ ::project.get('looking_for_people_note') }}"
)
include ../../../svg/recruit.svg
p {{ ::project.get('description') | limitTo:300 }}
span(ng-if="::project.get('description').length > 300") ...
.list-itemtype-project-right.project-statistics
@ -55,19 +53,22 @@ div(tg-discover-search)
ng-class="{'active': project.get('is_fan')}"
title="{{ 'PROJECT.FANS_COUNTER_TITLE'|translate:{total:project.get('total_fans')||0}:'messageformat' }}"
)
include ../../../svg/like.svg
svg.icon.icon-like
use(xlink:href="#icon-like")
span {{::project.get('total_fans')}}
span.statistic(
ng-class="{'active': project.get('is_watcher')}"
title="{{ 'PROJECT.WATCHERS_COUNTER_TITLE'|translate:{total:project.get('total_watchers')||0}:'messageformat' }}"
)
include ../../../svg/eye.svg
svg.icon.icon-watch
use(xlink:href="#icon-watch")
span {{::project.get('total_watchers')}}
span.statistic(
ng-class="{'active': project.get('i_am_member')}"
title="{{ 'PROJECT.MEMBERS_COUNTER_TITLE'|translate:{total:project.get('members').size||0}:'messageformat' }}"
)
include ../../../svg/team.svg
svg.icon.icon-team
use(xlink:href="#icon-team")
span.statistics-num {{ ::project.get('members').size }}
a.button-green.more-results(

View File

@ -4,7 +4,6 @@
margin: 0 8rem;
position: relative;
}
.search-button {
left: 1rem;
right: auto;
@ -73,19 +72,17 @@
vertical-align: middle;
}
.look-for-people {
margin-left: .5rem;
svg {
@include svg-size(1rem);
fill: $gray-light;
}
margin-left: .5rem;
}
.project-statistics {
display: flex;
flex-basis: 300px;
justify-content: flex-end;
svg {
@include svg-size(.8rem);
@include svg-size(.7rem);
fill: $gray-light;
margin-right: .2rem;
}
.svg-eye-closed {
display: none;

View File

@ -1,7 +1,7 @@
a.list-itemtype-ticket(
href="{{ ::vm.duty.get('url') }}"
title="{{ ::duty.get('subject') }}"
ng-class="{'blocked': vm.duty.get('is_blocked')}"
ng-class="{'blocked': vm.duty.get('is_blocked'), 'blocked-project': vm.duty.get('blockedProject')}"
)
div.list-itemtype-avatar(ng-if="::vm.duty.get('assigned_to_extra_info')")
img(
@ -16,8 +16,12 @@ a.list-itemtype-ticket(
div.list-itemtype-ticket-data
p
span.ticket-project {{ ::vm.duty.get('projectName')}}
span.ticket-type {{ ::vm.getDutyType() }}
span.ticket-status(ng-style="{'color': vm.duty.get('status_extra_info').get('color')}") {{ ::vm.duty.get('status_extra_info').get('name') }}
svg.icon.icon-blocked-project(ng-if="vm.duty.get('blockedProject')")
use(xlink:href="#icon-blocked-project")
title(translate="PROJECT.BLOCKED_PROJECT.BLOCKED")
h2
span.ticket-id(tg-bo-ref="duty.get('ref')")

View File

@ -41,6 +41,7 @@ class HomeService extends taiga.Service
duty = duty.set('url', url)
duty = duty.set('projectName', project.get('name'))
duty = duty.set('blockedProject', project.get('blocked_code'))
duty = duty.set("_name", objType)
return duty

View File

@ -128,6 +128,7 @@ describe "tgHome", ->
project: '1',
url: '/testing-project/us/1',
projectName: 'fake1',
blockedProject: undefined,
_name: 'userstories'
}]
tasks: [{
@ -136,6 +137,7 @@ describe "tgHome", ->
project: '1',
url: '/testing-project/tasks/1',
projectName: 'fake1',
blockedProject: undefined,
_name: 'tasks'
}]
issues: [{
@ -144,6 +146,7 @@ describe "tgHome", ->
project: '1',
url: '/testing-project/issues/1',
projectName: 'fake1',
blockedProject: undefined,
_name: 'issues'
}]
}
@ -154,6 +157,7 @@ describe "tgHome", ->
project: '1',
url: '/testing-project/us/1',
projectName: 'fake1',
blockedProject: undefined,
_name: 'userstories'
}]
tasks: [{
@ -162,6 +166,7 @@ describe "tgHome", ->
project: '1',
url: '/testing-project/tasks/1',
projectName: 'fake1',
blockedProject: undefined,
_name: 'tasks'
}]
issues: [{
@ -170,6 +175,7 @@ describe "tgHome", ->
project: '1',
url: '/testing-project/issues/1',
projectName: 'fake1',
blockedProject: undefined,
_name: 'issues'
}]
}

View File

@ -1,6 +1,10 @@
section.home-project-list(ng-if="vm.projects.size")
.home-project(tg-bind-scope, tg-repeat="project in vm.projects")
.home-project(
tg-bind-scope
tg-repeat="project in vm.projects"
ng-class="{'blocked-project': project.get('blocked_code')}"
)
.tags-container
.project-tag(
style="background: {{tag.get('color')}}"
@ -19,16 +23,18 @@ section.home-project-list(ng-if="vm.projects.size")
alt="{{::project.get('name')}}"
)
h2.project-card-name
a(
a.project-title(
href="#"
tg-nav="project:project=project.get('slug')"
title="{{::project.get('name')}}"
) {{::project.get('name')}}
span.look-for-people(
ng-if="project.get('is_looking_for_people')"
svg.look-for-people.icon.icon-recruit(ng-if="project.get('is_looking_for_people')")
use(xlink:href="#icon-recruit")
title="{{ ::project.get('looking_for_people_note') }}"
)
include ../../../svg/recruit.svg
svg.icon.icon-blocked-project(ng-if="project.get('blocked_code')")
use(xlink:href="#icon-blocked-project")
title(translate="PROJECT.BLOCKED_PROJECT.BLOCKED")
p.project-card-description {{::project.get('description')| limitTo:100 }}
span(ng-if="::project.get('description').length > 100") ...
.project-card-statistics
@ -36,25 +42,29 @@ section.home-project-list(ng-if="vm.projects.size")
ng-class="{'active': project.get('is_fan')}"
title="{{ 'PROJECT.FANS_COUNTER_TITLE'|translate:{total:project.get('total_fans')||0}:'messageformat' }}"
)
include ../../../svg/like.svg
svg.icon.icon-like
use(xlink:href="#icon-like")
span {{::project.get('total_fans')}}
span.statistic(
ng-class="{'active': project.get('is_watcher')}"
title="{{ 'PROJECT.WATCHERS_COUNTER_TITLE'|translate:{total:project.get('total_watchers')||0}:'messageformat' }}"
)
include ../../../svg/eye.svg
svg.icon.icon-watch
use(xlink:href="#icon-watch")
span {{::project.get('total_watchers')}}
span.statistic(
ng-class="{'active': project.get('i_am_member')}"
title="{{ 'PROJECT.MEMBERS_COUNTER_TITLE'|translate:{total:project.get('members').size||0}:'messageformat' }}"
)
include ../../../svg/team.svg
svg.icon.icon-team
use(xlink:href="#icon-team")
span.statistics-num {{ ::project.get('members').size }}
span.statistic(
ng-if="::project.get('is_private')"
title="{{ 'PROJECT.PRIVATE' | translate }}"
)
include ../../../svg/lock.svg
svg.icon.icon-lock
use(xlink:href="#icon-lock")
a.see-more-projects-btn.button-gray(
href="#",
@ -65,7 +75,8 @@ section.home-project-list(ng-if="vm.projects.size")
)
section.projects-empty(ng-if="vm.projects != undefined && vm.projects.size === 0")
include ../../../svg/empty-project.svg
svg.icon.icon-project
use(xlink:href="#icon-project")
p(translate="HOME.EMPTY_PROJECT_LIST")
a.create-project-button.button-green(href="#", ng-click="vm.newProject()",
title="{{'PROJECT.NAVIGATION.TITLE_CREATE_PROJECT' | translate}}",

View File

@ -4,23 +4,36 @@
@include project-card;
cursor: pointer;
margin-bottom: 1rem;
transition: .2s;
transition-delay: .1s;
transition: all .2s;
&:hover {
border: 1px solid $primary-light;
border: 1px solid rgba($primary-light, .2);
box-shadow: 0 0 5px $whitish;
}
&.blocked-project {
border: $whitish;
&:hover {
border: $whitish;
box-shadow: none;
}
.tags-container,
.project-card-logo,
.project-card-name a,
.icon-recruit,
.project-card-description,
.project-card-statistics {
opacity: .3;
}
}
}
.projects-empty {
text-align: center;
svg {
fill: $whitish;
height: 100px;
margin: 1rem auto;
text-align: center;
width: 100%;
path {
fill: $whitish;
}
}
p {
@extend %small;

View File

@ -20,7 +20,11 @@ section.watching-container
.title-bar.watching-title(translate="HOME.WATCHING_SECTION")
.watching(ng-if="vm.watching.size")
.duty-single(tg-duty="duty", tg-repeat="duty in vm.watching", ng-class="{'blocked': duty.is_blocked}")
.duty-single(
tg-duty="duty"
tg-repeat="duty in vm.watching"
ng-class="{'blocked': duty.is_blocked}"
)
.watching-empty(ng-if="vm.watching != undefined && vm.watching.size === 0")
p(translate="HOME.EMPTY_WATCHING")

View File

@ -1,10 +0,0 @@
#TODO: fill correctly when implemented
a(href="#", title="Organizations")
include ../../../svg/organizations.svg
div.navbar-dropdown.dropdown-organization-list
ul
- for (var x = 0; x < 4; x++)
li
a(href="#", title="{{ project.title }}") Organization 1
a.create-organization-btn.button-green(href="#", title="Create Organization") Create Organization

View File

@ -1,10 +1,19 @@
a(href="", title="Projects", tg-nav="projects")
include ../../../svg/projects.svg
svg.icon.icon-project
use(xlink:href="#icon-project")
div.navbar-dropdown.dropdown-project-list
ul
li(tg-repeat="project in vm.projects track by project.get('id')")
a(href="#", tg-nav="project:project=project.get('slug')") {{::project.get("name")}}
a(
href="#"
tg-nav="project:project=project.get('slug')"
ng-class="{'blocked-project': project.get('blocked_code')}"
)
span {{::project.get("name")}}
svg.icon.icon-blocked-project(ng-if="project.get('blocked_code')")
use(xlink:href="#icon-blocked-project")
title(translate="PROJECT.BLOCKED_PROJECT.BLOCKED")
a.see-more-projects-btn.button-gray(
href="#",
@ -20,6 +29,10 @@ div.navbar-dropdown.dropdown-project-list
translate="PROJECT.NAVIGATION.ACTION_CREATE_PROJECT")
span(tg-import-project-button)
a.button-blackish.import-project-button(href="", title="{{'PROJECT.NAVIGATION.TITLE_IMPORT_PROJECT' | translate}}")
span.icon.icon-upload
a.button-blackish.import-project-button(
href=""
title="{{'PROJECT.NAVIGATION.TITLE_IMPORT_PROJECT' | translate}}"
)
svg.icon.icon-upload
use(xlink:href="#icon-upload")
input.import-file.hidden(type="file")

View File

@ -18,7 +18,7 @@
###
DropdownUserDirective = (authService, configService, locationService,
navUrlsService, feedbackService) ->
navUrlsService, feedbackService, $rootScope) ->
link = (scope, el, attrs, ctrl) ->
scope.vm = {}
@ -33,6 +33,8 @@ DropdownUserDirective = (authService, configService, locationService,
scope.vm.sendFeedback = ->
feedbackService.sendFeedback()
scope.vm.userSettingsPlugins = _.filter($rootScope.userSettingsPlugins, {userMenu: true})
directive = {
templateUrl: "navigation-bar/dropdown-user/dropdown-user.html"
scope: {}
@ -46,7 +48,8 @@ DropdownUserDirective.$inject = [
"$tgConfig",
"$tgLocation",
"$tgNavUrls",
"tgFeedbackService"
"tgFeedbackService",
"$rootScope"
]
angular.module("taigaNavigationBar").directive("tgDropdownUser", DropdownUserDirective)

View File

@ -22,6 +22,16 @@ div.navbar-dropdown.dropdown-user
tg-nav="user-settings-user-profile",
title="{{'PROJECT.NAVIGATION.EDIT_PROFILE_TITLE' | translate}}",
translate="PROJECT.NAVIGATION.EDIT_PROFILE")
li.plugin(ng-repeat="plugin in vm.userSettingsPlugins")
a(
href=""
tg-nav="user-settings-contrib:plugin=plugin.slug"
ng-class="{active: plugin.slug == currentPlugin.slug}"
)
span.title {{ plugin.name }}
span.new(translate="PROJECT.NAVIGATION.NEW_ITEM")
li
a(
href="#",

View File

@ -49,6 +49,13 @@ describe "navigationBarDirective", () ->
provide.value "$tgLocation", mocks.locationService
_mocksConfig = () ->
mocks.config = Immutable.fromJS({
publicRegisterEnabled: true
})
provide.value "$tgConfig", mocks.config
_mockTgNavUrls = () ->
mocks.navUrls = {
resolve: sinon.stub()
@ -76,6 +83,8 @@ describe "navigationBarDirective", () ->
_mockTranslateFilter()
_mockTgDropdownProjectListDirective()
_mockTgDropdownUserDirective()
_mocksConfig()
return null
beforeEach ->
@ -120,6 +129,7 @@ describe "navigationBarDirective", () ->
expect(mocks.locationService.search.callCount).to.be.equal(1)
expect(mocks.locationService.url.calledWith("/login")).to.be.true
expect(mocks.locationService.search.calledWith({next: encodeURIComponent(nextUrl)})).to.be.true
expect(vm.publicRegisterEnabled).to.be.true
it "navigation bar register", () ->
mocks.navUrls.resolve.withArgs("register").returns("/register")
@ -135,3 +145,4 @@ describe "navigationBarDirective", () ->
expect(mocks.locationService.search.callCount).to.be.equal(1)
expect(mocks.locationService.url.calledWith("/register")).to.be.true
expect(mocks.locationService.search.calledWith({next: encodeURIComponent(nextUrl)})).to.be.true
expect(vm.publicRegisterEnabled).to.be.true

View File

@ -34,14 +34,16 @@ nav.navbar(ng-if="vm.isEnabledHeader")
ng-class="{active: vm.active}",
title="{{'PROJECT.NAVIGATION.DASHBOARD_TITLE' | translate}}")
include ../../svg/dashboard.svg
svg.icon.icon-dashboard
use(xlink:href="#icon-dashboard")
a(
href="#",
tg-nav="discover",
title="{{'PROJECT.NAVIGATION.DISCOVER_TITLE' | translate}}",
)
include ../../svg/discover.svg
svg.icon.icon-discover
use(xlink:href="#icon-discover")
div.topnav-dropdown-wrapper(ng-show="vm.projects.size", tg-dropdown-project-list)
//- div.topnav-dropdown-wrapper(tg-dropdown-organization-list)

View File

@ -52,13 +52,14 @@ $dropdown-width: 350px;
color: $white;
display: inline-block;
transition: all .2s linear;
svg path {
fill: darken($primary-dark, 8%);
svg {
fill: rgba($primary-dark, .8);
transition: all .2s linear;
}
&:hover {
background: rgba($black, .2);
color: $primary-light;
svg path {
svg {
fill: $white;
}
@ -84,10 +85,6 @@ $dropdown-width: 350px;
max-height: 1.2rem;
max-width: 1.2rem;
width: 1.2rem;
path {
fill: $top-icon-color;
transition: all .2s;
}
}
.topnav-dropdown-wrapper {
position: relative;
@ -132,6 +129,20 @@ $dropdown-width: 350px;
margin-bottom: .5rem;
padding: 0;
}
.plugin {
&:hover {
.new {
color: $white;
}
}
.new {
@extend %small;
background: $red-light;
float: right;
margin-left: auto;
padding: .1rem .25rem;
}
}
a {
color: $gray-light;
display: block;
@ -152,14 +163,30 @@ $dropdown-width: 350px;
&.see-more-projects-btn {
margin-bottom: .3rem;
}
&.import-project-button {
padding: .8rem 1rem;
}
&.create-project-btn {
flex: 1;
}
&.import-project-button {
padding-left: .75rem;
padding-right: .75rem;
&.blocked-project {
color: $gray;
svg {
margin-left: .5rem;
position: relative;
top: .25rem;
}
}
}
.import-project-button {
&:hover {
svg {
fill: $primary-light;
}
}
svg {
fill: $white;
}
}
.create-options {
display: flex;

View File

@ -2,19 +2,10 @@ section.profile-bar
div.profile-image-wrapper(ng-class="::{'is-current-user': vm.isCurrentUser}")
img.profile-img(ng-src="{{::vm.user.get('big_photo')}}", alt="{{::vm.user.get('full_name')}}")
a.profile-edition(title="{{ 'USER.PROFILE.EDIT' | translate }}", tg-nav="user-settings-user-profile", translate="USER.PROFILE.EDIT")
// a.button-green
// span(translate="USER.PROFILE.FOLLOW")
div.profile-data
h1(ng-class="{'not-full-name': !vm.user.get('full_name')}") {{::vm.user.get("full_name_display")}}
.username @{{::vm.user.get("username")}}
h2 {{::vm.stats.get('roles').join(", ")}}
// div.location
// include ../../../svg/location.svg
// span Madrid
// Remove Abuse Flag when a user is seeing itself
// a.flag(href="", title="{{ 'USER.PROFILE.REPORT' | translate }}")
// include ../../../svg/flag.svg
// These values in profile stats are not defined yet in UX. Please ask
div.profile-stats
div.stat
span.stat-number {{::vm.stats.get('total_num_projects')}}
@ -25,14 +16,6 @@ section.profile-bar
div.stat
span.stat-number {{::vm.stats.get('total_num_contacts')}}
span.stat-name(translate="USER.PROFILE.CONTACTS")
// TODO Hide until organizations come
// div.profile-organizations
// h3 Organizations
// div.profile-organizations-wrapper
// div.organization
// div.organization
// div.organization
// div.organization
div.profile-quote(ng-if="::vm.user.get('bio')")
span {{::vm.user.get("bio") | limitTo:210 }}{{vm.user.get("bio").length < 210 ? '' : '...'}}

Some files were not shown because too many files have changed in this diff Show More