summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/cronjob.markdown32
-rw-r--r--doc/editing-projects.markdown15
-rw-r--r--doc/en_US/2fa.markdown (renamed from doc/2fa.markdown)6
-rw-r--r--doc/en_US/analytics-tasks.markdown (renamed from doc/analytics-tasks.markdown)4
-rw-r--r--doc/en_US/analytics.markdown (renamed from doc/analytics.markdown)12
-rw-r--r--doc/en_US/api-action-procedures.markdown (renamed from doc/api-action-procedures.markdown)0
-rw-r--r--doc/en_US/api-application-procedures.markdown (renamed from doc/api-application-procedures.markdown)0
-rw-r--r--doc/en_US/api-authentication.markdown (renamed from doc/api-authentication.markdown)3
-rw-r--r--doc/en_US/api-board-procedures.markdown (renamed from doc/api-board-procedures.markdown)0
-rw-r--r--doc/en_US/api-category-procedures.markdown (renamed from doc/api-category-procedures.markdown)0
-rw-r--r--doc/en_US/api-column-procedures.markdown (renamed from doc/api-column-procedures.markdown)0
-rw-r--r--doc/en_US/api-comment-procedures.markdown (renamed from doc/api-comment-procedures.markdown)0
-rw-r--r--doc/en_US/api-examples.markdown (renamed from doc/api-examples.markdown)0
-rw-r--r--doc/en_US/api-external-task-link-procedures.markdown (renamed from doc/api-external-task-link-procedures.markdown)0
-rw-r--r--doc/en_US/api-group-member-procedures.markdown (renamed from doc/api-group-member-procedures.markdown)0
-rw-r--r--doc/en_US/api-group-procedures.markdown (renamed from doc/api-group-procedures.markdown)0
-rw-r--r--doc/en_US/api-internal-task-link-procedures.markdown (renamed from doc/api-internal-task-link-procedures.markdown)0
-rw-r--r--doc/en_US/api-json-rpc.markdown (renamed from doc/api-json-rpc.markdown)2
-rw-r--r--doc/en_US/api-link-procedures.markdown (renamed from doc/api-link-procedures.markdown)0
-rw-r--r--doc/en_US/api-me-procedures.markdown (renamed from doc/api-me-procedures.markdown)0
-rw-r--r--doc/en_US/api-project-file-procedures.markdown (renamed from doc/api-project-file-procedures.markdown)0
-rw-r--r--doc/en_US/api-project-permission-procedures.markdown (renamed from doc/api-project-permission-procedures.markdown)0
-rw-r--r--doc/en_US/api-project-procedures.markdown (renamed from doc/api-project-procedures.markdown)0
-rw-r--r--doc/en_US/api-subtask-procedures.markdown (renamed from doc/api-subtask-procedures.markdown)0
-rw-r--r--doc/en_US/api-subtask-time-tracking-procedures.markdown (renamed from doc/api-subtask-time-tracking-procedures.markdown)0
-rw-r--r--doc/en_US/api-swimlane-procedures.markdown (renamed from doc/api-swimlane-procedures.markdown)2
-rw-r--r--doc/en_US/api-tags-procedures.markdown195
-rw-r--r--doc/en_US/api-task-file-procedures.markdown (renamed from doc/api-task-file-procedures.markdown)0
-rw-r--r--doc/en_US/api-task-procedures.markdown (renamed from doc/api-task-procedures.markdown)160
-rw-r--r--doc/en_US/api-user-procedures.markdown (renamed from doc/api-user-procedures.markdown)0
-rw-r--r--doc/en_US/application-configuration.markdown (renamed from doc/application-configuration.markdown)2
-rw-r--r--doc/en_US/assets.markdown (renamed from doc/assets.markdown)0
-rw-r--r--doc/en_US/automatic-actions.markdown (renamed from doc/automatic-actions.markdown)28
-rw-r--r--doc/en_US/board-collapsed-expanded.markdown (renamed from doc/board-collapsed-expanded.markdown)2
-rw-r--r--doc/en_US/board-configuration.markdown (renamed from doc/board-configuration.markdown)2
-rw-r--r--doc/en_US/board-horizontal-scrolling-and-compact-view.markdown (renamed from doc/board-horizontal-scrolling-and-compact-view.markdown)0
-rw-r--r--doc/en_US/board-show-hide-columns.markdown (renamed from doc/board-show-hide-columns.markdown)2
-rw-r--r--doc/en_US/bruteforce-protection.markdown (renamed from doc/bruteforce-protection.markdown)9
-rw-r--r--doc/en_US/calendar-configuration.markdown (renamed from doc/calendar-configuration.markdown)2
-rw-r--r--doc/en_US/calendar.markdown (renamed from doc/calendar.markdown)2
-rw-r--r--doc/en_US/centos-installation.markdown (renamed from doc/centos-installation.markdown)46
-rw-r--r--doc/en_US/cli.markdown (renamed from doc/cli.markdown)62
-rw-r--r--doc/en_US/closing-tasks.markdown (renamed from doc/closing-tasks.markdown)4
-rw-r--r--doc/en_US/cloudron.markdown (renamed from doc/cloudron.markdown)4
-rw-r--r--doc/en_US/coding-standards.markdown (renamed from doc/coding-standards.markdown)0
-rw-r--r--doc/en_US/config.markdown (renamed from doc/config.markdown)25
-rw-r--r--doc/en_US/contributing.markdown (renamed from doc/contributing.markdown)0
-rw-r--r--doc/en_US/create-tasks-by-email.markdown (renamed from doc/create-tasks-by-email.markdown)0
-rw-r--r--doc/en_US/creating-projects.markdown (renamed from doc/creating-projects.markdown)10
-rw-r--r--doc/en_US/creating-tasks.markdown (renamed from doc/creating-tasks.markdown)0
-rw-r--r--doc/en_US/cronjob.markdown55
-rw-r--r--doc/en_US/currency-rate.markdown (renamed from doc/currency-rate.markdown)2
-rw-r--r--doc/en_US/custom-filters.markdown (renamed from doc/custom-filters.markdown)4
-rw-r--r--doc/en_US/custom-project-roles.markdown88
-rw-r--r--doc/en_US/debian-installation.markdown (renamed from doc/debian-installation.markdown)11
-rw-r--r--doc/en_US/docker.markdown (renamed from doc/docker.markdown)2
-rw-r--r--doc/en_US/duplicate-move-tasks.markdown (renamed from doc/duplicate-move-tasks.markdown)4
-rw-r--r--doc/en_US/editing-projects.markdown15
-rw-r--r--doc/en_US/email-configuration.markdown (renamed from doc/email-configuration.markdown)0
-rw-r--r--doc/en_US/env.markdown (renamed from doc/env.markdown)0
-rw-r--r--doc/en_US/faq.markdown (renamed from doc/faq.markdown)15
-rw-r--r--doc/en_US/freebsd-installation.markdown (renamed from doc/freebsd-installation.markdown)0
-rw-r--r--doc/en_US/gantt-chart-projects.markdown (renamed from doc/gantt-chart-projects.markdown)2
-rw-r--r--doc/en_US/gantt-chart-tasks.markdown (renamed from doc/gantt-chart-tasks.markdown)4
-rw-r--r--doc/en_US/groups.markdown (renamed from doc/groups.markdown)0
-rw-r--r--doc/en_US/heroku.markdown (renamed from doc/heroku.markdown)4
-rw-r--r--doc/en_US/ical.markdown (renamed from doc/ical.markdown)14
-rw-r--r--doc/en_US/index.markdown (renamed from doc/index.markdown)14
-rw-r--r--doc/en_US/installation.markdown (renamed from doc/installation.markdown)26
-rw-r--r--doc/en_US/kanban-vs-todo-and-scrum.markdown (renamed from doc/kanban-vs-todo-and-scrum.markdown)10
-rw-r--r--doc/en_US/keyboard-shortcuts.markdown (renamed from doc/keyboard-shortcuts.markdown)0
-rw-r--r--doc/en_US/ldap-authentication.markdown (renamed from doc/ldap-authentication.markdown)0
-rw-r--r--doc/en_US/ldap-configuration-examples.markdown (renamed from doc/ldap-configuration-examples.markdown)0
-rw-r--r--doc/en_US/ldap-group-sync.markdown (renamed from doc/ldap-group-sync.markdown)0
-rw-r--r--doc/en_US/ldap-parameters.markdown (renamed from doc/ldap-parameters.markdown)0
-rw-r--r--doc/en_US/ldap-profile-picture.markdown (renamed from doc/ldap-profile-picture.markdown)0
-rw-r--r--doc/en_US/link-labels.markdown (renamed from doc/link-labels.markdown)4
-rw-r--r--doc/en_US/mysql-configuration.markdown (renamed from doc/mysql-configuration.markdown)24
-rw-r--r--doc/en_US/nice-urls.markdown (renamed from doc/nice-urls.markdown)45
-rw-r--r--doc/en_US/notifications.markdown (renamed from doc/notifications.markdown)6
-rw-r--r--doc/en_US/performances.markdown (renamed from doc/performances.markdown)0
-rw-r--r--doc/en_US/plugin-authentication-architecture.markdown (renamed from doc/plugin-authentication-architecture.markdown)0
-rw-r--r--doc/en_US/plugin-authentication.markdown (renamed from doc/plugin-authentication.markdown)2
-rw-r--r--doc/en_US/plugin-authorization-architecture.markdown (renamed from doc/plugin-authorization-architecture.markdown)0
-rw-r--r--doc/en_US/plugin-automatic-actions.markdown (renamed from doc/plugin-automatic-actions.markdown)0
-rw-r--r--doc/en_US/plugin-avatar-provider.markdown (renamed from doc/plugin-avatar-provider.markdown)0
-rw-r--r--doc/en_US/plugin-directory.markdown (renamed from doc/plugin-directory.markdown)0
-rw-r--r--doc/en_US/plugin-events.markdown (renamed from doc/plugin-events.markdown)0
-rw-r--r--doc/en_US/plugin-external-link.markdown (renamed from doc/plugin-external-link.markdown)0
-rw-r--r--doc/en_US/plugin-external-tasks.markdown76
-rw-r--r--doc/en_US/plugin-group-provider.markdown (renamed from doc/plugin-group-provider.markdown)2
-rw-r--r--doc/en_US/plugin-helpers.markdown (renamed from doc/plugin-helpers.markdown)2
-rw-r--r--doc/en_US/plugin-hooks.markdown263
-rw-r--r--doc/en_US/plugin-ldap-client.markdown (renamed from doc/plugin-ldap-client.markdown)0
-rw-r--r--doc/en_US/plugin-mail-transports.markdown (renamed from doc/plugin-mail-transports.markdown)0
-rw-r--r--doc/en_US/plugin-metadata.markdown (renamed from doc/plugin-metadata.markdown)0
-rw-r--r--doc/en_US/plugin-notifications.markdown (renamed from doc/plugin-notifications.markdown)0
-rw-r--r--doc/en_US/plugin-overrides.markdown (renamed from doc/plugin-overrides.markdown)31
-rw-r--r--doc/en_US/plugin-registration.markdown (renamed from doc/plugin-registration.markdown)52
-rw-r--r--doc/en_US/plugin-routes.markdown (renamed from doc/plugin-routes.markdown)0
-rw-r--r--doc/en_US/plugin-schema-migrations.markdown (renamed from doc/plugin-schema-migrations.markdown)0
-rw-r--r--doc/en_US/plugins.markdown (renamed from doc/plugins.markdown)3
-rw-r--r--doc/en_US/postgresql-configuration.markdown (renamed from doc/postgresql-configuration.markdown)8
-rw-r--r--doc/en_US/project-configuration.markdown (renamed from doc/project-configuration.markdown)4
-rw-r--r--doc/en_US/project-permissions.markdown (renamed from doc/project-permissions.markdown)12
-rw-r--r--doc/en_US/project-types.markdown (renamed from doc/project-types.markdown)0
-rw-r--r--doc/en_US/project-views.markdown (renamed from doc/project-views.markdown)22
-rw-r--r--doc/en_US/recurring-tasks.markdown (renamed from doc/recurring-tasks.markdown)2
-rw-r--r--doc/en_US/removing-projects.markdown (renamed from doc/removing-projects.markdown)4
-rw-r--r--doc/en_US/requirements.markdown (renamed from doc/requirements.markdown)8
-rw-r--r--doc/en_US/reverse-proxy-authentication.markdown (renamed from doc/reverse-proxy-authentication.markdown)0
-rw-r--r--doc/en_US/roles.markdown (renamed from doc/roles.markdown)2
-rw-r--r--doc/en_US/rss.markdown (renamed from doc/rss.markdown)2
l---------doc/en_US/screenshots1
-rw-r--r--doc/en_US/screenshots.markdown (renamed from doc/screenshots.markdown)4
-rw-r--r--doc/en_US/search.markdown (renamed from doc/search.markdown)8
-rw-r--r--doc/en_US/sharing-projects.markdown (renamed from doc/sharing-projects.markdown)16
-rw-r--r--doc/en_US/solving-blank-page-issue.markdown7
-rw-r--r--doc/en_US/solving-database-migration-issues.markdown23
-rw-r--r--doc/en_US/solving-session-issue-windows-iis-ie.markdown19
-rw-r--r--doc/en_US/sqlite-database.markdown (renamed from doc/sqlite-database.markdown)0
-rw-r--r--doc/en_US/subtasks.markdown (renamed from doc/subtasks.markdown)8
-rw-r--r--doc/en_US/suse-installation.markdown14
-rw-r--r--doc/en_US/swimlanes.markdown (renamed from doc/swimlanes.markdown)1
-rw-r--r--doc/en_US/syntax-guide.markdown (renamed from doc/syntax-guide.markdown)0
-rw-r--r--doc/en_US/tags.markdown (renamed from doc/tags.markdown)0
-rw-r--r--doc/en_US/task-links.markdown (renamed from doc/task-links.markdown)8
-rw-r--r--doc/en_US/tests.markdown (renamed from doc/tests.markdown)0
-rw-r--r--doc/en_US/time-tracking.markdown (renamed from doc/time-tracking.markdown)10
-rw-r--r--doc/en_US/transitions.markdown14
-rw-r--r--doc/en_US/translations.markdown (renamed from doc/translations.markdown)4
-rw-r--r--doc/en_US/ubuntu-installation.markdown (renamed from doc/ubuntu-installation.markdown)4
-rw-r--r--doc/en_US/update.markdown53
-rw-r--r--doc/en_US/usage-examples.markdown (renamed from doc/usage-examples.markdown)4
-rw-r--r--doc/en_US/user-management.markdown (renamed from doc/user-management.markdown)0
-rw-r--r--doc/en_US/user-mentions.markdown (renamed from doc/user-mentions.markdown)2
-rw-r--r--doc/en_US/user-types.markdown (renamed from doc/user-types.markdown)0
-rw-r--r--doc/en_US/vagrant.markdown (renamed from doc/vagrant.markdown)2
-rw-r--r--doc/en_US/webhooks.markdown487
-rw-r--r--doc/en_US/what-is-kanban.markdown (renamed from doc/what-is-kanban.markdown)20
-rw-r--r--doc/en_US/windows-apache-installation.markdown (renamed from doc/windows-apache-installation.markdown)0
-rw-r--r--doc/en_US/windows-iis-installation.markdown (renamed from doc/windows-iis-installation.markdown)0
-rw-r--r--doc/en_US/worker.markdown (renamed from doc/worker.markdown)6
-rw-r--r--doc/es_ES/2fa.markdown33
-rw-r--r--doc/es_ES/analytics-tasks.markdown24
-rw-r--r--doc/es_ES/analytics.markdown59
-rw-r--r--doc/es_ES/api-action-procedures.markdown245
-rw-r--r--doc/es_ES/api-authentication.markdown60
-rw-r--r--doc/es_ES/api-board-procedures.markdown158
-rw-r--r--doc/es_ES/api-category-procedures.markdown172
-rw-r--r--doc/es_ES/api-column-procedures.markdown229
-rw-r--r--doc/es_ES/api-comment-procedures.markdown181
-rw-r--r--doc/es_ES/api-examples.markdown152
-rw-r--r--doc/es_ES/api-external-task-link-procedures.markdown221
-rw-r--r--doc/es_ES/api-group-member-procedures.markdown188
-rwxr-xr-xdoc/es_ES/api-group-procedures.markdown174
-rw-r--r--doc/es_ES/api-internal-task-link-procedures.markdown187
-rw-r--r--doc/es_ES/api-json-rpc.markdown69
-rw-r--r--doc/es_ES/api-link-procedures.markdown285
-rw-r--r--doc/es_ES/board-collapsed-expanded.markdown18
-rw-r--r--doc/es_ES/board-configuration.markdown25
-rw-r--r--doc/es_ES/board-horizontal-scrolling-and-compact-view.markdown12
-rw-r--r--doc/es_ES/board-show-hide-columns.markdown12
-rw-r--r--doc/es_ES/bruteforce-protection.markdown26
-rw-r--r--doc/es_ES/calendar-configuration.markdown2
-rw-r--r--doc/es_ES/centos-installation.markdown80
-rwxr-xr-xdoc/es_ES/cli.markdown205
-rwxr-xr-xdoc/es_ES/cloudron.markdown27
-rwxr-xr-xdoc/es_ES/coding-standards.markdown24
-rwxr-xr-xdoc/es_ES/config.markdown307
-rw-r--r--doc/es_ES/contributing.markdown67
-rwxr-xr-xdoc/es_ES/creating-projects.markdown40
-rwxr-xr-xdoc/es_ES/creating-tasks.markdown31
-rwxr-xr-xdoc/es_ES/cronjob.markdown32
-rw-r--r--doc/es_ES/debian-installation.markdown65
-rw-r--r--doc/es_ES/docker.markdown105
-rwxr-xr-xdoc/es_ES/faq.markdown132
-rw-r--r--doc/es_ES/freebsd-installation.markdown132
-rw-r--r--doc/es_ES/heroku.markdown38
-rw-r--r--doc/es_ES/installation.markdown72
-rw-r--r--doc/es_ES/kanban-vs-todo-and-scrum.markdown2
-rwxr-xr-xdoc/es_ES/keyboard-shortcuts.markdown38
-rwxr-xr-xdoc/es_ES/mysql-configuration.markdown74
-rw-r--r--doc/es_ES/plugin-authentication-architecture.markdown99
-rw-r--r--doc/es_ES/plugin-authentication.markdown42
-rw-r--r--doc/es_ES/plugin-authorization-architecture.markdown39
-rw-r--r--doc/es_ES/plugin-automatic-actions.markdown61
-rw-r--r--doc/es_ES/plugin-avatar-provider.markdown32
-rw-r--r--doc/es_ES/plugin-directory.markdown15
-rw-r--r--doc/es_ES/plugin-events.markdown27
-rw-r--r--doc/es_ES/plugin-external-link.markdown79
-rw-r--r--doc/es_ES/plugin-group-provider.markdown54
-rw-r--r--doc/es_ES/plugin-helpers.markdown39
-rw-r--r--doc/es_ES/plugin-hooks.markdown249
-rw-r--r--doc/es_ES/plugin-ldap-client.markdown99
-rw-r--r--doc/es_ES/plugin-mail-transports.markdown49
-rw-r--r--doc/es_ES/plugin-metadata.markdown42
-rw-r--r--doc/es_ES/plugin-notifications.markdown59
-rw-r--r--doc/es_ES/plugin-overrides.markdown42
-rw-r--r--doc/es_ES/plugin-registration.markdown160
-rw-r--r--doc/es_ES/plugin-routes.markdown85
-rw-r--r--doc/es_ES/plugin-schema-migrations.markdown40
-rw-r--r--doc/es_ES/plugins.markdown46
-rwxr-xr-xdoc/es_ES/requirements.markdown111
-rwxr-xr-xdoc/es_ES/reverse-proxy-authentication.markdown64
-rwxr-xr-xdoc/es_ES/rss.markdown23
-rwxr-xr-xdoc/es_ES/screenshots.markdown25
-rw-r--r--doc/es_ES/subtasks.markdown46
-rw-r--r--doc/es_ES/suse-installation.markdown14
-rwxr-xr-xdoc/es_ES/swimlanes.markdown34
-rwxr-xr-xdoc/es_ES/tags.markdown28
-rw-r--r--doc/es_ES/translations.markdown68
-rwxr-xr-xdoc/es_ES/update.markdown34
-rw-r--r--doc/es_ES/user-mentions.markdown18
-rw-r--r--doc/fr_FR/2fa.markdown2
-rw-r--r--doc/fr_FR/analytics-tasks.markdown4
-rw-r--r--doc/fr_FR/analytics.markdown12
-rw-r--r--doc/fr_FR/application-configuration.markdown2
-rw-r--r--doc/fr_FR/application-configuration.markup2
-rw-r--r--doc/fr_FR/board-configuration.markdown2
-rw-r--r--doc/fr_FR/calendar-configuration.markdown2
-rw-r--r--doc/fr_FR/calendar.markdown2
-rw-r--r--doc/fr_FR/centos-installation.markdown83
-rw-r--r--doc/fr_FR/closing-tasks.markdown4
-rw-r--r--doc/fr_FR/currency-rate.markdown2
-rw-r--r--doc/fr_FR/custom-project-roles.markdown86
-rw-r--r--doc/fr_FR/debian-installation.markdown63
-rw-r--r--doc/fr_FR/duplicate-move-tasks.markdown4
-rw-r--r--doc/fr_FR/gantt-chart-projects.markdown2
-rw-r--r--doc/fr_FR/gantt-chart-tasks.markdown4
-rw-r--r--doc/fr_FR/index.markdown16
-rw-r--r--doc/fr_FR/installation.markdown67
-rw-r--r--doc/fr_FR/link-labels.markdown4
-rw-r--r--doc/fr_FR/notifications.markdown6
-rw-r--r--doc/fr_FR/project-configuration.markdown4
-rw-r--r--doc/fr_FR/recurring-tasks.markdown2
-rw-r--r--doc/fr_FR/requirements.markdown108
-rw-r--r--doc/fr_FR/roles.markdown2
-rw-r--r--doc/fr_FR/screenshots.markdown4
-rw-r--r--doc/fr_FR/screenshots/internal-task-links.pngbin0 -> 14772 bytes
-rw-r--r--doc/fr_FR/screenshots/task-transitions.pngbin0 -> 16975 bytes
-rw-r--r--doc/fr_FR/subtasks.markdown8
-rw-r--r--doc/fr_FR/task-links.markdown6
-rw-r--r--doc/fr_FR/time-tracking.markdown10
-rw-r--r--doc/fr_FR/transitions.markdown12
-rw-r--r--doc/fr_FR/ubuntu-installation.markdown65
-rw-r--r--doc/fr_FR/update.markdown54
-rw-r--r--doc/fr_FR/user-mentions.markdown13
-rw-r--r--doc/nitrous.markdown10
-rw-r--r--doc/plugin-hooks.markdown204
-rw-r--r--doc/ru_RU/2fa.markdown37
-rw-r--r--doc/ru_RU/analytics-tasks.markdown37
-rw-r--r--doc/ru_RU/analytics.markdown95
-rw-r--r--doc/ru_RU/api-json-rpc.markdown78
-rw-r--r--doc/ru_RU/application-configuration.markdown54
-rw-r--r--doc/ru_RU/assets.markdown53
-rw-r--r--doc/ru_RU/automatic-actions.markdown128
-rw-r--r--doc/ru_RU/board-collapsed-expanded.markdown31
-rw-r--r--doc/ru_RU/board-configuration.markdown39
-rw-r--r--doc/ru_RU/board-horizontal-scrolling-and-compact-view.markdown19
-rw-r--r--doc/ru_RU/board-show-hide-columns.markdown25
-rw-r--r--doc/ru_RU/bruteforce-protection.markdown37
-rw-r--r--doc/ru_RU/calendar-configuration.markdown59
-rw-r--r--doc/ru_RU/calendar.markdown31
-rw-r--r--doc/ru_RU/centos-installation.markdown127
-rw-r--r--doc/ru_RU/cli.markdown173
-rw-r--r--doc/ru_RU/closing-tasks.markdown30
-rw-r--r--doc/ru_RU/cloudron.markdown45
-rw-r--r--doc/ru_RU/coding-standards.markdown64
-rw-r--r--doc/ru_RU/config.markdown523
-rw-r--r--doc/ru_RU/contributing.markdown96
-rw-r--r--doc/ru_RU/create-tasks-by-email.markdown61
-rw-r--r--doc/ru_RU/creating-projects.markdown62
-rw-r--r--doc/ru_RU/creating-tasks.markdown42
-rw-r--r--doc/ru_RU/cronjob.markdown28
-rw-r--r--doc/ru_RU/currency-rate.markdown43
-rw-r--r--doc/ru_RU/custom-filters.markdown36
-rw-r--r--doc/ru_RU/debian-installation.markdown104
-rw-r--r--doc/ru_RU/docker.markdown134
-rw-r--r--doc/ru_RU/duplicate-move-tasks.markdown79
-rw-r--r--doc/ru_RU/editing-projects.markdown25
-rw-r--r--doc/ru_RU/email-configuration.markdown156
-rw-r--r--doc/ru_RU/env.markdown21
-rw-r--r--doc/ru_RU/ext-search.markdown235
-rw-r--r--doc/ru_RU/faq.markdown162
-rw-r--r--doc/ru_RU/freebsd-installation.markdown187
-rw-r--r--doc/ru_RU/gantt-chart-projects.markdown60
-rw-r--r--doc/ru_RU/gantt-chart-tasks.markdown66
-rw-r--r--doc/ru_RU/genindex.markdown15
-rw-r--r--doc/ru_RU/groups.markdown35
-rw-r--r--doc/ru_RU/heroku.markdown72
-rw-r--r--doc/ru_RU/ical.markdown111
-rw-r--r--doc/ru_RU/index.markdown247
-rw-r--r--doc/ru_RU/installation.markdown118
-rw-r--r--doc/ru_RU/kanban-vs-todo-and-scrum.markdown75
-rw-r--r--doc/ru_RU/keyboard-shortcuts.markdown99
-rw-r--r--doc/ru_RU/ldap-authentication.markdown327
-rw-r--r--doc/ru_RU/ldap-configuration-examples.markdown438
-rw-r--r--doc/ru_RU/ldap-group-sync.markdown153
-rw-r--r--doc/ru_RU/ldap-parameters.markdown49
-rw-r--r--doc/ru_RU/ldap-profile-picture.markdown46
-rw-r--r--doc/ru_RU/link-labels.markdown23
-rw-r--r--doc/ru_RU/mysql-configuration.markdown128
-rw-r--r--doc/ru_RU/nice-urls.markdown233
-rw-r--r--doc/ru_RU/nitrous.markdown16
-rw-r--r--doc/ru_RU/notifications.markdown111
-rw-r--r--doc/ru_RU/plugin-directory.markdown38
-rw-r--r--doc/ru_RU/plugins.markdown167
-rw-r--r--doc/ru_RU/postgresql-configuration.markdown92
-rw-r--r--doc/ru_RU/project-configuration.markdown105
-rw-r--r--doc/ru_RU/project-permissions.markdown55
-rw-r--r--doc/ru_RU/project-types.markdown27
-rw-r--r--doc/ru_RU/project-views.markdown154
-rw-r--r--doc/ru_RU/recurring-tasks.markdown67
-rw-r--r--doc/ru_RU/requirements.markdown137
-rw-r--r--doc/ru_RU/reverse-proxy-authentication.markdown138
-rw-r--r--doc/ru_RU/roles.markdown44
-rw-r--r--doc/ru_RU/rss.markdown58
-rw-r--r--doc/ru_RU/screenshots.markdown74
-rw-r--r--doc/ru_RU/search.markdown24
-rw-r--r--doc/ru_RU/sharing-projects.markdown82
-rw-r--r--doc/ru_RU/sqlite-database.markdown96
-rw-r--r--doc/ru_RU/subtasks.markdown111
-rw-r--r--doc/ru_RU/suse-installation.markdown36
-rw-r--r--doc/ru_RU/swimlanes.markdown81
-rw-r--r--doc/ru_RU/syntax-guide.markdown246
-rw-r--r--doc/ru_RU/task-links.markdown93
-rw-r--r--doc/ru_RU/tests.markdown262
-rw-r--r--doc/ru_RU/time-tracking.markdown112
-rw-r--r--doc/ru_RU/transitions.markdown60
-rw-r--r--doc/ru_RU/translations.markdown72
-rw-r--r--doc/ru_RU/ubuntu-installation.markdown111
-rw-r--r--doc/ru_RU/update.markdown57
-rw-r--r--doc/ru_RU/usage-examples.markdown193
-rw-r--r--doc/ru_RU/user-management.markdown89
-rw-r--r--doc/ru_RU/user-mentions.markdown49
-rw-r--r--doc/ru_RU/user-types.markdown26
-rw-r--r--doc/ru_RU/vagrant.markdown51
-rw-r--r--doc/ru_RU/webhooks.markdown477
-rw-r--r--doc/ru_RU/what-is-kanban.markdown80
-rw-r--r--doc/ru_RU/windows-apache-installation.markdown253
-rw-r--r--doc/ru_RU/windows-iis-installation.markdown150
-rw-r--r--doc/screenshots/2fa.pngbin0 -> 33748 bytes
-rw-r--r--doc/screenshots/add-subtask-shortcut.pngbin0 -> 5264 bytes
-rw-r--r--doc/screenshots/add-subtask.pngbin0 -> 10984 bytes
-rw-r--r--doc/screenshots/add_new_restriction.pngbin0 -> 14087 bytes
-rw-r--r--doc/screenshots/apple-calendar-add-subscription.pngbin0 -> 22539 bytes
-rw-r--r--doc/screenshots/apple-calendar-edit-subscription.pngbin0 -> 29524 bytes
-rw-r--r--doc/screenshots/application-settings.pngbin0 -> 22818 bytes
-rw-r--r--doc/screenshots/average-lead-cycle-time.pngbin0 -> 25176 bytes
-rw-r--r--doc/screenshots/average-time-spent-into-each-column.pngbin0 -> 7961 bytes
-rw-r--r--doc/screenshots/bitbucket-webhooks.pngbin0 -> 28380 bytes
-rw-r--r--doc/screenshots/board-hide-show-column.pngbin0 -> 28695 bytes
-rw-r--r--doc/screenshots/board-settings.pngbin0 -> 26601 bytes
-rw-r--r--doc/screenshots/budget-cost-breakdown.pngbin0 -> 10651 bytes
-rw-r--r--doc/screenshots/budget-graph.pngbin0 -> 19866 bytes
-rw-r--r--doc/screenshots/budget-lines.pngbin0 -> 12032 bytes
-rw-r--r--doc/screenshots/burndown-chart.pngbin0 -> 28645 bytes
-rw-r--r--doc/screenshots/calendar-settings.pngbin0 -> 34654 bytes
-rw-r--r--doc/screenshots/calendar.pngbin0 -> 22066 bytes
-rw-r--r--doc/screenshots/cfd.pngbin0 -> 33143 bytes
-rw-r--r--doc/screenshots/closing-tasks.pngbin0 -> 9927 bytes
-rw-r--r--doc/screenshots/currency-rate.pngbin0 -> 13169 bytes
-rw-r--r--doc/screenshots/custom-filter-creation.pngbin0 -> 8923 bytes
-rw-r--r--doc/screenshots/custom-filter-dropdown.pngbin0 -> 4474 bytes
-rw-r--r--doc/screenshots/custom_roles.pngbin0 -> 13582 bytes
-rw-r--r--doc/screenshots/dropdown-screenshot.pngbin0 -> 14962 bytes
-rw-r--r--doc/screenshots/example-restriction-task-creation.pngbin0 -> 10354 bytes
-rw-r--r--doc/screenshots/example-restriction-task-drag-and-drop.pngbin0 -> 12745 bytes
-rw-r--r--doc/screenshots/example-restriction-task-status-blocked.pngbin0 -> 7164 bytes
-rw-r--r--doc/screenshots/example-restriction-task-status.pngbin0 -> 11491 bytes
-rw-r--r--doc/screenshots/example-restrictions.pngbin0 -> 20336 bytes
-rw-r--r--doc/screenshots/gantt-chart-all-projects.pngbin0 -> 23274 bytes
-rw-r--r--doc/screenshots/gantt-chart-not-defined.pngbin0 -> 8195 bytes
-rw-r--r--doc/screenshots/gantt-chart-project.pngbin0 -> 39640 bytes
-rw-r--r--doc/screenshots/github-webhooks.pngbin0 -> 62361 bytes
-rw-r--r--doc/screenshots/gitlab-webhooks.pngbin0 -> 37673 bytes
-rw-r--r--doc/screenshots/google-calendar-add-subscription.pngbin0 -> 17047 bytes
-rw-r--r--doc/screenshots/hipchat-notification.pngbin0 -> 13997 bytes
-rw-r--r--doc/screenshots/hipchat-room-token.pngbin0 -> 27690 bytes
-rw-r--r--doc/screenshots/hipchat-settings.pngbin0 -> 13322 bytes
-rw-r--r--doc/screenshots/hourly-rate.pngbin0 -> 10033 bytes
-rw-r--r--doc/screenshots/internal-task-links.pngbin0 -> 9893 bytes
-rw-r--r--doc/screenshots/jabber-notification.pngbin0 -> 20836 bytes
-rw-r--r--doc/screenshots/jabber-settings.pngbin0 -> 26323 bytes
-rw-r--r--doc/screenshots/kanboard-github-webhooks.pngbin0 -> 8489 bytes
-rw-r--r--doc/screenshots/link-label-creation.pngbin0 -> 5790 bytes
-rw-r--r--doc/screenshots/link-labels.pngbin0 -> 46192 bytes
-rw-r--r--doc/screenshots/mention-autocomplete.pngbin3066 -> 0 bytes
-rw-r--r--doc/screenshots/menu-close-task.pngbin0 -> 13983 bytes
-rw-r--r--doc/screenshots/new-private-project.pngbin0 -> 6231 bytes
-rw-r--r--doc/screenshots/new_custom_role.pngbin0 -> 7114 bytes
-rw-r--r--doc/screenshots/new_restriction.pngbin0 -> 13609 bytes
-rw-r--r--doc/screenshots/notifications.pngbin0 -> 28521 bytes
-rw-r--r--doc/screenshots/outlook-add-subscription.pngbin0 -> 4776 bytes
-rw-r--r--doc/screenshots/outlook-edit-subscription.pngbin0 -> 16882 bytes
-rw-r--r--doc/screenshots/overtime-timetable.pngbin0 -> 17508 bytes
-rw-r--r--doc/screenshots/project-automatic-action-step1.pngbin0 -> 6621 bytes
-rw-r--r--doc/screenshots/project-automatic-action-step2.pngbin0 -> 10508 bytes
-rw-r--r--doc/screenshots/project-automatic-action-step3.pngbin0 -> 10215 bytes
-rw-r--r--doc/screenshots/project-automatic-actions.pngbin0 -> 31328 bytes
-rw-r--r--doc/screenshots/project-creation-form.pngbin0 -> 7568 bytes
-rw-r--r--doc/screenshots/project-creation-link.pngbin0 -> 13026 bytes
-rw-r--r--doc/screenshots/project-nobody-allowed.pngbin0 -> 6473 bytes
-rw-r--r--doc/screenshots/project-settings.pngbin0 -> 29301 bytes
-rw-r--r--doc/screenshots/recurring-tasks.pngbin0 -> 22693 bytes
-rw-r--r--doc/screenshots/restrictions.pngbin0 -> 25222 bytes
-rw-r--r--doc/screenshots/slack-add-incoming-webhook.pngbin0 -> 20390 bytes
-rw-r--r--doc/screenshots/slack-notification.pngbin0 -> 8631 bytes
-rw-r--r--doc/screenshots/subtask-status-done.pngbin0 -> 1366 bytes
-rw-r--r--doc/screenshots/subtask-status-inprogress.pngbin0 -> 5773 bytes
-rw-r--r--doc/screenshots/subtask-time-tracking.pngbin0 -> 19361 bytes
-rw-r--r--doc/screenshots/subtask-timer.pngbin0 -> 8396 bytes
-rw-r--r--doc/screenshots/subtask-user-restriction.pngbin0 -> 18861 bytes
-rw-r--r--doc/screenshots/swimlanes-configuration.pngbin0 -> 35889 bytes
-rw-r--r--doc/screenshots/task-distribution.pngbin0 -> 26297 bytes
-rw-r--r--doc/screenshots/task-duplication-another-project.pngbin0 -> 12542 bytes
-rw-r--r--doc/screenshots/task-duplication.pngbin0 -> 8426 bytes
-rw-r--r--doc/screenshots/task-lead-cycle-time.pngbin0 -> 7130 bytes
-rw-r--r--doc/screenshots/task-links.pngbin0 -> 9499 bytes
-rw-r--r--doc/screenshots/task-screenshot.pngbin0 -> 11064 bytes
-rw-r--r--doc/screenshots/task-time-tracking.pngbin0 -> 5524 bytes
-rw-r--r--doc/screenshots/task-timesheet.pngbin0 -> 23779 bytes
-rw-r--r--doc/screenshots/task-transitions.pngbin0 -> 38420 bytes
-rw-r--r--doc/screenshots/thunderbird-new-calendar-step1.pngbin0 -> 12999 bytes
-rw-r--r--doc/screenshots/thunderbird-new-calendar-step2.pngbin0 -> 19025 bytes
-rw-r--r--doc/screenshots/time-into-each-column.pngbin0 -> 8052 bytes
-rw-r--r--doc/screenshots/timetable.pngbin0 -> 32792 bytes
-rw-r--r--doc/screenshots/transitions-export.pngbin0 -> 20442 bytes
-rw-r--r--doc/screenshots/transitions.pngbin0 -> 17466 bytes
-rw-r--r--doc/screenshots/user-mentions.pngbin0 -> 5228 bytes
-rw-r--r--doc/screenshots/user-repartition.pngbin0 -> 24182 bytes
-rw-r--r--doc/screenshots/web-notifications-icon.pngbin0 -> 4370 bytes
-rw-r--r--doc/screenshots/web-notifications.pngbin0 -> 29398 bytes
-rw-r--r--doc/screenshots/week-timetable.pngbin0 -> 9286 bytes
-rw-r--r--doc/tr_TR/2fa.markdown33
-rw-r--r--doc/tr_TR/analytics-tasks.markdown24
-rw-r--r--doc/tr_TR/analytics.markdown66
-rw-r--r--doc/tr_TR/api-json-rpc.markdown72
-rw-r--r--doc/tr_TR/application-configuration.markdown45
-rw-r--r--doc/tr_TR/assets.markdown50
-rw-r--r--doc/tr_TR/automatic-actions.markdown108
-rw-r--r--doc/tr_TR/board-collapsed-expanded.markdown18
-rw-r--r--doc/tr_TR/board-configuration.markdown24
-rw-r--r--doc/tr_TR/board-horizontal-scrolling-and-compact-view.markdown10
-rw-r--r--doc/tr_TR/board-show-hide-columns.markdown12
-rw-r--r--doc/tr_TR/bruteforce-protection.markdown35
-rw-r--r--doc/tr_TR/calendar-configuration.markdown44
-rw-r--r--doc/tr_TR/calendar.markdown20
-rw-r--r--doc/tr_TR/centos-installation.markdown83
-rw-r--r--doc/tr_TR/cli.markdown224
-rw-r--r--doc/tr_TR/closing-tasks.markdown16
-rw-r--r--doc/tr_TR/cloudron.markdown26
-rw-r--r--doc/tr_TR/coding-standards.markdown24
-rw-r--r--doc/tr_TR/config.markdown332
-rw-r--r--doc/tr_TR/contributing.markdown70
-rw-r--r--doc/tr_TR/create-tasks-by-email.markdown45
-rw-r--r--doc/tr_TR/creating-projects.markdown39
-rw-r--r--doc/tr_TR/creating-tasks.markdown30
-rw-r--r--doc/tr_TR/cronjob.markdown56
-rw-r--r--doc/tr_TR/currency-rate.markdown11
-rw-r--r--doc/tr_TR/custom-filters.markdown19
-rw-r--r--doc/tr_TR/custom-project-roles.markdown88
-rw-r--r--doc/tr_TR/debian-installation.markdown67
-rw-r--r--doc/tr_TR/docker.markdown96
-rw-r--r--doc/tr_TR/duplicate-move-tasks.markdown58
-rw-r--r--doc/tr_TR/editing-projects.markdown15
-rw-r--r--doc/tr_TR/email-configuration.markdown116
-rw-r--r--doc/tr_TR/env.markdown10
-rw-r--r--doc/tr_TR/faq.markdown128
-rw-r--r--doc/tr_TR/freebsd-installation.markdown126
-rw-r--r--doc/tr_TR/gantt-chart-projects.markdown17
-rw-r--r--doc/tr_TR/gantt-chart-tasks.markdown20
-rw-r--r--doc/tr_TR/groups.markdown17
-rw-r--r--doc/tr_TR/heroku.markdown39
-rw-r--r--doc/tr_TR/ical.markdown78
-rw-r--r--doc/tr_TR/installation.markdown76
-rw-r--r--doc/tr_TR/kanban-vs-todo-and-scrum.markdown37
-rw-r--r--doc/tr_TR/keyboard-shortcuts.markdown38
-rw-r--r--doc/tr_TR/ldap-authentication.markdown185
-rw-r--r--doc/tr_TR/ldap-configuration-examples.markdown222
-rw-r--r--doc/tr_TR/ldap-group-sync.markdown79
-rw-r--r--doc/tr_TR/ldap-parameters.markdown36
-rw-r--r--doc/tr_TR/ldap-profile-picture.markdown27
-rw-r--r--doc/tr_TR/link-labels.markdown11
-rw-r--r--doc/tr_TR/mysql-configuration.markdown72
-rw-r--r--doc/tr_TR/nice-urls.markdown129
-rw-r--r--doc/tr_TR/notifications.markdown46
-rw-r--r--doc/tr_TR/performances.markdown39
-rw-r--r--doc/tr_TR/plugin-directory.markdown16
-rw-r--r--doc/tr_TR/plugins.markdown47
-rw-r--r--doc/tr_TR/postgresql-configuration.markdown51
-rw-r--r--doc/tr_TR/project-configuration.markdown42
-rw-r--r--doc/tr_TR/project-permissions.markdown23
-rw-r--r--doc/tr_TR/project-types.markdown14
-rw-r--r--doc/tr_TR/project-views.markdown58
-rw-r--r--doc/tr_TR/recurring-tasks.markdown25
-rw-r--r--doc/tr_TR/removing-projects.markdown10
-rw-r--r--doc/tr_TR/requirements.markdown108
-rw-r--r--doc/tr_TR/reverse-proxy-authentication.markdown66
-rw-r--r--doc/tr_TR/roles.markdown26
-rw-r--r--doc/tr_TR/rss.markdown24
-rw-r--r--doc/tr_TR/screenshots.markdown25
-rw-r--r--doc/tr_TR/search.markdown189
-rw-r--r--doc/tr_TR/sharing-projects.markdown35
-rw-r--r--doc/tr_TR/solving-blank-page-issue.markdown7
-rw-r--r--doc/tr_TR/solving-database-migration-issues.markdown23
-rw-r--r--doc/tr_TR/solving-session-issue-windows-iis-ie.markdown19
-rw-r--r--doc/tr_TR/sqlite-database.markdown52
-rw-r--r--doc/tr_TR/subtasks.markdown44
-rw-r--r--doc/tr_TR/suse-installation.markdown (renamed from doc/suse-installation.markdown)2
-rw-r--r--doc/tr_TR/swimlanes.markdown31
-rw-r--r--doc/tr_TR/syntax-guide.markdown147
-rw-r--r--doc/tr_TR/tags.markdown28
-rw-r--r--doc/tr_TR/task-links.markdown24
-rw-r--r--doc/tr_TR/tests.markdown158
-rw-r--r--doc/tr_TR/time-tracking.markdown43
-rw-r--r--doc/tr_TR/transitions.markdown14
-rw-r--r--doc/tr_TR/translations.markdown68
-rw-r--r--doc/tr_TR/ubuntu-installation.markdown65
-rw-r--r--doc/tr_TR/update.markdown53
-rw-r--r--doc/tr_TR/usage-examples.markdown67
-rw-r--r--doc/tr_TR/user-management.markdown36
-rw-r--r--doc/tr_TR/user-mentions.markdown17
-rw-r--r--doc/tr_TR/user-types.markdown14
-rw-r--r--doc/tr_TR/vagrant.markdown10
-rw-r--r--doc/tr_TR/webhooks.markdown487
-rw-r--r--doc/tr_TR/windows-apache-installation.markdown130
-rw-r--r--doc/tr_TR/windows-iis-installation.markdown67
-rw-r--r--doc/tr_TR/worker.markdown37
-rw-r--r--doc/transitions.markdown20
-rw-r--r--doc/update.markdown34
-rw-r--r--doc/webhooks.markdown271
533 files changed, 23688 insertions, 879 deletions
diff --git a/doc/cronjob.markdown b/doc/cronjob.markdown
deleted file mode 100644
index 32f12888..00000000
--- a/doc/cronjob.markdown
+++ /dev/null
@@ -1,32 +0,0 @@
-Background Job Scheduling
-=========================
-
-To work properly, Kanboard requires that a background job run on a daily basis.
-Usually on Unix platforms, this process is done by `cron`.
-
-This background job is necessary for these features:
-
-- Reports and analytics (calculate daily stats of each projects)
-- Send overdue task notifications
-- Execute automatic actions connected to the event "Daily background job for tasks"
-
-Configuration on Unix and Linux platforms
------------------------------------------
-
-There are multiple ways to define a cronjob on Unix/Linux operating systems, this example is for Ubuntu 14.04.
-The procedure is similar to other systems.
-
-Edit the crontab of your web server user:
-
-```bash
-sudo crontab -u www-data -e
-```
-
-Example to execute the daily cronjob at 8am:
-
-```bash
-0 8 * * * cd /path/to/kanboard && ./kanboard cronjob >/dev/null 2>&1
-```
-
-Note: the cronjob process must have write access to the database in case you are using Sqlite.
-Usually, running the cronjob under the web server user is enough.
diff --git a/doc/editing-projects.markdown b/doc/editing-projects.markdown
deleted file mode 100644
index e7fea212..00000000
--- a/doc/editing-projects.markdown
+++ /dev/null
@@ -1,15 +0,0 @@
-Editing Projects
-================
-
-Projects can be renamed and disabled at any time.
-
-To rename a project, just click on the link "Edit project" on the left.
-
-![Project edition](screenshots/project-edition.png)
-
-- The start date and end date are used to generate the project Gantt chart
-- The description is visible as tooltip on the board and on the projects listing page
-- Administrators and project administrators can convert a private project to multiple users project by changing the checkbox "Private project".
-- You can also convert multiple users project to a private project.
-
-Note: When you make a project private, all existing users will still have access to the project. Adjust the list of users according to your needs.
diff --git a/doc/2fa.markdown b/doc/en_US/2fa.markdown
index 9c02d309..ed9b0c99 100644
--- a/doc/2fa.markdown
+++ b/doc/en_US/2fa.markdown
@@ -4,12 +4,12 @@ Two-Factor Authentication
Each user can enable the [two-factor authentication](http://en.wikipedia.org/wiki/Two_factor_authentication).
After a successful login, a one-time code (6 characters) is asked to the user to allow access to Kanboard.
-This code has to be provided by a compatible software generally installed on your smartphone.
+This code has to be provided by a compatible software usually installed on your smartphone.
Kanboard use the [Time-based One-time Password Algorithm](http://en.wikipedia.org/wiki/Time-based_One-time_Password_Algorithm) defined in the [RFC 6238](http://tools.ietf.org/html/rfc6238).
There are many software compatible with the standard TOTP system.
-For example, you can use these free and open source applications:
+For example, you can use these applications:
- [Google Authenticator](https://github.com/google/google-authenticator/) (Android, iOS, Blackberry)
- [FreeOTP](https://fedorahosted.org/freeotp/) (Android, iOS)
@@ -24,7 +24,7 @@ Setup
2. On the left, click on **Two factor authentication** and check the box
3. A secret key is generated for you
-![2FA](https://kanboard.net/screenshots/documentation/2fa.png)
+![2FA](screenshots/2fa.png)
- You have to save the secret key in your TOTP software. If you use a smartphone, the easiest solution is to scan the QR code with FreeOTP or Google Authenticator.
- Each time you will open a new session, a new code will be asked
diff --git a/doc/analytics-tasks.markdown b/doc/en_US/analytics-tasks.markdown
index 32eb03f0..51dc93c7 100644
--- a/doc/analytics-tasks.markdown
+++ b/doc/en_US/analytics-tasks.markdown
@@ -6,7 +6,7 @@ Each task has an analytics section available from the left menu in the task view
Lead and cycle time
-------------------
-![Lead and cycle time](https://kanboard.net/screenshots/documentation/task-lead-cycle-time.png)
+![Lead and cycle time](screenshots/task-lead-cycle-time.png)
- The lead time is the time between the task creation and the date of completion (task closed).
- The cycle time is the time between the start date and the date of completion.
@@ -18,7 +18,7 @@ Note: You can configure an automatic action to define the start date automatical
Time spent into each column
---------------------------
-![Time spent into each column](https://kanboard.net/screenshots/documentation/time-into-each-column.png)
+![Time spent into each column](screenshots/time-into-each-column.png)
- This chart shows the total time spent into each column for the task.
- The time spent is calculated until the task is closed.
diff --git a/doc/analytics.markdown b/doc/en_US/analytics.markdown
index 1150b33d..8b37762e 100644
--- a/doc/analytics.markdown
+++ b/doc/en_US/analytics.markdown
@@ -6,21 +6,21 @@ Each project have an analytics section. Depending on how you are using Kanboard,
User repartition
----------------
-![User repartition](https://kanboard.net/screenshots/documentation/user-repartition.png)
+![User repartition](screenshots/user-repartition.png)
This pie chart show the number of open tasks assigned per user.
Task distribution
-----------------
-![Task distribution](https://kanboard.net/screenshots/documentation/task-distribution.png)
+![Task distribution](screenshots/task-distribution.png)
This pie chart gives an overview of the number of open tasks per column.
Cumulative flow diagram
-----------------------
-![Cumulative flow diagram](https://kanboard.net/screenshots/documentation/cfd.png)
+![Cumulative flow diagram](screenshots/cfd.png)
- This chart shows the number of tasks cumulatively for each column over the time.
- Every day, the total number of tasks is recorded for each column.
@@ -31,7 +31,7 @@ Note: You need to have at least two days of data to see the graph.
Burn down chart
---------------
-![Burndown chart](https://kanboard.net/screenshots/documentation/burndown-chart.png)
+![Burndown chart](screenshots/burndown-chart.png)
The [burn down chart](http://en.wikipedia.org/wiki/Burn_down_chart) is available for each project.
@@ -42,7 +42,7 @@ The [burn down chart](http://en.wikipedia.org/wiki/Burn_down_chart) is available
Average time spent into each column
-----------------------------------
-![Average time spent into each column](https://kanboard.net/screenshots/documentation/average-time-spent-into-each-column.png)
+![Average time spent into each column](screenshots/average-time-spent-into-each-column.png)
This chart shows the average time spent into each column for the last 1000 tasks.
@@ -52,7 +52,7 @@ This chart shows the average time spent into each column for the last 1000 tasks
Average Lead and Cycle time
---------------------------
-![Average time spent into each column](https://kanboard.net/screenshots/documentation/average-lead-cycle-time.png)
+![Average time spent into each column](screenshots/average-lead-cycle-time.png)
This chart show the average lead and cycle time for the last 1000 tasks over time.
diff --git a/doc/api-action-procedures.markdown b/doc/en_US/api-action-procedures.markdown
index 377ca56a..377ca56a 100644
--- a/doc/api-action-procedures.markdown
+++ b/doc/en_US/api-action-procedures.markdown
diff --git a/doc/api-application-procedures.markdown b/doc/en_US/api-application-procedures.markdown
index 08474559..08474559 100644
--- a/doc/api-application-procedures.markdown
+++ b/doc/en_US/api-application-procedures.markdown
diff --git a/doc/api-authentication.markdown b/doc/en_US/api-authentication.markdown
index 3ba1e8f5..be536be3 100644
--- a/doc/api-authentication.markdown
+++ b/doc/en_US/api-authentication.markdown
@@ -17,7 +17,8 @@ Default method (HTTP Basic)
### User credentials
-- Use the real username and password
+- Username: username
+- Password: user password or personal access token
The API use the [HTTP Basic Authentication Scheme described in the RFC2617](http://www.ietf.org/rfc/rfc2617.txt).
diff --git a/doc/api-board-procedures.markdown b/doc/en_US/api-board-procedures.markdown
index 6f8a878e..6f8a878e 100644
--- a/doc/api-board-procedures.markdown
+++ b/doc/en_US/api-board-procedures.markdown
diff --git a/doc/api-category-procedures.markdown b/doc/en_US/api-category-procedures.markdown
index 644c09c6..644c09c6 100644
--- a/doc/api-category-procedures.markdown
+++ b/doc/en_US/api-category-procedures.markdown
diff --git a/doc/api-column-procedures.markdown b/doc/en_US/api-column-procedures.markdown
index c5d2793b..c5d2793b 100644
--- a/doc/api-column-procedures.markdown
+++ b/doc/en_US/api-column-procedures.markdown
diff --git a/doc/api-comment-procedures.markdown b/doc/en_US/api-comment-procedures.markdown
index 5ac25b13..5ac25b13 100644
--- a/doc/api-comment-procedures.markdown
+++ b/doc/en_US/api-comment-procedures.markdown
diff --git a/doc/api-examples.markdown b/doc/en_US/api-examples.markdown
index 14d5db98..14d5db98 100644
--- a/doc/api-examples.markdown
+++ b/doc/en_US/api-examples.markdown
diff --git a/doc/api-external-task-link-procedures.markdown b/doc/en_US/api-external-task-link-procedures.markdown
index 85f67b60..85f67b60 100644
--- a/doc/api-external-task-link-procedures.markdown
+++ b/doc/en_US/api-external-task-link-procedures.markdown
diff --git a/doc/api-group-member-procedures.markdown b/doc/en_US/api-group-member-procedures.markdown
index 1065ba11..1065ba11 100644
--- a/doc/api-group-member-procedures.markdown
+++ b/doc/en_US/api-group-member-procedures.markdown
diff --git a/doc/api-group-procedures.markdown b/doc/en_US/api-group-procedures.markdown
index cb11fb96..cb11fb96 100644
--- a/doc/api-group-procedures.markdown
+++ b/doc/en_US/api-group-procedures.markdown
diff --git a/doc/api-internal-task-link-procedures.markdown b/doc/en_US/api-internal-task-link-procedures.markdown
index eca0d886..eca0d886 100644
--- a/doc/api-internal-task-link-procedures.markdown
+++ b/doc/en_US/api-internal-task-link-procedures.markdown
diff --git a/doc/api-json-rpc.markdown b/doc/en_US/api-json-rpc.markdown
index ab1056f0..fad19466 100644
--- a/doc/api-json-rpc.markdown
+++ b/doc/en_US/api-json-rpc.markdown
@@ -18,6 +18,7 @@ There are two types of API access:
### User API
- Access to the API with the user credentials (username and password)
+- You can also generate a personal access token instead of your password
- Application role and project permissions are checked for each procedure
- A user session is created on the server
- Example of possible clients: native mobile/desktop application, command line utility, etc...
@@ -62,6 +63,7 @@ Usage
- [Task Files](api-task-file-procedures.markdown)
- [Project Files](api-project-file-procedures.markdown)
- [Links](api-link-procedures.markdown)
+- [Tags](api-tags-procedures.markdown)
- [Internal Task Links](api-internal-task-link-procedures.markdown)
- [External Task Links](api-external-task-link-procedures.markdown)
- [Comments](api-comment-procedures.markdown)
diff --git a/doc/api-link-procedures.markdown b/doc/en_US/api-link-procedures.markdown
index 44e78a2a..44e78a2a 100644
--- a/doc/api-link-procedures.markdown
+++ b/doc/en_US/api-link-procedures.markdown
diff --git a/doc/api-me-procedures.markdown b/doc/en_US/api-me-procedures.markdown
index e90bee61..e90bee61 100644
--- a/doc/api-me-procedures.markdown
+++ b/doc/en_US/api-me-procedures.markdown
diff --git a/doc/api-project-file-procedures.markdown b/doc/en_US/api-project-file-procedures.markdown
index fdc5da1a..fdc5da1a 100644
--- a/doc/api-project-file-procedures.markdown
+++ b/doc/en_US/api-project-file-procedures.markdown
diff --git a/doc/api-project-permission-procedures.markdown b/doc/en_US/api-project-permission-procedures.markdown
index d5e9b066..d5e9b066 100644
--- a/doc/api-project-permission-procedures.markdown
+++ b/doc/en_US/api-project-permission-procedures.markdown
diff --git a/doc/api-project-procedures.markdown b/doc/en_US/api-project-procedures.markdown
index 09000e68..09000e68 100644
--- a/doc/api-project-procedures.markdown
+++ b/doc/en_US/api-project-procedures.markdown
diff --git a/doc/api-subtask-procedures.markdown b/doc/en_US/api-subtask-procedures.markdown
index c1dbae37..c1dbae37 100644
--- a/doc/api-subtask-procedures.markdown
+++ b/doc/en_US/api-subtask-procedures.markdown
diff --git a/doc/api-subtask-time-tracking-procedures.markdown b/doc/en_US/api-subtask-time-tracking-procedures.markdown
index 67447623..67447623 100644
--- a/doc/api-subtask-time-tracking-procedures.markdown
+++ b/doc/en_US/api-subtask-time-tracking-procedures.markdown
diff --git a/doc/api-swimlane-procedures.markdown b/doc/en_US/api-swimlane-procedures.markdown
index c58e56c9..d7c1e28f 100644
--- a/doc/api-swimlane-procedures.markdown
+++ b/doc/en_US/api-swimlane-procedures.markdown
@@ -373,7 +373,7 @@ Response example:
## disableSwimlane
-- Purpose: **Enable a swimlane**
+- Purpose: **Disable a swimlane**
- Parameters:
- **project_id** (integer, required)
- **swimlane_id** (integer, required)
diff --git a/doc/en_US/api-tags-procedures.markdown b/doc/en_US/api-tags-procedures.markdown
new file mode 100644
index 00000000..8d69430c
--- /dev/null
+++ b/doc/en_US/api-tags-procedures.markdown
@@ -0,0 +1,195 @@
+API Tags Procedures
+===================
+
+getAllTags
+----------
+
+- Purpose: **Get all tags**
+- Parameters: none
+- Result on success: **List of tags**
+- Result on failure: **false|null**
+
+Request example:
+
+```json
+{"jsonrpc":"2.0","method":"getAllTags","id":45253426}
+```
+
+Response example:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "result": [
+ {
+ "id": "1",
+ "name": "another tag",
+ "project_id": "33"
+ }
+ ],
+ "id": 45253426
+}
+```
+
+getTagsByProject
+----------------
+
+- Purpose: **Get all tags for a given project**
+- Parameters:
+ - **project_id** (integer)
+- Result on success: **List of tags**
+- Result on failure: **false|null**
+
+Request example:
+
+```json
+{"jsonrpc":"2.0","method":"getTagsByProject","id":1217591720,"params":[33]}
+```
+
+Response example:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "result": [
+ {
+ "id": "1",
+ "name": "some tag",
+ "project_id": "33"
+ }
+ ],
+ "id": 1217591720
+}
+```
+
+createTag
+---------
+
+- Purpose: **Create a new tag**
+- Parameters:
+ - **project_id** (integer)
+ - **tag** (string)
+- Result on success: **tag_id**
+- Result on failure: **false**
+
+Request example:
+
+```json
+{"jsonrpc":"2.0","method":"createTag","id":1775436017,"params":[33,"some tag"]}
+```
+
+Response example:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "result": 1,
+ "id": 1775436017
+}
+```
+
+updateTag
+---------
+
+- Purpose: **Rename a tag**
+- Parameters:
+ - **tag_id** (integer)
+ - **tag** (string)
+- Result on success: **true**
+- Result on failure: **false**
+
+Request example:
+
+```json
+{"jsonrpc":"2.0","method":"updateTag","id":2037516512,"params":["1","another tag"]}
+```
+
+Response example:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "result": true,
+ "id": 2037516512
+}
+```
+
+removeTag
+---------
+
+- Purpose: **removeTag**
+- Parameters:
+ - **tag_id** (integer)
+- Result on success: **true**
+- Result on failure: **false**
+
+Request example:
+
+```json
+{"jsonrpc":"2.0","method":"removeTag","id":907581298,"params":["1"]}
+```
+
+Response example:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "result": true,
+ "id": 907581298
+}
+```
+
+setTaskTags
+-----------
+
+- Purpose: **Assign/Create/Update tags for a task**
+- Parameters:
+ - **project_id** (integer)
+ - **task_id** (integer)
+ - **tags** List of tags ([]string)
+- Result on success: **true**
+- Result on failure: **false**
+
+Request example:
+
+```json
+{"jsonrpc":"2.0","method":"setTaskTags","id":1524522873,"params":[39,17,["tag1","tag2"]]}
+```
+
+Response example:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "result": true,
+ "id": 1524522873
+}
+```
+
+getTaskTags
+-----------
+
+- Purpose: **Get assigned tags to a task**
+- Parameters:
+ - **task_id** (integer)
+- Result on success: **Dictionary of tags**
+- Result on failure: **false|null**
+
+Request example:
+
+```json
+{"jsonrpc":"2.0","method":"getTaskTags","id":1667157705,"params":[17]}
+```
+
+Response example:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "result": {
+ "1": "tag1",
+ "2": "tag2"
+ },
+ "id": 1667157705
+}
+```
diff --git a/doc/api-task-file-procedures.markdown b/doc/en_US/api-task-file-procedures.markdown
index 51840bea..51840bea 100644
--- a/doc/api-task-file-procedures.markdown
+++ b/doc/en_US/api-task-file-procedures.markdown
diff --git a/doc/api-task-procedures.markdown b/doc/en_US/api-task-procedures.markdown
index 934b1e09..db106f74 100644
--- a/doc/api-task-procedures.markdown
+++ b/doc/en_US/api-task-procedures.markdown
@@ -17,11 +17,12 @@ API Task Procedures
- **score** (integer, optional)
- **swimlane_id** (integer, optional)
- **priority** (integer, optional)
- - **recurrence_status** (integer, optional)
- - **recurrence_trigger** (integer, optional)
- - **recurrence_factor** (integer, optional)
- - **recurrence_timeframe** (integer, optional)
- - **recurrence_basedate** (integer, optional)
+ - **recurrence_status** (integer, optional)
+ - **recurrence_trigger** (integer, optional)
+ - **recurrence_factor** (integer, optional)
+ - **recurrence_timeframe** (integer, optional)
+ - **recurrence_basedate** (integer, optional)
+ - **tags** ([]string, optional)
- Result on success: **task_id**
- Result on failure: **false**
@@ -400,11 +401,12 @@ Response example:
- **category_id** (integer, optional)
- **score** (integer, optional)
- **priority** (integer, optional)
- - **recurrence_status** (integer, optional)
- - **recurrence_trigger** (integer, optional)
- - **recurrence_factor** (integer, optional)
- - **recurrence_timeframe** (integer, optional)
- - **recurrence_basedate** (integer, optional)
+ - **recurrence_status** (integer, optional)
+ - **recurrence_trigger** (integer, optional)
+ - **recurrence_factor** (integer, optional)
+ - **recurrence_timeframe** (integer, optional)
+ - **recurrence_basedate** (integer, optional)
+ - **tags** ([]string, optional)
- Result on success: **true**
- Result on failure: **false**
@@ -695,3 +697,141 @@ Response example:
]
}
```
+
+## getTaskMetadata
+
+- Purpose: **Get all metadata related to a task by task unique id**
+- Parameters:
+ - **task_id** (integer, required)
+- Result on success: **list of metadata**
+- Result on failure: **empty array**
+
+Request example to fetch all the metada of a task:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "getTaskMetadata",
+ "id": 133280317,
+ "params": [
+ 1
+ ]
+}
+```
+
+Response example:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 133280317,
+ "result": [
+ {
+ "metaKey1": "metaValue1",
+ "metaKey2": "metaValue2",
+ ...
+ }
+ ]
+}
+```
+
+## getTaskMetadataByName
+
+- Purpose: **Get metadata related to a task by task unique id and metakey (name)**
+- Parameters:
+ - **task_id** (integer, required)
+ - **name** (string, required)
+- Result on success: **metadata value**
+- Result on failure: **empty string**
+
+Request example to fetch metada of a task by name:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "getTaskMetadataByName",
+ "id": 133280317,
+ "params": [
+ 1,
+ "metaKey1"
+ ]
+}
+```
+
+Response example:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 133280317,
+ "result": "metaValue1"
+}
+```
+
+## saveTaskMetadata
+
+- Purpose: **Save/update task metadata**
+- Parameters:
+ - **task_id** (integer, required)
+ - **array("name" => "value")** (array, required)
+- Result on success: **true**
+- Result on failure: **false**
+
+Request example to add/update metada of a task:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "saveTaskMetadata",
+ "id": 133280317,
+ "params": [
+ 1,
+ {
+ "metaName" : "metaValue"
+ }
+ ]
+}
+```
+
+Response example:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 133280317,
+ "result": true
+}
+```
+
+## removeTaskMetadata
+
+- Purpose: **Remove task metadata by name**
+- Parameters:
+ - **task_id** (integer, required)
+ - **name** (string, required)
+- Result on success: **true**
+- Result on failure: **false**
+
+Request example to remove metada of a task by name:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "removeTaskMetadata",
+ "id": 133280317,
+ "params": [
+ 1,
+ "metaKey1"
+ ]
+}
+```
+
+Response example:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 133280317,
+ "result": true
+}
+```
diff --git a/doc/api-user-procedures.markdown b/doc/en_US/api-user-procedures.markdown
index 6c09355d..6c09355d 100644
--- a/doc/api-user-procedures.markdown
+++ b/doc/en_US/api-user-procedures.markdown
diff --git a/doc/application-configuration.markdown b/doc/en_US/application-configuration.markdown
index c1e25cc0..f3939555 100644
--- a/doc/application-configuration.markdown
+++ b/doc/en_US/application-configuration.markdown
@@ -6,7 +6,7 @@ Only administrators can change those settings.
Go to the menu **Settings**, then choose **Application settings** on the left.
-![Application settings](https://kanboard.net/screenshots/documentation/application-settings.png)
+![Application settings](screenshots/application-settings.png)
### Application URL
diff --git a/doc/assets.markdown b/doc/en_US/assets.markdown
index 04082c9e..04082c9e 100644
--- a/doc/assets.markdown
+++ b/doc/en_US/assets.markdown
diff --git a/doc/automatic-actions.markdown b/doc/en_US/automatic-actions.markdown
index d109a95b..add62662 100644
--- a/doc/automatic-actions.markdown
+++ b/doc/en_US/automatic-actions.markdown
@@ -1,15 +1,15 @@
Automatic Actions
=================
-To minimize the user interaction, Kanboard support automated actions.
+To minimize user interaction, Kanboard support automated actions.
-Each automatic action is defined like that:
+Each automatic action is defined with these properties:
- An event to listen
-- Action linked to this event
-- Eventually there is some parameters to define
+- Action linked to the event
+- Additional parameters
-Each project has a different set of automatic actions, the configuration panel is located on the project listing page, just click on the link **Automatic actions**.
+Each project has a different set of automatic actions. The configuration panel is located on the project listing page - just click on the link **Automatic actions**.
Add a new action
----------------
@@ -18,19 +18,19 @@ Click on the link **Add a new automatic action**.
![Automatique action](screenshots/automatic-action-creation.png)
-- Choose an action
-- Then, select an event
-- And finally, define the parameters
+1. Choose an action
+2. Select an event
+3. Define the parameters
-List of available actions
+Available actions
-------------------------
- Create a comment from an external provider
- Add a comment log when moving the task between columns
-- Assign automatically a category based on a color
+- Automatically assign a category based on a color
- Change the category based on an external label
-- Assign automatically a category based on a link
-- Assign automatically a color based on a category
+- Automatically assign a category based on a link
+- Automatically assign a color based on a category
- Assign a color when the task is moved to a specific column
- Change task color when using a specific task link
- Assign a color to a specific user
@@ -75,7 +75,7 @@ Here are some examples used in real life:
### When a task is completed, duplicate this task to another project
-Let's say we have two projects "Customer orders" and "Production", once the order is validated, swap it to the "Production" project.
+Let's say we have two projects: "Customer orders" and "Production". Once the order is validated, swap it to the "Production" project.
- Choose action: **Duplicate the task to another project**
- Choose the event: **Closing a task**
@@ -83,7 +83,7 @@ Let's say we have two projects "Customer orders" and "Production", once the orde
### When a task is moved to the last column, move the exact same task to another project
-Let's say we have two projects "Ideas" and "Development", once the idea is validated, swap it to the "Development" project.
+Let's say we have two projects: "Ideas" and "Development". Once the idea is validated, swap it to the "Development" project.
- Choose action: **Move the task to another project**
- Choose the event: **Move a task to another column**
diff --git a/doc/board-collapsed-expanded.markdown b/doc/en_US/board-collapsed-expanded.markdown
index 0164da95..aeffcf10 100644
--- a/doc/board-collapsed-expanded.markdown
+++ b/doc/en_US/board-collapsed-expanded.markdown
@@ -9,7 +9,7 @@ Collapsed mode
![Tasks collapsed](screenshots/board-collapsed-mode.png)
-- If the task is assigned to someone, the initials of the person are shown next to the task number
+- If the task is assigned to someone, the initials of the person are shown next to the task number.
- If the task title is too long, you can put your mouse over the task to show a tooltip with the full title.
Expanded mode
diff --git a/doc/board-configuration.markdown b/doc/en_US/board-configuration.markdown
index 77b291a8..3daebf74 100644
--- a/doc/board-configuration.markdown
+++ b/doc/en_US/board-configuration.markdown
@@ -3,7 +3,7 @@ Board settings
Go to the menu **Settings**, then choose **Board settings** on the left.
-![Board settings](https://kanboard.net/screenshots/documentation/board-settings.png)
+![Board settings](screenshots/board-settings.png)
### Task highlighting
diff --git a/doc/board-horizontal-scrolling-and-compact-view.markdown b/doc/en_US/board-horizontal-scrolling-and-compact-view.markdown
index 51885529..51885529 100644
--- a/doc/board-horizontal-scrolling-and-compact-view.markdown
+++ b/doc/en_US/board-horizontal-scrolling-and-compact-view.markdown
diff --git a/doc/board-show-hide-columns.markdown b/doc/en_US/board-show-hide-columns.markdown
index 113298d3..0da2d28d 100644
--- a/doc/board-show-hide-columns.markdown
+++ b/doc/en_US/board-show-hide-columns.markdown
@@ -9,4 +9,4 @@ To hide a column, click on the column dropdown menu and choose "Hide this column
![Show a column](screenshots/show-column.png)
-To show again the column, click on the "plus icon".
+To show the column again, click on the "plus icon".
diff --git a/doc/bruteforce-protection.markdown b/doc/en_US/bruteforce-protection.markdown
index a7bef45e..2f75b919 100644
--- a/doc/bruteforce-protection.markdown
+++ b/doc/en_US/bruteforce-protection.markdown
@@ -12,6 +12,9 @@ However, **after three authentication failure through the user API**, the accoun
Kanboard doesn't block any IP addresses since bots can use several anonymous proxies. However, you can use external tools like [fail2ban](http://www.fail2ban.org) to avoid massive scans.
+Configuration
+-------------
+
Default settings can be changed with these configuration variables:
```php
@@ -24,3 +27,9 @@ define('BRUTEFORCE_LOCKDOWN', 6);
// Lock account duration in minutes
define('BRUTEFORCE_LOCKDOWN_DURATION', 15);
```
+
+Unlocking users
+---------------
+
+If you don't want to wait 15 minutes, you can unlock a user from the user interface.
+As administrator, go to the user profile and click on "Unlock this user".
diff --git a/doc/calendar-configuration.markdown b/doc/en_US/calendar-configuration.markdown
index e46c66c3..8181ab82 100644
--- a/doc/calendar-configuration.markdown
+++ b/doc/en_US/calendar-configuration.markdown
@@ -3,7 +3,7 @@ Calendar settings
Go to the menu **Settings**, then choose **Calendar settings** on the left.
-![Calendar settings](https://kanboard.net/screenshots/documentation/calendar-settings.png)
+![Calendar settings](screenshots/calendar-settings.png)
There are two different calendars in Kanboard:
diff --git a/doc/calendar.markdown b/doc/en_US/calendar.markdown
index becb48ce..92e617f6 100644
--- a/doc/calendar.markdown
+++ b/doc/en_US/calendar.markdown
@@ -13,7 +13,7 @@ At this time the calendar is able to display this information:
- Sub-task time tracking, all recorded time slot will be shown in the calendar.
- Sub-task estimates, forecasts of work left
-![Calendar](https://kanboard.net/screenshots/documentation/calendar.png)
+![Calendar](screenshots/calendar.png)
The calendar configuration can be changed in the settings page.
diff --git a/doc/centos-installation.markdown b/doc/en_US/centos-installation.markdown
index 27f02a1e..1d83aef0 100644
--- a/doc/centos-installation.markdown
+++ b/doc/en_US/centos-installation.markdown
@@ -1,7 +1,5 @@
-Centos Installation
-===================
-
-Note: Some features of Kanboard require that you run [a daily background job](cronjob.markdown).
+Kanboard Installation on CentOS
+===============================
Centos 7
--------
@@ -12,7 +10,7 @@ Install PHP and Apache:
yum install -y php php-mbstring php-pdo php-gd unzip wget
```
-By default Centos 7 use PHP 5.4.16 and Apache 2.4.6.
+By default, Centos 7 use PHP 5.4.16 and Apache 2.4.6.
Restart Apache:
@@ -30,20 +28,6 @@ chown -R apache:apache kanboard/data
rm kanboard-latest.zip
```
-If SELinux is enabled, be sure that the Apache user can write to the directory data:
-
-```bash
-chcon -R -t httpd_sys_content_rw_t /var/www/html/kanboard/data
-```
-
-Be sure to configure your server to allow Kanboard to send emails and make external network requests, by example with SELinux:
-
-```bash
-setsebool -P httpd_can_network_connect=1
-```
-
-Allowing external connections is necessary if you use LDAP, SMTP, Web hooks or any third-party integration.
-
Centos 6.x
----------
@@ -53,7 +37,7 @@ Install PHP and Apache:
yum install -y php php-mbstring php-pdo php-gd unzip wget
```
-By default Centos 6.5 use PHP 5.3.3 and Apache 2.2.15.
+By default, Centos 6.5 use PHP 5.3.3 and Apache 2.2.15.
Enable short tags:
@@ -76,4 +60,24 @@ chown -R apache:apache kanboard/data
rm kanboard-latest.zip
```
-Go to `http://your_server/kanboard/`.
+SELinux restrictions
+--------------------
+
+If SELinux is enabled, be sure that the Apache user can write to the directory data:
+
+```bash
+chcon -R -t httpd_sys_content_rw_t /var/www/html/kanboard/data
+```
+
+Be sure to configure your server to allow Kanboard to send emails and make external network requests, by example with SELinux:
+
+```bash
+setsebool -P httpd_can_network_connect=1
+```
+
+Allowing external connections is necessary if you use LDAP, SMTP, Web hooks or any third-party integration.
+
+Notes
+-----
+
+Some features of Kanboard require that you run [a daily background job](cronjob.markdown).
diff --git a/doc/cli.markdown b/doc/en_US/cli.markdown
index 37cc7ee8..b1722308 100644
--- a/doc/cli.markdown
+++ b/doc/en_US/cli.markdown
@@ -10,7 +10,7 @@ Usage
-----
- Open a terminal and go to your Kanboard directory (example: `cd /var/www/kanboard`)
-- Run the command `./kanboard`
+- Run the command `./cli` or `php cli`
```bash
Kanboard version master
@@ -30,8 +30,12 @@ Options:
Available commands:
cronjob Execute daily cronjob
help Displays help for a command
+ job Execute individual job (read payload from stdin)
list Lists commands
worker Execute queue worker
+ db
+ db:migrate Execute SQL migrations
+ db:version Show database schema version
export
export:daily-project-column-stats Daily project column stats CSV export (number of tasks per column and per day)
export:subtasks Subtasks CSV export
@@ -63,13 +67,13 @@ Available commands
Usage:
```bash
-./kanboard export:tasks <project_id> <start_date> <end_date>
+./cli export:tasks <project_id> <start_date> <end_date>
```
Example:
```bash
-./kanboard export:tasks 1 2014-10-01 2014-11-30 > /tmp/my_custom_export.csv
+./cli export:tasks 1 2014-10-01 2014-11-30 > /tmp/my_custom_export.csv
```
CSV data are sent to `stdout`.
@@ -79,13 +83,13 @@ CSV data are sent to `stdout`.
Usage:
```bash
-./kanboard export:subtasks <project_id> <start_date> <end_date>
+./cli export:subtasks <project_id> <start_date> <end_date>
```
Example:
```bash
-./kanboard export:subtasks 1 2014-10-01 2014-11-30 > /tmp/my_custom_export.csv
+./cli export:subtasks 1 2014-10-01 2014-11-30 > /tmp/my_custom_export.csv
```
### Task transitions CSV export
@@ -93,13 +97,13 @@ Example:
Usage:
```bash
-./kanboard export:transitions <project_id> <start_date> <end_date>
+./cli export:transitions <project_id> <start_date> <end_date>
```
Example:
```bash
-./kanboard export:transitions 1 2014-10-01 2014-11-30 > /tmp/my_custom_export.csv
+./cli export:transitions 1 2014-10-01 2014-11-30 > /tmp/my_custom_export.csv
```
### Export daily summaries data in CSV
@@ -107,13 +111,13 @@ Example:
The exported data will be printed on the standard output:
```bash
-./kanboard export:daily-project-column-stats <project_id> <start_date> <end_date>
+./cli export:daily-project-column-stats <project_id> <start_date> <end_date>
```
Example:
```bash
-./kanboard export:daily-project-column-stats 1 2014-10-01 2014-11-30 > /tmp/my_custom_export.csv
+./cli export:daily-project-column-stats 1 2014-10-01 2014-11-30 > /tmp/my_custom_export.csv
```
### Send notifications for overdue tasks
@@ -121,7 +125,7 @@ Example:
Emails will be sent to all users with notifications enabled.
```bash
-./kanboard notification:overdue-tasks
+./cli notification:overdue-tasks
```
Optional parameters:
@@ -147,7 +151,7 @@ You can also display the overdue tasks with the flag `--show`:
This command calculate the statistics of each project:
```bash
-./kanboard projects:daily-stats
+./cli projects:daily-stats
Run calculation for Project #0
Run calculation for Project #1
Run calculation for Project #10
@@ -158,14 +162,14 @@ Run calculation for Project #10
This command send a "daily cronjob event" to all open tasks of each project.
```bash
-./kanboard trigger:tasks
+./cli trigger:tasks
Trigger task event: project_id=2, nb_tasks=1
```
### Reset user password
```bash
-./kanboard user:reset-password my_user
+./cli user:reset-password my_user
```
You will be prompted for a password and confirmation. Characters are not printed to the screen.
@@ -173,13 +177,13 @@ You will be prompted for a password and confirmation. Characters are not printed
### Remove two-factor authentication for a user
```bash
-./kanboard user:reset-2fa my_user
+./cli user:reset-2fa my_user
```
### Install a plugin
```bash
-./kanboard plugin:install https://github.com/kanboard/plugin-github-auth/releases/download/v1.0.1/GithubAuth-1.0.1.zip
+./cli plugin:install https://github.com/kanboard/plugin-github-auth/releases/download/v1.0.1/GithubAuth-1.0.1.zip
```
Note: Installed files will have the same permissions as the current user
@@ -187,13 +191,13 @@ Note: Installed files will have the same permissions as the current user
### Remove a plugin
```bash
-./kanboard plugin:uninstall Budget
+./cli plugin:uninstall Budget
```
### Upgrade all plugins
```bash
-./kanboard plugin:upgrade
+./cli plugin:upgrade
* Updating plugin: Budget Planning
* Plugin up to date: Github Authentication
```
@@ -201,5 +205,27 @@ Note: Installed files will have the same permissions as the current user
### Run Background worker
```bash
-./kanboard worker
+./cli worker
+```
+
+### Execute individual job (mostly for debugging)
+
+```bash
+echo 'RAW_JOB_DATA' | ./cli job
+```
+
+### Execute database migrations
+
+If the parameter `DB_RUN_MIGRATIONS` is set to `false`, you have run the database migrations manually:
+
+```bash
+./cli db:migrate
+```
+
+### Check database schema version
+
+```bash
+./cli db:version
+Current version: 95
+Last version: 96
```
diff --git a/doc/closing-tasks.markdown b/doc/en_US/closing-tasks.markdown
index 6439f394..d82deee3 100644
--- a/doc/closing-tasks.markdown
+++ b/doc/en_US/closing-tasks.markdown
@@ -7,10 +7,10 @@ However, you can always access to the list of closed tasks by using the query **
There are two different ways to close a task, from the task drop-down menu on the board:
-![Close a task from drop-down menu](https://kanboard.net/screenshots/documentation/menu-close-task.png)
+![Close a task from drop-down menu](screenshots/menu-close-task.png)
Or from the task sidebar menu in the task detail view:
-![Close task](https://kanboard.net/screenshots/documentation/closing-tasks.png)
+![Close task](screenshots/closing-tasks.png)
Note: When you close a task, all sub-tasks not completed will be changed to the status "Done".
diff --git a/doc/cloudron.markdown b/doc/en_US/cloudron.markdown
index ab6b5bb6..c79d0441 100644
--- a/doc/cloudron.markdown
+++ b/doc/en_US/cloudron.markdown
@@ -17,12 +17,12 @@ becomes a Kanboard administrator automatically.
Installing Plugins
------------------
-Plugins can be installed and configured using the [Cloudron CLI](https://cloudron.io/references/cli.html)
+Plugins can be installed and configured using the [Cloudron CLI](https://git.cloudron.io/cloudron/cloudron-cli)
tool. See the [app description](https://cloudron.io/appstore.html?app=net.kanboard.cloudronapp) for
more information.
Application Source code
----------------------
-The source code for the Cloudron app is [here](https://github.com/cloudron-io/kanboard-app).
+The source code for the Cloudron app is [here](https://git.cloudron.io/cloudron/kanboard-app).
diff --git a/doc/coding-standards.markdown b/doc/en_US/coding-standards.markdown
index 0ee3ecd6..0ee3ecd6 100644
--- a/doc/coding-standards.markdown
+++ b/doc/en_US/coding-standards.markdown
diff --git a/doc/config.markdown b/doc/en_US/config.markdown
index e51fd54a..a2046989 100644
--- a/doc/config.markdown
+++ b/doc/en_US/config.markdown
@@ -30,6 +30,12 @@ Enable/disable plugin installation from the user interface:
define('PLUGIN_INSTALLER', true); // Default is true
```
+Change default plugin directory URL:
+
+```php
+define('PLUGIN_API_URL', 'https://kanboard.net/plugins.json');
+```
+
Folder for uploaded files
-------------------------
@@ -37,6 +43,17 @@ Folder for uploaded files
define('FILES_DIR', 'data/files');
```
+Cache parameters
+----------------
+
+```php
+// Available cache drivers are "file" and "memory"
+define('CACHE_DRIVER', 'memory');
+
+// Cache folder to use if cache driver is "file" (must be writeable by the web server user)
+define('CACHE_DIR', DATA_DIR.DIRECTORY_SEPARATOR.'cache');
+```
+
Enable/disable url rewrite
--------------------------
@@ -69,6 +86,11 @@ Database settings
-----------------
```php
+// Run automatically database migrations
+// If set to false, you will have to run manually the SQL migrations from the CLI during the next Kanboard upgrade
+// Do not run the migrations from multiple processes at the same time (example: web page + background worker)
+define('DB_RUN_MIGRATIONS', true);
+
// Database driver: sqlite, mysql or postgres (sqlite by default)
define('DB_DRIVER', 'sqlite');
@@ -304,4 +326,7 @@ define('DISABLE_LOGOUT', false);
// Override API token stored in the database, useful for automated tests
define('API_AUTHENTICATION_TOKEN', 'My unique API Token');
+
+// TOTP (2FA) issuer name
+define('TOTP_ISSUER', 'Kanboard');
```
diff --git a/doc/contributing.markdown b/doc/en_US/contributing.markdown
index a08fa591..a08fa591 100644
--- a/doc/contributing.markdown
+++ b/doc/en_US/contributing.markdown
diff --git a/doc/create-tasks-by-email.markdown b/doc/en_US/create-tasks-by-email.markdown
index b46e5797..b46e5797 100644
--- a/doc/create-tasks-by-email.markdown
+++ b/doc/en_US/create-tasks-by-email.markdown
diff --git a/doc/creating-projects.markdown b/doc/en_US/creating-projects.markdown
index 373d93eb..05d5b20c 100644
--- a/doc/creating-projects.markdown
+++ b/doc/en_US/creating-projects.markdown
@@ -16,24 +16,24 @@ From the dashboard, click on the link **New project**:
![Project creation form](screenshots/new-project.png)
-It's very easy, you just have to find a name for your project!
+It's very easy: you just have to find a name for your project!
Creating a private project
--------------------------
-- Everybody can create a private project
+- Anybody can create a private project
- There is **NO** user management
-- Only the owner and administrators can access to the project
+- Only the owner and administrators can access the project
From the dashboard, click on the link **New private project**.
Creating projects from another project
--------------------------------------
-When you create a new project, your can choose to duplicate the properties of another project :
+When you create a new project, you can choose to duplicate the properties of another project:
- Permissions
- Actions
- Swimlanes
-- Catégories
+- Categories
- Tasks
diff --git a/doc/creating-tasks.markdown b/doc/en_US/creating-tasks.markdown
index 99dce713..99dce713 100644
--- a/doc/creating-tasks.markdown
+++ b/doc/en_US/creating-tasks.markdown
diff --git a/doc/en_US/cronjob.markdown b/doc/en_US/cronjob.markdown
new file mode 100644
index 00000000..743aac95
--- /dev/null
+++ b/doc/en_US/cronjob.markdown
@@ -0,0 +1,55 @@
+Background Job Scheduling
+=========================
+
+To work properly, Kanboard requires that a background job run on a daily basis.
+Usually on Unix platforms, this process is done by `cron`.
+
+This background job is necessary for these features:
+
+- Reports and analytics (calculate daily stats of each projects)
+- Send overdue task notifications
+- Execute automatic actions connected to the event "Daily background job for tasks"
+
+Configuration on Unix and Linux platforms
+-----------------------------------------
+
+There are multiple ways to define a cronjob on Unix/Linux operating systems, this example is for Ubuntu 14.04.
+The procedure is similar for other systems.
+
+Edit the crontab of your web server user:
+
+```bash
+sudo crontab -u www-data -e
+```
+
+Example to execute the daily cronjob at 8am:
+
+```bash
+0 8 * * * cd /path/to/kanboard && ./cli cronjob >/dev/null 2>&1
+```
+
+Note: the cronjob process must have write access to the database in case you are using Sqlite.
+Usually, running the cronjob under the web server user is enough.
+
+Configuration on Microsoft Windows Server
+-----------------------------------------
+
+Before to configure the recurring task, create a batch file (*.bat or *.cmd) that run the Kanboard CLI script.
+
+Here an example (`C:\kanboard.bat`):
+
+```
+"C:\php\php.exe" -f "C:\inetpub\wwwroot\kanboard\kanboard" cronjob
+```
+
+**You must change the path of the PHP executable and the path of the Kanboard's script according to your installation.**
+
+Configure the Windows Task Scheduler:
+
+1. Go to "Administrative Tools"
+2. Open the "Task Scheduler"
+3. On the right, choose "Create Task"
+4. Choose a name, for example you can use "Kanboard"
+5. Under "Security Options", choose a user that can write to the database in case you are using Sqlite (might be IIS_IUSRS depending of your configuration)
+6. Create a new "Trigger", choose daily and a time, midnight for example
+7. Add a new action, choose "Start a program" and select the batch file created above
diff --git a/doc/currency-rate.markdown b/doc/en_US/currency-rate.markdown
index c986aedb..9cd78253 100644
--- a/doc/currency-rate.markdown
+++ b/doc/en_US/currency-rate.markdown
@@ -6,6 +6,6 @@ If you have to handle multiple currencies, you define here the rate according to
This feature is used for project budget calculation.
-![Currency Rate](https://kanboard.net/screenshots/documentation/currency-rate.png)
+![Currency Rate](screenshots/currency-rate.png)
Currency rate settings are located in **Settings > Currency rates**.
diff --git a/doc/custom-filters.markdown b/doc/en_US/custom-filters.markdown
index e6bcb130..b3d8ef57 100644
--- a/doc/custom-filters.markdown
+++ b/doc/en_US/custom-filters.markdown
@@ -12,8 +12,8 @@ Filter creation
Go to the action drop-down or in the project settings and choose **custom filters**:
-![Custom Filter Creation](https://kanboard.net/screenshots/documentation/custom-filter-creation.png)
+![Custom Filter Creation](screenshots/custom-filter-creation.png)
After creating your filter, it will appear on the board next to the default filters:
-![Custom Filter Dropdown](https://kanboard.net/screenshots/documentation/custom-filter-dropdown.png)
+![Custom Filter Dropdown](screenshots/custom-filter-dropdown.png)
diff --git a/doc/en_US/custom-project-roles.markdown b/doc/en_US/custom-project-roles.markdown
new file mode 100644
index 00000000..40c28e7a
--- /dev/null
+++ b/doc/en_US/custom-project-roles.markdown
@@ -0,0 +1,88 @@
+Custom Project Roles
+====================
+
+You can create custom project roles to apply a set of specific restrictions on the people that belong to this role.
+These custom roles are defined for each project.
+
+A custom role inherits from the project member role.
+For example, you may want to create a custom role to force someone to follow a process.
+You can have a group of people that are allowed to move tasks only from the column "Work in progress" to the column "Done".
+
+Available restrictions
+----------------------
+
+- Project Restrictions:
+ - Task creation is not permitted
+ - Closing or opening a task is not permitted
+ - Moving a task is not permitted
+- Columns Restrictions:
+ - Task creation is **allowed** only for a specific column
+ - Task creation is **blocked** only for a specific column
+ - Closing or opening a task is **allowed** only for a specific column
+ - Closing or opening a task is **blocked** only for a specific column
+- Moving tasks only between specified columns
+
+Configuration
+-------------
+
+### 1) Create a new custom role
+
+From the project settings, click on the left on the menu **Custom Roles** and at the top of the page click on **Add a new custom role**.
+
+![New custom role](screenshots/new_custom_role.png)
+
+Give a name to the role and submit the form.
+
+### 2) Add a restriction to the role
+
+There are different kinds of restrictions:
+
+- Project restrictions
+- Drag and drop restrictions
+- Column restrictions
+
+You can click on the drop-down menu on the table to add a new restriction:
+
+![Add a new restriction](screenshots/add_new_restriction.png)
+
+### 3) List of restrictions
+
+![List of restrictions](screenshots/example-restrictions.png)
+
+For example, this role is able to create tasks only in the column "Backlog" and to move tasks between the column "Ready" and "Work in progress".
+
+### 4) Assign the role to someone
+
+Go to the "permissions" section on the left menu and assign the desired role to the user.
+
+![Custom project role](screenshots/custom_roles.png)
+
+Examples
+--------
+
+### Allow people to create tasks only in specific columns
+
+![Example restriction task creation](screenshots/example-restriction-task-creation.png)
+
+- Users that belong to this role will be able to create new tasks only in the column "Backlog".
+- The combination of the 2 rules is important, otherwise that will not work.
+
+### Allow people to change the task status only in specific columns
+
+![Example restriction task status](screenshots/example-restriction-task-status.png)
+
+- Users that belong to this role will be able to change the task status in the column "Backlog".
+- Tasks with the status open are visible on the board and tasks with the status closed is hidden by default on the board.
+
+### Do not allow people to change task status in a specific column
+
+![Example column restriction](screenshots/example-restriction-task-status-blocked.png)
+
+Users that belong to this role won't be able to change the task status in the column "Done".
+However, it will be possible in other columns.
+
+### Allow people to move tasks only between specific columns
+
+![Example restriction task drag and drop](screenshots/example-restriction-task-drag-and-drop.png)
+
+Users that belong to this role will be able to move tasks only between the column "Ready" and "Work in progress".
diff --git a/doc/debian-installation.markdown b/doc/en_US/debian-installation.markdown
index dab4bac7..0fe72f4c 100644
--- a/doc/debian-installation.markdown
+++ b/doc/en_US/debian-installation.markdown
@@ -1,7 +1,5 @@
-How to install Kanboard on Debian?
-==================================
-
-Note: Some features of Kanboard require that you run [a daily background job](cronjob.markdown).
+Kanboard Installation on Debian
+===============================
Debian 8 (Jessie)
-----------------
@@ -63,3 +61,8 @@ unzip kanboard-latest.zip
chown -R www-data:www-data kanboard/data
rm kanboard-latest.zip
```
+
+Notes
+-----
+
+Some features of Kanboard require that you run [a daily background job](cronjob.markdown).
diff --git a/doc/docker.markdown b/doc/en_US/docker.markdown
index e55130e5..5b77da76 100644
--- a/doc/docker.markdown
+++ b/doc/en_US/docker.markdown
@@ -93,4 +93,4 @@ References
- [Official Kanboard images](https://registry.hub.docker.com/u/kanboard/kanboard/)
- [Docker documentation](https://docs.docker.com/)
- [Dockerfile stable version](https://github.com/kanboard/docker)
-- [Dockerfile dev version](https://github.com/fguillot/kanboard/blob/master/Dockerfile)
+- [Dockerfile dev version](https://github.com/kanboard/kanboard/blob/master/Dockerfile)
diff --git a/doc/duplicate-move-tasks.markdown b/doc/en_US/duplicate-move-tasks.markdown
index a9521e56..2536ab88 100644
--- a/doc/duplicate-move-tasks.markdown
+++ b/doc/en_US/duplicate-move-tasks.markdown
@@ -6,7 +6,7 @@ Duplicate a task into the same project
Go to the task view and choose **Duplicate** on the left.
-![Task Duplication](https://kanboard.net/screenshots/documentation/task-duplication.png)
+![Task Duplication](screenshots/task-duplication.png)
A new task will be created with the same properties as the original.
@@ -15,7 +15,7 @@ Duplicate a task to another project
Go to the task view and choose **Duplicate to another project**.
-![Task Duplication Another Project](https://kanboard.net/screenshots/documentation/task-duplication-another-project.png)
+![Task Duplication Another Project](screenshots/task-duplication-another-project.png)
Only projects where you are members will be shown in the drop-down.
diff --git a/doc/en_US/editing-projects.markdown b/doc/en_US/editing-projects.markdown
new file mode 100644
index 00000000..c9c1a5a0
--- /dev/null
+++ b/doc/en_US/editing-projects.markdown
@@ -0,0 +1,15 @@
+Editing Projects
+================
+
+Projects can be renamed or disabled at any time.
+
+To rename a project, just click on the link entitled "Edit project" on the left.
+
+![Project edition](screenshots/project-edition.png)
+
+- The start date and end date are used to generate the project Gantt chart.
+- The description is visible as a tooltip on the board and on the projects listing page.
+- Administrators and project administrators can convert a private project to a multiple-user project by changing the checkbox "Private project".
+- You can also convert a multiple-user project to a private project.
+
+Note: When you make a project private, all existing users will still have access to the project. You can adjust the list of users according to your needs.
diff --git a/doc/email-configuration.markdown b/doc/en_US/email-configuration.markdown
index 61d5980a..61d5980a 100644
--- a/doc/email-configuration.markdown
+++ b/doc/en_US/email-configuration.markdown
diff --git a/doc/env.markdown b/doc/en_US/env.markdown
index 902066d7..902066d7 100644
--- a/doc/env.markdown
+++ b/doc/en_US/env.markdown
diff --git a/doc/faq.markdown b/doc/en_US/faq.markdown
index 879b070f..412bbe9b 100644
--- a/doc/faq.markdown
+++ b/doc/en_US/faq.markdown
@@ -11,15 +11,6 @@ To have the best performances, choose a provider with fast disk I/O because Kanb
Avoid hosting providers that use a shared NFS mount point.
-I get a blank page after installing or upgrading Kanboard
----------------------------------------------------------
-
-- Check if you have installed all requirements on your server
-- Check the PHP and Apache error logs
-- Check if the files have the correct permission
-- If you use an aggressive OPcode caching, reload your web-server or php-fpm
-
-
I have the error "There is no suitable CSPRNG installed on your system"
-----------------------------------------------------------------------
@@ -129,3 +120,9 @@ Are there some tutorials about Kanboard in other languages?
-----------------------------------------------------------
- [German article series about Kanboard](http://demaya.de/wp/2014/07/kanboard-eine-jira-alternative-im-detail-installation/)
+
+
+Tips
+----
+
+- [Easy way to remove name constraint in SQLite database](https://github.com/kanboard/kanboard/issues/1508)
diff --git a/doc/freebsd-installation.markdown b/doc/en_US/freebsd-installation.markdown
index 7b36dff1..7b36dff1 100644
--- a/doc/freebsd-installation.markdown
+++ b/doc/en_US/freebsd-installation.markdown
diff --git a/doc/gantt-chart-projects.markdown b/doc/en_US/gantt-chart-projects.markdown
index 7faad9d6..80d4b92c 100644
--- a/doc/gantt-chart-projects.markdown
+++ b/doc/en_US/gantt-chart-projects.markdown
@@ -8,7 +8,7 @@ The goal of this Gantt chart is to display an overview of all projects based on
- Project administrators will see only projects where they are members
- Private projects are not shown on this chart
-![Gantt Chart for all projects](https://kanboard.net/screenshots/documentation/gantt-chart-all-projects.png)
+![Gantt Chart for all projects](screenshots/gantt-chart-all-projects.png)
- The **start date** and the **end date** of projects are used to draw the chart
- Horizontal bars can be resized and moved horizontally with your mouse
diff --git a/doc/gantt-chart-tasks.markdown b/doc/en_US/gantt-chart-tasks.markdown
index c164349a..42b45835 100644
--- a/doc/gantt-chart-tasks.markdown
+++ b/doc/en_US/gantt-chart-tasks.markdown
@@ -6,7 +6,7 @@ The goal of this Gantt chart is to display a time based overview of the tasks fo
- The Gantt chart is available from the "view switcher"
- Only project managers can access this section
-![Gantt Chart](https://kanboard.net/screenshots/documentation/gantt-chart-project.png)
+![Gantt Chart](screenshots/gantt-chart-project.png)
- The **start date** and the **due date** of tasks are used to draw the chart
- Tasks can be resized and moved horizontally with your mouse
@@ -17,4 +17,4 @@ The goal of this Gantt chart is to display a time based overview of the tasks fo
- New tasks created from this view will be displayed on the board at the position 1 in the first column
- Tasks are displayed in black when there is no start or due date defined
-![Task not defined](https://kanboard.net/screenshots/documentation/gantt-chart-not-defined.png)
+![Task not defined](screenshots/gantt-chart-not-defined.png)
diff --git a/doc/groups.markdown b/doc/en_US/groups.markdown
index 16f7ed0b..16f7ed0b 100644
--- a/doc/groups.markdown
+++ b/doc/en_US/groups.markdown
diff --git a/doc/heroku.markdown b/doc/en_US/heroku.markdown
index 43b15c72..1891efb0 100644
--- a/doc/heroku.markdown
+++ b/doc/en_US/heroku.markdown
@@ -4,7 +4,7 @@ Deploy Kanboard on Heroku
You can try Kanboard for free on [Heroku](https://www.heroku.com/).
You can use this one click install button or follow the manual instructions below:
-[![Deploy](https://www.herokucdn.com/deploy/button.png)](https://heroku.com/deploy?template=https://github.com/fguillot/kanboard)
+[![Deploy](https://www.herokucdn.com/deploy/button.png)](https://heroku.com/deploy?template=https://github.com/kanboard/kanboard)
Requirements
------------
@@ -17,7 +17,7 @@ Manual instructions
```bash
# Get the last development version
-git clone https://github.com/fguillot/kanboard.git
+git clone https://github.com/kanboard/kanboard.git
cd kanboard
# Push the code to Heroku (You can also use SSH if git over HTTP doesn't work)
diff --git a/doc/ical.markdown b/doc/en_US/ical.markdown
index 96b51d54..2105813e 100644
--- a/doc/ical.markdown
+++ b/doc/en_US/ical.markdown
@@ -30,23 +30,23 @@ Adding your Kanboard calendar to Apple Calendar
- Select **File > New Calendar Subscription**
- Copy and paste the iCal feed URL from Kanboard
-![Add iCal subscription](https://kanboard.net/screenshots/documentation/apple-calendar-add-subscription.png)
+![Add iCal subscription](screenshots/apple-calendar-add-subscription.png)
- You can choose to synchronize the calendar with iCloud to be available across all your devices
- Don't forget to select the refresh frequency
-![Edit iCal subscription](https://kanboard.net/screenshots/documentation/apple-calendar-edit-subscription.png)
+![Edit iCal subscription](screenshots/apple-calendar-edit-subscription.png)
Adding your Kanboard calendar to Microsoft Outlook
--------------------------------------------------
-![Outlook Add Internet Calendar](https://kanboard.net/screenshots/documentation/outlook-add-subscription.png)
+![Outlook Add Internet Calendar](screenshots/outlook-add-subscription.png)
- Open Outlook
- Select **Open Calendar > From Internet**
- Copy and paste the iCal feed URL from Kanboard
-![Outlook Edit Internet Calendar](https://kanboard.net/screenshots/documentation/outlook-edit-subscription.png)
+![Outlook Edit Internet Calendar](screenshots/outlook-edit-subscription.png)
Adding your Kanboard calendar to Mozilla Thunderbird
----------------------------------------------------
@@ -55,12 +55,12 @@ Adding your Kanboard calendar to Mozilla Thunderbird
- Click on **File > New Calendar**
- In the dialog box, choose **On the Network**
-![Thunderbird Step 1](https://kanboard.net/screenshots/documentation/thunderbird-new-calendar-step1.png)
+![Thunderbird Step 1](screenshots/thunderbird-new-calendar-step1.png)
- Choose the format iCalendar
- Copy and paste the iCal feed URL from Kanboard
-![Thunderbird Step 2](https://kanboard.net/screenshots/documentation/thunderbird-new-calendar-step2.png)
+![Thunderbird Step 2](screenshots/thunderbird-new-calendar-step2.png)
- Choose the colors and other settings and finally save
@@ -71,7 +71,7 @@ Adding your Kanboard calendar to Google Calendar
- Select **Add by URL** from the menu.
- Copy and paste the iCal feed URL from Kanboard
-![Google Calendar](https://kanboard.net/screenshots/documentation/google-calendar-add-subscription.png)
+![Google Calendar](screenshots/google-calendar-add-subscription.png)
Your Kanboard calendar can also be available from your Android device if you enable the synchronization.
diff --git a/doc/index.markdown b/doc/en_US/index.markdown
index bc3e8a32..09b39d9f 100644
--- a/doc/index.markdown
+++ b/doc/en_US/index.markdown
@@ -32,6 +32,7 @@ Using Kanboard
- [Gantt chart for tasks](gantt-chart-tasks.markdown)
- [Gantt chart for projects](gantt-chart-projects.markdown)
- [Custom filters](custom-filters.markdown)
+- [Custom project roles](custom-project-roles.markdown)
### Working with tasks
@@ -39,7 +40,7 @@ Using Kanboard
- [Closing tasks](closing-tasks.markdown)
- [Duplicate and move tasks](duplicate-move-tasks.markdown)
- [Adding screenshots](screenshots.markdown)
-- [Task links](task-links.markdown)
+- [Internal Task links](task-links.markdown)
- [Transitions](transitions.markdown)
- [Time tracking](time-tracking.markdown)
- [Recurring tasks](recurring-tasks.markdown)
@@ -76,7 +77,7 @@ Using Kanboard
- [Webhooks](webhooks.markdown)
- [Plugins](plugins.markdown)
-### More
+### More information
- [Advanced Search Syntax](search.markdown)
- [Command line interface](cli.markdown)
@@ -84,6 +85,13 @@ Using Kanboard
- [Brute force protection](bruteforce-protection.markdown)
- [Frequently asked questions](faq.markdown)
+### Troubleshooting
+
+- [Solving database migration issues](solving-database-migration-issues.markdown)
+- [Blank page after upgrading](solving-blank-page-issue.markdown)
+- [Unable to open a session on Windows IIS and Internet Explorer](solving-session-issue-windows-iis-ie.markdown)
+- [Performances](performances.markdown)
+
Technical details
-----------------
@@ -103,11 +111,9 @@ Technical details
- [Run Kanboard with Docker](docker.markdown)
- [Run Kanboard with Vagrant](vagrant.markdown)
- [Run Kanboard on Cloudron](cloudron.markdown)
-- [Run Kanboard on Nitrous](nitrous.markdown)
### Configuration
-- [Performances](performances.markdown)
- [Daily background job](cronjob.markdown)
- [Background Worker](worker.markdown)
- [Config file](config.markdown)
diff --git a/doc/installation.markdown b/doc/en_US/installation.markdown
index 2ebe4d14..d8969c1c 100644
--- a/doc/installation.markdown
+++ b/doc/en_US/installation.markdown
@@ -8,27 +8,27 @@ From the archive (stable version)
1. You must have a web server with PHP installed
2. Download the source code and copy the directory `kanboard` where you want
-3. Check if the directory `data` is writeable
+3. Check if the directory `data` is writeable by the web server user
4. With your browser go to <http://yourpersonalserver/kanboard>
5. The default login and password is **admin/admin**
6. Start to use the software
7. Don't forget to change your password!
-The data folder is used to store:
+The `data` folder is used to store:
- Sqlite database: `db.sqlite`
- Debug file: `debug.log` (if debug mode enabled)
- Uploaded files: `files/*`
- Image thumbnails: `files/thumbnails/*`
-People who are using a remote database (Mysql/Postgresql) and a remote file storage (Aws S3 or similar) don't necessarily need to have a persistent local data folder or to change the permission.
+People who are using a remote database (Mysql/Postgresql) and a remote object storage (Aws S3 or similar) don't necessarily need to have a persistent local data folder or to change the permission.
-From the repository (development version)
------------------------------------------
+From the git repository (development version)
+---------------------------------------------
You must install [composer](https://getcomposer.org/) to use this method.
-1. `git clone https://github.com/fguillot/kanboard.git`
+1. `git clone https://github.com/kanboard/kanboard.git`
2. `composer install --no-dev`
3. Go to the third step just above
@@ -42,6 +42,7 @@ If you would like to install Kanboard outside of the web server document root, y
```bash
.
├── assets -> ../kanboard/assets
+├── cli -> ../kanboard/cli
├── doc -> ../kanboard/doc
├── favicon.ico -> ../kanboard/favicon.ico
├── index.php -> ../kanboard/index.php
@@ -53,7 +54,16 @@ The `.htaccess` is optional because its content can be included directly in the
You can also define a custom location for the plugins and files folders by changing the [config file](config.markdown).
-Optional installation
+
+Other Database Types
+--------------------
+
+Kanboard supports Mysql and Postgres as alternative to Sqlite.
+
+- [Mysql configuration](mysql-configuration.markdown)
+- [Postgres configuration](postgresql-configuration.markdown)
+
+Optional Installation
---------------------
- Some features of Kanboard require that you run [a daily background job](cronjob.markdown) (Reports and analytics)
@@ -63,4 +73,4 @@ Security
--------
- Don't forget to change the default user/password
-- Don't allow everybody to access to the directory `data` from the URL. There is already a `.htaccess` for Apache but nothing for other web servers.
+- Don't allow everybody to access to the directory `data` from the URL. There is already a `.htaccess` for Apache and a `web.config` file for IIS but nothing for other web servers.
diff --git a/doc/kanban-vs-todo-and-scrum.markdown b/doc/en_US/kanban-vs-todo-and-scrum.markdown
index 4e083ff8..ea97811c 100644
--- a/doc/kanban-vs-todo-and-scrum.markdown
+++ b/doc/en_US/kanban-vs-todo-and-scrum.markdown
@@ -11,8 +11,8 @@ Kanban vs Todo lists
### Kanban:
-- Multiple phases, each column represent a step
-- Bring focus and avoid multitasking because you can set a work in progress limit per column
+- Multiple phases, each column represents a step
+- Bring focus and avoid multitasking by setting a work-in-progress limit per column
Kanban vs Scrum
---------------
@@ -23,15 +23,15 @@ Kanban vs Scrum
- Do not allow changes during the iteration
- Estimation is required
- Uses velocity as default metric
-- Scrum board is cleared between each sprint
+- Scrum board is cleared between sprints
- Scrum has pre-defined roles like scrum master, product owners and the team
- A lot of meetings: planning, backlogs grooming, daily stand-up, retrospective
### Kanban:
- Continuous flow
-- Changes can be made at anytime
+- Changes can be made at any time
- Estimation is optional
- Use lead and cycle time to measure performance
- Kanban board is persistent
-- Kanban doesn't impose strict constraints or meetings, process is more flexible
+- Kanban doesn't impose strict constraints or meetings; process is more flexible
diff --git a/doc/keyboard-shortcuts.markdown b/doc/en_US/keyboard-shortcuts.markdown
index 71612415..71612415 100644
--- a/doc/keyboard-shortcuts.markdown
+++ b/doc/en_US/keyboard-shortcuts.markdown
diff --git a/doc/ldap-authentication.markdown b/doc/en_US/ldap-authentication.markdown
index e994c149..e994c149 100644
--- a/doc/ldap-authentication.markdown
+++ b/doc/en_US/ldap-authentication.markdown
diff --git a/doc/ldap-configuration-examples.markdown b/doc/en_US/ldap-configuration-examples.markdown
index a8ad2b61..a8ad2b61 100644
--- a/doc/ldap-configuration-examples.markdown
+++ b/doc/en_US/ldap-configuration-examples.markdown
diff --git a/doc/ldap-group-sync.markdown b/doc/en_US/ldap-group-sync.markdown
index b519146b..b519146b 100644
--- a/doc/ldap-group-sync.markdown
+++ b/doc/en_US/ldap-group-sync.markdown
diff --git a/doc/ldap-parameters.markdown b/doc/en_US/ldap-parameters.markdown
index 80decc67..80decc67 100644
--- a/doc/ldap-parameters.markdown
+++ b/doc/en_US/ldap-parameters.markdown
diff --git a/doc/ldap-profile-picture.markdown b/doc/en_US/ldap-profile-picture.markdown
index 4798f645..4798f645 100644
--- a/doc/ldap-profile-picture.markdown
+++ b/doc/en_US/ldap-profile-picture.markdown
diff --git a/doc/link-labels.markdown b/doc/en_US/link-labels.markdown
index f7c55a9d..f2f8701e 100644
--- a/doc/link-labels.markdown
+++ b/doc/en_US/link-labels.markdown
@@ -3,9 +3,9 @@ Link settings
Task relations can be changed from the application settings (**Settings > Link settings**)
-![Link Labels](https://kanboard.net/screenshots/documentation/link-labels.png)
+![Link Labels](screenshots/link-labels.png)
Each label may have an opposite label defined.
If there is no opposite, the label is considered bidirectionnal.
-![Link Label Creation](https://kanboard.net/screenshots/documentation/link-label-creation.png)
+![Link Label Creation](screenshots/link-label-creation.png)
diff --git a/doc/mysql-configuration.markdown b/doc/en_US/mysql-configuration.markdown
index 9d60271c..c199353e 100644
--- a/doc/mysql-configuration.markdown
+++ b/doc/en_US/mysql-configuration.markdown
@@ -1,23 +1,23 @@
-Mysql/MariaDB Configuration
+MySQL/MariaDB Configuration
===========================
By default Kanboard use Sqlite to stores its data.
-However it's possible to use Mysql or MariaDB instead of Sqlite.
+However it's possible to use MySQL or MariaDB instead of Sqlite.
Requirements
------------
-- Mysql server
+- MySQL server
- The PHP extension `pdo_mysql` installed
-Note: Kanboard is tested with **Mysql >= 5.5 and MariaDB >= 10.0**
+Note: Kanboard is tested with **MySQL >= 5.5 and MariaDB >= 10.0**
-Mysql configuration
+MySQL configuration
-------------------
### Create a database
-The first step is to create a database on your Mysql server.
+The first step is to create a database on your MySQL server.
By example, you can do that with the command line mysql client:
```sql
@@ -31,10 +31,10 @@ The file `config.php` should contains those values:
```php
<?php
-// We choose to use Mysql instead of Sqlite
+// We choose to use MySQL instead of Sqlite
define('DB_DRIVER', 'mysql');
-// Mysql parameters
+// MySQL parameters
define('DB_USERNAME', 'REPLACE_ME');
define('DB_PASSWORD', 'REPLACE_ME');
define('DB_HOSTNAME', 'REPLACE_ME');
@@ -58,15 +58,15 @@ The file `app/Schema/Sql/mysql.sql` is a SQL dump that represents the last versi
SSL configuration
-----------------
-These parameters have to be defined to enable the Mysql SSL connection:
+These parameters have to be defined to enable the MySQL SSL connection:
```php
-// Mysql SSL key
+// MySQL SSL key
define('DB_SSL_KEY', '/path/to/client-key.pem');
-// Mysql SSL certificate
+// MySQL SSL certificate
define('DB_SSL_CERT', '/path/to/client-cert.pem');
-// Mysql SSL CA
+// MySQL SSL CA
define('DB_SSL_CA', '/path/to/ca-cert.pem');
```
diff --git a/doc/nice-urls.markdown b/doc/en_US/nice-urls.markdown
index bfea719d..a054e85d 100644
--- a/doc/nice-urls.markdown
+++ b/doc/en_US/nice-urls.markdown
@@ -85,6 +85,51 @@ In your Kanboard `config.php`:
define('ENABLE_URL_REWRITE', true);
```
+Another example with Kanboard in a subfolder:
+
+```
+server {
+ listen 443 ssl default_server;
+ listen [::]:443 ssl default_server;
+
+ root /var/www/html;
+ index index.php index.html index.htm;
+ server_name _;
+
+ location / {
+ try_files $uri $uri/ =404;
+ }
+
+ location ^~ /kanboard {
+
+ location /kanboard {
+ try_files $uri $uri/ /kanboard/index.php$is_args$args;
+ }
+
+ location ~ ^/kanboard/(?:kanboard|config.php|config.default.php) {
+ deny all;
+ }
+
+ location ~* /kanboard/data {
+ deny all;
+ }
+
+ location ~ \.php(?:$|/) {
+ fastcgi_split_path_info ^(.+\.php)(/.+)$;
+ fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
+ fastcgi_param PATH_INFO $fastcgi_path_info;
+ fastcgi_param HTTPS on; # Use only if HTTPS is configured
+ include fastcgi_params;
+ fastcgi_pass unix:/var/run/php5-fpm.sock;
+ }
+
+ location ~ /kanboard/\.ht {
+ deny all;
+ }
+ }
+}
+```
+
Adapt the example above according to your own configuration.
IIS configuration example
diff --git a/doc/notifications.markdown b/doc/en_US/notifications.markdown
index b072df0b..824ed7fd 100644
--- a/doc/notifications.markdown
+++ b/doc/en_US/notifications.markdown
@@ -15,7 +15,7 @@ Each user must enable the notifications in their profile: **User Profile > Notif
To receive email notifications you need a valid email address in your profile and the application must be configured to send emails.
-![Notifications](https://kanboard.net/screenshots/documentation/notifications.png)
+![Notifications](screenshots/notifications.png)
You can choose your favorite notification method:
@@ -36,11 +36,11 @@ Web notifications
Web notifications are available from the dashboard or from the icon at the top:
-![Web Notifications Icon](https://kanboard.net/screenshots/documentation/web-notifications-icon.png)
+![Web Notifications Icon](screenshots/web-notifications-icon.png)
Notifications are shown in a list, so you can mark individual notification as read or everything.
-![Web Notifications](https://kanboard.net/screenshots/documentation/web-notifications.png)
+![Web Notifications](screenshots/web-notifications.png)
In this way you can still get notified without having to receive emails.
diff --git a/doc/performances.markdown b/doc/en_US/performances.markdown
index 7b006bf8..7b006bf8 100644
--- a/doc/performances.markdown
+++ b/doc/en_US/performances.markdown
diff --git a/doc/plugin-authentication-architecture.markdown b/doc/en_US/plugin-authentication-architecture.markdown
index d357c933..d357c933 100644
--- a/doc/plugin-authentication-architecture.markdown
+++ b/doc/en_US/plugin-authentication-architecture.markdown
diff --git a/doc/plugin-authentication.markdown b/doc/en_US/plugin-authentication.markdown
index 06fdfd8d..e1ca6f01 100644
--- a/doc/plugin-authentication.markdown
+++ b/doc/en_US/plugin-authentication.markdown
@@ -35,6 +35,6 @@ This object must implement the interface `Kanboard\Core\User\UserProviderInterfa
Example of authentication plugins
---------------------------------
-- [Authentication providers included in Kanboard](https://github.com/fguillot/kanboard/tree/master/app/Auth)
+- [Authentication providers included in Kanboard](https://github.com/kanboard/kanboard/tree/master/app/Auth)
- [Reverse-Proxy Authentication with LDAP support](https://github.com/kanboard/plugin-reverse-proxy-ldap)
- [SMS Two-Factor Authentication](https://github.com/kanboard/plugin-sms-2fa)
diff --git a/doc/plugin-authorization-architecture.markdown b/doc/en_US/plugin-authorization-architecture.markdown
index 24acee17..24acee17 100644
--- a/doc/plugin-authorization-architecture.markdown
+++ b/doc/en_US/plugin-authorization-architecture.markdown
diff --git a/doc/plugin-automatic-actions.markdown b/doc/en_US/plugin-automatic-actions.markdown
index b309fac9..b309fac9 100644
--- a/doc/plugin-automatic-actions.markdown
+++ b/doc/en_US/plugin-automatic-actions.markdown
diff --git a/doc/plugin-avatar-provider.markdown b/doc/en_US/plugin-avatar-provider.markdown
index 62941e5c..62941e5c 100644
--- a/doc/plugin-avatar-provider.markdown
+++ b/doc/en_US/plugin-avatar-provider.markdown
diff --git a/doc/plugin-directory.markdown b/doc/en_US/plugin-directory.markdown
index 385e3360..385e3360 100644
--- a/doc/plugin-directory.markdown
+++ b/doc/en_US/plugin-directory.markdown
diff --git a/doc/plugin-events.markdown b/doc/en_US/plugin-events.markdown
index f4db8ff3..f4db8ff3 100644
--- a/doc/plugin-events.markdown
+++ b/doc/en_US/plugin-events.markdown
diff --git a/doc/plugin-external-link.markdown b/doc/en_US/plugin-external-link.markdown
index 36252aff..36252aff 100644
--- a/doc/plugin-external-link.markdown
+++ b/doc/en_US/plugin-external-link.markdown
diff --git a/doc/en_US/plugin-external-tasks.markdown b/doc/en_US/plugin-external-tasks.markdown
new file mode 100644
index 00000000..0701ea38
--- /dev/null
+++ b/doc/en_US/plugin-external-tasks.markdown
@@ -0,0 +1,76 @@
+External Task Providers
+=======================
+
+Kanboard can be used to manage tasks stored in another system.
+For example, an external system can be a bug tracker or any kind of ticketing software.
+In this way, you can use Kanboard to manage external tasks in the same way as native tasks.
+
+Workflow
+--------
+
+Creation:
+
+1. The end-user select an alternative task provider during the task creation
+2. The external task provider expose a form to the user to be able to fetch the external task
+3. The external task is retrieved from the other system
+4. A customized form is shown to the user
+
+Visualization:
+
+When the task detail page is opened, Kanboard will load asynchronously the remote task.
+This information might be cached by the plugin to improve the loading time.
+
+Modification:
+
+Optionally, the plugin can offer a custom form to save extra information to the external system.
+
+Interfaces
+----------
+
+External task providers must implements at least two interfaces:
+
+- `Kanboard\Core\ExternalTask\ExternalTaskProviderInterface`
+- `Kanboard\Core\ExternalTask\ExternalTaskInterface`
+
+### ExternalTaskProviderInterface
+
+| Method | Usage |
+|----------------------------------------------------|-----------------------------------------------------------------|
+| `getName()` | Get provider name (label) |
+| `fetch()` | Retrieve task from external system or cache |
+| `save($uri, array $formValues, array &$formErrors)`| Save external task to another system |
+| `getImportFormTemplate()` | Get task import template name |
+| `getCreationFormTemplate()` | Get creation form template |
+| `getModificationFormTemplate()` | Get modification form template |
+| `getViewTemplate()` | Get task view template name |
+| `buildTaskUri(array $formValues)` | Build external task URI based on import form values |
+
+### ExternalTaskInterface
+
+| Method | Usage |
+|---------------------------------------------------|-----------------------------------------------------------------|
+| `getUri()` | Return Uniform Resource Identifier for the task |
+| `getFormValues()` | Return a dict to populate the task form |
+
+
+Exceptions
+----------
+
+The plugin may raise an exception if something goes wrong:
+
+- `Kanboard\Core\ExternalTask\ExternalTaskException`: Generic error related to the external system
+- `Kanboard\Core\ExternalTask\AccessForbiddenException`: Access not allowed by the external system
+- `Kanboard\Core\ExternalTask\NotFoundException`: External task not found
+
+Provider Registration
+---------------------
+
+```php
+class Plugin extends Base
+{
+ public function initialize()
+ {
+ $this->externalTaskManager->register(new MyExternalTaskProvider());
+ }
+}
+```
diff --git a/doc/plugin-group-provider.markdown b/doc/en_US/plugin-group-provider.markdown
index 4d73b740..31c61aaf 100644
--- a/doc/plugin-group-provider.markdown
+++ b/doc/en_US/plugin-group-provider.markdown
@@ -52,4 +52,4 @@ $groupManager->register(new MyCustomLdapBackendGroupProvider($this->container));
Examples
--------
-- [Group providers included in Kanboard (LDAP and Database)](https://github.com/fguillot/kanboard/tree/master/app/Group)
+- [Group providers included in Kanboard (LDAP and Database)](https://github.com/kanboard/kanboard/tree/master/app/Group)
diff --git a/doc/plugin-helpers.markdown b/doc/en_US/plugin-helpers.markdown
index 8cc6b42a..d65467f8 100644
--- a/doc/plugin-helpers.markdown
+++ b/doc/en_US/plugin-helpers.markdown
@@ -6,7 +6,7 @@ Helper skeleton:
```php
<?php
-namespace Kanboard\Plugin\MyPlugin\Helper\MyHelper;
+namespace Kanboard\Plugin\MyPlugin\Helper;
use Kanboard\Core\Base;
diff --git a/doc/en_US/plugin-hooks.markdown b/doc/en_US/plugin-hooks.markdown
new file mode 100644
index 00000000..23750ff7
--- /dev/null
+++ b/doc/en_US/plugin-hooks.markdown
@@ -0,0 +1,263 @@
+Plugin Hooks
+============
+
+Application Hooks
+-----------------
+
+Hooks can extend, replace, filter data or change the default behavior. Each hook is identified with a unique name, example: `controller:calendar:user:events`
+
+### Listen on hook events
+
+In your `initialize()` method you need to call the method `on()` of the class `Kanboard\Core\Plugin\Hook`:
+
+```php
+$this->hook->on('hook_name', $callable);
+```
+
+The first argument is the name of the hook and the second is a PHP callable.
+
+### Hooks executed only once
+
+Some hooks can have only one listener:
+
+#### model:subtask-time-tracking:calculate:time-spent
+
+- Override time spent calculation when sub-task timer is stopped
+- Arguments:
+ - `$user_id` (integer)
+ - `$start` (DateTime)
+ - `$end` (DateTime)
+
+### Merge hooks
+
+"Merge hooks" act in the same way as the function `array_merge`. The hook callback must return an array. This array will be merged with the default one.
+
+Example to add events in the user calendar:
+
+```php
+class Plugin extends Base
+{
+ public function initialize()
+ {
+ $container = $this->container;
+
+ $this->hook->on('controller:calendar:user:events', function($user_id, $start, $end) use ($container) {
+ $model = new SubtaskForecast($container);
+ return $model->getCalendarEvents($user_id, $end); // Return new events
+ });
+ }
+}
+```
+
+Example to override default values for task forms:
+
+```php
+class Plugin extends Base
+{
+ public function initialize()
+ {
+ $this->hook->on('controller:task:form:default', function (array $default_values) {
+ return empty($default_values['score']) ? array('score' => 4) : array();
+ });
+ }
+}
+```
+
+List of merging hooks:
+
+#### controller:task:form:default
+
+- Override default values for task forms
+- Arguments:
+ - `$default_values`: actual default values (array)
+
+#### controller:calendar:project:events
+
+- Add more events to the project calendar
+- Arguments:
+ - `$project_id` (integer)
+ - `$start` Calendar start date (string, ISO-8601 format)
+ - `$end` Calendar` end date (string, ISO-8601 format)
+
+#### controller:calendar:user:events
+
+- Add more events to the user calendar
+- Arguments:
+ - `$user_id` (integer)
+ - `$start` Calendar start date (string, ISO-8601 format)
+ - `$end` Calendar end date (string, ISO-8601 format)
+
+Asset Hooks
+-----------
+
+Asset hooks can be used to add a new stylesheet easily or a new JavaScript file in the layout. You can use this feature to create a theme and override all Kanboard default styles.
+
+Example to add a new stylesheet:
+
+```php
+<?php
+
+namespace Kanboard\Plugin\Css;
+
+use Kanboard\Core\Plugin\Base;
+
+class Plugin extends Base
+{
+ public function initialize()
+ {
+ $this->hook->on('template:layout:css', array('template' => 'plugins/Css/skin.css'));
+ }
+}
+```
+
+List of asset Hooks:
+
+- `template:layout:css`
+- `template:layout:js`
+
+
+Reference hooks
+---------------
+
+Reference hooks are passing a variable by reference.
+
+Example:
+
+```php
+$this->hook->on('formatter:board:query', function (\PicoDb\Table &query) {
+ $query->eq('color_id', 'red');
+});
+```
+
+The code above will show only tasks in red on the board.
+
+List of reference hooks:
+
+| Hook | Description |
+|--------------------------------------------|---------------------------------------------------------------|
+| `formatter:board:query` | Alter database query before rendering board |
+| `pagination:dashboard:task:query` | Alter database query for tasks pagination on the dashboard |
+| `pagination:dashboard:subtask:query` | Alter database query for subtasks pagination on the dashboard |
+| `model:task:creation:prepare` | Alter form values before to save a task |
+| `model:task:modification:prepare` | Alter form values before to edit a task |
+| `model:color:get-list` | Alter default_colors values |
+| `model:subtask:modification:prepare` | Alter form values before to save a subtask |
+| `model:subtask:creation:prepare` | Alter form values before to edit a subtask |
+
+
+Template Hooks
+--------------
+
+Template hooks allow to add new content in existing templates.
+
+Example to add new content in the dashboard sidebar:
+
+```php
+$this->template->hook->attach('template:dashboard:sidebar', 'myplugin:dashboard/sidebar');
+```
+
+Example to attach a template with local variables:
+
+```php
+$this->template->hook->attach('template:dashboard:sidebar', 'myplugin:dashboard/sidebar', array(
+ 'variable' => 'foobar',
+));
+```
+
+Example to attach a template with a callable:
+
+```php
+$this->template->hook->attach('template:dashboard:sidebar', 'myplugin:dashboard/sidebar', function($hook_param1, $hook_param2) {
+ return array('new_template_variable' => 'foobar'); // Inject a new variable into the plugin template
+});
+```
+
+This call is usually defined in the `initialize()` method.
+The first argument is name of the hook and the second argument is the template name.
+
+Template names prefixed with the plugin name and colon indicate the location of the template.
+
+Example with `myplugin:dashboard/sidebar`:
+
+- `myplugin` is the name of your plugin (lowercase)
+- `dashboard/sidebar` is the template name
+- On the filesystem, the plugin will be located here: `plugins\Myplugin\Template\dashboard\sidebar.php`
+- Templates are written in pure PHP (don't forget to escape data)
+
+Template names without prefix are core templates.
+
+List of template hooks:
+
+| Hook | Description |
+|-----------------------------------------------------------|----------------------------------------------------|
+| `template:analytic:sidebar` | Sidebar on analytic pages |
+| `template:app:filters-helper:before` | Filter helper dropdown (top) |
+| `template:app:filters-helper:after` | Filter helper dropdown (bottom) |
+| `template:auth:login-form:before` | Login page (top) |
+| `template:auth:login-form:after` | Login page (bottom) |
+| `template:board:private:task:before-title` | Task in private board: before title |
+| `template:board:private:task:after-title` | Task in private board: after title |
+| `template:board:public:task:before-title` | Task in public board: before title |
+| `template:board:public:task:after-title` | Task in public board: after title |
+| `template:board:task:footer` | Task in board: footer |
+| `template:board:task:icons` | Task in board: tooltip icon |
+| `template:board:column:dropdown` | Dropdown menu in board columns |
+| `template:board:column:header` | Board column header |
+| `template:board:tooltip:subtasks:header:before-assignee` | Header of Subtask table on tootip before Assignee |
+| `template:board:tooltip:subtasks:rows` | Column on row of Subtask table on tooltip |
+| `template:config:sidebar` | Sidebar on settings page |
+| `template:config:application ` | Application settings form |
+| `template:config:email` | Email settings page |
+| `template:config:integrations` | Integration page in global settings |
+| `template:dashboard:sidebar` | Sidebar on dashboard page |
+| `template:dashboard:show` | Main page of the dashboard |
+| `template:dashboard:subtasks:header:before-timetracking` | Header of Subtask table before Time Tracking |
+| `template:dashboard:subtasks:rows` | Column on row of Subtask table of the dashboard |
+| `template:header:dropdown` | Page header dropdown menu (user avatar icon) |
+| `template:header:creation-dropdown` | Page header dropdown menu (plus icon) |
+| `template:layout:head` | Page layout `<head/>` tag |
+| `template:layout:top` | Page layout top header |
+| `template:layout:bottom` | Page layout footer |
+| `template:project:dropdown` | "Actions" menu on left in different project views |
+| `template:project:header:before` | Project filters (before) |
+| `template:project:header:after` | Project filters (after) |
+| `template:project:integrations` | Integration page in projects settings |
+| `template:project:sidebar` | Sidebar in project settings |
+| `template:project-user:sidebar` | Sidebar on project user overview page |
+| `template:project-list:menu:before` | Project list: before menu entries |
+| `template:project-list:menu:after` | Project list: after menu entries |
+| `template:project-overview:before-description` | Project overview: before description |
+| `template:task:layout:top` | Task layout top (after page header) |
+| `template:task:details:top` | Task summary top |
+| `template:task:details:bottom` | Task summary bottom |
+| `template:task:details:first-column` | Task summary first column |
+| `template:task:details:second-column` | Task summary second column |
+| `template:task:details:third-column` | Task summary third column |
+| `template:task:details:fourth-column` | Task summary fourth column |
+| `template:task:dropdown` | Task dropdown menu in listing pages |
+| `template:task:sidebar:actions` | Sidebar on task page (section actions) |
+| `template:task:sidebar:information` | Sidebar on task page (section information) |
+| `template:task:form:first-column` | 1st column in task form |
+| `template:task:form:second-column` | 2nd column in task form |
+| `template:task:form:third-column` | 3nd column in task form |
+| `template:task:show:top ` | Show task page: top |
+| `template:task:show:bottom` | Show task page: bottom |
+| `template:task:show:before-description` | Show task page: before description |
+| `template:task:show:before-tasklinks` | Show task page: before tasklinks |
+| `template:task:show:before-subtasks` | Show task page: before subtasks |
+| `template:task:show:before-timetracking` | Show task page: before timetracking |
+| `template:task:show:before-attachments` | Show task page: before attachments |
+| `template:task:show:before-comments` | Show task page: before comments |
+| `template:subtask:form:create` | "Create Subtask" form |
+| `template:subtask:form:edit` | "Edit Subtask" form |
+| `template:subtask:table:header:before-timetracking` | Subtask table header before Time Tracking |
+| `template:subtask:table:rows` | Column on row of subtasks table |
+| `template:user:authentication:form` | "Edit authentication" form in user profile |
+| `template:user:create-remote:form` | "Create remote user" form |
+| `template:user:external` | "External authentication" page in user profile |
+| `template:user:integrations` | Integration page in user profile |
+| `template:user:sidebar:actions` | Sidebar in user profile (section actions) |
+| `template:user:sidebar:information` | Sidebar in user profile (section information) |
+
+
+Another template hooks can be added if necessary, just ask on the issue tracker.
diff --git a/doc/plugin-ldap-client.markdown b/doc/en_US/plugin-ldap-client.markdown
index 312eea71..312eea71 100644
--- a/doc/plugin-ldap-client.markdown
+++ b/doc/en_US/plugin-ldap-client.markdown
diff --git a/doc/plugin-mail-transports.markdown b/doc/en_US/plugin-mail-transports.markdown
index 33ce5e3b..33ce5e3b 100644
--- a/doc/plugin-mail-transports.markdown
+++ b/doc/en_US/plugin-mail-transports.markdown
diff --git a/doc/plugin-metadata.markdown b/doc/en_US/plugin-metadata.markdown
index 49da0ac1..49da0ac1 100644
--- a/doc/plugin-metadata.markdown
+++ b/doc/en_US/plugin-metadata.markdown
diff --git a/doc/plugin-notifications.markdown b/doc/en_US/plugin-notifications.markdown
index 868f6aef..868f6aef 100644
--- a/doc/plugin-notifications.markdown
+++ b/doc/en_US/plugin-notifications.markdown
diff --git a/doc/plugin-overrides.markdown b/doc/en_US/plugin-overrides.markdown
index 96a09e47..3b94bd60 100644
--- a/doc/plugin-overrides.markdown
+++ b/doc/en_US/plugin-overrides.markdown
@@ -40,3 +40,34 @@ You can still use the original template using the "kanboard:" prefix:
```php
<?= $this->render('kanboard:header') ?>
```
+
+Formatter Overrides
+-------------------
+
+Here an example to override formatter objects in Kanboard:
+
+```php
+class MyFormatter extends UserAutoCompleteFormatter
+{
+ public function format()
+ {
+ $users = parent::format();
+
+ foreach ($users as &$user) {
+ $user['label'] = 'something'; // Do something useful here
+ }
+
+ return $users;
+ }
+}
+
+class Plugin extends Base
+{
+ public function initialize()
+ {
+ $this->container['userAutoCompleteFormatter'] = $this->container->factory(function ($c) {
+ return new MyFormatter($c);
+ });
+ }
+}
+```
diff --git a/doc/plugin-registration.markdown b/doc/en_US/plugin-registration.markdown
index 74dc160a..5a4a6234 100644
--- a/doc/plugin-registration.markdown
+++ b/doc/en_US/plugin-registration.markdown
@@ -1,6 +1,28 @@
Plugin Registration
===================
+Project skeleton generator
+--------------------------
+
+You can use `cookiecutter` to create the project structure of your plugin automatically.
+
+Install Cookiecutter:
+
+```bash
+pip install -U cookiecutter
+```
+
+Run Kanboard cookiecutter:
+
+```bash
+cookiecutter gh:kanboard/cookiecutter-plugin
+plugin_name [My Plugin]: Some Plugin
+plugin_namespace [MyPlugin]: SomePlugin
+plugin_author [Plugin Author]: Me
+plugin_description [My plugin is awesome]:
+plugin_homepage [https://github.com/kanboard/plugin-myplugin]:
+```
+
Directory structure
-------------------
@@ -49,6 +71,15 @@ class Plugin extends Base
{
$this->template->hook->attach('template:layout:head', 'theme:layout/head');
}
+
+ public function getCompatibleVersion()
+ {
+ // Examples:
+ // >=1.0.37
+ // <1.0.37
+ // <=1.0.37
+ return '1.0.37';
+ }
}
```
@@ -71,6 +102,7 @@ Available methods from `Kanboard\Core\Plugin\Base`:
- `getPluginHomepage()`: Should return plugin Homepage (link)
- `setContentSecurityPolicy(array $rules)`: Override default HTTP CSP rules
- `onStartup()`: If present, this method is executed automatically when the event "app.bootstrap" is triggered
+- `getCompatibleVersion()`: You may want to specify the Kanboard version compatible with the plugin
Your plugin registration class can also inherit from Kanboard\Core\Base, that way you can access all classes and methods of Kanboard easily.
@@ -159,3 +191,23 @@ $this->cli->add(new MyCommand());
```
Read the library documentation for more information.
+
+Add new task filters
+--------------------
+
+Since the task lexer is a factory that returns a new instance each time,
+you have to extend the `taskLexer` container with the method `extend()` of Pimple.
+
+Here is a example:
+
+```php
+public function initialize()
+{
+ $this->container->extend('taskLexer', function($taskLexer, $c) {
+ $taskLexer->withFilter(TaskBoardDateFilter::getInstance($c)->setDateParser($c['dateParser']));
+ return $taskLexer;
+ });
+}
+```
+
+For the filter class implementation, there are several examples in the source code under the namespace `Kanboard\Filter`.
diff --git a/doc/plugin-routes.markdown b/doc/en_US/plugin-routes.markdown
index b943bb19..b943bb19 100644
--- a/doc/plugin-routes.markdown
+++ b/doc/en_US/plugin-routes.markdown
diff --git a/doc/plugin-schema-migrations.markdown b/doc/en_US/plugin-schema-migrations.markdown
index 36a57f37..36a57f37 100644
--- a/doc/plugin-schema-migrations.markdown
+++ b/doc/en_US/plugin-schema-migrations.markdown
diff --git a/doc/plugins.markdown b/doc/en_US/plugins.markdown
index 475bc249..ff9f7b8c 100644
--- a/doc/plugins.markdown
+++ b/doc/en_US/plugins.markdown
@@ -5,7 +5,7 @@ Note: The plugin API is **considered alpha** at the moment.
Plugins are useful to extend the core functionalities of Kanboard, adding features, creating themes or changing the default behavior.
-Plugin creators should specify explicitly the compatible versions of Kanboard. Internal code of Kanboard may change over time and your plugin must be tested with new versions. Always check the [ChangeLog](https://github.com/fguillot/kanboard/blob/master/ChangeLog) for breaking changes.
+Plugin creators should specify explicitly the compatible versions of Kanboard. Internal code of Kanboard may change over time and your plugin must be tested with new versions. Always check the [ChangeLog](https://github.com/kanboard/kanboard/blob/master/ChangeLog) for breaking changes.
- [Creating your plugin](plugin-registration.markdown)
- [Using plugin hooks](plugin-hooks.markdown)
@@ -23,6 +23,7 @@ Plugin creators should specify explicitly the compatible versions of Kanboard. I
- [Authorization architecture](plugin-authorization-architecture.markdown)
- [Custom group providers](plugin-group-provider.markdown)
- [External link providers](plugin-external-link.markdown)
+- [External tasks](plugin-external-tasks.markdown)
- [Add avatar providers](plugin-avatar-provider.markdown)
- [LDAP client](plugin-ldap-client.markdown)
diff --git a/doc/postgresql-configuration.markdown b/doc/en_US/postgresql-configuration.markdown
index 627e2ded..bab15313 100644
--- a/doc/postgresql-configuration.markdown
+++ b/doc/en_US/postgresql-configuration.markdown
@@ -6,11 +6,9 @@ By default, Kanboard use Sqlite to store its data but it's also possible to use
Requirements
------------
-- Postgresql server already installed and configured
+- Postgresql >= 9.3
- The PHP extension `pdo_pgsql` installed (Debian/Ubuntu: `apt-get install php5-pgsql`)
-Note: Kanboard is tested with **Postgresql 9.3 and 9.4**
-
Configuration
-------------
@@ -43,10 +41,10 @@ Note: You can also rename the template file `config.default.php` to `config.php`
For the first time, Kanboard will run one by one each database migration and this process can take some time according to your configuration.
-To avoid any issues or potential timeouts you can initialize the database directly by importing the SQL schema:
+To avoid any issues or potential timeouts, you can initialize the database directly by importing the SQL schema:
```bash
psql -U postgres my_database < app/Schema/Sql/postgres.sql
```
-The file `app/Schema/Sql/postgres.sql` is a sql dump that represents the last version of the database.
+The file `app/Schema/Sql/postgres.sql` is a SQL dump that represents the last version of the database.
diff --git a/doc/project-configuration.markdown b/doc/en_US/project-configuration.markdown
index 8041ccd0..0f9088d2 100644
--- a/doc/project-configuration.markdown
+++ b/doc/en_US/project-configuration.markdown
@@ -3,7 +3,7 @@ Project Settings
Go to the menu **Settings**, then choose **Project settings** on the left.
-![Project settings](https://kanboard.net/screenshots/documentation/project-settings.png)
+![Project settings](screenshots/project-settings.png)
### Default columns for new projects
@@ -27,7 +27,7 @@ When this option is enabled, a user can work with only one subtask at the time.
If another subtask have the status "in progress", the user will see this dialog box:
-![Subtask user restriction](https://kanboard.net/screenshots/documentation/subtask-user-restriction.png)
+![Subtask user restriction](screenshots/subtask-user-restriction.png)
### Trigger automatically subtask time tracking
diff --git a/doc/project-permissions.markdown b/doc/en_US/project-permissions.markdown
index 16586bc6..99e4caa2 100644
--- a/doc/project-permissions.markdown
+++ b/doc/en_US/project-permissions.markdown
@@ -1,8 +1,8 @@
Project Permissions
===================
-Each project is isolated and compartmented from each other.
-The project access must be allowed by the project owner.
+Each project is isolated from other projects.
+Project access must be allowed by the project owner.
Each user and each group can have a different role assigned.
There are 3 types of [roles for projects](roles.markdown):
@@ -13,11 +13,11 @@ There are 3 types of [roles for projects](roles.markdown):
Only administrators have access to everything.
-Roles assignation is available from **Project Settings > Permissions**:
+Role assignments are visible in **Project Settings > Permissions**:
![Project Permissions](screenshots/project-permissions.png)
-If you choose to allow everybody, all Kanboard users will be considered Project Member.
-That also means there is no role management anymore. Permission per user or per group cannot be applied.
+If you choose to allow everybody, all Kanboard users will be considered 'Project Member'.
+With this setting, role management will have no effect. Permission per user or per group cannot be applied.
-Private projects cannot define permission.
+Private projects cannot define permissions.
diff --git a/doc/project-types.markdown b/doc/en_US/project-types.markdown
index ae18b9ef..ae18b9ef 100644
--- a/doc/project-types.markdown
+++ b/doc/en_US/project-types.markdown
diff --git a/doc/project-views.markdown b/doc/en_US/project-views.markdown
index f52fd45e..f700055e 100644
--- a/doc/project-views.markdown
+++ b/doc/en_US/project-views.markdown
@@ -10,7 +10,7 @@ Board View
![Board view](screenshots/board-view.png)
-- With this view you can drag and drop tasks between columns easily.
+- With this view, you can drag and drop tasks between columns easily.
- You can also use the keyboard shortcut **"v b"** to switch to the board view.
- Tasks with a shadow are recently modified.
@@ -25,7 +25,7 @@ Calendar View
![Calendar view](screenshots/calendar-view.png)
-- With this view you can visualize tasks with a due date.
+- With this view, you can visualize tasks with a due date.
- Depending of the settings, you can also see tasks in progress.
- You can also use the keyboard shortcut **"v c"** to switch to the calendar view.
- [Learn more about calendar configuration](calendar-configuration.markdown)
@@ -33,9 +33,9 @@ Calendar View
List View
---------
-![List view](https://kanboard.net/screenshots/documentation/list-view.png)
+![List view](screenshots/list-view.png)
-- With this view all results of your search are displayed in a table.
+- With this view, all results of your search are displayed in a table.
- You can also use the keyboard shortcut **"v l"** to switch to the list view.
Gantt View
@@ -43,16 +43,16 @@ Gantt View
![Gantt view](screenshots/gantt-view.png)
-- The Gantt view displays tasks on a horizontal timeline
-- The start date and the due date are used to display the chart
-- For quick access, use the keyboard shortcut: **v g**
+- The Gantt view displays tasks on a horizontal timeline.
+- The start date and the due date are used to display the chart.
+- For quick access, use the keyboard shortcut: **v g**.
Project Overview
----------------
![Project overview](screenshots/project-view.png)
-- View the description of the project
-- Attach and upload documents to the project
-- View list of project members
-- View the last activities of the project
+- View the description of the project.
+- Attach and upload documents to the project.
+- View list of project members.
+- View the last activities of the project.
diff --git a/doc/recurring-tasks.markdown b/doc/en_US/recurring-tasks.markdown
index 820d95bc..d2385feb 100644
--- a/doc/recurring-tasks.markdown
+++ b/doc/en_US/recurring-tasks.markdown
@@ -12,7 +12,7 @@ Configuration
Go to the task view page or use the drop-down menu on the board, then select **Edit recurrence**.
-![Recurring task](https://kanboard.net/screenshots/documentation/recurring-tasks.png)
+![Recurring task](screenshots/recurring-tasks.png)
There are 3 triggers that currently create a new recurring task:
diff --git a/doc/removing-projects.markdown b/doc/en_US/removing-projects.markdown
index f9e622cb..0c4c5f36 100644
--- a/doc/removing-projects.markdown
+++ b/doc/en_US/removing-projects.markdown
@@ -1,10 +1,10 @@
Removing Projects
=================
-To remove a project, you must be manager of the project or administrator.
+To remove a project, you must be the manager of the project or an administrator.
Go to the **"Project settings"**, and from the menu on the left, at the bottom, choose **"Remove"**.
![Removing Projects](screenshots/project-remove.png)
-Removing a project remove all tasks that belongs to this project.
+Removing a project removes all tasks that belong to this project.
diff --git a/doc/requirements.markdown b/doc/en_US/requirements.markdown
index f6c9b309..957d8750 100644
--- a/doc/requirements.markdown
+++ b/doc/en_US/requirements.markdown
@@ -35,7 +35,7 @@ Which database to choose?
| Sqlite | Single user or small team (almost no concurrency) |
| Mysql/Postgres | Larger team, high-availability configuration |
-Do not use Sqlite on NFS mounts, use Sqlite only when you have a disk with fast I/O
+Do not use Sqlite on NFS mounts, only when you have a disk with fast I/O.
### Compatible Web Servers
@@ -59,7 +59,7 @@ Kanboard is pre-configured to work with Apache (URL rewriting).
### PHP Extensions Required
-| PHP Extensions required | Note |
+| PHP Extension | Note |
|----------------------------|-------------------------------|
| pdo_sqlite | Only if you use Sqlite |
| pdo_mysql | Only if you use Mysql/MariaDB |
@@ -76,7 +76,7 @@ Kanboard is pre-configured to work with Apache (URL rewriting).
### Optional PHP extensions
-| PHP Extensions required | Note |
+| PHP Extension | Note |
|----------------------------|--------------------------------------------|
| zip | Used to install plugins from Kanboard |
@@ -106,5 +106,3 @@ Always use a modern browser with the latest version if possible:
|-------------------|--------------------|
| Laptop or desktop | >= 1366 x 768 |
| Tablet | >= 1024 x 768 |
-
-Kanboard is not yet optimized for smartphones. It's working but the user interface is not really convenient to use.
diff --git a/doc/reverse-proxy-authentication.markdown b/doc/en_US/reverse-proxy-authentication.markdown
index 609bad7a..609bad7a 100644
--- a/doc/reverse-proxy-authentication.markdown
+++ b/doc/en_US/reverse-proxy-authentication.markdown
diff --git a/doc/roles.markdown b/doc/en_US/roles.markdown
index 181904d5..caa4380d 100644
--- a/doc/roles.markdown
+++ b/doc/en_US/roles.markdown
@@ -22,3 +22,5 @@ Each individual team project can assign a different role to each user and group:
| Project Manager | Can change project settings, access to the Gantt chart and reports |
| Project Member | Can create tasks and use the board |
| Project Viewer | Read-only access to the board and tasks |
+
+Custom project roles can be created to apply a set of restrictions to the users.
diff --git a/doc/rss.markdown b/doc/en_US/rss.markdown
index 9df19233..3e06f79c 100644
--- a/doc/rss.markdown
+++ b/doc/en_US/rss.markdown
@@ -13,7 +13,7 @@ Enable/disable project RSS feeds
Go to **Project settings > Public access**.
-![Disable public access](https://kanboard.net/screenshots/documentation/project-disable-sharing.png)
+![Disable public access](screenshots/project-disable-sharing.png)
Enable/disable user RSS feeds
--------------------------------
diff --git a/doc/en_US/screenshots b/doc/en_US/screenshots
new file mode 120000
index 00000000..2b5b059b
--- /dev/null
+++ b/doc/en_US/screenshots
@@ -0,0 +1 @@
+../screenshots \ No newline at end of file
diff --git a/doc/screenshots.markdown b/doc/en_US/screenshots.markdown
index b5cef646..e7f1b98c 100644
--- a/doc/screenshots.markdown
+++ b/doc/en_US/screenshots.markdown
@@ -8,11 +8,11 @@ This is especially useful for taking screenshots to describe an issue for exampl
You can add screenshots directly from the board by clicking on the dropdown menu or in the task view page.
-![Drop-down screenshot menu](https://kanboard.net/screenshots/documentation/dropdown-screenshot.png)
+![Drop-down screenshot menu](screenshots/dropdown-screenshot.png)
To add a new image, take your screenshot and paste with CTRL+V or Command+V:
-![Screenshot page](https://kanboard.net/screenshots/documentation/task-screenshot.png)
+![Screenshot page](screenshots/task-screenshot.png)
On Mac OS X, you can use those shortcuts to take screenshots:
diff --git a/doc/search.markdown b/doc/en_US/search.markdown
index ab8e0b5a..760551df 100644
--- a/doc/search.markdown
+++ b/doc/en_US/search.markdown
@@ -96,12 +96,20 @@ Attribute: **created**
Works in the same way as the modification date queries.
+### Search by start date
+
+Attribute: **started**
+
### Search by description
Attribute: **description** or **desc**
Example: `description:"text search"`
+### Search by completion
+
+Attribute: **completed**
+
### Search by external reference
The task reference is an external id of your task, by example a ticket number from another software.
diff --git a/doc/sharing-projects.markdown b/doc/en_US/sharing-projects.markdown
index 614c3230..400f7cb4 100644
--- a/doc/sharing-projects.markdown
+++ b/doc/en_US/sharing-projects.markdown
@@ -1,13 +1,13 @@
Sharing boards and tasks
========================
-By default, boards are private but it's possible to make a board public.
+By default, boards are private, but it's possible to make a board public.
-A public board **cannot be modified, it's a read-only access**.
-This access is protected by a random token, only people who have the right URL can see the board.
+A public board **cannot be modified: it has read-only access**.
+Access is protected by a random token. Only people who have the right URL can see the board.
Public boards are automatically refreshed every 60 seconds.
-Task details are also available in read-only.
+Task details are also available in read-only mode.
Usage examples:
@@ -21,7 +21,7 @@ Select your project, then click on "Public access" and finally click on the butt
![Enable public access](screenshots/project-enable-sharing.png)
-When the public access is enabled, a couple of links are generated:
+When public access is enabled, a couple of links are generated:
- Public board view
- RSS feed subscription link
@@ -29,7 +29,7 @@ When the public access is enabled, a couple of links are generated:
![Disable public access](screenshots/project-disable-sharing.png)
-You can also disable the public access whenever you want.
+You can also disable public access whenever you want.
-Each time, you enable or disable the public access a new random token is generated.
-**The previous links will not work anymore**.
+Each time you enable or disable public access, a new random token is generated.
+**The previous links will not work anymore**!
diff --git a/doc/en_US/solving-blank-page-issue.markdown b/doc/en_US/solving-blank-page-issue.markdown
new file mode 100644
index 00000000..c24e1f6c
--- /dev/null
+++ b/doc/en_US/solving-blank-page-issue.markdown
@@ -0,0 +1,7 @@
+I get a blank page after installing or upgrading Kanboard
+=========================================================
+
+- Check if you have installed all requirements on your server
+- Check the PHP and Apache error logs
+- Check if the files have the correct permissions
+- If you use an aggressive OPcode caching, reload your web-server or php-fpm
diff --git a/doc/en_US/solving-database-migration-issues.markdown b/doc/en_US/solving-database-migration-issues.markdown
new file mode 100644
index 00000000..ddd39db6
--- /dev/null
+++ b/doc/en_US/solving-database-migration-issues.markdown
@@ -0,0 +1,23 @@
+Solving Database Migration Issues
+=================================
+
+- SQL migrations are executed automatically when you upgrade Kanboard to a new version
+- For Postgres and Mysql, the current schema version number is stored in the table `schema_version` and for Sqlite this is stored in the variable `user_version
+- Migrations are defined in the file `app/Schema/<DatabaseType>.php`
+- Each function is a migration
+- Each migration is executed in a transaction
+- If migration generate an error, a rollback is performed
+
+When upgrading:
+
+- Always backup your data
+- Do not run migrations in parallel from multiple processes
+
+If you got the error "Unable to run SQL migrations [...]", here are the steps to fix it manually:
+
+1. Open the file corresponding to your database `app/Schema/Sqlite.php` or `app/Schema/Mysql.php`
+2. Go to the failed migration function
+3. Execute manually the SQL queries defined in the function
+4. If you encounter an error, report the issue to the bug tracker with the exact SQL error
+5. When all SQL statements of the migration are executed, update the schema version number
+6. Run other migrations
diff --git a/doc/en_US/solving-session-issue-windows-iis-ie.markdown b/doc/en_US/solving-session-issue-windows-iis-ie.markdown
new file mode 100644
index 00000000..1ad3124b
--- /dev/null
+++ b/doc/en_US/solving-session-issue-windows-iis-ie.markdown
@@ -0,0 +1,19 @@
+I'm not able to login with Internet Explorer and Microsoft IIS
+==============================================================
+
+If you are not able to login and always get the error **"Username or password required"** even if you have entered the right credentials,
+that means there is a problem with the session.
+
+For example, this is a known issue if you meet these criteria:
+
+- You are using a domain name with an underscore: `kanboard_something.mycompany.tld`
+- You are using Microsoft Windows Server and IIS
+- Your browser is Internet Explorer
+
+Solution: **Do not use underscore in the domain name because this is not a valid domain name**.
+
+Explanation: Internet Explorer doesn't accept cookies with a domain name with underscores because it's not valid.
+
+Reference:
+
+- https://support.microsoft.com/en-us/kb/316112
diff --git a/doc/sqlite-database.markdown b/doc/en_US/sqlite-database.markdown
index 0a6a0ab6..0a6a0ab6 100644
--- a/doc/sqlite-database.markdown
+++ b/doc/en_US/sqlite-database.markdown
diff --git a/doc/subtasks.markdown b/doc/en_US/subtasks.markdown
index 89348bb4..721e28eb 100644
--- a/doc/subtasks.markdown
+++ b/doc/en_US/subtasks.markdown
@@ -15,22 +15,22 @@ Creating subtasks
From the task view, on left sidebar click on **Add a subtask**:
-![Add a subtask](https://kanboard.net/screenshots/documentation/add-subtask.png)
+![Add a subtask](screenshots/add-subtask.png)
You can also add a subtask quickly by entering only the title:
-![Add a subtask from the task view](https://kanboard.net/screenshots/documentation/add-subtask-shortcut.png)
+![Add a subtask from the task view](screenshots/add-subtask-shortcut.png)
Change subtask status
---------------------
When you click on the subtask title the status change:
-![Subtask in progress](https://kanboard.net/screenshots/documentation/subtask-status-inprogress.png)
+![Subtask in progress](screenshots/subtask-status-inprogress.png)
The icon before the title is updated according to the status.
-![Subtask done](https://kanboard.net/screenshots/documentation/subtask-status-done.png)
+![Subtask done](screenshots/subtask-status-done.png)
Note: When the task is closed, all subtasks are changed to the status **Done**.
diff --git a/doc/en_US/suse-installation.markdown b/doc/en_US/suse-installation.markdown
new file mode 100644
index 00000000..2af773f7
--- /dev/null
+++ b/doc/en_US/suse-installation.markdown
@@ -0,0 +1,14 @@
+Installation on OpenSuse
+========================
+
+OpenSuse Leap 42.1
+------------------
+
+```bash
+sudo zypper install php5 php5-sqlite php5-gd php5-json php5-mcrypt php5-mbstring php5-openssl
+cd /srv/www/htdocs
+sudo wget https://kanboard.net/kanboard-latest.zip
+sudo unzip kanboard-latest.zip
+sudo chown -R wwwrun /srv/www/htdocs/kanboard
+sudo rm kanboard-latest.zip
+```
diff --git a/doc/swimlanes.markdown b/doc/en_US/swimlanes.markdown
index f76336b9..776af138 100644
--- a/doc/swimlanes.markdown
+++ b/doc/en_US/swimlanes.markdown
@@ -29,4 +29,3 @@ You can also disable and change the position of the different swimlanes.
- The default swimlane is always on the top but you can hide it.
- Inactive swimlanes are not shown on the board.
- **Removing a swimlane doesn't remove tasks assigned to it**, those tasks will be moved to the default swimlane.
-
diff --git a/doc/syntax-guide.markdown b/doc/en_US/syntax-guide.markdown
index 28d0e297..28d0e297 100644
--- a/doc/syntax-guide.markdown
+++ b/doc/en_US/syntax-guide.markdown
diff --git a/doc/tags.markdown b/doc/en_US/tags.markdown
index 26b3169d..26b3169d 100644
--- a/doc/tags.markdown
+++ b/doc/en_US/tags.markdown
diff --git a/doc/task-links.markdown b/doc/en_US/task-links.markdown
index cd36ed29..7c8c1add 100644
--- a/doc/task-links.markdown
+++ b/doc/en_US/task-links.markdown
@@ -1,9 +1,11 @@
-Task Links
-==========
+Internal Task Links
+===================
Tasks can be linked together with pre-defined relationships:
-![Task Links](https://kanboard.net/screenshots/documentation/task-links.png)
+![Task Links](screenshots/internal-task-links.png)
+
+This is also possible to link tasks across projects.
The default relationships are:
diff --git a/doc/tests.markdown b/doc/en_US/tests.markdown
index 59177f87..59177f87 100644
--- a/doc/tests.markdown
+++ b/doc/en_US/tests.markdown
diff --git a/doc/time-tracking.markdown b/doc/en_US/time-tracking.markdown
index a8444b5d..1a648573 100644
--- a/doc/time-tracking.markdown
+++ b/doc/en_US/time-tracking.markdown
@@ -6,7 +6,7 @@ Time tracking information can be defined at the task level or at the subtask lev
Task time tracking
------------------
-![Task time tracking](https://kanboard.net/screenshots/documentation/task-time-tracking.png)
+![Task time tracking](screenshots/task-time-tracking.png)
Tasks have two fields:
@@ -18,7 +18,7 @@ These values represent hours of work and have to be set manually.
Subtask time tracking
---------------------
-![Subtask time tracking](https://kanboard.net/screenshots/documentation/subtask-time-tracking.png)
+![Subtask time tracking](screenshots/subtask-time-tracking.png)
Subtasks also have the fields "time spent" and "time estimated".
@@ -31,13 +31,13 @@ Kanboard records the time between each subtask status change in a separate table
The breakdown of all records is visible in the task view page:
-![Task timesheet](https://kanboard.net/screenshots/documentation/task-timesheet.png)
+![Task timesheet](screenshots/task-timesheet.png)
For each subtask, the timer can be stopped/started at any time:
-![Subtask timer](https://kanboard.net/screenshots/documentation/subtask-timer.png)
+![Subtask timer](screenshots/subtask-timer.png)
- The timer doesn't depend of the subtask status
- Each time you start the timer a new record is created in the time tracking table
- Each time you stop the clock the end date is recorded in the time tracking table
-- The calculated time spent is rounded to the nearest quarter
+- The calculated time spent is rounded to the nearest quarter (only for Kanboard < 1.0.32)
diff --git a/doc/en_US/transitions.markdown b/doc/en_US/transitions.markdown
new file mode 100644
index 00000000..383dfa1d
--- /dev/null
+++ b/doc/en_US/transitions.markdown
@@ -0,0 +1,14 @@
+Task Transitions
+================
+
+Each movement of a task between columns is recorded in the database.
+
+![Task Transitions](screenshots/task-transitions.png)
+
+Available from the task view, you can see that information:
+
+- Date of the action
+- Source column
+- Destination column
+- Executor (users that moves the task)
+- Time spent in the origin column
diff --git a/doc/translations.markdown b/doc/en_US/translations.markdown
index 074d9ae3..66fd2a4c 100644
--- a/doc/translations.markdown
+++ b/doc/en_US/translations.markdown
@@ -50,7 +50,7 @@ How to find missing translations in the applications?
From a terminal, run the following command:
```bash
-./kanboard locale:compare
+./cli locale:compare
```
All missing and unused translations are displayed on the screen.
@@ -62,7 +62,7 @@ How to synchronize translation files?
From a Unix shell run this command:
```bash
-./kanboard locale:sync
+./cli locale:sync
```
The French translation is used a reference to other locales.
diff --git a/doc/ubuntu-installation.markdown b/doc/en_US/ubuntu-installation.markdown
index f95fac79..196b506a 100644
--- a/doc/ubuntu-installation.markdown
+++ b/doc/en_US/ubuntu-installation.markdown
@@ -1,5 +1,5 @@
-How to install Kanboard on Ubuntu?
-==================================
+Kanboard Installation on Ubuntu
+================================
Ubuntu Xenial 16.04 LTS
-----------------------
diff --git a/doc/en_US/update.markdown b/doc/en_US/update.markdown
new file mode 100644
index 00000000..76cac27a
--- /dev/null
+++ b/doc/en_US/update.markdown
@@ -0,0 +1,53 @@
+Upgrade Kanboard to a new version
+=================================
+
+Most of the time, upgrading Kanboard to a newer version is seamless.
+The process could be summarized to simply copy your data folder to the new Kanboard folder.
+Kanboard will run database migrations automatically for you.
+
+Important things to do before updating
+--------------------------------------
+
+- **Always make a backup of your data before upgrading**
+- **Check that your backup is valid!**
+- Check again
+- Always read the [change history](https://github.com/kanboard/kanboard/blob/master/ChangeLog) to check for breaking changes
+- Stop the worker if you use it
+- Put the web server in maintenance mode to avoid people use the software while upgrading
+
+From the archive (stable version)
+---------------------------------
+
+1. Decompress the new archive
+2. Copy the `data` folder into the newly uncompressed directory
+3. Copy your custom `config.php` if you have one
+4. If you have installed some plugins, use the latest version
+5. Make sure the directory `data` is writeable by your web server user
+6. Test
+7. Remove your old Kanboard directory
+
+From the repository (development version)
+-----------------------------------------
+
+1. `git pull`
+2. `composer install --no-dev`
+3. Login and check if everything is ok
+
+Note: This method will install the **current development version**, use at your own risk.
+
+Running SQL migrations manually
+-------------------------------
+
+By default, SQL migrations are executed automatically. The schema version is checked at each request.
+In this way, when you upgrade Kanboard to another version, the database schema is updated for you.
+
+You may want to disable this behaviour is case you have a specific configuration.
+For example, if multiple processes try to apply the migrations in the same time you might have some concurrency problems even if each operation is executed inside a transaction.
+
+To disable this feature, set the parameter `DB_RUN_MIGRATIONS` at `false` in your [config file](config.markdown).
+
+When you will have to upgrade Kanboard, run this command:
+
+```bash
+./cli db:migrate
+```
diff --git a/doc/usage-examples.markdown b/doc/en_US/usage-examples.markdown
index 5efc6f9a..c200e082 100644
--- a/doc/usage-examples.markdown
+++ b/doc/en_US/usage-examples.markdown
@@ -8,7 +8,7 @@ Software development
- Backlog
- Ready
-- Work in progress
+- Work-in-progress
- To be validated
- Validated
- Deployed in production
@@ -18,7 +18,7 @@ Bug tracking
- Reported
- Confirmed
-- Work in progress
+- Work-in-progress
- Tested
- Fixed
diff --git a/doc/user-management.markdown b/doc/en_US/user-management.markdown
index 3c53db99..3c53db99 100644
--- a/doc/user-management.markdown
+++ b/doc/en_US/user-management.markdown
diff --git a/doc/user-mentions.markdown b/doc/en_US/user-mentions.markdown
index 156456d6..4ce47054 100644
--- a/doc/user-mentions.markdown
+++ b/doc/en_US/user-mentions.markdown
@@ -6,7 +6,7 @@ Kanboard offers the possibility to send notifications when someone is mentioned.
If you need to get the attention of someone in a comment or in a task, use the @ symbol followed by their username.
Kanboard will automatically suggest a list of users:
-![User Mention](screenshots/mention-autocomplete.png)
+![User Mention](screenshots/user-mentions.png)
- At the moment, only the task description and the comment text area have this feature enabled.
- The user mentions works only during tasks and comments creation.
diff --git a/doc/user-types.markdown b/doc/en_US/user-types.markdown
index 8c88a7dd..8c88a7dd 100644
--- a/doc/user-types.markdown
+++ b/doc/en_US/user-types.markdown
diff --git a/doc/vagrant.markdown b/doc/en_US/vagrant.markdown
index 864f37b8..8fb05b20 100644
--- a/doc/vagrant.markdown
+++ b/doc/en_US/vagrant.markdown
@@ -4,7 +4,7 @@ Run Kanboard with Vagrant
You can try Kanboard with Vagrant very easily:
- Clone the project from the git repository
-- Run `vagrant up`
+- Execute `vagrant up`
- You can access to the application by using the URL `http://localhost:8001/`
The virtual machine is based on Ubuntu 14.04 with PHP 5.5.
diff --git a/doc/en_US/webhooks.markdown b/doc/en_US/webhooks.markdown
new file mode 100644
index 00000000..e43ab9ce
--- /dev/null
+++ b/doc/en_US/webhooks.markdown
@@ -0,0 +1,487 @@
+Webhooks
+========
+
+Webhooks are useful to perform actions with external applications.
+
+- Webhooks can be used to create a task by calling a simple URL (You can also do that with the API)
+- An external URL can be called automatically when an event occurs in Kanboard (task creation, comment updated, etc)
+
+How to write a web hook receiver?
+---------------------------------
+
+All internal events of Kanboard can be sent to an external URL.
+
+- The web hook URL has to be defined in **Settings > Webhooks > Webhook URL**.
+- When an event is triggered Kanboard calls the pre-defined URL automatically
+- The data are encoded in JSON format and sent with a POST HTTP request
+- The web hook token is also sent as a query string parameter, so you can check if the request really comes from Kanboard.
+- **Your custom URL must answer in less than 1 second**, those requests are synchronous (PHP limitation) and that can slow down the user interface if your script is too slow!
+
+### List of supported events
+
+- comment.create
+- comment.update
+- comment.delete
+- file.create
+- task.move.project
+- task.move.column
+- task.move.position
+- task.move.swimlane
+- task.update
+- task.create
+- task.close
+- task.open
+- task.assignee_change
+- subtask.update
+- subtask.create
+- subtask.delete
+- task_internal_link.create_update
+- task_internal_link.delete
+
+### Example of HTTP request
+
+```
+POST https://your_webhook_url/?token=WEBHOOK_TOKEN_HERE
+User-Agent: Kanboard Webhook
+Content-Type: application/json
+Connection: close
+
+{
+ "event_name": "task.move.column",
+ "event_data": {
+ "task_id": "4",
+ "task": {
+ "id": "4",
+ "reference": "",
+ "title": "My task",
+ "description": "",
+ "date_creation": "1469314356",
+ "date_completed": null,
+ "date_modification": "1469315422",
+ "date_due": "1469491200",
+ "date_started": "0",
+ "time_estimated": "0",
+ "time_spent": "0",
+ "color_id": "green",
+ "project_id": "1",
+ "column_id": "1",
+ "owner_id": "1",
+ "creator_id": "1",
+ "position": "1",
+ "is_active": "1",
+ "score": "0",
+ "category_id": "0",
+ "priority": "0",
+ "swimlane_id": "0",
+ "date_moved": "1469315422",
+ "recurrence_status": "0",
+ "recurrence_trigger": "0",
+ "recurrence_factor": "0",
+ "recurrence_timeframe": "0",
+ "recurrence_basedate": "0",
+ "recurrence_parent": null,
+ "recurrence_child": null,
+ "category_name": null,
+ "swimlane_name": null,
+ "project_name": "Demo Project",
+ "default_swimlane": "Default swimlane",
+ "column_title": "Backlog",
+ "assignee_username": "admin",
+ "assignee_name": null,
+ "creator_username": "admin",
+ "creator_name": null
+ },
+ "changes": {
+ "src_column_id": "2",
+ "dst_column_id": "1",
+ "date_moved": "1469315398"
+ },
+ "project_id": "1",
+ "position": 1,
+ "column_id": "1",
+ "swimlane_id": "0",
+ "src_column_id": "2",
+ "dst_column_id": "1",
+ "date_moved": "1469315398",
+ "recurrence_status": "0",
+ "recurrence_trigger": "0"
+ }
+}
+```
+
+All event payloads are in the following format:
+
+```json
+{
+ "event_name": "model.event_name",
+ "event_data": {
+ "key1": "value1",
+ "key2": "value2",
+ ...
+ }
+}
+```
+
+The `event_data` values are not necessary normalized across events.
+
+### Examples of event payloads
+
+Task creation:
+
+```json
+{
+ "event_name": "task.create",
+ "event_data": {
+ "task_id": 5,
+ "task": {
+ "id": "5",
+ "reference": "",
+ "title": "My new task",
+ "description": "",
+ "date_creation": "1469315481",
+ "date_completed": null,
+ "date_modification": "1469315481",
+ "date_due": "0",
+ "date_started": "0",
+ "time_estimated": "0",
+ "time_spent": "0",
+ "color_id": "orange",
+ "project_id": "1",
+ "column_id": "2",
+ "owner_id": "1",
+ "creator_id": "1",
+ "position": "1",
+ "is_active": "1",
+ "score": "3",
+ "category_id": "0",
+ "priority": "2",
+ "swimlane_id": "0",
+ "date_moved": "1469315481",
+ "recurrence_status": "0",
+ "recurrence_trigger": "0",
+ "recurrence_factor": "0",
+ "recurrence_timeframe": "0",
+ "recurrence_basedate": "0",
+ "recurrence_parent": null,
+ "recurrence_child": null,
+ "category_name": null,
+ "swimlane_name": null,
+ "project_name": "Demo Project",
+ "default_swimlane": "Default swimlane",
+ "column_title": "Ready",
+ "assignee_username": "admin",
+ "assignee_name": null,
+ "creator_username": "admin",
+ "creator_name": null
+ }
+ }
+}
+```
+
+Task modification:
+
+```json
+{
+ "event_name": "task.update",
+ "event_data": {
+ "task_id": "5",
+ "task": {
+ "id": "5",
+ "reference": "",
+ "title": "My new task",
+ "description": "New description",
+ "date_creation": "1469315481",
+ "date_completed": null,
+ "date_modification": "1469315531",
+ "date_due": "1469836800",
+ "date_started": "0",
+ "time_estimated": "0",
+ "time_spent": "0",
+ "color_id": "purple",
+ "project_id": "1",
+ "column_id": "2",
+ "owner_id": "1",
+ "creator_id": "1",
+ "position": "1",
+ "is_active": "1",
+ "score": "3",
+ "category_id": "0",
+ "priority": "2",
+ "swimlane_id": "0",
+ "date_moved": "1469315481",
+ "recurrence_status": "0",
+ "recurrence_trigger": "0",
+ "recurrence_factor": "0",
+ "recurrence_timeframe": "0",
+ "recurrence_basedate": "0",
+ "recurrence_parent": null,
+ "recurrence_child": null,
+ "category_name": null,
+ "swimlane_name": null,
+ "project_name": "Demo Project",
+ "default_swimlane": "Default swimlane",
+ "column_title": "Ready",
+ "assignee_username": "admin",
+ "assignee_name": null,
+ "creator_username": "admin",
+ "creator_name": null
+ },
+ "changes": {
+ "description": "New description",
+ "color_id": "purple",
+ "date_due": 1469836800
+ }
+ }
+}
+```
+
+Task update events have a field called `changes` that contains updated values.
+
+Comment creation:
+
+```json
+{
+ "event_name": "comment.create",
+ "event_data": {
+ "comment": {
+ "id": "1",
+ "task_id": "5",
+ "user_id": "1",
+ "date_creation": "1469315727",
+ "comment": "My comment.",
+ "reference": null,
+ "username": "admin",
+ "name": null,
+ "email": null,
+ "avatar_path": null
+ },
+ "task": {
+ "id": "5",
+ "reference": "",
+ "title": "My new task",
+ "description": "New description",
+ "date_creation": "1469315481",
+ "date_completed": null,
+ "date_modification": "1469315531",
+ "date_due": "1469836800",
+ "date_started": "0",
+ "time_estimated": "0",
+ "time_spent": "0",
+ "color_id": "purple",
+ "project_id": "1",
+ "column_id": "2",
+ "owner_id": "1",
+ "creator_id": "1",
+ "position": "1",
+ "is_active": "1",
+ "score": "3",
+ "category_id": "0",
+ "priority": "2",
+ "swimlane_id": "0",
+ "date_moved": "1469315481",
+ "recurrence_status": "0",
+ "recurrence_trigger": "0",
+ "recurrence_factor": "0",
+ "recurrence_timeframe": "0",
+ "recurrence_basedate": "0",
+ "recurrence_parent": null,
+ "recurrence_child": null,
+ "category_name": null,
+ "swimlane_name": null,
+ "project_name": "Demo Project",
+ "default_swimlane": "Default swimlane",
+ "column_title": "Ready",
+ "assignee_username": "admin",
+ "assignee_name": null,
+ "creator_username": "admin",
+ "creator_name": null
+ }
+ }
+}
+```
+
+Subtask creation:
+
+```json
+{
+ "event_name": "subtask.create",
+ "event_data": {
+ "subtask": {
+ "id": "1",
+ "title": "My subtask",
+ "status": "0",
+ "time_estimated": "0",
+ "time_spent": "0",
+ "task_id": "5",
+ "user_id": "1",
+ "position": "1",
+ "username": "admin",
+ "name": null,
+ "timer_start_date": 0,
+ "status_name": "Todo",
+ "is_timer_started": false
+ },
+ "task": {
+ "id": "5",
+ "reference": "",
+ "title": "My new task",
+ "description": "New description",
+ "date_creation": "1469315481",
+ "date_completed": null,
+ "date_modification": "1469315531",
+ "date_due": "1469836800",
+ "date_started": "0",
+ "time_estimated": "0",
+ "time_spent": "0",
+ "color_id": "purple",
+ "project_id": "1",
+ "column_id": "2",
+ "owner_id": "1",
+ "creator_id": "1",
+ "position": "1",
+ "is_active": "1",
+ "score": "3",
+ "category_id": "0",
+ "priority": "2",
+ "swimlane_id": "0",
+ "date_moved": "1469315481",
+ "recurrence_status": "0",
+ "recurrence_trigger": "0",
+ "recurrence_factor": "0",
+ "recurrence_timeframe": "0",
+ "recurrence_basedate": "0",
+ "recurrence_parent": null,
+ "recurrence_child": null,
+ "category_name": null,
+ "swimlane_name": null,
+ "project_name": "Demo Project",
+ "default_swimlane": "Default swimlane",
+ "column_title": "Ready",
+ "assignee_username": "admin",
+ "assignee_name": null,
+ "creator_username": "admin",
+ "creator_name": null
+ }
+ }
+}
+```
+
+File upload:
+
+```json
+{
+ "event_name": "task.file.create",
+ "event_data": {
+ "file": {
+ "id": "1",
+ "name": "kanboard-latest.zip",
+ "path": "tasks/5/6f32893e467e76671965b1ec58c06a2440823752",
+ "is_image": "0",
+ "task_id": "5",
+ "date": "1469315613",
+ "user_id": "1",
+ "size": "4907308"
+ },
+ "task": {
+ "id": "5",
+ "reference": "",
+ "title": "My new task",
+ "description": "New description",
+ "date_creation": "1469315481",
+ "date_completed": null,
+ "date_modification": "1469315531",
+ "date_due": "1469836800",
+ "date_started": "0",
+ "time_estimated": "0",
+ "time_spent": "0",
+ "color_id": "purple",
+ "project_id": "1",
+ "column_id": "2",
+ "owner_id": "1",
+ "creator_id": "1",
+ "position": "1",
+ "is_active": "1",
+ "score": "3",
+ "category_id": "0",
+ "priority": "2",
+ "swimlane_id": "0",
+ "date_moved": "1469315481",
+ "recurrence_status": "0",
+ "recurrence_trigger": "0",
+ "recurrence_factor": "0",
+ "recurrence_timeframe": "0",
+ "recurrence_basedate": "0",
+ "recurrence_parent": null,
+ "recurrence_child": null,
+ "category_name": null,
+ "swimlane_name": null,
+ "project_name": "Demo Project",
+ "default_swimlane": "Default swimlane",
+ "column_title": "Ready",
+ "assignee_username": "admin",
+ "assignee_name": null,
+ "creator_username": "admin",
+ "creator_name": null
+ }
+ }
+}
+```
+
+Task link creation:
+
+```json
+{
+ "event_name": "task_internal_link.create_update",
+ "event_data": {
+ "task_link": {
+ "id": "2",
+ "opposite_task_id": "5",
+ "task_id": "4",
+ "link_id": "3",
+ "label": "is blocked by",
+ "opposite_link_id": "2"
+ },
+ "task": {
+ "id": "4",
+ "reference": "",
+ "title": "My task",
+ "description": "",
+ "date_creation": "1469314356",
+ "date_completed": null,
+ "date_modification": "1469315422",
+ "date_due": "1469491200",
+ "date_started": "0",
+ "time_estimated": "0",
+ "time_spent": "0",
+ "color_id": "green",
+ "project_id": "1",
+ "column_id": "1",
+ "owner_id": "1",
+ "creator_id": "1",
+ "position": "1",
+ "is_active": "1",
+ "score": "0",
+ "category_id": "0",
+ "priority": "0",
+ "swimlane_id": "0",
+ "date_moved": "1469315422",
+ "recurrence_status": "0",
+ "recurrence_trigger": "0",
+ "recurrence_factor": "0",
+ "recurrence_timeframe": "0",
+ "recurrence_basedate": "0",
+ "recurrence_parent": null,
+ "recurrence_child": null,
+ "category_name": null,
+ "swimlane_name": null,
+ "project_name": "Demo Project",
+ "default_swimlane": "Default swimlane",
+ "column_title": "Backlog",
+ "assignee_username": "admin",
+ "assignee_name": null,
+ "creator_username": "admin",
+ "creator_name": null
+ }
+ }
+}
+```
diff --git a/doc/what-is-kanban.markdown b/doc/en_US/what-is-kanban.markdown
index 5d2eed02..de8377b2 100644
--- a/doc/what-is-kanban.markdown
+++ b/doc/en_US/what-is-kanban.markdown
@@ -11,22 +11,22 @@ There are only two constraints imposed by Kanban:
Visualize your workflow
-----------------------
-- Your work is displayed on a board, you have a clear overview of your project
+- Your work is displayed on a board so that you have a clear overview of your project
- Each column represents a step in your workflow
-Bring focus and avoid multitasking
+Limit your work in progress
----------------------------------
-
-- Each phase can have a work in progress limits
-- Limits are great to identify bottlenecks
+- Encourages focus by avoiding multitasking
+- Each phase can have work-in-progress limits
+- Limits help identify bottlenecks
- Limits avoid working on too many tasks at the same time
-Measure performance and improvement
------------------------------------
+Performance Measurement
+=======================
Kanban uses lead and cycle times to measure performance:
-- **Lead time**: Time between the task is created and completed
-- **Cycle time**: Time between the task is started and completed
+- **Lead time**: Time between task creation and completion
+- **Cycle time**: Time between task start and completion
-For example, you may have a lead time of 100 days and only have to work 1 hour to complete the task.
+For example, you may have a lead time of 100 days but only have to work 1 hour to complete the task.
diff --git a/doc/windows-apache-installation.markdown b/doc/en_US/windows-apache-installation.markdown
index 27b6812e..27b6812e 100644
--- a/doc/windows-apache-installation.markdown
+++ b/doc/en_US/windows-apache-installation.markdown
diff --git a/doc/windows-iis-installation.markdown b/doc/en_US/windows-iis-installation.markdown
index 26ce178f..26ce178f 100644
--- a/doc/windows-iis-installation.markdown
+++ b/doc/en_US/windows-iis-installation.markdown
diff --git a/doc/worker.markdown b/doc/en_US/worker.markdown
index fba66138..89becacd 100644
--- a/doc/worker.markdown
+++ b/doc/en_US/worker.markdown
@@ -19,7 +19,7 @@ This feature is optional and require the installation of a queue daemon on your
- To install Beanstalk, you can simply use the package manager of your Linux distribution
- Install the [Kanboard plugin for Beanstalk](https://kanboard.net/plugin/beanstalk)
-- Start the worker with the Kanboard command line tool: `./kanboard worker`
+- Start the worker with the Kanboard command line tool: `./cli worker`
### RabbitMQ
@@ -27,9 +27,9 @@ This feature is optional and require the installation of a queue daemon on your
- Follow the official documentation of RabbitMQ for the installation and the configuration
- Install the [Kanboard plugin for RabbitMQ](https://kanboard.net/plugin/rabbitmq)
-- Start the worker with the Kanboard command line tool: `./kanboard worker`
+- Start the worker with the Kanboard command line tool: `./cli worker`
### Notes
- You should start the Kanboard worker with a process supervisor (systemd, upstart or supervisord)
-- The process must be have access to the data folder if you store files on the local filesystem and have Sqlite
+- The process must have access to the data folder if you store files on the local filesystem or use Sqlite
diff --git a/doc/es_ES/2fa.markdown b/doc/es_ES/2fa.markdown
new file mode 100644
index 00000000..57abdc33
--- /dev/null
+++ b/doc/es_ES/2fa.markdown
@@ -0,0 +1,33 @@
+Autentificación Two-Factor
+===========================
+
+Cada usuario puede habilitar el [two-factor authentication](http://en.wikipedia.org/wiki/Two_factor_authentication).
+Antes de un logeo exitoso, un codigo one-time de (6 caracteres) se le pide a el usuaio para permitir el acceso a kanboard.
+
+Este codigo tiene que ser proporcionado por un software compatible generalmente instalado en tu smartphone
+
+Kanboard usa el [Time-based One-time Password Algorithm](http://en.wikipedia.org/wiki/Time-based_One-time_Password_Algorithm) definido en el [RFC 6238](http://tools.ietf.org/html/rfc6238).
+
+Existen muchos softwares compatibles con el standard del sistema TOTP.
+Por ejemplo, tu puedes usar estas aplicaciones libres y de open source:
+
+- [Google Authenticator](https://github.com/google/google-authenticator/) (Android, iOS, Blackberry)
+- [FreeOTP](https://fedorahosted.org/freeotp/) (Android, iOS)
+- [OATH Toolkit](http://www.nongnu.org/oath-toolkit/) (Utilidad en linea de comandos Unix/Linux
+
+Este sistema puede trabajar offline y no es necesario tener un telefono movil
+
+Instalacion
+------------
+
+1. Ir a tu perfil de usuario
+2. Click a la izquierda en **Two factor authentication** y selecionar la caja
+3. Una key secret es geradada para ti
+
+![2FA](screenshots/2fa.png)
+
+- Tienes que salvar la key secret en tu software TOTP. Si usas un smartphone, la solución sera mas fácil ya que puedes escanear el Qr code con FreeOTP o Google Authenticator.
+- Cada vez que abras una nueva session , un nuevo código se pedirá.
+- No se olvide de verficar el dispositivo antes de cerrar la sesión
+
+Una nueva key secret es generada cada vez que actives o desactives esta función \ No newline at end of file
diff --git a/doc/es_ES/analytics-tasks.markdown b/doc/es_ES/analytics-tasks.markdown
new file mode 100644
index 00000000..dff77b7c
--- /dev/null
+++ b/doc/es_ES/analytics-tasks.markdown
@@ -0,0 +1,24 @@
+Análisis para tareas
+===================
+
+Cada tarea tiene una sección de análisis disponible en el menu izquierdo en la vista de tarea.
+
+Espera y tiempo de ciclo
+-------------------
+
+![Lead and cycle time](screenshots/task-lead-cycle-time.png)
+
+- El tiempo de espera es el tiempo entre la creacion de la tarea y la fecha de finalización (Tarea cerrada).
+- El tiempo de ciclo es el tiempo entre la fecha de inicio y la fecha de finalización.
+- Si la tarea no esta cerrada el tiempo actual es usado en lugar de la fecha de finalización.
+- Si la fecha de inicio no es especificada, el tiempo de ciclo no es calculado.
+
+Nota: Puede configurar una accion automatica para definir la fecha de inicio automaticamente cuando se mueve una tarea a la columna de su eleccion.
+
+El tiempo invertido en cada columna
+---------------------------
+
+![Time spent into each column](screenshots/time-into-each-column.png)
+
+- Esta gráfico muestra el total de tiempo invertido en cada columna para la tarea.
+- El tiempo invertido es calculado hasta que la tarea es cerrada.
diff --git a/doc/es_ES/analytics.markdown b/doc/es_ES/analytics.markdown
new file mode 100644
index 00000000..6b9f7442
--- /dev/null
+++ b/doc/es_ES/analytics.markdown
@@ -0,0 +1,59 @@
+Analisis
+=========
+
+Cada proyecto tiene una sección de análisis . Dependiendo de cómo se está utilizando Kanboard, se puede ver estos informes :
+
+Repartición de usuarios
+-----------------------
+
+![User repartition](screenshots/user-repartition.png)
+
+Esta gráfico de sectores muestra el numero de tareas abiertas asignadas por usuario.
+
+Distribución de tareas
+----------------------
+
+![Task distribution](screenshots/task-distribution.png)
+
+Este gráfico de sectores da una visión general del numero de tareas abiertas por columnas.
+
+Diagrama de flujo acumulado
+---------------------------
+
+![Cumulative flow diagram](screenshots/cfd.png)
+
+- Este gráfico muesta el numerto de tareas acumuladas por cada columna a través del tiempo.
+- Cada día , el número total de tareas se registra para cada columna.
+- Si tu quiseras excluir las tareas cerradas, deberá cambiar las configuraciones globales del proyecto
+
+Nota: Necesitas tener al menos dos dias de datos para mirar la gráfica
+
+
+Gráfico Burn down
+
+El gráfico burn down esta dispobible para cada proyecto.
+
+ Esta gráfico es un represtación grafica del trabajo This chart is a graphical representation del trabajo laborado contra el tiempo.
+ Kanboard usa la complejidad o historia de puntos para generar este diagrama.
+ Todos los días, se calcula la suma de los puntos de la historia de cada columna .
+
+Average time spent into each column
+ This chart shows the average time spent into each column for the last 1000 tasks.
+
+ Kanboard uses the task transitions to calculate the data.
+ The time spent is calculated until the task is closed.
+
+
+Promedio de avances y ciclos de tiempos
+
+
+Este gráfico muestra el promedio de avances y ciclo de tiempos para las ultimas 1000 tareas fuera de tiempo.
+
+ El tiempo promedio es el tiempo entre la creación de la tarea y la fecha de finalización
+ El tiempo de ciclo se encuentra entre la fecha de inicio de la tarea especificada y fecha de la tarea finalizada
+ Si la tarea no es cerrada,
+ If the task is not closed, el momento actual se utiliza en lugar de la fecha de finalización.
+
+Esos indicadores se calculan y registran todos los días durante todo el proyecto.
+
+Nota: No olvidar ejecutar todos los dias el cronjob para tener estadísticas precisas.
diff --git a/doc/es_ES/api-action-procedures.markdown b/doc/es_ES/api-action-procedures.markdown
new file mode 100644
index 00000000..dc39fb93
--- /dev/null
+++ b/doc/es_ES/api-action-procedures.markdown
@@ -0,0 +1,245 @@
+API Procedimiento de acciones automaticas
+================================
+
+## getAvailableActions [Obtener acciones disponibles]
+
+- Propósito: **Obtener una lista de acciones automaticas disponibles**
+- Parametros: ninguno
+- Resultado satisfactorio: **list of actions**
+- Resultado fallido: **falso**
+
+Ejemplo de solicitud:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "getAvailableActions",
+ "id": 1217735483
+}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1217735483,
+ "result": {
+ "\Kanboard\Action\TaskLogMoveAnotherColumn": "Agregar un comentario moviendo las tareas entre columnas",
+ "\Kanboard\Action\TaskAssignColorUser": "Asignar un color especifico aun usuario",
+ "\Kanboard\Action\TaskAssignColorColumn": "Asignar un color cuando la tarea es movida a una columna especifica",
+ "\Kanboard\Action\TaskAssignCategoryColor": "Asignar automaticamente una categoria basado en un color",
+ "\Kanboard\Action\TaskAssignColorCategory": "Asignar automaticamente un color basado en una categoria",
+ "\Kanboard\Action\TaskAssignSpecificUser": "Asigar tareas a un usuario especifico",
+ "\Kanboard\Action\TaskAssignCurrentUser": "Asignar tareas a la persona que hace la acción",
+ "\Kanboard\Action\TaskUpdateStartDate": "Automaticamente actualizar la fecha de inicio",
+ "\Kanboard\Action\TaskAssignUser": "Cambiar asigando basado en un nombre de usuario [username] externo",
+ "\Kanboard\Action\TaskAssignCategoryLabel": "Cambiar la categoria basado en un etiqueta externa",
+ "\Kanboard\Action\TaskClose": "Cerrar una tarea",
+ "\Kanboard\Action\CommentCreation": "Crear un comentario desde un proveedor externo",
+ "\Kanboard\Action\TaskCreation": "Crear una tarea desde un proveedor externo",
+ "\Kanboard\Action\TaskDuplicateAnotherProject": "Duplicar la tarea a otro proyecto",
+ "\Kanboard\Action\TaskMoveColumnAssigned": "Mover la tarea a otra columna cuando es asiganada a un usuario",
+ "\Kanboard\Action\TaskMoveColumnUnAssigned": "Mover la tarea a otra columna cuando la asignación es limpiada",
+ "\Kanboard\Action\TaskMoveAnotherProject": "Mover la tarea a otro proyecto",
+ "\Kanboard\Action\TaskOpen": "Abrir una Tarea"
+ }
+}
+```
+
+## getAvailableActionEvents [obtener acciones de eventos disponibles]
+
+- Propósito: **Obtener una lista de acciones disponibles para los eventos**
+- Parametros: ninguno
+- Resultado satisfactorio: **lista de eventos**
+- Resultado fallído : **falso**
+
+Ejemplo de petición:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "getAvailableActionEvents",
+ "id": 2116665643
+}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 2116665643,
+ "result": {
+ "bitbucket.webhook.commit": "Bitbucket commit recibido",
+ "task.close": "Cerrando tarea",
+ "github.webhook.commit": "Github commit recibido",
+ "github.webhook.issue.assignee": "Github issue asignación cambiada",
+ "github.webhook.issue.closed": "Github issue cerrada",
+ "github.webhook.issue.commented": "Github issue comentario creado",
+ "github.webhook.issue.label": "Github issue etiqueta cambiada",
+ "github.webhook.issue.opened": "Github issue abierta",
+ "github.webhook.issue.reopened": "Github issue reabierto",
+ "gitlab.webhook.commit": "Gitlab commit recibido",
+ "gitlab.webhook.issue.closed": "Gitlab issue cerrado",
+ "gitlab.webhook.issue.opened": "Gitlab issue abierto",
+ "task.move.column": "Mover una tarea a otra columna",
+ "task.open": "Abrir una tarea abierta",
+ "task.assignee_change": "Tarea cambio de asignación",
+ "task.create": "Creación de tarea",
+ "task.create_update": "Creación de tarea o modificación",
+ "task.update": "Modificación de tarea"
+ }
+}
+```
+
+## getCompatibleActionEvents [Obtener acciones compatibles con eventos]
+
+- Propósito: **Obtener una lista de eventos compatibles con una acción**
+- Parametros:
+ - **action_name** (string, required)
+- Resultado satisfactorio: **lista de eventos**
+- Resultado fallido: **falso**
+
+Ejemplo de petición:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "getCompatibleActionEvents",
+ "id": 899370297,
+ "params": [
+ "\Kanboard\Action\TaskClose"
+ ]
+}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 899370297,
+ "result": {
+ "bitbucket.webhook.commit": "Bitbucket commit recibido",
+ "github.webhook.commit": "Github commit recibido",
+ "github.webhook.issue.closed": "Github issue cerrada",
+ "gitlab.webhook.commit": "Gitlab commit recibido",
+ "gitlab.webhook.issue.closed": "Gitlab issue cerrado",
+ "task.move.column": "Mover una tarea a otra columna"
+ }
+}
+```
+
+## getActions [Obtener acciones]
+
+- Propósito: **Obtener una lista de acciones para un proyecto**
+- Parametros:
+ - **project_id** (integer, required)
+- Resultado satisfactorio: **lista de propiedades de las acciones**
+- Resultado fallido: **falso**
+
+Ejemplo de petición:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "getActions",
+ "id": 1433237746,
+ "params": [
+ "1"
+ ]
+}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1433237746,
+ "result": [
+ {
+ "id" : "13",
+ "project_id" : "2",
+ "event_name" : "task.move.column",
+ "action_name" : "\Kanboard\Action\TaskAssignSpecificUser",
+ "params" : {
+ "column_id" : "5",
+ "user_id" : "1"
+ }
+ }
+ ]
+}
+```
+
+## createAction [Creación de acciones]
+
+- Proposito: **Crear una acción**
+- Parametros:
+ - **project_id** (integer, required)
+ - **event_name** (string, required)
+ - **action_name** (string, required)
+ - **params** (key/value parameters, required)
+- Resultados satisfactorios: **action_id**
+- Resultados fallidos: **falso**
+
+Ejemplo de petición:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "createAction",
+ "id": 1433237746,
+ "params": {
+ "project_id" : "2",
+ "event_name" : "task.move.column",
+ "action_name" : "\Kanboard\Action\TaskAssignSpecificUser",
+ "params" : {
+ "column_id" : "3",
+ "user_id" : "2"
+ }
+ }
+}
+```
+
+Ejemplo de respuestas:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1433237746,
+ "result": 14
+}
+```
+
+## removeAction [Eliminar una acción]
+
+- Proposito: **Eliminar una acción**
+- Parametros:
+ - **action_id** (integer, required)
+- Resultados satisfactorios: **true**
+- Resultados fallidos: **false**
+
+Ejemplo de petición:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "removeAction",
+ "id": 1510741671,
+ "params": [
+ 1
+ ]
+}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1510741671,
+ "result": true
+}
+```
diff --git a/doc/es_ES/api-authentication.markdown b/doc/es_ES/api-authentication.markdown
new file mode 100644
index 00000000..0612ffee
--- /dev/null
+++ b/doc/es_ES/api-authentication.markdown
@@ -0,0 +1,60 @@
+API de autentificación
+==================
+
+API endpoint
+------------
+
+URL: `https://YOUR_SERVER/jsonrpc.php`
+
+
+Metedo por default (HTTP Basico)
+---------------------------
+
+### Aplicación de credenciales
+
+- Username: `jsonrpc`
+- Password: API token para la configuración de pagina
+
+### Credencial de usuario
+
+- Usar el usuario real y su password
+
+La API usa la [Autentificación Basica del esquema HTTP descrita en el RFC2617](http://www.ietf.org/rfc/rfc2617.txt).
+
+
+Modificar el header HTTP
+------------------------
+
+Se puede usar un header HTTP alternativo para la autentificación si tu servidor es muy especifico
+
+configuration.
+
+- El nombre del header puede ser cualquier cosa que desee, por ejemplo `X-API-Auth`.
+- El valor del header `username:password` esta codificado en Base64.
+
+Configuración:
+
+1. Definir tu header personalizado en tu `config.php`: `define('API_AUTHENTICATION_HEADER', 'X-API-Auth');`
+2. Codificar las credenciales en Base64, ejemplo con PHP `base64_encode('jsonrpc:19ffd9709d03ce50675c3a43d1c49c1ac207f4bc45f06c5b2701fbdf8929');`
+3. Verificar con curl
+
+```bash
+curl \
+-H 'X-API-Auth: anNvbnJwYzoxOWZmZDk3MDlkMDNjZTUwNjc1YzNhNDNkMWM0OWMxYWMyMDdmNGJjNDVmMDZjNWIyNzAxZmJkZjg5Mjk=' \
+-d '{"jsonrpc": "2.0", "method": "getAllProjects", "id": 1}' \
+http://localhost/kanboard/jsonrpc.php
+```
+
+Error de autentificación
+-------------------------
+Authentication error
+--------------------
+
+Si las credenciales son , recibiras un `401 Not Authorized` y el correspondiente respuesta del JSON.
+If the credentials are wrong, you will receive a `401 Not Authorized` and the corresponding JSON response.
+
+
+Error de Autorización
+----------------------
+
+Si el usuario conectado no tiene permiso para acceder al recurso , recibirá un `403 Forbidden`.
diff --git a/doc/es_ES/api-board-procedures.markdown b/doc/es_ES/api-board-procedures.markdown
new file mode 100644
index 00000000..583e6449
--- /dev/null
+++ b/doc/es_ES/api-board-procedures.markdown
@@ -0,0 +1,158 @@
+API Procedimientos Del Tablero
+===============================
+
+## getBoard [obtener tablero]
+
+- Propósito: **Obtener todo la información necesaria para visualizar el tablero**
+- Parametros:
+ - **project_id** (integer, required)
+- Resultado satisfactorio : **Propiedades del tablero**
+- Resultado fallido: **Lista vacía**
+
+Ejemplo de solicitud:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "getBoard",
+ "id": 827046470,
+ "params": [
+ 1
+ ]
+}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 827046470,
+ "result": [
+ {
+ "id": 0,
+ "name": "Default swimlane",
+ "columns": [
+ {
+ "id": "1",
+ "title": "Backlog",
+ "position": "1",
+ "project_id": "1",
+ "task_limit": "0",
+ "description": "",
+ "tasks": [],
+ "nb_tasks": 0,
+ "score": 0
+ },
+ {
+ "id": "2",
+ "title": "Ready",
+ "position": "2",
+ "project_id": "1",
+ "task_limit": "0",
+ "description": "",
+ "tasks": [
+ {
+ "nb_comments":"0",
+ "nb_files":"0",
+ "nb_subtasks":"0",
+ "nb_completed_subtasks":"0",
+ "nb_links":"0",
+ "id":"2",
+ "reference":"",
+ "title":"Test",
+ "description":"",
+ "date_creation":"1430870507",
+ "date_modification":"1430870507",
+ "date_completed":null,
+ "date_due":"0",
+ "color_id":"yellow",
+ "project_id":"1",
+ "column_id":"2",
+ "swimlane_id":"0",
+ "owner_id":"0",
+ "creator_id":"1",
+ "position":"1",
+ "is_active":"1",
+ "score":"0",
+ "category_id":"0",
+ "date_moved":"1430870507",
+ "recurrence_status":"0",
+ "recurrence_trigger":"0",
+ "recurrence_factor":"0",
+ "recurrence_timeframe":"0",
+ "recurrence_basedate":"0",
+ "recurrence_parent":null,
+ "recurrence_child":null,
+ "assignee_username":null,
+ "assignee_name":null
+ }
+ ],
+ "nb_tasks": 1,
+ "score": 0
+ },
+ {
+ "id": "3",
+ "title": "Trabajo en progreso",
+ "position": "3",
+ "project_id": "1",
+ "task_limit": "0",
+ "description": "",
+ "tasks": [
+ {
+ "nb_comments":"0",
+ "nb_files":"0",
+ "nb_subtasks":"1",
+ "nb_completed_subtasks":"0",
+ "nb_links":"0",
+ "id":"1",
+ "reference":"",
+ "title":"Task with comment",
+ "description":"",
+ "date_creation":"1430783188",
+ "date_modification":"1430783188",
+ "date_completed":null,
+ "date_due":"0",
+ "color_id":"red",
+ "project_id":"1",
+ "column_id":"3",
+ "swimlane_id":"0",
+ "owner_id":"1",
+ "creator_id":"0",
+ "position":"1",
+ "is_active":"1",
+ "score":"0",
+ "category_id":"0",
+ "date_moved":"1430783191",
+ "recurrence_status":"0",
+ "recurrence_trigger":"0",
+ "recurrence_factor":"0",
+ "recurrence_timeframe":"0",
+ "recurrence_basedate":"0",
+ "recurrence_parent":null,
+ "recurrence_child":null,
+ "assignee_username":"admin",
+ "assignee_name":null
+ }
+ ],
+ "nb_tasks": 1,
+ "score": 0
+ },
+ {
+ "id": "4",
+ "title": "Done",
+ "position": "4",
+ "project_id": "1",
+ "task_limit": "0",
+ "description": "",
+ "tasks": [],
+ "nb_tasks": 0,
+ "score": 0
+ }
+ ],
+ "nb_columns": 4,
+ "nb_tasks": 2
+ }
+ ]
+}
+```
diff --git a/doc/es_ES/api-category-procedures.markdown b/doc/es_ES/api-category-procedures.markdown
new file mode 100644
index 00000000..eb5dc223
--- /dev/null
+++ b/doc/es_ES/api-category-procedures.markdown
@@ -0,0 +1,172 @@
+API Procedimientos de Categoría
+=======================
+
+## createCategory
+
+- Propósito: **Crea una nueva categoría**
+- Parámetros:
+- **project_id** (integer, required)
+ - **name** (string, required, must be unique for the given project)
+- Resultado en caso exitoso: **category_id**
+- Resultado en caso fallido: **false**
+
+Ejemplo de petición:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "createCategory",
+ "id": 541909890,
+ "params": {
+ "name": "Super category",
+ "project_id": 1
+ }
+}
+```
+
+Ejemplo de respuesta::
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 541909890,
+ "result": 4
+}
+```
+
+## getCategory
+
+- Propósito: **Obtiene información de la categoría**
+- Parámetros:
+ - **category_id** (integer, required)
+- Resultado en caso exitoso: **category properties**
+- Resultado en caso fallido: **null**
+
+Ejemplo de petición:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "getCategory",
+ "id": 203539163,
+ "params": {
+ "category_id": 1
+ }
+}
+```
+
+Ejemplo de respuesta::
+
+```json
+{
+
+ "jsonrpc": "2.0",
+ "id": 203539163,
+ "result": {
+ "id": "1",
+ "name": "Super category",
+ "project_id": "1"
+ }
+}
+```
+
+## getAllCategories
+
+- Propósito: **Obtiene todas las categorías disponibles**
+- Parámetros:
+ - **project_id** (integer, required)
+- Resultado en caso exitoso: **List of categories**
+- Resultado en caso fallido: **false**
+
+Ejemplo de petición:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "getAllCategories",
+ "id": 1261777968,
+ "params": {
+ "project_id": 1
+ }
+}
+```
+
+Ejemplo de respuesta::
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1261777968,
+ "result": [
+ {
+ "id": "1",
+ "name": "Super category",
+ "project_id": "1"
+ }
+ ]
+}
+```
+
+## updateCategory
+
+- Propósito: **Actualiza una categoría**
+- Parámetros:
+ - **id** (integer, required)
+ - **name** (string, required)
+- Resultado en caso exitoso: **true**
+- Resultado en caso fallido: **false**
+
+Ejemplo de petición:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "updateCategory",
+ "id": 570195391,
+ "params": {
+ "id": 1,
+ "name": "Renamed category"
+ }
+}
+```
+
+Ejemplo de respuesta::
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 570195391,
+ "result": true
+}
+```
+
+## removeCategory
+
+- Propósito: **Elimina una categoría**
+- Parámetros:
+ - **category_id** (integer)
+- Resultado en caso exitoso: **true**
+- Resultado en caso fallido: **false**
+
+Ejemplo de petición:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "removeCategory",
+ "id": 88225706,
+ "params": {
+ "category_id": 1
+ }
+}
+```
+
+Ejemplo de respuesta::
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 88225706,
+ "result": true
+}
+```
diff --git a/doc/es_ES/api-column-procedures.markdown b/doc/es_ES/api-column-procedures.markdown
new file mode 100644
index 00000000..ff9b853d
--- /dev/null
+++ b/doc/es_ES/api-column-procedures.markdown
@@ -0,0 +1,229 @@
+API Procedimientos de columna
+=====================
+
+## getColumns
+
+- Propósito: **Obtiene toda la información de columnas para un proyecto dado**
+- Parametros:
+ - **project_id** (integer, required)
+- Resultados en caso exitoso: **columns properties**
+- Resultados en caso fallido: **empty list**
+
+Ejemplo de petición:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "getColumns",
+ "id": 887036325,
+ "params": [
+ 1
+ ]
+}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 887036325,
+ "result": [
+ {
+ "id": "1",
+ "title": "Backlog",
+ "position": "1",
+ "project_id": "1",
+ "task_limit": "0"
+ },
+ {
+ "id": "2",
+ "title": "Ready",
+ "position": "2",
+ "project_id": "1",
+ "task_limit": "0"
+ },
+ {
+ "id": "3",
+ "title": "Work in progress",
+ "position": "3",
+ "project_id": "1",
+ "task_limit": "0"
+ }
+ ]
+}
+```
+
+## getColumn
+
+- Propósito: **Obtiene una columna individual**
+- Parametros:
+ - **column_id** (integer, required)
+- Resultados en caso exitoso: **column properties**
+- Resultados en caso fallido: **null**
+
+Ejemplo de petición:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "getColumn",
+ "id": 1242049935,
+ "params": [
+ 2
+ ]
+}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1242049935,
+ "result": {
+ "id": "2",
+ "title": "Youpi",
+ "position": "2",
+ "project_id": "1",
+ "task_limit": "5"
+ }
+}
+```
+
+## changeColumnPosition
+
+- Propósito: **Cambia la posición de columna**
+- Parametros:
+ - **project_id** (integer, required)
+ - **column_id** (integer, required)
+ - **position** (integer, required, must be >= 1)
+- Resultados en caso exitoso: **true**
+- Resultados en caso fallido: **false**
+
+Ejemplo de petición:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "changeColumnPosition",
+ "id": 99275573,
+ "params": [
+ 1,
+ 2,
+ 3
+ ]
+}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 99275573,
+ "result": true
+}
+```
+
+## updateColumn
+
+- Propósito: **Actualiza las propiedades de la columna**
+- Parametros:
+ - **column_id** (integer, required)
+ - **title** (string, required)
+ - **task_limit** (integer, optional)
+ - **description** (string, optional)
+- Resultados en caso exitoso: **true**
+- Resultados en caso fallido: **false**
+
+Ejemplo de petición:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "updateColumn",
+ "id": 480740641,
+ "params": [
+ 2,
+ "Boo",
+ 5
+ ]
+}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 480740641,
+ "result": true
+}
+```
+
+## addColumn
+
+- Propósito: **Agrega una nueva columna**
+- Parametros:
+ - **project_id** (integer, required)
+ - **title** (string, required)
+ - **task_limit** (integer, optional)
+ - **description** (string, optional)
+- Resultados en caso exitoso: **column_id**
+- Resultados en caso fallido: **false**
+
+Ejemplo de petición:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "addColumn",
+ "id": 638544704,
+ "params": [
+ 1,
+ "Boo"
+ ]
+}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 638544704,
+ "result": 5
+}
+```
+
+## removeColumn
+
+- Propósito: **Elimina una columna**
+- Parametros:
+ - **column_id** (integer, required)
+- Resultados en caso exitoso: **true**
+- Resultados en caso fallido: **false**
+
+Ejemplo de petición:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "removeColumn",
+ "id": 1433237746,
+ "params": [
+ 1
+ ]
+}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1433237746,
+ "result": true
+}
+```
diff --git a/doc/es_ES/api-comment-procedures.markdown b/doc/es_ES/api-comment-procedures.markdown
new file mode 100644
index 00000000..81389892
--- /dev/null
+++ b/doc/es_ES/api-comment-procedures.markdown
@@ -0,0 +1,181 @@
+API Procedimientos de comentarios
+======================
+
+## createComment [Crear un comentario]
+
+- Propósito: **Crear un nuevo comentario**
+- Parametros:
+ - **task_id** (integer, required)
+ - **user_id** (integer, required)
+ - **content** Reducción de contenido (string, required)
+- Resultado satisfactorio: **comment_id**
+- Resultado fallido : **false**
+
+Ejemplo de petición:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "createComment",
+ "id": 1580417921,
+ "params": {
+ "task_id": 1,
+ "user_id": 1,
+ "content": "Comment #1"
+ }
+}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1580417921,
+ "result": 11
+}
+```
+
+## getComment [Obtener un comentario]
+
+- Propósito: **Obtener la información del comentario**
+- Parametros:
+ - **comment_id** (integer, required)
+- Resultado satisfactorio: **propiedades del comentario**
+- Resultado fallido: **null**
+
+Ejemplo de petición:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "getComment",
+ "id": 867839500,
+ "params": {
+ "comment_id": 1
+ }
+}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 867839500,
+ "result": {
+ "id": "1",
+ "task_id": "1",
+ "user_id": "1",
+ "date_creation": "1410881970",
+ "comment": "Comment #1",
+ "username": "admin",
+ "name": null
+ }
+}
+```
+
+## getAllComments [Obtener todos los comentarios]
+
+- Proposito: **Obtener todos los comentarios disponibles**
+- Parametros:
+ - **task_id** (integer, required)
+- Resultado satisfactorio: **Lista de comentarios**
+- Resultado fallido : **false**
+
+Ejemplo de petición:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "getAllComments",
+ "id": 148484683,
+ "params": {
+ "task_id": 1
+ }
+}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 148484683,
+ "result": [
+ {
+ "id": "1",
+ "date_creation": "1410882272",
+ "task_id": "1",
+ "user_id": "1",
+ "comment": "Comment #1",
+ "username": "admin",
+ "name": null
+ },
+ ...
+ ]
+}
+```
+
+## updateComment [Actualizar un comentario]
+
+- Proposito: **Actualizar un comentario**
+- Parametros:
+ - **id** (integer, required)
+ - **content** Reducción de contenido (string, required)
+- Resultado satisfactorio: **true**
+- Resultado fallido: **false**
+
+Ejemplo de petición:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "updateComment",
+ "id": 496470023,
+ "params": {
+ "id": 1,
+ "content": "Comment #1 updated"
+ }
+}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1493368950,
+ "result": true
+}
+```
+
+## removeComment [Eliminar un comentario]
+
+- Proposito : **Eliminar un comentario**
+- Parametros:
+ - **comment_id** (integer, required)
+- Resultado satisfactorio: **true**
+- Resultado fallido: **false**
+
+Ejemplo de petición:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "removeComment",
+ "id": 328836871,
+ "params": {
+ "comment_id": 1
+ }
+}
+```
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 328836871,
+ "result": true
+}
+```
diff --git a/doc/es_ES/api-examples.markdown b/doc/es_ES/api-examples.markdown
new file mode 100644
index 00000000..cba7ffe5
--- /dev/null
+++ b/doc/es_ES/api-examples.markdown
@@ -0,0 +1,152 @@
+Ejemplos de API
+============
+
+Ejemplo con cURL
+-----------------
+
+Desde la línea de comandos:
+
+```bash
+curl \
+-u "jsonrpc:19ffd9709d03ce50675c3a43d1c49c1ac207f4bc45f06c5b2701fbdf8929" \
+-d '{"jsonrpc": "2.0", "method": "getAllProjects", "id": 1}' \
+http://localhost/kanboard/jsonrpc.php
+```
+
+Respuesta desde el servidor:
+
+```json
+{
+ "jsonrpc":"2.0",
+ "id":1,
+ "result":[
+ {
+ "id":"1",
+ "name":"API test",
+ "is_active":"1",
+ "token":"6bd0932fe7f4b5e6e4bc3c72800bfdef36a2c5de2f38f756dfb5bd632ebf",
+ "last_modified":"1403392631"
+ }
+ ]
+}
+```
+
+Ejemplo con Python
+-------------------
+
+Puede utilizar el [cliente oficial Python para Kanboard](https://github.com/kanboard/kanboard-api-python):
+
+```bash
+pip install kanboard
+```
+
+Aquí un ejemplo para crear un proyecto y una tarea:
+
+```python
+from kanboard import Kanboard
+
+kb = Kanboard("http://localhost/jsonrpc.php", "jsonrpc", "your_api_token")
+
+project_id = kb.create_project(name="My project")
+
+task_id = kb.create_task(project_id=project_id, title="My task title")
+```
+
+Hay mas ejemplos en el [sitio web oficial(https://github.com/kanboard/kanboard-api-python).
+
+Ejemplo con un cliente PHP
+-------------------------
+
+Puede utilizar esta [librearia Json-RPC de Cliente/servidor para PHP](https://github.com/fguillot/JsonRPC), Aqui un ejemplo:
+
+```php
+<?php
+
+$client = new JsonRPC\Client('http://localhost:8000/jsonrpc.php');
+$client->authentication('jsonrpc', '19ffd9709d03ce50675c3a43d1c49c1ac207f4bc45f06c5b2701fbdf8929');
+
+print_r($client->getAllProjects());
+
+```
+
+La respuesta:
+
+```
+Array
+(
+ [0] => Array
+ (
+ [id] => 1
+ [name] => API test
+ [is_active] => 1
+ [token] => 6bd0932fe7f4b5e6e4bc3c72800bfdef36a2c5de2f38f756dfb5bd632ebf
+ [last_modified] => 1403392631
+ )
+
+)
+```
+
+Ejemplo con Ruby
+-----------------
+
+Este ejmeplo puede ser usado con Kanboard configurado con autenticación de Proxy Inverso y la API configurada con una cabecerza de autenticación personalizada:
+
+```ruby
+require 'faraday'
+
+conn = Faraday.new(:url => 'https://kanboard.example.com') do |faraday|
+ faraday.response :logger
+ faraday.headers['X-API-Auth'] = 'XXX' # base64_encode('jsonrpc:API_KEY')
+ faraday.basic_auth(ENV['user'], ENV['pw']) # user/pass to get through basic auth
+ faraday.adapter Faraday.default_adapter # make requests with Net::HTTP
+end
+
+response = conn.post do |req|
+ req.url '/jsonrpc.php'
+ req.headers['Content-Type'] = 'application/json'
+ req.body = '{ "jsonrpc": "2.0", "id": 1, "method": "getAllProjects" }'
+end
+
+puts response.body
+```
+
+
+Ejemplo con Java
+-----------------
+
+Este es un ejemplo basico usando Spring. Para su uso correcto vea [Este enlace](http://spring.io/guides/gs/consuming-rest).
+
+```java
+import java.io.UnsupportedEncodingException;
+import java.util.Base64;
+
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.web.client.RestTemplate;
+
+public class ProjectService {
+
+ public void getAllProjects() throws UnsupportedEncodingException {
+
+ RestTemplate restTemplate = new RestTemplate();
+
+ String url = "http://localhost/kanboard/jsonrpc.php";
+ String requestJson = "{\"jsonrpc\": \"2.0\", \"method\": \"getAllProjects\", \"id\": 1}";
+ String user = "jsonrpc";
+ String apiToken = "19ffd9709d03ce50675c3a43d1c49c1ac207f4bc45f06c5b2701fbdf8929";
+
+ // encode api token
+ byte[] xApiAuthTokenBytes = String.join(":", user, apiToken).getBytes("utf-8");
+ String xApiAuthToken = Base64.getEncoder().encodeToString(xApiAuthTokenBytes);
+
+ // consume request
+ HttpHeaders headers = new HttpHeaders();
+ headers.add("X-API-Auth", xApiAuthToken);
+ headers.setContentType(MediaType.APPLICATION_JSON);
+ HttpEntity<String> entity = new HttpEntity<String>(requestJson, headers);
+ String answer = restTemplate.postForObject(url, entity, String.class);
+ System.out.println(answer);
+ }
+}
+```
diff --git a/doc/es_ES/api-external-task-link-procedures.markdown b/doc/es_ES/api-external-task-link-procedures.markdown
new file mode 100644
index 00000000..d276dd7a
--- /dev/null
+++ b/doc/es_ES/api-external-task-link-procedures.markdown
@@ -0,0 +1,221 @@
+API de Procedimientos de tarea de enlace externo
+=================================
+
+## getExternalTaskLinkTypes
+
+- Propsito: **Obtener todos los proveedores registrados de enlaces externos**
+- Parmetros: **ninguno**
+- Resultado en caso de xito: **dict**
+- Resultado en caso de falla: **false**
+
+Ejemplo de solicitud:
+
+```json
+{"jsonrpc":"2.0","method":"getExternalTaskLinkTypes","id":477370568}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "result": {
+ "auto": "Auto",
+ "attachment": "Attachment",
+ "file": "Local File",
+ "weblink": "Web Link"
+ },
+ "id": 477370568
+}
+```
+
+## getExternalTaskLinkProviderDependencies
+
+- Propsito: **Obtener las dependencias disponibles para un determinado proveedor**
+- Parametros:
+ - **providerName** (string, required)
+- Resultado en caso de xito: **dict**
+- Resultado en caso de falla: **false**
+
+Ejemplo de solicitud:
+
+```json
+{"jsonrpc":"2.0","method":"getExternalTaskLinkProviderDependencies","id":124790226,"params":["weblink"]}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "result": {
+ "related": "Related"
+ },
+ "id": 124790226
+}
+```
+
+## createExternalTaskLink
+
+- Propsito: **Crear una nueva tarea de enlace externo**
+- Parametros:
+ - **task_id** (integer, required)
+ - **url** (string, required)
+ - **dependency** (string, required)
+ - **type** (string, optional)
+ - **title** (string, optional)
+- Resultado en caso de xito: **link_id**
+- Resultado en caso de falla: **false**
+
+Ejemplo de solicitud:
+
+```json
+{"jsonrpc":"2.0","method":"createExternalTaskLink","id":924217495,"params":[9,"http:\/\/localhost\/document.pdf","related","attachment"]}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "result": 1,
+ "id": 924217495
+}
+```
+
+## updateExternalTaskLink
+
+- Propsito: **Actualizar tarea de enlace externo**
+- Parametros:
+ - **task_id** (integer, required)
+ - **link_id** (integer, required)
+ - **title** (string, required)
+ - **url** (string, required)
+ - **dependency** (string, required)
+- Resultado en caso de xito: **true**
+- Resultado en caso de falla: **false**
+
+Ejemplo de solicitud:
+
+```json
+{
+ "jsonrpc":"2.0",
+ "method":"updateExternalTaskLink",
+ "id":1123562620,
+ "params": {
+ "task_id":9,
+ "link_id":1,
+ "title":"New title"
+ }
+}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "result": true,
+ "id": 1123562620
+}
+```
+
+## getExternalTaskLinkById
+
+- Propsito: **Obtener un enlace de tarea externo**
+- Parametros:
+ - **task_id** (integer, required)
+ - **link_id** (integer, required)
+- Resultado en caso de xito: **dict**
+- Resultado en caso de falla: **false**
+
+Ejemplo de solicitud:
+
+```json
+{"jsonrpc":"2.0","method":"getExternalTaskLinkById","id":2107066744,"params":[9,1]}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "result": {
+ "id": "1",
+ "link_type": "attachment",
+ "dependency": "related",
+ "title": "document.pdf",
+ "url": "http:\/\/localhost\/document.pdf",
+ "date_creation": "1466965256",
+ "date_modification": "1466965256",
+ "task_id": "9",
+ "creator_id": "0"
+ },
+ "id": 2107066744
+}
+```
+
+## getAllExternalTaskLinks
+
+- Propsito: **Obtener todos los enlaces externos conectados a una tarea**
+- Parametros:
+ - **task_id** (integer, required)
+- Resultado en caso de xito: **list of external links**
+- Resultado en caso de falla: **false**
+
+Ejemplo de solicitud:
+
+```json
+{"jsonrpc":"2.0","method":"getAllExternalTaskLinks","id":2069307223,"params":[9]}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "result": [
+ {
+ "id": "1",
+ "link_type": "attachment",
+ "dependency": "related",
+ "title": "New title",
+ "url": "http:\/\/localhost\/document.pdf",
+ "date_creation": "1466965256",
+ "date_modification": "1466965256",
+ "task_id": "9",
+ "creator_id": "0",
+ "creator_name": null,
+ "creator_username": null,
+ "dependency_label": "Related",
+ "type": "Attachment"
+ }
+ ],
+ "id": 2069307223
+}
+```
+
+## removeExternalTaskLink
+
+- Propsito: **Remover una tarea de enlace externo**
+- Parametros:
+ - **task_id** (integer, required)
+ - **link_id** (integer, required)
+- Resultado en caso de xito: **true**
+- Resultado en caso de falla: **false**
+
+Ejemplo de solicitud:
+
+```json
+{"jsonrpc":"2.0","method":"removeExternalTaskLink","id":552055660,"params":[9,1]}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "result": true,
+ "id": 552055660
+}
+```
diff --git a/doc/es_ES/api-group-member-procedures.markdown b/doc/es_ES/api-group-member-procedures.markdown
new file mode 100644
index 00000000..7c7cb25c
--- /dev/null
+++ b/doc/es_ES/api-group-member-procedures.markdown
@@ -0,0 +1,188 @@
+Group Member API Procedures
+===========================
+
+## getMemberGroups
+
+- Propsito: **Obtener todos los grupos de un usuario determinado**
+- Parmetros:
+ - **user_id** (integer, required)
+- Resultado en caso de xito: **List of groups**
+- Resultado en caso de falla: **false**
+
+Ejemplo de solicitud:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "getMemberGroups",
+ "id": 1987176726,
+ "params": [
+ "1"
+ ]
+}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1987176726,
+ "result": [
+ {
+ "id": "1",
+ "name": "My Group A"
+ }
+ ]
+}
+```
+
+## getGroupMembers
+
+- Propsito: **Obtener todos los miembros de un grupo**
+- Parmetros:
+ - **group_id** (integer, required)
+- Resultado en caso de xito: **List of users**
+- Resultado en caso de falla: **false**
+
+Ejemplo de solicitud:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "getGroupMembers",
+ "id": 1987176726,
+ "params": [
+ "1"
+ ]
+}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1987176726,
+ "result": [
+ {
+ "group_id": "1",
+ "user_id": "1",
+ "id": "1",
+ "username": "admin",
+ "is_ldap_user": "0",
+ "name": null,
+ "email": null,
+ "notifications_enabled": "0",
+ "timezone": null,
+ "language": null,
+ "disable_login_form": "0",
+ "notifications_filter": "4",
+ "nb_failed_login": "0",
+ "lock_expiration_date": "0",
+ "is_project_admin": "0",
+ "gitlab_id": null,
+ "role": "app-admin"
+ }
+ ]
+}
+```
+
+## addGroupMember
+
+- Propsito: **Agregar un usuario a un grupo**
+- Parmetros:
+ - **group_id** (integer, required)
+ - **user_id** (integer, required)
+- Resultado en caso de xito: **true**
+- Resultado en caso de falla: **false**
+
+Ejemplo de solicitud:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "addGroupMember",
+ "id": 1589058273,
+ "params": [
+ 1,
+ 1
+ ]
+}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1589058273,
+ "result": true
+}
+```
+
+## removeGroupMember
+
+- Propsito: **Quitar un usuario de un grupo**
+- Parmetros:
+ - **group_id** (integer, required)
+ - **user_id** (integer, required)
+- Resultado en caso de xito: **true**
+- Resultado en caso de falla: **false**
+
+Ejemplo de solicitud:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "removeGroupMember",
+ "id": 1730416406,
+ "params": [
+ 1,
+ 1
+ ]
+}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1730416406,
+ "result": true
+}
+```
+
+## isGroupMember
+
+- Propsito: **Comprobar si un usuario es miembro de un grupo**
+- Parmetros:
+ - **group_id** (integer, required)
+ - **user_id** (integer, required)
+- Resultado en caso de xito: **true**
+- Resultado en caso de falla: **false**
+
+Ejemplo de solicitud:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "isGroupMember",
+ "id": 1052800865,
+ "params": [
+ 1,
+ 1
+ ]
+}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1052800865,
+ "result": false
+}
+```
diff --git a/doc/es_ES/api-group-procedures.markdown b/doc/es_ES/api-group-procedures.markdown
new file mode 100755
index 00000000..cb11fb96
--- /dev/null
+++ b/doc/es_ES/api-group-procedures.markdown
@@ -0,0 +1,174 @@
+Group API Procedures
+====================
+
+## createGroup
+
+- Purpose: **Create a new group**
+- Parameters:
+ - **name** (string, required)
+ - **external_id** (string, optional)
+- Result on success: **link_id**
+- Result on failure: **false**
+
+Request example:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "createGroup",
+ "id": 1416806551,
+ "params": [
+ "My Group B",
+ "1234"
+ ]
+}
+```
+
+Response example:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1416806551,
+ "result": 2
+}
+```
+
+## updateGroup
+
+- Purpose: **Update a group**
+- Parameters:
+ - **group_id** (integer, required)
+ - **name** (string, optional)
+ - **external_id** (string, optional)
+- Result on success: **true**
+- Result on failure: **false**
+
+Request example:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "updateGroup",
+ "id": 866078030,
+ "params": {
+ "group_id": "1",
+ "name": "ABC",
+ "external_id": "something"
+ }
+}
+```
+
+Response example:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 866078030,
+ "result": true
+}
+```
+
+## removeGroup
+
+- Purpose: **Remove a group**
+- Parameters:
+ - **group_id** (integer, required)
+- Result on success: **true**
+- Result on failure: **false**
+
+Request example:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "removeGroup",
+ "id": 566000661,
+ "params": [
+ "1"
+ ]
+}
+```
+
+Response example:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 566000661,
+ "result": true
+}
+```
+
+## getGroup
+
+- Purpose: **Get one group**
+- Parameters:
+ - **group_id** (integer, required)
+- Result on success: **Group dictionary**
+- Result on failure: **false**
+
+Request example:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "getGroup",
+ "id": 1968647622,
+ "params": [
+ "1"
+ ]
+}
+```
+
+Response example:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1968647622,
+ "result": {
+ "id": "1",
+ "external_id": "",
+ "name": "My Group A"
+ }
+}
+```
+
+## getAllGroups
+
+- Purpose: **Get all groups**
+- Parameters: none
+- Result on success: **list of groups**
+- Result on failure: **false**
+
+Request example:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "getAllGroups",
+ "id": 546070742
+}
+```
+
+Response example:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 546070742,
+ "result": [
+ {
+ "id": "1",
+ "external_id": "",
+ "name": "My Group A"
+ },
+ {
+ "id": "2",
+ "external_id": "1234",
+ "name": "My Group B"
+ }
+ ]
+}
+```
diff --git a/doc/es_ES/api-internal-task-link-procedures.markdown b/doc/es_ES/api-internal-task-link-procedures.markdown
new file mode 100644
index 00000000..43d410d7
--- /dev/null
+++ b/doc/es_ES/api-internal-task-link-procedures.markdown
@@ -0,0 +1,187 @@
+API Procedimientos de Tareas Internas de Enlace
+=================================
+
+## createTaskLink
+
+- Propósito: **Crea un enlace entre dos tareas**
+- Parametros:
+ - **task_id** (integer, required)
+ - **opposite_task_id** (integer, required)
+ - **link_id** (integer, required)
+- Resultado en caso exitoso: **task_link_id**
+- Resultado en caso fallido: **false**
+
+Ejemplo de petición:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "createTaskLink",
+ "id": 509742912,
+ "params": [
+ 2,
+ 3,
+ 1
+ ]
+}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 509742912,
+ "result": 1
+}
+```
+
+## updateTaskLink
+
+- Propósito: **Actualiza enlace de tarea**
+- Parametros:
+ - **task_link_id** (integer, required)
+ - **task_id** (integer, required)
+ - **opposite_task_id** (integer, required)
+ - **link_id** (integer, required)
+- Resultado en caso exitoso: **true**
+- Resultado en caso fallido: **false**
+
+Ejemplo de petición:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "updateTaskLink",
+ "id": 669037109,
+ "params": [
+ 1,
+ 2,
+ 4,
+ 2
+ ]
+}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 669037109,
+ "result": true
+}
+```
+
+## getTaskLinkById
+
+- Propósito: **Obtiene un enlace de tarea**
+- Parametros:
+ - **task_link_id** (integer, required)
+- Resultado en caso exitoso: **task link properties**
+- Resultado en caso fallido: **false**
+
+Ejemplo de petición:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "getTaskLinkById",
+ "id": 809885202,
+ "params": [
+ 1
+ ]
+}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 809885202,
+ "result": {
+ "id": "1",
+ "link_id": "1",
+ "task_id": "2",
+ "opposite_task_id": "3"
+ }
+}
+```
+
+## getAllTaskLinks
+
+- Propósito: **Obtiene todos los enlaces relacionados a una tarea**
+- Parametros:
+ - **task_id** (integer, required)
+- Resultado en caso exitoso: **list of task link**
+- Resultado en caso fallido: **false**
+
+Ejemplo de petición:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "getAllTaskLinks",
+ "id": 810848359,
+ "params": [
+ 2
+ ]
+}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 810848359,
+ "result": [
+ {
+ "id": "1",
+ "task_id": "3",
+ "label": "relates to",
+ "title": "B",
+ "is_active": "1",
+ "project_id": "1",
+ "task_time_spent": "0",
+ "task_time_estimated": "0",
+ "task_assignee_id": "0",
+ "task_assignee_username": null,
+ "task_assignee_name": null,
+ "column_title": "Backlog"
+ }
+ ]
+}
+```
+
+## removeTaskLink
+
+- Propósito: **Elimina un enlace entre dos tareas**
+- Parametros:
+ - **task_link_id** (integer, required)
+- Resultado en caso exitoso: **true**
+- Resultado en caso fallido: **false**
+
+Ejemplo de petición:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "removeTaskLink",
+ "id": 473028226,
+ "params": [
+ 1
+ ]
+}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 473028226,
+ "result": true
+}
+```
diff --git a/doc/es_ES/api-json-rpc.markdown b/doc/es_ES/api-json-rpc.markdown
new file mode 100644
index 00000000..23088890
--- /dev/null
+++ b/doc/es_ES/api-json-rpc.markdown
@@ -0,0 +1,69 @@
+Json-RPC API
+============
+
+Usuario y aplicacion API
+------------------------
+
+Existen dos tipos de acceso a la API:
+
+### API de Aplicacion
+
+- Acceso a la API con el usuario "jsonrpc" y el token disponible en ajustes
+- Acceso a todos los procedimientos
+- Sin comprobacion de permisos
+- No existe sesion de usuario en el servidor
+- Ejemplo de posibles clientes: Herramientas para migrar/importar datos, crear tareas desde otros sistemas, etc.
+
+### API de Usuario
+
+- Acceso a la API con las credenciales de usuario (Nombre de usuario y contraseña)
+- Acceso a un conjunto restringido de procedimientos
+- Los permisos del proyecto son comprobados
+- Una sesion de usuario es creada en el servidor
+- Ejemplo de posibles clientes: Aplicacion de escritotrio / dispositivos moviles, utilidad linea de commandos, etc.
+
+Seguridad
+---------
+
+- Siempre usa HTTPS con un certificado valido.
+- Si haces una aplicacion movil, es tu trabajo almacenar de forma segura las credenciales de usuario en el dispositivo
+- Despues de tres fallas de autenticación en la API de usuario, el usuario final tiene que desbloquear su cuenta utilizando el formulario de inicio de sesión
+- La autenticación de dos factores aun no está disponible a través de la API
+
+Protocolo
+---------
+
+Kanboard utilizar el protocolo JSON-RPC para interactuar con programas externos.
+JSON-RPC es un protocolo de llamada a procedimiento remoto codificado en JSON. Casi lo mismo que XML-RPC, pero con el formato JSON.
+
+Utilizamos [version 2 of the protocol](http://www.jsonrpc.org/specification). Usted debe llamar a la API con una petición HTTP POST.
+
+Kanboard soporta requerimientos por lotes, por lo que pueden hacer varias llamadas a la API en una sola petición HTTP. Es particularmente útil para los clientes móviles con una mayor latencia de la red.
+
+Uso
+---
+
+- [Authentication](api-authentication.markdown)
+- [Examples](api-examples.markdown)
+- [Application](api-application-procedures.markdown)
+- [Projects](api-project-procedures.markdown)
+- [Project Permissions](api-project-permission-procedures.markdown)
+- [Boards](api-board-procedures.markdown)
+- [Columns](api-column-procedures.markdown)
+- [Swimlanes](api-swimlane-procedures.markdown)
+- [Categories](api-category-procedures.markdown)
+- [Automatic Actions](api-action-procedures.markdown)
+- [Tasks](api-task-procedures.markdown)
+- [Subtasks](api-subtask-procedures.markdown)
+- [Subtask Time Tracking](api-subtask-time-tracking-procedures.markdown)
+- [Task Files](api-task-file-procedures.markdown)
+- [Project Files](api-project-file-procedures.markdown)
+- [Links](api-link-procedures.markdown)
+- [Internal Task Links](api-internal-task-link-procedures.markdown)
+- [External Task Links](api-external-task-link-procedures.markdown)
+- [Comments](api-comment-procedures.markdown)
+- [Users](api-user-procedures.markdown)
+- [Groups](api-group-procedures.markdown)
+- [Group Members](api-group-member-procedures.markdown)
+- [Me](api-me-procedures.markdown)
+
diff --git a/doc/es_ES/api-link-procedures.markdown b/doc/es_ES/api-link-procedures.markdown
new file mode 100644
index 00000000..2ed08ecd
--- /dev/null
+++ b/doc/es_ES/api-link-procedures.markdown
@@ -0,0 +1,285 @@
+API Procedimientos de enlace
+===================
+
+## getAllLinks
+
+- Propósito: **Obtiene la lista de posibles relaciones entre tareas**
+- Parametros: ninguno
+- Resultado en caso exitoso: **List of links**
+- Resultado en caso fallido: **false**
+
+Ejemplo de petición:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "getAllLinks",
+ "id": 113057196
+}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 113057196,
+ "result": [
+ {
+ "id": "1",
+ "label": "relates to",
+ "opposite_id": "0"
+ },
+ {
+ "id": "2",
+ "label": "blocks",
+ "opposite_id": "3"
+ },
+ {
+ "id": "3",
+ "label": "is blocked by",
+ "opposite_id": "2"
+ },
+ {
+ "id": "4",
+ "label": "duplicates",
+ "opposite_id": "5"
+ },
+ {
+ "id": "5",
+ "label": "is duplicated by",
+ "opposite_id": "4"
+ },
+ {
+ "id": "6",
+ "label": "is a child of",
+ "opposite_id": "7"
+ },
+ {
+ "id": "7",
+ "label": "is a parent of",
+ "opposite_id": "6"
+ },
+ {
+ "id": "8",
+ "label": "targets milestone",
+ "opposite_id": "9"
+ },
+ {
+ "id": "9",
+ "label": "is a milestone of",
+ "opposite_id": "8"
+ },
+ {
+ "id": "10",
+ "label": "fixes",
+ "opposite_id": "11"
+ },
+ {
+ "id": "11",
+ "label": "is fixed by",
+ "opposite_id": "10"
+ }
+ ]
+}
+```
+
+## getOppositeLinkId
+
+- Propósito: **Obtiene el identificador de enlace opuesto de un enlace de tarea**
+- Parametros:
+ - **link_id** (integer, required)
+- Resultado en caso exitoso: **link_id**
+- Resultado en caso fallido: **false**
+
+Ejemplo de petición:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "getOppositeLinkId",
+ "id": 407062448,
+ "params": [
+ 2
+ ]
+}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 407062448,
+ "result": "3"
+}
+```
+
+## getLinkByLabel
+
+- Propósito: **Obtiene un enlace por etiqueta**
+- Parametros:
+ - **label** (integer, required)
+- Resultado en caso exitoso: **link properties**
+- Resultado en caso fallido: **false**
+
+Ejemplo de petición:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "getLinkByLabel",
+ "id": 1796123316,
+ "params": [
+ "blocks"
+ ]
+}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1796123316,
+ "result": {
+ "id": "2",
+ "label": "blocks",
+ "opposite_id": "3"
+ }
+}
+```
+
+## getLinkById
+
+- Propósito: **Obtiene un enlace por identificador**
+- Parametros:
+ - **link_id** (integer, required)
+- Resultado en caso exitoso: **link properties**
+- Resultado en caso fallido: **false**
+
+Ejemplo de petición:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "getLinkById",
+ "id": 1190238402,
+ "params": [
+ 4
+ ]
+}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1190238402,
+ "result": {
+ "id": "4",
+ "label": "duplicates",
+ "opposite_id": "5"
+ }
+}
+```
+
+## createLink
+
+- Propósito: **Crea una nueva relación de tarea**
+- Parametros:
+ - **label** (integer, required)
+ - **opposite_label** (integer, optional)
+- Resultado en caso exitoso: **link_id**
+- Resultado en caso fallido: **false**
+
+Ejemplo de petición:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "createLink",
+ "id": 1040237496,
+ "params": [
+ "foo",
+ "bar"
+ ]
+}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1040237496,
+ "result": 13
+}
+```
+
+## updateLink
+
+- Propósito: **Actualiza un enlace**
+- Parametros:
+ - **link_id** (integer, required)
+ - **opposite_link_id** (integer, required)
+ - **label** (string, required)
+- Resultado en caso exitoso: **true**
+- Resultado en caso fallido: **false**
+
+Ejemplo de petición:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "updateLink",
+ "id": 2110446926,
+ "params": [
+ "14",
+ "12",
+ "boo"
+ ]
+}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 2110446926,
+ "result": true
+}
+```
+
+## removeLink
+
+- Propósito: **Elimina un enlace**
+- Parametros:
+ - **link_id** (integer, required)
+- Resultado en caso exitoso: **true**
+- Resultado en caso fallido: **false**
+
+Ejemplo de petición:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "removeLink",
+ "id": 2136522739,
+ "params": [
+ "14"
+ ]
+}
+```
+
+Ejemplo de respuesta:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 2136522739,
+ "result": true
+}
+```
diff --git a/doc/es_ES/board-collapsed-expanded.markdown b/doc/es_ES/board-collapsed-expanded.markdown
new file mode 100644
index 00000000..a8ba2beb
--- /dev/null
+++ b/doc/es_ES/board-collapsed-expanded.markdown
@@ -0,0 +1,18 @@
+Modo colapsar y expandir
+===========================
+
+Las tares en el tablero pueden visualizarse en modo colapsado o en modo expandido.
+El cambio entre el desplazamiento horizontal y la vista compacta se puede hacer con la combinacin de teclas **"s"** o usar el menu drop-down que esta parte superior izquierda.
+
+Modo de colapsado
+--------------
+
+![Tareas colapsadas](screenshots/board-collapsed-mode.png)
+
+- Si la tarea es asignada a alguien, las iniciales de la persona se muestran junto al nmero de tareas
+- Si el titulo de la tarea es demasiado largo, tu puedes poner el puntero del ratn sobre la tarea de mostrar una informacin sobre herramientas con el ttulo completo
+
+Modo expansivo
+--------------
+
+![Tasks expanded](screenshots/board-expanded-mode.png)
diff --git a/doc/es_ES/board-configuration.markdown b/doc/es_ES/board-configuration.markdown
new file mode 100644
index 00000000..58817072
--- /dev/null
+++ b/doc/es_ES/board-configuration.markdown
@@ -0,0 +1,25 @@
+Configuraci�n del tablero
+==========================
+
+Ir al menu **Configuraciones **, elije **Ajustes de tablero ** a la izquierda.
+
+![Board settings](screenshots/board-settings.png)
+
+### Resaltado de tarea
+
+Esta caracterista muestra una sombra alrededor de la tarea cuando una tarea se traslad� recientemente
+
+Establecer el valor 0 para desactivar esta caracterista, 2 dias por default (172800 segundos).
+
+Todo lo traslad� desde de 2 dias tendra una sombra alrededor de la tarea.
+
+### Recargar el intervalo para la pizarra publica
+
+Cuando tu compartes un tablero, la pagina se refresca cada 60 segundos automaticamente por default.
+
+### Refrescar el intervalo para un tablero privado
+
+Cuando su navegador est� abierto un tablero, Kanboard comprueba cada 10 segundos si algo ha sido cambiado por otra persona.
+
+T�cnicamente este proceso se lleva a cabo por el Ajax.
+
diff --git a/doc/es_ES/board-horizontal-scrolling-and-compact-view.markdown b/doc/es_ES/board-horizontal-scrolling-and-compact-view.markdown
new file mode 100644
index 00000000..9dab532a
--- /dev/null
+++ b/doc/es_ES/board-horizontal-scrolling-and-compact-view.markdown
@@ -0,0 +1,12 @@
+Horizontal scrolling y modo compacto
+=====================================
+
+Cuando el tablero no puede caber en su pantalla , una barra de scroll horizontal
+When the board cannot fit on your screen, a horizontal scroll bar aparecer en la parte inferior.
+
+Sin embargo, es posible cambiar a una vista de modo compacto para visualizar todas las columnas en su pantalla.
+
+![Cambiar a modo compacto](screenshots/board-compact-mode.png)
+
+Cambiar entre scrolling y vista compacta
+El cambio entre el desplazamiento horizontal y la vista compacta se puede hacer con la combinacin de teclas **"c"** o usar el menu drop-down que esta parte superior izquierda.
diff --git a/doc/es_ES/board-show-hide-columns.markdown b/doc/es_ES/board-show-hide-columns.markdown
new file mode 100644
index 00000000..6700b987
--- /dev/null
+++ b/doc/es_ES/board-show-hide-columns.markdown
@@ -0,0 +1,12 @@
+Mostrar y ocultar columnas en el tablero
+==================================
+
+Se puede ocultar o visualizar columnas muy facilmente en el tablero:
+
+![Ocultar una columna](screenshots/hide-column.png)
+
+Para ocultar una columna, click en la columna escoge en el menu dropdown "ocultar esta columna" :
+
+![Mostrar una columna](screenshots/show-column.png)
+
+Para mostar nuevamente la columna, click en el icono con el simbolo de suma "plus icon"
diff --git a/doc/es_ES/bruteforce-protection.markdown b/doc/es_ES/bruteforce-protection.markdown
new file mode 100644
index 00000000..2a08fc27
--- /dev/null
+++ b/doc/es_ES/bruteforce-protection.markdown
@@ -0,0 +1,26 @@
+Protección por fuerza bruta
+===========================
+
+La protección por fuerza bruta de kanboard funciona en nivel a la cuenta de usuario.
+
+- Después de 3 fallas de autentificación para el formulario de login muestra una imagen de captcha para evitar bots automatizado orientativos.
+- Después de 6 fallas de autentificación la cuenta de usuario esta bloqueada por un periodo de 15 minutos.
+
+Esta característica funciona para el método de autentificación del usuario API, la cuenta tiene que ser desbloqueado mediante el formulario de inicio de sesión.
+
+Sin embargo, después de la tercera falla de autenticidad a través de la API de usuario, la cuenta tiene que ser desbloqueado mediante el formulario de inicio de sesión.
+
+Kanboard no bloquea cualquier dirección de la IP ya que los bots puede utilizar a varios servidores proxy anónimo sin embargo puede utilizar herramientas externas como f[fail2ban](http://www.fail2ban.org) para evitar la exploración masiva.
+
+Los ajustes predeterminados se pueden cambiar con estas variables de configuración:
+
+```php
+// Habilitar captcha después del fallo 3 de autentificación
+define('BRUTEFORCE_CAPTCHA', 3);
+
+// Bloquear la cuenta después de 6 fallo de autentificación
+define('BRUTEFORCE_LOCKDOWN', 6);
+
+//Bloqueo de la duración de la cuenta en minutos.
+define('BRUTEFORCE_LOCKDOWN_DURATION', 15)
+```
diff --git a/doc/es_ES/calendar-configuration.markdown b/doc/es_ES/calendar-configuration.markdown
index ccd83204..16b8d806 100644
--- a/doc/es_ES/calendar-configuration.markdown
+++ b/doc/es_ES/calendar-configuration.markdown
@@ -3,7 +3,7 @@ Configuración de calendarios
Ir al menu de configuraciones, despues elegir cofiguracion de calendarios que se encuentra al lado izquierdo
-![Configuración de calendarios](https://kanboard.net/screenshots/documentation/calendar-settings.png)
+![Configuración de calendarios](screenshots/calendar-settings.png)
Existe dos diferentes calendarios en kanboard :
diff --git a/doc/es_ES/centos-installation.markdown b/doc/es_ES/centos-installation.markdown
new file mode 100644
index 00000000..6fc7e398
--- /dev/null
+++ b/doc/es_ES/centos-installation.markdown
@@ -0,0 +1,80 @@
+Instalación en Centos
+===================
+
+Nota:Algunas funciones de Kanboard requieren que se ejecute un trabajo en segundo
+plano todos los días (cronjob.markdown).
+
+Centos 7
+--------
+
+Instalar PHP y Apache:
+
+```bash
+yum install -y php php-mbstring php-pdo php-gd unzip wget
+```
+
+Por default Centos 7 use PHP 5.4.16 and Apache 2.4.6.
+
+Reiniciar Apache:
+
+```bash
+systemctl restart httpd.service
+```
+
+InstalarKanboard:
+
+```bash
+cd /var/www/html
+wget https://kanboard.net/kanboard-latest.zip
+unzip kanboard-latest.zip
+chown -R apache:apache kanboard/data
+rm kanboard-latest.zip
+```
+
+Si SELinux esta activado, Asegurese de que el usuario de Apache pueda escribir en el directorio de datos:
+
+```bash
+chcon -R -t httpd_sys_content_rw_t /var/www/html/kanboard/data
+```
+
+Asegurese de configurar el servidor para permitir enviar correos electrónicos y hacer conexiones externas por ejemplo con SELinux:
+
+```bash
+setsebool -P httpd_can_network_connect=1
+```
+
+Las conexiones son necesarias si se usa LDAP,SMTP, ganchos web o cualquier integracion de terceros:
+
+Centos 6.x
+----------
+
+Instalar PHP y Apache:
+
+```bash
+yum install -y php php-mbstring php-pdo php-gd unzip wget
+```
+
+Por defecto para Centos 6.5 use PHP 5.3.3 y Apache 2.2.15
+
+Active las etiquetas cortas:
+
+- Editar el archivo `/etc/php.ini`
+- Cambiar la linea `short_open_tag = On`
+
+Reiniciar Apache:
+
+```bash
+service httpd restart
+```
+
+Instalar Kanboard:
+
+```bash
+cd /var/www/html
+wget https://kanboard.net/kanboard-latest.zip
+unzip kanboard-latest.zip
+chown -R apache:apache kanboard/data
+rm kanboard-latest.zip
+```
+
+Ir a `http://your_server/kanboard/`.
diff --git a/doc/es_ES/cli.markdown b/doc/es_ES/cli.markdown
new file mode 100755
index 00000000..ec46bdd6
--- /dev/null
+++ b/doc/es_ES/cli.markdown
@@ -0,0 +1,205 @@
+Interface de linea de comandos
+=============================
+
+Kanboard provides a simple command line interface that can be used from any Unix terminal.
+This tool can be used only on the local machine.
+
+This feature is useful to run commands outside of the web server processes.
+
+Uso
+-----
+
+- Abre una terminal y ve a tu directorio de kanboard (ejemplo : `cd /var/www/kanboard`)
+- Corre el comando `./cli` / `php cli`
+
+```bash
+Kanboard version master
+
+Uso:
+ comando [opciones] [argumentos]
+
+Options:
+ -h, --help Visualizar mensaje de ayuda
+ -q, --quiet Sin mensajes de salida
+ -V, --version Visualiza la verssation version
+ --ansi Forzar salida ANSI
+ --no-ansi Deshabilitar salida ANSI
+ -n, --no-interaction No hacer cualquier pregunta interactiva
+ -v|vv|vvv, --verbose Incrementar la verbosidad de los mensajes: 1 para salida normal, 2 para mas salida verbosa y 3 para debug
+
+Available commands:
+ cronjob Ejecutar diariamente cronjob
+ help Visualizar ayuda para los comandos
+ list Lista de comandos
+ worker Execute queue worker
+ export
+ export:daily-project-column-stats Diariamente estad�sticas de exportaci�n de CSV (n�mero de tareas por columna y por d�a )
+ export:subtasks Exportar a CSV las subtareas
+ export:tasks Exportar a CSV las tareas
+ export:transitions Exportar a CSV tareas de transici�n
+ locale
+ locale:compare Comparar aplicacion de traducciones con el locale fr_FR
+ locale:sync Sincronizar todas las traducciones basadas en el locale fr_FR
+ notification
+ notification:overdue-tasks Enviar notifiaciones de las tareas atrasadas
+ plugin
+ plugin:install Instalar un plugin desde un archivo ZIP remoto
+ plugin:uninstall Eliminar plugin
+ plugin:upgrade Actualizar todos los plugins instalados
+ projects
+ projects:daily-stats Calcular diariamente las estadisticas para todos los proyectos
+ trigger
+ trigger:tasks Disparadores de eventos calendarizados para todas las tareas
+ user
+ user:reset-2fa Eliminar la autenticaci�n two-factor para un usuario
+ user:reset-password Cambiar el passwor del usuario
+```
+
+Comandos disponibles
+------------------
+
+### Exportar las tareas en CSV
+
+Uso:
+
+```bash
+./cli export:tasks <project_id> <start_date> <end_date>
+```
+
+Ejemplo:
+
+```bash
+./cli export:tasks 1 2014-10-01 2014-11-30 > /tmp/my_custom_export.csv
+```
+
+CSV los datos son enviados a `stdout`.
+
+### Subtasks CSV export
+
+Uso:
+
+```bash
+./cli export:subtasks <project_id> <start_date> <end_date>
+```
+
+Ejemplo:
+
+```bash
+./cli export:subtasks 1 2014-10-01 2014-11-30 > /tmp/my_custom_export.csv
+```
+
+### Exportaci�n a CSV de tareas de transici�n
+
+Uso:
+
+```bash
+./cli export:transitions <project_id> <start_date> <end_date>
+```
+
+Ejemplo:
+
+```bash
+./cli export:transitions 1 2014-10-01 2014-11-30 > /tmp/my_custom_export.csv
+```
+
+### Exportar diariamente resumenes de datos en CSV
+
+Los datos exportados se pueden imprimir en la salida est�ndar:
+
+```bash
+./cli export:daily-project-column-stats <project_id> <start_date> <end_date>
+```
+
+Ejemplo:
+
+```bash
+./cli export:daily-project-column-stats 1 2014-10-01 2014-11-30 > /tmp/my_custom_export.csv
+```
+
+### Envio de notificaciones para tareas atrasadas
+
+Los Emails se enviaran a todos los usuarios con las notificaciones habilitadas.
+
+```bash
+./cli notification:overdue-tasks
+```
+
+Parametros opcionales:
+
+- `--show`: Visualizar las notificaciones enviadas
+- `--group`: Grupo tareas atrasadas todo para un usuario (desde todos los proyectos) en un email
+- `--manager`: Enviar todas las tareas atrasadas a un project manager(s) en un email
+
+Tambi�n puede mostrar las tareas atrasadas con la bandera `--show`:
+
+```bash
+./cli notification:overdue-tasks --show
++-----+---------+------------+------------+--------------+----------+
+| Id | Title | Due date | Project Id | Project name | Assignee |
++-----+---------+------------+------------+--------------+----------+
+| 201 | Test | 2014-10-26 | 1 | Project #0 | admin |
+| 202 | My task | 2014-10-28 | 1 | Project #0 | |
++-----+---------+------------+------------+--------------+----------+
+```
+
+### Correr diariamente los calculos de estadisticas de los proyectos
+
+Este comando calcula las estadisticas por cada proyecto:
+
+```bash
+./cli projects:daily-stats
+Run calculation for Project #0
+Run calculation for Project #1
+Run calculation for Project #10
+```
+
+### Trigger [Disparadores] para tareas
+
+Este comando envia a "daily cronjob event" a todas las tareas abiertas de cada proyecto.
+
+```bash
+./cli trigger:tasks
+Trigger task event: project_id=2, nb_tasks=1
+```
+
+### Resetear el password del usuario
+
+```bash
+./cli user:reset-password my_user
+```
+
+Se le pedir� una contrase�a y la confirmaci�n. Los caracteres no se imprimen en la pantalla.
+
+### Eliminar la autenticaci�n two-factor para un usuario
+
+```bash
+./cli user:reset-2fa my_user
+```
+
+### Instalar un plugin
+
+```bash
+./cli plugin:install https://github.com/kanboard/plugin-github-auth/releases/download/v1.0.1/GithubAuth-1.0.1.zip
+```
+
+Nota: Los archivos instalados tendr�n los mismos permisos que el usuario actual
+
+### Eliminar un usuario
+
+```bash
+./cli plugin:uninstall Budget
+```
+
+### Upgrade todos los plugins
+
+```bash
+./cli plugin:upgrade
+* Updating plugin: Budget Planning
+* Plugin up to date: Github Authentication
+```
+
+### Run Background worker
+
+```bash
+./cli worker
+```
diff --git a/doc/es_ES/cloudron.markdown b/doc/es_ES/cloudron.markdown
new file mode 100755
index 00000000..19b030b4
--- /dev/null
+++ b/doc/es_ES/cloudron.markdown
@@ -0,0 +1,27 @@
+Como correr Kanboard en Cloudron
+================================
+
+[Cloudron](https://cloudron.io) es un smartserver privado con el cual tu puedes instalar web
+apps como Kanboard. Puedes instalar Kanboard en un dominio personalizado y cada
+instalacin est respaldada y mantenida da a da con la liberacin automtica de Kanboard
+
+[![Install](https://cloudron.io/img/button.svg)](https://cloudron.io/button.html?app=net.kanboard.cloudronapp)
+
+Cuentas
+--------
+
+La app se integra perfectamente con Cloudron en la gestin ( a travs de LDAP ) del usuario . Solamente
+los usuarios de Cloudron pueden acceder a Kanboard . Adems , cualquier administrador Cloudron
+se convierte en un administrador Kanboard automticamente.
+
+Instalacin de plugins
+-----------------------
+
+Los plugins pueden ser instalados y configurados por [Cloudron CLI](https://cloudron.io/references/cli.html)
+herramientas. Observar [descripcin de la app](https://cloudron.io/appstore.html?app=net.kanboard.cloudronapp) for
+mas informacin.
+
+Cdigo fuente de la aplicacin
+-------------------------------
+El cdigo fuente de la app Cloudron esta [aqui](https://github.com/cloudron-io/kanboard-app).
+
diff --git a/doc/es_ES/coding-standards.markdown b/doc/es_ES/coding-standards.markdown
new file mode 100755
index 00000000..b4b2deab
--- /dev/null
+++ b/doc/es_ES/coding-standards.markdown
@@ -0,0 +1,24 @@
+Estandares de codificacin
+================
+
+Cdigo PHP
+----------
+
+- Indentacion: 4 espacios
+- Linea de retorno: Unix => `\n`
+- Encoding: UTF-8
+- Use unicamente las etiquetas de apertura `<?php` or `<?=` para templates , pero ** nunca usar ** `<?`
+- Siempre escribe comentarios PHPdoc para metodos y propiedades de la clase
+- Codificar con estilo : [PSR-1](http://www.php-fig.org/psr/psr-1/) y [PSR-2](http://www.php-fig.org/psr/psr-2/)
+
+Cdigo JavaScript
+---------------
+
+- Indentacion: 4 espacios
+- Linea de retorno: Unix => `\n`
+
+Cdigo CSS
+--------
+
+- Indentacion: 4 espacios
+- Linea de retorno: Unix => `\n`
diff --git a/doc/es_ES/config.markdown b/doc/es_ES/config.markdown
new file mode 100755
index 00000000..5093898b
--- /dev/null
+++ b/doc/es_ES/config.markdown
@@ -0,0 +1,307 @@
+Archivo de configuracin
+========================
+
+Puede personalizar la configuracin predeterminada de Kanboard mediante la adicin de un archivo ` config.php` en la raz del proyecto o en la carpeta ` data` .
+Tambin puede cambiar el nombre del archivo `config.default.php` a `config.php` y cambiar los valores deseados .
+
+Habilitar/Deshabilitar el modo debug
+--------------------------------------
+
+```php
+define('DEBUG', true);
+define('LOG_DRIVER', 'file'); // Otros drivers son: syslog, stdout, stderr or file
+```
+
+El controlador de registro se debe definir si se habilita el modo de depuracin .
+El modo de depuracin registra todas las consultas SQL y el tiempo necesario para generar pginas .
+
+Plugins
+-------
+
+Folder de plugins:
+
+```php
+define('PLUGINS_DIR', 'data/plugins');
+```
+
+Enable/disable plugin de instalacin para la interface de usuario:
+
+```php
+define('PLUGIN_INSTALLER', true); // Default es true
+```
+
+Folder para subir archivos
+-------------------------
+
+```php
+define('FILES_DIR', 'data/files');
+```
+
+Enable/disable url rewrite
+--------------------------
+
+```php
+define('ENABLE_URL_REWRITE', false);
+```
+
+Configuracin de Email
+-------------------
+
+```php
+// E-mail address para la cabecera "From" (notificaciones)
+define('MAIL_FROM', 'notifications@kanboard.local');
+
+// Mail transport para uso: "smtp", "sendmail" or "mail" (Funcion PHP mail)
+define('MAIL_TRANSPORT', 'mail');
+
+// Configuracin SMTP para usarse para elegir el trasporte de "smtp"
+define('MAIL_SMTP_HOSTNAME', '');
+define('MAIL_SMTP_PORT', 25);
+define('MAIL_SMTP_USERNAME', '');
+define('MAIL_SMTP_PASSWORD', '');
+define('MAIL_SMTP_ENCRYPTION', null); // Valid values are "null", "ssl" or "tls"
+
+// Comando Sendmail para usarse cuando el trasporte sea "sendmail"
+define('MAIL_SENDMAIL_COMMAND', '/usr/sbin/sendmail -bs');
+```
+
+Configuracin de base de datos
+------------------------------
+
+```php
+// Driver base de datos: sqlite, mysql or postgres (sqlite por default)
+define('DB_DRIVER', 'sqlite');
+
+// Nombre de usuario Mysql/Postgres
+define('DB_USERNAME', 'root');
+
+// Password Mysql/Postgres
+define('DB_PASSWORD', '');
+
+// Mysql/Postgres hostname
+define('DB_HOSTNAME', 'localhost');
+
+// Mysql/Postgres Nombre de la base de datos
+define('DB_NAME', 'kanboard');
+
+// Mysql/Postgres Puerto personalizado (null = default port)
+define('DB_PORT', null);
+
+// Mysql SSL key
+define('DB_SSL_KEY', null);
+
+// Mysql SSL certificate
+define('DB_SSL_CERT', null);
+
+// Mysql SSL CA
+define('DB_SSL_CA', null);
+```
+
+Configuraciones LDAP
+----------------------
+
+```php
+// Habilitar la autenticacin por LDAP (false por default)
+define('LDAP_AUTH', false);
+
+// LDAP server hostname
+define('LDAP_SERVER', '');
+
+// LDAP puerto del servidor (389 por defecto)
+define('LDAP_PORT', 389);
+
+// Por default, requiere certificados para verificacion para ldaps:// estilo URL. muesta false para saltarse la verificacion
+define('LDAP_SSL_VERIFY', true);
+
+// Enable LDAP START_TLS
+define('LDAP_START_TLS', false);
+
+// Por defecto Kanboard tiene el nombre de usuario LDAP en minscula para evitar usuarios duplicados ( la base de datos entre maysculas y minsculas )
+// Establece en true si desea conservar el caso
+define('LDAP_USERNAME_CASE_SENSITIVE', false);
+
+// LDAP tipo de enlace : "anonymous", "user" o "proxy"
+define('LDAP_BIND_TYPE', 'anonymous');
+
+// Nombre de usuario LDAP para utilizar con el modo de proxy
+// Patrn de nombre de usuario LDAP para utilizar con el modo de usuario
+define('LDAP_USERNAME', null);
+
+// password LDAP para usar en modo proxy
+define('LDAP_PASSWORD', null);
+
+// LDAP DN para usuarios
+// Ejemplo para ActiveDirectory: CN=Users,DC=kanboard,DC=local
+// Ejemplo para OpenLDAP: ou=People,dc=example,dc=com
+define('LDAP_USER_BASE_DN', '');
+
+// LDAP pattern to use when searching for a user account
+// Example for ActiveDirectory: '(&(objectClass=user)(sAMAccountName=%s))'
+// Example for OpenLDAP: 'uid=%s'
+define('LDAP_USER_FILTER', '');
+
+// LDAP attribute for username
+// Example for ActiveDirectory: 'samaccountname'
+// Example for OpenLDAP: 'uid'
+define('LDAP_USER_ATTRIBUTE_USERNAME', 'uid');
+
+// LDAP attribute for user full name
+// Example for ActiveDirectory: 'displayname'
+// Example for OpenLDAP: 'cn'
+define('LDAP_USER_ATTRIBUTE_FULLNAME', 'cn');
+
+// LDAP attribute for user email
+define('LDAP_USER_ATTRIBUTE_EMAIL', 'mail');
+
+// LDAP attribute to find groups in user profile
+define('LDAP_USER_ATTRIBUTE_GROUPS', 'memberof');
+
+// LDAP attribute for user avatar image: thumbnailPhoto or jpegPhoto
+define('LDAP_USER_ATTRIBUTE_PHOTO', '');
+
+// LDAP attribute for user language, example: 'preferredlanguage'
+// Put an empty string to disable language sync
+define('LDAP_USER_ATTRIBUTE_LANGUAGE', '');
+
+// Permitir creacion de usuario automatico LDAP
+define('LDAP_USER_CREATION', true);
+
+// LDAP DN para administradores
+// Example: CN=Kanboard-Admins,CN=Users,DC=kanboard,DC=local
+define('LDAP_GROUP_ADMIN_DN', '');
+
+// LDAP DN para managers
+// Example: CN=Kanboard Managers,CN=Users,DC=kanboard,DC=local
+define('LDAP_GROUP_MANAGER_DN', '');
+
+// Habilitiar proveedor LDAP de grupo para permisos de proyecto
+// El usuario final ser capaz de navegar por los grupos LDAP desde la interfaz de usuario y permitir el acceso a proyectos especficos
+define('LDAP_GROUP_PROVIDER', false);
+
+// LDAP Base DN for groups
+define('LDAP_GROUP_BASE_DN', '');
+
+// LDAP filtro de grupo
+// Ejemplo para ActiveDirectory: (&(objectClass=group)(sAMAccountName=%s*))
+define('LDAP_GROUP_FILTER', '');
+
+// LDAP filtro por grupo de usuario
+// Si se configura este filtro , Kanboard buscar grupos de usuarios en LDAP_GROUP_BASE_DN
+// Example for OpenLDAP: (&(objectClass=posixGroup)(memberUid=%s))
+define('LDAP_GROUP_USER_FILTER', '');
+
+// LDAP atributo para los nombres de grupos
+define('LDAP_GROUP_ATTRIBUTE_NAME', 'cn');
+```
+
+Reverse-Proxy configuracin de autenticacin
+-------------------------------------
+
+```php
+// Enable/disable la autenticacin reverse proxy
+define('REVERSE_PROXY_AUTH', false);
+
+// Nombre del header a utilizar para el nombre de usuario
+define('REVERSE_PROXY_USER_HEADER', 'REMOTE_USER');
+
+// Nombre de usuario del administrador , por defecto en blanco
+define('REVERSE_PROXY_DEFAULT_ADMIN', '');
+
+// Dominio por defecto a utilizar para configurar la direccin de correo electrnico
+define('REVERSE_PROXY_DEFAULT_DOMAIN', '');
+```
+
+Configuracin para la autenticacion RememberMe
+----------------------------------------------
+
+```php
+// Enable/disable recuerdame autenticacin
+define('REMEMBER_ME_AUTH', true);
+```
+
+Secure HTTP configuracion de headers
+-------------------------------------
+
+```php
+// Enable o disable "Strict-Transport-Security" HTTP header
+define('ENABLE_HSTS', true);
+
+// Enable o disable "X-Frame-Options: DENY" HTTP header
+define('ENABLE_XFRAME', true);
+```
+
+Logging
+-------
+
+De forma predeterminada , Kanboard no ingrese nada .
+Si desea habilitar el registro , usted tiene que fijar un controlador de registro.
+
+```php
+// log de drivers disponibles: syslog, stderr, stdout or file
+define('LOG_DRIVER', '');
+
+// Ingrese el nombre de archivo de registro si el driver "file"
+define('LOG_FILE', __DIR__.DIRECTORY_SEPARATOR.'data'.DIRECTORY_SEPARATOR.'debug.log');
+```
+
+Proteccin de Brute-force
+---------------------
+
+```php
+// Habilitar captcha despues de 3 autenticaciones fallidas
+define('BRUTEFORCE_CAPTCHA', 3);
+
+// Bloquear la cuenta despus de 6 autenticaciones fallidas
+define('BRUTEFORCE_LOCKDOWN', 6);
+
+// Bloquear la cuenta durante un minute
+define('BRUTEFORCE_LOCKDOWN_DURATION', 15);
+```
+
+Session
+-------
+
+```php
+// Session duration in second (0 = until the browser is closed)
+// See http://php.net/manual/en/session.configuration.php#ini.session.cookie-lifetime
+define('SESSION_DURATION', 0);
+```
+
+Clientes HTTP
+--------------
+
+Si las peticiones HTTP externas debe ser enviada a travs de un proxy :
+
+```php
+define('HTTP_PROXY_HOSTNAME', '');
+define('HTTP_PROXY_PORT', '3128');
+define('HTTP_PROXY_USERNAME', '');
+define('HTTP_PROXY_PASSWORD', '');
+```
+
+Para permitir que los certificados de firma propia :
+
+```php
+// Establece en false para permitir certficados self-signed
+define('HTTP_VERIFY_SSL_CERTIFICATE', true);
+```
+
+Varias configuraciones
+----------------------
+
+```php
+// Escapar de HTML dentro del texto de markdown
+define('MARKDOWN_ESCAPE_HTML', true);
+
+// Cabecera de autenticacin alternativo API , el valor predeterminado es la autenticacin bsica HTTP definido en RFC2617
+define('API_AUTHENTICATION_HEADER', '');
+
+// Oculatar el formulario de login, usarlo si todos tus usuarios usan Google/Github/ReverseProxy authentication
+define('HIDE_LOGIN_FORM', false);
+
+// Desactivacin de cierre de sesin ( SSO para la autenticacin externa )
+define('DISABLE_LOGOUT', false);
+
+// Invalidar token de la API almacenada en la base de datos , til para pruebas automatizadas
+define('API_AUTHENTICATION_TOKEN', 'My unique API Token');
+```
diff --git a/doc/es_ES/contributing.markdown b/doc/es_ES/contributing.markdown
new file mode 100644
index 00000000..7f18e6eb
--- /dev/null
+++ b/doc/es_ES/contributing.markdown
@@ -0,0 +1,67 @@
+Directrices del contribuyente
+======================
+
+¿Cómo puedo ayudar?
+-----------------
+
+Kanboard no es perfecto, pero hay muchas maneras de ayudar:
+
+- Dar opinión
+- Informar de los errores
+- Añadir o actualizar traducciones
+- Mejorar la documentación
+- Código de Escritura
+- Dile a tus amigos que Kanboard es impresionante
+
+Antes de hacer cualquier empresa grande, abrir un nuevo tema y explicar su propuesta.
+
+Quiero dar retroalimentación
+-----------------------
+- Usted piensa que algo debe ser mejorado (interface de usuario, peticiones de características)
+- Comprobar si aún no se propuso su idea
+- Abrir un nuevo tema
+- Describir su idea
+- Puede también hacer un voto con +1 en las propuestas existentes
+
+Quiero informar de un error
+---------------------------
+
+- Compruebe si el problema no se ha comunicado anteriormente
+- Abrir un nuevo ticket
+- Explicar lo que está roto
+- Describir la forma de reproducir el error
+- Describir su entorno (versión Kanboard, sistema operativo, servidor web, Versión de PHP , la versión de la base de datos, el proveedor de alojamiento)}
+
+Deseo traducir Kanboard
+----------------------------
+Kanboard se traduce en muchos idiomas.
+
+Sin embargo, las traducciones no están completas, observe la [guía de traducción para contribuir] (https://kanboard.net/documentation/translations).
+
+
+Quiero mejorar la documentación
+-----------------------------------
+- ¿Crees que algo no está claro, existen errores gramaticales, errores tipográficos, otra cosa ?
+- La documentación está escrita en Markdown y se almacena en la carpeta `docs`.
+- Editar los archivos y enviar un Pull-Request
+- La documentación se sincroniza con el repositorio y el sitio web oficial .
+
+Quiero contribuir al código
+--------------------------------
+Los pulls son siempre bienvenidos , al ser aceptado se tiene que seguir estas directrices:
+
+- ** Antes de hacer cualquier cambio grande o propuesta de diseño, abrir un nuevo ticket en comenzar una discusión **.
+- Si desea agregar una nueva función, respetar la filosofía detrás de Kanboard. ** Nos centramos en la simplicidad **, no queremos tener un software sobrecargado .
+- Lo mismo se aplica para la interface de usuario, ** ** simplicidad y eficiencia.
+- Enviar un solo pull por característica o corrección de errores.
+- Un pull más pequeño es más fácil y más rápido para revisar y fusionarlo.
+- Asegurarse [ de hacer las pruebas unitarias (tests.markdown).
+- Respetar los [estandares de codificación] (coding-standards.markdown).
+- Escribir código mantenible, evitar la duplicación de código, usar las buenas practicas de PHP.
+En cualquier caso, si no está seguro acerca de algo abierto crear un uevo ticket.
+
+Dile a tus amigos que Kanboard es impresionante
+---------------------------------------------
+
+Si utiliza Kanboard, corre la voz que le rodean.
+Diles que es software libre y de código abierto esto es cool.
diff --git a/doc/es_ES/creating-projects.markdown b/doc/es_ES/creating-projects.markdown
new file mode 100755
index 00000000..87510d12
--- /dev/null
+++ b/doc/es_ES/creating-projects.markdown
@@ -0,0 +1,40 @@
+Creación de proyectos
+=================
+
+Kanboard puede manejar múltiples proyectos. Hay dos tipos de proyectos
+
+- Proyectos por equipos
+- Proyectos privados pra una sola persona
+
+Creando proyectos para multiples usuarios
+------------------------------------------
+
+- Solamente los administradores y los administradores de proyecto pueden crear los proyectos.
+- La gestión de usuarios está disponible
+
+Desde el dashboard, click en el link **Nuevo proyecto**:
+
+![Formulario para la creación de proyecto](screenshots/new-project.png)
+
+Es muy facil , solo tienes que buscar un nombre para tu proyecto!
+
+Crear un proyecto privado
+--------------------------
+
+- Cualquiera puede crear un proyecto privado
+- **No hay** gestión de usuarios
+- Sólo el propietario y los administradores pueden acceder al proyecto
+
+Desde el dashboard, haga clic en el enlace **Nuevo proyecto privado**.
+
+
+Crear proyectos desde otro proyecto
+--------------------------------------
+
+Cuando tu creas un nuevo proyecto, tu puedes escoger o duplicar las propiedades de otro proyecto :
+
+- Permisos
+- Acciones
+- Swimlanes
+- Categorias
+- Tareas
diff --git a/doc/es_ES/creating-tasks.markdown b/doc/es_ES/creating-tasks.markdown
new file mode 100755
index 00000000..970be533
--- /dev/null
+++ b/doc/es_ES/creating-tasks.markdown
@@ -0,0 +1,31 @@
+Creacin de tarea
+==============
+
+Desde el tablero, haga clic en el signo ms **plus** al lado del nombre de la columna
+
+![Creacin de tarea desde el tablero](screenshots/task-creation-board.png)
+
+A continuacin, aparece el formulario de creacin de tareas:
+
+![Formulario de creacin de tareas](screenshots/task-creation-form.png)
+
+Descripcin de campos:
+
+- **Titulo**: El ttulo de su tarea, que se podr ver en el tablero.
+- **Descripcin**: Descripcin que usa el formato [Markdown](syntax-guide.markdown).
+- **Tags**: Lista de etiquetas asociadas a las tareas
+- **Crear otra tarea**:Marque esta casilla si desea crear una tarea similar (sern pre-llenados algunos campos)..
+- **Color**: Escoger el color de la tarjeta.
+- **Asignado**: Persona que trabajara en la tarea.
+- **Categora**: Slo una categora puede ser asignado a una tarea (visibles slo si los proyectos tienen categoras).
+- **Columna**: La columna en la que se cre la tarea, su tarea se coloca en la parte inferior.
+- **Prioridad**: AL Prioridad de la tarea, el intervalo se puede definir en la configuracin del proyecto, los valores por defecto son P0 a P3.
+- **Complejidad**: Se utiliza en la gestin de proyectos giles (Scrum), los puntos de complejidad o de la historia es un nmero que le dice al equipo lo difcil es la historia. A menudo, las personas utilizan la serie de Fibonacci.
+- **Referencia**: ID externo para la tarea, por ejemplo, puede ser el nmero de entradas que provienen de otro sistema
+- **Estimacin original** : Estimacin de horas para completar la tarea.
+- **Tiempo transcurrido** : El tiempo dedicado a trabajar en la tarea.
+- **Fecha de Inicio** : Se trata de un campo de fecha y hora.
+- **Fecha de vencimiento** : Las tareas vencidas se tiene una fecha de vencimiento prxima rojo y las fechas de vencimiento ser de color negro en el tablero. Varios formato de fecha se aceptan adems del selector de fecha.
+
+
+Con el enlace de vista previa, se puede ver la descripcin de la tarea convertiendo la sintaxis de Markdown.
diff --git a/doc/es_ES/cronjob.markdown b/doc/es_ES/cronjob.markdown
new file mode 100755
index 00000000..b7dc5cee
--- /dev/null
+++ b/doc/es_ES/cronjob.markdown
@@ -0,0 +1,32 @@
+Programaci�n de Jobs en background
+==================================
+
+Para trabajar correctamente,Kanboard requiere que se corra un job en background diariamente.
+Usualmente en plataformas Unix, este proceso se hace con `cron`.
+
+Este job es necesario para estas caracteristicas:
+
+- Reportes y analisis (calcular diariamente las estadisticas de cada proyecto)
+- Enviar notificaciones de tareas atrasadas.
+- Ejecutar automaticamente acciones conectadas a el evento "Daily background job for tasks"
+
+Configuraci�n de plataformas Unix y Linux
+-----------------------------------------
+
+Hay varias maneras de definir una tarea programada en sistemas operativos Unix/Linux , este ejemplo es para Ubuntu 14.04 .
+El procedimiento es similar a otros sistemas.
+
+Editar el crontab del usuario de tu servidor web
+
+```bash
+sudo crontab -u www-data -e
+```
+
+Ejemplo para ejecutar diariamente cronjob a las 8am:
+
+```bash
+0 8 * * * cd /path/to/kanboard && ./cli cronjob >/dev/null 2>&1
+```
+
+Nota : El proceso del cronjob debe tener acceso a escritura de la base de datos en caso de usar Sqlite.
+Usualmente, el cronjob corre bajo el usuario del servidor web. ** www-data , Ejemplo **
diff --git a/doc/es_ES/debian-installation.markdown b/doc/es_ES/debian-installation.markdown
new file mode 100644
index 00000000..5636744b
--- /dev/null
+++ b/doc/es_ES/debian-installation.markdown
@@ -0,0 +1,65 @@
+Como instalar Kanboard en debian
+================================
+
+Nota: Algunas caracteristicas de Kanboard requieren que tu corras [un job en background diariamente](cronjob.markdown).
+
+Debian 8 (Jessie)
+-----------------
+
+Instalar Apache y PHP :
+
+```bash
+apt-get update
+apt-get install -y php5 php5-sqlite php5-gd unzip
+service apache2 restart
+```
+
+Instalar Kanboard
+
+```bash
+cd /var/www/html
+wget https://kanboard.net/kanboard-latest.zip
+unzip kanboard-latest.zip
+chown -R www-data:www-data kanboard/data
+rm kanboard-latest.zip
+```
+
+Debian 7 (Wheezy)
+-----------------
+
+Instalar Apache y PHP
+
+```bash
+apt-get update
+apt-get install -y php5 php5-sqlite php5-gd unzip
+```
+
+Instalar Kanboard
+
+```bash
+cd /var/www
+wget https://kanboard.net/kanboard-latest.zip
+unzip kanboard-latest.zip
+chown -R www-data:www-data kanboard/data
+rm kanboard-latest.zip
+```
+
+Debian 6 (Squeeze)
+------------------
+
+Instalar Apache y PHP
+
+```bash
+apt-get update
+apt-get install -y libapache2-mod-php5 php5-sqlite php5-gd unzip
+```
+
+Instalar Kanboard:
+
+```bash
+cd /var/www
+wget https://kanboard.net/kanboard-latest.zip
+unzip kanboard-latest.zip
+chown -R www-data:www-data kanboard/data
+rm kanboard-latest.zip
+```
diff --git a/doc/es_ES/docker.markdown b/doc/es_ES/docker.markdown
new file mode 100644
index 00000000..3204563f
--- /dev/null
+++ b/doc/es_ES/docker.markdown
@@ -0,0 +1,105 @@
+Como ejecutar Kanboard con Docker?
+================================
+
+Kanboard puede funcionar facilmente con [Docker] (https://www.docker.com).
+
+El tamaño de la imagen es aproximadamente de **70MB** y contiene:
+
+- [Alpine Linux](http://alpinelinux.org/)
+- The [process manager S6](http://skarnet.org/software/s6/)
+- Nginx
+- PHP 7
+
+La tarea programada de Kanboard tambien esta todos los dias a la medianoche.
+La reescritura de la URL esta activada e incluida en el archivo de configuracion.
+
+Cuando el contenedor esta funcionando, la memoria ocupa alrededor de **30MB**.
+
+
+Utilice la versión estable
+----------------------
+
+Para buscar la ultima versión estable de Kanboard use la etiqueta **estable**:
+
+```bash---terminal
+docker pull kanboard/kanboard
+docker run -d --name kanboard -p 80:80 -t kanboard/kanboard:stable
+```
+
+Utilice la versión de desarollo (build automatico)
+---------------------------------------------
+
+Cada commit nuevo en el repositorio crea una nueva construccion en la [Docker Hub](https://registry.hub.docker.com/u/kanboard/kanboard/).
+
+
+```bash---terminal
+docker pull kanboard/kanboard
+docker run -d --name kanboard -p 80:80 -t kanboard/kanboard:latest
+```
+
+La etiqueta **ultimo** es la **version de desarrollo** de Kanboard, uselo bajo su propio riesgo.
+
+Construya su propia imagen acoplable
+---------------------------
+
+Hay un `Dockerfile` en el repositorio de Kanboard para construir su imagen acoplable.
+Clone el repositorio de Kanboard y ejecute el siguiente camando.
+
+```bash---terminal
+docker build -t youruser/kanboard:master .
+```
+
+o
+
+```bash---terminal
+make docker-image
+```
+
+Para ejecutar su contenedor en el fondo del puerto 80:
+
+```bash--terminal
+docker run -d --name kanboard -p 80:80 -t youruser/kanboard:master
+```
+
+Volúmenes
+-------
+
+Usted puede adjuntar dos volúmenes de su contenedor:
+
+- Carpeta de datos: `/var/www/app/data`
+- Complementos de carpeta: `/var/www/app/plugins`
+
+
+Use el indicador `-v` par montar un volumen en el ordenador central como se describe en [official Docker documentation](https://docs.docker.com/engine/userguide/containers/dockervolumes/).
+
+
+Actualizar contenedor
+----------------------
+
+-Ponga la nueva imagen
+-Elimine el nuevo contenedor
+-Reinicie el nuevo contenedor con algunos volúmenes
+
+Variables de entorno
+---------------------
+
+La lista de las varibles de entorno esta disponible en [esta pagina](env.markdown).
+
+Archivos configurados
+------------
+
+- El contenedor ya incluye un archivo de configuracion personalizado `/var/www/app/config.php`.
+- Puede almacenar su propio archivo de configuracion de volumen de datos`/var/www/app/data/config.php`.
+
+
+Referencias
+----------
+
+- [Official Kanboard images](https://registry.hub.docker.com/u/kanboard/kanboard/)
+- [Docker documentation](https://docs.docker.com/)
+- [Dockerfile stable version](https://github.com/kanboard/docker)
+- [Dockerfile dev version](https://github.com/kanboard/kanboard/blob/master/Dockerfile)
+- [Imagenes oficiales de Kanboard](https://registry.hub.docker.com/u/kanboard/kanboard/)
+- [Documentacionde Docker](https://docs.docker.com/)
+- [Dockerfile version estable](https://github.com/kanboard/docker)
+- [Dockerfile version dev](https://github.com/kanboard/kanboard/blob/master/Dockerfile)
diff --git a/doc/es_ES/faq.markdown b/doc/es_ES/faq.markdown
new file mode 100755
index 00000000..9ea2109e
--- /dev/null
+++ b/doc/es_ES/faq.markdown
@@ -0,0 +1,132 @@
+Preguntas frecuentes
+==========================
+
+Tu puedes recomendar un proveedor de web hosting para Kanboard?
+---------------------------------------------------------------
+
+Kanboard funciona bien con cualquier VPS proveedor de hosting como [Digital Ocean](https://www.digitalocean.com/?refcode=4b541f47aae4),
+[Linode](https://www.linode.com/?r=4e381ac8a61116f40c60dc7438acc719610d8b11) o [Gandi](https://www.gandi.net/).
+
+Para tener el mejor performance , elegir un proveedor con el disco rpido de I/O porque Kanboard utilizar SQLite de forma predeterminada .
+Evitar los proveedores de alojamiento que utilizan un punto de montaje NFS compartido.
+
+
+Me sale una pgina en blanco despus de instalar o actualizar Kanboard
+----------------------------------------------------------------------
+
+- Verificar si tienes instalados todos los requerimientos en tu servidor
+- Verificar el log de errores de PHP y Apache
+- Verificar si los archivos tienen los permisos correctos
+- Si utiliza un agresivo OPcode caching, haz un reload a tu web-server o php-fpm
+
+
+Si Tienes el error "No hay CSPRNG adecuado instalado en su sistema "
+-----------------------------------------------------------------------
+
+Si tu usas PHP < 7.0, Tu necesitas tener la extensin openssl habilitada o `/dev/urandom` accesible desde la aplicacin si se
+restringe por un `open_basedir`
+
+
+Pgina no encontrada y la URL parece mal (&amp;amp;)
+--------------------------------------------------
+
+- La URL se mira como `/?controller=auth&amp;action=login&amp;redirect_query=` instanciada de `?controller=auth&action=login&redirect_query=`
+- Kanboard regresa el error "Page not found"
+
+Este problema proviene de la configuracin de PHP , el valor de ` arg_separator.output` no es defecto del PHP , hay diferentes maneras de solucionar que:
+
+Cambiar el valor directamente en su ` php.ini` si es posible :
+
+`` `
+arg_separator.output = "& "
+`` `
+
+Sustituir el valor con un ` .htaccess` :
+
+`` `
+arg_separator.output php_value "& "
+`` `
+
+De lo contrario Kanboard tratar de anular el valor directamente en PHP .
+
+
+Error de autenticacin con la API y Apache + PHP - FPM
+--------------------------------------------------------
+
+Php-cgi bajo Apache HTTP basico no pasa user/pass forma predeterminada .
+Para que esta solucin funcione , aadir estas lneas a su archivo ` .htaccess` :
+
+```
+RewriteCond %{HTTP:Authorization} ^(.+)$
+RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
+```
+
+
+Problemas conocidos con eAccelerator
+------------------------------
+
+Kanboard no funciona muy bien con [eAccelerator](http://eaccelerator.net).
+El problema puede ser causado una pgina en blanco o un accidente de Apache :
+
+```
+[Wed Mar 05 21:36:56 2014] [notice] child pid 22630 exit signal Segmentation fault (11)
+```
+
+La mejor manera de evitar este problema es desactivar eAccelerator o definir manualmente los archivos que desea almacenar en cach con el parmetro de configuracin ` eaccelerator.filter` .
+
+The project [eAccelerator parece muerto y no se actualiza desde 2012](https://github.com/eaccelerator/eaccelerator/commits/master).
+Recomendamos para cambiar a la ultima versin de PHP por que el bundled viene con [OPcache](http://php.net/manual/en/intro.opcache.php).
+
+
+Por que el requerimiento minimo es PHP 5.3.3?
+-----------------------------------------
+
+Kanboard utiliza la funcion `password_hash()` para encriptar los passwords pero solo esta disponible ne la version PHP >= 5.5.
+
+Sin embargo, hay un back-port para [versiones de php anteriores](https://github.com/ircmaxell/password_compat#requirements).
+Esta biblioteca requiere al menos PHP 5.3.7 para que funcione correctamente.
+
+Al parecer , CentOS y Debian tienen parches de seguridad en su back-port para PHP 5.3.3 y al parecer estan bien.
+
+Kanboard v1.0.10 y v1.0.11 requiere al menos PHP 5.3.7 , pero este cambio se ha vuelto a ser compatible con PHP 5.3.3 con Kanboard > = v1.0.12
+
+
+Cmo probar Kanboard con el PHP incorporado en el servidor web?
+---------------------------------------------------------------
+
+Si tu no quieres instalar un servidor web como Apache en tu localhost, tu puedes testearlo con el [servidor web embebido de PHP](http://www.php.net/manual/en/features.commandline.webserver.php):
+
+```bash
+unzip kanboard-VERSION.zip
+cd kanboard
+php -S localhost:8000
+open http://localhost:8000/
+```
+
+
+Como instalar Kanboard en Yunohost?
+------------------------------------
+
+[YunoHost](https://yunohost.org/) es un sistema operativo de servidor con el objetivo de hacer auto-alojamiento accesible para todos.
+
+Existe un [paquete para instalar Kanboard en Yunohost facilmente](https://github.com/mbugeia/kanboard_ynh).
+
+
+Dnde puedo encontrar una lista de proyectos relacionados?
+--------------------------------------------
+
+- [Kanboard API python client by @freekoder](https://github.com/freekoder/kanboard-py)
+- [Kanboard Presenter by David Eberlein](https://github.com/davideberlein/kanboard-presenter)
+- [CSV2Kanboard by @ashbike](https://github.com/ashbike/csv2kanboard)
+- [Kanboard for Yunohost by @mbugeia](https://github.com/mbugeia/kanboard_ynh)
+- [Trello import script by @matueranet](https://github.com/matueranet/kanboard-import-trello)
+- [Chrome extension by Timo](https://chrome.google.com/webstore/detail/kanboard-quickmenu/akjbeplnnihghabpgcfmfhfmifjljneh?utm_source=chrome-ntp-icon), [Source code](https://github.com/BlueTeck/kanboard_chrome_extension)
+- [Python client script by @dzudek](https://gist.github.com/fguillot/84c70d4928eb1e0cb374)
+- [Shell script for SQLite to MySQL/MariaDB migration by @oliviermaridat](https://github.com/oliviermaridat/kanboard-sqlite2mysql)
+- [Git hooks for integration with Kanboard by Gene Pavlovsky](https://github.com/gene-pavlovsky/kanboard-git-hooks)
+
+
+Hay algunos tutoriales sobre Kanboard en otro idioma?
+-----------------------------------------------------------
+
+- [Artculo serie alemana sobre Kanboard](http://demaya.de/wp/2014/07/kanboard-eine-jira-alternative-im-detail-installation/)
diff --git a/doc/es_ES/freebsd-installation.markdown b/doc/es_ES/freebsd-installation.markdown
new file mode 100644
index 00000000..9d8d0025
--- /dev/null
+++ b/doc/es_ES/freebsd-installation.markdown
@@ -0,0 +1,132 @@
+Instalacion en FreeBSD
+=======================
+
+Instalación de paquetes
+---------------------
+
+```bash---terminal
+$ pkg update
+$ pkg upgrade
+$ pkg install apache24 mod_php56 kanboard
+```
+
+Habilitar Apache en `/etc/rc.conf`;
+
+```bash---terminal
+$ echo apache24_enable="YES" >> /etc/rc.conf
+```
+
+Preparar PHP para Apache:
+
+```bash---terminal
+$ echo "AddType application/x-httpd-php .php" >> /usr/local/etc/apache24/Includes/php.conf
+$ echo "DirectoryIndex index.php index.html" >> /usr/local/etc/apache24/Includes/php.conf
+```
+
+Iniciar Apache:
+
+```bash---terminal
+$ service apache24 start
+```
+
+Añadir enlace a la carpeta Kanboard en su docroot Apache:
+
+
+```bash---terminal
+cd /usr/local/www/apache24/data
+ln -s /usr/local/www/kanboard
+```
+
+Ir a http://your.server.domain.tld/kanboard and enjoy!
+
+*Notas*:
+- Si deseas utilizar funciones adicionales como la integracion con LDAP, etc.
+por favor instale el modulo PHP utilizando el paquete adecuado.
+- Es posible que tenga que ejecutar los permisos de la carpeta de datos.
+
+
+Instalacion de puertos
+---------------------
+
+Generalmente tres elementos tienen que instalarse:
+
+- Apache
+- mod_php for Apache
+- Kanboard
+
+Fetch y extraer puertos...
+
+```bash---terminal
+$ portsnap fetch
+$ portsnap extract
+```
+
+o actualizacion ya existente:
+
+```bash---terminal
+$ portsnap fetch
+$ portsnap update
+```
+
+Mas detalles con respecto a portsnap se puede encontrar en [FreeBSD Handbook](https://www.freebsd.org/doc/handbook/ports-using.html).
+
+Instalacion de Apache:
+
+```bash--terminal
+$ cd /usr/ports/www/apache24
+$ make install clean
+```
+
+Habilitar Apache en `/etc/rc.conf`:
+
+```bash---terminal
+$ echo apache24_enable="YES" >> /etc/rc.conf
+```
+
+Instalacion de mod_php para Apachec:
+
+```bash---terminal
+$ cd /usr/ports/www/mod_php5
+$ make install clean
+```
+
+Instalacion de los puertos de formulario para Kanboard
+
+```bash---terminal
+$ cd /usr/ports/www/kanboard
+$ make install clean
+```
+
+Configuracion de PHP para Apache
+
+
+```bash--terminal
+$ echo "AddType application/x-httpd-php .php" >> /usr/local/etc/apache24/Includes/php.conf
+$ echo "DirectoryIndex index.php index.html" >> /usr/local/etc/apache24/Includes/php.conf
+```
+
+Iniciando Apache:
+
+```bash---terminal
+$ service apache24 start
+```
+
+Ir a http://your.server.domain.tld/kanboard and enjoy!
+
+*Nota*:
+Si desea utilizar funciones adicionales como la intregacion con LDAP, etc.
+Instale el modulo PHP adecuado de `lang/php5-extensions`.
+
+
+Manual de instalacion
+-------------------
+
+Como en la version 1.0.16 Kanboard se puede encontrar en los puertos de FreeBSD no hay necesidad de instalarlo manualmente.
+
+
+Tome nota por favor
+--------------------
+
+- El puerto esta alojado en [bitbucket](https://bitbucket.org/if0/freebsd-kanboard/). Sientase libre de comentar, y sugerir cambios !
+- Algunas funciones de Kanboard requieren ejecutar[un trabajo en segundo plano todos los dias](cronjob.markdown).
+
diff --git a/doc/es_ES/heroku.markdown b/doc/es_ES/heroku.markdown
new file mode 100644
index 00000000..8de8b4da
--- /dev/null
+++ b/doc/es_ES/heroku.markdown
@@ -0,0 +1,38 @@
+Implementar Kanboard en Heroku
+=========================
+
+Usted puede tratar de forma gratuita en Kanboard[Heroku](https://www.heroku.com/).
+Puede utilizar este botón de un solo clic instalar o siga las instrucciones del manual abajo:
+
+[![Deploy](https://www.herokucdn.com/deploy/button.png)](https://heroku.com/deploy?template=https://github.com/kanboard/kanboard)
+
+Requerimientos
+------------
+- Cuenta de Heroku, se puede utilizar una cuenta gratuita
+- Herramientas de línea de comandos instalados Heroku
+
+Manual de Instrucciones
+-------------------
+
+```bash
+# Obtener la ultima version de desarrollo
+git clone https://github.com/kanboard/kanboard.git
+cd kanboard
+
+# Empuje el código para Heroku (También puede utilizar SSH si Git sobre HTTP no funciona)
+heroku create
+git push heroku master
+
+# Iniciar un nuevo banco de pruebas con una base de datos PostgreSQL
+heroku ps:scale web=1
+heroku addons:add heroku-postgresql:hobby-dev
+
+# Abra su navegador
+heroku open
+```
+
+Limitaciones
+-----------
+
+- El almacenamiento de Heroku es efímera, eso significa que los archivos cargados a través de Kanboard no son persistentes después de un reinicio. Es posible que desee instalar un plugin para almacenar sus archivos en un proveedor de almacenamiento en la nube como [Amazon S3](https://github.com/kanboard/plugin-s3).
+- Algunas funciones de Kanboard requieren que ejecute [un trabajo en segundo plano todos los días] (cronjob.markdown).
diff --git a/doc/es_ES/installation.markdown b/doc/es_ES/installation.markdown
new file mode 100644
index 00000000..f3dfc495
--- /dev/null
+++ b/doc/es_ES/installation.markdown
@@ -0,0 +1,72 @@
+Instalación
+
+En primer lugar, comprobar los [requisitos] ( requirements.markdown)antes de ir más lejos.
+
+Del archivo (versión estable)
+---------------------------------
+
+
+1. Debe tener un servidor web con PHP instalado
+2. Descargar el código fuente y copiar el directorio ` kanboard` en la que desea.
+3. Comprobar si el directorio ` data` se puede escribir
+4. Con el navegador vaya a < http://yourpersonalserver/kanboard >
+5. El nombre de usuario y contraseña por defecto es **admin/admin**
+6. Comience a utilizar el software
+7. No se olvide de cambiar su contraseña!
+
+
+La carpeta de datos se utiliza para almacenar:
+
+- Base de datos SQLite: ` db.sqlite`
+- Archivo de depuración: ` debug.log` (si está activado el modo de depuración)
+- Archivos cargados: ` ficheros / *`
+- miniaturas de imagen: ` ficheros / miniaturas / *`
+
+Las personas que están utilizando una base de datos remota (MySQL / PostgreSQL) y un almacenamiento de archivos a distancia (AWS S3 o similar) no necesariamente tienen que tener una carpeta de datos local persistente o para cambiar el permiso.
+
+Desde el repositorio (versión de desarrollo)
+-----------------------------------------
+
+
+Debe instalar [compositora] (https://getcomposer.org/)para utilizar este método.
+
+1. ` git clone https: // github.com / kanboard / kanboard.git`
+2. ` composer instalar --no- dev`
+3. Ir a la tercera etapa justo por encima
+
+Nota: Este método se instalará la versión de **desarrollo actual** , utilice a su propio riesgo .
+
+Instalación exterior de la raíz del documento
+---------------------------------------------
+
+Si desea instalar Kanboard fuera de la raíz de documentos del servidor web, es necesario crear al menos estos enlaces simbólicos:
+
+```bash
+.
+├── assets -> ../kanboard/assets
+├── cli -> ../kanboard/cli
+├── doc -> ../kanboard/doc
+├── favicon.ico -> ../kanboard/favicon.ico
+├── index.php -> ../kanboard/index.php
+├── jsonrpc.php -> ../kanboard/jsonrpc.php
+└── robots.txt -> ../kanboard/robots.txt
+```
+
+El ` .htaccess` es opcional, ya que su contenido puede ser incluido directamente en la configuración de Apache.
+
+También puede definir una ubicación personalizada para los plugins y carpetas de archivos cambiando el [archivo de configuración] (config.markdown).
+
+La instalación opcional
+
+---------------------
+
+- Algunas funciones de Kanboard requieren que ejecuta [un trabajo en segundo plano todos los días] (cronjob.markdown) (Informes y análisis)
+- [Instalar el trabajador fondo] (worker.markdown) para mejorar las prestaciones
+
+Seguridad
+---------
+
+
+- No se olvide de cambiar el usuario por defecto / contraseña
+- No permita a todo el mundo para acceder al directorio ` data` de la URL.
+Ya existe un ` .htaccess` para Apache , pero nada para los demás servidores web.
diff --git a/doc/es_ES/kanban-vs-todo-and-scrum.markdown b/doc/es_ES/kanban-vs-todo-and-scrum.markdown
index 6e8d9e6c..5295a6d1 100644
--- a/doc/es_ES/kanban-vs-todo-and-scrum.markdown
+++ b/doc/es_ES/kanban-vs-todo-and-scrum.markdown
@@ -11,7 +11,7 @@ Kanban vs Todo lists
### Kanban:
-- Multi fases,
+- Multi fases,
- Concentración absoluta para evitar multitareas por que se puede establecer un limite por columna para mejorar el progreso
diff --git a/doc/es_ES/keyboard-shortcuts.markdown b/doc/es_ES/keyboard-shortcuts.markdown
new file mode 100755
index 00000000..9e75a138
--- /dev/null
+++ b/doc/es_ES/keyboard-shortcuts.markdown
@@ -0,0 +1,38 @@
+Atajos de teclado ** keyboard shortcuts **
+==========================================
+
+La disponibilidad de los Atajos de teclado depende de la página que está actualmente .
+
+Vistas de proyectos (Board, Calendario, Lista, Gantt)
+--------------------------------------------
+
+- Cambie a la visión general del proyecto = **v o**
+- Cambie ala vista del tablero = **v b** (presiona **v** y despues **b**)
+- Cambie ala vista del calendario = **v c**
+- Cambie a la vista de lista = **v l**
+- Cambie a la vista de Gantt = **v g**
+
+Vista de tablero
+---------------
+
+- Nueva tarea = **n**
+- Expandir/colapsar tarea = **s**
+- Vista Compacta/Amplia = **c**
+
+Vista de tarea
+---------
+
+- Editar tarea = **e**
+- Nueva subtarea = **s**
+- Nuevo comentario = **c**
+- Nuevo link interno = **l**
+
+Aplicación
+-----------
+
+- Visualizar la lista de atajos de teclado = **?**
+- Abrir tablero y cambiarlo = **b**
+- Ir a la caja de busqueda = **f**
+- Eliminar la caja de busqueda = **r**
+- Cerrar dialog box = **ESC**
+- Submit al formulario = **CTRL+ENTER** or **⌘+ENTER**
diff --git a/doc/es_ES/mysql-configuration.markdown b/doc/es_ES/mysql-configuration.markdown
new file mode 100755
index 00000000..9428d392
--- /dev/null
+++ b/doc/es_ES/mysql-configuration.markdown
@@ -0,0 +1,74 @@
+Configuracin Mysql/MariaDB
+===========================
+
+
+Por defecto Kanboard utilizar SQLite para almacenar tus datos.
+Sin embargo, es posible usar MySQL o MariaDB en lugar de SQLite.
+
+Requirimientos
+------------
+
+- Mysql server
+- Instalar la extensin `pdo_mysql` en PHP
+
+Nota: Kanboard esta testeada con **Mysql >= 5.5 y MariaDB >= 10.0**
+
+configuracin Mysql
+-------------------
+
+### Crear una base de datos
+
+El primer paso es crear una base de datos en tu servidor MySQL
+Por ejemplo, se puede hacer eso con el cliente de lnea de comandos mysql:
+
+```sql
+CREATE DATABASE kanboard;
+```
+
+### Crear un archivo de configuracin
+
+El archivo `config.php` debera contener estos valores:
+
+```php
+<?php
+
+// Elegimos el uso de MySQL en lugar de SQLite
+define('DB_DRIVER', 'mysql');
+
+// Mysql parametros
+define('DB_USERNAME', 'REPLACE_ME');
+define('DB_PASSWORD', 'REPLACE_ME');
+define('DB_HOSTNAME', 'REPLACE_ME');
+define('DB_NAME', 'kanboard');
+```
+
+Nota: Se puede renombrar el archivo de plantilla `config.default.php` a `config.php`.
+
+### Importando SQL dump (metodo alternativo)
+
+
+Por primera vez, se ejecutar Kanboard uno por uno cada migracin de base de datos y este proceso puede tardar algn tiempo de acuerdo a su configuracin.
+
+Para evitar cualquier tiempo de espera de potencial se puede inicializar la base de datos directamente importando el esquema de SQL:
+
+```bash
+mysql -u root -p my_database < app/Schema/Sql/mysql.sql
+```
+
+El archivo `app/Schema/Sql/mysql.sql` es un dump SQL que representa la ultima versin de la base de datos
+
+SSL configuracin
+-----------------
+
+Estos parmetros tienen que ser definidas para permitir la conexin SSL Mysql:
+
+```php
+// Mysql SSL key
+define('DB_SSL_KEY', '/path/to/client-key.pem');
+
+// Mysql SSL certificados
+define('DB_SSL_CERT', '/path/to/client-cert.pem');
+
+// Mysql SSL CA
+define('DB_SSL_CA', '/path/to/ca-cert.pem');
+```
diff --git a/doc/es_ES/plugin-authentication-architecture.markdown b/doc/es_ES/plugin-authentication-architecture.markdown
new file mode 100644
index 00000000..86069aa0
--- /dev/null
+++ b/doc/es_ES/plugin-authentication-architecture.markdown
@@ -0,0 +1,99 @@
+Arquitectura de autenticacin
+=============================
+
+Kanboard provee una flexible y conectable arquitectura de autenticacin.
+
+Por default, el usuario puede autenticarse con multiple metodos:
+
+- Autenticacin por usuario y password (Base de datos local y LDAP)
+- Autenticacin OAuth2
+- Autenticacin Reverse-Proxy
+- Autenticacin basada en Cookie (Recuerdame)
+
+Adems, despues de una autenticacin satisfactoria un puede hacerse post de autenticacin Two-Factor .
+Kanboard sopoarta nativamente el standart TOTP.
+
+Interfaces de autenticacin
+----------------------------
+
+Para tener un sistema conectable, los drivers de autenticacin deben implementar un conjunto de interfaces
+
+| Interface | Rol |
+|------------------------------------------|------------------------------------------------------------------|
+| AuthenticationProviderInterface | Interface base para otras interfaces de autenticacin |
+| PreAuthenticationProviderInterface | The user is already authenticated al alcanzar la aplicacin, Usualmente los servidores web definen algunas variables de entorno |
+| PasswordAuthenticationProviderInterface | El metodo de autenticacin que usa el username y password provienen del formulario de login |
+| OAuthAuthenticationProviderInterface | Proveedores OAuth2 |
+| PostAuthenticationProviderInterface | Drivers de autenticacin Two-Factor ,pide el cdigo a confirmar |
+| SessionCheckProviderInterface | Los proveedores que son capaces de comprobar si la sesin de usuario es vlida |
+
+### Ejemplos de autenticacin de proveedores:
+
+- Database por default metodos a implementar `PasswordAuthenticationProviderInterface` y `SessionCheckProviderInterface`
+- Reverse-Proxy metodos a implementar `PreAuthenticationProviderInterface` y `SessionCheckProviderInterface`
+- Google metodos a implementar `OAuthAuthenticationProviderInterface`
+- LDAP metodos a implementar `PasswordAuthenticationProviderInterface`
+- RememberMe cookie metodos a implementar `PreAuthenticationProviderInterface`
+- Two-Factor TOTP metodos a implementar `PostAuthenticationProviderInterface`
+
+flujo de trabajo de autenticacin ** Workflow **
+------------------------------------------------
+
+Para cada peticion HTTP:
+
+1. Si la sesin de usuario esta abierta, ejecuta el registro de proveedores que implementa`SessionCheckProviderInterface`
+2. Ejecuta todos los proveedores que implementa `PreAuthenticationProviderInterface`
+3. Si el usuario final hace un submit al formulario del login, Los proveedores que implementa `PasswordAuthenticationProviderInterface` are executed
+4. Si el usuario final quiere usar OAuth2, el selecciona el proveedor a ejecutar
+5. Despues de una autenticacin satisfactoria, el ultimo registro utilizar `PostAuthenticationProviderInterface`
+6. Sincronizar la informacin del usuario si es necesario
+
+Este workflow es manejado por la clase `Kanboard\Core\Security\AuthenticationManager`.
+
+Eventos disparados:
+
+- `AuthenticationManager::EVENT_SUCCESS`: autenticacin satisfactoria
+- `AuthenticationManager::EVENT_FAILURE`: autenticacin fallida
+
+Cada vez que se produce un evento de fallo , el contador de intentos fallidos se incrementa.
+
+La cuenta de usuario se puede bloquear para el perodo de tiempo configurado y un captcha puede ser mostrado para evitar ataques de fuerza bruta .
+
+Interface de usuario del proveedor
+---------------------------------
+
+Cuando la autenticacin es satisfactoria, la `AuthenticationManager` pedura la informacin del usuario para que el driver llame al metodo `getUser()`.
+Este metodo debe regresar un objeto que implementa la interface `Kanboard\Core\User\UserProviderInterface`.
+
+Esta clase abstracta reune la informacin dede otro sistema.
+
+Ejemplos :
+
+- `DatabaseUserProvider` proporciona informacin para un usuario interno
+- `LdapUserProvider` para un usuario LDAP
+- `ReverseProxyUserProvider` para un usuario Reverse-Proxy
+- `GoogleUserProvider` represtan un usuario de Google
+
+Los mtodos para la interface del proveedor de Usuario:
+
+- `isUserCreationAllowed()`: Regresa true para permitir la creacin automtica de usuarios
+- `getExternalIdColumn()`: Obtener Identificacin del nombre de la columna externa (google_id, github_id, gitlab_id...)
+- `getInternalId()`: Obtener el id interno de la base de datos
+- `getExternalId()`: Obtener el id externo(Unique id)
+- `getRole()`: Obtener el rol de usuario
+- `getUsername()`: Obtener en nombre de usuario ** username **
+- `getName()`: Obtener nombre completo del usuario
+- `getEmail()`: Obtener el correo electronico del usuario
+- `getExternalGroupIds()`: Obtiene los ids externos del grupo, automticamente sincroniza la membresia del grupo y la presenta
+- `getExtraAttributes()`: Obtiene los atributos extras para ser mostrados a el usuario durante la sincronizacin local
+
+No es obligatorio que el metodo devuelva un valor.
+
+Sincronizacin de un usuario local
+----------------------------------
+
+La informacin del usuario puede ser sincronizada automticamente con la base de datos local.
+
+- Si el metodo`getInternalId()` regresa un valor no realiza la sincronizacin
+- Los metodos `getExternalIdColumn()` y `getExternalId()` debe regresar un valor para sincronizar el usuario
+- Las propiedades que regresan un ** String ** vacios no se sincronizan
diff --git a/doc/es_ES/plugin-authentication.markdown b/doc/es_ES/plugin-authentication.markdown
new file mode 100644
index 00000000..05742156
--- /dev/null
+++ b/doc/es_ES/plugin-authentication.markdown
@@ -0,0 +1,42 @@
+Plugin de autenticación
+=====================
+
+EL nuevo backend de autenticación se puede escribir con muy pocas lineas de codigo.
+
+Registro de proveedores
+-----------------------
+
+En el metodo `initialize()` nuestro plugin, llama al metodo `register()` de la clase `AuthenticationManager`:
+
+```php
+public function initialize()
+{
+ $this->authenticationManager->register(new ReverseProxyLdapAuth($this->container));
+}
+```
+
+El objeto proveniente de el metodo `register()` debe implementar one de las interfaces de autenticación predefidas.
+
+Esas interfaces estan definidas en los namespace `Kanboard\Core\Security`:
+
+- `Kanboard\Core\Security\PreAuthenticationProviderInterface`
+- `Kanboard\Core\Security\PostAuthenticationProviderInterface`
+- `Kanboard\Core\Security\PasswordAuthenticationProviderInterface`
+- `Kanboard\Core\Security\OAuthAuthenticationProviderInterface`
+
+
+
+El único requisito es implementar las interfaces, la clase se puede escribir de la manera deseada y situado en cualquier lugar en el disco
+
+Usuario del proveedor
+----------------------
+
+Cuando la autenticación es satisfactoria, tu driver debe regresar un objato que representa al usuario.
+Este objeto debe implementasr la interface `Kanboard\Core\User\UserProviderInterface`.
+
+Ejemplo de plugin de autenticación
+----------------------------------
+
+- [Autenticación de proveedores incluido en kanboard](https://github.com/kanboard/kanboard/tree/master/app/Auth)
+- [Reverse-Proxy Autenticación con soporte LDAP](https://github.com/kanboard/plugin-reverse-proxy-ldap)
+- [Two-Factor Autenticación SMS](https://github.com/kanboard/plugin-sms-2fa)
diff --git a/doc/es_ES/plugin-authorization-architecture.markdown b/doc/es_ES/plugin-authorization-architecture.markdown
new file mode 100644
index 00000000..884e90aa
--- /dev/null
+++ b/doc/es_ES/plugin-authorization-architecture.markdown
@@ -0,0 +1,39 @@
+Arquitecuta de autorizacin
+===========================
+
+Kanboard [soporta multiples roles](roles.markdown) a nivel de aplicacin y a nivel de proyecto.
+
+Workflow de autorizacin
+--------------------------
+
+Para cada solicitud HTTP:
+
+1. Autorizar o no el acceso a los recursos en base a la lista de acceso a las aplicaciones
+2. Si el recurso es para un projecto (board, tarea...):
+ 1. Extrae los roles de usuario para este proyecto
+ 2. Permitir/Denegar accesos basados en el mapa de acceso del proyecto
+
+Extendiendo mapa de accesos
+---------------------------
+
+Lista de accesos (ACL) se basa en el nombre de clase del controlador y el nombre del mtodo
+La lista de acceso est a cargo de la clase `Kanboard\Core\Security\AccessMap`.
+
+Hay dos mapa de acceso: una para la aplicacin y la otra para un proyecto.
+
+- Acceso al mapa de aplicacin : `$this->applicationAccessMap`
+- Acceso al mapa del proyecto: `$this->projectAccessMap`
+
+Ejemplos para definir una nueva poltica para tu plugin:
+
+```php
+// Todos los metodos de la clase MyController:
+$this->projectAccessMap->add('MyController', '*', Role::PROJECT_MANAGER);
+
+// Todos los metodos:
+$this->projectAccessMap->add('MyOtherController', array('create', 'save'), Role::PROJECT_MEMBER);
+```
+
+Los roles estan defidos en la clase `Kanboard\Core\Security\Role`.
+
+Clase de autorizacin (`Kanboard\Core\Security\Authorization`) comprobar el acceso de cada pgina.
diff --git a/doc/es_ES/plugin-automatic-actions.markdown b/doc/es_ES/plugin-automatic-actions.markdown
new file mode 100644
index 00000000..6e0a9b65
--- /dev/null
+++ b/doc/es_ES/plugin-automatic-actions.markdown
@@ -0,0 +1,61 @@
+Agregando acciones automticas
+===============================
+
+Agregando una nueva acccion automtica es bastante simple.
+
+Creando una nueva accion
+------------------------
+
+Tus acciones automticas deben heradarse de la clase `Kanboard\Action\Base`.
+
+Varios mtodos abstractos deben ser implementadas por s mismo:
+
+| Metodos | Descripcin |
+|-------------------------------------|------------------------------------------------------------------|
+| `getDescription()` | Descripcion visible en la interface del usuario |
+| `getCompatibleEvents()` | Obtener las listas de eventos compatibles |
+| `getActionRequiredParameters()` | Obtener los parametros requeridos para la accin (definidos por el usuario)|
+| `getEventRequiredParameters()` | Obtener los parametros requeridos para el evento |
+| `doAction(array $data)` | Ejecutar la accin, Debe regresar true si fue satisfactorio |
+| `hasRequiredCondition(array $data)` | Comprobar si los datos de eventos cumplen la condicin de accin |
+
+Tu accion automatica es identificada en kanboard utilizando el nombre de la clase absoluta con el espacio de nombre incluido
+
+Agregando nuevos eventos
+------------------------
+
+La lista de eventos de la aplicacin est disponible en la clase `Kanboard\Core\Event\EventManager::getAll()`.
+Sin embargo, si tu plugin dispara nuevos eventos, tu puedes registrar estos eventos :
+
+```php
+$this->actionManager->getAction('\Kanboard\Plugin\MyPlugin\MyActionName')->addEvent('my.event', 'My event description');
+```
+
+Tu puedes extender la lista de eventos compatibles de acciones existentes para ser usada en algun metodo.
+
+Registra la accin
+----------------------
+
+Tu tienes que llamar el metodo `register()` desde la clase `Kanboard\Core\Action\ActionManager`:
+
+```php
+<?php
+
+namespace Kanboard\Plugin\AutomaticAction;
+
+use Kanboard\Core\Plugin\Base;
+use Kanboard\Plugin\AutomaticAction\Action\TaskRename;
+
+class Plugin extends Base
+{
+ public function initialize()
+ {
+ $this->actionManager->register(new TaskRename($this->container));
+ }
+}
+```
+
+Ejemplo
+-------
+
+- [Ejemplo de accin automatica](https://github.com/kanboard/plugin-example-automatic-action)
diff --git a/doc/es_ES/plugin-avatar-provider.markdown b/doc/es_ES/plugin-avatar-provider.markdown
new file mode 100644
index 00000000..2cce0647
--- /dev/null
+++ b/doc/es_ES/plugin-avatar-provider.markdown
@@ -0,0 +1,32 @@
+Agregando un nuevo avatar del proveedor
+=======================================
+
+Registrar
+------------
+
+```php
+$this->avatarManager->register(new CustomAvatarProvider());
+```
+
+Interface
+---------
+
+El proveedor debe implementar la interface `Kanboard\Core\User\Avatar\AvatarProviderInterface`:
+
+
+| Metodo | Descripcion |
+|-------------------------------|---------------------------------------------------------------|
+| `render(array $user, $size)` | Renderizar HTML |
+| `isActive(array $user)` | Regresa un boolean si el proveedor esta activo |
+
+
+El argumento `$user` es un directorio que contiene estas llaves :
+
+```php
+[
+ 'id' => 123,
+ 'username' => 'admin',
+ 'name' => 'Administrator',
+ 'email' => 'me@localhost',
+]
+```
diff --git a/doc/es_ES/plugin-directory.markdown b/doc/es_ES/plugin-directory.markdown
new file mode 100644
index 00000000..a7ce114c
--- /dev/null
+++ b/doc/es_ES/plugin-directory.markdown
@@ -0,0 +1,15 @@
+Plugin de configuracin del directorio
+======================================
+
+Para instalar, actualizar y eliminar plugins dede la interface de usuario, debes tener estos requerimientos:
+
+- El directorio del plugin debe ser de escritura por el usuario del servidor web
+- La extensin Zip debe estar disponible en tu server.
+- Los parametros de configuracin `PLUGIN_INSTALLER` deben estar en `true`
+
+Para desactivar esta funcin , cambie el valor de `PLUGIN_INSTALLER` a `false` en tu archivo de configuracin.
+Tambin puede cambiar los permisos de la carpeta Plugin en el filesystem.
+
+Slo los administradores pueden instalar plugins desde la interfaz de usuario.
+
+Por defecto, slo plug-in que aparece en la pgina web de Kanboard estn disponibles .
diff --git a/doc/es_ES/plugin-events.markdown b/doc/es_ES/plugin-events.markdown
new file mode 100644
index 00000000..1f8bdc24
--- /dev/null
+++ b/doc/es_ES/plugin-events.markdown
@@ -0,0 +1,27 @@
+Uso de eventos
+===============
+
+Kanboard usar internamente el [ Componente EventDispatcher de Symfony ](https://symfony.com/doc/2.3/components/event_dispatcher/index.html) para manegar internamente los eventos.
+
+Eventos escucha ** Listening **
+-------------------------------
+
+```php
+$this->on('app.bootstrap', function($container) {
+ // tu codigo
+});
+```
+
+- El primer argumento es el nombre del evento (string)
+- El segundo argumento es una funcion PHP callable (finalizacin o metodos de la clase)
+
+Agregando un nuevo evento
+-------------------------
+
+Para agregar un nuevo, tienes que llamar al metodo `register()` de la clase `Kanboard\Core\Event\EventManager`:
+
+```php
+$this->eventManager->register('my.event.name', 'Mi descripcion del nuevo evento');
+```
+
+Estos eventos pueden ser utilizados por otros componentes de Kanboard como acciones automticas .
diff --git a/doc/es_ES/plugin-external-link.markdown b/doc/es_ES/plugin-external-link.markdown
new file mode 100644
index 00000000..343712a6
--- /dev/null
+++ b/doc/es_ES/plugin-external-link.markdown
@@ -0,0 +1,79 @@
+Vinculacin externa de proveedores
+==================================
+
+Esta funcionalidad le permite vincular una tarea a los elementos adicionales almacenados en otro sistema.
+
+Por ejemplo, tu puedes vincular una tarea a:
+For example, you can link a task to:
+
+- Una pagina web tradicional
+- Datos adjuntos (Documentos PDF almacenados en la web, archivos ...)
+- Cualquier sitema de tickets (bug tracker, soporte personalizado de tickets...)
+
+Cada item tiene un tipo, u na URL, un tipo dedependencia y un titulo.
+
+Por default,Kanboard incluye dos tipos de proveedores
+
+- Vinculacin Web : Copiar y pegar un enlace y Kanboard se ha podido ir a la pgina de ttulo de forma automtica.
+- Datos adjuntos: Enlace a todo lo que no es una pgina web
+
+Flujo de trabajo ** Workflow **
+--------------------------------
+
+1. El usuario final copia y pega el URL al submit del formulario.
+2.- Si el tipo de link es "auto", Kanboard crea un bucle a travs de todos los proveedores registrados hasta que hay una coincidencia
+3. Entonces , el proveedor de enlace devuelve un objeto que implementa la interfaz de `ExternalLinkInterface`
+4. El formulario se muestra al usuario con todos los datos precargados antes de guardar el enlace
+
+Interfaces
+----------
+
+Para implementar un nuevo vinculo al proveedor desde un plugin, es necesario crear 2 clases que implementarlas en las interfaces:
+
+- `Kanboard\Core\ExternalLink\ExternalLinkProviderInterface`
+- `Kanboard\Core\ExternalLink\ExternalLinkInterface`
+
+### ExternalLinkProviderInterface
+
+| Method | Usage |
+|----------------------------|---------------------------------------------------------------------------------|
+| `getName()` | Obtener el nombre del proveedor(label) |
+| `getType()` | Obtener el tipo de link (se guardarn en la base de datos) |
+| `getDependencies()` | Obtener un diccionario de los tipos de dependencia soportados por el proveedor |
+| `setUserTextInput($input)` | Texto introducido por el usuario |
+| `match()` | Regresa true si el proveedor puede analizar correctamente la entrada del usuario|
+| `getLink()` | Obtener el enlace que se encuentra con las propiedades |
+
+### ExternalLinkInterface
+
+| Method | Usage |
+|-------------------|-----------------------------|
+| `getTitle()` | Obtiene un titulo de link |
+| `getUrl()` | Obtiene una link de URL |
+| `setUrl($url)` | URL del enlace |
+
+El registro de un nuevo proveedor de enlace
+------------------------------------------
+
+En tu `Plugin.php`, solo puedes llamar al metodo `register()` desde el objeto `ExternalLinkManager`:
+
+```php
+<?php
+
+namespace Kanboard\Plugin\MyExternalLink;
+
+use Kanboard\Core\Plugin\Base;
+
+class Plugin extends Base
+{
+ public function initialize()
+ {
+ $this->externalLinkManager->register(new MyLinkProvider());
+ }
+}
+```
+
+Ejemplos
+--------
+
+- Kanboard incluye proveedores por default "WebLink" y "Attachment"
diff --git a/doc/es_ES/plugin-group-provider.markdown b/doc/es_ES/plugin-group-provider.markdown
new file mode 100644
index 00000000..dd742249
--- /dev/null
+++ b/doc/es_ES/plugin-group-provider.markdown
@@ -0,0 +1,54 @@
+Personalizar grupos de proveedores
+==================================
+
+Kanboard es capaz de cargar grupos de un sistema externo.
+Esta caracteristica es principalmente usada para permisos de proyectos.
+
+Los **Projects Managers** pueden permitir el acceso a un proyecto para un grupo
+El usuario final **end-user** utilizara una caja de autocomplementar y busquedas para un grupo
+
+Cada vez que se ejecuta una consulta de grupo , todos los proveedores de grupo registrados se ejecutan .
+
+Flujo de trabajo del Grupo de Proveedores **Workflow**
+-----------------------------------------------------
+
+1. El usuario final **end-user** comienza a escribir el nombre del grupo y el campo se autocompleta
+2. EL `GroupManager` la clase ejecuta la consulta para todos los proveedores de grupo registrados
+3. Los resultados son fusionados y regresados a la interface de usuario
+4. Antes de seleccionar un grupo, a informacin del grupo se sincronizan con la base de datos local si es necesario
+
+Interface del grupo de proveedores
+----------------------------------
+
+interface a implementar: `Kanboard\Core\Group\GroupProviderInterface`.
+
+Las clases que implementa esta interface abstracta del grupo de informacin, solo hay 3 metodos:
+
+- `getInternalId()`: Obtiene el id interno de la base de datos, de otra manera regresa 0
+- `getExternalId()`: Obtiene un id unico externo
+- `getName()`: Obtiene el nombre de grupo
+
+Kanboard utilizar el ID externo para sincronizar con la base de datos local.
+
+Interface Backend del grupo de proveedores
+------------------------------------------
+Interface a implementar: `Kanboard\Core\Group\GroupBackendProviderInterface`.
+
+Esta interface requiere solo un metodo: `find($input)`.
+El argumento `$input` es el texto introducido desde la interfaz de usuario.
+
+Este metodo debe regresar una lista de `GroupProviderInterface`, es es el resultado de la busqueda.
+
+Backend de registro desde Plugins
+---------------------------------
+
+En el metodo `initialize()` de su plugins registrado se puede personalizar el backend :
+
+```php
+$groupManager->register(new MyCustomLdapBackendGroupProvider($this->container));
+```
+
+Ejemplos
+--------
+
+- [Kanboard incluye el grupo de provedores (LDAP y base de datos)](https://github.com/kanboard/kanboard/tree/master/app/Group)
diff --git a/doc/es_ES/plugin-helpers.markdown b/doc/es_ES/plugin-helpers.markdown
new file mode 100644
index 00000000..66591075
--- /dev/null
+++ b/doc/es_ES/plugin-helpers.markdown
@@ -0,0 +1,39 @@
+Registrar nuevos helpers
+=======================
+
+Estrucura del helper:
+
+```php
+<?php
+
+namespace Kanboard\Plugin\MyPlugin\Helper\MyHelper;
+
+use Kanboard\Core\Base;
+
+class MyHelper extends Base
+{
+ public function doSomething()
+ {
+ return 'foobar';
+ }
+}
+```
+Registrar tu helper en la clase:
+
+```php
+$this->helper->register('myHelper', '\Kanboard\Plugin\MyPlugin\Helper\MyHelper');
+```
+
+Usar tu helper desde una plantilla **Template**:
+
+```php
+<p>
+ <?= $this->myHelper->doSomething() ?>
+</p>
+```
+
+Usar tu helper dese otra clase:
+
+```php
+$this->helper->myHelper->doSomething();
+```
diff --git a/doc/es_ES/plugin-hooks.markdown b/doc/es_ES/plugin-hooks.markdown
new file mode 100644
index 00000000..46855d27
--- /dev/null
+++ b/doc/es_ES/plugin-hooks.markdown
@@ -0,0 +1,249 @@
+Plugin Hooks
+============
+
+Hooks de aplicacin
+-----------------
+
+Los hooks pueden extender , reemplazar, filtar datos o cambiar los comportamientos por default, cad hook es identificado con unico nombre, ejemplo : `controller:calendar:user:events`
+
+### Escuchar en eventos hook
+
+En tu metodo `initialize()` tu necesitas llamar al metodo `on()` de la clase `Kanboard\Core\Plugin\Hook`:
+
+```php
+$this->hook->on('hook_name', $callable);
+```
+
+El primer argumento es el nombre del hook y el segundo es un callable PHP
+
+### Hooks ejecutado slo una vez
+
+Algunos hooks solo tienen un listener:
+
+#### model:subtask-time-tracking:calculate:time-spent
+
+- Anular el clculo del tiempo anterior cuando se detiene el temporizador de la subtarea
+- Argumentos :
+ - `$user_id` (integer)
+ - `$start` (DateTime)
+ - `$end` (DateTime)
+
+### Fusionar hooks
+
+"Fusionar hooks" actuar de la misma manera que la funcin de `array_merge`. el hook callback solo regresa un array. Este array se fusionar con la que viene por defecto.
+
+Ejemplo para agregar eventos en el calendario del usuario:
+
+```php
+class Plugin extends Base
+{
+ public function initialize()
+ {
+ $container = $this->container;
+
+ $this->hook->on('controller:calendar:user:events', function($user_id, $start, $end) use ($container) {
+ $model = new SubtaskForecast($container);
+ return $model->getCalendarEvents($user_id, $end); // Return new events
+ });
+ }
+}
+```
+
+Ejemplo para sobrescribir los valores por default de las tareas:
+
+```php
+class Plugin extends Base
+{
+ public function initialize()
+ {
+ $this->hook->on('controller:task:form:default', function (array $default_values) {
+ return empty($default_values['score']) ? array('score' => 4) : array();
+ });
+ }
+}
+```
+
+Lista de fusin de hooks:
+
+#### controller:task:form:default
+
+- sobrescribir los valores por default de las tareas
+- Argumentos:
+ - `$default_values`: actual default values (array)
+
+#### controller:calendar:project:events
+
+- Agregar mas eventos a el calendario del projecto
+- Argumentos:
+ - `$project_id` (integer)
+ - `$start` Calendar start date (string, ISO-8601 format)
+ - `$end` Calendar` end date (string, ISO-8601 format)
+
+#### controller:calendar:user:events
+
+- Agregar mas eventos a el calendario de usuario
+- Argumentos:
+ - `$user_id` (integer)
+ - `$start` Calendar start date (string, ISO-8601 format)
+ - `$end` Calendar end date (string, ISO-8601 format)
+
+Asset Hooks
+-----------
+
+Asset hooks pueden ser usados para agregar nuevas stylesheet facilmente o un nuevo archivo JavaScript en el layout. tu puedes usar estas caracteristicas para crear un tema y sobreescribir todo los estilos por dafault del kanboard.
+
+Ejemplo para agregar un stylesheet **hoja de estilo**
+
+```php
+<?php
+
+namespace Kanboard\Plugin\Css;
+
+use Kanboard\Core\Plugin\Base;
+
+class Plugin extends Base
+{
+ public function initialize()
+ {
+ $this->hook->on('template:layout:css', array('template' => 'plugins/Css/skin.css'));
+ }
+}
+```
+
+Lista de asset Hooks:
+
+- `template:layout:css`
+- `template:layout:js`
+
+
+Referencia de hooks
+---------------
+
+La reference hooks son pasados a una variable por referencia.
+
+Ejemplo:
+
+```php
+$this->hook->on('formatter:board:query', function (\PicoDb\Table &query) {
+ $query->eq('color_id', 'red');
+});
+```
+
+El cdigo anterior mostrar slo las tareas en rojo en el tablero.
+
+Lista de referencias de hooks:
+
+| Hook | Description |
+|--------------------------------------------|---------------------------------------------------------------|
+| `formatter:board:query` | Alterar consulta a la base antes de tablero de renderizado |
+| `pagination:dashboard:task:query` | Alterar consulta de base de datos para las tareas de la paginacin en el dashboard |
+| `pagination:dashboard:subtask:query` | Alterar consulta a la base de la paginacin en el subtareas del dashboard |
+| `model:task:creation:prepare` | Alterar los valores del formulario antes de guardar una tarea |
+| `model:task:modification:prepare` | Alterar los valores del formulario antes de editar una tarea
+
+Template Hooks
+--------------
+
+Template hooks permitir aadir nuevos contenidos en las plantillas existentes.
+
+Ejemplo para agregar nuevos contenidos en el sidebar del dashboard:
+
+```php
+$this->template->hook->attach('template:dashboard:sidebar', 'myplugin:dashboard/sidebar');
+```
+
+Ejemplo para adjuntar un template con variables locales:
+
+```php
+$this->template->hook->attach('template:dashboard:sidebar', 'myplugin:dashboard/sidebar', array(
+ 'variable' => 'foobar',
+));
+```
+
+Ejemplo para adjuntar un template con un callable:
+
+```php
+$this->template->hook->attach('template:dashboard:sidebar', 'myplugin:dashboard/sidebar', function($hook_param1, $hook_param2) {
+ return array('new_template_variable' => 'foobar'); // Inyectar una nueva variable en la plantilla Plugin
+});
+```
+
+Este llamada es usualmente definida en el metodo `initialize()`
+El primer argumento es el nombre del hook y el segundo argumento es el nombre del template.
+
+Los nombres de plantillas con el prefijo del nombre del plugin y los dos puntos indican la ubicacin de la plantilla.
+
+Ejemplo con `myplugin:dashboard/sidebar`:
+
+- `myplugin` Es el nombre de tu plugin (minusculas)
+- `dashboard/sidebar` es el nombre del template
+- En el filesystem, El plugin esta localizado aqui: `plugins\Myplugin\Template\dashboard\sidebar.php`
+- Templates estan escritos en puro PHP (no se olvide de escapar los datos)
+
+Los nombres de plantillas sin prefijo son plantillas bsicas.
+
+Lista de templates hooks:
+
+| Hook | Descripcin |
+|--------------------------------------------|----------------------------------------------------|
+| `template:analytic:sidebar` | Sidebar en paginas analiticas |
+| `template:app:filters-helper:before` | Filtro helper dropdown (top) |
+| `template:app:filters-helper:after` | Filtro helper dropdown (bottom) |
+| `template:auth:login-form:before` | Pagina de login (top) |
+| `template:auth:login-form:after` | Pagina de login (bottom) |
+| `template:board:private:task:before-title` | Tarea en un tablero privado : despues del titulo |
+| `template:board:private:task:after-title` | Tarea en un tablero privado : antes del titulo |
+| `template:board:public:task:before-title` | Tarea en un tablero publico : despues del titulo |
+| `template:board:public:task:after-title` | Tarea en un tablero publico : antes del titulo |
+| `template:board:task:footer` | Tarea en el tablero : footer |
+| `template:board:task:icons` | Tarea en el tablero: tooltip icon |
+| `template:board:column:dropdown` | Menu Dropdown en las columnas del tablero |
+| `template:config:sidebar` | Sidebar pagina de configuracin |
+| `template:config:application ` | Aplicacin de configuracin del formulario |
+| `template:config:email` | Email settings page |
+| `template:config:integrations` | Integration page in global settings |
+| `template:dashboard:sidebar` | Sidebar en la pagina del dashboard |
+| `template:dashboard:show` | Pagina principal del dashboard |
+| `template:export:sidebar` | Sidebar para exportar paginas |
+| `template:import:sidebar` | Sidebar para importar paginas |
+| `template:header:dropdown` | Dropdown menu Pagina header (icono avatar de usuario) |
+| `template:header:creation-dropdown` | Dropdown menu Pagina header (plus icon) |
+| `template:layout:head` | Layout de la pagina `<head/>` tag |
+| `template:layout:top` | Layout de la pagina top header |
+| `template:layout:bottom` | Layout de la pagina footer |
+| `template:project:dropdown` | "Actions" menu a la izquierda vista para diferentes proyectos |
+| `template:project:header:before` | Filtros de Proyectos (antes) |
+| `template:project:header:after` | Filtros de Proyectos (despues) |
+| `template:project:integrations` | Pagina de integracion de configuracin de proyectos|
+| `template:project:sidebar` | Sidebar configuracin de proyectos |
+| `template:project-user:sidebar` | Sidebar en la pgina de la informacin de usuario del proyecto |
+| `template:task:layout:top` | Task layout top (antes page header) |
+| `template:task:details:top` | Resumen de tarea top |
+| `template:task:details:bottom` | Resumen de tarea bottom |
+| `template:task:details:first-column` | Resumen de tarea columna |
+| `template:task:details:second-column` | Resumen de tarea dos columnas |
+| `template:task:details:third-column` | Resumen de tarea tres columnas |
+| `template:task:details:fourth-column` | Resumen de tarea cuatro columnas |
+| `template:task:dropdown` | Task dropdown menu en listado de paginas |
+| `template:task:sidebar:actions` | Sidebar on task page (seccin de acciones) |
+| `template:task:sidebar:information` | Sidebar on task page (seccin de informacin) |
+| `template:task:form:first-column` | 1st columna en forma de tarea |
+| `template:task:form:second-column` | 2nd columna en forma de tarea |
+| `template:task:form:third-column` | 3nd columna en forma de tarea |
+| `template:task:show:top ` | Mostrar pgina de tareas : top |
+| `template:task:show:bottom` | Mostrar pgina de tareas : bottom |
+| `template:task:show:before-description` | Mostrar pgina de tareas : despues de la descripcin |
+| `template:task:show:before-tasklinks` | Mostrar pgina de tareas : despues tasklinks |
+| `template:task:show:before-subtasks` | Mostrar pgina de tareas : despues subtareas |
+| `template:task:show:before-timetracking` | Mostrar pgina de tareas : despues timetracking |
+| `template:task:show:before-attachments` | Mostrar pgina de tareas : despues archivos adjuntos |
+| `template:task:show:before-comments` | Mostrar pgina de tareas : despues comentarios |
+| `template:user:authentication:form` | "Editar autenticacin" formulario de perfil de usuario |
+| `template:user:create-remote:form` | "Crear un usuario remoto" formulario |
+| `template:user:external` | "Autenticacin externa" la pgina de perfil de usuario |
+| `template:user:integrations` | Integracin en el perfil de usuario |
+| `template:user:sidebar:actions` | Sidebar en el perfil de usuario (seccin de acciones) |
+| `template:user:sidebar:information` | Sidebar en el perfil de usuario (seccin de informacin) |
+
+
+Otro de los ganchos plantilla se pueden aadir en caso necesario , slo hay que preguntar en el seguimiento de incidencias ** issue tracking **.
diff --git a/doc/es_ES/plugin-ldap-client.markdown b/doc/es_ES/plugin-ldap-client.markdown
new file mode 100644
index 00000000..1a34a880
--- /dev/null
+++ b/doc/es_ES/plugin-ldap-client.markdown
@@ -0,0 +1,99 @@
+Libreria LDAP
+============
+
+Para facilirar la integracion LDAP. kanboard tiene su propia libreria LDAP
+Esta libreria puede ejecutar operaciones comunes.
+
+Cliente
+-------
+
+Clase: `Kanboard\Core\Ldap\Client`
+
+Para conectar a tu servidor LDAP facilmente, usa este metodo:
+
+```php
+use Kanboard\Core\Ldap\Client as LdapClient;
+use Kanboard\Core\Ldap\ClientException as LdapException;
+
+try {
+ $client = LdapClient::connect();
+
+ // Get native LDAP resource
+ $resource = $client->getConnection();
+
+ // ...
+
+} catch (LdapException $e) {
+ // ...
+}
+```
+
+Consultas LDAP
+--------------
+
+Classes:
+
+- `Kanboard\Core\Ldap\Query`
+- `Kanboard\Core\Ldap\Entries`
+- `Kanboard\Core\Ldap\Entry`
+
+Ejemplo para una consulta al directorio LDAP:
+
+```php
+
+$query = new Query($client)
+$query->execute('ou=People,dc=kanboard,dc=local', 'uid=my_user', array('cn', 'mail'));
+
+if ($query->hasResult()) {
+ $entries = $query->getEntries(); // Return an instance of Entries
+}
+```
+
+Leer una entrada:
+
+```php
+$firstEntry = $query->getEntries()->getFirstEntry();
+$email = $firstEntry->getFirstValue('mail');
+$name = $firstEntry->getFirstValue('cn', 'Default Name');
+```
+
+Leer multiples entradas:
+
+```php
+foreach ($query->getEntries()->getAll() as $entry) {
+ $emails = $entry->getAll('mail'); // Fetch all emails
+ $dn = $entry->getDn(); // Get LDAP DN of this user
+
+ // Check if a value is present for an attribute
+ if ($entry->hasValue('mail', 'user2@localhost')) {
+ // ...
+ }
+}
+```
+
+Usuario Helper
+--------------
+
+Clase: `Kanboard\Core\Ldap\User`
+
+Obtener usuario en una sola linea
+
+```php
+// Return an instance of LdapUserProvider
+$user = User::getUser($client, 'my_username');
+```
+
+Grupo Helper
+------------
+
+Clase: `Kanboard\Core\Ldap\Group`
+
+Obtener grupos en una linea:
+
+```php
+// Define LDAP filter
+$filter = '(&(objectClass=group)(sAMAccountName=My group*))';
+
+// Return a list of LdapGroupProvider
+$groups = Group::getGroups($client, $filter);
+```
diff --git a/doc/es_ES/plugin-mail-transports.markdown b/doc/es_ES/plugin-mail-transports.markdown
new file mode 100644
index 00000000..1d999c81
--- /dev/null
+++ b/doc/es_ES/plugin-mail-transports.markdown
@@ -0,0 +1,49 @@
+Plugin: Agregar trasporte de email
+==================================
+
+Por default Kanboard soporta 3 estadares de trasporte de email:
+
+- Mail (PHP mail function)
+- Smtp
+- Sendmail command
+
+Con la API del plugin tu puedes agregar un driver para cualquier proveedor de email.
+Por ejemplo, nuestro plugin puede agregar un trasporte de email para un proveedor que usa un API HTTP.
+
+Implementacin
+--------------
+
+Nuestro plugin dede implementgar la interface `Kanboard\Core\Mail\ClientInterface` y extiende desde `Kanboard\Core\Base`.
+El nico mtodo que necesita para implementar es `sendEmail()`:
+
+```php
+interface ClientInterface
+{
+ /**
+ * Send a HTML email
+ *
+ * @access public
+ * @param string $email
+ * @param string $name
+ * @param string $subject
+ * @param string $html
+ * @param string $author
+ */
+ public function sendEmail($email, $name, $subject, $html, $author);
+}
+```
+
+Para registrar el nuevo trasporte de email, usa el metodo `setTransport($transport, $class)` desde la clase `Kanboard\Core\Mail\Client`:
+
+```php
+$this->emailClient->setTransport('myprovider', '\Kanboard\Plugin\MyProvider\MyEmailHandler');
+```
+
+EL segundo argumento contiene el absoluto namespace de tu clase especifica
+
+Ejemplos de plugins para trasporte de email
+----------------------------------
+
+- [Sendgrid](https://github.com/kanboard/plugin-sendgrid)
+- [Mailgun](https://github.com/kanboard/plugin-mailgun)
+- [Postmark](https://github.com/kanboard/plugin-postmark)
diff --git a/doc/es_ES/plugin-metadata.markdown b/doc/es_ES/plugin-metadata.markdown
new file mode 100644
index 00000000..da4f025f
--- /dev/null
+++ b/doc/es_ES/plugin-metadata.markdown
@@ -0,0 +1,42 @@
+Metadatos
+=========
+
+Tu piedes adjutnar metadatos para cada projecto,tarea , usuaio o para toda la aplicacin
+Los metadatos son campos personalisados, es una key/value de una tabla.
+
+Por ejemplo nuestro plugin puede almacenar informacin externa para una tarea o nuevas configuraciones para un proyecto.
+Bsicamente le permiten ampliar los campos predeterminados sin tener que crear nuevas tablas .
+
+Adjuntar y eliminar metadatos para tareas
+--------------------------------------------
+
+```php
+
+// Return a dictionary of metadata (keys/values) for the $task_id
+$this->taskMetadataModel->getAll($task_id);
+
+// Get a value only for a task
+$this->taskMetadataModel->get($task_id, 'my_plugin_variable', 'default_value');
+
+// Return true if the metadata my_plugin_variable exists
+$this->taskMetadataModel->exists($task_id, 'my_plugin_variable');
+
+// Create or update metadata for the task
+$this->taskMetadataModel->save($task_id, ['my_plugin_variable' => 'something']);
+
+// Remove a metadata from a project
+$this->projectMetadataModel->remove($project_id, my_plugin_variable);
+```
+
+Tipos de metadatos
+------------------
+
+- TaskMetadata: `$this->taskMetadataModel`
+- ProjectMetadata: `$this->projectMetadataModel`
+- UserMetadata: `$this->userMetadataModel`
+- Settings/Config: `$this->configModel`
+
+Notas
+-----
+
+- Siempre prefijo del nombre de metadatos con el nombre del plugin
diff --git a/doc/es_ES/plugin-notifications.markdown b/doc/es_ES/plugin-notifications.markdown
new file mode 100644
index 00000000..9a99806d
--- /dev/null
+++ b/doc/es_ES/plugin-notifications.markdown
@@ -0,0 +1,59 @@
+Agregar notificaciones con los tipos de plugin
+==============================================
+
+Puede enviar notificaciones a casi cualquier sistema mediante la adicin de un nuevo tipo .
+There are two kinds of notifications: project and user.
+
+- Project: Notificaciones configuradas a nivel de proyecto
+- Usuario: Notificaciones enviadas individualmente y configurada a cada perfil de usuario.
+
+Registra un nuevo tipo de notificacin
+--------------------------------------
+
+En tu archivo de registro del plugin llama el metodo `setType()`:
+
+```php
+$this->userNotificationTypeModel->setType('irc', t('IRC'), '\Kanboard\Plugin\IRC\Notification\IrcHandler');
+$this->projectNotificationTypeModel->setType('irc', t('IRC'), '\Kanboard\Plugin\IRC\Notification\IrcHandler');
+```
+
+Su controlador puede ser registrado por el usuario o la notificacin del proyecto. No necesariamente tienen que soportarlo .
+Cuando tu handler es registrdo, el usuario final **end-user** puede elegir recibir el nuevo tipo de notificacin o no
+
+Notificacin de Handler
+-----------------------
+
+Su controlador de notificacin debe implementar la interfaz `Kanboard\Core\Notification\NotificationInterface`:
+
+```php
+interface NotificationInterface
+{
+ /**
+ * Envia notificacin a un usuario
+ *
+ * @access public
+ * @param array $user
+ * @param string $event_name
+ * @param array $event_data
+ */
+ public function notifyUser(array $user, $event_name, array $event_data);
+
+ /**
+ * Envia notificacion a un projecto
+ *
+ * @access public
+ * @param array $project
+ * @param string $event_name
+ * @param array $event_data
+ */
+ public function notifyProject(array $project, $event_name, array $event_data);
+}
+```
+
+Ejemplo de notificacion de plugins
+---------------------------------
+
+- [Slack](https://github.com/kanboard/plugin-slack)
+- [Hipchat](https://github.com/kanboard/plugin-hipchat)
+- [Jabber](https://github.com/kanboard/plugin-jabber)
+
diff --git a/doc/es_ES/plugin-overrides.markdown b/doc/es_ES/plugin-overrides.markdown
new file mode 100644
index 00000000..f8b999f3
--- /dev/null
+++ b/doc/es_ES/plugin-overrides.markdown
@@ -0,0 +1,42 @@
+Plugin Reescritura
+================
+
+Reesritura HTTP Contenido Poltica de Seguridad
+-----------------------------------------------
+
+Si desea reemplazar el encabezado HTTP predeterminado de la directiva de seguridad del contenido, puede utilizar el mtodo`setContentSecurityPolicy()`:
+
+```php
+<?php
+
+namespace Kanboard\Plugin\Csp;
+
+use Kanboard\Core\Plugin\Base;
+
+class Plugin extends Base
+{
+ public function initialize()
+ {
+ $this->setContentSecurityPolicy(array('script-src' => 'something'));
+ }
+}
+```
+
+Plantillas de reescrituras
+--------------------------
+
+Las plantillas definidas en el ncleo se pueden anular . Por ejemplo , se puede redefinir el diseo predeterminado o cambiar notificaciones por correo electrnico.
+
+Ejemolo de plantilla de reescritura:
+
+```php
+$this->template->setTemplateOverride('header', 'theme:layout/header');
+```
+
+El primer argumento es el nombre de la plantilla original y el segundo argumento de la plantilla para usar como reemplazo.
+
+Puede seguir utilizando la plantilla original utilizando el prefijo "kanboard:" :
+
+```php
+<?= $this->render('kanboard:header') ?>
+```
diff --git a/doc/es_ES/plugin-registration.markdown b/doc/es_ES/plugin-registration.markdown
new file mode 100644
index 00000000..5031427f
--- /dev/null
+++ b/doc/es_ES/plugin-registration.markdown
@@ -0,0 +1,160 @@
+Registracion de Plugin
+======================
+
+Estructura del directorio
+--------------------------
+
+Los Plugins estan almacenados en el subdirectorio `plugins. Un ejemplo de estructura del directorio de un plugin:
+
+```bash
+plugins
+└── Budget <= Plugin name
+ ├── Asset <= Javascript/CSS files
+ ├── Controller
+ ├── LICENSE <= Plugin license
+ ├── Locale
+ │ ├── fr_FR
+ │   ├── it_IT
+ │   ├── ja_JP
+ │   └── zh_CN
+ ├── Model
+ ├── Plugin.php <= Plugin registration file
+ ├── README.md
+ ├── Schema <= Database migrations
+ ├── Template
+ └── Test <= Unit tests
+```
+
+Solamente el archivo de registración `Plugin.php` es requerido. Las otras carpetas son opcionales.
+
+La primera letra del nombre del plugin debe ser capitalizada.
+
+Archivo de registración del plugin
+----------------------------------
+
+Kanboard Kanboard escaneará el directorio `plugins` y cargara automaticamente todo en este directorio. el archivo `Plugin.php` se utiliza para cargar y registrar el plugin.
+
+Ejemplo del archivo `Plugin.php` (`plugins/Foobar/Plugin.php`):
+
+```php
+<?php
+
+namespace Kanboard\Plugin\Foobar;
+
+use Kanboard\Core\Plugin\Base;
+
+class Plugin extends Base
+{
+ public function initialize()
+ {
+ $this->template->hook->attach('template:layout:head', 'theme:layout/head');
+ }
+}
+```
+
+Este archivo debera contener una clase `Plugin` se define en el namespace `Kanboard\Plugin\Yourplugin` y extiende `Kanboard\Core\Plugin\Base`.
+
+El único método requerido es `initialize()`. Este método se llama para cada petición cuando el plugin es cargado.
+
+Metodos del plugin
+--------------
+
+Los métodos disponibles son `Kanboard\Core\Plugin\Base`:
+
+- `initialize()`: ejecuta cuando el plugin es cargafo
+- `getClasses()`: Regresa todas las clases que se deben almacenar en el contenedor de inyección de dependencias
+- `on($event, $callback)`: Escucha eventos internos.
+- `getPluginName()`: devuelve el nombre del plugin.
+- `getPluginAuthor()`: Devuelve el autor del plugin.
+- `getPluginVersion()`: Devuelve la versíon del plugin.
+- `getPluginDescription()`: Devuelve la descripcion del plugin.
+- `getPluginHomepage()`: Devuelve la pagina inicial del plugin (link)
+- `setContentSecurityPolicy(array $rules)`: Reescribe las reglas por default del HTTP CSP.
+- `onStartup()`: Si está presente este método, se ejecuta automáticamente cuando el evento "app.bootstrap" se dispara.
+
+Su registro de plugin tambien puede heradar de la clase Kanboard\Core\Base, de esta manera se puede acceder a todas las clases y los métodos de Kanboard facilmente.
+
+En este ejemplo se obtendrá el usuario #123:
+
+```php
+$this->user->getById(123);
+```
+
+Plugin de traducción
+-------------------
+
+Este plugin se puede traducir en la misma forma que el resto de la aplicación . Debe cargar las traducciones a sí mismo cuando se crea la sesión :
+
+```php
+public function onStartup()
+{
+ Translator::load($this->languageModel->getCurrentLanguage(), __DIR__.'/Locale');
+}
+```
+
+Las traducciones deben ser almacenadas en el archivo `plugins/Myplugin/Locale/xx_XX/translations.php` (remplazar xx_XX por el codigo del lenguaje fr_FR, en_US...).
+
+Las traducciones estan almacenadas en un diccionario, Si desea sobreescribir una cadena existente, sólo tiene que utilizar la misma clave en el archivo de traducción.
+
+Inyección de dependencias de contenedores
+------------------------------
+Kanboard utiliza la Pimple , un simple inyección de contenedores de dependencia PHP . Sin embargo , Kanboard puede registrar cualquier clase en el contenedor fácilmente.
+
+Estas clases están disponibles en todas partes en la aplicación y se crea una única instancia .
+
+Aquí un ejemplo para registrar sus propios modelos en el contenedor:
+
+```php
+public function getClasses()
+{
+ return array(
+ 'Plugin\Budget\Model' => array(
+ 'HourlyRateModel',
+ 'BudgetModel',
+ )
+ );
+}
+```
+
+Ahora bien, si se utiliza una clase que se extiende desde `Core\Base`, tu puedes acceder directamente cualquier instancia de la clase:
+
+```php
+$this->hourlyRateModel->remove(123);
+$this->budgetModel->getDailyBudgetBreakdown(456);
+
+// It's the same thing as using the container:
+$this->container['hourlyRateModel']->getAll();
+```
+
+Llaves de los contenedores son únicos a través de la aplicación . Si reemplaza una clase existente , que va a cambiar el comportamiento por defecto .
+
+Agregar un metodo nuevo en la API
+---------------------------------
+
+Kanboard usa la libreria [JSON-RPC](https://github.com/fguillot/JsonRPC) para manejar las llamadas de la api.
+
+Para agregar un nuevo metodo tu puedes que puede hacer algo para llamar a tu plugin:
+
+```php
+$this->api->getProcedureHandler()->withCallback('my_method', function() {
+ return 'foobar';
+});
+```
+
+`$this->container['api']` or `$this->api` expose an instance of the object `JsonRPC\Server`.
+
+Leer la documentacion de la libreria para mas información.
+
+Agregar una nueva consola de comandos
+--------------------------------------
+
+Kanboard usa la libreria [Symfony Console](http://symfony.com/doc/current/components/console/introduction.html) para manejar las lineas de comandos.
+
+Kanboard genera una instancia del objeto `Symfony\Component\Console\Application` via `$this->cli`.
+Tu puedes agregar nuevos comandos desde tu plugin:
+
+```php
+$this->cli->add(new MyCommand());
+```
+
+Lea la documentación de la biblioteca para obtener más información.
diff --git a/doc/es_ES/plugin-routes.markdown b/doc/es_ES/plugin-routes.markdown
new file mode 100644
index 00000000..eb4b9f36
--- /dev/null
+++ b/doc/es_ES/plugin-routes.markdown
@@ -0,0 +1,85 @@
+Personalizar Rutas
+==================
+
+Cuando est habilitada la reescritura de URL, tu puedes definir rutas personalizadas desde tus plugins.
+
+Definir nuevas rutas
+--------------------
+
+Las rutas son manejadas por la clase `Kanboard\Core\Http\Route`.
+
+Las nuevas rutas se pueden agregar mediante el uso del mtodo `addRoute($path, $controller, $action, $plugin)`, here an example:
+
+```php
+$this->route->addRoute('/my/custom/route', 'myController', 'myAction', 'myplugin');
+```
+
+Cuando el usuario final **end-user** van a la URL `/my/custom/route`, el metodo `Kanboard\Plugin\Myplugin\Controller\MyController::myAction()` ser ejecutado.
+
+El primer caracter del contraldor y el nombre del plugin sern convertidos en mayusculas con la funcion `ucfirst()`.
+
+Tu puedes ademas definir rutas con variables:
+
+```php
+$this->route->addRoute('/my/route/:my_variable', 'myController', 'myAction', 'myplugin');
+```
+
+El prefijo colon `:`, define una variable.
+Por ejemplo `:my_variable` declare el nombre de la nueva variable `my_variable`.
+
+Para extraer los valores de la variable puedes usar el metodo `getStringParam()` or `getIntegerParam()` desde la clase `Kanboard\Core\Http\Request`:
+
+Si tenemos la URL `/my/route/foobar`, el valor de `my_variable` es `foobar`:
+
+```php
+$this->request->getStringParam('my_variable'); // Return foobar
+```
+
+Generate links based on the routing table
+-----------------------------------------
+
+Desde las plantillas , se tiene que usar el helper `Kanboard\Helper\Url`.
+
+### Generar un link HTML
+
+```php
+<?= $this->url->link('My link', 'mycontroller', 'myaction', array('plugin' => 'myplugin')) ?>
+```
+
+Generara este HTML:
+
+```html
+<a href="/my/custom/route">My link</a>
+```
+
+### Generara solamente el atributo `href`:
+
+```php
+<?= $this->url->href('My link', 'mycontroller', 'myaction', array('plugin' => 'myplugin')) ?>
+```
+
+HTML salida:
+
+```html
+/my/custom/route
+```
+
+Salida HTML cuando la reescritura del URL no esta habilitada:
+
+```html
+?controller=mycontroller&amp;action=myaction&amp;plugin=myplugin
+```
+
+### Generar enlace de redireccin:
+
+Desde un controlador, si tu necesitas para From a controller, si tu necesitas realizar una redireccin:
+
+```php
+$this->url->to('mycontroller', 'myaction', array('plugin' => 'myplugin'));
+```
+
+Generar:
+
+```
+?controller=mycontroller&action=myaction&plugin=myplugin
+```
diff --git a/doc/es_ES/plugin-schema-migrations.markdown b/doc/es_ES/plugin-schema-migrations.markdown
new file mode 100644
index 00000000..b7165490
--- /dev/null
+++ b/doc/es_ES/plugin-schema-migrations.markdown
@@ -0,0 +1,40 @@
+Plugin Migración de esquemas
+============================
+
+Kanboard realiza migraciones de base de datos automaticamente para ti.
+Las migraciones deben ser almacenadas en una carpeta **Schema** y el nombre de archivo debe ser el mismo que el controlador de base de datos:
+
+```bash
+Schema
+├── Mysql.php
+├── Postgres.php
+└── Sqlite.php
+```
+
+Cada archivo contiene todas las migraciones, aqui un ejemple para Sqlite:
+
+```php
+<?php
+
+namespace Kanboard\Plugin\Something\Schema;
+
+const VERSION = 1;
+
+function version_1($pdo)
+{
+ $pdo->exec('CREATE TABLE IF NOT EXISTS something (
+ "id" INTEGER PRIMARY KEY,
+ "project_id" INTEGER NOT NULL,
+ "something" TEXT,
+ FOREIGN KEY(project_id) REFERENCES projects(id) ON DELETE CASCADE
+ )');
+}
+```
+
+- La constante `VERSION` es la ultima versión de tu esquema
+- Cada funcion es una migración `version_1()`, `version_2()`, etc.
+- Una instancia `PDO` es pasado como un primer argumneto
+- Todo se ejecuta dentro de una transacción , si algo no funciona se realiza una operación de rollback y se muestra el error al usuario
+
+Kanboard siempre compara la version definida en tu esquema y la version almacenada en la base de datos. Si la versiones son diferentes, kanboard siempre ejecuta cada migración una por una hasta alcanzar la ultima version.
+
diff --git a/doc/es_ES/plugins.markdown b/doc/es_ES/plugins.markdown
new file mode 100644
index 00000000..587377d7
--- /dev/null
+++ b/doc/es_ES/plugins.markdown
@@ -0,0 +1,46 @@
+Desarrollo de Plugin
+====================
+
+Nota : el plugin API es **considerado alpha** en estos momentos.
+
+Los plugins son tiles para extender las funcionalidades bsicas de Kanboard , la adicin de caractersticas , la creacin de temas o cambiar el comportamiento por defecto .
+
+Los creadores de plugins deben especificar explcitamente las versiones compatibles de Kanboard . El cdigo interno de Kanboard puede cambiar con el tiempo y su extensin debe ser probado con nuevas versiones . Compruebe siempre el [ChangeLog](https://github.com/kanboard/kanboard/blob/master/ChangeLog) para realizar los cambios.
+
+- [Crear tu plugin](plugin-registration.markdown)
+- [Usar plugins hooks](plugin-hooks.markdown)
+- [Eventos](plugin-events.markdown)
+- [Rescribir compartamientos por default en la aplicacin](plugin-overrides.markdown)
+- [Agregar plugins para migrar esquemas](plugin-schema-migrations.markdown)
+- [Personalizar rutas](plugin-routes.markdown)
+- [Agregar helpers](plugin-helpers.markdown)
+- [Agregar trasportes de email ](plugin-mail-transports.markdown)
+- [Agregar tipos de notificaciones](plugin-notifications.markdown)
+- [Agregar acciones automaticas](plugin-automatic-actions.markdown)
+- [Adjuntar metados para usuarios,tareas y proyectos](plugin-metadata.markdown)
+- [Arquitectura de autenticacin](plugin-authentication-architecture.markdown)
+- [Registracin de plugins de autenticacin](plugin-authentication.markdown)
+- [Arquitectura de autorizacin](plugin-authorization-architecture.markdown)
+- [Personlizar grupos de proveedores](plugin-group-provider.markdown)
+- [Links externos para proveedores](plugin-external-link.markdown)
+- [Agregar avatar a proveedores](plugin-avatar-provider.markdown)
+- [Cliente LDAP](plugin-ldap-client.markdown)
+
+Ejemplos de plugins
+-------------------
+
+- [SMS Two-Factor Authentication](https://github.com/kanboard/plugin-sms-2fa)
+- [Reverse-Proxy Authentication with LDAP support](https://github.com/kanboard/plugin-reverse-proxy-ldap)
+- [Slack](https://github.com/kanboard/plugin-slack)
+- [Hipchat](https://github.com/kanboard/plugin-hipchat)
+- [Jabber](https://github.com/kanboard/plugin-jabber)
+- [Sendgrid](https://github.com/kanboard/plugin-sendgrid)
+- [Mailgun](https://github.com/kanboard/plugin-mailgun)
+- [Postmark](https://github.com/kanboard/plugin-postmark)
+- [Amazon S3](https://github.com/kanboard/plugin-s3)
+- [Budget planning](https://github.com/kanboard/plugin-budget)
+- [User timetables](https://github.com/kanboard/plugin-timetable)
+- [Subtask Forecast](https://github.com/kanboard/plugin-subtask-forecast)
+- [Automatic Action example](https://github.com/kanboard/plugin-example-automatic-action)
+- [Theme plugin example](https://github.com/kanboard/plugin-example-theme)
+- [CSS plugin example](https://github.com/kanboard/plugin-example-css)
diff --git a/doc/es_ES/requirements.markdown b/doc/es_ES/requirements.markdown
new file mode 100755
index 00000000..57c90110
--- /dev/null
+++ b/doc/es_ES/requirements.markdown
@@ -0,0 +1,111 @@
+Requerimientos
+===============
+
+Lado del servidor
+--------------------
+
+### Sistemas operativos compatibles
+
+| Sistemas operativos |
+|--------------------------------------|
+| Linux Ubuntu Xenial Xerus 16.04 LTS |
+| Linux Ubuntu Trusty 14.04 LTS |
+| Linux Centos 6.x |
+| Linux Centos 7.x |
+| Linux Redhat 6.x |
+| Linux Redhat 7.x |
+| Linux Debian 8 |
+| FreeBSD 10.x |
+| Microsoft Windows 2012 R2 |
+| Microsoft Windows 2008 |
+
+### Base de datos compatibles
+
+| Base de datos |
+|--------------------|
+| Sqlite 3.x |
+| Mysql >= 5.5 |
+| MariaDB >= 10 |
+| Postgresql >= 9.3 |
+
+Qu base de datos para elegir?
+
+| Tipo | Uso |
+|-----------------|-----------------------------------------------------|
+| Sqlite | un solo usuario o equipo pequeo (casi no hay concurrencia) |
+| Mysql/Postgres | Equipo grande, configuracin de alta disponibilidad |
+
+No usar Sqlite en montajes de NFS, use Sqlite solo cuando tengas un disco con Fast I/O
+
+### Servidores Web Compatibles
+
+| Servidores Web |
+|--------------------|
+| Apache HTTP Server |
+| Nginx |
+| Microsoft IIS |
+
+Kanboard esta pre configurado para trabajar con Apache (URL rewriting).
+
+### Versiones de PHP
+
+| Versin de PHP |
+|----------------|
+| PHP >= 5.3.9 |
+| PHP 5.4 |
+| PHP 5.5 |
+| PHP 5.6 |
+| PHP 7.x |
+
+### PHP Extensiones Requeridas
+
+| PHP Extensiones Requeridas | Nota |
+|----------------------------|-------------------------------|
+| pdo_sqlite | Solo si usas Sqlite |
+| pdo_mysql | Solo si usas Mysql/MariaDB |
+| pdo_pgsql | Solo si usas Postgres |
+| gd | |
+| mbstring | |
+| openssl | |
+| json | |
+| hash | |
+| ctype | |
+| session | |
+| ldap | Solamente para autenticacin LDAP |
+| Zend OPcache | Recomendado |
+
+### Extensiones PHP opcionales
+
+| PHP Extensiones Requeridas | Nota |
+|----------------------------|--------------------------------------------|
+| zip | Usado para instalar plugins desde Kanboard |
+
+### Recomendaciones
+
+- Usar sistemas operativos modernos de Linux o Unix.
+- El mejor performace se obtienen con la ltima versin de PHP junto con la operacin de OPcode esta activado.
+
+
+Lado del cliente
+----------------
+
+### Browsers [Navegadores]
+
+Siempre usar el navegador mas moderno o la ultima versin posible:
+
+| Browser |
+|---------------------------------------|
+| Safari |
+| Google Chrome |
+| Mozilla Firefox |
+| Microsoft Internet Explorer >= 11 |
+| Microsoft Edge |
+
+### Dispositivos
+
+| Device | Resolucin de la pantalla |
+|-------------------|--------------------|
+| Laptop o desktop | >= 1366 x 768 |
+| Tablet | >= 1024 x 768 |
+
+Kanboard an no est optimizado para smartphones. Est funcionando, pero la interfaz de usuario no es muy cmoda de usar.
diff --git a/doc/es_ES/reverse-proxy-authentication.markdown b/doc/es_ES/reverse-proxy-authentication.markdown
new file mode 100755
index 00000000..f8a0719f
--- /dev/null
+++ b/doc/es_ES/reverse-proxy-authentication.markdown
@@ -0,0 +1,64 @@
+Autenticacin por proxy inverso
+============================
+
+Este metodo de autenticacin a menudo es usado por [SSO](http://en.wikipedia.org/wiki/Single_sign-on) (Single Sign-On) especialmente para organizaciones mayores.
+
+La autenticacin se realiza mediante otro sistema, Kanboard no conoce su contrasea y supongamos que ya est autenticado.
+
+Requerimentos
+------------
+
+- Un proxy inverso bien configurado
+
+o
+
+- Apache Auth en el mismo servidor
+
+
+Como funciona esto?
+-------------------
+
+1. Su proxy inverso autentica al usuario y envia el nombre de usuario a travs de una cabecera HTTP.
+2. Kanboard recuperar el nombre de usuario de la solicitud
+ - El usuario se crea automticamente si es necesario
+ - Abrir una nueva sesin Kanboard sin ningn smbolo asumiendo que es vlida
+
+Instrucciones de instalacin
+----------------------------
+
+### Configuracin de su proxy inverso
+
+Esto esta fuera del alcance de esta documentacin.
+Debera comprobar la conexin del usuario ya que es enviado por el proxy inverso utilizando una cabecera HTTP.
+
+### Configuracin de Kanboard
+
+Crear un archivo `config.php` copiar el archivo` config.default.php`:
+
+```php
+<?php
+
+// Activar / desactivar la autenticacin del proxy inverso
+define('REVERSE_PROXY_AUTH', true); // Set this value to true
+
+// La cabecera HTTP para recuperar. Si no se especifica, el valor por defecto es REMOTE_USER
+define('REVERSE_PROXY_USER_HEADER', 'REMOTE_USER');
+
+// El Kanboard predeterminado esta el administrador para su organizacin.
+// Ya que todo debe ser filtrada por el proxy inverso,
+// Debe tener un usuario administrador para el arranque.
+define('REVERSE_PROXY_DEFAULT_ADMIN', 'myadmin');
+
+// El dominio predeterminado para asumir la direccin de correo electrnico.
+// En caso de que el nombre de usuario no es una direccin de correo electrnico,
+// Se actualizar automticamente como USER@mydomain.com
+define('REVERSE_PROXY_DEFAULT_DOMAIN', 'mydomain.com');
+```
+
+Notas:
+
+- Si el proxy esta en el mismo servidor Web que ejecuta Kanboard, segn la [CGI protocol](http://www.ietf.org/rfc/rfc3875) el Header ser `REMOTE_USER`. Por ejemplo, Apache aadir `REMOTE_USER` por defecto si` Require valid-usuario de la red se establece.
+
+- Si Apache es un proxy inverso a otro Apache corriendo Kanboard, la cabecera `REMOTE_USER` no se establece (mismo comportamiento con IIS y Nginx)
+
+- Si tu tienes un autentico reverse proxy, the [HTTP ICAP draft](http://tools.ietf.org/html/draft-stecher-icap-subid-00#section-3.4) proposes the header to be `X-Authenticated-User`. This de facto standard has been adopted by a number of tools.
diff --git a/doc/es_ES/rss.markdown b/doc/es_ES/rss.markdown
new file mode 100755
index 00000000..c1025d80
--- /dev/null
+++ b/doc/es_ES/rss.markdown
@@ -0,0 +1,23 @@
+Suscripciones RSS/Atom
+======================
+
+Kanboard Soporta feeds RSS para proyectos y usuarios.
+
+- Los feeds del proyecto contiene solamente las actividades del proyecto.
+- Los feeds del usuario contiene el flujo de actividad de todos los proyectos que el usuario es un miembro
+
+Aquellas suscripciones estan solamente activadas cuando el acceso publico esta habilitado en el perfil del usuario o en la configuraci�n del proyecto.
+
+Habilitar/Deshabilitar Feeds RSS de proyectos
+---------------------------------------------
+
+Ir a **Configuraci�n de proyecto > Acceso publico**.
+
+![Disable public access](screenshots/project-disable-sharing.png)
+
+Habilitar/Deshabilitar Feeds RSS de usuarios
+--------------------------------------------
+
+Ir a **Perfil de usuario > Acceso publico**.
+
+El enlace RSS est� protegido por un token aleatorio , s�lo las personas que conocen la URL pueden tener acceso al feed. \ No newline at end of file
diff --git a/doc/es_ES/screenshots.markdown b/doc/es_ES/screenshots.markdown
new file mode 100755
index 00000000..064517f9
--- /dev/null
+++ b/doc/es_ES/screenshots.markdown
@@ -0,0 +1,25 @@
+Agregar screenshots
+==================
+
+Tu puedes copiar y pegar imagenes directamente en Kanboard y salvarlo al mismo tiempo.
+Estas im�genes se cargan como archivos adjuntos a la tarea .
+
+Esto es especialmente �til para tomar capturas de pantalla para describir un problema , por ejemplo.
+
+Puede a�adir im�genes directamente desde el tablero haciendo clic en el men� desplegable o en la p�gina de vista de tareas .
+
+![Drop-down screenshot menu](screenshots/dropdown-screenshot.png)
+
+Para a�adir una nueva imagen , coloque su captura de pantalla y pegar CTRL+V or Command+V:
+
+![Screenshot page](screenshots/task-screenshot.png)
+
+En Mac OS X, puede utilizar los atajos para tomar screenshots:
+
+- Command-Control-Shift-3: Tome una screenshot de la pantalla , y guardarlo en el portapapeles
+- Command-Control-Shift-4, a continuaci�n, seleccione un �rea: Tome una captura de pantalla de la zona y la guarda en el portapapeles
+- Command-Control-Shift-4, entonces el espacio , a continuaci�n, haga clic en una ventana : Tome una captura de pantalla de una ventana y guardarlo en el portapapeles
+
+Tambi�n hay varias aplicaciones de terceros que pueden ser utilizados para tomar capturas de pantalla con anotaciones y formas.
+
+** Nota: Esta funci�n no funciona con todos los navegadores ** No funciona con Safari , debido a este error . : https://bugs.webkit.org/show_bug.cgi?id=49141
diff --git a/doc/es_ES/subtasks.markdown b/doc/es_ES/subtasks.markdown
new file mode 100644
index 00000000..27a9055c
--- /dev/null
+++ b/doc/es_ES/subtasks.markdown
@@ -0,0 +1,46 @@
+Subtareas
+========
+
+Las subtareas son utiles por que dividen el trabajo de las tareas.
+
+Cada subtareas:
+
+- Se puede asignar a un miembro del proyecto
+- Tiene 3 diferentes estado: **Todo**, **En progreso**, **Realizado**
+- Tienen rastreo de información: **tiempo gastado** y **tiempo estimado**
+- Ordenar por posición
+
+Crear subtareas
+-----------------
+
+Desde la vista de la tarea en la barra lateral izquierda haga clic en **Agregar una subtarea**:
+
+![Añadir una subtarea](screenshots/add-subtask.png)
+
+Tambien puede agregar una subtarea rápidamente introduciendo solamente el titulo:
+
+![Añadir una subtarea desde la vista de la subtarea](screenshots/add-subtask-shortcut.png)
+
+Cambiar estado de subtarea
+-------------------------
+
+Al hacer clic en el título de la subtarea, se hace el cambio de estado :
+
+![Subtask en progreso](screenshots/subtask-status-inprogress.png)
+
+El icono antes de que el titulo se actualice el estatus.
+
+![Subtarea realizada](screenshots/subtask-status-done.png)
+
+Nota: cuando la tarea se cierra todas las subtareas se cambian al estado **Hecho**.
+
+Temporizador de subtarea
+-------------------------
+
+- Cada vez que una subtarea está en marcha, el temporizador se inicia también
+El temporizador puede ser iniciado y detenido en cualquier momento.
+- El contador registra el tiempo empleado en la subtarea automáticamente.
+También puede cambiar manualmente el valor del campo, al editar una subtarea.
+- El cálculo de tiempo se redondea al cuarto más cercano.Esta información se registra en una tabla separada.
+- El tiempo de tarea y tiempo de estimados es de actualización automáticamente según la suma de todas las subtareas.
+
diff --git a/doc/es_ES/suse-installation.markdown b/doc/es_ES/suse-installation.markdown
new file mode 100644
index 00000000..934554e1
--- /dev/null
+++ b/doc/es_ES/suse-installation.markdown
@@ -0,0 +1,14 @@
+Instalacion en OpenSuse
+========================
+
+OpenSuse Leap 42.1
+------------------
+
+```bash---terminal
+sudo zypper install php5 php5-sqlite php5-gd php5-json php5-mcrypt php5-mbstring php5-openssl
+cd /srv/www/htdocs
+sudo wgethttps://kanboard.net/kanboard-latest.zip
+sudo unzip kanboard-latest.zip
+sudo chmod -R 777 kanboard
+sudo rm kanboard-latest.zip
+
diff --git a/doc/es_ES/swimlanes.markdown b/doc/es_ES/swimlanes.markdown
new file mode 100755
index 00000000..21e36754
--- /dev/null
+++ b/doc/es_ES/swimlanes.markdown
@@ -0,0 +1,34 @@
+Swimlanes
+=========
+
+Swimlanes son separaciones horizontales en tu tablero.
+Por ejemplo, es til para separar las versiones de software, dividir las tareas en diferentes productos, equipos o lo que quieras.
+
+Tablero con swimlanes
+----------------------
+
+![Swimlanes](screenshots/swimlanes.png)
+
+- Tu puedes colapsar los swimlanes haciendo click en el icono de la izquierda
+- El swimlane por defecto se muestra siempre en la parte superior
+
+La gestin de swimlanes
+-----------------------
+
+- Todos los proyectos tienen un swimlane predeterminado.
+- Si hay ms de un swimlane, el tablero mostrar todos swimlanes.
+- Usted puede arrastrar y soltar las tareas entre swimlanes.
+
+Para configurar swimlanes ir a la pgina de **configuracin del proyecto ** y elija la seccin **Swimlanes**.
+
+
+![Configuracin Swimlanes](screenshots/swimlane-configuration.png)
+
+A partir de ah, se puede aadir un nuevo swimlane o cambiar el nombre por defecto.
+Tambin puede desactivar y cambiar la posicin de los diferentes swimlanes.
+
+- El swimlane por defecto es siempre en la parte superior, pero se puede ocultarlo.
+- Swimlanes inactivas no se muestran en el tablero.
+- **Extraccin de una swimlane no elimina tareas **, esas tareas se movern a la swimlane predeterminada.
+
+
diff --git a/doc/es_ES/tags.markdown b/doc/es_ES/tags.markdown
new file mode 100755
index 00000000..653d3372
--- /dev/null
+++ b/doc/es_ES/tags.markdown
@@ -0,0 +1,28 @@
+Tags ** Etiqueta **
+====================
+
+Con kanboard, tu puedes asociar una o mas tags a una tarea.
+Tu puedes definir etiquetas globalmente para todos los proyectos o solo para unos proyectos en especifico
+
+![Tags en el tablero](screenshots/tags-board.png)
+
+Desde el formulario de tarea, tu puedes caputarar las tags deseadas:
+
+![Tags form](screenshots/tags-task.png)
+
+La auto-completacion se forma para mostrar sugerir etiquetas disponibles.
+
+Tambin puede crear etiquetas directamente desde el formulario de tareas .
+Por defecto , al crear etiquetas de un formulario de tarea que estn asociados al proyecto actual :
+
+![Project Tags](screenshots/tags-projects.png)
+
+Todas las tags pueden ser manejadas en configuracin del proyecto.
+
+Para definir tags globalmente para todos los proyectos, ve a la configuracin de la aplicacin :
+
+![Global Tags](screenshots/tags-global.png)
+
+Para buscar tareas basadas en etiquetas, solo use el atributo "tag":
+
+![Search Tags](screenshots/tags-search.png)
diff --git a/doc/es_ES/translations.markdown b/doc/es_ES/translations.markdown
new file mode 100644
index 00000000..66fd2a4c
--- /dev/null
+++ b/doc/es_ES/translations.markdown
@@ -0,0 +1,68 @@
+Translations
+============
+
+How to translate Kanboard to a new language?
+--------------------------------------------
+
+- Translations are stored inside the directory `app/Locale`
+- There is a subdirectory for each language, for example in French we have `fr_FR`, Italian `it_IT` etc.
+- A translation is a PHP file that returns an Array with a key-value pairs
+- The key is the original text in English and the value is the translation of the corresponding language
+- **French translations are always up to date**
+- Always use the last version (branch master)
+
+### Create a new translation:
+
+1. Make a new directory: `app/Locale/xx_XX` for example `app/Locale/fr_CA` for French Canadian
+2. Create a new file for the translation: `app/Locale/xx_XX/translations.php`
+3. Use the content of the French locales and replace the values
+4. Update the file `app/Model/Language.php`
+5. Check with your local installation of Kanboard if everything is OK
+6. Send a [pull-request with Github](https://help.github.com/articles/using-pull-requests/)
+
+How to update an existing translation?
+--------------------------------------
+
+1. Open the translation file `app/Locale/xx_XX/translations.php`
+2. Missing translations are commented with `//` and the values are empty, just fill blank and remove the comment
+3. Check with your local installation of Kanboard and send a [pull-request](https://help.github.com/articles/using-pull-requests/)
+
+How to add new translated text in the application?
+--------------------------------------------------
+
+Translations are displayed with the following functions in the source code:
+
+- `t()`: display text with HTML escaping
+- `e()`: display text without HTML escaping
+
+Always use the english version in the source code.
+
+Text strings use the function `sprintf()` to replace elements:
+
+- `%s` is used to replace a string
+- `%d` is used to replace an integer
+
+All formats are available in the [PHP documentation](http://php.net/sprintf).
+
+How to find missing translations in the applications?
+-----------------------------------------------------
+
+From a terminal, run the following command:
+
+```bash
+./cli locale:compare
+```
+
+All missing and unused translations are displayed on the screen.
+Put that in the French locale and sync other locales (see below).
+
+How to synchronize translation files?
+-------------------------------------
+
+From a Unix shell run this command:
+
+```bash
+./cli locale:sync
+```
+
+The French translation is used a reference to other locales.
diff --git a/doc/es_ES/update.markdown b/doc/es_ES/update.markdown
new file mode 100755
index 00000000..6dc422d0
--- /dev/null
+++ b/doc/es_ES/update.markdown
@@ -0,0 +1,34 @@
+Actualizar Kanboard a una nueva versin
+=======================================
+
+La actualizacin de Kanboard a una nueva versin es perfecta.
+El proceso se puede resumir simplemente copiar la carpeta de datos a la nueva carpeta Kanboard .
+Kanboard ejecutar migraciones de bases de datos de forma automtica.
+
+Cosas importantes que hacer antes de actualizar
+--------------------------------------
+
+- **Siempre crear un backup de tus datos antes de actualizarlo**
+- Verificar que tu backup es valido
+- Siempre leer el [change log](https://github.com/kanboard/kanboard/blob/master/ChangeLog) para verificar si hay cambios destacados
+- Siempre cerrar las sesiones de todos los usuarios (eliminar todas las sesiones en el servidor)
+
+Desde el archivo (Versin estable )
+---------------------------------
+
+1. Descomprimir el nuevo archivo
+2. Copiar el contenido de la carpeta de datos en el directorio recin descomprimido
+3. Copiar tu `config.php` personalizado si tienes uno
+4. Copiar tus plugins sin son necesarios
+5. Asegrese de que el directorio `data` es escribible por el usuario del servidor web
+6. Testearlo
+7. Eliminar tu viejo directorio del Kanboard
+
+Desde el repositorio (development version)
+-----------------------------------------
+
+1. `git pull`
+2. `composer install --no-dev`
+3. Inicia la sesin y comprobar si todo est bien
+
+Nota: Este mtodo se instalar la **versin de desarrollo actual**, utilice a su propio riesgo.
diff --git a/doc/es_ES/user-mentions.markdown b/doc/es_ES/user-mentions.markdown
new file mode 100644
index 00000000..1d7410e3
--- /dev/null
+++ b/doc/es_ES/user-mentions.markdown
@@ -0,0 +1,18 @@
+Menciones de usuarios
+=====================
+
+Kanboard ofrece la posibilidad de enviar notificaciones cuando alguien es mencionado.
+
+Si usted necesita obtener la atención de alguien en un comentario o una tarea, use el simbolo @ seguido por el usuario.
+Kanboard automaticamente desplegara una lista de usuarios:
+
+![User Mention](screenshots/mention-autocomplete.png)
+
+- Por el momento, solo las descripciones de la tarea y la area de comentarios la función esta activada.
+- El usuario mencionado sólo funciona durante las tareas y comentarios creados
+- Para notificar, necesita mencionar a los usuarios con su membresia de proyecto
+- Cuando alguien se mencionó, este usuario recibirá una notificación.
+- El @username mencionado está relacionado con el perfil de usuario.
+
+La notificacion es enviada de acuerdo a la configuracion del usuario, se le puede enviar un email, una notificaicon via web o mensajes en Slack/Hipchat/Jabber si y cuando se tenga instalados dichos plugins.
+
diff --git a/doc/fr_FR/2fa.markdown b/doc/fr_FR/2fa.markdown
index 2ecaa10b..0b77ac8a 100644
--- a/doc/fr_FR/2fa.markdown
+++ b/doc/fr_FR/2fa.markdown
@@ -24,7 +24,7 @@ Paramétrage
2. Sur la gauche, cliquez sur **Authentification à deux facteurs** et cochez la case.
3. Une clef secrète est générée pour vous.
-![2FA](https://kanboard.net/screenshots/documentation/2fa.png)
+![2FA](screenshots/2fa.png)
- Vous devez sauvegarder votre clef dans votre logiciel TOTP. Si vous utilisez un smartphone, la solution la plus simple est de scanner le QR code avec FreeOTP ou Google Authenticator
- À chaque ouverture de session, un nouveau code sera demandé
diff --git a/doc/fr_FR/analytics-tasks.markdown b/doc/fr_FR/analytics-tasks.markdown
index 0eb89e34..40b4e2f2 100644
--- a/doc/fr_FR/analytics-tasks.markdown
+++ b/doc/fr_FR/analytics-tasks.markdown
@@ -6,7 +6,7 @@ Chaque tâche possède une section analytique accessible à partir du menu à ga
Lead et cycle time
-------------------
-![Lead and cycle time](https://kanboard.net/screenshots/documentation/task-lead-cycle-time.png)
+![Lead and cycle time](screenshots/task-lead-cycle-time.png)
- Le lead time est la durée entre la création de la tâche et son achèvement (tâche fermée).
- Le cycle time est la durée entre la date de début et l'achèvement.
@@ -18,7 +18,7 @@ Remarque : vous pouvez configurer une action pour définir automatiquement que l
Temps passé dans chaque colonne
---------------------------
-![Temps passé dans chaque colonne](https://kanboard.net/screenshots/documentation/time-into-each-column.png)
+![Temps passé dans chaque colonne](screenshots/time-into-each-column.png)
- Ce graphique montre le temps total passé dans chaque colonne pour la tâche
- Le temps passé est calculé jusqu’à ce que la tâche soit fermée
diff --git a/doc/fr_FR/analytics.markdown b/doc/fr_FR/analytics.markdown
index 0b94f272..40944414 100644
--- a/doc/fr_FR/analytics.markdown
+++ b/doc/fr_FR/analytics.markdown
@@ -6,21 +6,21 @@ Chaque projet dispose d'une section analytique. En fonction de la façon dont vo
Répartition des utilisateurs
----------------
-![Répartition des utilisateurs](https://kanboard.net/screenshots/documentation/user-repartition.png)
+![Répartition des utilisateurs](screenshots/user-repartition.png)
Ce graphique circulaire affiche le nombre de tâches assignées par utilisateur.
Distribution des tâches
-----------------
-![Distribution des tâches](https://kanboard.net/screenshots/documentation/task-distribution.png)
+![Distribution des tâches](screenshots/task-distribution.png)
Ce graphique circulaire donne une vue d'ensemble du nombre de tâches ouvertes par colonne.
Diagramme de flux cumulé
-----------------------
-![Diagramme de flux cumulé](https://kanboard.net/screenshots/documentation/cfd.png)
+![Diagramme de flux cumulé](screenshots/cfd.png)
- Ce graphique affiche le nombre de tâches de façon cumulée pour chaque colonne en fonction du temps passé.
- Chaque jour, le nombre total de tâches est enregistré pour chaque colonne.
@@ -31,7 +31,7 @@ Remarque : il faut au moins deux jours de données pour que le graphique apparai
Graphique d'avancement
--------------
-![Graphique d'avancement](https://kanboard.net/screenshots/documentation/burndown-chart.png)
+![Graphique d'avancement](screenshots/burndown-chart.png)
Un [graphique d'avancement](http://en.wikipedia.org/wiki/Burn_down_chart) est disponible pour chaque projet.
@@ -42,7 +42,7 @@ Un [graphique d'avancement](http://en.wikipedia.org/wiki/Burn_down_chart) est di
Temps moyen passé pour chaque colonne
-----------------------------------
-![Temps moyen passé pour chaque colonne](https://kanboard.net/screenshots/documentation/average-time-spent-into-each-column.png)
+![Temps moyen passé pour chaque colonne](screenshots/average-time-spent-into-each-column.png)
Ce graphique affiche le temps moyen passé pour chaque colonne pour les 1000 dernière tâches.
@@ -52,7 +52,7 @@ Ce graphique affiche le temps moyen passé pour chaque colonne pour les 1000 der
Temps moyen de Lead et Cycle
---------------------------
-![Temps moyen passé pour chaque colonne](https://kanboard.net/screenshots/documentation/average-lead-cycle-time.png)
+![Temps moyen passé pour chaque colonne](screenshots/average-lead-cycle-time.png)
Ce graphique affiche le temps moyen de lead et cycle pour les 1000 dernières tâches au cours du temps.
diff --git a/doc/fr_FR/application-configuration.markdown b/doc/fr_FR/application-configuration.markdown
index 12768f03..7ddc7284 100644
--- a/doc/fr_FR/application-configuration.markdown
+++ b/doc/fr_FR/application-configuration.markdown
@@ -6,7 +6,7 @@ Seuls les administrateurs peuvent modifier ces paramètres.
Allez au menu **Paramètres**, puis choisissez **Paramètres de l'application** sur la gauche.
-![Paramètres de l'application](https://kanboard.net/screenshots/documentation/application-settings.png)
+![Paramètres de l'application](screenshots/application-settings.png)
### URL de l'application
diff --git a/doc/fr_FR/application-configuration.markup b/doc/fr_FR/application-configuration.markup
index 12768f03..7ddc7284 100644
--- a/doc/fr_FR/application-configuration.markup
+++ b/doc/fr_FR/application-configuration.markup
@@ -6,7 +6,7 @@ Seuls les administrateurs peuvent modifier ces paramètres.
Allez au menu **Paramètres**, puis choisissez **Paramètres de l'application** sur la gauche.
-![Paramètres de l'application](https://kanboard.net/screenshots/documentation/application-settings.png)
+![Paramètres de l'application](screenshots/application-settings.png)
### URL de l'application
diff --git a/doc/fr_FR/board-configuration.markdown b/doc/fr_FR/board-configuration.markdown
index f7f8be33..1a4441a6 100644
--- a/doc/fr_FR/board-configuration.markdown
+++ b/doc/fr_FR/board-configuration.markdown
@@ -3,7 +3,7 @@ Paramètres du tableau
Allez dans le menu **Paramètres** puis choisissez *Paramètres du tableau** sur la gauche
-![Paramètres du tableau](https://kanboard.net/screenshots/documentation/board-settings.png)
+![Paramètres du tableau](screenshots/board-settings.png)
### Mise en avant d'une tâche
diff --git a/doc/fr_FR/calendar-configuration.markdown b/doc/fr_FR/calendar-configuration.markdown
index 6494568a..74aa078f 100644
--- a/doc/fr_FR/calendar-configuration.markdown
+++ b/doc/fr_FR/calendar-configuration.markdown
@@ -3,7 +3,7 @@ Paramètres du calendrier
Allez au menu **Paramètres**, puis choisissez **Paramètres du calendrier** sur la gauche.
-![Paramètres du calendrier](https://kanboard.net/screenshots/documentation/calendar-settings.png)
+![Paramètres du calendrier](screenshots/calendar-settings.png)
il existe deux calendriers distincts dans Kanboard :
diff --git a/doc/fr_FR/calendar.markdown b/doc/fr_FR/calendar.markdown
index 2ceeeaa4..211749ea 100644
--- a/doc/fr_FR/calendar.markdown
+++ b/doc/fr_FR/calendar.markdown
@@ -13,7 +13,7 @@ Pour l'instant le calendrier permet d'afficher les informations suivantes :
- Le suivi dans le temps de sous-tâches, tous les segments temporels sont affichés dans le calendrier.
- Les estimations pour les sous-tâches, les prévisions et le travail restant
-![Calendrier](https://kanboard.net/screenshots/documentation/calendar.png)
+![Calendrier](screenshots/calendar.png)
La configuration du calendrier peut être modifiée dans la page des paramètres.
diff --git a/doc/fr_FR/centos-installation.markdown b/doc/fr_FR/centos-installation.markdown
new file mode 100644
index 00000000..1e197de5
--- /dev/null
+++ b/doc/fr_FR/centos-installation.markdown
@@ -0,0 +1,83 @@
+Installation de Kanboard sur CentOS
+===================================
+
+CentOS 7
+--------
+
+Installez PHP et Apache :
+
+```bash
+yum install -y php php-mbstring php-pdo php-gd unzip wget
+```
+
+Par défaut, Centos 7 utilise PHP 5.4.16 et Apache 2.4.6.
+
+Redémarrer Apache :
+
+```bash
+systemctl restart httpd.service
+```
+
+Installez Kanboard :
+
+```bash
+cd /var/www/html
+wget https://kanboard.net/kanboard-latest.zip
+unzip kanboard-latest.zip
+chown -R apache:apache kanboard/data
+rm kanboard-latest.zip
+```
+
+CentOS 6.x
+----------
+
+Installez PHP et Apache :
+
+```bash
+yum install -y php php-mbstring php-pdo php-gd unzip wget
+```
+
+Par défaut, Centos 6.5 utilise PHP 5.3.3 et Apache 2.2.15.
+
+Activez les "short tags":
+
+- Modifiez le fichier `/etc/php.ini`
+- Changez cette ligne pour que la valeur soit à `On` : `short_open_tag = On`
+
+Redémarrez Apache:
+
+```bash
+service httpd restart
+```
+
+Installez Kanboard :
+
+```bash
+cd /var/www/html
+wget https://kanboard.net/kanboard-latest.zip
+unzip kanboard-latest.zip
+chown -R apache:apache kanboard/data
+rm kanboard-latest.zip
+```
+
+Restrictions SELinux
+--------------------
+
+Si SELinux est activé, soyez sûr que Apache puisse écrire dans le répertoire `data` :
+
+```bash
+chcon -R -t httpd_sys_content_rw_t /var/www/html/kanboard/data
+```
+
+La même chose s'applique pour autoriser Kanboard à envoyer des requêtes réseau externes :
+
+```bash
+setsebool -P httpd_can_network_connect=1
+```
+
+Autoriser des connexions externes est nécessaire si vous souhaitez utiliser LDAP, SMTP ou les webhooks.
+
+Notes
+-----
+
+Certaines fonctionnalités de Kanboard demandent à ce que vous installiez une [tâche planifiée](cronjob.markdown).
diff --git a/doc/fr_FR/closing-tasks.markdown b/doc/fr_FR/closing-tasks.markdown
index 022a1dfd..824cd6c7 100644
--- a/doc/fr_FR/closing-tasks.markdown
+++ b/doc/fr_FR/closing-tasks.markdown
@@ -7,10 +7,10 @@ Toutefois, vous pouvez toujours accéder à la liste des tâches closes en utili
Il existe deux façons différentes de fermer une tâche, depuis le menu déroulant des tâches sur le tableau :
-![Fermer une tâche par le menu déroulant](https://kanboard.net/screenshots/documentation/menu-close-task.png)
+![Fermer une tâche par le menu déroulant](screenshots/menu-close-task.png)
…ou bien depuis la barre latérale dans la vue détaillée des tâches
-![Fermer une tâche](https://kanboard.net/screenshots/documentation/closing-tasks.png)
+![Fermer une tâche](screenshots/closing-tasks.png)
Remarque : quand vous fermez une tâche, toutes les sous-tâches qui ne sont pas achevées verront leur statut passer à "Terminé".
diff --git a/doc/fr_FR/currency-rate.markdown b/doc/fr_FR/currency-rate.markdown
index e84acd31..48b1c417 100644
--- a/doc/fr_FR/currency-rate.markdown
+++ b/doc/fr_FR/currency-rate.markdown
@@ -6,6 +6,6 @@ Si vous avez à manipuler plusieurs devises, vous pouvez définir ici le taux en
Cette fonctionnalité est utilisée pour calculer le budget du projet.
-![Currency Rate](https://kanboard.net/screenshots/documentation/currency-rate.png)
+![Currency Rate](screenshots/currency-rate.png)
Les paramètres pour le taux de change des devises sont situés dans **Paramètres > Taux de change**
diff --git a/doc/fr_FR/custom-project-roles.markdown b/doc/fr_FR/custom-project-roles.markdown
new file mode 100644
index 00000000..2b6d3df4
--- /dev/null
+++ b/doc/fr_FR/custom-project-roles.markdown
@@ -0,0 +1,86 @@
+Rôles personnalisés pour les projets
+====================================
+
+Vous pouvez créer des rôles personnalisés pour les projets afin d'appliquer des restrictions spécifiques sur les personnes qui appartiennent à ce rôle.
+Ces rôles personnalisés sont définis pour chaque projet.
+
+Un rôle personnalisé hérite du rôle « Membre du projet ».
+Par exemple, vous pouvez créer un rôle personnalisé pour forcer quelqu'un à suivre un process.
+Vous pourriez avoir un groupe de gens qui sont autorisés seulement à déplacer des tâches entre les colonnes « Travail en cours » et « Terminé ».
+
+Liste des restrictions
+----------------------
+
+- Restrictions au niveau du projet :
+ - La création de tâches n'est pas permise
+ - Ouvrir ou fermer une tâche n'est pas permise
+ - Déplacer une tâche n'est pas autorisé
+- Restrictions au niveau des colonnes :
+ - La création de tâches est autorisée ou bloquée pour une colonne spécifique
+ - L'ouverture ou la fermeture de tâche est autorisée ou bloquée pour une colonne spécifique
+- Déplacer une tâche seulement entre les colonnes spécifiées
+
+Configuration
+-------------
+
+### 1) Créer un rôle personnalisé
+
+Depuis les réglages du projet, cliquez dans le menu à gauche sur **Rôles personnalisés** et en haut de la page sur **Ajouter un nouveau rôle personnalisé**.
+
+![New custom role](screenshots/new_custom_role.png)
+
+Donnez un nom au rôle et soumettez le formulaire.
+
+### 2) Ajouter une restriction au rôle
+
+Il y a plusieurs sortes de restrictions :
+
+- Restrictions au niveau du projet
+- Restriction sur le déplacement des tâches entre les colonnes
+- Restrictions sur les colonnes
+
+Vous pouvez cliquer sur le menu déroulant pour ajouter une nouvelle restriction :
+
+![Ajouter une nouvelle restriction](screenshots/add_new_restriction.png)
+
+### 3) Liste des restrictions
+
+![Liste des restrictions](screenshots/example-restrictions.png)
+
+Par exemple, ce rôle est capable de créer des tâches seulement dans la colonne « Backlog » et de déplacer des tâches entre les colonnes « Ready » et « Work in progress ».
+
+### 4) Assigner le rôle à quelqu'un
+
+Allez dans la section **Permissions** dans le menu sur la gauche et assignez le rôle personnalisé à l'utilisateur.
+
+![Assignation du rôle](screenshots/custom_roles.png)
+
+Exemples
+--------
+
+### Autoriser les gens à créer des tâches uniquement dans certaines colonnes
+
+![Exemple de restriction sur la création des tâches](screenshots/example-restriction-task-creation.png)
+
+- Les utilisateurs qui appartiennent à ce rôle seront capables de créer des tâches seulement dans la colonne « Backlog ».
+- La combinaison des deux règles est importante, sinon cela ne fonctionnera pas.
+
+### Autoriser les gens à changer le statut des tâches uniquement dans certaines colonnes
+
+![Exemple de restriction sur statut des tâches](screenshots/example-restriction-task-status.png)
+
+- Les utilisateurs qui appartiennent à ce rôle seront capables de change le statut des tâches seulement dans la colonne « Backlog ».
+- Les tâches qui possèdent le statut ouvert sont visibles sur le tableau alors que celles qui ont le statut fermé ne sont pas visibles.
+
+### Ne pas autoriser les gens à changer le statut des tâches dans une colonne spécifique
+
+![Exemple de restriction sur les colonnes](screenshots/example-restriction-task-status-blocked.png)
+
+Les utilisateurs qui appartiennent à ce rôle ne seront pas capables de changer le statut des tâches dans la colonne « Done ».
+Par contre, cela reste possible dans les autres colonnes.
+
+### Autoriser les gens à déplacer des tâches seulement entre certaines colonnes
+
+![Exemple de restriction pour le drag and drop](screenshots/example-restriction-task-drag-and-drop.png)
+
+Les utilisateurs qui appartiennent à ce rôle seront capables de déplacer les tâches seulement entre les colonnes « Ready » et « Work in progress ».
diff --git a/doc/fr_FR/debian-installation.markdown b/doc/fr_FR/debian-installation.markdown
new file mode 100644
index 00000000..9bdce7f3
--- /dev/null
+++ b/doc/fr_FR/debian-installation.markdown
@@ -0,0 +1,63 @@
+Installation de Kanboard sur Debian
+===================================
+
+Debian 8 (Jessie)
+-----------------
+
+Installez Apache et PHP :
+
+```bash
+apt-get update
+apt-get install -y php5 php5-sqlite php5-gd unzip
+service apache2 restart
+```
+
+Installez Kanboard :
+
+```bash
+cd /var/www/html
+wget https://kanboard.net/kanboard-latest.zip
+unzip kanboard-latest.zip
+chown -R www-data:www-data kanboard/data
+rm kanboard-latest.zip
+```
+
+Debian 7 (Wheezy)
+-----------------
+
+Installez Apache et PHP :
+
+```bash
+apt-get update
+apt-get install -y php5 php5-sqlite php5-gd unzip
+```
+
+Installez Kanboard :
+
+```bash
+cd /var/www
+wget https://kanboard.net/kanboard-latest.zip
+unzip kanboard-latest.zip
+chown -R www-data:www-data kanboard/data
+rm kanboard-latest.zip
+```
+
+Debian 6 (Squeeze)
+------------------
+
+Installez Apache et PHP :
+
+```bash
+apt-get update
+apt-get install -y libapache2-mod-php5 php5-sqlite php5-gd unzip
+```
+
+Installez Kanboard :
+
+```bash
+cd /var/www
+wget https://kanboard.net/kanboard-latest.zip
+unzip kanboard-latest.zip
+chown -R www-data:www-data kanboard/data
+rm kanboard-latest.zip
+```
diff --git a/doc/fr_FR/duplicate-move-tasks.markdown b/doc/fr_FR/duplicate-move-tasks.markdown
index 07c863d0..5d40d328 100644
--- a/doc/fr_FR/duplicate-move-tasks.markdown
+++ b/doc/fr_FR/duplicate-move-tasks.markdown
@@ -6,7 +6,7 @@ Dupliquer une tâche dans le même projet
Allez à la vue par tâche et choisissez **Dupliquer** sur la gauche.
-![Duplication de tâche](https://kanboard.net/screenshots/documentation/task-duplication.png)
+![Duplication de tâche](screenshots/task-duplication.png)
Une nouvelle tâche sera créée avec les mêmes propriétés que celles de la tâche originale.
@@ -15,7 +15,7 @@ Dupliquer une tâche vers un autre projet
Allez à la vue par tâches et choisissez **Dupliquer dans un autre projet**.
-![Duplication d'une tâche dans un autre projet](https://kanboard.net/screenshots/documentation/task-duplication-another-project.png)
+![Duplication d'une tâche dans un autre projet](screenshots/task-duplication-another-project.png)
Seuls les projets dont vous êtes membre apparaîtront dans le menu déroulant.
diff --git a/doc/fr_FR/gantt-chart-projects.markdown b/doc/fr_FR/gantt-chart-projects.markdown
index 3801dc88..7a0242d1 100644
--- a/doc/fr_FR/gantt-chart-projects.markdown
+++ b/doc/fr_FR/gantt-chart-projects.markdown
@@ -8,7 +8,7 @@ Le but de ce diagramme de Gantt est d'afficher une vue d'ensemble de tous les pr
- Les administrateurs de projet ne verront que les projets dans lesquels il y a des membres
- Les objets privés ne sont pas affichés dans ce graphique
-![Diagramme de Gantt pour tous les projets](https://kanboard.net/screenshots/documentation/gantt-chart-all-projects.png)
+![Diagramme de Gantt pour tous les projets](screenshots/gantt-chart-all-projects.png)
- La **date de début** et la **date de fin** des projets est utilisée pour construire le graphique
- Les barres horizontales peuvent être redimensionnées et déplacées latéralement avec votre souris
diff --git a/doc/fr_FR/gantt-chart-tasks.markdown b/doc/fr_FR/gantt-chart-tasks.markdown
index fbd1b587..f25ed6cb 100644
--- a/doc/fr_FR/gantt-chart-tasks.markdown
+++ b/doc/fr_FR/gantt-chart-tasks.markdown
@@ -6,7 +6,7 @@ Le but de ce diagramme de Gantt est de montrer une vue d'ensemble du temps utili
- Le diagramme de Gantt est disponible depuis le « sélecteur de vue »
- Seuls les gestionnaires de projet peuvent accéder à cette section
-![Gantt Chart](https://kanboard.net/screenshots/documentation/gantt-chart-project.png)
+![Gantt Chart](screenshots/gantt-chart-project.png)
- La **date de début** et la **date de fin** des tâches sont utilisées pour créer le graphique
- Les tâches peuvent être redimensionnées et déplacées horizontalement avec votre souris
@@ -17,4 +17,4 @@ Le but de ce diagramme de Gantt est de montrer une vue d'ensemble du temps utili
- Les nouvelles tâches crées avec cette vue seront affichées sur le tableau en position 1 de la première colonne
- Les tâches sont affichées en noir quand il n'existe ni date de début ni date d'échéance définies
-![Tâche non définie](https://kanboard.net/screenshots/documentation/gantt-chart-not-defined.png)
+![Tâche non définie](screenshots/gantt-chart-not-defined.png)
diff --git a/doc/fr_FR/index.markdown b/doc/fr_FR/index.markdown
index a73c5c23..b33baf85 100644
--- a/doc/fr_FR/index.markdown
+++ b/doc/fr_FR/index.markdown
@@ -31,6 +31,7 @@ Utiliser Kanboard
- [Analytique](analytics.markdown)
- [Diagramme de Gantt pour les tâches](gantt-chart-tasks.markdown)
- [Diagramme de Gantt pour tous les projets](gantt-chart-projects.markdown)
+- [Rôles personnalisés pour les projets](custom-project-roles.markdown)
### Travailler avec les tâches
@@ -38,13 +39,14 @@ Utiliser Kanboard
- [Fermer des tâches](closing-tasks.markdown)
- [Dupliquer et déplacer des tâches](duplicate-move-tasks.markdown)
- [Ajouter des captures d'écran](screenshots.markdown)
-- [Liens entre les tâches](task-links.markdown)
+- [Liens internes entre les tâches](task-links.markdown)
- [Transitions](transitions.markdown)
- [Suivi du temps](time-tracking.markdown)
- [Tâches récurrentes](recurring-tasks.markdown)
- [Créer des tâches par email](create-tasks-by-email.markdown)
- [Sous-tâches](subtasks.markdown)
- [Analytique des tâches](analytics-tasks.markdown)
+- [Mentionner les utilisateurs](user-mentions.markdown)
### Travailler avec les utilisateurs
@@ -62,3 +64,15 @@ Utiliser Kanboard
- [Paramètres du calendrier](calendar-configuration.markdown)
- [Paramètres du lien](link-labels.markdown)
- [Taux de change](currency-rate.markdown)
+
+Détails techniques
+------------------
+
+### Installation
+
+- [Prérequis](requirements.markdown)
+- [Instructions d'installation](installation.markdown)
+- [Mise à jour vers une nouvelle version](update.markdown)
+- [Installation sur Ubuntu](ubuntu-installation.markdown)
+- [Installation sur Debian](debian-installation.markdown)
+- [Installation sur Centos](centos-installation.markdown)
diff --git a/doc/fr_FR/installation.markdown b/doc/fr_FR/installation.markdown
new file mode 100644
index 00000000..9e4cb47a
--- /dev/null
+++ b/doc/fr_FR/installation.markdown
@@ -0,0 +1,67 @@
+Installation
+============
+
+Avant toute chose, vérifiez-les [prérequis](requirements.markdown) avant d'aller plus loin.
+
+Depuis l'archive (version stable)
+---------------------------------
+
+1. Vous devez avoir un serveur web avec PHP déjà configuré
+2. Téléchargez le code source de l'application et copiez le dossier `kanboard` là où vous le souhaitez
+3. Vérifiez si le répertoire `data` est accessible en écriture par l'utilisateur de votre serveur web
+4. Avec votre navigateur, allez sur <http://yourpersonalserver/kanboard>
+5. L'utilisateur et le mot de passe par défaut sont **admin/admin**
+6. Commencez à utiliser le logiciel
+7. N'oubliez pas de changer le mot de passe par défaut !
+
+Le répertoire `data` est utilisé pour :
+
+- La base de données Sqlite : `db.sqlite`
+- Le fichier de débogage : `debug.log` (uniquement si le mode débug est actif)
+- Les fichiers uploadés : `files/*`
+- Les vignettes des images : `files/thumbnails/*`
+
+Les gens qui utilisent une base de données distante (Mysql/Postgresql) ou un système de stockage distant tel que Amazon S3 n'ont pas forcément besoin d'avoir un dossier `data` local.
+
+Depuis le dépôt git (version de développement)
+----------------------------------------------
+
+Vous devez installer [composer](https://getcomposer.org/) pour utiliser cette méthode.
+
+1. `git clone https://github.com/kanboard/kanboard.git`
+2. `composer install --no-dev`
+3. Allez à l'étape 3) juste au-dessus
+
+Cette méthode va installer **la version en cours de développement**, utilisez là à vos risques.
+
+Installation en dehors du document root
+---------------------------------------
+
+Si vous souhaitez installer Kanboard en dehors du document root de votre serveur web, vous devez créer au minimum ces liens symboliques :
+
+```bash
+.
+├── assets -> ../kanboard/assets
+├── cli -> ../kanboard/cli
+├── doc -> ../kanboard/doc
+├── favicon.ico -> ../kanboard/favicon.ico
+├── index.php -> ../kanboard/index.php
+├── jsonrpc.php -> ../kanboard/jsonrpc.php
+└── robots.txt -> ../kanboard/robots.txt
+```
+
+Le `.htaccess` est optionnel parce que sont contenu peut-être inclus directement dans la configuration Apache.
+
+Vous pouvez également définir un autre dossier pour les plug-ins et les fichiers uploadés en changeant le [fichier de configuration](config.markdown).
+
+Installations supplémentaires
+-----------------------------
+
+- Certaines fonctionnalités de Kanboard demandent à ce que vous installiez une [tâche planifiée](cronjob.markdown) (Rapports et statistiques)
+- [Un processus qui tourne en arrière-plan](worker.markdown) peut être installé pour améliorer les performances
+
+Sécurité
+--------
+
+- Ne pas oublier de changer le mot de passe par défaut
+- Ne pas autoriser tout le monde à accéder au dossier `data` depuis l'URL. Il y a déjà un `.htaccess` pour Apache et un fichier `web.config` pour IIS mais rien pour Nginx.
diff --git a/doc/fr_FR/link-labels.markdown b/doc/fr_FR/link-labels.markdown
index 9c266b5a..8ba0d332 100644
--- a/doc/fr_FR/link-labels.markdown
+++ b/doc/fr_FR/link-labels.markdown
@@ -3,11 +3,11 @@ Paramètres des liens
Les relations entre les tâches peuvent être modifiées depuis les paramètres de l'application (**Paramètres > Paramètres des liens**)
-![Libellé des liens](https://kanboard.net/screenshots/documentation/link-labels.png)
+![Libellé des liens](screenshots/link-labels.png)
Chaque nom du libellé peut avoir un nom du libellé opposé.
Si il n'y a pas d'opposé, le nom du libellé sera considéré comme étant bidirectionnel.
-![Création d'un libellé de lien](https://kanboard.net/screenshots/documentation/link-label-creation.png)
+![Création d'un libellé de lien](screenshots/link-label-creation.png)
diff --git a/doc/fr_FR/notifications.markdown b/doc/fr_FR/notifications.markdown
index 43f34a8e..faf35cf9 100644
--- a/doc/fr_FR/notifications.markdown
+++ b/doc/fr_FR/notifications.markdown
@@ -15,7 +15,7 @@ Chaque utilisateur doit autoriser les notifications dans son profil : **Profil U
Vous devez, bien sûr, avoir renseigné une adresse email valide dans votre profil et l'application doit être configurée pour envoyer des emails.
-![Notifications](https://kanboard.net/screenshots/documentation/notifications.png)
+![Notifications](screenshots/notifications.png)
Vous pouvez choisir votre méthode favorite de notification :
@@ -36,10 +36,10 @@ Notifications web
Les notifications web sont accessibles depuis le tableau de bord ou depuis l'icône en haut de la page :
-![Icône des notifications web](https://kanboard.net/screenshots/documentation/web-notifications-icon.png)
+![Icône des notifications web](screenshots/web-notifications-icon.png)
Les notifications sont affichées sous forme de liste. Vous pouvez marquer comme lu chacune d'entre-elle ou toutes en même temps.
-![Notifications web](https://kanboard.net/screenshots/documentation/web-notifications.png)
+![Notifications web](screenshots/web-notifications.png)
Avec cette méthode vous pouvez quand même rester avertis de ce que se passe sans pour autant être inondé d'emails.
diff --git a/doc/fr_FR/project-configuration.markdown b/doc/fr_FR/project-configuration.markdown
index 22db5bf1..ff5b19d4 100644
--- a/doc/fr_FR/project-configuration.markdown
+++ b/doc/fr_FR/project-configuration.markdown
@@ -4,7 +4,7 @@ Paramètres du projet
Aller dans le menu **Préférences**; puis choisissez **Paramètres du projet** sur la gauche
-![Paramètres du projet](https://kanboard.net/screenshots/documentation/project-settings.png)
+![Paramètres du projet](screenshots/project-settings.png)
###Colonnes par défaut pour les nouveaux projets
@@ -28,7 +28,7 @@ Lorsque cette option est sélectionnée, un utilisateur ne peut travailler que s
Si une autre sous-tâche possède le statut « en cours », l'utilisateur verra cette boite de dialogue :
-![Limite des sous-tâches pour l'utilisateur](https://kanboard.net/screenshots/documentation/subtask-user-restriction.png)
+![Limite des sous-tâches pour l'utilisateur](screenshots/subtask-user-restriction.png)
### Déclencher automatiquement le suivi du temps pour les sous-tâches
diff --git a/doc/fr_FR/recurring-tasks.markdown b/doc/fr_FR/recurring-tasks.markdown
index 95f24c40..f7972f2f 100644
--- a/doc/fr_FR/recurring-tasks.markdown
+++ b/doc/fr_FR/recurring-tasks.markdown
@@ -12,7 +12,7 @@ Configuration
Allez à la page de vue par tâches ou utilisez le menu déroulant du tableau, puis choisissez **Modifier la récurrence**.
-![Tâche récurrente](https://kanboard.net/screenshots/documentation/recurring-tasks.png)
+![Tâche récurrente](screenshots/recurring-tasks.png)
il existe trois façons de déclencher la création d'une nouvelle tâche récurrente :
diff --git a/doc/fr_FR/requirements.markdown b/doc/fr_FR/requirements.markdown
new file mode 100644
index 00000000..49cb1022
--- /dev/null
+++ b/doc/fr_FR/requirements.markdown
@@ -0,0 +1,108 @@
+Prérequis
+=========
+
+Côté serveur
+------------
+
+### Systèmes d'exploitation compatibles
+
+| Système d'exploitation |
+|--------------------------------------|
+| Linux Ubuntu Xenial Xerus 16.04 LTS |
+| Linux Ubuntu Trusty 14.04 LTS |
+| Linux Centos 6.x |
+| Linux Centos 7.x |
+| Linux Redhat 6.x |
+| Linux Redhat 7.x |
+| Linux Debian 8 |
+| FreeBSD 10.x |
+| Microsoft Windows 2012 R2 |
+| Microsoft Windows 2008 |
+
+### Bases de données compatibles
+
+| Base de données |
+|--------------------|
+| Sqlite 3.x |
+| Mysql >= 5.5 |
+| MariaDB >= 10 |
+| Postgresql >= 9.3 |
+
+Quelle base de données choisir ?
+
+| Type | Utilisation |
+|-----------------|-------------------------------------------------------------|
+| Sqlite | Un seul utilisateur ou petite équipe (concurrence faible) |
+| Mysql/Postgres | Équipe plus importante, installation à haute-disponibilité |
+
+Ne pas utiliser Sqlite sur des montages NFS, seulement lorsque vous avez un disque dur avec des entrées/sorties rapides.
+
+### Serveurs web compatibles
+
+| Serveur web |
+|--------------------|
+| Apache HTTP Server |
+| Nginx |
+| Microsoft IIS |
+
+Kanboard est préconfiguré pour fonctionner avec Apache (réécriture des URL).
+
+### Versions de PHP compatibles
+
+| Version de PHP |
+|----------------|
+| PHP >= 5.3.9 |
+| PHP 5.4 |
+| PHP 5.5 |
+| PHP 5.6 |
+| PHP 7.x |
+
+### Extensions PHP requises
+
+| Extension PHP | Note |
+|----------------------------|------------------------------------------|
+| pdo_sqlite | Seulement si vous utilisez Sqlite |
+| pdo_mysql | Seulement si vous utilisez Mysql/MariaDB |
+| pdo_pgsql | Seulement si vous utilisez Postgres |
+| gd | |
+| mbstring | |
+| openssl | |
+| json | |
+| hash | |
+| ctype | |
+| session | |
+| ldap | Seulement pour l'authentification LDAP |
+| Zend OPcache | Recommandé |
+
+### Extensions PHP optionnelles
+
+| Extension PHP | Note |
+|----------------------------|--------------------------------------------|
+| zip | Utilisé pour installer les extensions |
+
+### Recommendations
+
+- Système d'exploitation Unix ou Linux moderne.
+- Les meilleures performances sont obtenues avec la dernière version de PHP et le cache OPcode activé.
+
+Côté client
+-----------
+
+### Navigateurs web
+
+Toujours utiliser un navigateur web moderne si possible :
+
+| Navigateur web |
+|---------------------------------------|
+| Safari |
+| Google Chrome |
+| Mozilla Firefox |
+| Microsoft Internet Explorer >= 11 |
+| Microsoft Edge |
+
+### Appareils
+
+| Device | Screen resolution |
+|-------------------|--------------------|
+| Laptop or desktop | >= 1366 x 768 |
+| Tablet | >= 1024 x 768 |
diff --git a/doc/fr_FR/roles.markdown b/doc/fr_FR/roles.markdown
index e55a3969..c6a41aa1 100644
--- a/doc/fr_FR/roles.markdown
+++ b/doc/fr_FR/roles.markdown
@@ -22,3 +22,5 @@ Chaque membre d'un projet peut avoir un rôle différent :
| Chef de projet | Peut changer les paramètres du projet, accéder aux rapports |
| Membre du projet | Peut créer des tâches et utiliser le tableau Kanban |
| Visualiseur de projet | Accès en lecture seule au projet |
+
+Il est également possible de créer des rôles personnalisés pour appliquer des restrictions supplémentaires sur les utilisateurs.
diff --git a/doc/fr_FR/screenshots.markdown b/doc/fr_FR/screenshots.markdown
index e634bd1b..66f3c5b8 100644
--- a/doc/fr_FR/screenshots.markdown
+++ b/doc/fr_FR/screenshots.markdown
@@ -8,11 +8,11 @@ Ceci est particulièrement utile pour prendre des captures d'écran, quand il fa
Vous pouvez ajouter directement des captures depuis le tableau en cliquant sur le menu déroulant ou sur la page de visualisation des tâches.
-![La capture d'écran dans le menu déroulant](https://kanboard.net/screenshots/documentation/dropdown-screenshot.png)
+![La capture d'écran dans le menu déroulant](screenshots/dropdown-screenshot.png)
Pour ajouter une nouvelle image, prenez votre capture et collez-la avec CTRL+V ou Command+V:
-![Page de capture](https://kanboard.net/screenshots/documentation/task-screenshot.png)
+![Page de capture](screenshots/task-screenshot.png)
Avec Mac OS X, vous pouvez utiliser les raccourcis suivants pour prendre des captures d'écran :
diff --git a/doc/fr_FR/screenshots/internal-task-links.png b/doc/fr_FR/screenshots/internal-task-links.png
new file mode 100644
index 00000000..b0aa91ce
--- /dev/null
+++ b/doc/fr_FR/screenshots/internal-task-links.png
Binary files differ
diff --git a/doc/fr_FR/screenshots/task-transitions.png b/doc/fr_FR/screenshots/task-transitions.png
new file mode 100644
index 00000000..b71e82cd
--- /dev/null
+++ b/doc/fr_FR/screenshots/task-transitions.png
Binary files differ
diff --git a/doc/fr_FR/subtasks.markdown b/doc/fr_FR/subtasks.markdown
index 02345c2a..db45494f 100644
--- a/doc/fr_FR/subtasks.markdown
+++ b/doc/fr_FR/subtasks.markdown
@@ -15,22 +15,22 @@ Créer des sous-tâches
Depuis la vue par tâche, cliquez sur **Ajouter une sous-tâche** dans le panneau latéral.
-![Ajouter une sous-tâche](https://kanboard.net/screenshots/documentation/add-subtask.png)
+![Ajouter une sous-tâche](screenshots/add-subtask.png)
Vous pouvez aussi ajouter rapidement une sous-tâche en saisissant seulement son titre :
-![Add a subtask from the task view](https://kanboard.net/screenshots/documentation/add-subtask-shortcut.png)
+![Add a subtask from the task view](screenshots/add-subtask-shortcut.png)
Modifier le statut d'une sous-tâche
---------------------
Quand vous cliquez sur le titre d'une sous-tâche son statut change :
-![Sous-tâche en cours](https://kanboard.net/screenshots/documentation/subtask-status-inprogress.png)
+![Sous-tâche en cours](screenshots/subtask-status-inprogress.png)
L'icône devant le titre est mise à jour en fonction du statut.
-![Sous-tâche effectuée](https://kanboard.net/screenshots/documentation/subtask-status-done.png)
+![Sous-tâche effectuée](screenshots/subtask-status-done.png)
Remarque : quand la tâche est fermée, toutes les sous-tâches voient leur statut passer à **Terminé**.
diff --git a/doc/fr_FR/task-links.markdown b/doc/fr_FR/task-links.markdown
index f2756ac7..3f58378f 100644
--- a/doc/fr_FR/task-links.markdown
+++ b/doc/fr_FR/task-links.markdown
@@ -1,9 +1,11 @@
Liens entre les tâches
-==========
+======================
Les tâches peuvent être liées ensemble avec des relations prédéfinies.
-![Task Links](https://kanboard.net/screenshots/documentation/task-links.png)
+![Task Links](screenshots/internal-task-links.png)
+
+Il est également possible de connecter des tâches entre plusieurs projets.
Les relations établies par défaut sont les suivantes :
diff --git a/doc/fr_FR/time-tracking.markdown b/doc/fr_FR/time-tracking.markdown
index 625bc26f..37b49a29 100644
--- a/doc/fr_FR/time-tracking.markdown
+++ b/doc/fr_FR/time-tracking.markdown
@@ -6,7 +6,7 @@ Les informations de la feuille de suivi du temps peuvent être définies au nive
Suivi de temps des tâches
------------------
-![Suivi de temps des tâches ](https://kanboard.net/screenshots/documentation/task-time-tracking.png)
+![Suivi de temps des tâches ](screenshots/task-time-tracking.png)
Les tâches ont deux champs:
@@ -19,7 +19,7 @@ Ces valeurs représentent des heures de travail et doivent être entrées manuel
Suivi de temps des sous-tâches
---------------------
-![Suivi de temps des sous-tâches](https://kanboard.net/screenshots/documentation/subtask-time-tracking.png)
+![Suivi de temps des sous-tâches](screenshots/subtask-time-tracking.png)
Les sous-tâches ont aussi les champs "temps passé" et "temps estimé"
@@ -32,13 +32,13 @@ Kanboard enregistre le temps entre chaque changement de statut des sous-tâches
La répartition de tous les enregistrements est visible sur la page de la tâche
-![Feuille de suivi du temps pour les tâches](https://kanboard.net/screenshots/documentation/task-timesheet.png)
+![Feuille de suivi du temps pour les tâches](screenshots/task-timesheet.png)
Pour chaque sous-tâche, le chrono peut être à tout moment arrêté/démarré
-![Chrono des sous-tâches](https://kanboard.net/screenshots/documentation/subtask-timer.png)
+![Chrono des sous-tâches](screenshots/subtask-timer.png)
- Le chrono ne dépend pas du statut de la sous-tâche
- Chaque fois que vous démarrez le chrono, un nouvel enregistrement est créé dans la table de suivi des temps
- Chaque fois que vous arrêtez l'horloge, la date de fin est enregistrée dans la table de suivi des temps
-- Le temps passé est arrondi au quart d’heure le plus proche
+- Le temps passé est arrondi au quart d’heure le plus proche (seulement pour Kanboard < 1.0.32)
diff --git a/doc/fr_FR/transitions.markdown b/doc/fr_FR/transitions.markdown
index 94a14bbc..1b7b0879 100644
--- a/doc/fr_FR/transitions.markdown
+++ b/doc/fr_FR/transitions.markdown
@@ -1,20 +1,14 @@
Transitions entre les tâches
-================
+============================
Les transitions enregistrent tous les mouvements des tâches entre les colonnes
-![Transitions](https://kanboard.net/screenshots/documentation/transitions.png)
+![Transitions](screenshots/task-transitions.png)
-Depuis la page des tâches, vous pouvez accéder à ces informations:
+Depuis la page détaillée de la tâche, vous pouvez accéder à ces informations:
- Date de l'action
- Colonne d'origine
- Colonne de destination
- Exécutant (Pour l'utilisateur qui a déplacé la tâche)
- Temps passé sur la colonne d’origine
-
-Les données de transition entre les tâches peuvent aussi être exportées depuis la page des paramètres du projet
-
-![Transitions Export](https://kanboard.net/screenshots/documentation/transitions-export.png)
-
-Pour la période spécifiée, vous allez générer un fichier CSV que vous pouvez utiliser avec n’importe quel tableur
diff --git a/doc/fr_FR/ubuntu-installation.markdown b/doc/fr_FR/ubuntu-installation.markdown
new file mode 100644
index 00000000..fc112ce5
--- /dev/null
+++ b/doc/fr_FR/ubuntu-installation.markdown
@@ -0,0 +1,65 @@
+Installation de Kanboard sur Ubuntu
+===================================
+
+Ubuntu Xenial 16.04 LTS
+-----------------------
+
+Installez Apache et PHP :
+
+```bash
+sudo apt-get update
+sudo apt-get install -y apache2 libapache2-mod-php7.0 php7.0-cli php7.0-mbstring php7.0-sqlite3 \
+ php7.0-opcache php7.0-json php7.0-mysql php7.0-pgsql php7.0-ldap php7.0-gd
+```
+
+Installez Kanboard :
+
+```bash
+cd /var/www/html
+sudo wget https://kanboard.net/kanboard-latest.zip
+sudo unzip kanboard-latest.zip
+sudo chown -R www-data:www-data kanboard/data
+sudo rm kanboard-latest.zip
+```
+
+Ubuntu Trusty 14.04 LTS
+-----------------------
+
+Installez Apache et PHP :
+
+```bash
+sudo apt-get update
+sudo apt-get install -y php5 php5-sqlite php5-mysql php5-pgsql php5-ldap php5-gd php5-json php5-mcrypt unzip
+```
+
+Installez Kanboard :
+
+```bash
+cd /var/www/html
+sudo wget https://kanboard.net/kanboard-latest.zip
+sudo unzip kanboard-latest.zip
+sudo chown -R www-data:www-data kanboard/data
+sudo rm kanboard-latest.zip
+```
+
+Ubuntu Precise 12.04 LTS
+------------------------
+
+Installez Apache et PHP :
+
+```bash
+sudo apt-get update
+sudo apt-get install -y php5 php5-sqlite php5-mysql php5-pgsql php5-ldap php5-gd php5-json php5-mcrypt unzip
+```
+
+Installez Kanboard :
+
+```bash
+cd /var/www
+sudo wget https://kanboard.net/kanboard-latest.zip
+sudo unzip kanboard-latest.zip
+sudo chown -R www-data:www-data kanboard/data
+sudo rm kanboard-latest.zip
+```
+
+Certaines fonctionnalités de Kanboard demandent à ce que vous installiez une [tâche planifiée](cronjob.markdown).
diff --git a/doc/fr_FR/update.markdown b/doc/fr_FR/update.markdown
new file mode 100644
index 00000000..68468e50
--- /dev/null
+++ b/doc/fr_FR/update.markdown
@@ -0,0 +1,54 @@
+Mise à jour de Kanboard à une nouvelle version
+==============================================
+
+La plupart du temps, mettre à jour Kanboard vers une nouvelle version est transparent.
+Le processus pourrait se résumer à simplement copier le dossier `data` vers le nouveau répertoire `kanboard`.
+Kanboard va appliquer les migrations SQL automatiquement pour vous.
+
+Choses importantes à faire avant la mise à jour
+-----------------------------------------------
+
+- **Toujours, faire une sauvegarde complète de vos données avant !**
+- **Vérifiez que votre sauvegarde est valide !**
+- Vérifiez encore
+- Toujours lire la [liste des changements](https://github.com/kanboard/kanboard/blob/master/ChangeLog) pour vérifier sil y a des opérations manuelles à faire
+- Stoppez le _worker_
+- Mettez le serveur web en mode maintenance pour éviter que les gens utilisent l'application pendant la mise à jour
+
+Depuis l'archive (version stable)
+---------------------------------
+
+1. Décompressez la nouvelle archive
+2. Copier le dossier `data` dans le nouveau répertoire décompressé
+3. Copiez votre fichier de configuration personnalisé `config.php` si vous en avez un
+4. Si vous avez installé des plug-ins, utilisez la dernière version
+5. Vérifiez que le répertoire `data` est accessible en écriture par l'utilisateur du serveur web
+6. Testez que tout fonctionne correctement
+7. Supprimez l'ancien répertoire de Kanboard
+
+Depuis le dépôt git (version de développement)
+---------------------------------------------
+
+1. `git pull`
+2. `composer install --no-dev`
+3. Testez que tout fonctionne correctement
+
+Cette méthode va installer **la version en cours de développement**, utilisez là à vos risques.
+
+Appliquer les migrations SQL manuellement
+-----------------------------------------
+
+Par défaut, les migrations SQL sont exécutées automatiquement.
+La version du schéma est vérifiée à chaque requête.
+De cette manière, les changements de base de données sont appliqués automatiquement.
+
+Vous pouvez désactiver ce comportement si vous le souhaitez en fonction de votre configuration.
+Par exemple, si plusieurs processus essaient de mettre à jour le schéma en même temps, il se peut que vous ayez des problèmes même si chaque opération se fait dans une transaction.
+
+Pour désactiver cette fonctionnalité, mettez le paramètre `DB_RUN_MIGRATIONS` à `false` dans votre fichier de [configuration](config.markdown).
+
+Lorsque vous allez mettre à jour Kanboard, exécutez cette commande :
+
+```bash
+./cli db:migrate
+```
diff --git a/doc/fr_FR/user-mentions.markdown b/doc/fr_FR/user-mentions.markdown
new file mode 100644
index 00000000..af322bb8
--- /dev/null
+++ b/doc/fr_FR/user-mentions.markdown
@@ -0,0 +1,13 @@
+Mentionner les utilisateurs
+===========================
+
+Kanboard offre la possibilité d'envoyer des notifications lorsque quelqu'un est mentionné.
+
+Si vous avez besoin d'obtenir l'attention de quelqu'un dans un commentaire ou une tâche, utilisez le symbole @ suivi de l'identifiant de l'utilisateur.
+Kanboard va automatiquement suggérer une liste d'utilisateurs :
+
+![Mentions](screenshots/user-mentions.png)
+
+- Pour le moment, cette fonctionnalité est activée uniquement pour la description des tâches et les commentaires
+- Cela fonctionne seulement lors de la création des tâches ou commentaires
+- Pour être mentionné, les utilisateurs doivent être membres du projet
diff --git a/doc/nitrous.markdown b/doc/nitrous.markdown
deleted file mode 100644
index daaedcef..00000000
--- a/doc/nitrous.markdown
+++ /dev/null
@@ -1,10 +0,0 @@
-Nitrous Quickstart
-==================
-
-Create a free development environment for this Kanboard project in the cloud on [Nitrous.io](https://www.nitrous.io) by clicking the button below.
-
-<a href="https://www.nitrous.io/quickstart">
- <img src="https://nitrous-image-icons.s3.amazonaws.com/quickstart.png" alt="Nitrous Quickstart" width=142 height=34>
-</a>
-
-Simply access your site via the `Preview > 3000` link in the IDE.
diff --git a/doc/plugin-hooks.markdown b/doc/plugin-hooks.markdown
deleted file mode 100644
index 1f90bdbc..00000000
--- a/doc/plugin-hooks.markdown
+++ /dev/null
@@ -1,204 +0,0 @@
-Plugin Hooks
-============
-
-Application Hooks
------------------
-
-Hooks can extend, replace, filter data or change the default behavior. Each hook is identified with a unique name, example: `controller:calendar:user:events`
-
-### Listen on hook events
-
-In your `initialize()` method you need to call the method `on()` of the class `Kanboard\Core\Plugin\Hook`:
-
-```php
-$this->hook->on('hook_name', $callable);
-```
-
-The first argument is the name of the hook and the second is a PHP callable.
-
-### Hooks executed only once
-
-Some hooks can have only one listener:
-
-#### model:subtask-time-tracking:calculate:time-spent
-
-- Override time spent calculation when sub-task timer is stopped
-- Arguments:
- - `$user_id` (integer)
- - `$start` (DateTime)
- - `$end` (DateTime)
-
-### Merge hooks
-
-"Merge hooks" act in the same way as the function `array_merge`. The hook callback must return an array. This array will be merged with the default one.
-
-Example to add events in the user calendar:
-
-```php
-class Plugin extends Base
-{
- public function initialize()
- {
- $container = $this->container;
-
- $this->hook->on('controller:calendar:user:events', function($user_id, $start, $end) use ($container) {
- $model = new SubtaskForecast($container);
- return $model->getCalendarEvents($user_id, $end); // Return new events
- });
- }
-}
-```
-
-Example to override default values for task forms:
-
-```php
-class Plugin extends Base
-{
- public function initialize()
- {
- $this->hook->on('controller:task:form:default', function (array $default_values) {
- return empty($default_values['score']) ? array('score' => 4) : array();
- });
- }
-}
-```
-
-List of merging hooks:
-
-#### controller:task:form:default
-
-- Override default values for task forms
-- Arguments:
- - `$default_values`: actual default values (array)
-
-#### controller:calendar:project:events
-
-- Add more events to the project calendar
-- Arguments:
- - `$project_id` (integer)
- - `$start` Calendar start date (string, ISO-8601 format)
- - `$end` Calendar` end date (string, ISO-8601 format)
-
-#### controller:calendar:user:events
-
-- Add more events to the user calendar
-- Arguments:
- - `$user_id` (integer)
- - `$start` Calendar start date (string, ISO-8601 format)
- - `$end` Calendar end date (string, ISO-8601 format)
-
-Asset Hooks
------------
-
-Asset hooks can be used to add a new stylesheet easily or a new JavaScript file in the layout. You can use this feature to create a theme and override all Kanboard default styles.
-
-Example to add a new stylesheet:
-
-```php
-<?php
-
-namespace Kanboard\Plugin\Css;
-
-use Kanboard\Core\Plugin\Base;
-
-class Plugin extends Base
-{
- public function initialize()
- {
- $this->hook->on('template:layout:css', 'plugins/Css/skin.css');
- }
-}
-```
-
-List of asset Hooks:
-
-- `template:layout:css`
-- `template:layout:js`
-
-Template Hooks
---------------
-
-Template hooks allow to add new content in existing templates.
-
-Example to add new content in the dashboard sidebar:
-
-```php
-$this->template->hook->attach('template:dashboard:sidebar', 'myplugin:dashboard/sidebar');
-```
-
-This call is usually defined in the `initialize()` method.
-The first argument is name of the hook and the second argument is the template name.
-
-Template names prefixed with the plugin name and colon indicate the location of the template.
-
-Example with `myplugin:dashboard/sidebar`:
-
-- `myplugin` is the name of your plugin (lowercase)
-- `dashboard/sidebar` is the template name
-- On the filesystem, the plugin will be located here: `plugins\Myplugin\Template\dashboard\sidebar.php`
-- Templates are written in pure PHP (don't forget to escape data)
-
-Template names without prefix are core templates.
-
-List of template hooks:
-
-| Hook | Description |
-|--------------------------------------------|----------------------------------------------------|
-| `template:analytic:sidebar` | Sidebar on analytic pages |
-| `template:app:filters-helper:before` | Filter helper dropdown (top) |
-| `template:app:filters-helper:after` | Filter helper dropdown (bottom) |
-| `template:auth:login-form:before` | Login page (top) |
-| `template:auth:login-form:after` | Login page (bottom) |
-| `template:board:private:task:before-title` | Task in private board: before title |
-| `template:board:private:task:after-title` | Task in private board: after title |
-| `template:board:public:task:before-title` | Task in public board: before title |
-| `template:board:public:task:after-title` | Task in public board: after title |
-| `template:board:task:footer` | Task in board: footer |
-| `template:board:task:icons` | Task in board: tooltip icon |
-| `template:config:sidebar` | Sidebar on settings page |
-| `template:config:application ` | Application settings form |
-| `template:config:email` | Email settings page |
-| `template:config:integrations` | Integration page in global settings |
-| `template:dashboard:sidebar` | Sidebar on dashboard page |
-| `template:export:sidebar` | Sidebar on export pages |
-| `template:import:sidebar` | Sidebar on import pages |
-| `template:header:dropdown` | Dropdown on header |
-| `template:layout:head` | Page layout `<head/>` tag |
-| `template:layout:top` | Page layout top header |
-| `template:layout:bottom` | Page layout footer |
-| `template:project:dropdown` | "Actions" menu on left in different project views |
-| `template:project:header:before` | Project filters (before) |
-| `template:project:header:after` | Project filters (after) |
-| `template:project:integrations` | Integration page in projects settings |
-| `template:project:sidebar` | Sidebar in project settings |
-| `template:project-user:sidebar` | Sidebar on project user overview page |
-| `template:task:layout:top` | Task layout top (after page header) |
-| `template:task:details:top` | Task summary top |
-| `template:task:details:bottom` | Task summary bottom |
-| `template:task:details:first-column` | Task summary first column |
-| `template:task:details:second-column` | Task summary second column |
-| `template:task:details:third-column` | Task summary third column |
-| `template:task:details:fourth-column` | Task summary fourth column |
-| `template:task:dropdown` | Task dropdown menu in listing pages |
-| `template:task:sidebar:actions` | Sidebar on task page (section actions) |
-| `template:task:sidebar:information` | Sidebar on task page (section information) |
-| `template:task:form:first-column` | 1st column in task form |
-| `template:task:form:second-column` | 2nd column in task form |
-| `template:task:form:third-column` | 3nd column in task form |
-| `template:task:show:top ` | Show task page: top |
-| `template:task:show:bottom` | Show task page: bottom |
-| `template:task:show:before-description` | Show task page: before description |
-| `template:task:show:before-tasklinks` | Show task page: before tasklinks |
-| `template:task:show:before-subtasks` | Show task page: before subtasks |
-| `template:task:show:before-timetracking` | Show task page: before timetracking |
-| `template:task:show:before-attachments` | Show task page: before attachments |
-| `template:task:show:before-comments` | Show task page: before comments |
-| `template:user:authentication:form` | "Edit authentication" form in user profile |
-| `template:user:create-remote:form` | "Create remote user" form |
-| `template:user:external` | "External authentication" page in user profile |
-| `template:user:integrations` | Integration page in user profile |
-| `template:user:sidebar:actions` | Sidebar in user profile (section actions) |
-| `template:user:sidebar:information` | Sidebar in user profile (section information) |
-
-
-Another template hooks can be added if necessary, just ask on the issue tracker.
diff --git a/doc/ru_RU/2fa.markdown b/doc/ru_RU/2fa.markdown
new file mode 100644
index 00000000..23b90b5d
--- /dev/null
+++ b/doc/ru_RU/2fa.markdown
@@ -0,0 +1,37 @@
+Двухфакторная аутентификация
+=============================
+
+Любой пользователь может включить [двух-уровневую аутентификацию](http://ru.wikipedia.org/wiki/Многофакторная_аутентификация). После успешного входа, разовый код (6 знаков) запрашивается у пользователя для получения доступа в Канборд.
+
+Этот код присылается в программу на вашем смартфоне.
+
+Канборд использует [Time-based One-time Password Algorithm](http://ru.wikipedia.org/wiki/Time-based_One-time_Password_Algorithm) основанный на [RFC 6238](http://tools.ietf.org/html/rfc6238).
+
+Имеется много программ совместимых со стандартной системой TOTP. Например, вы можете использовать эти приложения, бесплатные и с открытым исходным кодом:
+
+- [Google Authenticator](https://github.com/google/google-authenticator/) (Android, iOS, Blackberry)
+- [FreeOTP](https://fedorahosted.org/freeotp/) (Android, iOS)
+- [OATH Toolkit](http://www.nongnu.org/oath-toolkit/) (Command line utility on Unix/Linux)
+
+Эти системы могут работать офлайн и вам не нужно иметь мобильную связь.
+
+Настройка
+---------
+
+1. Перейдите в пользовательский профиль
+2. Слева нажмите **Двухфакторная авторизация** и поставьте галочку в чекбоке
+3. Секретный ключ сгенерируется для вас
+
+![2FA](screenshots/2fa.png)
+
+Двухфакторная аутентификация.
+
+
+- Вы должны сохранить секретный ключ в вашей TOTP программе. Если вы используете сматрфон, то просто сосканируйте QR код с помощью FreeOTP или Google Authenticator.
+- Каждый раз, когда вы будете входить в Канборд, будет запрашиваться новый код
+- Не забудьте протестировать ваше устройство, перед тем как закрыть вашу сессию
+
+Новый секретный ключ генерируется каждый раз при включении/выключении этой возможности.
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/analytics-tasks.markdown b/doc/ru_RU/analytics-tasks.markdown
new file mode 100644
index 00000000..57e14a87
--- /dev/null
+++ b/doc/ru_RU/analytics-tasks.markdown
@@ -0,0 +1,37 @@
+Аналитика для задач
+===================
+
+На странице детального просмотра задачи, в левом боковом меню, для каждой задачи имеется раздел аналитики.
+
+Затраченное время и время цикла
+-------------------------------
+
+![Lead and cycle time](screenshots/task-lead-cycle-time.png)
+
+Затраченное время и время цикла
+
+
+- Затраченное время - время между созданием задачи и датой завершения (закрытие задачи).
+- Время цикла - время между началом выполнения задачи и датой завершения.
+- Если задача не закрыта, то для расчета используется текущее время вместо даты завершения.
+- Если дата начала выполнения задачи не указана, то время цикла не может быть расчитано.
+
+
+**Заметка**: Вы можете настроить автоматическое создание даты начала выполения задачи, когда вы перемещаете задачу в определенную колонку.
+
+
+Время затраченное в каждой колонке
+----------------------------------
+
+![Time spent into each column](screenshots/time-into-each-column.png)
+
+Время затраченное в каждой колонке
+
+
+
+- Этот график показывает сколько времени задача находилась в каждой колонке.
+- Затраченное время расчитывается до закрытия задачи.
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/analytics.markdown b/doc/ru_RU/analytics.markdown
new file mode 100644
index 00000000..93b6e901
--- /dev/null
+++ b/doc/ru_RU/analytics.markdown
@@ -0,0 +1,95 @@
+Аналитика
+=========
+
+Каждый проект имеет анлитический раздел. В зависимости от того как вы используете Канборд, вы можете видеть подобные отчеты:
+
+Перераспределение(загрузка) пользователей
+-----------------------------------------
+
+![User repartition](screenshots/user-repartition.png)
+
+Перераспределение(загрузка) пользователей
+
+
+Круговая диаграмма, представленная выше, показыает количество открытых задач назначенных определенным пользователям.
+
+
+Распределение задач
+-------------------
+
+![Task distribution](screenshots/task-distribution.png)
+
+Распределение задач
+
+
+
+На рисунке выше, представлена круговая диаграмма, которая показывает количество открытых задач в определенных колонках.
+
+
+
+Накопительная диаграмма
+-----------------------
+
+![Cumulative flow diagram](screenshots/cfd.png)
+
+Накопительная диаграмма
+
+
+- Эта диаграмма отображает количество задач выполненных в каждой колонке в определенный промежуток времени.
+- Счетчик задач записывается для каждой колонки каждый день.
+- Если вы хотите исключить закрытые задачи, измените [глобальные настройки проекта](project-configuration.markdown).
+
+
+Заметка: Для того чтобы увидеть этот график, вам нужно иметь, как минимум, данные за два дня.
+
+
+Диаграмма сгорания
+------------------
+
+![Burndown chart](screenshots/burndown-chart.png)
+
+Диаграмма сгорания
+
+
+
+[Диаграмма сгорания](https://ru.wikipedia.org/wiki/%D0%94%D0%B8%D0%B0%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0_%D1%81%D0%B3%D0%BE%D1%80%D0%B0%D0%BD%D0%B8%D1%8F_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87) доступна для каждого проекта.
+
+
+- Эта диаграмма отображает время затраченное на выполнение работы.
+- Канборд использует историю задач для генерации этой диаграммы.
+- Сумма историй задач для каждой колонки пересчитывается каждый день.
+
+Среднее время затраченное в каждой колонке
+------------------------------------------
+
+![Average time spent into each column](screenshots/average-time-spent-into-each-column.png)
+
+Среднее время затраченное в каждой колонке
+
+
+Этот график показывает среднее время затраченное в каждой колонке для последних 1000 задач.
+
+- Канборд использует для подсчёта данных переходы задач между колонками.
+- Затраченное время подсчитывается до закрытия задачи.
+
+Среднее время выполнения и время цикла
+--------------------------------------
+
+![Average time spent into each column](screenshots/average-lead-cycle-time.png)
+
+Среднее время затраченное в каждой колонке
+
+Эта диаграмма показывает Среднее время выполнения и цикла для последних 1000 задач.
+- Время выполнения - время между созданием задачи и датой завершения.
+- Время цикла - время между указанной датой начала выполнения задачи и датой завершения.
+- Если задача не закрыта, текущая дата будет использована вместо даты завершения.
+
+Эти данные подсчитываются и записываются каждый день на протяжении жизни проекта.
+
+Заметка: Не забудьте выполнить [ежедневные cronjob](cronjob.markdown) для того чтобы иметь точную статистику.
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/api-json-rpc.markdown b/doc/ru_RU/api-json-rpc.markdown
new file mode 100644
index 00000000..257f83ec
--- /dev/null
+++ b/doc/ru_RU/api-json-rpc.markdown
@@ -0,0 +1,78 @@
+Json-RPC API
+============
+
+
+API пользователя и приложения
+-----------------------------
+
+
+Имеется два типа доступа к API:
+
+### API приложения[¶](#application-api "Ссылка на этот заголовок")
+
+- Доступ к API осуществляется с использованием пользователя “jsonrpc” и ключа, доступного в настройках
+- Доступ ко всем процедурам
+- Не проверяются права доступа
+- Нет пользовательской сессии на сервере
+- Этот доступ можно использовать для: утилит миграции/импорта данных, создания задач из других систем и т.д.
+
+### API пользователя[¶](#user-api "Ссылка на этот заголовок")
+
+- Доступ к API под пользовательскими учетными данными (имя пользователя и пароль)
+- Доступ к ограниченному набору процедур
+- Проверка прав доступа к проекту
+- На сервере создается пользовательская сессия
+- Этот доступ можно использовать для клиентов: мобильных/десктопных приложений, утилит коммандной строки и т.д.
+
+Безопасность
+------------
+
+- Всегда используйте протокол HTTPS с действительным сертификатом
+- Если вы делаете мобильное приложение, позаботьтесь о безопасном хранении учетных данных пользователя на мобильном устройстве
+- После 3 неправильных подключений к пользовательскому api, пользователь может разблокировать свою учетную запись только с использованием формы входа
+- Двухуровневая аутентификация пока не доступна через API
+
+
+
+Протокол
+--------
+
+
+Канборд использует протокол Json-RPC для взаимодействия с внешними программами.
+
+JSON-RPC - протокол удаленного вызова процедур в формате JSON. По сути своей, тот же XML-RPC, но использующий формат JSON.
+
+Мы используем [протокол версии 2](http://www.jsonrpc.org/specification). Вы можете вызывать API используя `POST`{.docutils .literal} HTTP запрос.
+
+Канборд поддерживает пакетные запросы, поэтому вы можете делать многократные API вызовы в одном HTTP запросе. Это, в частности, удобно для мобильных клиентов с высокой сетевой задержкой.
+
+
+Использование
+-------------
+
+- [Аутентификация](api-authentication.markdown)
+- [Примеры](api-examples.markdown)
+- [Приложение](api-application-procedures.markdown)
+- [Проекты](api-project-procedures.markdown)
+- [Права доступа к проекту](api-project-permission-procedures.markdown)
+- [Доски](api-board-procedures.markdown)
+- [Колонки](api-column-procedures.markdown)
+- [Дорожки](api-swimlane-procedures.markdown)
+- [Категории](api-category-procedures.markdown)
+- [Автоматические дейсвия](api-action-procedures.markdown)
+- [Задачи](api-task-procedures.markdown)
+- [Подзадачи](api-subtask-procedures.markdown)
+- [Файлы](api-file-procedures.markdown)
+- [Ссылки](api-link-procedures.markdown)
+- [Комментарии](api-comment-procedures.markdown)
+- [Пользователи](api-user-procedures.markdown)
+- [Группы](api-group-procedures.markdown)
+- [Члены группы](api-group-member-procedures.markdown)
+- [Специфичные запросы пользователя](api-me-procedures.markdown)
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/application-configuration.markdown b/doc/ru_RU/application-configuration.markdown
new file mode 100644
index 00000000..1aa11c23
--- /dev/null
+++ b/doc/ru_RU/application-configuration.markdown
@@ -0,0 +1,54 @@
+Настройки приложения
+====================
+
+Некоторые параметры для приложения могут быть изменены на странице настроек. Только администратор может сделать эти настройки.
+Выберите в правом выпадающем меню **Настройки**, затем в слева выберите **Настройки приложения**.
+
+![Application settings](screenshots/application-settings.png)
+
+Настройки приложения
+
+
+URL приложения[¶](#application-url "Ссылка на этот заголовок")
+--------------------------------------------------------------
+
+Этот параметр используется для email уведомлений. В тексте сообщения будет содержаться ссылка на задачу в Канборде.
+
+
+Язык[¶](#language "Ссылка на этот заголовок")
+---------------------------------------------
+
+Язык приложения может быть изменен в любое время. Язык устанавливается для всех пользователей Канборд.
+
+
+Часовой пояс[¶](#time-zone "Ссылка на этот заголовок")
+------------------------------------------------------
+
+По умолчанию, Канборд использует часовой пояс UTC, но вы можете указать любой часовой пояс. Список содержит все поддерживаемые часовые пояса для вашего веб сервера.
+
+
+Формат даты[¶](#date-format "Ссылка на этот заголовок")
+-------------------------------------------------------
+
+Формать даты, который используется для полей дата. Например, дата завершения задачи.
+
+Канборд поддерживает 4 разных формата:
+
+- ДД/ММ/ГГГГ
+- ММ/ДД/ГГГГ (по умолчанию)
+- ГГГГ/ММ/ДД
+- ММ.ДД.ГГГГ
+
+Формат [ISO 8601](http://ru.wikipedia.org/wiki/ISO_8601) всегда принимается (YYYY-MM-DD or YYYY\_MM\_DD).
+
+
+Пользовательский стиль CSS[¶](#custom-stylesheet "Ссылка на этот заголовок")
+----------------------------------------------------------------------------
+
+Вы можете сделать свой стиль CSS для Канборд или улучшить имеющийся стиль.
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/assets.markdown b/doc/ru_RU/assets.markdown
new file mode 100644
index 00000000..9a0124c5
--- /dev/null
+++ b/doc/ru_RU/assets.markdown
@@ -0,0 +1,53 @@
+Как создать asset (Javascript и CSS файлы)
+==========================================
+
+
+Файлы CSS стилей и Javascript объединены вместе и минимизированы.
+
+- Оригинальные файлы CSS хранятся в каталоге `assets/css/src/*.css`{.docutils .literal}
+- Оригинальные файлы Javascript хранятся в каталоге `assets/js/src/*.js`{.docutils .literal}
+- `assets/*/vendor.min.*`{.docutils .literal} - внешние зависимости объединены и минимизированы
+- `assets/*/app.min.*`{.docutils .literal} - исходный код приложения объединены и минимизированы
+
+
+Требования[¶](#requirements "Ссылка на этот заголовок")
+-------------------------------------------------------
+
+- [NodeJS](https://nodejs.org/) с `npm`{.docutils .literal}
+
+
+Сборка файлов Javascript и CSS[¶](#building-javascript-and-css-files "Ссылка на этот заголовок")
+------------------------------------------------------------------------------------------------
+
+
+Канборд использует [Gulp](http://gulpjs.com/) для сборки asset и [Bower](http://bower.io/) для управления зависимостями. Эти утилиты устанавлены в проекте как зависимости NodeJS.
+
+
+### Запустить все[¶](#run-everything "Ссылка на этот заголовок")
+
+ make static
+
+### Собрать `vendor.min.js`{.docutils .literal} и `vendor.min.css`{.docutils .literal}[¶](#build-vendor-min-js-and-vendor-min-css "Ссылка на этот заголовок")
+
+ gulp vendor
+
+### Собрать `app.min.js`{.docutils .literal}[¶](#build-app-min-js "Ссылка на этот заголовок")
+
+ gulp js
+
+
+### Собрать `app.min.css`{.docutils .literal}[¶](#build-app-min-css "Ссылка на этот заголовок")
+
+ gulp css
+
+
+Примечание[¶](#notes "Ссылка на этот заголовок")
+------------------------------------------------
+
+Сборка asset невозможна из архива Kanboard, вы должны клонировать репозиторий.
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/automatic-actions.markdown b/doc/ru_RU/automatic-actions.markdown
new file mode 100644
index 00000000..28842f8b
--- /dev/null
+++ b/doc/ru_RU/automatic-actions.markdown
@@ -0,0 +1,128 @@
+Автоматизация процессов
+=======================
+
+
+Для минимизации пользовательских действий, Kanboard поддерживает автоматизацию процессов.
+
+Каждый автоматизированный процесс представляет следующее:
+
+- Ожидание наступления события
+- Выполняется действие при наступлении этого события
+- В результате устанавливается определенный параметр
+
+Каждый проект может иметь свой набор автоматических процессов. Автоматические процессы доступны в панеле настроек (**Меню** -\> **Настройки**) **Автоматические действия**.
+
+
+Добавление нового действия[¶](#add-a-new-action "Ссылка на этот заголовок")
+---------------------------------------------------------------------------
+
+
+Нажмите на ссылку **Добавить новое действие**.
+
+![Automatique action](screenshots/automatic-action-creation.png)
+
+Автоматическое действие.
+
+
+- Выберите действие
+- Затем, выберите событие
+- И в завершении, задайте параметр
+
+
+Список доступных действий[¶](#list-of-available-actions "Ссылка на этот заголовок")
+-----------------------------------------------------------------------------------
+
+
+- Создать комментарий из внешнего источника
+- Добавлять запись при перемещении задачи между колонками
+- Автоматически назначить категорию по цвету
+- Изменить категорию основываясь на внешнем ярлыке
+- Автоматически назначить категории на основе ссылки
+- Автоматически назначить цвет по категории
+- Назначить цвет, когда задача перемещается в определенную колонку
+- Изменение цвета задач при использовании ссылки на определенные задачи
+- Назначить определенный цвет пользователю
+- Назначить задачу тому кто выполнит действие
+- Назначить задачу пользователю, который произвел изменение в колонке
+- Назначить задачу определенному пользователю
+- Изменить назначенного основываясь на внешнем имени пользователя
+- Закрыть задачу
+- Закрыть задачу в выбранной колонке
+- Создать задачу из внешнего источника
+- Создать дубликат задачи в другом проекте
+- Отправить задачу по email
+- Переместить задачу в другой проект
+- Переместить задачу в другую колонку, когда она назначена пользователю
+- Переносить задачи в другую колонку при изменении категории
+- Переместить задачу в другую колонку, когда назначение снято
+- Открыть задачу
+- Автоматическое обновление даты начала
+
+
+Примеры[¶](#examples "Ссылка на этот заголовок")
+------------------------------------------------
+
+
+Здесь представлены примеры использованные в реальной жизни:
+
+### Когда я перемещаю задачу в колонку “Выполнено”, автоматически закрывать эту задачу[¶](#when-i-move-a-task-to-the-column-done-automatically-close-this-task "Ссылка на этот заголовок")
+
+- Выберите действия: **Закрыть задачу в выбранной колонке**
+- Выберите событие: **Переместить задачу в другую колонку**
+- Установите параметр действия: **Колонка = Выполнено** (это колонка в которую будет перемещена задача)
+
+### Когда я перемещаю задачу в колонку “На утверждение”, назначить эту задачу определенному пользователю.[¶](#when-i-move-a-task-to-the-column-to-be-validated-assign-this-task-to-a-specific-user "Ссылка на этот заголовок")
+
+- Выберите действие: **Назначить задачу определенному пользователю**
+- Выберите событие: **Переместить задачу в другую колонку**
+- Установите параметр действия: **Колонка = На утверждение** и **Пользователь = Петр** (Петр - наш тестировщик)
+
+### Когда я перемещаю задачу в колонку “В работе”, назначить эту задачу определенному пользователю[¶](#when-i-move-a-task-to-the-column-work-in-progress-assign-this-task-to-the-current-user "Ссылка на этот заголовок")
+
+- Выберите действие: **Назначить задачу пользователю, который произвел изменение в колонке**
+- Выберите событие: **Переместить задачу в другую колонку**
+- Установите параметр действия: **Колонка = В работе**
+
+
+### Когда задача выполнена, скопировать эту задачу в другой проект[¶](#when-a-task-is-completed-duplicate-this-task-to-another-project "Ссылка на этот заголовок")
+
+Предположим, мы имеем два проекта “Заказы покупателей” и “Производство”. Когда заказ в проекте “Заказы покупателей” утвержден, копируем этот заказ в проект “Производство”.
+
+- Выбираем действие: **Создать дубликат задачи в другом проекте**
+- Выбираем событие: **Завершение задачи**
+- Установите параметр действия: **Колонка = Утвержден** и **Проект = Производство**
+
+
+### Когда задача перемещена в последнюю колонку, переместить эту задачу в другой проект[¶](#when-a-task-is-moved-to-the-last-column-move-the-exact-same-task-to-another-project "Ссылка на этот заголовок")
+
+
+Предположим, мы имеем два проекта “Идеи” и “Разработка”, когда идея утверждена, перемещаем эту задачу в проект “Разработка”.
+
+- Выберите действие: **Переместить задачу в другой проект**
+- Выберите событие: **Переместить задачу в другую колонку**
+- Установите параметр действия: **Колонка = Утверждена** и **Проект = Разработка**
+
+### Я хочу назначить автоматически цвет для пользователя Петр[¶](#i-want-to-assign-automatically-a-color-to-the-user-bob "Ссылка на этот заголовок")
+
+- Выберите действие: **Назначить определенный цвет пользователю**
+- Выберите событие: **Изменен назначенный**
+- Установите параметр действия: **Цвет = Зеленый** и **Назначена = Петр**
+
+
+### Я хочу назначить цвет автоматически для определенной категории “Важные запросы”[¶](#i-want-to-assign-a-color-automatically-to-the-defined-category-feature-request "Ссылка на этот заголовок")
+
+- Выберите действие: **Автоматически назначить цвет по категории**
+- Выберите событие: **Создание или изменение задачи**
+- Установите параметр действия: **Цвет = Голубой** и **Категория = Важные запросы**
+
+
+### Я хочу устанавливать дату начала автоматически когда задача перемещена в колонку “В работе”[¶](#i-want-to-set-the-start-date-automatically-when-the-task-is-moved-to-the-column-work-in-progress "Ссылка на этот заголовок")
+
+- Выберите действие: **Автоматическое обновление даты начала**
+- Выберите событие: **Переместить задачу в другую колонку**
+- Установите параметр действия: **Колонка = В работе**
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/board-collapsed-expanded.markdown b/doc/ru_RU/board-collapsed-expanded.markdown
new file mode 100644
index 00000000..8d9ebe47
--- /dev/null
+++ b/doc/ru_RU/board-collapsed-expanded.markdown
@@ -0,0 +1,31 @@
+Компактное и развёрнутое отображение задач
+==========================================
+
+Задачи на Доске могут быть отображены в компактном или развёрнутом виде. Переключение между компактным и развёрнутым видом может быть выполнено с помощью горячей клавиши **“s”** или в раскрывающемся Меню (слева вверху) -\> Развернуть задачи или Свернуть задачи.
+
+
+Компактный вид[¶](#collapsed-mode "Ссылка на этот заголовок")
+-------------------------------------------------------------
+
+
+![Tasks collapsed](screenshots/board-collapsed-mode.png)
+
+Задачи представлены в компактном виде
+
+- Если для задачи назначен исполнитель, то инициалы исполнителя показываются рядом с номером задачи;
+- Если заголовок задачи слишком длинный, вы можете подвести курсор мышки над задачей и полный заголовок задачи отобразится во всплывающем окне.
+
+
+
+Развёрнутый вид[¶](#expanded-mode "Ссылка на этот заголовок")
+-------------------------------------------------------------
+
+
+![Tasks expanded](screenshots/board-expanded-mode.png)
+Развёрнутый вид
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/board-configuration.markdown b/doc/ru_RU/board-configuration.markdown
new file mode 100644
index 00000000..f68ebd47
--- /dev/null
+++ b/doc/ru_RU/board-configuration.markdown
@@ -0,0 +1,39 @@
+Настройка Доски
+===============
+
+
+В правом верхнем выпадающем меню выберите **Настройки**, затем, слева, выберите **Настройки Доски**.
+
+![Board settings](screenshots/board-settings.png)
+
+Настройка Доски
+
+
+ПОдсветка задач[¶](#task-highlighting "Ссылка на этот заголовок")
+------------------------------------------------------------------
+
+Эта опция позволяет подсвечивать задачу, которая была перенесена недавно.
+
+Установите значение 0 для выключения подсветки. По умолчанию установлено значение 172800 секунд (2 дня)
+
+Перемещенные задачи будут подсвечиваться в течении двух дней.
+
+
+Период обновления для публичных досок[¶](#refresh-interval-for-public-board "Ссылка на этот заголовок")
+-------------------------------------------------------------------------------------------------------
+
+Если вы создаёте публичную доску, то страница, по умолчанию, будет обновляться каждые 60 секунд.
+
+
+Период обновления для частных досок[¶](#refresh-interval-for-private-board "Ссылка на этот заголовок")
+------------------------------------------------------------------------------------------------------
+
+Когда в вашем браузере открыта Доска, Канборд проверяет обновления изменение каждые 10 секунд.
+
+Процесс обновления реализован по технологии Ajax.
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/board-horizontal-scrolling-and-compact-view.markdown b/doc/ru_RU/board-horizontal-scrolling-and-compact-view.markdown
new file mode 100644
index 00000000..6d9fa409
--- /dev/null
+++ b/doc/ru_RU/board-horizontal-scrolling-and-compact-view.markdown
@@ -0,0 +1,19 @@
+Горизонтальная прокрутка и компактный вид
+=========================================
+
+Когда ширины экрана не хватает для отображения всех колонок, то внизу появляется горизонтальная прокрутка.
+
+Однако, можно переключится на компактный вид доски для отображения всех колонок на вашем экране.
+
+
+![Switch to compact mode](screenshots/board-compact-mode.png)
+
+Переключение на компактное представление.
+
+Переключится между горизонтальной прокруткой и компактным видом можно с помощью горячей клавиши **“c”** или в левом верхнем раскрывающемся “Меню” -\> “Компактный вид” или “Широкий вид”.
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/board-show-hide-columns.markdown b/doc/ru_RU/board-show-hide-columns.markdown
new file mode 100644
index 00000000..5d0e547c
--- /dev/null
+++ b/doc/ru_RU/board-show-hide-columns.markdown
@@ -0,0 +1,25 @@
+Показать и скрыть колонки на Доске
+==================================
+
+Вы можете показать и скрыть колонки на Доске очень просто:
+
+![Hide a column](screenshots/hide-column.png)
+
+Спрятать колонку.
+
+
+Чтобы скрыть (спрятать) колонку , откройте выпадающее меню колонки.
+
+![Show a column](screenshots/show-column.png)
+
+Показать колонку.
+
+
+Для отображения скрытой колонки нажмите “иконку плюс”
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/bruteforce-protection.markdown b/doc/ru_RU/bruteforce-protection.markdown
new file mode 100644
index 00000000..25e50880
--- /dev/null
+++ b/doc/ru_RU/bruteforce-protection.markdown
@@ -0,0 +1,37 @@
+Защита от Brute Force
+=====================
+
+Защита от Brute Force (подбор пароля методом перебора) в Канборде работает на уровне учетной записи пользователя:
+
+- После 3 неправильных вводов пароля для одного и того же пользователя, на форме входа появляется капча для предотвращения дальнейшего подбора программой-роботом.
+- После 6 неудачных вводов пароля, учетная запись пользователя блокируется на 15 минут.
+
+Эта возможность работает только для метода аутентификации с использованием формы входа на веб странице.
+
+Однако, **после трех ошибочных аутентификаций через пользовательский API, учетная запись может быть разблокирована с использованием формы входа на веб странице**
+
+В Канборде нет блокировок по IP адресу, потому что программы-роботы используют множество анонимных прокси. Однако, вы можете использовать внешнюю утилиту, например [fail2ban](http://www.fail2ban.org) , чтобы избежать массового сканирования.
+
+Настройки защиты от Brute Force могут быть изменены в следующих переменных:
+
+ // Enable captcha after 3 authentication failure
+
+ define('BRUTEFORCE_CAPTCHA', 3);
+
+
+
+ // Lock the account after 6 authentication failure
+
+ define('BRUTEFORCE_LOCKDOWN', 6);
+
+
+
+ // Lock account duration in minutes
+
+ define('BRUTEFORCE_LOCKDOWN_DURATION', 15);
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/calendar-configuration.markdown b/doc/ru_RU/calendar-configuration.markdown
new file mode 100644
index 00000000..c6db3279
--- /dev/null
+++ b/doc/ru_RU/calendar-configuration.markdown
@@ -0,0 +1,59 @@
+Настройки календаря
+===================
+
+В правом верхнем выпадающем меню выберите **Настройки**, затем, слева, выберите **Настройки календаря**.
+
+
+![Calendar settings](screenshots/calendar-settings.png)
+
+Настройки календаря
+
+
+В Канборде имеется два вида Календаря:
+
+- Календарь проекта
+- Пользовательский календарь (доступен в левом меню Инфопанели)
+
+
+Календарь проекта[¶](#project-calendar "Ссылка на этот заголовок")
+------------------------------------------------------------------
+
+Эти календари показывают задачи с указанной датой создания или датой начала и датой завершения.
+
+### Показать задачи в зависимости от даты создания[¶](#show-tasks-based-on-the-creation-date "Ссылка на этот заголовок")
+
+- Дата начала в календаре показывает дату создания задачи.
+- Конечная дата показывает дату завершения.
+
+
+### Показать задачи в зависимости от даты начала[¶](#show-tasks-based-on-the-start-date "Ссылка на этот заголовок")
+
+- Дата начала в календаре показывает дату начала задачи.
+- Эта дата должна быть установлена вручную.
+- Конечная дата показывает дату завершения.
+- Если не указать дату начала, то задача не будет отображена в календаре.
+
+
+
+Пользовательский календарь[¶](#user-calendar "Ссылка на этот заголовок")
+------------------------------------------------------------------------
+
+Пользовательский календарь показывает только задачи назначенные пользователю и, опционально, информацию о подзадачах.
+
+
+### Показать подзадачи, основанные на отслеживании времени[¶](#show-sub-tasks-based-on-the-time-tracking "Ссылка на этот заголовок")
+
+- Показывает подзадачи в календаре из записей таблицы отслеживания времени.
+- Пересечения в пользовательской таблице времени также подсчитываются.
+
+
+### Показывать оценку подзадач (прогнозирование будущих работ)[¶](#show-sub-task-estimates-forecast-of-future-work "Ссылка на этот заголовок")
+
+- Показывает оценку будущих работ для подзадач в статусе “для исполнения” и с указанным значением “оценка”.
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/calendar.markdown b/doc/ru_RU/calendar.markdown
new file mode 100644
index 00000000..df2d0bdf
--- /dev/null
+++ b/doc/ru_RU/calendar.markdown
@@ -0,0 +1,31 @@
+Календарь
+=========
+
+
+Календарь может быть представлен в двух видах:
+
+- Представление в проекте с использование фильтров (доступно на Доске)
+- Пользовательское представление (доступно в рабочей панели и в пользовательском разделе)
+
+В Календаре можно увидеть следующую информацию:
+
+- Задачи с “датой выполнения”, отображаются наверху. **Дата выполнения может быть изменена перемещением задачи на другой день**.
+- Задачи с датой создания или датой начала. **Эти события не могут быть изменены в календаре**.
+- Отслеживание времени подзадачи. Все записанные временные диапазоны будут отображены в Календаре.
+- Подсчёты, прогнозы затрачиваемого время на подзадачу.
+
+![Calendar](screenshots/calendar.png)
+
+Календарь
+
+
+Настроки Календаря могут быть изменены на странице **Настройки**
+
+Заметка: Дата исполения не содержит информацию о времени.
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/centos-installation.markdown b/doc/ru_RU/centos-installation.markdown
new file mode 100644
index 00000000..95808586
--- /dev/null
+++ b/doc/ru_RU/centos-installation.markdown
@@ -0,0 +1,127 @@
+Инсталяция Канборд на Centos
+============================
+
+
+**Внимание**: Некоторые возможности Канборда требуют [запуск ежедневных фоновых задач](cronjob.markdown).
+
+
+Centos 7[¶](#centos-7 "Ссылка на этот заголовок")
+-------------------------------------------------
+
+Установите PHP и Apache:
+
+
+ yum install -y php php-mbstring php-pdo php-gd unzip wget
+
+
+По умолчанию, Centos 7 использует PHP 5.4.16 и Apache 2.4.6.
+
+
+
+Перезапустите Apache:
+
+
+
+ systemctl restart httpd.service
+
+
+
+Установите Канборд:
+
+
+
+ cd /var/www/html
+
+ wget https://kanboard.net/kanboard-latest.zip
+
+ unzip kanboard-latest.zip
+
+ chown -R apache:apache kanboard/data
+
+ rm kanboard-latest.zip
+
+
+
+Если включен SELinux, убедитесь что пользователь веб сервера Apache имеет права на запись в директорию data:
+
+
+
+ chcon -R -t httpd_sys_content_rw_t /var/www/html/kanboard/data
+
+
+
+Убедитесь, что Канборд может посылать email сообщения и делать внешние сетевые запросы, например с SELinux:
+
+
+
+ setsebool -P httpd_can_network_connect=1
+
+
+
+Позволяет делать внешние подключения если используется LDAP, SMTP, Web hooks или другая интеграция.
+
+
+
+Centos 6.x[¶](#centos-6-x "Ссылка на этот заголовок")
+-----------------------------------------------------
+
+
+
+Установите PHP и Apache:
+
+
+
+ yum install -y php php-mbstring php-pdo php-gd unzip wget
+
+
+
+По умолчанию, Centos 6.5 использует PHP 5.3.3 и Apache 2.2.15.
+
+
+
+Включите короткие теги:
+
+
+
+- Отредактируйте файл `/etc/php.ini`{.docutils .literal}
+
+
+
+- Измените строку `short_open_tag = On`{.docutils .literal} (вместо `short_open_tag = Off`{.docutils .literal})
+
+
+
+Перезапустите Apache:
+
+
+
+ service httpd restart
+
+
+
+Установите Канборд:
+
+
+
+ cd /var/www/html
+
+ wget https://kanboard.net/kanboard-latest.zip
+
+ unzip kanboard-latest.zip
+
+ chown -R apache:apache kanboard/data
+
+ rm kanboard-latest.zip
+
+
+
+Готово. Можете работать с Канборд. Откройте в браузере `http://ваш_сервер/kanboard/`{.docutils .literal}.
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/cli.markdown b/doc/ru_RU/cli.markdown
new file mode 100644
index 00000000..5ac2b4ec
--- /dev/null
+++ b/doc/ru_RU/cli.markdown
@@ -0,0 +1,173 @@
+Интерфейс командной строки
+==========================
+
+Канборд обеспечивает простой интерфейс командной строки, которым можно воспользоваться только из Unix терминала. Эта возможность доступна только с локальной машины.
+
+Интерфейс командной строки полезен для выполнения команд вне процессов веб сервера.
+
+Использование[¶](#usage "Ссылка на этот заголовок")
+---------------------------------------------------
+
+- Откройте терминал и перейдите в директорию Канборд (например: `cd /var/www/kanboard`)
+- Выполните команду `./cli`
+
+
+```bash
+Kanboard version master
+
+Usage:
+ command [options] [arguments]
+
+Options:
+ -h, --help Display this help message
+ -q, --quiet Do not output any message
+ -V, --version Display this application version
+ --ansi Force ANSI output
+ --no-ansi Disable ANSI output
+ -n, --no-interaction Do not ask any interactive question
+ -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
+
+Available commands:
+ cronjob Execute daily cronjob
+ help Displays help for a command
+ list Lists commands
+ worker Execute queue worker
+ db
+ db:migrate Execute SQL migrations
+ db:version Show database schema version
+ export
+ export:daily-project-column-stats Daily project column stats CSV export (number of tasks per column and per day)
+ export:subtasks Subtasks CSV export
+ export:tasks Tasks CSV export
+ export:transitions Task transitions CSV export
+ locale
+ locale:compare Compare application translations with the fr_FR locale
+ locale:sync Synchronize all translations based on the fr_FR locale
+ notification
+ notification:overdue-tasks Send notifications for overdue tasks
+ plugin
+ plugin:install Install a plugin from a remote Zip archive
+ plugin:uninstall Remove a plugin
+ plugin:upgrade Update all installed plugins
+ projects
+ projects:daily-stats Calculate daily statistics for all projects
+ trigger
+ trigger:tasks Trigger scheduler event for all tasks
+ user
+ user:reset-2fa Remove two-factor authentication for a user
+ user:reset-password Change user password
+```
+
+
+Доступные команды[¶](#available-commands "Ссылка на этот заголовок")
+--------------------------------------------------------------------
+
+### Экспорт задач в формате CSV[¶](#tasks-csv-export "Ссылка на этот заголовок")
+
+Применение:
+
+ ./cli export:tasks <project_id> <start_date> <end_date>
+
+Пример:
+
+ ./cli export:tasks 1 2014-10-01 2014-11-30 > /tmp/my_custom_export.csv
+
+Данные CSV передаются в `stdout`.
+
+### Экспорт подзадач в формате CSV[¶](#subtasks-csv-export "Ссылка на этот заголовок")
+
+Применение:
+
+ ./cli export:subtasks <project_id> <start_date> <end_date>
+
+Пример:
+
+ ./cli export:subtasks 1 2014-10-01 2014-11-30 > /tmp/my_custom_export.csv
+
+### Экспорт перемещения задач в формате CSV[¶](#task-transitions-csv-export "Ссылка на этот заголовок")
+
+Применение:
+
+ ./cli export:transitions <project_id> <start_date> <end_date>
+
+Пример:
+
+ ./cli export:transitions 1 2014-10-01 2014-11-30 > /tmp/my_custom_export.csv
+
+### Экспорт ежедневных сведений в формате CSV[¶](#export-daily-summaries-data-in-csv "Ссылка на этот заголовок")
+
+Экспортированные данные будут выведены в стандартный вывод:
+
+ ./cli export:daily-project-column-stats <project_id> <start_date> <end_date>
+
+Пример:
+
+ ./cli export:daily-project-column-stats 1 2014-10-01 2014-11-30 > /tmp/my_custom_export.csv
+
+### Отправка уведомлений для просроченных задач[¶](#send-notifications-for-overdue-tasks "Ссылка на этот заголовок")
+
+Email сообщения будут отправлены всем пользователям, у которых включено оповещение.
+
+ ./cli notification:overdue-tasks
+
+Необязательные параметры:
+
+- `--show`: Показывать отправку уведомлений
+- `--group`: Группировать все просроченные задачи для одного пользователя (со всех проектов) на один email
+- `--manager`: Посылать все просроченные задачи менеджеру (менеджерам) проекта в одном email сообщении
+
+Вы можете просмотреть просроченные задачи с помощью параметра `--show`:
+
+```bash
+./cli notification:overdue-tasks --show
++-----+---------+------------+------------+--------------+----------+
+| Id | Title | Due date | Project Id | Project name | Assignee |
++-----+---------+------------+------------+--------------+----------+
+| 201 | Test | 2014-10-26 | 1 | Project #0 | admin |
+| 202 | My task | 2014-10-28 | 1 | Project #0 | |
++-----+---------+------------+------------+--------------+----------+
+```
+
+### Запуск ежедневной калькуляции статистики[¶](#run-daily-project-stats-calculation "Ссылка на этот заголовок")
+
+Эта команда считает статистику для каждого проекта:
+
+ ./cli projects:daily-stats
+ Run calculation for Project #0
+ Run calculation for Project #1
+ Run calculation for Project #10
+
+### Триггеры для задач[¶](#trigger-for-tasks)
+
+Эта команда посылает “событие для ежедневных фоновых заданий” для всех открытых задач в каждом проекте.
+
+ ./cli trigger:tasks
+ Trigger task event: project_id=2, nb_tasks=1
+
+### Сброс пароля пользователя[¶](#reset-user-password "Ссылка на этот заголовок")
+
+ ./cli user:reset-password my_user
+
+Будет запрошен пароль и подтверждение. Символы не отображаются на экране.
+
+### Удаление двухуровневой аутентификации для пользователя[¶](#remove-two-factor-authentication-for-a-user "Ссылка на этот заголовок")
+
+ ./cli user:reset-2fa my_user
+
+### Установка плагина[¶](#install-a-plugin "Ссылка на этот заголовок")
+
+ ./cli plugin:install https://github.com/kanboard/plugin-github-auth/releases/download/v1.0.1/GithubAuth-1.0.1.zip
+
+Заметка: Установленные файлы будут иметь теже права, что и у текущего пользователя
+
+### Удаление плагина[¶](#remove-a-plugin "Ссылка на этот заголовок")
+
+ ./cli plugin:uninstall Budget
+
+### Обновление всех плагинов[¶](#upgrade-all-plugins "Ссылка на этот заголовок")
+
+ ./cli plugin:upgrade
+ * Updating plugin: Budget Planning
+ * Plugin up to date: Github Authentication
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
diff --git a/doc/ru_RU/closing-tasks.markdown b/doc/ru_RU/closing-tasks.markdown
new file mode 100644
index 00000000..74341fe2
--- /dev/null
+++ b/doc/ru_RU/closing-tasks.markdown
@@ -0,0 +1,30 @@
+Закрытие задач
+==============
+
+Когда задача закрыта, то она скрывается на Доске.
+
+Не смотря на это, вы можете в любой момент зайти в список закрытых задач используя запрос **status:closed** в любой форме поиска или просто выбрать фильтр “Закрытые задачи” в выпадающем меню.
+
+Имеется два пути для закрытия задачи: - На Доске выбрать задачу и выпадающем меню выбрать **Закрыть задачу**
+
+![Close a task from drop-down menu](screenshots/menu-close-task.png)
+
+Закрытие задачи, используя выпадающее меню.
+
+
+или - Используя детальное представление задачи, выбрать **Закрыть задачу** в меню боковой панели (слева)
+
+
+![Close task](screenshots/closing-tasks.png)
+
+Закрытие задачи.
+
+
+
+**Заметка**: Когда вы закрываете задачу, у всех не выполненных подзадач будет изменен статус на “Выполнено”
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/cloudron.markdown b/doc/ru_RU/cloudron.markdown
new file mode 100644
index 00000000..7a12e57d
--- /dev/null
+++ b/doc/ru_RU/cloudron.markdown
@@ -0,0 +1,45 @@
+Как запустить Канборд на Cloudron
+=================================
+
+
+[Cloudron](https://cloudron.io) приватный смартсервер, на котором вы можете установить веб приложения, такие как Канборд. Вы можете установить Канборд в определенном домене, при этом каждой инсталяции создавается резервная копия и поддерживается новая версия Канборда автоматически.
+
+
+
+[![Install](https://cloudron.io/img/button.svg)](https://cloudron.io/button.html?app=net.kanboard.cloudronapp)
+
+
+
+Учетные записи[¶](#accounts "Ссылка на этот заголовок")
+-------------------------------------------------------
+
+
+Приложение плотно интегрируется с системой Управления пользователями Cloudron (через LDAP). Только пользователи Cloudron могут войти в Канборд. Плюс, любой администратор Cloudron становится администратором Канборда автоматически.
+
+
+Установка плагинов[¶](#installing-plugins "Ссылка на этот заголовок")
+---------------------------------------------------------------------
+
+
+
+Плагины могут быть установлены и настроены с помощью утилиты [Cloudron CLI](https://git.cloudron.io/cloudron/kanboard-app). Для подробной информации смотрите [описание приложения](https://cloudron.io/appstore.html?app=net.kanboard.cloudronapp).
+
+
+
+Исходный код приложения[¶](#application-source-code "Ссылка на этот заголовок")
+-------------------------------------------------------------------------------
+
+
+
+Исходный код приложения Cloudron находится [здесь](https://git.cloudron.io/cloudron/kanboard-app).
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/coding-standards.markdown b/doc/ru_RU/coding-standards.markdown
new file mode 100644
index 00000000..b6100375
--- /dev/null
+++ b/doc/ru_RU/coding-standards.markdown
@@ -0,0 +1,64 @@
+Стандарты используемые при написании кода
+=========================================
+
+
+
+Код PHP[¶](#php-code "Ссылка на этот заголовок")
+------------------------------------------------
+
+
+
+- Отступ: 4 пробела
+
+
+
+- Перевод строки: Unix =\> `\n`{.docutils .literal}
+
+
+
+- Кодировка: UTF-8
+
+
+
+- Используйте только открытые теги `<?php`{.docutils .literal} or `<?=`{.docutils .literal} для templates, но **никогда** не используйте `<?`{.docutils .literal}
+
+
+
+- Всегда пишите коментарии PHPdoc для свойств методов и классов
+
+
+
+- Стиль кодирования: [PSR-1](http://www.php-fig.org/psr/psr-1/) и [PSR-2](http://www.php-fig.org/psr/psr-2/)
+
+
+
+Код JavaScript[¶](#javascript-code "Ссылка на этот заголовок")
+--------------------------------------------------------------
+
+
+
+- Отступ: 4 пробела
+
+
+
+- Перевод строки: Unix =\> `\n`{.docutils .literal}
+
+
+
+Код CSS[¶](#css-code "Ссылка на этот заголовок")
+------------------------------------------------
+
+
+
+- Отступ: 4 пробела
+
+
+
+- Перевод строки: Unix =\> `\n`{.docutils .literal}
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/config.markdown b/doc/ru_RU/config.markdown
new file mode 100644
index 00000000..b0419966
--- /dev/null
+++ b/doc/ru_RU/config.markdown
@@ -0,0 +1,523 @@
+Конфигурационный файл
+=====================
+
+
+
+Вы можете изменить базовые настройки Канборда добавив файл `config.php` в корень проекта или в каталог `data`. Вы, также, можете переименовать файл `config.default.php` в `config.php` и установить желаемые значения.
+
+
+Включение/выключение режима отладки[¶](#enable-disable-debug-mode "Ссылка на этот заголовок")
+---------------------------------------------------------------------------------------------
+
+
+
+ define('DEBUG', true);
+
+ define('LOG_DRIVER', 'file'); // Other drivers are: syslog, stdout, stderr or file
+
+
+
+Обработчик логов может быть определен если вы включите режим отладки. Режим отладки фиксирует все SQL запросы и время затрачиваемое на генерацию страниц.
+
+
+
+Плагины[¶](#plugins "Ссылка на этот заголовок")
+-----------------------------------------------
+
+
+
+Каталог плагинов:
+
+
+
+ define('PLUGINS_DIR', 'data/plugins');
+
+
+
+Включение/выключение установки плагинов через интерфейс пользователя:
+
+
+
+ define('PLUGIN_INSTALLER', true); // Default is true
+
+
+
+Каталог для загружаемых файлов[¶](#folder-for-uploaded-files "Ссылка на этот заголовок")
+----------------------------------------------------------------------------------------
+
+
+
+ define('FILES_DIR', 'data/files');
+
+
+
+Включение/выключение переопределения url адресов[¶](#enable-disable-url-rewrite "Ссылка на этот заголовок")
+-----------------------------------------------------------------------------------------------------------
+
+
+
+ define('ENABLE_URL_REWRITE', false);
+
+
+
+Настройка email[¶](#email-configuration "Ссылка на этот заголовок")
+-------------------------------------------------------------------
+
+
+
+ // E-mail address for the "From" header (notifications)
+
+ define('MAIL_FROM', 'notifications@kanboard.local');
+
+
+
+ // Mail transport to use: "smtp", "sendmail" or "mail" (PHP mail function)
+
+ define('MAIL_TRANSPORT', 'mail');
+
+
+
+ // SMTP configuration to use when the "smtp" transport is chosen
+
+ define('MAIL_SMTP_HOSTNAME', '');
+
+ define('MAIL_SMTP_PORT', 25);
+
+ define('MAIL_SMTP_USERNAME', '');
+
+ define('MAIL_SMTP_PASSWORD', '');
+
+ define('MAIL_SMTP_ENCRYPTION', null); // Valid values are "null", "ssl" or "tls"
+
+
+
+ // Sendmail command to use when the transport is "sendmail"
+
+ define('MAIL_SENDMAIL_COMMAND', '/usr/sbin/sendmail -bs');
+
+
+
+Настройки базы данных[¶](#database-settings "Ссылка на этот заголовок")
+-----------------------------------------------------------------------
+
+
+
+ // Database driver: sqlite, mysql or postgres (sqlite by default)
+
+ define('DB_DRIVER', 'sqlite');
+
+
+
+ // Mysql/Postgres username
+
+ define('DB_USERNAME', 'root');
+
+
+
+ // Mysql/Postgres password
+
+ define('DB_PASSWORD', '');
+
+
+
+ // Mysql/Postgres hostname
+
+ define('DB_HOSTNAME', 'localhost');
+
+
+
+ // Mysql/Postgres database name
+
+ define('DB_NAME', 'kanboard');
+
+
+
+ // Mysql/Postgres custom port (null = default port)
+
+ define('DB_PORT', null);
+
+
+
+ // Mysql SSL key
+
+ define('DB_SSL_KEY', null);
+
+
+
+ // Mysql SSL certificate
+
+ define('DB_SSL_CERT', null);
+
+
+
+ // Mysql SSL CA
+
+ define('DB_SSL_CA', null);
+
+
+
+Настройки LDAP[¶](#ldap-settings "Ссылка на этот заголовок")
+------------------------------------------------------------
+
+
+
+ // Enable LDAP authentication (false by default)
+
+ define('LDAP_AUTH', false);
+
+
+
+ // LDAP server hostname
+
+ define('LDAP_SERVER', '');
+
+
+
+ // LDAP server port (389 by default)
+
+ define('LDAP_PORT', 389);
+
+
+
+ // By default, require certificate to be verified for ldaps:// style URL. Set to false to skip the verification
+
+ define('LDAP_SSL_VERIFY', true);
+
+
+
+ // Enable LDAP START_TLS
+
+ define('LDAP_START_TLS', false);
+
+
+
+ // By default Kanboard lowercase the ldap username to avoid duplicate users (the database is case sensitive)
+
+ // Set to true if you want to preserve the case
+
+ define('LDAP_USERNAME_CASE_SENSITIVE', false);
+
+
+
+ // LDAP bind type: "anonymous", "user" or "proxy"
+
+ define('LDAP_BIND_TYPE', 'anonymous');
+
+
+
+ // LDAP username to use with proxy mode
+
+ // LDAP username pattern to use with user mode
+
+ define('LDAP_USERNAME', null);
+
+
+
+ // LDAP password to use for proxy mode
+
+ define('LDAP_PASSWORD', null);
+
+
+
+ // LDAP DN for users
+
+ // Example for ActiveDirectory: CN=Users,DC=kanboard,DC=local
+
+ // Example for OpenLDAP: ou=People,dc=example,dc=com
+
+ define('LDAP_USER_BASE_DN', '');
+
+
+
+ // LDAP pattern to use when searching for a user account
+
+ // Example for ActiveDirectory: '(&(objectClass=user)(sAMAccountName=%s))'
+
+ // Example for OpenLDAP: 'uid=%s'
+
+ define('LDAP_USER_FILTER', '');
+
+
+
+ // LDAP attribute for username
+
+ // Example for ActiveDirectory: 'samaccountname'
+
+ // Example for OpenLDAP: 'uid'
+
+ define('LDAP_USER_ATTRIBUTE_USERNAME', 'uid');
+
+
+
+ // LDAP attribute for user full name
+
+ // Example for ActiveDirectory: 'displayname'
+
+ // Example for OpenLDAP: 'cn'
+
+ define('LDAP_USER_ATTRIBUTE_FULLNAME', 'cn');
+
+
+
+ // LDAP attribute for user email
+
+ define('LDAP_USER_ATTRIBUTE_EMAIL', 'mail');
+
+
+
+ // LDAP attribute to find groups in user profile
+
+ define('LDAP_USER_ATTRIBUTE_GROUPS', 'memberof');
+
+
+
+ // LDAP attribute for user avatar image: thumbnailPhoto or jpegPhoto
+
+ define('LDAP_USER_ATTRIBUTE_PHOTO', '');
+
+
+
+ // LDAP attribute for user language, example: 'preferredlanguage'
+
+ // Put an empty string to disable language sync
+
+ define('LDAP_USER_ATTRIBUTE_LANGUAGE', '');
+
+
+
+ // Allow automatic LDAP user creation
+
+ define('LDAP_USER_CREATION', true);
+
+
+
+ // LDAP DN for administrators
+
+ // Example: CN=Kanboard-Admins,CN=Users,DC=kanboard,DC=local
+
+ define('LDAP_GROUP_ADMIN_DN', '');
+
+
+
+ // LDAP DN for managers
+
+ // Example: CN=Kanboard Managers,CN=Users,DC=kanboard,DC=local
+
+ define('LDAP_GROUP_MANAGER_DN', '');
+
+
+
+ // Enable LDAP group provider for project permissions
+
+ // The end-user will be able to browse LDAP groups from the user interface and allow access to specified projects
+
+ define('LDAP_GROUP_PROVIDER', false);
+
+
+
+ // LDAP Base DN for groups
+
+ define('LDAP_GROUP_BASE_DN', '');
+
+
+
+ // LDAP group filter
+
+ // Example for ActiveDirectory: (&(objectClass=group)(sAMAccountName=%s*))
+
+ define('LDAP_GROUP_FILTER', '');
+
+
+
+ // LDAP user group filter
+
+ // If this filter is configured, Kanboard will search user groups in LDAP_GROUP_BASE_DN
+
+ // Example for OpenLDAP: (&(objectClass=posixGroup)(memberUid=%s))
+
+ define('LDAP_GROUP_USER_FILTER', '');
+
+
+
+ // LDAP attribute for the group name
+
+ define('LDAP_GROUP_ATTRIBUTE_NAME', 'cn');
+
+
+
+Настройки аутентификации Reverse-Proxy[¶](#reverse-proxy-authentication-settings "Ссылка на этот заголовок")
+------------------------------------------------------------------------------------------------------------
+
+
+
+ // Enable/disable the reverse proxy authentication
+
+ define('REVERSE_PROXY_AUTH', false);
+
+
+
+ // Header name to use for the username
+
+ define('REVERSE_PROXY_USER_HEADER', 'REMOTE_USER');
+
+
+
+ // Username of the admin, by default blank
+
+ define('REVERSE_PROXY_DEFAULT_ADMIN', '');
+
+
+
+ // Default domain to use for setting the email address
+
+ define('REVERSE_PROXY_DEFAULT_DOMAIN', '');
+
+
+
+Настройки аутентификации RememberMe[¶](#rememberme-authentication-settings "Ссылка на этот заголовок")
+------------------------------------------------------------------------------------------------------
+
+
+
+ // Enable/disable remember me authentication
+
+ define('REMEMBER_ME_AUTH', true);
+
+
+
+Настройки Secure HTTP headers[¶](#secure-http-headers-settings "Ссылка на этот заголовок")
+------------------------------------------------------------------------------------------
+
+
+
+ // Enable or disable "Strict-Transport-Security" HTTP header
+
+ define('ENABLE_HSTS', true);
+
+
+
+ // Enable or disable "X-Frame-Options: DENY" HTTP header
+
+ define('ENABLE_XFRAME', true);
+
+
+
+Запись событий[¶](#logging "Ссылка на этот заголовок")
+------------------------------------------------------
+
+
+
+По умолчанию, Канборд записывает не все события. Если вы хотите включить запись событий, вы должны установить обработчик логов.
+
+
+
+ // Available log drivers: syslog, stderr, stdout or file
+
+ define('LOG_DRIVER', '');
+
+
+
+ // Log filename if the log driver is "file"
+
+ define('LOG_FILE', __DIR__.DIRECTORY_SEPARATOR.'data'.DIRECTORY_SEPARATOR.'debug.log');
+
+
+
+Защита от Brute-force[¶](#brute-force-protection "Ссылка на этот заголовок")
+----------------------------------------------------------------------------
+
+
+
+ // Enable captcha after 3 authentication failure
+
+ define('BRUTEFORCE_CAPTCHA', 3);
+
+
+
+ // Lock the account after 6 authentication failure
+
+ define('BRUTEFORCE_LOCKDOWN', 6);
+
+
+
+ // Lock account duration in minute
+
+ define('BRUTEFORCE_LOCKDOWN_DURATION', 15);
+
+
+
+Сессии[¶](#session "Ссылка на этот заголовок")
+----------------------------------------------
+
+
+
+ // Session duration in second (0 = until the browser is closed)
+
+ // See http://php.net/manual/en/session.configuration.php#ini.session.cookie-lifetime
+
+ define('SESSION_DURATION', 0);
+
+
+
+Проксирование клиентских HTTP[¶](#http-client-proxy "Ссылка на этот заголовок")
+-------------------------------------------------------------------------------
+
+
+
+Если внешние запросы HTTP необходимо пробрасывать через прокси:
+
+
+
+ define('HTTP_PROXY_HOSTNAME', '');
+
+ define('HTTP_PROXY_PORT', '3128');
+
+ define('HTTP_PROXY_USERNAME', '');
+
+ define('HTTP_PROXY_PASSWORD', '');
+
+
+
+Другие настройки[¶](#various-settings "Ссылка на этот заголовок")
+-----------------------------------------------------------------
+
+
+
+ // Escape html inside markdown text
+
+ define('MARKDOWN_ESCAPE_HTML', true);
+
+
+
+ // API alternative authentication header, the default is HTTP Basic Authentication defined in RFC2617
+
+ define('API_AUTHENTICATION_HEADER', '');
+
+
+
+ // Hide login form, useful if all your users use Google/Github/ReverseProxy authentication
+
+ define('HIDE_LOGIN_FORM', false);
+
+
+
+ // Disabling logout (for external SSO authentication)
+
+ define('DISABLE_LOGOUT', false);
+
+
+
+ // Override API token stored in the database, useful for automated tests
+
+ define('API_AUTHENTICATION_TOKEN', 'My unique API Token');
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/contributing.markdown b/doc/ru_RU/contributing.markdown
new file mode 100644
index 00000000..54917067
--- /dev/null
+++ b/doc/ru_RU/contributing.markdown
@@ -0,0 +1,96 @@
+Руководство для участников проекта
+==================================
+
+
+
+Как я могу помочь проекту?[¶](#how-can-i-help "Ссылка на этот заголовок")
+-------------------------------------------------------------------------
+
+
+
+Канборд пока не идеален, поэтому есть несколько вариантов помочь проекту:
+
+
+
+- Присылать отзывы
+- Сообщать об ошибках
+- Добавлять или обновлять переводы
+- Улучшать документацию
+- Писать код
+- Рассказать друзьям, что Канборд отличная программа :)
+
+
+
+Перед тем как начать большое дело, создайте новое “обсуждение вопроса” (issue) на [https://github.com/fguillot/kanboard/issues](https://github.com/fguillot/kanboard/issues) и объясните ваше предложение.
+
+
+
+Я хочу внести предложения по проекту[¶](#i-want-to-give-feedback "Ссылка на этот заголовок")
+--------------------------------------------------------------------------------------------
+
+
+
+- У вас есть идея по улучшению (пользовательский интерфейс или другие возможности)
+- Посмотрите в обсуждениях (issue), может ваша идея уже предложена кем-то
+- Откройте новое обсуждение (issue)
+- Опишите вашу идею
+- Вы можете проголосовать +1 за имеющиеся предложения
+
+
+Я хочу сообщить об ошибке[¶](#i-want-to-report-a-bug "Ссылка на этот заголовок")
+--------------------------------------------------------------------------------
+
+- Убедитесь, что обсуждение вопроса (issue) ранее не публиковалось
+- Откройте новую заявку (ticket)
+- Опишите, что именно не работает
+- Опишите, как воспроизвести ошибку (последовательность, как вы вышли на данную ошибку)
+- Опишите ваше окружение (версию Канборда, какая ОС, веб сервер, версию PHP, база данных и версия, хостинг провайдер)
+
+
+Я хочу перевести Канборд на другой язык[¶](#i-want-to-translate-kanboard "Ссылка на этот заголовок")
+----------------------------------------------------------------------------------------------------
+
+Канборд уже переведен на несколько языков. Вы можете улучшить эти переводы. Некоторые переводы еще не завершены. Для того, чтобы сделать перевод, ознакомтесь с [руководством по переводу на другой язык](translations.markdown).
+
+
+Я хочу улучшить документацию[¶](#i-want-to-improve-the-documentation "Ссылка на этот заголовок")
+------------------------------------------------------------------------------------------------
+
+- Вы считаете, что что-то недостаточно хорошо описано, имеются грамматические или орфографические ошибки, что-то еще.
+- Документация написана в формате Markdown и хранится в каталоге `docs`{.docutils .literal}.
+- Редактируйте файлы и присылайте pull-request.
+- Документация на официальном вебсайте синхронизируется с репозиторием.
+
+
+Я хочу внести свой вклад в код[¶](#i-want-to-contribute-to-the-code "Ссылка на этот заголовок")
+-----------------------------------------------------------------------------------------------
+
+Pull-requests всегда приветствуются, однако, чтобы они были приняты, вы должны следовать следующим указаниям:
+
+- **Перед тем как внести большое изменение или переделать дизайн, откройте новую заявку (ticket) для обсуждения.**
+- Если вы хотите добавить новую возможность, уважайте филосовию Канборда: **Мы фокусируемся на простоте**, мы не хотим иметь раздутую программу.
+- Это же относится и к пользовательскому интерфейсу: **простота и производительность**
+- Присылайте только по одному pull-request для новой возможности или исправления ошибки.
+- Небольшие pull-request легче просмотреть и быстрее влить в проект.
+- Убедитесь, что [модульные тесты выполняются успешно](tests.markdown).
+- Уважайте [стандарты кодирования](coding-standards.markdown).
+- Пишите код, который могут поддерживать другие, избегайте дублирования, используйте лучше практики PHP.
+
+В любом случае, если вы не уверены в чем-то - открывайте новую заявку (ticket)
+
+
+Рассказать друзьям, что Канборд отличная программа :)[¶](#tell-your-friends-that-kanboard-is-awesome "Ссылка на этот заголовок")
+--------------------------------------------------------------------------------------------------------------------------------
+
+Если вы используете Канборд, покажите его и окружающим. Расскажите всем о прелестях бесплатного и опенсурсного программного обеспечения.
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/create-tasks-by-email.markdown b/doc/ru_RU/create-tasks-by-email.markdown
new file mode 100644
index 00000000..baddc682
--- /dev/null
+++ b/doc/ru_RU/create-tasks-by-email.markdown
@@ -0,0 +1,61 @@
+Создание задач через email
+==========================
+
+
+Вы можете создавать задачи отправляя email (сообщения через электронную почту). Эта возможность доступна при использовании плагинов.
+
+В настоящий момент, Канборд поддерживает три внешних плагина:
+
+
+- [Mailgun](https://github.com/kanboard/plugin-mailgun)
+- [Sendgrid](https://github.com/kanboard/plugin-sendgrid)
+- [Postmark](https://github.com/kanboard/plugin-postmark)
+
+Эти плагины позволяют обрабатывать входящие электронные сообщения (email) без дополнительной настройки SMTP сервера.
+
+При получении плагином email сообщения, плагин передает это сообщение в веб транслятор Канборда.
+
+
+Обработка входящих email сообщений[¶](#incoming-emails-workflow "Ссылка на этот заголовок")
+-------------------------------------------------------------------------------------------
+
+
+1. Вы отправляете email сообщение на определенный адрес, например **something+myproject@inbound.mydomain.tld**
+2. Email сообщение перенаправляется на SMTP сервер
+3. SMTP провайдер передает в веб сервис Канборда email сообщение в JSON формате или в формате multipart/form-data
+4. Канборд обрабатывает полученное email сообщение и создает задачу в указанном проекте
+
+**Заметка**: Новые задачи автоматически создаются в первой колонке.
+
+
+Формат email сообщения[¶](#email-format "Ссылка на этот заголовок")
+-------------------------------------------------------------------
+
+- Email адрес до знака **@** должен содержать разделитель **плюс**, например **kanboard+project123**
+- Строка следующая после знака плюс означает **Идентификатор проекта**, например, проект **Проект 123** может иметь идентификатор проекта **project123**. Идентификатор проекта можно задать в свойствах проекта **Меню** -\> **Настройки** -\> **Изменить проект** -\> **Идентификатор**. **Идентификатор** должен быть из цифр и латинских букв.
+- Тема из email сообщения становится названием задачи
+- Текст email сообщения становится описанием задачи (в формате Markdown)
+
+Email сообщения могут быть написаны в текстовом или HTML формате. **Канборд сам переконвертирует формат сообщения в Markdown**
+
+
+Безопастность и требования[¶](#security-and-requirements "Ссылка на этот заголовок")
+------------------------------------------------------------------------------------
+
+- Веб транслятор Канборд защищен случайным ключом
+- Email адрес отправителя должен быть такой же как и у пользователя Канборд
+- Проект в Канборде должен иметь уникальный идентификатор
+- Отправитель email сообщения должен быть участником проекта
+
+
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/creating-projects.markdown b/doc/ru_RU/creating-projects.markdown
new file mode 100644
index 00000000..fb6ecffc
--- /dev/null
+++ b/doc/ru_RU/creating-projects.markdown
@@ -0,0 +1,62 @@
+Создание проектов
+=================
+
+
+Kanboard может содержать одновременно несколько проектов. Проекты могут быть следующих типов:
+
+- Командный проект
+- Приватный проект для одного пользователя
+
+Создание проекта для нескольких пользователей[¶](#creating-projects-for-multiple-users "Ссылка на этот заголовок")
+------------------------------------------------------------------------------------------------------------------
+
+- Только пользователи с ролью администратор и менеджер могут создавать такие проекты
+- Можно добавлять к проекту пользователей и группы
+
+На рабочей панели нажмите ссылку **Новый проект**:
+
+![Project creation form](screenshots/new-project.png)
+
+Форма создания проекта.
+
+
+Теперь надо только добавить название для проекта! Легко, не правда ли?
+
+
+Создание приватного проекта[¶](#creating-a-private-project "Ссылка на этот заголовок")
+--------------------------------------------------------------------------------------
+
+- Любой пользователь Kanboard может создать приватный проект
+- **Нет** возможности добавлять участников к приватному проекту
+- Только владелец приватного проекта и администратор могут получить доступ к проекту
+
+
+На рабочей панели нажмите **Новый проект с ограниченным доступом**.
+
+
+
+Создание проекта из другого проекта[¶](#creating-projects-from-another-project "Ссылка на этот заголовок")
+----------------------------------------------------------------------------------------------------------
+
+При создании нового проекта у вас есть возможность использовать данные другого (ранее созданного) проекта:
+
+- Разрешения
+- Действия
+- Дорожки
+- Категории
+- Задачи
+
+
+
+
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/creating-tasks.markdown b/doc/ru_RU/creating-tasks.markdown
new file mode 100644
index 00000000..17fbb69b
--- /dev/null
+++ b/doc/ru_RU/creating-tasks.markdown
@@ -0,0 +1,42 @@
+Создание задач
+==============
+
+
+На Доске нажмите значок плюс рядом с названием колонки:
+
+
+![Task creation from the board](screenshots/task-creation-board.png)
+
+Создание задачи на Доске
+
+
+Далее появится форма создания задачи:
+
+![Task creation form](screenshots/task-creation-form.png)
+
+Форма создания задачи.
+
+
+Только поле **Название** является обязательным полем для заполнения.
+
+
+Описание полей:
+
+- **Название**: Название вашей задачи, которое будет отображаться на доске.
+- **Описание**: Позволяет вам добавить больше информации о задаче, содержимое может содержать синтаксис [Markdown](syntax-guide.markdown).
+- **Создать другую задачу**: Отметьте этот чекбокс если вы хотите создать похожую задачу (некоторые поля будут заполнены).
+- **Назначена**: Пользователь, которому будет назначена для выполнения эта задача.
+- **Категория**: Только одна категория может быть назначена задаче.
+- **Колонка**: Колонка в которой задача будет создана, ваша задача будет помещена вниз.
+- **Цвет**: Выберите цвет для карточки.
+- **Сложность**: используется в быстрых управлениях проектами (Scrum); сложность - это число, которое говорит команде проекта насколько тяжело выполнить задачу. Обычно пользователи используют шкалу Фибоначи.
+- **Запланировано часов**: Планирование времени, которое будет затрачено на выполнение задачи. Измеряется в часах.
+- **Сделать до**: Просроченные задачи будут иметь дату завершения красного цвета, а предстоящие задачи будут иметь дату завершения черного цвета.
+
+**-**
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/cronjob.markdown b/doc/ru_RU/cronjob.markdown
new file mode 100644
index 00000000..f6d3a2af
--- /dev/null
+++ b/doc/ru_RU/cronjob.markdown
@@ -0,0 +1,28 @@
+Ежедневные фоновые задачи
+=========================
+
+Для корректной работы, Канборд должен запускать ежедневные фоновые задачи. На Unix платформах этот процесс выполнятся в `cron`.
+
+Фоновые задачи необходимы для следующих возможностей:
+
+- Отчеты и аналитика (подсчёт ежедневной статистики для каждого проекта)
+- Рассылка оповещений для просроченных задач
+- Выполнение автоматических действий подключенных к событиям “Ежедневные фоновые процессы для задач”
+
+
+Настройка на Unix и Linux платформах[¶](#configuration-on-unix-and-linux-platforms "Ссылка на этот заголовок")
+--------------------------------------------------------------------------------------------------------------
+
+Для создания фоновых задач под операционной системой Unix/Linux используются разные решения. Здесь приведен пример для Ubuntu 14.04. Для других систем процедура похожа.
+
+Отредактируйте crontab под пользователем вашего веб сервера:
+
+ sudo crontab -u www-data -e
+
+Пример запуска ежедневной фоновой задачи в 8 утра:
+
+ 0 8 * * * cd /path/to/kanboard && ./cli cronjob >/dev/null 2>&1
+
+Примечание: процес выполнения фоновых задач должен иметь права доступа к вашей базе данных в случае если вы используете Sqlite. Обычно, достаточно запускать фоновую задачу под пользователем веб сервера.
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
diff --git a/doc/ru_RU/currency-rate.markdown b/doc/ru_RU/currency-rate.markdown
new file mode 100644
index 00000000..75616f93
--- /dev/null
+++ b/doc/ru_RU/currency-rate.markdown
@@ -0,0 +1,43 @@
+Курсы валют
+===========
+
+
+Каждый пользователь может иметь предопределенный ежечасный курс для разных валют. Если вы хотите вручную занести курсы валют, то вы можете указать ставку в соответсвии с курсом.
+
+Эта опция используются для расчета бюджета проекта.
+
+![Currency Rate](screenshots/currency-rate.png)
+
+Курсы валют
+
+
+Для настроек курса валют выберите, справа вверху в выпадающем меню, **Настройки** -\> затем, слева, **Курсы валют**.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/custom-filters.markdown b/doc/ru_RU/custom-filters.markdown
new file mode 100644
index 00000000..6fc6d9b3
--- /dev/null
+++ b/doc/ru_RU/custom-filters.markdown
@@ -0,0 +1,36 @@
+Пользовательские фильтры
+========================
+
+Пользовательские фильтры позволяют вам сохранять любые поисковые запросы. Таким образом, вы можете легко расширить стандартные фильтры и сохранить часто используемые поисковые запросы.
+
+- Пользовательские фильтры сохраняются в проекте и имеют привязку к создателю.
+- Если создатель фильтра является менеджером проекта, то он может предоставить этот фильтр всем участникам проекта.
+
+
+Создание фильтра[¶](#filter-creation "Ссылка на этот заголовок")
+----------------------------------------------------------------
+
+
+Перейдите в **Меню** -\> **Пользовательские фильтры** или **Меню** -\> **Настройки** -\> **Пользовательские фильтры**
+
+![Custom Filter Creation](screenshots/custom-filter-creation.png)
+
+Создание пользовательского фильтра.
+
+
+
+Созданый фильтр появится на Доске рядом со стандартными фильтрами
+
+![Custom Filter Dropdown](screenshots/custom-filter-dropdown.png)
+
+Выпадающий список - Пользовательский фильтр.
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/debian-installation.markdown b/doc/ru_RU/debian-installation.markdown
new file mode 100644
index 00000000..2c33465e
--- /dev/null
+++ b/doc/ru_RU/debian-installation.markdown
@@ -0,0 +1,104 @@
+Как установить Канборд на Debian?
+=================================
+
+Некоторые возможности Канборда требуют [запуск ежедневных фоновых задач](cronjob.markdown).
+
+
+Debian 8 (Jessie)[¶](#debian-8-jessie "Ссылка на этот заголовок")
+-----------------------------------------------------------------
+
+
+Установите Apache и PHP:
+
+
+ apt-get update
+
+ apt-get install -y php5 php5-sqlite php5-gd unzip
+
+ service apache2 restart
+
+
+
+Установите Канборд:
+
+
+ cd /var/www/html
+
+ wget https://kanboard.net/kanboard-latest.zip
+
+ unzip kanboard-latest.zip
+
+ chown -R www-data:www-data kanboard/data
+
+ rm kanboard-latest.zip
+
+
+
+Debian 7 (Wheezy)[¶](#debian-7-wheezy "Ссылка на этот заголовок")
+-----------------------------------------------------------------
+
+
+
+Установите Apache и PHP:
+
+
+
+ apt-get update
+
+ apt-get install -y php5 php5-sqlite php5-gd unzip
+
+
+
+Установите Канборд:
+
+
+
+ cd /var/www
+
+ wget https://kanboard.net/kanboard-latest.zip
+
+ unzip kanboard-latest.zip
+
+ chown -R www-data:www-data kanboard/data
+
+ rm kanboard-latest.zip
+
+
+
+Debian 6 (Squeeze)[¶](#debian-6-squeeze "Ссылка на этот заголовок")
+-------------------------------------------------------------------
+
+
+
+Установите Apache и PHP:
+
+
+
+ apt-get update
+
+ apt-get install -y libapache2-mod-php5 php5-sqlite php5-gd unzip
+
+
+
+Установите Канборд:
+
+
+
+ cd /var/www
+
+ wget https://kanboard.net/kanboard-latest.zip
+
+ unzip kanboard-latest.zip
+
+ chown -R www-data:www-data kanboard/data
+
+ rm kanboard-latest.zip
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/docker.markdown b/doc/ru_RU/docker.markdown
new file mode 100644
index 00000000..358ade73
--- /dev/null
+++ b/doc/ru_RU/docker.markdown
@@ -0,0 +1,134 @@
+Как запустить Канборд с Docker?
+===============================
+
+
+Канборд можно легко запустить с [Docker](https://www.docker.com).
+
+
+Размер образа, приблизительно, **50MB** содержит:
+
+- [Alpine Linux](http://alpinelinux.org/)
+- The [process manager S6](http://skarnet.org/software/s6/)
+- Nginx
+- PHP-FPM
+
+
+Канборд запускает фоновые задачи каждый день в полночь. Переписывание URL (URL rewriting) включено в базовой конфигурации.
+
+Когда контейнер запущен, использование памяти около **20MB**.
+
+
+Использование стабильной версии[¶](#use-the-stable-version "Ссылка на этот заголовок")
+--------------------------------------------------------------------------------------
+
+
+Для получения последней стабильной версии Канборда используйте тег **stable**:
+
+
+
+ docker pull kanboard/kanboard
+
+ docker run -d --name kanboard -p 80:80 -t kanboard/kanboard:stable
+
+
+
+Использование разрабатываемой версии (автоматической сборки)[¶](#use-the-development-version-automated-build "Ссылка на этот заголовок")
+----------------------------------------------------------------------------------------------------------------------------------------
+
+
+
+Каждый новый коммит в репозитории вызывает новую сборку в [Docker Hub](https://registry.hub.docker.com/u/kanboard/kanboard/).
+
+
+
+ docker pull kanboard/kanboard
+
+ docker run -d --name kanboard -p 80:80 -t kanboard/kanboard:latest
+
+
+
+Используя **разрабатываемую версию** Канборда с тегом **latest**, вы принимаете на себя все риски нестабильной версии.
+
+
+
+Создание своего образа Docker[¶](#build-your-own-docker-image "Ссылка на этот заголовок")
+-----------------------------------------------------------------------------------------
+
+Для сборки своего образа, в репозитории Канборда имеется `Dockerfile`{.docutils .literal}. Склонируйте репозиторий Канборда и выполните следующую команду:
+
+
+
+ docker build -t youruser/kanboard:master .
+
+
+
+или
+
+
+
+ make docker-image
+
+
+
+Для запуска вашего контейнера в фоновом режиме на порту 80:
+
+
+
+ docker run -d --name kanboard -p 80:80 -t youruser/kanboard:master
+
+
+
+Тома[¶](#volumes "Ссылка на этот заголовок")
+--------------------------------------------
+
+
+Вы можете прикрепить 2 тома к вашему контейнеру:
+
+- Каталог с данными: `/var/www/kanboard/data`
+- Каталог с плагинами: `/var/www/kanboard/plugins`
+
+
+
+Используйте опцию `-v` для монтирования тома на удаленной машине как описано в [официальной документации Docker](https://docs.docker.com/engine/userguide/containers/dockervolumes/).
+
+
+
+Обновление вашего контейнера[¶](#upgrade-your-container "Ссылка на этот заголовок")
+-----------------------------------------------------------------------------------
+
+- Загрузите новый образ
+- Удалите старый контейнер
+- Перезапустите новый контейнер с теми же томами
+
+
+Переменные окружения[¶](#environment-variables "Ссылка на этот заголовок")
+--------------------------------------------------------------------------
+
+
+Список переменных окружения доступен на [этой странице](env.markdown).
+
+
+
+Файлы конфигурации[¶](#config-files "Ссылка на этот заголовок")
+---------------------------------------------------------------
+
+- Контейнер уже содержит конфигурационный файл расположенный в `/var/www/kanboard/config.php`.
+- Вы можете сохранить свой конфиг файл в томе с данными: `/var/www/kanboard/data/config.php`.
+
+
+
+Ссылки[¶](#references "Ссылка на этот заголовок")
+-------------------------------------------------
+
+- [Официальные образы Канборд](https://registry.hub.docker.com/u/kanboard/kanboard/)
+- [Документация Docker](https://docs.docker.com/)
+- [Стабильная версия Dockerfile](https://github.com/kanboard/docker)
+- [Разрабатываемая версия Dockerfile](https://github.com/fguillot/kanboard/blob/master/Dockerfile)
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/duplicate-move-tasks.markdown b/doc/ru_RU/duplicate-move-tasks.markdown
new file mode 100644
index 00000000..e02e1342
--- /dev/null
+++ b/doc/ru_RU/duplicate-move-tasks.markdown
@@ -0,0 +1,79 @@
+Дублирование и перенос задач
+============================
+
+
+Создание копии задачи в том же проекте[¶](#duplicate-a-task-into-the-same-project "Ссылка на этот заголовок")
+-------------------------------------------------------------------------------------------------------------
+
+
+Перейдите в детальное представление задачи и выберите в боковой панели (слева) **Клонировать**.
+
+![Task Duplication](screenshots/task-duplication.png)
+
+Создание копии задачи.
+
+
+Новая задача будет создана с теми же свойствами как и у оригинальной задачи.
+
+
+Создание копии задачи в другой проект[¶](#duplicate-a-task-to-another-project "Ссылка на этот заголовок")
+---------------------------------------------------------------------------------------------------------
+
+
+Перейдите в детальное представление задачи и выберите в боковом меню (слева) **Клонировать в другой проект**.
+
+![Task Duplication Another Project](screenshots/task-duplication-another-project.png)
+
+Создание копии задачи в другой проект.
+
+
+При выборе проекта в выпадающем списке, показываются только те проекты в которых вы являетесь участниками.
+
+Перед тем как скопировать задачу, Канборд просит вас указать свойства проекта (куда будет копироваться), потому что проекты могуг иметь разные столбцы, дорожки и т.д.
+
+Вам нужно указать:
+
+- Дорожку, в которую скопируется задача
+- Колонку
+- Категорию
+- Исполнителя
+
+Перемещение задачи в другой проект[¶](#move-a-task-to-another-project "Ссылка на этот заголовок")
+-------------------------------------------------------------------------------------------------
+
+Перейдите в детальное представление задачи и выберите в боковом меню **Переместить в другой проект**
+
+Процедура перемещения задачи в другой проект такая же как и при копировании, вы должны указать новые свойства для задачи.
+
+
+Список копируемых полей[¶](#list-of-fields-duplicated "Ссылка на этот заголовок")
+---------------------------------------------------------------------------------
+
+
+Ниже приведен список полей (свойств), которые будут скопированы:
+
+- заголовок
+- описание
+- дата\_исполнение
+- цвет\_id
+- проект\_id
+- колонка\_id
+- владелец\_id
+- оценка
+- категория\_id
+- время\_запланировано
+- дорожка\_id
+- повторение\_статус
+- повторение\_триггер
+- повторение\_фактор
+- повторение\_timeframe
+- повторение\_basedate
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/editing-projects.markdown b/doc/ru_RU/editing-projects.markdown
new file mode 100644
index 00000000..1ffecb69
--- /dev/null
+++ b/doc/ru_RU/editing-projects.markdown
@@ -0,0 +1,25 @@
+Редактирование проектов
+=======================
+
+
+Проект может быть переименован и выключен в любое время
+
+Для переименования проекта нажмите на ссылку **“Изменить проект”** (для перехода выберите **Меню** -\> **Настройки**)
+
+
+![Project edition](screenshots/project-edition.png)
+
+Изменение проекта.
+
+- Дата начала и дата завершения используются при генерации диаграммы Ганта
+- Описание отображается как подсказка на Доске и на странице со списком проектов
+- Администраторы и менеджеры проекта могут сделать приватный проект доступным для других пользователей установив галочку в чекбоксе **“Приватный проект”**
+- Вы можете сделать публичный проект приватным.
+
+Внимание: Когда вы делаете приватный проект из публичного, все пользователи ранее присоединенные к проекту будут иметь доступ. Ограничьте список пользователей для вашего приватного проекта.
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/email-configuration.markdown b/doc/ru_RU/email-configuration.markdown
new file mode 100644
index 00000000..e04aca7b
--- /dev/null
+++ b/doc/ru_RU/email-configuration.markdown
@@ -0,0 +1,156 @@
+Настройка email
+===============
+
+
+Настройки пользователя[¶](#user-settings "Ссылка на этот заголовок")
+--------------------------------------------------------------------
+
+Для получение уведомлений на email, пользователи Канборда должны иметь:
+
+- Включенные уведомления, должны быть включены в профиле пользователя
+- Должен быть прописан правильный email адрес в профиле пользователя
+- Быть участником проекта, который отсылает уведомления
+
+
+Примечание: Пользователь, выполнивший вход в Канборд и выполняющий действие, не будет получать уведомления. Уведомления будут получать только другие участники проекта.
+
+
+
+Email шлюзы[¶](#email-transports "Ссылка на этот заголовок")
+------------------------------------------------------------
+
+В Канборд доступны несколько шлюзов для email:
+
+- SMTP
+- Sendmail
+- Встроенная mail функция PHP
+- Другие методы могут предоставить внешние плагины: Postmark, Sendgrid and Mailgun
+
+
+Настройки сервера[¶](#server-settings "Ссылка на этот заголовок")
+-----------------------------------------------------------------
+
+По умолчанию, Канборд использует встроенную в PHP функцию для передачи email сообщений. Обычно не требуется дополнительных настроек, если ваш сервер уже может отправлять email сообщения.
+
+Если вы захотите использовать другие методы: SMTP протокол и Sendmail, то ниже приведены инструкции по настройке.
+
+### Настройка SMTP[¶](#smtp-configuration "Ссылка на этот заголовок")
+
+Переименуйте файл `config.default.php`{.docutils .literal} в `config.php`{.docutils .literal} и измените следующие значения:
+
+
+ // We choose "smtp" as mail transport
+
+ define('MAIL_TRANSPORT', 'smtp');
+
+
+
+ // We define our server settings
+
+ define('MAIL_SMTP_HOSTNAME', 'mail.example.com');
+
+ define('MAIL_SMTP_PORT', 25);
+
+
+
+ // Credentials for authentication on the SMTP server (not mandatory)
+
+ define('MAIL_SMTP_USERNAME', 'username');
+
+ define('MAIL_SMTP_PASSWORD', 'super password');
+
+
+
+Возможно понадобится использовать шифрованное подключение TLS или SSL:
+
+
+ define('MAIL_SMTP_ENCRYPTION', 'ssl'); // Valid values are "null", "ssl" or "tls"
+
+
+### Настройка Sendmail[¶](#sendmail-configuration "Ссылка на этот заголовок")
+
+По умолчанию команда отправки сообщений выглядит так `/usr/sbin/sendmail -bs`{.docutils .literal}, но вы можете изменить ее в файле конфигурации.
+
+Например:
+
+
+
+ // We choose "sendmail" as mail transport
+
+ define('MAIL_TRANSPORT', 'sendmail');
+
+
+
+ // If you need to change the sendmail command, replace the value
+
+ define('MAIL_SENDMAIL_COMMAND', '/usr/sbin/sendmail -bs');
+
+
+
+### Встроенная mail функция PHP[¶](#php-native-mail-function "Ссылка на этот заголовок")
+
+Это конфигурация по умолчанию:
+
+
+
+ define('MAIL_TRANSPORT', 'mail');
+
+
+
+### Email адрес отправителя[¶](#the-sender-email-address "Ссылка на этот заголовок")
+
+По умолчанию, сообщения отправляются с адресом отправителя `notifications@kanboard.local`{.docutils .literal}. На этот адрес нельзя ответить.
+
+Вы можете настроить этот адрес изменив значение константы `MAIL_FROM`{.docutils .literal} в вашем конфигурационном файле.
+
+
+ define('MAIL_FROM', 'kanboard@mydomain.tld');
+
+
+Это может быть полезным, если ваш SMTP сервер не принимает неправильные адреса.
+
+
+### Как отобразить ссылку на задачу в уведомлении?[¶](#how-to-display-a-link-to-the-task-in-notifications "Ссылка на этот заголовок")
+
+Чтобы сделать это, вы должны указать URL вашего установленного Канборда в [Настройках приложения](application-configuration.markdown).
+
+Например:
+
+
+
+- [http://demo.kanboard.ru/](http://demo.kanboard.ru/)
+
+
+
+- <http:/>/имясервера/kanboard/
+
+
+
+- [http://kanboard.mydomain.com/](http://kanboard.mydomain.com/)
+
+
+
+Не забудьте добавить в конце слеш `/`{.docutils .literal}.
+
+
+
+Вы должны сделать это вручную, потому что Канборд не может угадать URL из скрипта командной строки и некоторые конфигурации веб серверов очень специфичны.
+
+
+Решение проблем[¶](#troubleshooting "Ссылка на этот заголовок")
+---------------------------------------------------------------
+
+Если email сообщения не отправляются и вы уверены, что все настроили правильно:
+
+- Проверьте папку Спам
+- Включите режим отладки и посмотрите отладочный файл `data/debug.log`{.docutils .literal}, вы можете увидеть конкретную ошибку
+- Убедитесь, что ваш сервер или ваш хостинг провайдер позволяет вам отсылать email сообщения
+- Если вы используете SeLinux, разрешите PHP отсылать email сообщения.
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/env.markdown b/doc/ru_RU/env.markdown
new file mode 100644
index 00000000..3764e98e
--- /dev/null
+++ b/doc/ru_RU/env.markdown
@@ -0,0 +1,21 @@
+Переменные окружения
+====================
+
+Переменные окружения могут пригодится когда Канборд развертывается как контейнер (Docker).
+
+
+| Переменная | Описание |
+|---------|------------------------------------------------------------------|
+| DATABASE\_URL | `[database type]://[username]:[password]@[host]:[port]/[database name]`, например: `postgres://foo:foo@myserver:5432/kanboard` |
+| DEBUG | Включение/выключение режима отладки: “true” или “false” |
+| LOG\_DRIVER | Logging driver: stdout, stderr, file or syslog |
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/ext-search.markdown b/doc/ru_RU/ext-search.markdown
new file mode 100644
index 00000000..45451d5a
--- /dev/null
+++ b/doc/ru_RU/ext-search.markdown
@@ -0,0 +1,235 @@
+Синтаксис расширенного поиска
+=============================
+
+
+В Канборде используется простой язык запросов для расширенного поиска. Вы можете искать задачи, комментарии, подзадачи, ссылки, но только активные.
+
+
+Пример запроса[¶](#example-of-query "Ссылка на этот заголовок")
+---------------------------------------------------------------
+
+
+
+В этом примере показываются как отобразить задачи назначенные мне с датой окончания завтра и название содержит “my title”:
+
+
+
+ assigne:me due:tomorrow my title
+
+
+
+Глобальный поиск[¶](#global-search "Ссылка на этот заголовок")
+--------------------------------------------------------------
+
+
+
+### Поиск по id задачи или названию задачи[¶](#search-by-task-id-or-title "Ссылка на этот заголовок")
+
+- Поиск задачи по id: `#123`
+- Поиск по id задачи и названию задачи: `123`
+- Поиск по названию задачи: `любые слова и цифры`, но не должны содержать атрибуты поиска
+
+
+### Поиск по статусу[¶](#search-by-status "Ссылка на этот заголовок")
+
+Атрибут: **status**
+
+- Запрос на поиск открытых задач: `status:open`
+- Запрос на поиск закрытых задач: `status:closed`
+
+
+
+### Поиск по исполнителю[¶](#search-by-assignee "Ссылка на этот заголовок")
+
+
+Атрибут: **assignee**
+
+- Поиск по полному имени исполнителя: `assignee:"Петр Иванов"`
+- Поиск исполнителя по имени пользователя: `assignee:pivanov`
+- Отбор нескольких исполнителей: `assignee:tsemenov assignee:"Петр Иванов"`
+- Поиск задач без исполнителя: `assignee:nobody`
+- Поиск задач назначенных мне: `assignee:me`
+
+
+### Поиск по создателю задач[¶](#search-by-task-creator "Ссылка на этот заголовок")
+
+
+Атрибут: **creator**
+
+- Отбор задач созданных мной: `creator:me`
+- Отбор задач которые создал Петр Иванов: `creator:"Петр Иванов"`
+- Отбор задач созданных пользователем с id \#1: `creator:1`
+
+
+### Поиск по исполнителю подзадач[¶](#search-by-subtask-assignee "Ссылка на этот заголовок")
+
+Атрибут: **subtask:assignee**
+
+- Например: `subtask:assignee:"Петр Иванов"`
+
+
+### Поиск по цвету[¶](#search-by-color "Ссылка на этот заголовок")
+
+Атрибут: **color**
+
+- Отбор по цвету с id blue: `color:blue`
+- Отбор по названию цвета: `color:"Deep Orange"`
+
+
+### Отбор по “Сделать до”[¶](#search-by-the-due-date "Ссылка на этот заголовок")
+
+
+Атрибут: **due**
+
+- Поиск задач со сроком исполнения до сегодня: `due:today`
+- Поиск задач со сроком исполнения завтра: `due:tomorrow`
+- Поиск задач со сроком исполнения вчера: `due:yesterday`
+- Поиск задач с конкретной датой исполнения: `due:2016-06-29`
+
+Дата должна быть в формате ISO 8601: **YYYY-MM-DD**.
+
+Все строковые форматы поддерживаемые функцией `strtotime()` допустимы. Например, `next Thursday`, `-2 days`{.docutils .literal}, `+2 months`, `tomorrow` и т.д.
+
+
+Операторы сравнения с датой:
+
+- Старше чем: **due:\>2015-06-29**
+- Моложе чем: **due:\<2015-06-29**
+- Старше чем или равно: **due:\>=2015-06-29**
+- Моложе чем или равно: **due:\<=2015-06-29**
+
+
+### Поиск по дате изменения[¶](#search-by-modification-date "Ссылка на этот заголовок")
+
+Атрибут: **modified** или **updated**
+
+Формат даты такой же как и у “Сделать до”
+
+Отфильтровать недавно измененные задачи: `modified:recently`.
+
+Этот запрос использует тоже значение что и в настройках Доски - “Время подсвечивания задачи”.
+
+
+### Поиск по дате создания[¶](#search-by-creation-date "Ссылка на этот заголовок")
+
+Атрибут: **created**
+
+Работает также как и поиск по дате изменения.
+
+
+### Поиск по описанию[¶](#search-by-description "Ссылка на этот заголовок")
+
+Атрибут: **description** or **desc**
+
+Например: `description:"здесь пишем тескт для поиска"`
+
+
+### Поиск по внешним ссылкам[¶](#search-by-external-reference "Ссылка на этот заголовок")
+
+Например: нужно найти задачу, которая содержит ссылку на id или название другой задачи.
+
+- `ref:1234` или `reference:TICKET-1234`
+
+
+### Поиск по категории[¶](#search-by-category "Ссылка на этот заголовок")
+
+Атрибут: **category**
+
+- Найти задачи с указанной категорией: `category:"Важные запросы"`
+- Найти задачи, которые содержать указанные категории: `category:"Ошибки" category:"Изменения"`
+- Найти задачи без категорий: `category:none`
+
+
+### Поиск проектов[¶](#search-by-project "Ссылка на этот заголовок")
+
+Атрибут: **project**
+
+- Поиск задач по имени проекта: `project:"Какой-то проект"`
+- Поиск задач по id проекта: `project:23`
+- Поиск задач в нескольких проектах: `project:"Проект A" project:"Проект B"`
+
+
+### Поиск в колонках[¶](#search-by-columns "Ссылка на этот заголовок")
+
+Атрибут: **column**
+
+- Поиск задач в указанной колонке: `column:"В работе"`
+- Поиск задач в нескольких колонках: `column:"Невыполненные заказы" column:ready`
+
+
+### Поиск в Дорожках[¶](#search-by-swim-lane "Ссылка на этот заголовок")
+
+Атрибут: **swimlane**
+
+- Поиск задач в указанной Дорожке: `swimlane:"Версия 42"`
+- Поиск задач в базовой Дорожке: `swimlane:default`
+- Поиск задач в нескольких Дорожках: `swimlane:"Версия 1.2" swimlane:"Версия 1.3"`
+
+
+### Поиск ссылки на задачу[¶](#search-by-task-link "Ссылка на этот заголовок")
+
+Атрибут: **link**
+
+- Поиск задач содержащих ссылку: `link:"это веха задачи "`
+- Поиск задач по нескольким ссылкам: `link:"веха задачи " link:"относится к"`
+
+
+### Поиск по комментарию[¶](#search-by-comment "Ссылка на этот заголовок")
+
+Атрибут: **comment**
+
+- Найти комментарии, которые содержат указанное название: `comment:"Какое-то название"`
+
+
+Поиск активности задач[¶](#activity-stream-search "Ссылка на этот заголовок")
+-----------------------------------------------------------------------------
+
+
+
+### Поиск событий по названию задачи[¶](#search-events-by-task-title "Ссылка на этот заголовок")
+
+
+
+Атрибут: **title** или без ничего (по умолчанию)
+
+- Например: `title:"My task"`
+- Поиск задачи по id: `#123`
+
+
+### Поиск событий по статусу задачи[¶](#search-events-by-task-status "Ссылка на этот заголовок")
+
+Атрибут: **status**
+
+
+
+### Поиск событий по создателю[¶](#search-by-event-creator "Ссылка на этот заголовок")
+
+Атрибут: **creator**
+
+
+
+### Поиск событий по дате создания[¶](#search-by-event-creation-date "Ссылка на этот заголовок")
+
+Атрибут: **created**
+
+
+
+### Поиск событий по проекту[¶](#search-events-by-project "Ссылка на этот заголовок")
+
+Атрибут: **project**
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/faq.markdown b/doc/ru_RU/faq.markdown
new file mode 100644
index 00000000..0730f2c8
--- /dev/null
+++ b/doc/ru_RU/faq.markdown
@@ -0,0 +1,162 @@
+Часто задаваемые вопросы
+========================
+
+
+Вы можете порекомендовать веб хостинг провайдера для Канборд?[¶](#can-you-recommend-a-web-hosting-provider-for-kanboard "Ссылка на этот заголовок")
+---------------------------------------------------------------------------------------------------------------------------------------------------
+
+Работу Канборд поддерживают несколько крупных провайдеров VPS, такие как [Digital Ocean](https://www.digitalocean.com/?refcode=4b541f47aae4), [Linode](https://www.linode.com/?r=4e381ac8a61116f40c60dc7438acc719610d8b11) или [Gandi](https://www.gandi.net/).
+
+Для получения большей производительности, выбирайте провайдера с быстрыми дисками чтения/записи, потому что Канборд использует по умолчанию Sqlite. Избегайте провайдеров которые используют подключения NFS.
+
+
+У меня выводится пустая страница после установки или обновления Канборд[¶](#i-get-a-blank-page-after-installing-or-upgrading-kanboard "Ссылка на этот заголовок")
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+- Проверьте, установили ли вы всё на сервер, что было указано в требованиях
+- Посмотрите ошибки в PHP и Apache логах
+- Проверьте права доступа к файлам
+- Если вы используете кеширование OPcode, перезапустите ваш веб сервер или php-fpm
+
+
+У меня выводится ошибка “There is no suitable CSPRNG installed on your system”[¶](#i-have-the-error-there-is-no-suitable-csprng-installed-on-your-system "Ссылка на этот заголовок")
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+Если вы используете PHP \< 7.0, то вам нужно включить расширение openssl или доступ из приложения к `/dev/urandom`, если имеются ограничения от `open_basedir`.
+
+
+Страница не найдена и URL выглядит криво (&amp;)[¶](#page-not-found-and-the-url-seems-wrong-amp "Ссылка на этот заголовок")
+---------------------------------------------------------------------------------------------------------------------------
+
+- UTL выглядит как `/?controller=auth&amp;action=login&amp;redirect_query=` вместо `?controller=auth&action=login&redirect_query=`
+- Канборд выдает ошибку “Страница не найдена”
+
+
+Эта ошибка исходит из настроек конфигурации вашего PHP, значение `arg_separator.output` отсутствует в базовой настройке. Есть разные пути решения этой проблемы:
+
+Измените значение прямо в вашем `php.ini`:
+
+
+ arg_separator.output = "&"
+
+
+Переделайте значение с помощью `.htaccess`:
+
+
+ php_value arg_separator.output "&"
+
+
+Иначе Канборд будет брать значение напрямую из PHP.
+
+
+
+Ошибка аутентификации в API и Apache + PHP-FPM[¶](#authentication-failure-with-the-api-and-apache-php-fpm "Ссылка на этот заголовок")
+-------------------------------------------------------------------------------------------------------------------------------------
+
+По умолчанию, php-cgi под Apache не передает HTTP Basic user/pass в PHP. Чтобы это окружение заработало, добавьте эти строки в ваш файл `.htaccess`:
+
+
+
+ RewriteCond %{HTTP:Authorization} ^(.+)$
+
+ RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
+
+
+
+Проблемы с eAccelerator[¶](#known-issues-with-eaccelerator "Ссылка на этот заголовок")
+--------------------------------------------------------------------------------------
+
+Канборд не очень хорошо работает с [eAccelerator](http://eaccelerator.net). Проблема в том, что выдается чистая страница или падает Apache:
+
+
+ [Wed Mar 05 21:36:56 2014] [notice] child pid 22630 exit signal Segmentation fault (11)
+
+
+Лучшее решение, чтобы избежать этой проблемы, выключить eAccelerator или прописать в конфиге какие файлы вы хотите кешировать (параметр `eaccelerator.filter`).
+
+
+
+Проект [eAccelerator выглядит мертвым и не обновляется с 2012](https://github.com/eaccelerator/eaccelerator/commits/master). Мы рекомендуем перейти на последнюю версию PHP, потому что в него включен [OPcache](http://php.net/manual/en/intro.opcache.php).
+
+
+Почему минимальная рекомендуемая версия PHP 5.3.3?[¶](#why-the-minimum-requirement-is-php-5-3-3 "Ссылка на этот заголовок")
+---------------------------------------------------------------------------------------------------------------------------
+
+Канборд использует функцию `password_hash()` для шифрования пароля, а эта функция доступна только для PHP \>= 5.5.
+
+Однако, имеется back-port для [более ранних версий PHP](https://github.com/ircmaxell/password_compat#requirements). Эта библиотека требует минимум PHP 5.3.7 для корректной работы.
+
+По всей видимости, патчи безопасности back-port имеются в Centos и Debian, поэтому PHP 5.3.3 подходит для работы Канборд.
+
+Канборд v1.0.10 и v1.0.11 требует минимум PHP 5.3.7, но эти изменения возвращены на PHP 5.3.3 в Канборде \>= v1.0.12
+
+
+
+Как проверить работу Канборда со встроенным веб-сервером PHP?[¶](#how-to-test-kanboard-with-the-php-built-in-web-server "Ссылка на этот заголовок")
+---------------------------------------------------------------------------------------------------------------------------------------------------
+
+Если вы не хотите устанавливать веб сервер типа Apache, то вы можете протестировать работу Канборда на [встроенном в PHP веб сервере](http://www.php.net/manual/en/features.commandline.webserver.php):
+
+
+ unzip kanboard-VERSION.zip
+
+ cd kanboard
+
+ php -S localhost:8000
+
+ open http://localhost:8000/
+
+
+
+Как установить Канборд на Yunohost?[¶](#how-to-install-kanboard-on-yunohost "Ссылка на этот заголовок")
+-------------------------------------------------------------------------------------------------------
+
+[YunoHost](https://yunohost.org/) это серверная операционная система, цель которой предоставить хостинг для всех.
+
+Отсюда можно [загрузить инсталяционный пакет Kanboard для Yunohost](https://github.com/mbugeia/kanboard_ynh).
+
+
+Где я могу найти список связанных с Канборд проектов?[¶](#where-can-i-find-a-list-of-related-projects "Ссылка на этот заголовок")
+---------------------------------------------------------------------------------------------------------------------------------
+
+- [Kanboard API python client by @freekoder]([https://github.com/freekoder/kanboard-py](https://github.com/freekoder/kanboard-py))
+
+- [Kanboard Presenter by David Eberlein](https://github.com/davideberlein/kanboard-presenter)
+
+- [CSV2Kanboard by @ashbike]([https://github.com/ashbike/csv2kanboard](https://github.com/ashbike/csv2kanboard))
+
+- [Kanboard for Yunohost by @mbugeia]([https://github.com/mbugeia/kanboard\_ynh](https://github.com/mbugeia/kanboard_ynh))
+
+- [Trello import script by @matueranet]([https://github.com/matueranet/kanboard-import-trello](https://github.com/matueranet/kanboard-import-trello))
+
+- [Chrome extension by Timo](https://chrome.google.com/webstore/detail/kanboard-quickmenu/akjbeplnnihghabpgcfmfhfmifjljneh?utm_source=chrome-ntp-icon), [Source code](https://github.com/BlueTeck/kanboard_chrome_extension)
+
+- [Python client script by @dzudek]([https://gist.github.com/fguillot/84c70d4928eb1e0cb374](https://gist.github.com/fguillot/84c70d4928eb1e0cb374))
+
+- [Shell script for SQLite to MySQL/MariaDB migration by @oliviermaridat]([https://github.com/oliviermaridat/kanboard-sqlite2mysql](https://github.com/oliviermaridat/kanboard-sqlite2mysql))
+
+- [Git hooks for integration with Kanboard by Gene Pavlovsky](https://github.com/gene-pavlovsky/kanboard-git-hooks)
+
+
+
+Имеются ли руководства по Канборду на других языках?[¶](#are-there-some-tutorials-about-kanboard-in-other-languages "Ссылка на этот заголовок")
+-----------------------------------------------------------------------------------------------------------------------------------------------
+
+- [Серия статей про Kanboard на немецком языке](http://demaya.de/wp/2014/07/kanboard-eine-jira-alternative-im-detail-installation/) .
+- [Русская документация по Канборд](http://kanboard.ru/doc/).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/freebsd-installation.markdown b/doc/ru_RU/freebsd-installation.markdown
new file mode 100644
index 00000000..b014e354
--- /dev/null
+++ b/doc/ru_RU/freebsd-installation.markdown
@@ -0,0 +1,187 @@
+Инсталяция на FreeBSD 10
+========================
+
+
+Инсталяция из пакетов[¶](#install-from-packages "Ссылка на этот заголовок")
+---------------------------------------------------------------------------
+
+ $ pkg update
+
+ $ pkg upgrade
+
+ $ pkg install apache24 mod_php56 kanboard
+
+
+
+Включите Apache в `/etc/rc.conf`{.docutils .literal}:
+
+
+
+ $ echo apache24_enable="YES" >> /etc/rc.conf
+
+
+
+Установите PHP для Apache:
+
+
+
+ $ echo "AddType application/x-httpd-php .php" >> /usr/local/etc/apache24/Includes/php.conf
+
+ $ echo "DirectoryIndex index.php index.html" >> /usr/local/etc/apache24/Includes/php.conf
+
+
+
+Затем, запустите Apache:
+
+
+
+ $ service apache24 start
+
+
+
+Создайте символическую ссылку на каталог Kanboard в корне Apache:
+
+
+
+ cd /usr/local/www/apache24/data
+
+ ln -s /usr/local/www/kanboard
+
+
+
+Готово. Можете перейти в <http:/>/вашвебсервер/kanboard и начинать работать!
+
+
+
+*Примечание*: Если вы хотите добавить дополнительные возможности, типа интеграции LDAP, то нужно установить соответствующий PHP модуль. Также, вам необходимо настроить соответсвующие права на каталог data.
+
+
+
+Установка из портов[¶](#installing-from-ports "Ссылка на этот заголовок")
+-------------------------------------------------------------------------
+
+
+Нужно установить 3 основных элемента:
+
+
+
+- Apache
+
+- mod\_php for Apache
+
+- Kanboard
+
+
+
+Загрузите и распакуйте порты:
+
+
+
+ $ portsnap fetch
+
+ $ portsnap extract
+
+
+
+или обновите имеющиеся:
+
+
+
+ $ portsnap fetch
+
+ $ portsnap update
+
+
+
+Дополнительную информацию о дереве портов вы можете посмотреть на [FreeBSD Handbook](https://www.freebsd.org/doc/handbook/ports-using.html).
+
+
+
+Установка Apache:
+
+
+
+ $ cd /usr/ports/www/apache24
+
+ $ make install clean
+
+
+
+Включите Apache в `/etc/rc.conf`{.docutils .literal}:
+
+
+
+ $ echo apache24_enable="YES" >> /etc/rc.conf
+
+
+
+Установите mod\_php для Apache:
+
+
+
+ $ cd /usr/ports/www/mod_php5
+
+ $ make install clean
+
+
+
+Установите Kanboard из портов:
+
+
+
+ $ cd /usr/ports/www/kanboard
+
+ $ make install clean
+
+
+
+Установите PHP для Apache:
+
+
+
+ $ echo "AddType application/x-httpd-php .php" >> /usr/local/etc/apache24/Includes/php.conf
+
+ $ echo "DirectoryIndex index.php index.html" >> /usr/local/etc/apache24/Includes/php.conf
+
+
+
+Затем, запустите Apache:
+
+
+
+ $ service apache24 start
+
+
+
+Готово. Можете перейти в <http:/>/вашвебсервер/kanboard и начинать работать!
+
+
+
+*Примечание*: Если вы хотите использовать дополнительные возможности, типа интеграции LDAP, то нужно установить PHP модуль из `lang/php5-extensions`{.docutils .literal}.
+
+
+
+Установка из архива[¶](#manual-installation "Ссылка на этот заголовок")
+-----------------------------------------------------------------------
+
+Начина с версии 1.0.16 Kanboard имеется в портах FreeBSD, поэтому нет необходимости устанавливать вручную.
+
+
+
+Обратите внимание[¶](#please-note "Ссылка на этот заголовок")
+-------------------------------------------------------------
+
+- Порт расположен на хостинге [bitbucket](https://bitbucket.org/if0/freebsd-kanboard/). Делайте комментарии, ответвления и предлагайте обновления!
+- Некоторые возможности Канборд требуют [запуск ежедневных фоновых задач](cronjob.markdown).
+
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/gantt-chart-projects.markdown b/doc/ru_RU/gantt-chart-projects.markdown
new file mode 100644
index 00000000..8d42bd4f
--- /dev/null
+++ b/doc/ru_RU/gantt-chart-projects.markdown
@@ -0,0 +1,60 @@
+Диаграмма Ганта для всех проектов
+=================================
+
+
+
+Цель диаграммы Ганта для проектов - показать прогресс проектов основанный на дате начала и дате завершения.
+
+
+
+- Диаграмма Ганта для проектов доступна из раздела **Управление проектами**
+
+
+
+- Только менеджеры проекта и администраторы имеют доступ в этот раздел
+
+
+
+- Менеджеры проекта могут видеть только те проекты, в которых они являются участниками
+
+
+
+- Приватные проекты не показывают этот график
+
+
+
+![Gantt Chart for all projects](screenshots/gantt-chart-all-projects.png)
+
+Диаграмма Ганта для всех проектов
+
+
+
+- **Дата начала** и **дата завершения** проекта используются для рисования графика
+
+
+
+- Горизонтальные полосы (столбики) могут быть расширены (сжаты) и перемещены горизонтально с помощью мыши
+
+
+
+- Перемещение по вертикали невозможно
+
+
+
+- Полосы (столбики) проекта отображаются черным, когда проект не имеет дату начала и завершения
+
+
+
+- Информационная подсказка показывает список менеджеров и участников проекта
+
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/gantt-chart-tasks.markdown b/doc/ru_RU/gantt-chart-tasks.markdown
new file mode 100644
index 00000000..050010be
--- /dev/null
+++ b/doc/ru_RU/gantt-chart-tasks.markdown
@@ -0,0 +1,66 @@
+Диаграмма Ганта для задач
+=========================
+
+
+
+Цель диаграммы Ганта - показать время отведенное на задачу в заданном проекте.
+
+
+
+- Диаграмма Ганта доступна в рабочем окружении проекта
+
+
+
+- Только менеджеры проектов могут иметь доступ в этот раздел
+
+
+
+![Gantt Chart](screenshots/gantt-chart-project.png)
+
+Диаграмма Ганта.
+
+
+
+- Дата начала и дата завершения задач используется для рисования диаграммы
+
+
+
+- Задача может быть расширена и перемещена горизонтально с помощью мыши
+
+
+
+- Перемещение по вертикали невозможно
+
+
+
+- Полоса (горизонтальный столбик) на диаграмме имеет такой же цвет как и задача
+
+
+
+- Каждая полоса отображает статус прогресса в процентах. Проценты подсчитываются с учетом позиции задачи в колонке на Доске.
+
+
+
+- Для соответсвия модели Kanban, задачи могут быть отсортированы в соответствии с позициями на доске или по дате начала
+
+
+
+- Новые задачи созданные через диаграмму Ганта будут показаны на Доске в первой колонке на первой позиции
+
+
+
+- Задачи отображаются черным цветом, если не указана дата начала или дата исполнения
+
+
+
+![Task not defined](screenshots/gantt-chart-not-defined.png)
+
+Задача без указанных дат начала или завершения
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/genindex.markdown b/doc/ru_RU/genindex.markdown
new file mode 100644
index 00000000..ceb48d17
--- /dev/null
+++ b/doc/ru_RU/genindex.markdown
@@ -0,0 +1,15 @@
+Алфавитный указатель
+====================
+
+
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/groups.markdown b/doc/ru_RU/groups.markdown
new file mode 100644
index 00000000..b73a876f
--- /dev/null
+++ b/doc/ru_RU/groups.markdown
@@ -0,0 +1,35 @@
+Управление группами
+===================
+
+
+
+В Канборде каждый пользователь может быть членом одной или нескольких групп. Группа - это что-то вроде команды или организации.
+
+
+
+Только администраторы могут создавать новую группу и добавлять туда пользователей.
+
+
+
+Настройка групп доступна через **Управление пользователями** (выпадающее меню справа вверху) -\> **Просмотр всех пользователей**. Здесь вы можете создавать новые группы и добавлять пользователей в группы.
+
+
+
+![Group Management](screenshots/groups-management.png)
+
+Управление группами.
+
+
+
+Менеджеры проектов могут предоставлять доступ группам к проектам на [странице Разрешения проекта](project-permissions.markdown).
+
+
+
+Внешние id в основном используются для предоставления доступа внешним группам. Канборд поддерживает группы из LDAP посредством [автоматической синхронизации групп из LDAP сервера](ldap-group-sync.markdown).
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/heroku.markdown b/doc/ru_RU/heroku.markdown
new file mode 100644
index 00000000..6e2bd945
--- /dev/null
+++ b/doc/ru_RU/heroku.markdown
@@ -0,0 +1,72 @@
+Развертывание Канборд на Heroku
+===============================
+
+Вы можете бесплатно испытать работу Kanboard на [Heroku](https://www.heroku.com/). Вам нужно нажать кнопку **Deploy to Heroku** и следовать руководству приведенному ниже:
+
+[![Deploy](https://www.herokucdn.com/deploy/button.png)](https://heroku.com/deploy?template=https://github.com/fguillot/kanboard)
+
+
+
+Требования[¶](#requirements "Ссылка на этот заголовок")
+-------------------------------------------------------
+
+
+
+- Учетная запись на Heroku. Вы можете зарегистрироваться бесплатно.
+- Установленная утилита командной строки Heroku
+
+
+
+Руководство по установке[¶](#manual-instructions "Ссылка на этот заголовок")
+----------------------------------------------------------------------------
+
+
+ # Get the last development version
+
+ git clone https://github.com/fguillot/kanboard.git
+
+ cd kanboard
+
+
+
+ # Push the code to Heroku (You can also use SSH if git over HTTP doesn't work)
+
+ heroku create
+
+ git push heroku master
+
+
+
+ # Start a new dyno with a Postgresql database
+
+ heroku ps:scale web=1
+
+ heroku addons:add heroku-postgresql:hobby-dev
+
+
+
+ # Open your browser
+
+ heroku open
+
+
+
+Ограничения[¶](#limitations "Ссылка на этот заголовок")
+-------------------------------------------------------
+
+- Хранилище на Heroku эфимерное. Это означает, что файлы, загружаемые через Канборд, будут отсутствовать в системе после перезагрузки. Вы можете установить плагин для хранения файлов в облаке, например [Amazon S3](https://github.com/kanboard/plugin-s3).
+- Некоторые возможности Канборда требуют, чтобы вы выполняли [запуск ежедневных фоновых задач](cronjob.markdown).
+
+
+
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/ical.markdown b/doc/ru_RU/ical.markdown
new file mode 100644
index 00000000..3ccbf951
--- /dev/null
+++ b/doc/ru_RU/ical.markdown
@@ -0,0 +1,111 @@
+Синхронизация вашего календаря
+==============================
+
+
+Канборд поддерживает iCal транслятор для проектов и пользователей. Эта возможность позволяет вам импортировать задачи из Канборд в любую программу календарь (например, Microsoft Outlook, Apple Calendar, Mozilla Thunderbird и Google Calendar).
+
+Подписки на календарь возможны только на **чтение**, т.е. вы не можете создавать задачи во внешнем календаре. Данные из Календаря экспортируются в стандарте iCal.
+
+Заметка: Только задачи в промежутке от -2 месяцев до +6 месяцев (прошедшие два месяца и предстоящие 6 месяцев) экспортируются в iCalendar транслятор.
+
+
+Календарь проекта[¶](#project-calendars "Ссылка на этот заголовок")
+-------------------------------------------------------------------
+
+- Каждый проект имеет свой календарь.
+- Ссылка на подписку уникальна для каждого проекта. Ссылка становится активной, когда вы включаете общий доступ к вашему проекту: **Меню** -\> **Настройки** -\> **Общий доступ**
+- Этот календарь показывает только задачи для выбранного проекта.
+
+
+Календарь пользователя[¶](#user-calendars "Ссылка на этот заголовок")
+---------------------------------------------------------------------
+
+- Каждый пользователь имеет свой собственный календарь.
+- Ссылка на подписку уникальная для каждого пользователя. Ссылка становится активной, когда вы включите общий доступ для пользователя: в правом верхнем выпадающем меню - **Мой профиль** -\> в левом меню - **Общий доступ**.
+- Этот календарь показывает задачи назначенные пользователю во всех проектах.
+
+
+Добавление Канборд календаря в календарь Apple[¶](#adding-your-kanboard-calendar-to-apple-calendar "Ссылка на этот заголовок")
+------------------------------------------------------------------------------------------------------------------------------
+
+- Откройте календарь
+- Выберите **Файл** -\> **Новая подписка на календарь**
+- Скопируйте в Канборд URL ссылку на iCal транслятор и вставьте
+
+![Add iCal subscription](screenshots/apple-calendar-add-subscription.png)
+
+Добавление подписки на календарь.
+
+
+- Вы можете выбрать синхронизацию календаря с iCloud, чтобы иметь доступ к календарю с любых ваших устройств
+- Не забудьте указать частоту синхронизации
+
+
+![Edit iCal subscription](screenshots/apple-calendar-edit-subscription.png)
+
+Редактирование подписки на календарь.
+
+
+Добавление вашего календаря из Канборд в Microsoft Outlook[¶](#adding-your-kanboard-calendar-to-microsoft-outlook "Ссылка на этот заголовок")
+---------------------------------------------------------------------------------------------------------------------------------------------
+
+![Outlook Add Internet Calendar](screenshots/outlook-add-subscription.png)
+
+Добавление в Outlook календаря из интернет
+
+- Откройте Outlook
+- Выберите **Открыть календарь** -\> **Из интернета**
+- Скопируйте в Канборд URL ссылку на iCal транслятор и вставьте
+
+
+![Outlook Edit Internet Calendar](screenshots/outlook-edit-subscription.png)
+
+Настройка интернет календаря в Outlook.
+
+
+Добавление вашего календаря из Канборд в Mozilla Thunderbird[¶](#adding-your-kanboard-calendar-to-mozilla-thunderbird "Ссылка на этот заголовок")
+-------------------------------------------------------------------------------------------------------------------------------------------------
+
+
+- Установите в Thunderbird Дополнение **Lightning**
+- Выберите **Файл** -\> **Новый календарь**
+- В диалоговом окне, выберите **Из сети**
+
+![Thunderbird Step 1](screenshots/thunderbird-new-calendar-step1.png)
+
+Создание календаря в Thunderbird, шаг 1.
+
+
+
+- Выберите формат iCalendar
+- Скопируйте в Канборд URL ссылку на iCal транслятор и вставьте
+
+![Thunderbird Step 2](screenshots/thunderbird-new-calendar-step2.png)
+
+Создание календаря в Thunderbird, шаг 2.
+
+- Выберите цвета и другие настройки и в завершении нажмите **Сохранить**.
+
+
+Добавление вашего календаря Канборд в календарь Google[¶](#adding-your-kanboard-calendar-to-google-calendar "Ссылка на этот заголовок")
+---------------------------------------------------------------------------------------------------------------------------------------
+
+- Нажмите иконку “треугольник” рядом с **Другие календари** (слева).
+- Вставьте ссылку на календарь из Канборд в поле “Добавить календарь друга”
+- Скопируйте в Канборд URL ссылку на iCal транслятор и вставьте
+
+
+![Google Calendar](screenshots/google-calendar-add-subscription.png)
+
+Календарь Google.
+
+Ваш календарь из Канборд будет доступен на планшетах и смартфонах, нужно только сделать синхронизацию.
+
+
+[Справка по настройке календаря Google](https://support.google.com/calendar/?hl=ru#topic=3417969).
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/index.markdown b/doc/ru_RU/index.markdown
new file mode 100644
index 00000000..88467206
--- /dev/null
+++ b/doc/ru_RU/index.markdown
@@ -0,0 +1,247 @@
+Документация
+============
+
+
+Как работать в Kanboard[¶](#using-kanboard "Ссылка на этот заголовок")
+----------------------------------------------------------------------
+
+
+### Введение[¶](#introduction "Ссылка на этот заголовок")
+
+
+- [Что такое Kanban?](what-is-kanban.markdown)
+
+- [Kanban против Todo списков и Scrum](kanban-vs-todo-and-scrum.markdown)
+
+- [Где можно использовать Kanboard](usage-examples.markdown)
+
+
+### Использование доски[¶](#using-the-board "Ссылка на этот заголовок")
+
+
+- [Доска, Календарь, Список и Гант представления](project-views.markdown)
+
+- [Компактное или развернутое отображение задач](board-collapsed-expanded.markdown)
+
+- [Горизонтальная прокрутка и компактный вид](board-horizontal-scrolling-and-compact-view.markdown)
+
+- [Отображение и скрытие колонок](board-show-hide-columns.markdown)
+
+
+### Работа с проектами[¶](#working-with-projects "Ссылка на этот заголовок")
+
+- [Типы проектов](project-types.markdown)
+
+- [Создание проектов](creating-projects.markdown)
+
+- [Редактирование проектов](editing-projects.markdown)
+
+- [Публичные доски и задачи](sharing-projects.markdown)
+
+- [Автоматизация процессов](automatic-actions.markdown)
+
+- [Права доступа к проекту](project-permissions.markdown)
+
+- [Дорожки](swimlanes.markdown)
+
+- [Календарь](calendar.markdown)
+
+- [Аналитика](analytics.markdown)
+
+- [Диаграмма Ганта для задач](gantt-chart-tasks.markdown)
+
+- [Диаграмма Ганта для проектов](gantt-chart-projects.markdown)
+
+- [Пользовательские фильтры](custom-filters.markdown)
+
+
+
+### Работа с задачами[¶](#working-with-tasks "Ссылка на этот заголовок")
+
+- [Создание задач](creating-tasks.markdown)
+
+- [Закрытие задач](closing-tasks.markdown)
+
+- [Дублирование и перенос задач](duplicate-move-tasks.markdown)
+
+- [Добавление снимка экрана](screenshots.markdown)
+
+- [Ссылки на задачу](task-links.markdown)
+
+- [Перемещения](transitions.markdown)
+
+- [Отслеживание времени](time-tracking.markdown)
+
+- [Повторяющиеся задачи](recurring-tasks.markdown)
+
+- [Создание задач через email](create-tasks-by-email.markdown)
+
+- [Подзадачи](subtasks.markdown)
+
+- [Аналитика для задач](analytics-tasks.markdown)
+
+- [Ссылка на пользователя](user-mentions.markdown)
+
+
+
+### Работа с пользователями и группами[¶](#working-with-users-and-groups "Ссылка на этот заголовок")
+
+- [Роли](roles.markdown)
+
+- [Типы пользователей](user-types.markdown)
+
+- [Управление группами](groups.markdown)
+
+- [Управление пользователями](user-management.markdown)
+
+- [Уведомления](notifications.markdown)
+
+- [Двухуровневая аутентификация](2fa.markdown)
+
+
+
+### Настройки[¶](#settings "Ссылка на этот заголовок")
+
+- [Горячие клавиши](keyboard-shortcuts.markdown)
+
+- [Настройки приложения](application-configuration.markdown)
+
+- [Настройки проекта](project-configuration.markdown)
+
+- [Настройка Доски](board-configuration.markdown)
+
+- [Настройки календаря](calendar-configuration.markdown)
+
+- [Настройка ссылок](link-labels.markdown)
+
+- [Курсы валют](currency-rate.markdown)
+
+
+### Встроенные возможности[¶](#integrations "Ссылка на этот заголовок")
+
+- [iCalendar подписки](ical.markdown)
+
+- [RSS/Atom подписки](rss.markdown)
+
+- [Json-RPC API](api-json-rpc.markdown)
+
+- [Webhooks](webhooks.markdown)
+
+- [Плагины](plugins.markdown)
+
+
+### Дополнительно[¶](#more "Ссылка на этот заголовок")
+
+- [Синтаксис расширенного поиска](ext-search.markdown)
+
+- [Интерфейс командной строки](cli.markdown)
+
+- [Руководство по синтаксису](syntax-guide.markdown)
+
+- [Защита от Brute force](bruteforce-protection.markdown)
+
+- [Часто задаваемые вопросы](faq.markdown)
+
+
+
+Технические детали[¶](#technical-details "Ссылка на этот заголовок")
+--------------------------------------------------------------------
+
+
+### Инсталяция[¶](#installation "Ссылка на этот заголовок")
+
+- [Требования](requirements.markdown)
+
+- [Инструкция по инсталяции](installation.markdown)
+
+- [Обновление Kanboard до новой версии](update.markdown)
+
+- [Инсталяция на Ubuntu](ubuntu-installation.markdown)
+
+- [Инсталяция на Debian](debian-installation.markdown)
+
+- [Инсталяция на Centos](centos-installation.markdown)
+
+- [Инсталяция на OpenSuse](suse-installation.markdown)
+
+- [Инсталяция на FreeBSD](freebsd-installation.markdown)
+
+- [Инсталяция на Windows Server и IIS](windows-iis-installation.markdown)
+
+- [Инсталяция на Windows Server и Apache](windows-apache-installation.markdown)
+
+- [Инсталяция на Heroku](heroku.markdown)
+
+- [Запуск Kanboard под Docker](docker.markdown)
+
+- [Запуск Kanboard под Vagrant](vagrant.markdown)
+
+- [Запуск Kanboard на Cloudron](cloudron.markdown)
+
+
+
+### Настройка[¶](#configuration "Ссылка на этот заголовок")
+
+- [Ежедневные фоновые задачи](cronjob.markdown)
+
+- [Конфигурационный файл](config.markdown)
+
+- [Переменные окружения](env.markdown)
+
+- [Настройка email](email-configuration.markdown)
+
+- [Переопределение URL](nice-urls.markdown)
+
+- [Директория плагинов](plugin-directory.markdown)
+
+
+
+### База данных[¶](#database "Ссылка на этот заголовок")
+
+- [База данных Sqlite](sqlite-database.markdown)
+
+- [Как использовать Mysql](mysql-configuration.markdown)
+
+- [Как использовать Postgresql](postgresql-configuration.markdown)
+
+
+### Аутентификация[¶](#authentication "Ссылка на этот заголовок")
+
+- [LDAP аутентификация](ldap-authentication.markdown)
+
+- [Синхронизация групп LDAP](ldap-group-sync.markdown)
+
+- [Изображения из профиля LDAP](ldap-profile-picture.markdown)
+
+- [Параметры LDAP](ldap-parameters.markdown)
+
+- [Пример конфигурации LDAP](ldap-configuration-examples.markdown)
+
+- [Аутентификация Reverse proxy](reverse-proxy-authentication.markdown)
+
+
+### Участие в проекте[¶](#contributors "Ссылка на этот заголовок")
+
+- [Руководство для участников проекта](contributing.markdown)
+
+- [Переводы на другие языки](translations.markdown)
+
+- [Стандарты при написании кода](coding-standards.markdown)
+
+- [Выполнение тестов](tests.markdown)
+
+- [Создание assets](assets.markdown)
+
+
+[Документация](https://github.com/fguillot/kanboard/tree/master/doc) написана в формате [Markdown](https://ru.wikipedia.org/wiki/Markdown). Если вы желаете улучшить документацию - пошлите pull-request.
+
+
+
+* [Проект перевода документации Канборд на русский язык](https://github.com/hairetdin/kanboard-doc-ru). [Русская документация Канборд в формате html](http://kanboard.ru/doc/).
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/installation.markdown b/doc/ru_RU/installation.markdown
new file mode 100644
index 00000000..ff989b19
--- /dev/null
+++ b/doc/ru_RU/installation.markdown
@@ -0,0 +1,118 @@
+Инсталяция
+==========
+
+
+
+В первую очередь, ознакомтесь с [требованиями](requirements.markdown).
+
+
+
+Инсталяция из архива (стабильная версия)[¶](#from-the-archive-stable-version "Ссылка на этот заголовок")
+--------------------------------------------------------------------------------------------------------
+
+
+
+1. У вас должен быть установлен веб сервер с PHP
+
+2. Скачайте исходный код и скопируйте директорию `kanboard` в каталог веб сервера
+
+3. Проверьте, чтобы директория `data` была доступна на запись
+
+4. В вашем браузере перейдите по ссылке <http:/>/вашвебсервер/kanboard
+
+5. Логин и пароль по умолчанию - **admin/admin**
+
+6. Все, теперь вы можете работать в Канборд
+
+7. Не забудьте сменить пароль!
+
+
+
+Место хранения данных:
+
+
+- База данных Sqlite: `db.sqlite`
+
+- Файл отладки: `debug.log` (если включена отладка)
+
+- Загруженные файлы: `files/*`
+
+- Изображения: `files/thumbnails/*`
+
+
+
+Те, кто использует удаленную базу данных (Mysql/Postgresql) и удаленное файловое хранилище (Aws S3 или подобное), могут не назначать права доступа к локальным данным.
+
+
+Инсталяция из репозитория (разрабатываемая версия)[¶](#from-the-repository-development-version "Ссылка на этот заголовок")
+--------------------------------------------------------------------------------------------------------------------------
+
+
+
+Вы можете установить [composer](https://getcomposer.org/) для этого метода инсталяции.
+
+
+1. `git clone https://github.com/fguillot/kanboard.git`
+
+2. `composer install --no-dev`
+
+3. Далее, перейдите к третьему шагу [Инсталяция из архива](installation.html#from-the-archive-stable-version)
+
+
+
+**Внимание**: Инсталируя **текущую разрабатываемую версию**, вы должны понимать, что это нестабильная версия и берете все риски по работе Канборд на себя.
+
+
+
+Инсталяция в другой каталог[¶](#installation-outside-of-the-document-root "Ссылка на этот заголовок")
+-----------------------------------------------------------------------------------------------------
+
+
+
+Если вы хотите инсталировать Канборд в другую директорию, вне корневого каталога веб сервера, вам нужно создать, как минимум, следующие символьные ссылки:
+
+ .
+
+ ├── assets -> ../kanboard/assets
+ ├── doc -> ../kanboard/doc
+ ├── cli -> ../kanboard/cli
+ ├── favicon.ico -> ../kanboard/favicon.ico
+ ├── index.php -> ../kanboard/index.php
+ ├── jsonrpc.php -> ../kanboard/jsonrpc.php
+ └── robots.txt -> ../kanboard/robots.txt
+
+
+
+`.htaccess` необязательно, потому что его содержимое может быть включена прямо в конфигурацию Apache.
+
+
+Вы можете указать текущее месторасположение директорий плагинов и файлов изменив [конфигурационный файл](config.markdown).
+
+
+
+Безопасность[¶](#security "Ссылка на этот заголовок")
+-----------------------------------------------------
+
+- Не забудьте изменить логин и пароль пользователя admin, назначенный по умолчанию
+
+- Не предоставляйте всем права на директорию `data` через URL.
+
+
+
+Примечание[¶](#notes "Ссылка на этот заголовок")
+------------------------------------------------
+
+
+- Некоторые возможности Канборда требуют, чтобы [ежедневно выполнялись фоновые задачи](cronjob.markdown).
+
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/kanban-vs-todo-and-scrum.markdown b/doc/ru_RU/kanban-vs-todo-and-scrum.markdown
new file mode 100644
index 00000000..7c1b205b
--- /dev/null
+++ b/doc/ru_RU/kanban-vs-todo-and-scrum.markdown
@@ -0,0 +1,75 @@
+Сравнение Kanban, Todo lists и Scrum
+====================================
+
+
+Сравнение Kanban и Todo lists[¶](#kanban-vs-todo-lists "Ссылка на этот заголовок")
+----------------------------------------------------------------------------------
+
+
+### Todo lists (списки для исполнения):[¶](#todo-lists "Ссылка на этот заголовок")
+
+- Имеют одну фазу (только список пунктов)
+
+- Возможна многозадачность (не эффективна)
+
+
+
+### Kanban:[¶](#kanban "Ссылка на этот заголовок")
+
+
+
+- Имеет много фаз, каждая колонка представлена как шаг процесса
+
+- Концентрация внимания и исключение многозадачности, потому что вы можете установить этап процесса заданной колонкой
+
+
+
+Сравнение Kanban и Scrum[¶](#kanban-vs-scrum "Ссылка на этот заголовок")
+------------------------------------------------------------------------
+
+
+### [Scrum:](https://ru.wikipedia.org/wiki/Scrum)[¶](#scrum "Ссылка на этот заголовок")
+
+
+- Спринты жестко фиксированные временем, обычно 2 или 4 недели
+
+- Не позволяет вносить изменения в течении итерации
+
+- Обязательна предварительная оценка
+
+- Используется скорость как единица измерения по умолчанию
+
+- Доска Scrum очищается между спринтами
+
+- Scrum имеет преопределенные роли, такие как, мастер, владелец продукта и команда
+
+- Множество встреч: планирование, беклог груминг (причесывание), ежедневные совещания, ретроспектива
+
+
+
+### Kanban:[¶](#id1 "Ссылка на этот заголовок")
+
+- Непрерывный поток
+
+- Гибкость - изменения могут быть сделаны в любое время
+
+- Предварительная оценка опциональна
+
+- Используется время выполнения (lead time) и время цикла (cycle time) для измерения производительности
+
+- Доска Kanboar постоянна
+
+- Kanban не навязывает строгих ограничений или встреч, процессы более гибкие
+
+
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/keyboard-shortcuts.markdown b/doc/ru_RU/keyboard-shortcuts.markdown
new file mode 100644
index 00000000..a09c92bc
--- /dev/null
+++ b/doc/ru_RU/keyboard-shortcuts.markdown
@@ -0,0 +1,99 @@
+Горячие клавиши
+===============
+
+
+Горячие клавиши доступны в зависимости от страницы на которой вы находитесь.
+
+
+
+В проекте (Доска, Календарь, Список, Гант)[¶](#project-views-board-calendar-list-gantt "Ссылка на этот заголовок")
+------------------------------------------------------------------------------------------------------------------
+
+- Переключиться на Обзор проектов = **v o** (переключите клавиатуру в английскую раскладку и нажмите клавиши **v** и **o** )
+
+
+
+- Переключиться на Доску = **v b**
+
+
+
+- Переключиться на Календарь = **v c**
+
+
+
+- Переключиться на список = **v l**
+
+
+
+- Переключиться на диаграмму Ганта = **v g**
+
+
+
+На Доске[¶](#board-view "Ссылка на этот заголовок")
+---------------------------------------------------
+
+- Новая задача = **n**
+
+
+
+- Свернуть/развернуть задачи = **s**
+
+
+
+- Компактный/широкий вид = **c**
+
+
+
+В Задаче[¶](#task-view "Ссылка на этот заголовок")
+--------------------------------------------------
+
+- Редактировать задачу = **e**
+
+
+
+- Новая подзадача = **s**
+
+
+
+- Новый комментарий = **c**
+
+
+
+- Новая внутренняя ссылка = **l**
+
+
+
+В приложении (главное окно Канборд)[¶](#application "Ссылка на этот заголовок")
+-------------------------------------------------------------------------------
+
+
+- Показать список горячих клавиш = **?**
+
+
+
+- Открыть переключатель проектов = **b**
+
+
+
+- Переход в окно поиска = **f**
+
+
+
+- Очистить окно поиска = **r**
+
+
+
+- Закрыть окно диалога = **ESC**
+
+
+
+- Расширенный поиск = **CTRL+ENTER** or **⌘+ENTER**
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/ldap-authentication.markdown b/doc/ru_RU/ldap-authentication.markdown
new file mode 100644
index 00000000..a94d8f89
--- /dev/null
+++ b/doc/ru_RU/ldap-authentication.markdown
@@ -0,0 +1,327 @@
+Аутентификация LDAP
+===================
+
+
+Требования[¶](#requirements "Ссылка на этот заголовок")
+-------------------------------------------------------
+
+
+
+- Включенное в PHP раширение LDAP
+
+
+
+- Сервер LDAP:
+
+
+
+ - OpenLDAP
+
+ - Microsoft Active Directory
+
+ - Novell eDirectory
+
+
+
+Рабочий процесс[¶](#workflow "Ссылка на этот заголовок")
+--------------------------------------------------------
+
+
+
+Когда активирована аутентификация LDAP, процесс входа выглядит следующим образом:
+
+
+
+1. Выполняется попытка аутентификации пользователя в базе данных Канборда
+
+2. Если пользователь не найден в базе Канборда, выполняется аутентификация LDAP
+
+3. Если аутентификация LDAP выполнена успешно, по умолчанию, локальный пользователь (в Канборде) создается автоматически без пароля и помечается как пользователь LDAP.
+
+
+
+Полное имя и email адрес автоматически подгружаются из сервера LDAP.
+
+
+
+Типы аутентификации[¶](#authentication-types "Ссылка на этот заголовок")
+------------------------------------------------------------------------
+
+
+| Тип | Описание |
+|--------------|-------------------------------------------------------------|
+| Proxy User | Использовать специального пользователя для просмотра директории LDAP |
+| User | Использовать учетные данные конечного пользователя для просмотра директории LDAP |
+| Anonymous | Не надо выполнять аутентификацию для доступа к каталогу LDAP |
+
+
+**Рекомендуемый метод аутентификации - “Proxy”**.
+
+
+
+### Анонимный (Anonymous) метод[¶](#anonymous-mode "Ссылка на этот заголовок")
+
+
+
+ define('LDAP_BIND_TYPE', 'anonymous');
+
+ define('LDAP_USERNAME', null);
+
+ define('LDAP_PASSWORD', null);
+
+
+
+Этот метод используется по умолчанию, но некоторые сервера LDAP не поддерживают доступ анонимам, из соображений безопасности.
+
+
+
+### Proxy метод[¶](#proxy-mode "Ссылка на этот заголовок")
+
+
+
+Специальный пользователь используется для доступа к директории LDAP:
+
+
+
+ define('LDAP_BIND_TYPE', 'proxy');
+
+ define('LDAP_USERNAME', 'my proxy user');
+
+ define('LDAP_PASSWORD', 'my proxy password');
+
+
+
+### Пользовательский метод (user)[¶](#user-mode "Ссылка на этот заголовок")
+
+
+
+Этот метод используется для доступа под учетной записью конечного пользователя.
+
+
+
+Например, Microsoft Active Directory не разрешает подключение под анонимным пользователем и если вы не хотите использовать пользователя proxy, то используйте этот метод.
+
+
+
+ define('LDAP_BIND_TYPE', 'user');
+
+ define('LDAP_USERNAME', '%s@kanboard.local');
+
+ define('LDAP_PASSWORD', null);
+
+
+
+В этом методе, константа `LDAP_USERNAME` использутся как шаблон для пользователя ldap, например:
+
+
+
+- `%s@kanboard.local` будет заменен `my_user@kanboard.local`
+
+
+
+- `KANBOARD\\%s` будет заменен на `KANBOARD\my_user`
+
+
+
+Фильтр пользователей LDAP[¶](#user-ldap-filter "Ссылка на этот заголовок")
+--------------------------------------------------------------------------
+
+
+Параметр конфигурации `LDAP_USER_FILTER` используется для поиска пользователей по директории LDAP.
+
+
+
+Например:
+
+
+
+- `(&(objectClass=user)(sAMAccountName=%s))` будет заменено на `(&(objectClass=user)(sAMAccountName=указанный_пользователь))`
+
+
+- `uid=%s` is replaced by `uid=указанный_пользователь`
+
+
+
+Другие примеры [фильтров для Active Directory](http://social.technet.microsoft.com/wiki/contents/articles/5392.active-directory-ldap-syntax-filters.aspx)
+
+
+
+Пример фильра доступа в Канборд:
+
+
+
+`(&(objectClass=user)(sAMAccountName=%s)(memberOf=CN=Kanboard Users,CN=Users,DC=kanboard,DC=local))`
+
+
+
+Этот пример разрешает подключатся к Канборду только пользователям участникам группы “Kanboard Users”
+
+
+
+Пример для Microsoft Active Directory[¶](#example-for-microsoft-active-directory "Ссылка на этот заголовок")
+------------------------------------------------------------------------------------------------------------
+
+
+
+Предположим, что мы имеем домен `KANBOARD` (kanboard.local) и контролер домена `myserver.kanboard.local`.
+
+
+
+Первый пример для метода прокси (proxy):
+
+
+
+ <?php
+
+
+
+ // Enable LDAP authentication (false by default)
+
+ define('LDAP_AUTH', true);
+
+
+
+ define('LDAP_BIND_TYPE', 'proxy');
+
+ define('LDAP_USERNAME', 'administrator@kanboard.local');
+
+ define('LDAP_PASSWORD', 'my super secret password');
+
+
+
+ // LDAP server hostname
+
+ define('LDAP_SERVER', 'myserver.kanboard.local');
+
+
+
+ // LDAP properties
+
+ define('LDAP_USER_BASE_DN', 'CN=Users,DC=kanboard,DC=local');
+
+ define('LDAP_USER_FILTER', '(&(objectClass=user)(sAMAccountName=%s))');
+
+
+
+Второй пример с пользовательским методом (user):
+
+
+
+ <?php
+
+
+
+ // Enable LDAP authentication (false by default)
+
+ define('LDAP_AUTH', true);
+
+
+
+ define('LDAP_BIND_TYPE', 'user');
+
+ define('LDAP_USERNAME', '%s@kanboard.local');
+
+ define('LDAP_PASSWORD', null);
+
+
+
+ // LDAP server hostname
+
+ define('LDAP_SERVER', 'myserver.kanboard.local');
+
+
+
+ // LDAP properties
+
+ define('LDAP_USER_BASE_DN', 'CN=Users,DC=kanboard,DC=local');
+
+ define('LDAP_USER_FILTER', '(&(objectClass=user)(sAMAccountName=%s))');
+
+
+
+Пример для OpenLDAP[¶](#example-for-openldap "Ссылка на этот заголовок")
+------------------------------------------------------------------------
+
+
+
+Наш сервер LDAP - `myserver.example.com` и все пользователи хранятся в `ou=People,dc=example,dc=com`.
+
+
+
+Для этого примера мы использовали анонимное подключение.
+
+
+
+ <?php
+
+
+
+ // Enable LDAP authentication (false by default)
+
+ define('LDAP_AUTH', true);
+
+
+
+ // LDAP server hostname
+
+ define('LDAP_SERVER', 'myserver.example.com');
+
+
+
+ // LDAP properties
+
+ define('LDAP_USER_BASE_DN', 'ou=People,dc=example,dc=com');
+
+ define('LDAP_USER_FILTER', 'uid=%s');
+
+
+
+Выключение автоматического создания учетных записей[¶](#disable-automatic-account-creation "Ссылка на этот заголовок")
+----------------------------------------------------------------------------------------------------------------------
+
+
+
+По умолчанию, Канборд автоматически создает учетную запись пользователя, если такой пользователь не найден.
+
+
+
+Вы можете выключить это поведение, если вы предпочитаете создавать учетные записи вручную.
+
+
+
+Для этого установите значение `LDAP_ACCOUNT_CREATION` в `false`:
+
+
+
+ // Automatically create user account
+
+ define('LDAP_ACCOUNT_CREATION', false);
+
+
+
+Устранение неисправностей[¶](#troubleshooting "Ссылка на этот заголовок")
+-------------------------------------------------------------------------
+
+Если включен SELinux, вы должны разрешить Apache доступ к вашему серверу LDAP.
+
+
+
+- Вы должны переключить SELinux в разрешающий режим (permissive mode) или совсем выключить (не рекомендуется)
+
+- Вы должны разрешить все сетевые подключения, например `setsebool -P httpd_can_network_connect=1` или назначить более ограничивающие правила
+
+
+
+В любом случае, ознакомтесь с официальной документацией Redhat/Centos.
+
+
+
+Если вам не удается настроить аутентификацию LDAP, то вы можете [включить режим отладки](config.markdown) и посмотреть файлы событий.
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/ldap-configuration-examples.markdown b/doc/ru_RU/ldap-configuration-examples.markdown
new file mode 100644
index 00000000..32b8a29d
--- /dev/null
+++ b/doc/ru_RU/ldap-configuration-examples.markdown
@@ -0,0 +1,438 @@
+Пример конфигурации LDAP
+========================
+
+
+Microsoft Active Directory[¶](#microsoft-active-directory "Ссылка на этот заголовок")
+-------------------------------------------------------------------------------------
+
+- Аутентификация пользователя
+
+
+
+- Загрузка пользовательского профиля из Active Directory
+
+
+
+- Установка языка пользователя из атрибутов LDAP
+
+
+
+- Роли в Канборд сопоставляются с группами в Active Directory
+
+
+
+- Поставщики групп LDAP включены
+
+
+
+<!-- -->
+
+
+
+ define('LDAP_AUTH', true);
+
+
+
+ define('LDAP_SERVER', 'my-ldap-server');
+
+ define('LDAP_PORT', 389);
+
+
+
+ define('LDAP_BIND_TYPE', 'proxy');
+
+ define('LDAP_USERNAME', 'administrator@kanboard.local');
+
+ define('LDAP_PASSWORD', 'secret');
+
+
+
+ define('LDAP_USER_BASE_DN', 'CN=Users,DC=kanboard,DC=local');
+
+ define('LDAP_USER_FILTER', '(&(objectClass=user)(sAMAccountName=%s))');
+
+
+
+ define('LDAP_USER_ATTRIBUTE_USERNAME', 'samaccountname');
+
+ define('LDAP_USER_ATTRIBUTE_FULLNAME', 'displayname');
+
+ define('LDAP_USER_ATTRIBUTE_PHOTO', 'jpegPhoto');
+
+ define('LDAP_USER_ATTRIBUTE_LANGUAGE', 'preferredLanguage');
+
+
+
+ define('LDAP_GROUP_ADMIN_DN', 'CN=Kanboard Admins,CN=Users,DC=kanboard,DC=local');
+
+ define('LDAP_GROUP_MANAGER_DN', 'CN=Kanboard Managers,CN=Users,DC=kanboard,DC=local');
+
+
+
+ define('LDAP_GROUP_PROVIDER', true);
+
+ define('LDAP_GROUP_BASE_DN', 'CN=Users,DC=kanboard,DC=local');
+
+ define('LDAP_GROUP_FILTER', '(&(objectClass=group)(sAMAccountName=%s*))');
+
+ define('LDAP_GROUP_ATTRIBUTE_NAME', 'cn');
+
+
+
+OpenLDAP с memberOf overlay[¶](#openldap-with-memberof-overlay "Ссылка на этот заголовок")
+------------------------------------------------------------------------------------------
+
+Пример LDIF пользователя:
+
+
+ dn: uid=manager,ou=Users,dc=kanboard,dc=local
+
+ objectClass: top
+
+ objectClass: person
+
+ objectClass: organizationalPerson
+
+ objectClass: inetOrgPerson
+
+ uid: manager
+
+ sn: Lastname
+
+ givenName: Firstname
+
+ cn: Kanboard Manager
+
+ displayName: Kanboard Manager
+
+ mail: manager@kanboard.local
+
+ userPassword: password
+
+ memberOf: cn=Kanboard Managers,ou=Groups,dc=kanboard,dc=local
+
+
+
+Пример LDIF группы:
+
+
+
+ dn: cn=Kanboard Managers,ou=Groups,dc=kanboard,dc=local
+
+ objectClass: top
+
+ objectClass: groupOfNames
+
+ cn: Kanboard Managers
+
+ member: uid=manager,ou=Users,dc=kanboard,dc=local
+
+
+
+Конфигурация Канборд:
+
+
+- Аутентификация пользователя
+
+
+
+- Роли в Канборд сопоставляются с группами LDAP
+
+
+
+- Поставщики групп LDAP включены
+
+
+
+<!-- -->
+
+
+
+ define('LDAP_AUTH', true);
+
+
+
+ define('LDAP_SERVER', 'my-ldap-server');
+
+ define('LDAP_PORT', 389);
+
+
+
+ define('LDAP_BIND_TYPE', 'proxy');
+
+ define('LDAP_USERNAME', 'cn=admin,DC=kanboard,DC=local');
+
+ define('LDAP_PASSWORD', 'password');
+
+
+
+ define('LDAP_USER_BASE_DN', 'OU=Users,DC=kanboard,DC=local');
+
+ define('LDAP_USER_FILTER', 'uid=%s');
+
+
+
+ define('LDAP_GROUP_ADMIN_DN', 'cn=Kanboard Admins,ou=Groups,dc=kanboard,dc=local');
+
+ define('LDAP_GROUP_MANAGER_DN', 'cn=Kanboard Managers,ou=Groups,dc=kanboard,dc=local');
+
+
+
+ define('LDAP_GROUP_PROVIDER', true);
+
+ define('LDAP_GROUP_BASE_DN', 'ou=Groups,dc=kanboard,dc=local');
+
+ define('LDAP_GROUP_FILTER', '(&(objectClass=groupOfNames)(cn=%s*))');
+
+ define('LDAP_GROUP_ATTRIBUTE_NAME', 'cn');
+
+
+
+OpenLDAP с Posix groups (memberUid)[¶](#openldap-with-posix-groups-memberuid "Ссылка на этот заголовок")
+--------------------------------------------------------------------------------------------------------
+
+
+Пример LDIF пользователя:
+
+
+
+ dn: uid=manager,ou=Users,dc=kanboard,dc=local
+
+ objectClass: inetOrgPerson
+
+ objectClass: posixAccount
+
+ objectClass: shadowAccount
+
+ uid: manager
+
+ sn: Lastname
+
+ givenName: Firstname
+
+ cn: Kanboard Manager
+
+ displayName: Kanboard Manager
+
+ uidNumber: 10001
+
+ gidNumber: 8000
+
+ userPassword: password
+
+ homeDirectory: /home/manager
+
+ mail: manager@kanboard.local
+
+
+
+Пример LDIF группы:
+
+
+
+ dn: cn=Kanboard Managers,ou=Groups,dc=kanboard,dc=local
+
+ objectClass: posixGroup
+
+ cn: Kanboard Managers
+
+ gidNumber: 5001
+
+ memberUid: manager
+
+
+
+Конфигурация Канборд:
+
+
+
+- Аутентификация пользователя
+
+
+
+- Роли в Канборд сопоставляются с группами LDAP
+
+
+
+- Поставщики групп LDAP включены
+
+
+
+<!-- -->
+
+
+
+ define('LDAP_AUTH', true);
+
+
+
+ define('LDAP_SERVER', 'my-ldap-server');
+
+ define('LDAP_PORT', 389);
+
+
+
+ define('LDAP_BIND_TYPE', 'proxy');
+
+ define('LDAP_USERNAME', 'cn=admin,DC=kanboard,DC=local');
+
+ define('LDAP_PASSWORD', 'password');
+
+
+
+ define('LDAP_USER_BASE_DN', 'OU=Users,DC=kanboard,DC=local');
+
+ define('LDAP_USER_FILTER', 'uid=%s');
+
+
+
+ define('LDAP_GROUP_ADMIN_DN', 'cn=Kanboard Admins,ou=Groups,dc=kanboard,dc=local');
+
+ define('LDAP_GROUP_MANAGER_DN', 'cn=Kanboard Managers,ou=Groups,dc=kanboard,dc=local');
+
+
+
+ // This filter is used to find the groups of our user
+
+ define('LDAP_GROUP_USER_FILTER', '(&(objectClass=posixGroup)(memberUid=%s))');
+
+
+
+ define('LDAP_GROUP_PROVIDER', true);
+
+ define('LDAP_GROUP_BASE_DN', 'ou=Groups,dc=kanboard,dc=local');
+
+ define('LDAP_GROUP_FILTER', '(&(objectClass=posixGroup)(cn=%s*))');
+
+ define('LDAP_GROUP_ATTRIBUTE_NAME', 'cn');
+
+
+
+OpenLDAP с groupOfNames[¶](#openldap-with-groupofnames "Ссылка на этот заголовок")
+----------------------------------------------------------------------------------
+
+
+Пример LDIF пользователя:
+
+
+
+ dn: uid=manager,ou=Users,dc=kanboard,dc=local
+
+ objectClass: top
+
+ objectClass: person
+
+ objectClass: organizationalPerson
+
+ objectClass: inetOrgPerson
+
+ uid: manager
+
+ sn: Lastname
+
+ givenName: Firstname
+
+ cn: Kanboard Manager
+
+ displayName: Kanboard Manager
+
+ mail: manager@kanboard.local
+
+ userPassword: password
+
+
+
+Пример LDIF группы:
+
+
+
+ dn: cn=Kanboard Managers,ou=Groups,dc=kanboard,dc=local
+
+ objectClass: top
+
+ objectClass: groupOfNames
+
+ cn: Kanboard Managers
+
+ member: uid=manager,ou=Users,dc=kanboard,dc=local
+
+
+
+Конфигурация Канборд:
+
+
+
+- Аутентификация пользователя
+
+
+
+- Роли в Канборд сопоставляются с группами LDAP
+
+
+
+- Поставщики групп LDAP включены
+
+
+
+<!-- -->
+
+
+
+ define('LDAP_AUTH', true);
+
+
+
+ define('LDAP_SERVER', 'my-ldap-server');
+
+ define('LDAP_PORT', 389);
+
+
+
+ define('LDAP_BIND_TYPE', 'proxy');
+
+ define('LDAP_USERNAME', 'cn=admin,DC=kanboard,DC=local');
+
+ define('LDAP_PASSWORD', 'password');
+
+
+
+ define('LDAP_USER_BASE_DN', 'OU=Users,DC=kanboard,DC=local');
+
+ define('LDAP_USER_FILTER', 'uid=%s');
+
+
+
+ define('LDAP_GROUP_ADMIN_DN', 'cn=Kanboard Admins,ou=Groups,dc=kanboard,dc=local');
+
+ define('LDAP_GROUP_MANAGER_DN', 'cn=Kanboard Managers,ou=Groups,dc=kanboard,dc=local');
+
+
+
+ // This filter is used to find the groups of our user
+
+ define('LDAP_GROUP_USER_FILTER', '(&(objectClass=groupOfNames)(member=uid=%s,ou=Users,dc=kanboard,dc=local))');
+
+
+
+ define('LDAP_GROUP_PROVIDER', true);
+
+ define('LDAP_GROUP_BASE_DN', 'ou=Groups,dc=kanboard,dc=local');
+
+ define('LDAP_GROUP_FILTER', '(&(objectClass=groupOfNames)(cn=%s*))');
+
+ define('LDAP_GROUP_ATTRIBUTE_NAME', 'cn');
+
+
+
+
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/ldap-group-sync.markdown b/doc/ru_RU/ldap-group-sync.markdown
new file mode 100644
index 00000000..87d9d1cc
--- /dev/null
+++ b/doc/ru_RU/ldap-group-sync.markdown
@@ -0,0 +1,153 @@
+Синхронизация групп LDAP
+========================
+
+
+
+Требования[¶](#requirements "Ссылка на этот заголовок")
+-------------------------------------------------------
+
+
+
+- Правильно настроенную аутентификацию LDAP
+
+
+
+- Используется сервер LDAP, который поддерживает `memberOf` или `memberUid` (PosixGroups)
+
+
+
+Автоматическое определение ролей пользователей на основании LDAP групп[¶](#define-automatically-user-roles-based-on-ldap-groups "Ссылка на этот заголовок")
+-----------------------------------------------------------------------------------------------------------------------------------------------------------
+
+
+
+Используйте следующие константы в вашем конфигурационном файле:
+
+
+
+- `LDAP_GROUP_ADMIN_DN`: Уникальные имена (Distinguished Names) для администраторов приложения
+
+
+
+- `LDAP_GROUP_MANAGER_DN`: Уникальные имена (Distinguished Names) для менеджеров приложения
+
+
+
+### Пример для Active Directory:[¶](#example-for-active-directory "Ссылка на этот заголовок")
+
+
+
+ define('LDAP_GROUP_ADMIN_DN', 'CN=Kanboard Admins,CN=Users,DC=kanboard,DC=local');
+
+ define('LDAP_GROUP_MANAGER_DN', 'CN=Kanboard Managers,CN=Users,DC=kanboard,DC=local');
+
+
+
+- Участники группы “Kanboard Admins” будут иметь роль “Администратор”
+
+
+
+- Участники группы “Kanboard Managers” будут иметь роль “Менеджер”
+
+
+
+- Все, кто не попадает под предыдущие определения, будут иметь роль “Пользователь”
+
+
+
+### Пример OpenLDAP с Posix Groups:[¶](#example-for-openldap-with-posix-groups "Ссылка на этот заголовок")
+
+
+
+ define('LDAP_GROUP_BASE_DN', 'ou=Groups,dc=kanboard,dc=local');
+
+ define('LDAP_GROUP_USER_FILTER', '(&(objectClass=posixGroup)(memberUid=%s))');
+
+ define('LDAP_GROUP_ADMIN_DN', 'cn=Kanboard Admins,ou=Groups,dc=kanboard,dc=local');
+
+ define('LDAP_GROUP_MANAGER_DN', 'cn=Kanboard Managers,ou=Groups,dc=kanboard,dc=local');
+
+
+
+Вы **должны определить параметр** `LDAP_GROUP_USER_FILTER`, если ваше сервер LDAP использует `memberUid` вместо `memberOf`. Все параметры в этом примере обязательные.
+
+
+
+Автоматическая загрузка групп LDAP для Канборд проекта[¶](#automatically-load-ldap-groups-for-project-permissions "Ссылка на этот заголовок")
+---------------------------------------------------------------------------------------------------------------------------------------------
+
+
+
+Эта возможность позволяет вам синхронизировать автоматически группы LDAP с группами Канборд. Каждая группа может иметь разные роли в проектах.
+
+
+
+В проекте на странице *Разрешения*, можно ввести имя группы (имеется автодополнение) и Канборд будет искать группу во всех подключенных поставщиках.
+
+
+
+Если группа не найдена в локальной базе данных, то она будет автоматически синхронизированна.
+
+
+
+- `LDAP_GROUP_PROVIDER`: Включение поставщика группы LDAP
+
+
+
+- `LDAP_GROUP_BASE_DN`: Уникальное имя (Distinguished Names) для поиска группы в LDAP директории
+
+
+
+- `LDAP_GROUP_FILTER`: фильтр LDAP используемый для выполнения запроса
+
+
+
+- `LDAP_GROUP_ATTRIBUTE_NAME`: атрибут LDAP используемый для получения имени группы
+
+
+
+### Пример для Active Directory:[¶](#id1 "Ссылка на этот заголовок")
+
+
+
+ define('LDAP_GROUP_PROVIDER', true);
+
+ define('LDAP_GROUP_BASE_DN', 'CN=Groups,DC=kanboard,DC=local');
+
+ define('LDAP_GROUP_FILTER', '(&(objectClass=group)(sAMAccountName=%s*))');
+
+
+
+С помощью фильтра, в примере выше, Канборд будет искать группы соответсвующие запросу. Если пользователь введет текст “Мои группы” в автозаполняемое поле, Канборд вернет все группы которые соответсвуют шаблону: `(&(objectClass=group)(sAMAccountName=Мои группы*))`.
+
+
+
+- Примечание 1: Спец символ `*` очень важен, в противном случает **будет выбрано только точное совпадение**
+
+
+
+- Примечание 2: Эта функция возможна только с аутентификацией LDAP настроенной на метод “proxy” или “anonymous”
+
+
+
+[Больше примеров фильтров LDAP для Active Directory](http://social.technet.microsoft.com/wiki/contents/articles/5392.active-directory-ldap-syntax-filters.aspx)
+
+
+
+### Пример OpenLDAP с Posix Groups:[¶](#id2 "Ссылка на этот заголовок")
+
+
+
+ define('LDAP_GROUP_PROVIDER', true);
+
+ define('LDAP_GROUP_BASE_DN', 'ou=Groups,dc=kanboard,dc=local');
+
+ define('LDAP_GROUP_FILTER', '(&(objectClass=posixGroup)(cn=%s*))');
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/ldap-parameters.markdown b/doc/ru_RU/ldap-parameters.markdown
new file mode 100644
index 00000000..5d00913d
--- /dev/null
+++ b/doc/ru_RU/ldap-parameters.markdown
@@ -0,0 +1,49 @@
+Параметры LDAP для конфигурации
+===============================
+
+
+
+Список доступных параметров LDAP:
+
+
+| Параметр | Значение по умолчанию |Описание |
+|---------------------------|------------------------------|-----------------------------|
+| `LDAP_AUTH` | false | Включить аутентификацию LDAP |
+| `LDAP_SERVER` | Нет значения | Имя сервера LDAP |
+| `LDAP_PORT` | 389 | Порт сервера LDAP |
+| `LDAP_SSL_VERIFY` | true | Проверка сертификата для URL `ldaps://` |
+| `LDAP_START_TLS` | false | Включение LDAP start TLS |
+| `LDAP_USERNAME_CASE_SENSITIVE` | false | Включение/выключение нижнего и верхнего регистра букв в Канборд для пользователей ldap для исключения дублирования пользователей (база данных чувствительна к регистру) |
+| `LDAP_BIND_TYPE` | anonymous | Тип подключения: “anonymous”, “user” or “proxy” |
+| `LDAP_USERNAME` | null | Имя пользователя LDAP для использования в методе proxy или шаблон имени пользователя для использования в методе user |
+| `LDAP_PASSWORD` | null | Пароль LDAP при использовании метода proxy |
+| `LDAP_USER_BASE_DN`| Нет значения | Уникальное имя (DN) LDAP для пользователей (Пример: “CN=Users,DC=kanboard,DC=local”) |
+| `LDAP_USER_FILTER` | Нет значения | Шаблон LDAP, который используется для поиска пользователей (Пример: “(&(objectClass=user)(sAMAccountName=%s))”) |
+| `LDAP_USER_ATTRIBUTE_USERNAME` | uid | Атрибут LDAP для имени пользователя (Например: “samaccountname”) |
+| `LDAP_USER_ATTRIBUTE_FULLNAME` | cn | Атрибут LDAP полного имени пользователя (Например: “displayname”) |
+| `LDAP_USER_ATTRIBUTE_EMAIL` | mail | Атрибут LDAP для email пользователя |
+| `LDAP_USER_ATTRIBUTE_GROUPS` | memberof | Атрибут LDAP для поиска групп в профиле пользователя |
+| `LDAP_USER_ATTRIBUTE_PHOTO` | Нет значения | Атрибут LDAP для поиска фотографии пользователя (jpegPhoto или thumbnailPhoto) |
+| `LDAP_USER_ATTRIBUTE_LANGUAGE` | Нет значения | Атрибут LDAP для языка пользователя (preferredlanguage), применимый формат языка - “ru-RU” |
+| `LDAP_USER_CREATION` | true | Включение автоматического создания пользователя из LDAP |
+| `LDAP_GROUP_ADMIN_DN` | Нет значения | Уникальное имя (DN) LDAP для администраторов (Например: “CN=Kanboard-Admins,CN=Users,DC=kanboard,DC=local”) |
+| `LDAP_GROUP_MANAGER_DN` | Нет значения | Уникальное имя (DN) LDAP для менеджеров (Например: “CN=Kanboard Managers,CN=Users,DC=kanboard,DC=local”) |
+| `LDAP_GROUP_PROVIDER` | false | Включение поставщика групп LDAP для “Разрешения” в проектах |
+| `LDAP_GROUP_BASE_DN` | Нет значения | Уникальное имя (Base DN) LDAP для групп |
+| `LDAP_GROUP_FILTER` | Нет значения | Фильтр групп LDAP (Например: “(&(objectClass=group)(sAMAccountName=%s\*))”) |
+| `LDAP_GROUP_USER_FILTER` | Empty | Если определено, то Канборд будет искать группы пользователей в LDAP\_GROUP\_BASE\_DN с помощью этого фильтра, это удобно только для posixGroups (Например: `(&(objectClass=posixGroup)(memberUid=%s))`|
+| `LDAP_GROUP_ATTRIBUTE_NAME` | cn | атрибут LDAP для имени группы |
+
+
+Примечание
+
+
+
+- Атрибуты LDAP должны быть в нижнем регистре
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/ldap-profile-picture.markdown b/doc/ru_RU/ldap-profile-picture.markdown
new file mode 100644
index 00000000..9d6bb543
--- /dev/null
+++ b/doc/ru_RU/ldap-profile-picture.markdown
@@ -0,0 +1,46 @@
+Фотография пользователя из профиля LDAP
+=======================================
+
+
+
+Канборд может автоматически загружать фотографию пользователя из сервера LDAP.
+
+
+
+Эта функция возможна только если активирована аутентификация LDAP и указан параметр `LDAP_USER_ATTRIBUTE_PHOTO`.
+
+
+
+Настройка[¶](#configuration "Ссылка на этот заголовок")
+-------------------------------------------------------
+
+
+
+В вашем `config.php`, вы должны установить атрибут LDAP, используемый для хранения изображения.
+
+
+
+ define('LDAP_USER_ATTRIBUTE_PHOTO', 'jpegPhoto');
+
+
+
+Обычно используются атрибуты `jpegPhoto` или `thumbnailPhoto`. Изображения могут хранится в формате JPEG или PNG.
+
+
+
+Для загрузки изображения в пользовательски профиль, администраторы Active Directory могут использовать программу [AD Photo Edit](http://www.cjwdev.co.uk/Software/ADPhotoEdit/Info.html).
+
+
+
+Примечание[¶](#notes "Ссылка на этот заголовок")
+------------------------------------------------
+
+Изображение из профиля **загружается при входе, только если изображение не было загружено ранее**.
+
+Для смены изображения, нужно вручную удалить ранее загруженное изображение из профиля пользователя.
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/link-labels.markdown b/doc/ru_RU/link-labels.markdown
new file mode 100644
index 00000000..51dd98b9
--- /dev/null
+++ b/doc/ru_RU/link-labels.markdown
@@ -0,0 +1,23 @@
+Настройки ссылки
+================
+
+
+Связи в задачах могут быть изменены в настройках приложения (**Настройки** -\> **Настройки ссылки**)
+
+![Link Labels](screenshots/link-labels.png)
+
+Метки для ссылок.
+
+
+Каждая метка может иметь противоположное опеределение. Если нет противоположного значения, метка считается двунаправленная.
+
+![Link Label Creation](screenshots/link-label-creation.png)
+
+Создание ссылки.
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/mysql-configuration.markdown b/doc/ru_RU/mysql-configuration.markdown
new file mode 100644
index 00000000..82c02b37
--- /dev/null
+++ b/doc/ru_RU/mysql-configuration.markdown
@@ -0,0 +1,128 @@
+Настройка Mysql/MariaDB
+=======================
+
+
+
+По умолчанию Канборд использует для хранения данных Sqlite. Вместо Sqlite возможно использовать Mysql или MariaDB.
+
+
+
+Требования[¶](#requirements "Ссылка на этот заголовок")
+-------------------------------------------------------
+
+
+
+- Сервер Mysql
+
+
+
+- Установленное расширение PHP - `pdo_mysql`
+
+
+
+Примечание: работа Канборда протестирована с **Mysql \>= 5.5 и MariaDB \>= 10.0**
+
+
+
+Настройка Mysql[¶](#mysql-configuration "Ссылка на этот заголовок")
+-------------------------------------------------------------------
+
+
+
+### Создание базы данных[¶](#create-a-database "Ссылка на этот заголовок")
+
+
+
+Первым шагом надо создать базу данных на вашем сервере Mysql. Например, вы можете создать базу в командной строке клиента mysql:
+
+
+
+ CREATE DATABASE kanboard;
+
+
+
+### Создание файла конфигурации[¶](#create-a-config-file "Ссылка на этот заголовок")
+
+
+
+Файл `config.php` должен содержать следующие значения:
+
+
+
+ <?php
+
+
+
+ // We choose to use Mysql instead of Sqlite
+
+ define('DB_DRIVER', 'mysql');
+
+
+
+ // Mysql parameters
+
+ define('DB_USERNAME', 'REPLACE_ME');
+
+ define('DB_PASSWORD', 'REPLACE_ME');
+
+ define('DB_HOSTNAME', 'REPLACE_ME');
+
+ define('DB_NAME', 'kanboard');
+
+
+
+Примечание: Вы можете переименовать демонстрационный файл `config.default.php` в `config.php`.
+
+
+
+### Импорт SQL дампа (альтернативный метод)[¶](#importing-sql-dump-alternative-method "Ссылка на этот заголовок")
+
+
+
+В первый раз, Канборд запускает по очереди каждую миграцию базы данных и этот процес может занять некоторое время, в зависимости от вашей конфигурации.
+
+
+
+Чтобы избежать задержек, вы можете инициализировать базу данных напрямую, имопртируя SQL схему:
+
+
+
+ mysql -u root -p my_database < app/Schema/Sql/mysql.sql
+
+
+
+Файл [\`\`](#id1)app/Schema/Sql/mysql.sql\`\`это SQL дамп, который представляет последнюю версию базы данных.
+
+
+
+Конфигурация SSL[¶](#ssl-configuration "Ссылка на этот заголовок")
+------------------------------------------------------------------
+
+
+
+Эти параметры должны быть указаны для включения соединения Mysql SSL:
+
+
+
+ // Mysql SSL key
+
+ define('DB_SSL_KEY', '/path/to/client-key.pem');
+
+
+
+ // Mysql SSL certificate
+
+ define('DB_SSL_CERT', '/path/to/client-cert.pem');
+
+
+
+ // Mysql SSL CA
+
+ define('DB_SSL_CA', '/path/to/ca-cert.pem');
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/nice-urls.markdown b/doc/ru_RU/nice-urls.markdown
new file mode 100644
index 00000000..ca516f78
--- /dev/null
+++ b/doc/ru_RU/nice-urls.markdown
@@ -0,0 +1,233 @@
+Переопределение URL
+===================
+
+
+
+Канборд может работать и с переопределенными URL и с простыми.
+
+
+
+- Пример переопределенного URL: `/board/123`
+
+
+
+- По другому: `?controller=board&action=show&project_id=123`
+
+
+
+Если вы используете Канборд с Apache и включенным mode rewrite, красивые URL будут использоваться автоматически. В случае, если вы получаете ошибку “404 Not Found”, то возможно надо внести изменения в DocumentRoot:
+
+
+
+ <Directory /var/www/kanboard/>
+
+ AllowOverride FileInfo Options=All,MultiViews AuthConfig
+
+ </Directory>
+
+
+
+URL ярлыки[¶](#url-shortcuts "Ссылка на этот заголовок")
+--------------------------------------------------------
+
+
+
+- Перейти к задаче \#123: **/t/123**
+
+
+
+- Перейти на доску в проект \#2: **/b/2**
+
+
+
+- Перейти в календарь проекта \#5: **/c/5**
+
+
+
+- Перейти к просмотру списком проекта \#8: **/l/8**
+
+
+
+- Перейти к настройкам проекта для проекта id \#42: **/p/42**
+
+
+
+Настройка[¶](#configuration "Ссылка на этот заголовок")
+-------------------------------------------------------
+
+
+
+По умолчанию, Канборд проверяет включен ли в Apache mode rewrite.
+
+
+
+Для исключения автоматической проверки переопределения URL на веб сервере, вы должны включить эту опцию в вашем конфигурационном фале:
+
+
+
+ define('ENABLE_URL_REWRITE', true);
+
+
+
+Когда константа имеет значение `true`:
+
+
+
+- Сгенерированные из утилиты командной строки URL будут также преобразованы
+
+
+
+- Если вы используете другой веб сервер вместо Apache, например Nginx или Microsoft IIS, вы можете сами настроить переопределение URL
+
+
+
+Примечание: Канборд всегда использует URL по “старинке”, если данная константа не настроена. Эта настройка опциональна.
+
+
+
+Пример настройки Nginx[¶](#nginx-configuration-example "Ссылка на этот заголовок")
+----------------------------------------------------------------------------------
+
+
+
+В разделе `server`, вашего конфигурационного файла Nginx, вы можете использовать этот пример:
+
+
+
+ index index.php;
+
+
+
+ location / {
+
+ try_files $uri $uri/ /index.php$is_args$args;
+
+
+
+ # If Kanboard is under a subfolder
+
+ # try_files $uri $uri/ /kanboard/index.php;
+
+ }
+
+
+
+ location ~ \.php$ {
+
+ try_files $uri =404;
+
+ fastcgi_split_path_info ^(.+\.php)(/.+)$;
+
+ fastcgi_pass unix:/var/run/php5-fpm.sock;
+
+ fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
+
+ fastcgi_index index.php;
+
+ include fastcgi_params;
+
+ }
+
+
+
+ # Deny access to the directory data
+
+ location ~* /data {
+
+ deny all;
+
+ return 404;
+
+ }
+
+
+
+ # Deny access to .htaccess
+
+ location ~ /\.ht {
+
+ deny all;
+
+ return 404;
+
+ }
+
+
+
+В конфигурационном файле Канборда `config.php`:
+
+
+
+ define('ENABLE_URL_REWRITE', true);
+
+
+
+Адаптируйте пример приведенный выше к вашей конфигурации.
+
+
+
+Пример настройки IIS[¶](#iis-configuration-example "Ссылка на этот заголовок")
+------------------------------------------------------------------------------
+
+
+
+Создайте web.config в каталоге где установлен Канборд:
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?>
+
+ <configuration>
+
+ <system.webServer>
+
+ <rewrite>
+
+ <rules>
+
+ <rule name="Imported Rule 1" stopProcessing="true">
+
+ <match url="^" ignoreCase="false" />
+
+ <conditions logicalGrouping="MatchAll">
+
+ <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
+
+ </conditions>
+
+ <action type="Rewrite" url="index.php" appendQueryString="true" />
+
+ </rule>
+
+ </rules>
+
+ </rewrite>
+
+ </system.webServer>
+
+ </configuration>
+
+
+
+В конфигурационном файле Канборда `config.php`:
+
+
+
+ define('ENABLE_URL_REWRITE', true);
+
+
+
+Адаптируйте пример приведенный выше к вашей конфигурации.
+
+
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/nitrous.markdown b/doc/ru_RU/nitrous.markdown
new file mode 100644
index 00000000..8b975b0d
--- /dev/null
+++ b/doc/ru_RU/nitrous.markdown
@@ -0,0 +1,16 @@
+Nitrous быстрый старт
+=====================
+
+
+Создайте свободное окружение разработки для проекта Kanboard в облаке на [Nitrous.io](https://www.nitrous.io).
+
+Зайдите на ваш сайт через ссылку в IDE `Preview > 3000`{.docutils .literal}.
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/notifications.markdown b/doc/ru_RU/notifications.markdown
new file mode 100644
index 00000000..20d5536d
--- /dev/null
+++ b/doc/ru_RU/notifications.markdown
@@ -0,0 +1,111 @@
+Уведомления
+===========
+
+
+
+Канборд имеет возможность отправлять сообщения по нескольким каналам:
+
+
+
+- Email
+
+- Веб (уведомления в Канборд)
+
+
+
+Внешние плагины позволяют вам посылать уведомления в Slack, Hipchat, Jabber или другие чат системы.
+
+
+
+Настройка[¶](#configuration "Ссылка на этот заголовок")
+-------------------------------------------------------
+
+
+
+Любой пользователь может включить уведоления в своем профиле: в правом верхнем углу выберите во всплывающем меню **Мой профиль** -\> **Уведомления**. Уведомления по умолчанию выключены.
+
+
+
+Для получения уведомлений по email вам надо иметь электронную почту (email), которая должна быть указана в вашем профиле, и Канборд должен быть настроен на отправку электронной почты.
+
+
+
+![Notifications](screenshots/notifications.png)
+
+Уведомления
+
+
+
+Вы можете выбрать, удобный для вас, способ получения уведомлений:
+
+
+
+- Email
+
+
+
+- Веб (смотрите ниже)
+
+
+
+Для каждого проекта в котором вы являетесь участником, вы можете выбрать получение уведомления для:
+
+
+
+- Всех задач
+
+
+
+- Только для задач назначеных вам
+
+
+
+- Только для задач, которые создали вы
+
+
+
+- Только для задач, созданных вами и назначенных вам
+
+
+
+Также, вы можете выбрать проекты из которых хотите получать уведомления. По умолчанию - все проекты, в которых вы являетесь участником.
+
+
+
+Веб уведомления[¶](#web-notifications "Ссылка на этот заголовок")
+-----------------------------------------------------------------
+
+
+
+Веб уведомления доступны на рабочей панели **Мои уведомления** или вверху в виде иконки:
+
+
+
+![Web Notifications Icon](screenshots/web-notifications-icon.png)
+
+Иконка веб уведомления.
+
+
+
+Уведомления отображаются списком. Вы можете выбрать действие **Пометить как прочитанное** для каждого сообщения или отметить сразу все.
+
+
+
+![Web Notifications](screenshots/web-notifications.png)
+
+Веб уведомления.
+
+
+
+Таким образом, вы можете получать веб уведомления без использования электронной почты.
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/plugin-directory.markdown b/doc/ru_RU/plugin-directory.markdown
new file mode 100644
index 00000000..1920c91d
--- /dev/null
+++ b/doc/ru_RU/plugin-directory.markdown
@@ -0,0 +1,38 @@
+Настройка директории плагинов
+=============================
+
+
+
+Для установки, обновления и удаления плагинов в интерфейсе пользователя, вам необходимо выполнить следующие пункты:
+
+
+
+- Директория плагинов должна быть доступна на запись от пользователя веб сервера
+
+
+
+- Расширение zip должно быть доступно на вашем сервере
+
+
+
+- Параметр в конфигурации `PLUGIN_INSTALLER` должен быть установлен в `true`
+
+
+
+Для отключения этой возможности, измените значение в конфигурационном файле `PLUGIN_INSTALLER` на `false`. Также, вы должны изменить права доступа на директорию плагинов.
+
+
+
+Только администраторы могут устанавливать плагины через пользовательский интерфейс.
+
+
+
+По умолчанию, доступны только плагины из списка на веб сайте Канборда.
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/plugins.markdown b/doc/ru_RU/plugins.markdown
new file mode 100644
index 00000000..e5ec2719
--- /dev/null
+++ b/doc/ru_RU/plugins.markdown
@@ -0,0 +1,167 @@
+Разработка плагина
+==================
+
+
+
+**Внимание: API плагинов на данный момент в состоянии альфа.**
+
+
+
+Плагины удобны для расширения базового функционала Канборда: добавление возможностей, создание тем или изменения базового поведения.
+
+
+
+Создатели плагина должны указать точную версию Канборда, под которую написан плагин. Внутренний код Канборда может изменяться и ваш плагин должен тестироваться на совместимость с новой версией. Всегда следите за [ChangeLog](https://github.com/fguillot/kanboard/blob/master/ChangeLog) для внесения изменений.
+
+
+
+- [Создание вашего плагина](plugin-registration.markdown)
+
+
+
+- [Использование plugin hooks](plugin-hooks.markdown)
+
+
+
+- [События](plugin-events.markdown)
+
+
+
+- [Изменение базового поведения приложений](plugin-overrides.markdown)
+
+
+
+- [Добавление миграции схемы для плагинов](plugin-schema-migrations.markdown)
+
+
+
+- [Пользовательские маршруты](plugin-routes.markdown)
+
+
+
+- [Добавление обработчиков](plugin-helpers.markdown)
+
+
+
+- [Добавление почтовых трансляторов](plugin-mail-transports.markdown)
+
+
+
+- [Добавление типов оповещений](plugin-notifications.markdown)
+
+
+
+- [Добавление автоматических действий](plugin-automatic-actions.markdown)
+
+
+
+- [Расширение данных пользователей, задач и проектов](plugin-metadata.markdown)
+
+
+
+- [Архитектура аутентификации](plugin-authentication-architecture.markdown)
+
+
+
+- [Регистрация плагина аутентификации](plugin-authentication.markdown)
+
+
+
+- [Архитектура авторизации](plugin-authorization-architecture.markdown)
+
+
+
+- [Провайдер пользовательской группы](plugin-group-provider.markdown)
+
+
+
+- [Провайдер внешней ссылки](plugin-external-link.markdown)
+
+
+
+- [Добавление провайдера аватара](plugin-avatar-provider.markdown)
+
+
+
+- [Клиент LDAP](plugin-ldap-client.markdown)
+
+
+
+Примеры плагинов[¶](#examples-of-plugins "Ссылка на этот заголовок")
+--------------------------------------------------------------------
+
+
+
+- [Двухуровневая аутентификация SMS](https://github.com/kanboard/plugin-sms-2fa)
+
+
+
+- [Аутентификация Reverse-Proxy с поддержкой LDAP](https://github.com/kanboard/plugin-reverse-proxy-ldap)
+
+
+
+- [Slack](https://github.com/kanboard/plugin-slack)
+
+
+
+- [Hipchat](https://github.com/kanboard/plugin-hipchat)
+
+
+
+- [Jabber](https://github.com/kanboard/plugin-jabber)
+
+
+
+- [Sendgrid](https://github.com/kanboard/plugin-sendgrid)
+
+
+
+- [Mailgun](https://github.com/kanboard/plugin-mailgun)
+
+
+
+- [Postmark](https://github.com/kanboard/plugin-postmark)
+
+
+
+- [Amazon S3](https://github.com/kanboard/plugin-s3)
+
+
+
+- [Планирование бюджета](https://github.com/kanboard/plugin-budget)
+
+
+
+- [Расписание пользователя](https://github.com/kanboard/plugin-timetable)
+
+
+
+- [Прогнозирование подзадач](https://github.com/kanboard/plugin-subtask-forecast)
+
+
+
+- [Пример автоматических действий](https://github.com/kanboard/plugin-example-automatic-action)
+
+
+
+- [Пример плагина темы](https://github.com/kanboard/plugin-example-theme)
+
+
+
+- [Пример плагина CSS](https://github.com/kanboard/plugin-example-css)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/postgresql-configuration.markdown b/doc/ru_RU/postgresql-configuration.markdown
new file mode 100644
index 00000000..9407ce59
--- /dev/null
+++ b/doc/ru_RU/postgresql-configuration.markdown
@@ -0,0 +1,92 @@
+Настройка Postgresql
+====================
+
+
+
+По умолчанию, Канборд использует для хранения данных Sqlite, но возможно использовать и Postgresql.
+
+
+
+Требования[¶](#requirements "Ссылка на этот заголовок")
+-------------------------------------------------------
+
+
+
+- Установленный и настроенный сервер Postgresql
+
+
+
+- Установленное PHP расширение - `pdo_pgsql` (Debian/Ubuntu: `apt-get install php5-pgsql`)
+
+
+
+Примечание: работа Канборда протестирована с **Postgresql 9.3 и 9.4**
+
+
+
+Настройка[¶](#configuration "Ссылка на этот заголовок")
+-------------------------------------------------------
+
+
+
+### Создайте пустую базу данных выполнив команду `pgsql`:[¶](#create-an-empty-database-with-the-command-pgsql "Ссылка на этот заголовок")
+
+
+
+ CREATE DATABASE kanboard;
+
+
+
+### Создание конфигурационного файла[¶](#create-a-config-file "Ссылка на этот заголовок")
+
+
+
+Файл `config.php` должен содержать следующие значения:
+
+```php
+<?php
+
+// We choose to use Postgresql instead of Sqlite
+define('DB_DRIVER', 'postgres');
+
+// Mysql parameters
+define('DB_USERNAME', 'REPLACE_ME');
+define('DB_PASSWORD', 'REPLACE_ME');
+define('DB_HOSTNAME', 'REPLACE_ME');
+define('DB_NAME', 'kanboard');
+```
+
+
+
+Примечание: Вы можете переименовать демонстрационный файл `config.default.php` в `config.php`.
+
+
+
+### Импортирование дампа SQL (альтернативный метод)[¶](#importing-sql-dump-alternative-method "Ссылка на этот заголовок")
+
+
+
+В первый раз, Канборд запускает по очереди каждую миграцию базы данных и этот процес может занять некоторое время, в зависимости от вашей конфигурации.
+
+
+
+Для избежания проблем или задержек вы можете инициализировать базу данных напрямую посредством импорта схемы SQL:
+
+```bash
+psql -U postgres my_database < app/Schema/Sql/postgres.sql
+```
+
+Файл `app/Schema/Sql/postgres.sql` - это sql дамп, который представляет последнюю версию базы данных.
+
+
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/project-configuration.markdown b/doc/ru_RU/project-configuration.markdown
new file mode 100644
index 00000000..c9dd5eac
--- /dev/null
+++ b/doc/ru_RU/project-configuration.markdown
@@ -0,0 +1,105 @@
+Настройки проекта
+=================
+
+
+
+В правом верхнем выпадающем меню выберите **Настройки**, затем выберите **Настройки проекта** слева.
+
+
+
+![Project settings](screenshots/project-settings.png)
+
+Настройки проекта.
+
+
+
+Колонки по умолчанию для новых проектов[¶](#default-columns-for-new-projects "Ссылка на этот заголовок")
+--------------------------------------------------------------------------------------------------------
+
+
+
+Вы можете изменить колонки по умолчанию. Это удобно, когда вы создаете однотипные проекты с одними и теми же колонками.
+
+
+
+Название колонок должны быть разделены запятой.
+
+
+
+По умолчанию, в Канборде используются следующие колонки: Ожидающие, Готовые, В процессе, Выполнено
+
+
+
+Стандартные категории для новых проектов[¶](#default-categories-for-new-projects "Ссылка на этот заголовок")
+------------------------------------------------------------------------------------------------------------
+
+
+
+Категории не являются общими для приложения, но могут использоваться в проектах. Каждый проект может иметь разные категории.
+
+
+
+Однако, если вы постоянно создаете одни и теже категории для разных проектов, то вы можете задать список категорий, которые будут автоматически создаваться при создании проекта.
+
+
+
+Разрешена только одна подзадача в разработке одновременно для одного пользователя[¶](#allow-only-one-subtask-in-progress-at-the-same-time-for-a-user "Ссылка на этот заголовок")
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+
+
+Когда эта опция включена, пользователь может работать только с одной подзадачей одновременно.
+
+
+
+Если другая подзадача перейдет статус “В процессе”, то пользователь увидит следующее диалоговое окно:
+
+
+
+![Subtask user restriction](screenshots/subtask-user-restriction.png)
+
+Ограничение пользовательских подзадач.
+
+
+
+Триггер автоматического отслеживания времени подзадач[¶](#trigger-automatically-subtask-time-tracking "Ссылка на этот заголовок")
+---------------------------------------------------------------------------------------------------------------------------------
+
+
+
+- Если этот триггер включен когда статус подзадачи меняется на “В процессе”, то таймер автоматически запускается.
+
+
+
+- Выключите эту опцию, если вы не хотите отслеживать время.
+
+
+
+Включить в диаграмму закрытые задачи[¶](#include-closed-tasks-in-the-cumulative-flow-diagram "Ссылка на этот заголовок")
+------------------------------------------------------------------------------------------------------------------------
+
+
+
+- Если эта опция включена, закрытые задачи будут добавлены в накопительную диаграмму.
+
+
+
+- Если выключена, то только открытые задачи будут подсчитаны.
+
+
+
+- Эта опция влияет на колонку “total” (всего) в таблице “project\_daily\_column\_stats” (проект\_ежедневно\_колонка\_статистика)
+
+
+
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/project-permissions.markdown b/doc/ru_RU/project-permissions.markdown
new file mode 100644
index 00000000..6859c1a8
--- /dev/null
+++ b/doc/ru_RU/project-permissions.markdown
@@ -0,0 +1,55 @@
+Права доступа к проекту
+=======================
+
+
+
+Все проекты изолированы и отделены друг от друга. Доступ к проекту может назначать владелец проекта.
+
+
+
+Каждый пользователь и каждая группа могут иметь разные назначенные роли. Имеются [три типа ролей для проектов](roles.markdown):
+
+
+
+- Менеджер проекта
+
+
+
+- Участник проекта
+
+
+
+- Наблюдатель проекта
+
+
+
+Только администратор может иметь полный доступ ко всему.
+
+
+
+Назначение ролей доступно через **Меню -\> Настройки -\> Разрешения**
+
+
+
+![Project Permissions](screenshots/project-permissions.png)
+
+Права доступа к проекту
+
+
+
+Если вы выберите **Разрешить любому**, то все пользователи Канборд будут считаться участниками Проекта. В таком случае, нет необходимости назначать роли. Потому что, разрешения, назначенные пользователям и группам, на доступ к Проекту не будут работать.
+
+
+
+Приватный проект не позволяет устанавливать разрешения.
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/project-types.markdown b/doc/ru_RU/project-types.markdown
new file mode 100644
index 00000000..d1169241
--- /dev/null
+++ b/doc/ru_RU/project-types.markdown
@@ -0,0 +1,27 @@
+Типы проектов
+=============
+
+
+
+Проекты могут быть двух типов:
+
+
+
+| Тип | Описание |
+|-----------------|----------------------------------------------------------|
+| Командный проект| В проекте могут принимать участие пользователи и группы |
+| Приватный проект| Проект принадлежит только одному пользователю, к проекту нельзя присоединить участников|
+
+
+
+- Командный проект могут создавать только пользователи с ролью Администратор и Менеджер.
+- Приватный проект могут создавать все пользователи.
+
+
+[Читать документацию про роли в Kanboard](roles.markdown)
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/project-views.markdown b/doc/ru_RU/project-views.markdown
new file mode 100644
index 00000000..899b366a
--- /dev/null
+++ b/doc/ru_RU/project-views.markdown
@@ -0,0 +1,154 @@
+Представления Доска, Календарь, Список и Гант
+=============================================
+
+
+
+В каждом проекте задачи могут быть отображены в разных представлениях: **Доска, Календарь, Список и Гант**. Для отображения представлений используется фильтр в верхней части рабочей панели. Для поиска используется [расширенный синтаксис](ext-search.markdown).
+
+
+
+Представление - Доска[¶](#board-view "Ссылка на этот заголовок")
+----------------------------------------------------------------
+
+
+
+![Board view](screenshots/board-view.png)
+
+Представление задач в виде доски
+
+
+
+- В этом представлении вы можете мышкой перемещать задачи между колонками.
+
+
+
+- Также, для перемещения задач на доске, можно использовать горячие клавиши **“v b”**.
+
+
+
+- Затемнения вокруг задачи показывает активную или измененную задачу.
+
+
+
+![Board Task Limit](screenshots/board-task-limit.png)
+
+Лимит задач на Доске
+
+
+
+Когда лимит задач для колонки достигнут, тогда фон колонки становится красный. Это означает, что слишком много задач выполняются одновременно.
+
+
+
+[Ознакомится с настройками Доски](board-configuration.markdown)
+
+
+
+Представление - Календарь[¶](#calendar-view "Ссылка на этот заголовок")
+-----------------------------------------------------------------------
+
+
+
+![Calendar view](screenshots/calendar-view.png)
+
+Представление в виде календаря
+
+
+
+- В этом представлении вы можете видеть задачи на конкретные даты.
+
+
+
+- Вы можете сделать настройки, которые позволят вам видеть задачи в работе.
+
+
+
+- Вы можете использовать горячие клавиши **“v c”** для перехода на представление Календарь.
+
+
+
+- [Ознакомится с настройками Календаря](calendar-configuration.markdown)
+
+
+
+Представление - Список[¶](#list-view "Ссылка на этот заголовок")
+----------------------------------------------------------------
+
+
+
+![List view](screenshots/list-view.png)
+
+Представление списком.
+
+
+
+- С помощью этого представления все результаты отображаются в виде таблицы.
+
+
+
+- Для быстрого перехода на представление Список вы можете использовать горячие клавиши **“v l”**.
+
+
+
+Представление - Гант.[¶](#gantt-view "Ссылка на этот заголовок")
+----------------------------------------------------------------
+
+
+
+![Gantt view](screenshots/gantt-view.png)
+
+Представление диаграммой Ганта.
+
+
+
+- Представление Гант отображает задачи горизонтальными графиками
+
+
+
+- Для построения графика используется дата начала и срок выполнения
+
+
+
+- Для быстрого перехода к представлению Гант используйте горячие клавиши : **“v g”**
+
+
+
+Обзор Проекта[¶](#project-overview "Ссылка на этот заголовок")
+--------------------------------------------------------------
+
+
+
+![Project overview](screenshots/project-view.png)
+
+Представление проекта
+
+
+
+- Отображает описание проекта
+
+
+
+- Показывает прикреплённые и загруженные документы проекта
+
+
+
+- Показывает список участников проекта
+
+
+
+- Показывает последнюю активность в проекте
+
+
+
+
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/recurring-tasks.markdown b/doc/ru_RU/recurring-tasks.markdown
new file mode 100644
index 00000000..f98d9968
--- /dev/null
+++ b/doc/ru_RU/recurring-tasks.markdown
@@ -0,0 +1,67 @@
+Повторяющиеся задачи
+====================
+
+
+
+Для соответсвия методологии Канбан, повторяющиеся задачи не имеют в качестве основы дату, а запускаются при наступлении событий на Доске.
+
+
+
+- Повторяющиеся задачи копируются (появляются вновь) в первой колонке Доски когда наступает определенное событие
+
+
+
+- Дата завершения (срок выполнения задачи) пересчитывается автоматически
+
+
+
+- Each task records the task id of the parent task that created it and the child task created
+
+
+
+Настройка[¶](#configuration "Ссылка на этот заголовок")
+-------------------------------------------------------
+
+
+
+Перейдите на страницу детального представления задачи или используйте выпадающее меню на доске, выберите **Редактировать повторы**.
+
+
+
+![Recurring task](screenshots/recurring-tasks.png)
+
+Редактировать повторы.
+
+
+
+В редактировании повторов имеется выбор 3 триггеров для генерации периодической задачи:
+
+
+
+- Когда задача перемещается из первой колонки
+
+
+
+- Когда задача перемещается в последнюю колонку
+
+
+
+- Когда задача закрывается
+
+
+
+Дата завершения, если установлена для текущей задачи, может быть пересчитана с учетом **Коэффициента для расчета новой даты** и **Период для рассчета новой даты завершения** (например, 7 дней, 6 месяцев, 1 год). Базовой датой вычисления новой даты завершения может быть и имеющаяся дата завершения, или дата действия.
+
+
+
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/requirements.markdown b/doc/ru_RU/requirements.markdown
new file mode 100644
index 00000000..aa6933b9
--- /dev/null
+++ b/doc/ru_RU/requirements.markdown
@@ -0,0 +1,137 @@
+Системные требования
+====================
+
+
+
+На сервере[¶](#server-side "Ссылка на этот заголовок")
+------------------------------------------------------
+
+
+
+### Поддерживаемые операционные системы[¶](#compatible-operating-systems "Ссылка на этот заголовок")
+
+|Операционная система|
+|-----------------------------------|
+|Linux Ubuntu Xenial Xerus 16.04 LTS|
+| Linux Ubuntu Trusty 14.04 LTS|
+| Linux Centos 6.x|
+| Linux Centos 7.x|
+| Linux Redhat 6.x|
+|Linux Redhat 7.x|
+| Linux Debian 8|
+| FreeBSD 10.x|
+| Microsoft Windows 2012 R2|
+| Microsoft Windows 2008|
+
+
+
+### Поддерживаемые базы данных[¶](#compatible-databases "Ссылка на этот заголовок")
+
+
+|База данных |
+|----------------------|
+|Sqlite 3.x |
+|Mysql \>= 5.5 |
+|MariaDB \>= 10 |
+| Postgresql \>= 9.3 |
+
+
+
+Какую базу данных выбрать?
+
+
+| Тип | Когда использовать |
+|--------------------|--------------------------------------------------------|
+| Sqlite | Один пользователь или небольшая команда |
+| Mysql/Postgres | Большая команда, конфигурация высокой доступности |
+
+
+
+
+Не используйте Sqlite на смонтированном NFS. Используйте Sqlite только на дисках с высокой скоростью чтение/запись.
+
+
+
+### Совместимые веб сервера[¶](#compatible-web-servers "Ссылка на этот заголовок")
+
+Apache HTTP Server, Nginx , Microsoft IIS
+
+Канборд изначально сконфигурирован для работы с Apache (URL rewriting).
+
+
+
+### Версии PHP[¶](#php-versions "Ссылка на этот заголовок")
+
+
+PHP \>= 5.3.3, PHP 5.4, PHP 5.5, PHP 5.6, PHP 7.x
+
+
+
+### Требуемые расширения для PHP[¶](#php-extensions-required "Ссылка на этот заголовок")
+
+
+| Требуемые расширения для PHP | Примечание |
+|----------------------------------|-----------------------------------------|
+| pdo\_sqlite | Только при использовании Sqlite |
+| pdo\_mysql | Только при использоании Mysql/MariaDB |
+| pdo\_pgsql | Только при использовании Postgres |
+| gd |   |
+| mbstring |   |
+| openssl |   |
+| json |   |
+| hash |   |
+| ctype |   |
+| session |   |
+| ldap | Только для аутентификации LDAP |
+| Zend OPcache | Рекомендуется |
+
+
+### Рекомендуется[¶](#recommendations "Ссылка на этот заголовок")
+
+
+
+- Современная Linux или Unix операционная система.
+
+
+
+- Высокая производительность достигается с последней версией PHP со включенным кешированием OPcode.
+
+
+
+На клиенте[¶](#client-side "Ссылка на этот заголовок")
+------------------------------------------------------
+
+
+
+### Браузеры[¶](#browsers "Ссылка на этот заголовок")
+
+
+
+Используйте современные браузеры, обновленные до последней версии:
+
+|Браузер |
+|-----------------|
+| Safari |
+| Google Chrome |
+| Mozilla Firefox |
+| Microsoft Internet Explorer \>= 11|
+| Microsoft Edge |
+
+
+
+### Устройства[¶](#devices "Ссылка на этот заголовок")
+
+
+| Устройство | Разрешение экрана |
+|--------------------------------------|--------------------------------------|
+| Персональный компьютер или ноутбук | \>= 1366 x 768 |
+| Планшет | \>= 1024 x 768 |
+
+
+Канборд, пока, не оптимизирован для работы на смартфонах. Конечно, он работает, но пользовательский интерфейс не совсем удобный для использования.
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/reverse-proxy-authentication.markdown b/doc/ru_RU/reverse-proxy-authentication.markdown
new file mode 100644
index 00000000..2d97a6e4
--- /dev/null
+++ b/doc/ru_RU/reverse-proxy-authentication.markdown
@@ -0,0 +1,138 @@
+Аутентификация Reverse Proxy
+============================
+
+
+
+Этот метод аутентификации часто используется для [SSO](https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D1%85%D0%BD%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%B5%D0%B4%D0%B8%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B2%D1%85%D0%BE%D0%B4%D0%B0) (Технология единого входа), особенно удобно в больших организациях.
+
+
+
+Аутентификация выполняется с помощью другой системы, поэтому Канборд не знает вашего пароля и допускает вас к приложению, так как вы уже прошли аутентификацию.
+
+
+
+Требования[¶](#requirements "Ссылка на этот заголовок")
+-------------------------------------------------------
+
+
+
+- Правильно сконфигурированный reverse proxy
+
+
+
+или
+
+
+
+- Apache Auth на том же сервере
+
+
+
+Как это работает?[¶](#how-does-this-work "Ссылка на этот заголовок")
+--------------------------------------------------------------------
+
+
+
+1. Ваш reverse proxy аутентифицирует пользователя и посылает имя пользователя через заголовок HTTP.
+
+
+
+2. Канборд извлекает имя пользователя из запроса
+
+
+
+ - Пользователь создается в Канборд автоматически (опция настраивается)
+
+
+
+ - Открывается новая сессия Канборд (дополнительная аутентификация в Канборд не нужна)
+
+
+
+Инструкция по установке[¶](#installation-instructions "Ссылка на этот заголовок")
+---------------------------------------------------------------------------------
+
+
+
+### Настройка вашего reverse proxy[¶](#setting-up-your-reverse-proxy "Ссылка на этот заголовок")
+
+
+
+В рамках данной документации не рассматривается установка и настройка reverse proxy. Вы должны убедится, что логин пользователя отправляется с reverse proxy в заголовке HTTP.
+
+
+
+### Настройки Канборда[¶](#setting-up-kanboard "Ссылка на этот заголовок")
+
+
+
+Создайте свой файл конфигурации `config.php` или скопируйте конфигурацию из файла `config.default.php`:
+
+
+
+ <?php
+
+
+
+ // Enable/disable reverse proxy authentication
+
+ define('REVERSE_PROXY_AUTH', true); // Set this value to true
+
+
+
+ // The HTTP header to retrieve. If not specified, REMOTE_USER is the default
+
+ define('REVERSE_PROXY_USER_HEADER', 'REMOTE_USER');
+
+
+
+ // The default Kanboard admin for your organization.
+
+ // Since everything should be filtered by the reverse proxy,
+
+ // you should want to have a bootstrap admin user.
+
+ define('REVERSE_PROXY_DEFAULT_ADMIN', 'myadmin');
+
+
+
+ // The default domain to assume for the email address.
+
+ // In case the username is not an email address, it
+
+ // will be updated automatically as USER@mydomain.com
+
+ define('REVERSE_PROXY_DEFAULT_DOMAIN', 'mydomain.com');
+
+
+
+Примечание:
+
+
+
+- Если proxy находится на том же сервере, что и Канборд, то в соответствии с протоколом \<[http://www.ietf.org/rfc/rfc3875](http://www.ietf.org/rfc/rfc3875)\>\`\_\_ имя заголовка будет `REMOTE_USER`. Например, Apache добавляет `REMOTE_USER` по умолчанию, если установлено `Require valid-user`.
+
+
+
+- Если Apache служит reverse proxy для другого Apache выполняющего Канборд, то заголовок `REMOTE_USER` не установлен (это же относится к IIS и Nginx).
+
+
+
+- Если у вас имеется действующий reverse proxy, то [проект HTTP ICAP](http://tools.ietf.org/html/draft-stecher-icap-subid-00#section-3.4) предполагает, что заголовок должен быть `X-Authenticated-User`. Этот стандарт де-факто был принят разными инструментами.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/roles.markdown b/doc/ru_RU/roles.markdown
new file mode 100644
index 00000000..5af8a937
--- /dev/null
+++ b/doc/ru_RU/roles.markdown
@@ -0,0 +1,44 @@
+Пользовательские роли
+=====================
+
+
+
+Роли в приложениях[¶](#application-roles "Ссылка на этот заголовок")
+
+--------------------------------------------------------------------
+
+
+
+Каждый пользователь системы Канборд имеет одну из этих ролей
+
+
+
+| Роль | Описание |
+|----------------|-----------------------------------------------------------|
+| Администратор | Имеет доступ ко всему |
+| Менеджер | Может создавать командные проекты, но не может изменять настройки приложения |
+| Пользователь | Может создавать только приватные проекты |
+
+
+
+
+Роли в проектах[¶](#project-roles "Ссылка на этот заголовок")
+
+-------------------------------------------------------------
+
+
+
+В каждом командном проекте могут быть назначены разные роли для пользователей и групп:
+
+
+| Роль | Описание |
+|-----------------|----------------------------------------------------------|
+| Менеджер проекта| Может изменять настройки проекта, имеет доступ к диаграмме Ганта и отчетам |
+| Участник проекта| Может создавать задачи и пользоваться доской |
+| Наблюдатель проекта | Имеет доступ к доске и задачам только на просмотр (чтение) |
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/rss.markdown b/doc/ru_RU/rss.markdown
new file mode 100644
index 00000000..8b8ad34f
--- /dev/null
+++ b/doc/ru_RU/rss.markdown
@@ -0,0 +1,58 @@
+RSS/Atom подписки
+=================
+
+
+
+Канборд поддерживает RSS ленты для проектов и пользователей.
+
+
+
+- RSS/Atom лента для проекта - содержит только активность в проекте
+
+
+
+- RSS/Atom лента пользователя - содержит поток активности пользователя во всех проектах, в которых пользователь является участником
+
+
+
+Эти подписки доступны только при включенном общем доступе в пользовательском профиле или в настройках проекта.
+
+
+
+Включение/выключение RSS ленты проекта[¶](#enable-disable-project-rss-feeds "Ссылка на этот заголовок")
+-------------------------------------------------------------------------------------------------------
+
+
+
+Перейдите в **Настройки проекта** -\> **Общий доступ**
+
+
+
+![Disable public access](screenshots/project-disable-sharing.png)
+
+Выключение общего доступа.
+
+
+
+Включение/выключение RSS ленты пользователя[¶](#enable-disable-user-rss-feeds "Ссылка на этот заголовок")
+---------------------------------------------------------------------------------------------------------
+
+
+
+Перейдите в **Мой профиль** -\> **Общий доступ**
+
+
+
+Ссылка на RSS ленту защищена случайным ключом, только пользователи, которые знают URL ссылку, могут иметь доступ к ленте.
+
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/screenshots.markdown b/doc/ru_RU/screenshots.markdown
new file mode 100644
index 00000000..f4a845ef
--- /dev/null
+++ b/doc/ru_RU/screenshots.markdown
@@ -0,0 +1,74 @@
+Добавление снимков экрана (скриншота)
+=====================================
+
+
+
+Для экономии времени вы можете копировать и вставлять изображения прямо в Канборде. Загруженные изображения прикрепляются к задаче.
+
+
+
+Например, очень удобно для решения проблемы прикрепить снимок экрана.
+
+
+
+Вы можете добавить снимок экрана прямо из Доски нажав на выпадающее меню задачи и выбрав **Прикрепить картинку** или на странице детального просмотра задачи.
+
+
+
+![Drop-down screenshot menu](screenshots/dropdown-screenshot.png)
+
+
+
+Выпадающее меню задачи - **Прикрепить картинку**.
+
+
+
+Для добавления нового снимка экрана (скриншота), сделайте снимок экрана (нажмите клавиши Ctrl+PrtScn) и вставьте его используя сочетания клавиш CTRL+V или Command+V
+
+
+
+![Screenshot page](screenshots/task-screenshot.png)
+
+Прикрепить картинку.
+
+
+
+В Mac OS X вы можете использовать следующие горячие клавиши для создания снимка экрана:
+
+
+
+- Command-Control-Shift-3: Делает снимок экрана и сохраняет его в буфер обмена
+
+
+
+- Command-Control-Shift-4 и выделите необходимую область на экране: Делает снимок экрана для области экрана и сохраняет ее в буфер обмена
+
+
+
+- Command-Control-Shift-4, затем пробел, затем нажать на окно: Делает снимок окна и сохраняет его в буфер обмена
+
+
+
+Имеется много разных других программ для создания снимков с экрана с примечаниями и разными формами.
+
+
+
+**Заметка**: Эта возможность работает не во всех браузерах. Например, не работает в Safari из-за этой ошибки: [https://bugs.webkit.org/show\_bug.cgi?id=49141](https://bugs.webkit.org/show_bug.cgi?id=49141)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/search.markdown b/doc/ru_RU/search.markdown
new file mode 100644
index 00000000..14c3f5b1
--- /dev/null
+++ b/doc/ru_RU/search.markdown
@@ -0,0 +1,24 @@
+Поиск
+
+=====
+
+
+
+Для работы поиска включите JavaScript в браузере.
+
+
+
+Здесь можно делать поиск по всем разделам этой документации. Введите ключевые слова в текстовое поле и нажмите кнопку «искать». Внимание: будут найдены только те страницы, в которых есть все указанные слова. Страницы, где есть только часть этих слов, отобраны не будут.
+
+
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/sharing-projects.markdown b/doc/ru_RU/sharing-projects.markdown
new file mode 100644
index 00000000..2a48e908
--- /dev/null
+++ b/doc/ru_RU/sharing-projects.markdown
@@ -0,0 +1,82 @@
+Публичные доски и задачи
+========================
+
+
+
+По умолчанию, Доска имеет приватный доступ, но имеется возможность сделать Доску публичной.
+
+
+
+Публичная доска **не может быть изменена (имеется только доступ на чтение)**. Доступ к доске защищен случайно сгенерированным ключом, только пользователи знающие правильный URL могут увидеть публичную Доску.
+
+
+
+Публичная Доска автоматически обновляется каждые 60 секунд. Детали задач, также, доступны только для чтения.
+
+
+
+Пример использования:
+
+
+
+- Публикация вашей Доски для кого-либо снаружи (работник из другой организации)
+
+
+
+- Отображение Доски на большом экране в вашем офисе
+
+
+
+Включение общего доступа[¶](#enable-public-access "Ссылка на этот заголовок")
+-----------------------------------------------------------------------------
+
+
+
+Выберите ваш проект, затем нажмите на ссылку **“Общий доступ”** и в завершении нажмите на кнопку **“Включить общий доступ”**
+
+
+
+![Enable public access](screenshots/project-enable-sharing.png)
+
+Включение общего доступа
+
+
+
+Когда общий доступ к проекту включен, сгенерируется несколько ссылок:
+
+
+
+- Ссылка для просмотра
+
+
+
+- RSS лента
+
+
+
+- iCalendar данные
+
+
+
+![Disable public access](screenshots/project-disable-sharing.png)
+
+Отключить общий доступ.
+
+
+
+Вы можете выключить общий доступ к проекту в любой момент.
+
+
+
+Каждый раз, когда вы включаете или выключаете общий доступ, генерируется новый ключ. **Доступ по предыдущей ссылке будет невозможен**.
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/sqlite-database.markdown b/doc/ru_RU/sqlite-database.markdown
new file mode 100644
index 00000000..202452cb
--- /dev/null
+++ b/doc/ru_RU/sqlite-database.markdown
@@ -0,0 +1,96 @@
+Настройка базы данных Sqlite
+============================
+
+
+
+Канборд использует для хранения данных Sqlite по умолчанию. Все задачи, проекты и учетные записи пользователей храняться в этой базе данных.
+
+
+
+База данных Sqlite хранит данные в файле `db.sqlite` в директории `data`.
+
+
+
+Экспорт/Резервное копирование[¶](#export-backup "Ссылка на этот заголовок")
+---------------------------------------------------------------------------
+
+
+
+### Командная строка[¶](#command-line "Ссылка на этот заголовок")
+
+
+
+Создание резервных копий выполняется просто, надо скопировать файл `data/db.sqlite` туда, где у вас будут хранится резервные копии.
+
+
+
+### Пользовательский интерфейс[¶](#user-interface "Ссылка на этот заголовок")
+
+
+
+Также, в любое время, вы можете скачать базу данных прямо через меню **Настройки**.
+
+
+
+Выгружаемая база данных упакована с помощью Gzip и имя базы выглядитит как `db.sqlite.gz`.
+
+
+
+Импорт/Восстановление[¶](#import-restoration "Ссылка на этот заголовок")
+------------------------------------------------------------------------
+
+
+
+Загрузить базу данных через пользовательский интерфейс невозможно. Восстановление должно быть выполнено вручную, когда никто не работает с программой.
+
+
+
+- Для восстановления резервной копии, достаточно заменить рабочий файл `data/db.sqlite`.
+
+
+
+- Для разархивирования базы данных упакованной с помощью gzip, выполните следующую команду в терминале: `gunzip db.sqlite.gz`.
+
+
+
+Оптимизация[¶](#optimization "Ссылка на этот заголовок")
+--------------------------------------------------------
+
+
+
+Время от времени, рекомендуется оптимизировать базу данных выполнив команду `VACUUM`. Эта команда пересоздает всю базу данных и используется в следующих случаях:
+
+
+
+- Для уменьшения размера файла базы данных. В процессе работы пользователей, после удаления записей, в базе данных остается пустое пространство и, соответственно, размер файла базы данных остается прежним.
+
+
+
+- Дефрагментация, база данных фрагментирована выполнением частыми вставками или обновлениями.
+
+
+
+### Выполнение оптимизации в командной строке[¶](#from-the-command-line "Ссылка на этот заголовок")
+
+
+
+ sqlite3 data/db.sqlite 'VACUUM'
+
+
+
+### Выполнение оптимизации через пользовательский интерфейс[¶](#from-the-user-interface "Ссылка на этот заголовок")
+
+
+
+Перейдите в правое выпадающее меню **Настройки** и нажмите на ссылку **Оптимизировать базу данных**
+
+
+
+Для дополнительной информации, изучите [документацию Sqlite](https://sqlite.org/lang_vacuum.html).
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/subtasks.markdown b/doc/ru_RU/subtasks.markdown
new file mode 100644
index 00000000..e9e9bcd3
--- /dev/null
+++ b/doc/ru_RU/subtasks.markdown
@@ -0,0 +1,111 @@
+Подзадачи
+=========
+
+
+Подзадачи - это прекрасная возможность разделить основную задачу на части.
+
+
+
+Каждая подзадача:
+
+
+
+- Может быть назначена участнику проекта
+
+
+
+- Имеет 3 разных статуса: **Для исполнения**, **В работе**, **Выполнено**
+
+
+
+- Имеет информацию по отслеживанию времени: **затраченное время** и **запланированное время**
+
+
+
+- Может быть перемещена в списке, для изменения порядка выполнения
+
+
+
+Создание подзадачи[¶](#creating-subtasks "Ссылка на этот заголовок")
+--------------------------------------------------------------------
+
+
+
+В детальном представлении задачи, в левой боковой панели нажмите **Добавить подзадачу**:
+
+
+
+![Add a subtask](screenshots/add-subtask.png)
+
+Добавление подзадачи.
+
+
+
+Вы, также, можете быстро добавить подзадачу нажав на заголовок:
+
+
+
+![Add a subtask from the task view](screenshots/add-subtask-shortcut.png)
+
+Добавление подзадачи на странице детального просмотра задачи.
+
+
+
+Изменение статуса подзадачи[¶](#change-subtask-status "Ссылка на этот заголовок")
+---------------------------------------------------------------------------------
+
+
+
+Когда вы нажимаете на заголовок подзадачи стату меняется:
+
+
+
+![Subtask in progress](screenshots/subtask-status-inprogress.png)
+
+Выполнение подзадачи.
+
+
+
+Иконка перед названием подзадачи обновляется в соответсвии со статусом.
+
+
+
+![Subtask done](screenshots/subtask-status-done.png)
+
+Подзадача выполнена.
+
+
+
+**Заметка**: Когда задача закрыта, то все подзадачи меняют статус на **Выполнена**.
+
+
+
+Таймер подзадачи[¶](#subtask-timer "Ссылка на этот заголовок")
+--------------------------------------------------------------
+
+
+
+- Когда подзадача выполняется, таймер должен быт запущен. Таймер можно запустить и остановить в любое время.
+
+
+
+- Время таймера записывается автоматически в затраченное время. Так же, вы можете изменить вручную значение **затраченного времени** при редактировании подзадачи.
+
+
+
+- Подсчитываемое время округляется до 15 минут. Эта информация записывается в отдельную таблицу.
+
+
+
+- Время, затраченное на выполнение задачи, и запланированнное время обновляется автоматически, в соответсвии с суммой всех подзадач.
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/suse-installation.markdown b/doc/ru_RU/suse-installation.markdown
new file mode 100644
index 00000000..6d508708
--- /dev/null
+++ b/doc/ru_RU/suse-installation.markdown
@@ -0,0 +1,36 @@
+Инсталяция на OpenSuse
+======================
+
+
+
+OpenSuse Leap 42.1[¶](#opensuse-leap-42-1 "Ссылка на этот заголовок")
+---------------------------------------------------------------------
+
+
+
+ sudo zypper install php5 php5-sqlite php5-gd php5-json php5-mcrypt php5-mbstring php5-openssl
+
+ cd /srv/www/htdocs
+
+ sudo wget https://kanboard.net/kanboard-latest.zip
+
+ sudo unzip kanboard-latest.zip
+
+ sudo chmod -R 777 kanboard
+
+ sudo rm kanboard-latest.zip
+
+
+
+
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/swimlanes.markdown b/doc/ru_RU/swimlanes.markdown
new file mode 100644
index 00000000..c7403c99
--- /dev/null
+++ b/doc/ru_RU/swimlanes.markdown
@@ -0,0 +1,81 @@
+Дорожки
+=======
+
+
+
+Дорожки - это горизонтальное разделение вашей Доски. Например, очень удобно разделять релизы программ, разделить ваши задачи для разных продуктов, команд или чего-то еще.
+
+
+
+Доска с дорожками[¶](#board-with-swimlanes "Ссылка на этот заголовок")
+----------------------------------------------------------------------
+
+
+
+![Swimlanes](screenshots/swimlanes.png)
+
+Дорожки
+
+
+
+- Вы можете свернуть дорожку нажав на иконку слева
+
+
+
+- “Стандатная дорожка” всегда расположена сверху
+
+
+
+Управление дорожками[¶](#managing-swimlanes "Ссылка на этот заголовок")
+-----------------------------------------------------------------------
+
+
+
+- Все проекты имеют дорожку по умолчанию - **Стандартная дорожка**
+
+
+
+- Если имеется больше одной дорожки, то на Доске будут показаны все имеющиеся дорожки.
+
+
+
+- Вы можете перемещать мышкой задачи между дорожками.
+
+
+
+Для настройки дорожек перейдите на страницу **настройки проекта** (Меню -\> Настройки) и нажмите **Дорожки** (слева).
+
+
+
+![Swimlanes Configuration](screenshots/swimlane-configuration.png)
+
+Настройка Дорожек.
+
+
+
+Теперь вы можете добавить новую дорожку или переименовать стандартную дорожку. Также, вы можете выключить дорожку или изменить расположение любой дорожки.
+
+
+
+- Стандартная дорожка всегда расположена сверху, но вы можете ее выключить и она не будет отображаться на Доске.
+
+
+
+- Выключенные дорожки не отображаются на Доске.
+
+
+
+- **Удаление дорожки не влечет за собой удаление расположенных на этой дорожке задач**, эти задачи будут перемещены в “Стандартную дорожку”.
+
+
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/syntax-guide.markdown b/doc/ru_RU/syntax-guide.markdown
new file mode 100644
index 00000000..9d7414a8
--- /dev/null
+++ b/doc/ru_RU/syntax-guide.markdown
@@ -0,0 +1,246 @@
+Руководство по синтаксису
+=========================
+
+
+
+Канборд использует [Markdown синтаксис](https://ru.wikipedia.org/wiki/Markdown) для комментариев или описания задач. Далее приведены примеры:
+
+
+
+Жирный и курсив[¶](#bold-and-italic "Ссылка на этот заголовок")
+---------------------------------------------------------------
+
+- Жирный текст: Используйте 2 звездочки или 2 подчеркивания вокруг слов(а)
+
+
+
+- Курсив: Используйте 1 звездочку или 1 подчеркивание вокруг слов(а)
+
+
+
+### Пример написания (источник)[¶](#source "Ссылка на этот заголовок")
+
+
+
+ This **word** is very __important__.
+
+
+
+ And here, an *italic* word with one _underscore_.
+
+
+
+### Результат[¶](#result "Ссылка на этот заголовок")
+
+
+
+This **word** is very **important**.
+
+
+
+And here, an *italic* word with one *underscore*.
+
+
+
+Неупорядоченные списки[¶](#unordered-lists "Ссылка на этот заголовок")
+----------------------------------------------------------------------
+
+
+
+Неупорядоченный список использует звездочки, минусы или плюсы вначале абзаца
+
+
+
+### Пример написания (источник)[¶](#id1 "Ссылка на этот заголовок")
+
+
+
+ - Item 1
+
+ - Item 2
+
+ - Item 3
+
+
+
+ or
+
+
+
+ * Item 1
+
+ * Item 2
+
+ * Item 3
+
+
+
+### Результат[¶](#id2 "Ссылка на этот заголовок")
+
+
+
+- Item 1
+
+- Item 2
+
+- Item 3
+
+
+
+Упорядоченные списки[¶](#ordered-lists "Ссылка на этот заголовок")
+------------------------------------------------------------------
+
+
+
+Упорядоченные списки префиксом имеют цифру:
+
+
+
+### Пример написания (источник)[¶](#id3 "Ссылка на этот заголовок")
+
+
+
+ 1. Do that first
+
+ 2. Do this
+
+ 3. And that
+
+
+
+### Результат[¶](#id4 "Ссылка на этот заголовок")
+
+
+
+1. Do that first
+
+2. Do this
+
+3. And that
+
+
+
+Ссылки[¶](#links "Ссылка на этот заголовок")
+--------------------------------------------
+
+
+
+### Пример написания (источник)[¶](#id5 "Ссылка на этот заголовок")
+
+
+
+ [My link title](https://kanboard.net/)
+
+
+
+ <https://kanboard.net>
+
+
+
+### Результат[¶](#id6 "Ссылка на этот заголовок")
+
+
+
+[My link title](https://kanboard.net/)
+
+
+
+[https://kanboard.net](https://kanboard.net)
+
+
+
+Исходный код[¶](#source-code "Ссылка на этот заголовок")
+--------------------------------------------------------
+
+
+
+### Код встраиваемый в текст[¶](#inline-code "Ссылка на этот заголовок")
+
+
+
+Используйте обратные кавычки (переключитесь на анлийскую раскладку и нажмите ё)
+
+
+
+ Execute this command: `tail -f /var/log/messages`.
+
+
+
+### Результат[¶](#id7 "Ссылка на этот заголовок")
+
+
+
+Execute this command: `tail -f /var/log/messages`{.docutils .literal}.
+
+
+
+### Блоки кода[¶](#code-blocks "Ссылка на этот заголовок")
+
+
+
+Используйте 3 обратных кавычки с указанием языка программирования
+
+
+
+ ```php
+
+ <?php
+
+
+
+ phpinfo();
+
+
+
+ ?>
+
+ ```
+
+
+
+### Результат[¶](#id8 "Ссылка на этот заголовок")
+
+
+
+ <?php
+
+
+
+ phpinfo();
+
+
+
+ ?>
+
+
+
+Заголовки[¶](#titles "Ссылка на этот заголовок")
+------------------------------------------------
+
+
+
+### Пример написания (источник)[¶](#id9 "Ссылка на этот заголовок")
+
+
+
+ # Title level 1
+
+
+
+ ## Title level 2
+
+
+
+ ### Title level 3
+
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/task-links.markdown b/doc/ru_RU/task-links.markdown
new file mode 100644
index 00000000..74c6f247
--- /dev/null
+++ b/doc/ru_RU/task-links.markdown
@@ -0,0 +1,93 @@
+Ссылки на задачи
+================
+
+
+
+Задачи могут быть созданы вместе с предопределенными связями:
+
+
+
+![Task Links](screenshots/task-links.png)
+
+Ссылки на задачи
+
+
+
+Связи по умолчанию:
+
+
+
+- **относится к**
+
+
+
+- **блокирована**| блокирует
+
+
+
+- **блокирует** | блокирована
+
+
+
+- **дублирована** | дублирует
+
+
+
+- **дублирует** | дублирована
+
+
+
+- **является продолжением** | является началом для
+
+
+
+- **является началом для** | является продолжением
+
+
+
+- **часть вехи** | является вехой для
+
+
+
+- **является вехой для** | часть вехи
+
+
+
+- **исправлено** | исправляет
+
+
+
+- **исправляет** | исправлено
+
+
+
+Эти названия могут быть быть изменены в настройках приложения.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/tests.markdown b/doc/ru_RU/tests.markdown
new file mode 100644
index 00000000..2373d030
--- /dev/null
+++ b/doc/ru_RU/tests.markdown
@@ -0,0 +1,262 @@
+Автоматизированные тесты
+========================
+
+
+
+[PHPUnit](https://phpunit.de/) используется для запуска автоматизированных тестов в Канборд.
+
+
+
+Вы можете запускать тесты для разных баз данных (Sqlite, Mysql and Postgresql), чтобы убедится, что результаты будут одинаковые.
+
+
+
+Требования[¶](#requirements "Ссылка на этот заголовок")
+-------------------------------------------------------
+
+
+
+- Компьютер Linux/Unix
+
+
+
+- PHP cli
+
+
+
+- Установленный PHPUnit
+
+
+
+- Mysql и Postgresql (опционально)
+
+
+
+Unit тесты[¶](#unit-tests "Ссылка на этот заголовок")
+-----------------------------------------------------
+
+
+
+### Тестирование с Sqlite[¶](#test-with-sqlite "Ссылка на этот заголовок")
+
+
+
+Sqlite тестирование использует базу данных в памяти, без использования записи на файловую систему.
+
+
+
+Конфигурационный файл PHPUnit - `tests/units.sqlite.xml`. Из директории Kanboard запустите команду `phpunit -c tests/units.sqlite.xml`.
+
+
+
+Пример:
+
+
+
+ phpunit -c tests/units.sqlite.xml
+
+
+
+ PHPUnit 5.0.0 by Sebastian Bergmann and contributors.
+
+
+
+ ............................................................... 63 / 649 ( 9%)
+
+ ............................................................... 126 / 649 ( 19%)
+
+ ............................................................... 189 / 649 ( 29%)
+
+ ............................................................... 252 / 649 ( 38%)
+
+ ............................................................... 315 / 649 ( 48%)
+
+ ............................................................... 378 / 649 ( 58%)
+
+ ............................................................... 441 / 649 ( 67%)
+
+ ............................................................... 504 / 649 ( 77%)
+
+ ............................................................... 567 / 649 ( 87%)
+
+ ............................................................... 630 / 649 ( 97%)
+
+ ................... 649 / 649 (100%)
+
+
+
+ Time: 1.22 minutes, Memory: 151.25Mb
+
+
+
+ OK (649 tests, 43595 assertions)
+
+
+
+### Тестирование с Mysql[¶](#test-with-mysql "Ссылка на этот заголовок")
+
+
+
+У вас должна быть локально установлена база данных Mysql или MariaDb.
+
+
+
+По умолчанию, используются следующие учетные данные:
+
+
+
+- Hostname: **localhost**
+
+- Username: **root**
+
+- Password: none
+
+- Database: **kanboard\_unit\_test**
+
+
+
+При каждом выполнении база данных удаляется и создается снова.
+
+
+
+Конфигурационный файл HPUnit - `tests/units.mysql.xml`. Из директории Kanboard запустите команду `phpunit -c tests/units.mysql.xml`.
+
+
+
+### Тестирование с Postgresql[¶](#test-with-postgresql "Ссылка на этот заголовок")
+
+
+
+У вас должен быть локально установлен Postgresql.
+
+
+
+По умолчанию, используются следующие учетные данные:
+
+
+
+- Hostname: **localhost**
+
+- Username: **postgres**
+
+- Password: none
+
+- Database: **kanboard\_unit\_test**
+
+
+
+Убедитесь, что пользователь `postgres` может создавать и удалять базу данных. База данных пересоздается при каждом выполнении теста.
+
+
+
+Конфигурационных файл PHPUnit - `tests/units.postgres.xml`. Из директории Kanboard, запустите команду `phpunit -c tests/units.postgres.xml`.
+
+
+
+Тесты интеграции[¶](#integration-tests "Ссылка на этот заголовок")
+------------------------------------------------------------------
+
+
+
+Фактически тестируются только вызовы API.
+
+
+
+Реальные HTTP calls выполняются с этими тестами. Поэтому, необходим локальный экземпляр Канборда, который слушает на `http://localhost:8000/`.
+
+
+
+Все данные будут удалены/изменены при тестировании. Более того скрипт будет сброшен и установлен новый ключ API.
+
+
+
+1. Запустите локольный экземпляр Канборда: `php -S 127.0.0.1:8000`
+
+
+
+2. Запустите тест в другом терминале
+
+
+
+Этот же метод используется для запуска тестов для разных баз данных:
+
+
+
+- Sqlite: `phpunit -c tests/integration.sqlite.xml`
+
+- Mysql: `phpunit -c tests/integration.mysql.xml`
+
+- Postgresql: `phpunit -c tests/integration.postgres.xml`
+
+
+
+Пример:
+
+
+
+ phpunit -c tests/integration.sqlite.xml
+
+
+
+ PHPUnit 5.0.0 by Sebastian Bergmann and contributors.
+
+
+
+ ............................................................... 63 / 135 ( 46%)
+
+ ............................................................... 126 / 135 ( 93%)
+
+ ......... 135 / 135 (100%)
+
+
+
+ Time: 1.18 minutes, Memory: 14.75Mb
+
+
+
+ OK (135 tests, 526 assertions)
+
+
+
+Непрерывная интеграция с Travis-CI[¶](#continuous-integration-with-travis-ci "Ссылка на этот заголовок")
+
+--------------------------------------------------------------------------------------------------------
+
+
+
+После каждого commit влитого в мой репозиторий, юнит тесты выполняются для 5 различных версий PHP:
+
+
+
+- PHP 7.0
+
+- PHP 5.6
+
+- PHP 5.5
+
+- PHP 5.4
+
+- PHP 5.3
+
+
+
+При тестировании каждой версии PHP используются 3 поддерживаемые базы данных: Sqlite, Mysql and Postgresql.
+
+
+
+Конфигурационный файл Travis - `.travis.yml` - находится в корневой директории Kanboard.
+
+
+
+
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/time-tracking.markdown b/doc/ru_RU/time-tracking.markdown
new file mode 100644
index 00000000..c3b54c90
--- /dev/null
+++ b/doc/ru_RU/time-tracking.markdown
@@ -0,0 +1,112 @@
+Отслеживание времени
+====================
+
+
+
+Отслеживание времени (контроль времени) может быть использовано для уровня задач или для уровня подзадач.
+
+
+
+Отслеживание времени исполнения задач[¶](#task-time-tracking "Ссылка на этот заголовок")
+-----------------------------------------------------------------------------------------
+
+
+
+![Task time tracking](screenshots/task-time-tracking.png)
+
+Отслеживание времени исполнения задач
+
+
+
+Задачи имеют два поля:
+
+
+
+- Запланировано времени
+
+
+
+- Затрачено времени
+
+
+
+Эти значения показывают время работы и могут быть установлены вручную
+
+
+
+Отслеживание времени подзадач[¶](#subtask-time-tracking "Ссылка на этот заголовок")
+-----------------------------------------------------------------------------------
+
+
+
+![Subtask time tracking](screenshots/subtask-time-tracking.png)
+
+Отслеживание времени подзадач
+
+
+
+Подзадачи тоже имеют поля “Запланировано” и “Затрачено” время.
+
+
+
+Когда вы меняете значения в этих полях, **отслеживание времени задачи обновляется автоматически и формируется суммарное время всех подзадач**
+
+
+
+Канборд записывает время между изменениями статуса каждой подзадачи в отдельную таблицу.
+
+
+
+- При изменении статуса подзадачи с **“Для испольнения”** на **“В работе”**, записывается время начала
+
+
+
+- При изменении статуса подзадачи с **“В работе”** на **“Выполнено”**, записывается как время окончания и, при этом, обновляется **затраченное время** в подзадаче и в задаче.
+
+
+
+Анализ всех записей можно увидеть на странице детального просмотра задачи:
+
+
+
+![Task timesheet](screenshots/task-timesheet.png)
+
+Таблица учета времени.
+
+
+
+Для каждой подзадачи, таймер может быть остановлен и запущен в любое время:
+
+
+
+![Subtask timer](screenshots/subtask-timer.png)
+
+Таймер подзадач.
+
+
+
+- Таймер не зависит от статуса подзадачи
+
+
+
+- Вы можете запустить таймер для новой записи, созданной в таблице отслеживания задач, в любое время
+
+
+
+- Вы можете остановить учет времени даты завершения в таблице отслеживания задач, в любое время
+
+
+
+- Подсчёт затраченного времени округляется до четверти часа
+
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/transitions.markdown b/doc/ru_RU/transitions.markdown
new file mode 100644
index 00000000..a5eb09fa
--- /dev/null
+++ b/doc/ru_RU/transitions.markdown
@@ -0,0 +1,60 @@
+Перемещения задач
+=================
+
+
+
+Запись о перемещении отражает каждое движение задачи между колонками.
+
+
+
+![Transitions](screenshots/transitions.png)
+
+Перемещения.
+
+
+
+Перемещение доступно в боковом меню в детальном представлении задачи (**Перемещения**). Вы можете увидеть следующую информацию:
+
+
+
+- Дата, когда было выполенено перемещение
+
+
+
+- Исходная колонка - колонка, из которой было сделано перемещение
+
+
+
+- Колонка назначения - колонка, в которую была перемещена задача
+
+
+
+- Исполнитель (пользователь, который переместил задачу)
+
+
+
+- Время проведенное в колонке (сколько времени было затрачено на выполнение задачи в указанной колонке)
+
+
+
+Данные о перемещении задач, также, могут быть экспортированы со страницы настроек проекта (**Меню** -\> **Экспорт**).
+
+
+
+![Transitions Export](screenshots/transitions-export.png)
+
+Экспорт перемещений задач.
+
+
+
+Для указанного промежутка времени вы можете сформировать CSV файл, который вы можете импортировать в любое программное обеспечение с электронными таблицами (например, Excell).
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/translations.markdown b/doc/ru_RU/translations.markdown
new file mode 100644
index 00000000..0b9c6752
--- /dev/null
+++ b/doc/ru_RU/translations.markdown
@@ -0,0 +1,72 @@
+Переводы на другие языки (локализация)
+======================================
+
+Как перевести Канборд на новый язык?[¶](#how-to-translate-kanboard-to-a-new-language "Ссылка на этот заголовок")
+----------------------------------------------------------------------------------------------------------------
+
+- Переводы хранятся в директории `app/Locale`
+- В этой директории есть поддиректории для разных языков, например, для русского имеется `ru_RU`, для французского - `fr_FR` и т.д.
+- Переводы находятся в PHP файле, который возвращает массив с парой ключ-значение
+- Ключ - оригинальный текст на английском и значение - перевод на соответсвующем языке
+- **Французские переводы всегда в актуальном состоянии**
+- Всегда используйте последнюю версию (branch master)
+
+### Создание нового перевода[¶](#create-a-new-translation "Ссылка на этот заголовок")
+
+
+
+1. Создайте новую директорию: `app/Locale/xx_XX`, например `app/Locale/fr_CA` для канадского фрацузского
+2. Создайте новый файл для перевода: `app/Locale/xx_XX/translations.php`
+3. Используйте как образец содержимое французского перевода (локализации) и замените значения
+4. Внесите изменения в файл `app/Model/Language.php`
+5. Проверьте добавленный язык на локальной версии Канборда
+6. Пошлите [pull-request на Github](https://help.github.com/articles/using-pull-requests/)
+
+
+
+Как обновить имеющийся перевод?[¶](#how-to-update-an-existing-translation "Ссылка на этот заголовок")
+-----------------------------------------------------------------------------------------------------
+
+1. Откройте файл перевода `app/Locale/xx_XX/translations.php`
+2. Отсутсвующие переводы закоментированы - `//` и значения пустые, нужно заполнить значения и удалить коментарий
+3. Проверьте внесенные изменения на локальной версии Канборда и пошлите [pull-request](https://help.github.com/articles/using-pull-requests/)
+
+
+Как добавить новый текст перевода в приложение?[¶](#how-to-add-new-translated-text-in-the-application "Ссылка на этот заголовок")
+---------------------------------------------------------------------------------------------------------------------------------
+
+Переводы отображаются с помощью функций в исходном коде:
+
+
+- `t()`: показывает текст с HTML escaping
+- `e()`: показывает текст без HTML escaping
+
+
+Всегда используйте английскую версию исходного кода.
+Текстовые строки используют функцию `sprintf()` для замены элементов:
+
+- `%s` используется для замены строки
+- `%d` используется для замены цифры
+
+
+Ознакомится с доступными форматами вы можете в [документации PHP](http://php.net/sprintf).
+
+Как найти отсутствующие переводы в приложении?[¶](#how-to-find-missing-translations-in-the-applications "Ссылка на этот заголовок")
+-----------------------------------------------------------------------------------------------------------------------------------
+
+Из терминала запустите следующую команду:
+
+ ./cli locale:compare
+
+Все отсутствующие и неиспользуемые переводы будут показаны на экране. Добавьте их во французскую локализацию и синхронизируйте с другими локализациями (смотрите ниже)
+
+Как синхронизировать файлы переводов?[¶](#how-to-synchronize-translation-files "Ссылка на этот заголовок")
+----------------------------------------------------------------------------------------------------------
+
+В оболочке Unix запустите следующую команду:
+
+ ./cli locale:sync
+
+Французский перевод используется для ссылки на другие локализации.
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
diff --git a/doc/ru_RU/ubuntu-installation.markdown b/doc/ru_RU/ubuntu-installation.markdown
new file mode 100644
index 00000000..ac3cb565
--- /dev/null
+++ b/doc/ru_RU/ubuntu-installation.markdown
@@ -0,0 +1,111 @@
+Как инсталировать Канборд на Ubuntu?
+====================================
+
+
+
+Ubuntu Xenial 16.04 LTS[¶](#ubuntu-xenial-16-04-lts "Ссылка на этот заголовок")
+-------------------------------------------------------------------------------
+
+
+
+Установите Apache и PHP:
+
+
+
+ sudo apt-get update
+
+ sudo apt-get install -y apache2 libapache2-mod-php7.0 php7.0-cli php7.0-mbstring php7.0-sqlite3 \
+
+ php7.0-opcache php7.0-json php7.0-mysql php7.0-pgsql php7.0-ldap php7.0-gd
+
+
+
+Установите Канборд:
+
+
+
+ cd /var/www/html
+
+ sudo wget https://kanboard.net/kanboard-latest.zip
+
+ sudo unzip kanboard-latest.zip
+
+ sudo chown -R www-data:www-data kanboard/data
+
+ sudo rm kanboard-latest.zip
+
+
+
+Ubuntu Trusty 14.04 LTS[¶](#ubuntu-trusty-14-04-lts "Ссылка на этот заголовок")
+-------------------------------------------------------------------------------
+
+
+
+Установите Apache и PHP:
+
+
+
+ sudo apt-get update
+
+ sudo apt-get install -y php5 php5-sqlite php5-mysql php5-pgsql php5-ldap php5-gd php5-json php5-mcrypt unzip
+
+
+
+Установите Канборд:
+
+
+
+ cd /var/www/html
+
+ sudo wget https://kanboard.net/kanboard-latest.zip
+
+ sudo unzip kanboard-latest.zip
+
+ sudo chown -R www-data:www-data kanboard/data
+
+ sudo rm kanboard-latest.zip
+
+
+
+Ubuntu Precise 12.04 LTS[¶](#ubuntu-precise-12-04-lts "Ссылка на этот заголовок")
+---------------------------------------------------------------------------------
+
+
+
+Установите Apache и PHP:
+
+
+
+ sudo apt-get update
+
+ sudo apt-get install -y php5 php5-sqlite php5-mysql php5-pgsql php5-ldap php5-gd php5-json php5-mcrypt unzip
+
+
+
+Установите Канборд:
+
+
+
+ cd /var/www
+
+ sudo wget https://kanboard.net/kanboard-latest.zip
+
+ sudo unzip kanboard-latest.zip
+
+ sudo chown -R www-data:www-data kanboard/data
+
+ sudo rm kanboard-latest.zip
+
+
+
+Некоторые возможности Канборда требуют [запуска ежедневных фоновых задач](cronjob.markdown).
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/update.markdown b/doc/ru_RU/update.markdown
new file mode 100644
index 00000000..7cfabdb0
--- /dev/null
+++ b/doc/ru_RU/update.markdown
@@ -0,0 +1,57 @@
+Обновление Канборд до новой версии
+==================================
+
+
+Обновление Канборда до новой версии бесшовное. Процесс сводится к тому, что надо просто скопировать каталог с данными из старой версии в новый Канборд. Канборд запустит миграцию баз данных автоматически.
+
+
+
+Важные замечания перед обновлением[¶](#important-things-to-do-before-updating "Ссылка на этот заголовок")
+---------------------------------------------------------------------------------------------------------
+
+- Перед обновлением, обязательно сделайте копию ваших данных со старой версии Канборда
+
+- Всегда следите за [историей изменений](https://github.com/fguillot/kanboard/blob/master/ChangeLog) для отслеживания критических изменений
+
+- Всегда закрывайте все пользовательские сессии (очищайте все сессии на сервере)
+
+
+Обновление из архива (стабильная версия)[¶](#from-the-archive-stable-version "Ссылка на этот заголовок")
+--------------------------------------------------------------------------------------------------------
+
+
+
+1. Скачайте и распакуйте архив с новой версией
+
+2. Скопируйте содержимое каталога с данными старой версии во вновь распакованный каталог
+
+3. Скопируйте из старой версии Канборда `config.php`, если вы его создавали
+
+4. Скопируйте плагины, если есть
+
+5. Убедитесь, что директория `data` имеет права на запись от пользователя веб сервера
+
+6. Проверьте работу новой версии
+
+7. Удалите старую версию Канборда
+
+
+Обновление из репозитория (разрабатываемая версия)[¶](#from-the-repository-development-version "Ссылка на этот заголовок")
+--------------------------------------------------------------------------------------------------------------------------
+
+
+
+1. `git pull`
+
+2. `composer install --no-dev`
+
+3. Выполните вход и проверьте, что все работает корректно
+
+
+**Внимание**: Выполняя обновление из разрабатываемой версии, вы должны понимать, что это нестабильная версия и берете все риски по работе Канборд на себя.
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/usage-examples.markdown b/doc/ru_RU/usage-examples.markdown
new file mode 100644
index 00000000..d0d580e8
--- /dev/null
+++ b/doc/ru_RU/usage-examples.markdown
@@ -0,0 +1,193 @@
+Примеры использования
+=====================
+
+
+
+Вы можете настроить вашу доску в соответсвии с вашими бизнес-процессами
+
+
+
+Разработка программного обеспечения[¶](#software-development "Ссылка на этот заголовок")
+----------------------------------------------------------------------------------------
+
+
+
+- Заказ
+
+
+
+- Готов
+
+
+
+- В работе
+
+
+
+- Требуется утверждение
+
+
+
+- Утверждено
+
+
+
+- Развернуто в продакшн
+
+
+
+Отслеживание ошибок[¶](#bug-tracking "Ссылка на этот заголовок")
+----------------------------------------------------------------
+
+
+
+- Сообщение
+
+
+
+- Подтверждено
+
+
+
+- В работе
+
+
+
+- Проверено
+
+
+
+- Исправлено
+
+
+
+Продажи[¶](#sales "Ссылка на этот заголовок")
+---------------------------------------------
+
+
+
+- Клиенты
+
+
+
+- Встречи
+
+
+
+- Предложения
+
+
+
+- Приобретение
+
+
+
+Эффективное управление бизнесом[¶](#lean-business-management "Ссылка на этот заголовок")
+----------------------------------------------------------------------------------------
+
+
+
+- Идеи
+
+
+
+- События
+
+
+
+- Мероприятия
+
+
+
+- Анализы
+
+
+
+- Исполненно
+
+
+
+Подбор персонала[¶](#recruiting-process "Ссылка на этот заголовок")
+-------------------------------------------------------------------
+
+
+
+- Предложения о работе
+
+
+
+- Кандидаты
+
+
+
+- Телефонный отбор
+
+
+
+- Собеседование
+
+
+
+- Наем
+
+
+
+Онлайн магазин[¶](#online-shops "Ссылка на этот заголовок")
+-----------------------------------------------------------
+
+
+
+- Заказы
+
+
+
+- Упаковка
+
+
+
+- Готов к отправке
+
+
+
+- Отправлен
+
+
+
+Производство[¶](#manufactory "Ссылка на этот заголовок")
+--------------------------------------------------------
+
+
+
+- Заказы покупателей
+
+
+
+- Сборка
+
+
+
+- Проверка
+
+
+
+- Упаковка
+
+
+
+- Готово к отгрузке
+
+
+
+- Отправлен
+
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/user-management.markdown b/doc/ru_RU/user-management.markdown
new file mode 100644
index 00000000..67cdd3f4
--- /dev/null
+++ b/doc/ru_RU/user-management.markdown
@@ -0,0 +1,89 @@
+Управление пользователями
+=========================
+
+
+
+Создание нового пользователя[¶](#add-a-new-user "Ссылка на этот заголовок")
+---------------------------------------------------------------------------
+
+
+
+Только администратор может создавать нового пользователя.
+
+
+
+1. В выпадающем меню, в правом верхнем углу, выберите **Управление пользователями**
+
+
+
+2. Вверху имеются ссылки - **Новый локальный пользователь** и **Новый удаленный пользователь**
+
+
+
+3. При создании пользователя нужно заполнить форму и сохранить
+
+
+
+![New user](screenshots/new-user.png)
+
+Форма создания нового пользователя.
+
+
+
+При создании **Локального пользователя** вы должны, как минимум, заполнить следующие поля:
+
+
+
+- **Имя пользователя**: это поле является уникальным идентификатором вашего пользователя (логин)
+
+
+
+- **Пароль**: Пароль пользователя должен иметь минимум 6 символов
+
+
+
+Для **удаленных пользователей** обязательно только **Имя пользователя**.
+
+
+
+Редактирование пользователей[¶](#edit-users "Ссылка на этот заголовок")
+-----------------------------------------------------------------------
+
+
+
+После перехода в **Управление пользователями**, вам будет доступен список пользователей. Кликните на пользователя в столбце **Имя пользователя**. Далее, вам будет доступно редактирование настроек и профиля пользователя.
+
+
+
+- Если вы имеете права пользователя, то вы сможете только изменить ваш профиль
+
+
+
+- Для редактирования любого пользователя вам должны быть назначены права администратора
+
+
+
+Удаеление пользователей[¶](#remove-users "Ссылка на этот заголовок")
+--------------------------------------------------------------------
+
+
+
+В списке пользователей выберите в колонке **Действия** в выпадающем меню **Удалить**. Эта ссылка доступна только для администраторов.
+
+
+
+Если вы удалите пользователя, то все задачи назначенные пользователю перестанут быть назначенными.
+
+
+
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/user-mentions.markdown b/doc/ru_RU/user-mentions.markdown
new file mode 100644
index 00000000..a6713933
--- /dev/null
+++ b/doc/ru_RU/user-mentions.markdown
@@ -0,0 +1,49 @@
+Ссылка на пользователя
+======================
+
+
+
+В Канборде есть возможность посылать уведомления пользователю, если кто-то ссылается на него в тексте.
+
+
+
+Если вы хотите заострить внимание о ком-либо в комментарии или в задаче, то вы можете использовать символ @ и следом указать имя пользователя. Канборд автоматически предлагает список пользователей:
+
+
+
+![User Mention](screenshots/mention-autocomplete.png)
+
+Ссылка на пользователя.
+
+
+
+- В данный момент, добавлять ссылку на пользователя можно только в описании задачи и тексте комментария.
+
+
+
+- Ссылка на пользователя работает только в задачах и при создании комментария.
+
+
+
+- Для получения уведомления, пользователь, на которого ссылаются, должен быть участником проекта, в котором создается ссылка.
+
+
+
+- Если была создана ссылка на пользователя, то этот пользователь получит уведомление.
+
+
+
+- @username - выглядит как ссылка на публичный профиль пользователя.
+
+
+
+Уведомление посылаются пользователю в соответсвии с пользовательскими настройками: это может быть email, уведомление на веб странице или даже сообщение в Slack/Hipchat/Jabber, если вы установили соответсвующие плагины.
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/user-types.markdown b/doc/ru_RU/user-types.markdown
new file mode 100644
index 00000000..9afb58b8
--- /dev/null
+++ b/doc/ru_RU/user-types.markdown
@@ -0,0 +1,26 @@
+Типы пользователей
+==================
+
+
+
+В Канборде могут быть два типа пользователей:
+
+
+
+| Тип | Описание |
+|--------------|-------------------------------------------------------------|
+| Локальный пользователь | Пароль пользователя хранится в базе данных Канборда|
+| Удаленный пользователь | Учетные данные пользователя управляются (контролируются) другой системой (например, LDAP сервер). Другими словами, аутентификация пользователя происходит во внешней системе, не в Канборде.|
+
+
+
+Примеры удаленных пользователей:
+
+- LDAP пользователь
+
+- Аутентификация пользователя через реверс-прокси
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/vagrant.markdown b/doc/ru_RU/vagrant.markdown
new file mode 100644
index 00000000..59e920cc
--- /dev/null
+++ b/doc/ru_RU/vagrant.markdown
@@ -0,0 +1,51 @@
+Запуск Канборда с Vagrant
+=========================
+
+
+
+Вы можете легко развернуть Канборд с Vagrant:
+
+
+
+- Склонируйте проект с репозитория git
+
+
+
+- Выполните `vagrant up`
+
+
+
+- Для входа в приложение используйте URL `http://localhost:8001/`
+
+
+
+Виртуальная машина построена на Ubuntu 14.04 с PHP 5.5.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/webhooks.markdown b/doc/ru_RU/webhooks.markdown
new file mode 100644
index 00000000..dbba0867
--- /dev/null
+++ b/doc/ru_RU/webhooks.markdown
@@ -0,0 +1,477 @@
+Webhooks
+========
+
+Webhooks служат для взаимодействия с внешними приложениями. Webhook посылает уведомление стороннему приложению о событиях, которые произошли в Канборд.
+
+
+- Webhooks могут быть использованы для создания задач вызовом простого URL (Вы можете сделать это и при помощи API)
+- Обращение к внешнему приложению может происходить автоматически, когда наступает какое-либо событие в Канборд (создана задача, обновлен комментарий и т.д.)
+
+
+
+Как написать webhook приемник во внешнем приложении?[¶](#how-to-write-a-web-hook-receiver "Ссылка на этот заголовок")
+---------------------------------------------------------------------------------------------------------------------
+
+Все внутренние события в Канборде могут быть посланы во внешний URL.
+
+- Webhook URL (url приемник внешнего приложения) может быть задан в **Настройки** -\> **Webhooks** -\> **Webhook URL**
+- Когда в Канборде происходит событие, Канборд обращается к указанному URL автоматически
+- Данные конвертируются в формат JSON и передаются с помощью POST HTTP запроса
+- Webhook ключ передается в составе запроса в виде строкового параметра. Таким образом, вы можете проверить, что запрос на самом деле пришел из Канборда.
+- **Созданный вами URL должен среагировать в течении 1 секунды**. Это желательно сделать потому, что запросы являются синхронными (ограничения языка PHP) и возможны тормоза в пользовательском интерфейсе, если скрипт будет слишком медленный!
+
+
+
+### Список поддерживаемых событий[¶](#list-of-supported-events "Ссылка на этот заголовок")
+
+- comment.create
+- comment.update
+- comment.delete
+- file.create
+- task.move.project
+- task.move.column
+- task.move.position
+- task.move.swimlane
+- task.update
+- task.create
+- task.close
+- task.open
+- task.assignee_change
+- subtask.update
+- subtask.create
+- subtask.delete
+- task_internal_link.create_update
+- task_internal_link.delete
+
+
+
+### Пример HTTP запроса[¶](#example-of-http-request "Ссылка на этот заголовок")
+
+
+
+ POST https://your_webhook_url/?token=WEBHOOK_TOKEN_HERE
+
+ User-Agent: Kanboard Webhook
+
+ Content-Type: application/json
+
+ Connection: close
+
+
+
+ {
+
+ "event_name": "task.move.column",
+
+ "event_data": {
+
+ "task_id": "1",
+
+ "project_id": "1",
+
+ "position": 1,
+
+ "column_id": "1",
+
+ "swimlane_id": "0",
+
+ "src_column_id": "2",
+
+ "dst_column_id": "1",
+
+ "date_moved": "1431991532",
+
+ "recurrence_status": "0",
+
+ "recurrence_trigger": "0"
+
+ }
+
+ }
+
+
+
+Функциональная часть всех событий имеет следующий формат:
+
+
+
+ {
+
+ "event_name": "model.event_name",
+
+ "event_data": {
+
+ "key1": "value1",
+
+ "key2": "value2",
+
+ ...
+
+ }
+
+ }
+
+
+
+Значения `event_data`{.docutils .literal} могут быть неупорядочены в событиях.
+
+
+
+### Пример функциональной части события[¶](#examples-of-event-payloads "Ссылка на этот заголовок")
+
+
+
+Создание задачи:
+
+
+
+ {
+
+ "event_name": "task.create",
+
+ "event_data": {
+
+ "title": "Demo",
+
+ "description": "",
+
+ "project_id": "1",
+
+ "owner_id": "1",
+
+ "category_id": 0,
+
+ "swimlane_id": 0,
+
+ "column_id": "2",
+
+ "color_id": "yellow",
+
+ "score": 0,
+
+ "time_estimated": 0,
+
+ "date_due": 0,
+
+ "creator_id": 1,
+
+ "date_creation": 1431991532,
+
+ "date_modification": 1431991532,
+
+ "date_moved": 1431991532,
+
+ "position": 1,
+
+ "task_id": 1
+
+ }
+
+ }
+
+
+
+Изменение задачи:
+
+
+
+ {
+
+ "event_name": "task.update",
+
+ "event_data": {
+
+ "id": "1",
+
+ "title": "Demo",
+
+ "description": "",
+
+ "date_creation": "1431991532",
+
+ "color_id": "yellow",
+
+ "project_id": "1",
+
+ "column_id": "1",
+
+ "owner_id": "1",
+
+ "position": "1",
+
+ "is_active": "1",
+
+ "date_completed": null,
+
+ "score": "0",
+
+ "date_due": "0",
+
+ "category_id": "2",
+
+ "creator_id": "1",
+
+ "date_modification": 1431991603,
+
+ "reference": "",
+
+ "date_started": 1431993600,
+
+ "time_spent": 0,
+
+ "time_estimated": 0,
+
+ "swimlane_id": "0",
+
+ "date_moved": "1431991572",
+
+ "recurrence_status": "0",
+
+ "recurrence_trigger": "0",
+
+ "recurrence_factor": "0",
+
+ "recurrence_timeframe": "0",
+
+ "recurrence_basedate": "0",
+
+ "recurrence_parent": null,
+
+ "recurrence_child": null,
+
+ "task_id": "1",
+
+ "changes": {
+
+ "category_id": "2"
+
+ }
+
+ }
+
+ }
+
+
+
+События изменеия задачи имеют поле `changes`{.docutils .literal}, которое содержит обновленные значения.
+
+
+
+Перемещение задачи в другую колонку:
+
+
+
+ {
+
+ "event_name": "task.move.column",
+
+ "event_data": {
+
+ "task_id": "1",
+
+ "project_id": "1",
+
+ "position": 1,
+
+ "column_id": "1",
+
+ "swimlane_id": "0",
+
+ "src_column_id": "2",
+
+ "dst_column_id": "1",
+
+ "date_moved": "1431991532",
+
+ "recurrence_status": "0",
+
+ "recurrence_trigger": "0"
+
+ }
+
+ }
+
+
+
+Перемещение задачи в другое место:
+
+
+
+ {
+
+ "event_name": "task.move.position",
+
+ "event_data": {
+
+ "task_id": "2",
+
+ "project_id": "1",
+
+ "position": 1,
+
+ "column_id": "1",
+
+ "swimlane_id": "0",
+
+ "src_column_id": "1",
+
+ "dst_column_id": "1",
+
+ "date_moved": "1431996905",
+
+ "recurrence_status": "0",
+
+ "recurrence_trigger": "0"
+
+ }
+
+ }
+
+
+
+Создание комментария:
+
+
+
+ {
+
+ "event_name": "comment.create",
+
+ "event_data": {
+
+ "id": 1,
+
+ "task_id": "1",
+
+ "user_id": "1",
+
+ "comment": "test",
+
+ "date_creation": 1431991615
+
+ }
+
+ }
+
+
+
+Изменение комментария:
+
+
+
+ {
+
+ "event_name": "comment.update",
+
+ "event_data": {
+
+ "id": "1",
+
+ "task_id": "1",
+
+ "user_id": "1",
+
+ "comment": "test edit"
+
+ }
+
+ }
+
+
+
+Создание подзадачи:
+
+
+
+ {
+
+ "event_name": "subtask.create",
+
+ "event_data": {
+
+ "id": 3,
+
+ "task_id": "1",
+
+ "title": "Test",
+
+ "user_id": "1",
+
+ "time_estimated": "2",
+
+ "position": 3
+
+ }
+
+ }
+
+
+
+Изменение подзадачи:
+
+
+
+ {
+
+ "event_name": "subtask.update",
+
+ "event_data": {
+
+ "id": "1",
+
+ "status": 1,
+
+ "task_id": "1"
+
+ }
+
+ }
+
+
+
+Загрузка файла:
+
+
+
+ {
+
+ "event_name": "file.create",
+
+ "event_data": {
+
+ "task_id": "1",
+
+ "name": "test.png"
+
+ }
+
+ }
+
+
+
+Создан снимок экрана:
+
+
+
+ {
+
+ "event_name": "file.create",
+
+ "event_data": {
+
+ "task_id": "2",
+
+ "name": "Screenshot taken May 19, 2015 at 10:56 AM"
+
+ }
+
+ }
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/what-is-kanban.markdown b/doc/ru_RU/what-is-kanban.markdown
new file mode 100644
index 00000000..3c479088
--- /dev/null
+++ b/doc/ru_RU/what-is-kanban.markdown
@@ -0,0 +1,80 @@
+Что такое Kanban?
+=================
+
+
+
+Kanban - методология, которая первоначально применила компания Toyota для увеличения производительности. Описание в википедии - [Канбан доска](https://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D0%BD%D0%B1%D0%B0%D0%BD-%D0%B4%D0%BE%D1%81%D0%BA%D0%B0)
+
+
+
+Смысл Kanban заключается в следующем:
+
+
+
+- Визуализация рабочих процессов
+
+
+
+- Уменьшение времени для достижения цели
+
+
+
+Визуализация рабочих процессов[¶](#visualize-your-workflow "Ссылка на этот заголовок")
+--------------------------------------------------------------------------------------
+
+
+
+- Ваш рабочий процесс отображается на доске и вы ясно видете картину вашего проекта
+
+
+
+- Каждая колонка представляет шаг вашего рабочего процесса
+
+
+
+Сосредоточьте внимание и избегайте многозадачности[¶](#bring-focus-and-avoid-multitasking "Ссылка на этот заголовок")
+--------------------------------------------------------------------------------------------------------------------
+
+
+
+- Каждая фаза может иметь работу, ограниченную временем
+
+
+
+- Уменьшайте объём для определения узких мест
+
+
+
+- Ограничьте количество одновременно выполняемых задач
+
+
+
+Подсчёт производительности и улучшений[¶](#measure-performance-and-improvement "Ссылка на этот заголовок")
+----------------------------------------------------------------------------------------------------------
+
+
+
+Kanban использует время выполнения (lead time) и время цикла (cycle time) для подсчёта производительности:
+
+
+
+- **Время выполнения**: Время между созданием задачи и ее завершением
+
+
+
+- **Время цикла**: Время между началом выполнения задачи и ее завершением
+
+
+
+Например, вами заложено время выполнения - 100 дней, а затратили на выполнение задачи (время цикла) всего 1 час.
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/windows-apache-installation.markdown b/doc/ru_RU/windows-apache-installation.markdown
new file mode 100644
index 00000000..7f181e10
--- /dev/null
+++ b/doc/ru_RU/windows-apache-installation.markdown
@@ -0,0 +1,253 @@
+Установка Канборд на Windows Server и Apache
+============================================
+
+
+
+Это руководство поможет вам шаг за шагом установить Канборд на Windows Server с Apache и PHP
+
+
+
+**Внимание**: Если у вас 64 разрядная платформа, то вам нужно выбрать “x64”, и выберите “x86” для 32 разрядной операционной системы.
+
+
+
+Установка распространяемого пакета Visual C++[¶](#visual-c-redistributable-installation "Ссылка на этот заголовок")
+-------------------------------------------------------------------------------------------------------------------
+
+
+
+PHP и Apache скомпилированы с Visual Studio, поэтому вам нужно установить эту библиотеку, если вы не сделали это ранее.
+
+
+
+1. Скачайте библиотеку с [официального вебсайта Microsoft](http://www.microsoft.com/en-us/download/details.aspx?id=30679)
+
+
+
+2. Запустите установку `vcredist_x64.exe` или `vcredist_x86.exe`, в соответствии с вашей платформой
+
+
+
+Установка Apache[¶](#apache-installation "Ссылка на этот заголовок")
+--------------------------------------------------------------------
+
+
+
+1. Скачайте исходники Apache с [Apache Lounge](http://www.apachelounge.com/download/)
+
+
+
+2. Разархивируйте Apache24 в каталог `C:\Apache24`
+
+
+
+### Назначение имени сервера[¶](#define-the-server-name "Ссылка на этот заголовок")
+
+
+
+Откройте файл `C:\Apache24\conf\httpd.conf` и добавьте директиву:
+
+
+
+ ServerName localhost
+
+
+
+### Установка сервиса Apache[¶](#install-the-apache-service "Ссылка на этот заголовок")
+
+
+
+Откройте консоль (`cmd.exe`), перейдите в каталог `C:\Apache24\bin` и установите сервис Apache:
+
+
+
+ cd C:\Apache24\bin
+
+
+
+ # Install the windows service
+
+ httpd.exe -k install
+
+
+
+### Установка ApacheMonitor[¶](#install-apachemonitor "Ссылка на этот заголовок")
+
+
+
+- Выполните `C:\Apache24\bin\ApacheMonitor.exe` и добавьте его в автозагрузку.
+
+
+
+- Теперь во всплывающем меню, при нажатии правой кнопки мыши на иконке, нажмите запустить Apache
+
+
+
+### Проверка работы Apache[¶](#check-the-apache-installation "Ссылка на этот заголовок")
+
+
+
+В браузере откройте <http://localhost/>. Вы должны увидеть пустую страницу и текст “It works!”.
+
+
+
+Установка PHP[¶](#php-installation "Ссылка на этот заголовок")
+--------------------------------------------------------------
+
+
+
+1. Скачайте последнюю стабильную версию PHP с [официального сайта PHP](http://windows.php.net/download/), выберите версию **Thread Safe** и используйте соответствующую разрядность: x86 or x64.
+
+
+
+2. Разархивируйте файлы в `C:\php`
+
+
+
+3. Перейдите в каталог PHP (`C:\php`) и переименуйе файл `php.ini-production` в `php.ini`
+
+
+
+Отредактируйте `php.ini`:
+
+
+
+Раскоментируйте директорию расширений:
+
+
+
+ extension_dir = "C:/php/ext"
+
+
+
+Раскоментируйте следующие модули PHP:
+
+
+
+ extension=php_gd2.dll
+
+ extension=php_ldap.dll
+
+ extension=php_mbstring.dll
+
+ extension=php_openssl.dll
+
+ extension=php_pdo_sqlite.dll
+
+
+
+Установите часовой пояс:
+
+
+
+ date.timezone = America/Montreal
+
+
+
+Список всех поддерживаемых часовых поясов можно посмотреть в [документации PHP](http://php.net/manual/en/timezones.america.php).
+
+
+
+Загрузка модулей PHP для Apache:
+
+
+
+Добавьте следующие строки конфигурации в файл `C:\Apache24\conf\httpd.conf`:
+
+
+
+ LoadModule php5_module "c:/php/php5apache2_4.dll"
+
+ AddHandler application/x-httpd-php .php
+
+
+
+ # configure the path to php.ini
+
+ PHPIniDir "C:/php"
+
+
+
+ # change this directive
+
+ DirectoryIndex index.php index.html
+
+
+
+Перезапустите Apache.
+
+
+
+Проверка работы PHP:
+
+
+
+Создайте файл `phpinfo.php` в каталоге `C:\Apache24\htdocs`:
+
+
+
+ <?php
+
+
+
+ phpinfo();
+
+
+
+ ?>
+
+
+
+Откройте в браузере [http://localhost/phpinfo.php](http://localhost/phpinfo.php) и вы должны увидеть информацию о PHP.
+
+
+
+Устновка Канборд[¶](#kanboard-installation "Ссылка на этот заголовок")
+----------------------------------------------------------------------
+
+
+
+- [Скачайте zip файл](https://kanboard.net/downloads)
+
+
+
+- Разархивируйте архив в `C:\Apache24\htdocs\kanboard`
+
+
+
+- Откройте в браузере <http://localhost/kanboard/>. Ура. Теперь вы можете работать в Канборд. Все легко и просто.
+
+
+
+- Учетная запись и пароль по умолчанию - **admin/admin**
+
+
+
+Протестировано на[¶](#tested-configuration "Ссылка на этот заголовок")
+----------------------------------------------------------------------
+
+
+
+- Windows 2008 R2 / Apache 2.4.12 / PHP 5.6.8
+
+
+
+Примечание[¶](#notes "Ссылка на этот заголовок")
+------------------------------------------------
+
+
+
+- Некоторые функции Канборда требуют выполнять [запуск ежедневных фоновых задач](cronjob.markdown).
+
+
+
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/ru_RU/windows-iis-installation.markdown b/doc/ru_RU/windows-iis-installation.markdown
new file mode 100644
index 00000000..0aabca6a
--- /dev/null
+++ b/doc/ru_RU/windows-iis-installation.markdown
@@ -0,0 +1,150 @@
+Инсталяция Kanboard на Windows 2008/2012 с IIS
+==============================================
+
+
+
+Это пошаговое руководство поможет вам установить Канборд на Windows Server с IIS и PHP.
+
+
+
+Установка PHP[¶](#php-installation "Ссылка на этот заголовок")
+--------------------------------------------------------------
+
+
+
+- Установите IIS на ваш Windows сервер (Добавьте новую роль и не забудьте включить CGI/FastCGI)
+
+
+
+- При инсталяции PHP можете использовать следующую официальную документацию:
+
+
+
+ - [Microsoft IIS 5.1 and IIS 6.0](http://php.net/manual/en/install.windows.iis6.php)
+
+ - [Microsoft IIS 7.0 and later](http://php.net/manual/en/install.windows.iis7.php)
+
+ - [PHP for Windows is available here](http://windows.php.net/download/)
+
+
+
+Отредактируйте `php.ini`, раскоментируйте эти PHP модули:
+
+
+
+ extension=php_gd2.dll
+
+ extension=php_ldap.dll
+
+ extension=php_mbstring.dll
+
+ extension=php_openssl.dll
+
+ extension=php_pdo_sqlite.dll
+
+
+
+Установите часовой пояс
+
+
+
+ date.timezone = America/Montreal
+
+
+
+Список поддерживаемых часовых поясов можно посмотреть в [документации PHP](http://php.net/manual/en/timezones.america.php).
+
+
+
+Проверьте, что PHP работает корректно:
+
+
+
+Перейдите в корневой каталог IIS `C:\inetpub\wwwroot` и создайте файл `phpinfo.php`, со следующим содержимым:
+
+
+
+ <?php
+
+
+
+ phpinfo();
+
+
+
+ ?>
+
+
+
+В браузере откройте страницу `http://localhost/phpinfo.php` и вы должны увидеть текущие настройки PHP. Если вы видите ошибку 500, значит что-то сделано неправильно при установке.
+
+
+
+Примечание:
+
+
+
+- Если вы используете PHP \< 5.4, то необходимо включить короткие теги (short tags) в php.ini
+
+
+
+- Не забудьте включить необходимые php расширения, упомянутые выше
+
+
+
+- Если вы наблюдаете ошибку “the library MSVCP110.dll is missing”, то возможно вам нужно скачать распространяемый пакет Visual C++ для Visual Studio с сайта Microsoft.
+
+
+
+Установка Канборд[¶](#kanboard-installation "Ссылка на этот заголовок")
+-----------------------------------------------------------------------
+
+
+
+- Скачайте zip файл
+
+
+
+- Распакуйте архив в `C:\inetpub\wwwroot\kanboard` (например)
+
+
+
+- Убедитесь, что у пользователя вебсервера IIS имеется доступ на запись на директорию `data`
+
+
+
+- Откройте веб браузер и используйте Kanboard <http://localhost/kanboard/>
+
+
+
+- Пользователь и пароль по умолчанию - **admin/admin**
+
+
+
+Работа Канборд тестировалось на[¶](#tested-configurations "Ссылка на этот заголовок")
+-------------------------------------------------------------------------------------
+
+
+
+- Windows 2008 R2 Standard Edition / IIS 7.5 / PHP 5.5.16
+
+- Windows 2012 Standard Edition / IIS 8.5 / PHP 5.3.29
+
+
+
+Примечание[¶](#notes "Ссылка на этот заголовок")
+------------------------------------------------
+
+
+
+- Некоторые возможности Канборда требуют [запуск выполнения ежедневных фоновых задач](cronjob.markdown).
+
+
+
+
+
+
+
+
+[Русская документация Kanboard](http://kanboard.ru/doc/)
+
diff --git a/doc/screenshots/2fa.png b/doc/screenshots/2fa.png
new file mode 100644
index 00000000..8d45d623
--- /dev/null
+++ b/doc/screenshots/2fa.png
Binary files differ
diff --git a/doc/screenshots/add-subtask-shortcut.png b/doc/screenshots/add-subtask-shortcut.png
new file mode 100644
index 00000000..44e63092
--- /dev/null
+++ b/doc/screenshots/add-subtask-shortcut.png
Binary files differ
diff --git a/doc/screenshots/add-subtask.png b/doc/screenshots/add-subtask.png
new file mode 100644
index 00000000..54e84b09
--- /dev/null
+++ b/doc/screenshots/add-subtask.png
Binary files differ
diff --git a/doc/screenshots/add_new_restriction.png b/doc/screenshots/add_new_restriction.png
new file mode 100644
index 00000000..65ba801e
--- /dev/null
+++ b/doc/screenshots/add_new_restriction.png
Binary files differ
diff --git a/doc/screenshots/apple-calendar-add-subscription.png b/doc/screenshots/apple-calendar-add-subscription.png
new file mode 100644
index 00000000..25fd6238
--- /dev/null
+++ b/doc/screenshots/apple-calendar-add-subscription.png
Binary files differ
diff --git a/doc/screenshots/apple-calendar-edit-subscription.png b/doc/screenshots/apple-calendar-edit-subscription.png
new file mode 100644
index 00000000..3a521781
--- /dev/null
+++ b/doc/screenshots/apple-calendar-edit-subscription.png
Binary files differ
diff --git a/doc/screenshots/application-settings.png b/doc/screenshots/application-settings.png
new file mode 100644
index 00000000..e5a7e20a
--- /dev/null
+++ b/doc/screenshots/application-settings.png
Binary files differ
diff --git a/doc/screenshots/average-lead-cycle-time.png b/doc/screenshots/average-lead-cycle-time.png
new file mode 100644
index 00000000..c72134da
--- /dev/null
+++ b/doc/screenshots/average-lead-cycle-time.png
Binary files differ
diff --git a/doc/screenshots/average-time-spent-into-each-column.png b/doc/screenshots/average-time-spent-into-each-column.png
new file mode 100644
index 00000000..72e1c161
--- /dev/null
+++ b/doc/screenshots/average-time-spent-into-each-column.png
Binary files differ
diff --git a/doc/screenshots/bitbucket-webhooks.png b/doc/screenshots/bitbucket-webhooks.png
new file mode 100644
index 00000000..442cb300
--- /dev/null
+++ b/doc/screenshots/bitbucket-webhooks.png
Binary files differ
diff --git a/doc/screenshots/board-hide-show-column.png b/doc/screenshots/board-hide-show-column.png
new file mode 100644
index 00000000..bcda6cae
--- /dev/null
+++ b/doc/screenshots/board-hide-show-column.png
Binary files differ
diff --git a/doc/screenshots/board-settings.png b/doc/screenshots/board-settings.png
new file mode 100644
index 00000000..9b131b8a
--- /dev/null
+++ b/doc/screenshots/board-settings.png
Binary files differ
diff --git a/doc/screenshots/budget-cost-breakdown.png b/doc/screenshots/budget-cost-breakdown.png
new file mode 100644
index 00000000..4d93cd1a
--- /dev/null
+++ b/doc/screenshots/budget-cost-breakdown.png
Binary files differ
diff --git a/doc/screenshots/budget-graph.png b/doc/screenshots/budget-graph.png
new file mode 100644
index 00000000..56eb6156
--- /dev/null
+++ b/doc/screenshots/budget-graph.png
Binary files differ
diff --git a/doc/screenshots/budget-lines.png b/doc/screenshots/budget-lines.png
new file mode 100644
index 00000000..d29a773d
--- /dev/null
+++ b/doc/screenshots/budget-lines.png
Binary files differ
diff --git a/doc/screenshots/burndown-chart.png b/doc/screenshots/burndown-chart.png
new file mode 100644
index 00000000..28baadbe
--- /dev/null
+++ b/doc/screenshots/burndown-chart.png
Binary files differ
diff --git a/doc/screenshots/calendar-settings.png b/doc/screenshots/calendar-settings.png
new file mode 100644
index 00000000..958cbe50
--- /dev/null
+++ b/doc/screenshots/calendar-settings.png
Binary files differ
diff --git a/doc/screenshots/calendar.png b/doc/screenshots/calendar.png
new file mode 100644
index 00000000..5e890b14
--- /dev/null
+++ b/doc/screenshots/calendar.png
Binary files differ
diff --git a/doc/screenshots/cfd.png b/doc/screenshots/cfd.png
new file mode 100644
index 00000000..19dd6522
--- /dev/null
+++ b/doc/screenshots/cfd.png
Binary files differ
diff --git a/doc/screenshots/closing-tasks.png b/doc/screenshots/closing-tasks.png
new file mode 100644
index 00000000..8a07c328
--- /dev/null
+++ b/doc/screenshots/closing-tasks.png
Binary files differ
diff --git a/doc/screenshots/currency-rate.png b/doc/screenshots/currency-rate.png
new file mode 100644
index 00000000..78310bc7
--- /dev/null
+++ b/doc/screenshots/currency-rate.png
Binary files differ
diff --git a/doc/screenshots/custom-filter-creation.png b/doc/screenshots/custom-filter-creation.png
new file mode 100644
index 00000000..67808780
--- /dev/null
+++ b/doc/screenshots/custom-filter-creation.png
Binary files differ
diff --git a/doc/screenshots/custom-filter-dropdown.png b/doc/screenshots/custom-filter-dropdown.png
new file mode 100644
index 00000000..0cd80d05
--- /dev/null
+++ b/doc/screenshots/custom-filter-dropdown.png
Binary files differ
diff --git a/doc/screenshots/custom_roles.png b/doc/screenshots/custom_roles.png
new file mode 100644
index 00000000..be654c81
--- /dev/null
+++ b/doc/screenshots/custom_roles.png
Binary files differ
diff --git a/doc/screenshots/dropdown-screenshot.png b/doc/screenshots/dropdown-screenshot.png
new file mode 100644
index 00000000..b77f9520
--- /dev/null
+++ b/doc/screenshots/dropdown-screenshot.png
Binary files differ
diff --git a/doc/screenshots/example-restriction-task-creation.png b/doc/screenshots/example-restriction-task-creation.png
new file mode 100644
index 00000000..57b477df
--- /dev/null
+++ b/doc/screenshots/example-restriction-task-creation.png
Binary files differ
diff --git a/doc/screenshots/example-restriction-task-drag-and-drop.png b/doc/screenshots/example-restriction-task-drag-and-drop.png
new file mode 100644
index 00000000..94c64538
--- /dev/null
+++ b/doc/screenshots/example-restriction-task-drag-and-drop.png
Binary files differ
diff --git a/doc/screenshots/example-restriction-task-status-blocked.png b/doc/screenshots/example-restriction-task-status-blocked.png
new file mode 100644
index 00000000..77db73ff
--- /dev/null
+++ b/doc/screenshots/example-restriction-task-status-blocked.png
Binary files differ
diff --git a/doc/screenshots/example-restriction-task-status.png b/doc/screenshots/example-restriction-task-status.png
new file mode 100644
index 00000000..0442791f
--- /dev/null
+++ b/doc/screenshots/example-restriction-task-status.png
Binary files differ
diff --git a/doc/screenshots/example-restrictions.png b/doc/screenshots/example-restrictions.png
new file mode 100644
index 00000000..df357530
--- /dev/null
+++ b/doc/screenshots/example-restrictions.png
Binary files differ
diff --git a/doc/screenshots/gantt-chart-all-projects.png b/doc/screenshots/gantt-chart-all-projects.png
new file mode 100644
index 00000000..80ce2723
--- /dev/null
+++ b/doc/screenshots/gantt-chart-all-projects.png
Binary files differ
diff --git a/doc/screenshots/gantt-chart-not-defined.png b/doc/screenshots/gantt-chart-not-defined.png
new file mode 100644
index 00000000..9949f5f3
--- /dev/null
+++ b/doc/screenshots/gantt-chart-not-defined.png
Binary files differ
diff --git a/doc/screenshots/gantt-chart-project.png b/doc/screenshots/gantt-chart-project.png
new file mode 100644
index 00000000..66892e53
--- /dev/null
+++ b/doc/screenshots/gantt-chart-project.png
Binary files differ
diff --git a/doc/screenshots/github-webhooks.png b/doc/screenshots/github-webhooks.png
new file mode 100644
index 00000000..7f1c5c94
--- /dev/null
+++ b/doc/screenshots/github-webhooks.png
Binary files differ
diff --git a/doc/screenshots/gitlab-webhooks.png b/doc/screenshots/gitlab-webhooks.png
new file mode 100644
index 00000000..7fa954ef
--- /dev/null
+++ b/doc/screenshots/gitlab-webhooks.png
Binary files differ
diff --git a/doc/screenshots/google-calendar-add-subscription.png b/doc/screenshots/google-calendar-add-subscription.png
new file mode 100644
index 00000000..4fc8533e
--- /dev/null
+++ b/doc/screenshots/google-calendar-add-subscription.png
Binary files differ
diff --git a/doc/screenshots/hipchat-notification.png b/doc/screenshots/hipchat-notification.png
new file mode 100644
index 00000000..a4221b24
--- /dev/null
+++ b/doc/screenshots/hipchat-notification.png
Binary files differ
diff --git a/doc/screenshots/hipchat-room-token.png b/doc/screenshots/hipchat-room-token.png
new file mode 100644
index 00000000..f4962b03
--- /dev/null
+++ b/doc/screenshots/hipchat-room-token.png
Binary files differ
diff --git a/doc/screenshots/hipchat-settings.png b/doc/screenshots/hipchat-settings.png
new file mode 100644
index 00000000..b7e06e44
--- /dev/null
+++ b/doc/screenshots/hipchat-settings.png
Binary files differ
diff --git a/doc/screenshots/hourly-rate.png b/doc/screenshots/hourly-rate.png
new file mode 100644
index 00000000..88734107
--- /dev/null
+++ b/doc/screenshots/hourly-rate.png
Binary files differ
diff --git a/doc/screenshots/internal-task-links.png b/doc/screenshots/internal-task-links.png
new file mode 100644
index 00000000..97870e92
--- /dev/null
+++ b/doc/screenshots/internal-task-links.png
Binary files differ
diff --git a/doc/screenshots/jabber-notification.png b/doc/screenshots/jabber-notification.png
new file mode 100644
index 00000000..cbe95c21
--- /dev/null
+++ b/doc/screenshots/jabber-notification.png
Binary files differ
diff --git a/doc/screenshots/jabber-settings.png b/doc/screenshots/jabber-settings.png
new file mode 100644
index 00000000..1aa12bc3
--- /dev/null
+++ b/doc/screenshots/jabber-settings.png
Binary files differ
diff --git a/doc/screenshots/kanboard-github-webhooks.png b/doc/screenshots/kanboard-github-webhooks.png
new file mode 100644
index 00000000..4cff890e
--- /dev/null
+++ b/doc/screenshots/kanboard-github-webhooks.png
Binary files differ
diff --git a/doc/screenshots/link-label-creation.png b/doc/screenshots/link-label-creation.png
new file mode 100644
index 00000000..d79752d3
--- /dev/null
+++ b/doc/screenshots/link-label-creation.png
Binary files differ
diff --git a/doc/screenshots/link-labels.png b/doc/screenshots/link-labels.png
new file mode 100644
index 00000000..e7aa8029
--- /dev/null
+++ b/doc/screenshots/link-labels.png
Binary files differ
diff --git a/doc/screenshots/mention-autocomplete.png b/doc/screenshots/mention-autocomplete.png
deleted file mode 100644
index f23fb6d1..00000000
--- a/doc/screenshots/mention-autocomplete.png
+++ /dev/null
Binary files differ
diff --git a/doc/screenshots/menu-close-task.png b/doc/screenshots/menu-close-task.png
new file mode 100644
index 00000000..aadf425f
--- /dev/null
+++ b/doc/screenshots/menu-close-task.png
Binary files differ
diff --git a/doc/screenshots/new-private-project.png b/doc/screenshots/new-private-project.png
new file mode 100644
index 00000000..a7506825
--- /dev/null
+++ b/doc/screenshots/new-private-project.png
Binary files differ
diff --git a/doc/screenshots/new_custom_role.png b/doc/screenshots/new_custom_role.png
new file mode 100644
index 00000000..6ea69f27
--- /dev/null
+++ b/doc/screenshots/new_custom_role.png
Binary files differ
diff --git a/doc/screenshots/new_restriction.png b/doc/screenshots/new_restriction.png
new file mode 100644
index 00000000..fd26c8fe
--- /dev/null
+++ b/doc/screenshots/new_restriction.png
Binary files differ
diff --git a/doc/screenshots/notifications.png b/doc/screenshots/notifications.png
new file mode 100644
index 00000000..9fd44fd5
--- /dev/null
+++ b/doc/screenshots/notifications.png
Binary files differ
diff --git a/doc/screenshots/outlook-add-subscription.png b/doc/screenshots/outlook-add-subscription.png
new file mode 100644
index 00000000..30b6bdeb
--- /dev/null
+++ b/doc/screenshots/outlook-add-subscription.png
Binary files differ
diff --git a/doc/screenshots/outlook-edit-subscription.png b/doc/screenshots/outlook-edit-subscription.png
new file mode 100644
index 00000000..ac8be380
--- /dev/null
+++ b/doc/screenshots/outlook-edit-subscription.png
Binary files differ
diff --git a/doc/screenshots/overtime-timetable.png b/doc/screenshots/overtime-timetable.png
new file mode 100644
index 00000000..68b5e8d4
--- /dev/null
+++ b/doc/screenshots/overtime-timetable.png
Binary files differ
diff --git a/doc/screenshots/project-automatic-action-step1.png b/doc/screenshots/project-automatic-action-step1.png
new file mode 100644
index 00000000..0a31c9b6
--- /dev/null
+++ b/doc/screenshots/project-automatic-action-step1.png
Binary files differ
diff --git a/doc/screenshots/project-automatic-action-step2.png b/doc/screenshots/project-automatic-action-step2.png
new file mode 100644
index 00000000..b3675762
--- /dev/null
+++ b/doc/screenshots/project-automatic-action-step2.png
Binary files differ
diff --git a/doc/screenshots/project-automatic-action-step3.png b/doc/screenshots/project-automatic-action-step3.png
new file mode 100644
index 00000000..5ec2a6be
--- /dev/null
+++ b/doc/screenshots/project-automatic-action-step3.png
Binary files differ
diff --git a/doc/screenshots/project-automatic-actions.png b/doc/screenshots/project-automatic-actions.png
new file mode 100644
index 00000000..2af6ec63
--- /dev/null
+++ b/doc/screenshots/project-automatic-actions.png
Binary files differ
diff --git a/doc/screenshots/project-creation-form.png b/doc/screenshots/project-creation-form.png
new file mode 100644
index 00000000..a7df04a1
--- /dev/null
+++ b/doc/screenshots/project-creation-form.png
Binary files differ
diff --git a/doc/screenshots/project-creation-link.png b/doc/screenshots/project-creation-link.png
new file mode 100644
index 00000000..79d39268
--- /dev/null
+++ b/doc/screenshots/project-creation-link.png
Binary files differ
diff --git a/doc/screenshots/project-nobody-allowed.png b/doc/screenshots/project-nobody-allowed.png
new file mode 100644
index 00000000..3349843e
--- /dev/null
+++ b/doc/screenshots/project-nobody-allowed.png
Binary files differ
diff --git a/doc/screenshots/project-settings.png b/doc/screenshots/project-settings.png
new file mode 100644
index 00000000..a476d6ac
--- /dev/null
+++ b/doc/screenshots/project-settings.png
Binary files differ
diff --git a/doc/screenshots/recurring-tasks.png b/doc/screenshots/recurring-tasks.png
new file mode 100644
index 00000000..d5935db9
--- /dev/null
+++ b/doc/screenshots/recurring-tasks.png
Binary files differ
diff --git a/doc/screenshots/restrictions.png b/doc/screenshots/restrictions.png
new file mode 100644
index 00000000..dad378ba
--- /dev/null
+++ b/doc/screenshots/restrictions.png
Binary files differ
diff --git a/doc/screenshots/slack-add-incoming-webhook.png b/doc/screenshots/slack-add-incoming-webhook.png
new file mode 100644
index 00000000..a51457b4
--- /dev/null
+++ b/doc/screenshots/slack-add-incoming-webhook.png
Binary files differ
diff --git a/doc/screenshots/slack-notification.png b/doc/screenshots/slack-notification.png
new file mode 100644
index 00000000..aff379b7
--- /dev/null
+++ b/doc/screenshots/slack-notification.png
Binary files differ
diff --git a/doc/screenshots/subtask-status-done.png b/doc/screenshots/subtask-status-done.png
new file mode 100644
index 00000000..d36c403d
--- /dev/null
+++ b/doc/screenshots/subtask-status-done.png
Binary files differ
diff --git a/doc/screenshots/subtask-status-inprogress.png b/doc/screenshots/subtask-status-inprogress.png
new file mode 100644
index 00000000..aab88df6
--- /dev/null
+++ b/doc/screenshots/subtask-status-inprogress.png
Binary files differ
diff --git a/doc/screenshots/subtask-time-tracking.png b/doc/screenshots/subtask-time-tracking.png
new file mode 100644
index 00000000..7b18b245
--- /dev/null
+++ b/doc/screenshots/subtask-time-tracking.png
Binary files differ
diff --git a/doc/screenshots/subtask-timer.png b/doc/screenshots/subtask-timer.png
new file mode 100644
index 00000000..c90d34cb
--- /dev/null
+++ b/doc/screenshots/subtask-timer.png
Binary files differ
diff --git a/doc/screenshots/subtask-user-restriction.png b/doc/screenshots/subtask-user-restriction.png
new file mode 100644
index 00000000..5414f000
--- /dev/null
+++ b/doc/screenshots/subtask-user-restriction.png
Binary files differ
diff --git a/doc/screenshots/swimlanes-configuration.png b/doc/screenshots/swimlanes-configuration.png
new file mode 100644
index 00000000..74b4cacd
--- /dev/null
+++ b/doc/screenshots/swimlanes-configuration.png
Binary files differ
diff --git a/doc/screenshots/task-distribution.png b/doc/screenshots/task-distribution.png
new file mode 100644
index 00000000..a31b494e
--- /dev/null
+++ b/doc/screenshots/task-distribution.png
Binary files differ
diff --git a/doc/screenshots/task-duplication-another-project.png b/doc/screenshots/task-duplication-another-project.png
new file mode 100644
index 00000000..ed586666
--- /dev/null
+++ b/doc/screenshots/task-duplication-another-project.png
Binary files differ
diff --git a/doc/screenshots/task-duplication.png b/doc/screenshots/task-duplication.png
new file mode 100644
index 00000000..359b0740
--- /dev/null
+++ b/doc/screenshots/task-duplication.png
Binary files differ
diff --git a/doc/screenshots/task-lead-cycle-time.png b/doc/screenshots/task-lead-cycle-time.png
new file mode 100644
index 00000000..4ee6517e
--- /dev/null
+++ b/doc/screenshots/task-lead-cycle-time.png
Binary files differ
diff --git a/doc/screenshots/task-links.png b/doc/screenshots/task-links.png
new file mode 100644
index 00000000..284b87ec
--- /dev/null
+++ b/doc/screenshots/task-links.png
Binary files differ
diff --git a/doc/screenshots/task-screenshot.png b/doc/screenshots/task-screenshot.png
new file mode 100644
index 00000000..a11e6982
--- /dev/null
+++ b/doc/screenshots/task-screenshot.png
Binary files differ
diff --git a/doc/screenshots/task-time-tracking.png b/doc/screenshots/task-time-tracking.png
new file mode 100644
index 00000000..6a77ff1a
--- /dev/null
+++ b/doc/screenshots/task-time-tracking.png
Binary files differ
diff --git a/doc/screenshots/task-timesheet.png b/doc/screenshots/task-timesheet.png
new file mode 100644
index 00000000..1443babe
--- /dev/null
+++ b/doc/screenshots/task-timesheet.png
Binary files differ
diff --git a/doc/screenshots/task-transitions.png b/doc/screenshots/task-transitions.png
new file mode 100644
index 00000000..7665fa59
--- /dev/null
+++ b/doc/screenshots/task-transitions.png
Binary files differ
diff --git a/doc/screenshots/thunderbird-new-calendar-step1.png b/doc/screenshots/thunderbird-new-calendar-step1.png
new file mode 100644
index 00000000..73e6954f
--- /dev/null
+++ b/doc/screenshots/thunderbird-new-calendar-step1.png
Binary files differ
diff --git a/doc/screenshots/thunderbird-new-calendar-step2.png b/doc/screenshots/thunderbird-new-calendar-step2.png
new file mode 100644
index 00000000..da5ff742
--- /dev/null
+++ b/doc/screenshots/thunderbird-new-calendar-step2.png
Binary files differ
diff --git a/doc/screenshots/time-into-each-column.png b/doc/screenshots/time-into-each-column.png
new file mode 100644
index 00000000..e7efff8a
--- /dev/null
+++ b/doc/screenshots/time-into-each-column.png
Binary files differ
diff --git a/doc/screenshots/timetable.png b/doc/screenshots/timetable.png
new file mode 100644
index 00000000..0cecfc6e
--- /dev/null
+++ b/doc/screenshots/timetable.png
Binary files differ
diff --git a/doc/screenshots/transitions-export.png b/doc/screenshots/transitions-export.png
new file mode 100644
index 00000000..1332333f
--- /dev/null
+++ b/doc/screenshots/transitions-export.png
Binary files differ
diff --git a/doc/screenshots/transitions.png b/doc/screenshots/transitions.png
new file mode 100644
index 00000000..8d183eaf
--- /dev/null
+++ b/doc/screenshots/transitions.png
Binary files differ
diff --git a/doc/screenshots/user-mentions.png b/doc/screenshots/user-mentions.png
new file mode 100644
index 00000000..d5f7bcc6
--- /dev/null
+++ b/doc/screenshots/user-mentions.png
Binary files differ
diff --git a/doc/screenshots/user-repartition.png b/doc/screenshots/user-repartition.png
new file mode 100644
index 00000000..2743cbee
--- /dev/null
+++ b/doc/screenshots/user-repartition.png
Binary files differ
diff --git a/doc/screenshots/web-notifications-icon.png b/doc/screenshots/web-notifications-icon.png
new file mode 100644
index 00000000..28db1aa3
--- /dev/null
+++ b/doc/screenshots/web-notifications-icon.png
Binary files differ
diff --git a/doc/screenshots/web-notifications.png b/doc/screenshots/web-notifications.png
new file mode 100644
index 00000000..fe069326
--- /dev/null
+++ b/doc/screenshots/web-notifications.png
Binary files differ
diff --git a/doc/screenshots/week-timetable.png b/doc/screenshots/week-timetable.png
new file mode 100644
index 00000000..e28468cf
--- /dev/null
+++ b/doc/screenshots/week-timetable.png
Binary files differ
diff --git a/doc/tr_TR/2fa.markdown b/doc/tr_TR/2fa.markdown
new file mode 100644
index 00000000..d101ae6b
--- /dev/null
+++ b/doc/tr_TR/2fa.markdown
@@ -0,0 +1,33 @@
+Çift-Kademeli Kimlik Doğrulama
+=========================
+
+Her kullanıcı [Çift-Kademeli Kimlik Doğrulama two-factor authentication](http://en.wikipedia.org/wiki/Two_factor_authentication) yı aktyif edebilir.
+Başarılı bir oturum açtıktan sonra, kullanıcıya Kanboard'a erişim izni vermeleri için bir kerelik kod (6 karakter) istenecektir.
+
+Bu kod, genellikle akıllı telefonunuza takılı olan uyumlu bir yazılım tarafından sağlanmalıdır.
+
+Kanboard, [RFC 6238] (http://tools.ietf.org/html/rfc6238) içinde tanımlanan [Zamana Dayalı Bir Zamanlık Şifre Algoritması Time-based One-time Password Algorithm] (http://en.wikipedia.org/wiki/Time-based_One-time_Password_Algorithm) kullanır.
+
+Standart TOTP sistemi ile uyumlu birçok yazılım bulunmaktadır.
+Örneğin, şu uygulamaları kullanabilirsiniz:
+
+- [Google Authenticator](https://github.com/google/google-authenticator/) (Android, iOS, Blackberry)
+- [FreeOTP](https://fedorahosted.org/freeotp/) (Android, iOS)
+- [OATH Toolkit Araç Seti](http://www.nongnu.org/oath-toolkit/) (Unix/Linux'da Komut satırı yardımcı programı)
+
+Bu sistem çevrimdışı çalışabilir ve mutlaka cep telefonunuz olması gerekmez.
+
+Kurmak
+-----
+
+1. Kullanıcı profilinize git
+2. Sol tarafta **İki faktörlü kimlik doğrulama** seçeneğini tıklayın ve kutuyu işaretleyin
+3. Sizin için gizli bir anahtar oluşturulur.
+
+![2FA](screenshots/2fa.png)
+
+- TOTP yazılımında gizli anahtarı kaydetmeniz gerekir. Akıllı telefon kullanıyorsanız, en kolay çözüm QR kodunu FreeOTP veya Google Authenticator ile taramaktır.
+- Her sefer yeni bir oturum açtığınızda, yeni bir kod sorulur
+- Oturumunuzu kapatmadan önce cihazınızı test etmeyi unutmayın
+
+Bu özelliği her etkinleştirirken / devre dışı bıraktığınızda yeni bir gizli anahtar oluşturulur.
diff --git a/doc/tr_TR/analytics-tasks.markdown b/doc/tr_TR/analytics-tasks.markdown
new file mode 100644
index 00000000..d8be59e6
--- /dev/null
+++ b/doc/tr_TR/analytics-tasks.markdown
@@ -0,0 +1,24 @@
+Görevler için analiz
+===================
+
+Her görev, görev görünümünde sol menüden erişilebilen bir analiz bölümüne sahiptir.
+
+Teslim ve döngü süresi
+-------------------
+
+![Lead and cycle time](screenshots/task-lead-cycle-time.png)
+
+- Teslim zamanı, görev yaratma ve tamamlanma tarihi arasındaki zamandır (görev kapatıldı).
+- Döngü süresi, başlangıç tarihi ile tamamlanma tarihi arasındaki zamandır.
+- Görev kapalı değilse, tamamlanma tarihi yerine geçerli saat kullanılır.
+- Başlangıç tarihi belirtilmemişse, çevrim süresi hesaplanmaz.
+
+Not: Görevi seçtiğiniz kolona taşıdığınızda başlangıç tarihini otomatik olarak tanımlamak için otomatik bir eylem yapılandırabilirsiniz.
+
+Her bir kolonda geçen süre
+---------------------------
+
+![Time spent into each column](screenshots/time-into-each-column.png)
+
+- Bu grafik, görev için her bir kolonda geçen toplam süreyi gösterir.
+- Geçen süre, görev kapanıncaya kadar hesaplanır.
diff --git a/doc/tr_TR/analytics.markdown b/doc/tr_TR/analytics.markdown
new file mode 100644
index 00000000..422e01de
--- /dev/null
+++ b/doc/tr_TR/analytics.markdown
@@ -0,0 +1,66 @@
+Analizler
+=========
+
+Her projenin bir analiz bölümü vardır. Kanboard'u nasıl kullandığınıza bağlı olarak, şu raporları görebilirsiniz:
+
+Kullanıcı yeniden bölümlendirme
+----------------
+
+![User repartition](screenshots/user-repartition.png)
+
+Bu pasta grafik kullanıcı başına atanan açık görev sayısını gösterir.
+
+Görev dağıtımı
+-----------------
+
+![Task distribution](screenshots/task-distribution.png)
+
+Bu pasta grafiği, sütun başına açık görev sayısına genel bir bakış sunar.
+
+Kümülatif akış diyagramı
+-----------------------
+
+![Cumulative flow diagram](screenshots/cfd.png)
+
+- Bu grafik, zaman içindeki her bir sütun için toplu olarak görev sayısını gösterir.
+- Her gün, her bir sütun için toplam görev sayısı kaydedilir.
+- Kapatılan görevleri hariç tutmak istiyorsanız [global proje ayarları](project-configuration.markdown) seçeneğini değiştirin.
+
+Not: Grafiği görmek için en az iki güne kadar veri içermeniz gerekir.
+
+Geribildirim (Burndown) tablosu
+---------------
+
+![Burndown chart](screenshots/burndown-chart.png)
+
+Her proje için [geribildirim (Burndown) tablosu] (http://en.wikipedia.org/wiki/Burn_down_chart) mevcuttur.
+
+- Bu çizelge, zamana karşı yapılan işin grafik bir temsilidir.
+- Kanboard, bu diyagramı oluşturmak için karmaşıklığı veya öykü(olay-hikaye) noktasını kullanır.
+- Her gün, her sütunun öykü(olay-hikaye) puanlarının toplamı hesaplanır.
+
+Her sütuna harcanan ortalama süre
+-----------------------------------
+
+![Average time spent into each column](screenshots/average-time-spent-into-each-column.png)
+
+Bu grafik, son 1000 görev için her bir sütuna harcanan ortalama süreyi gösterir.
+
+- Kanboard, veriyi hesaplamak için görev geçişlerini kullanır.
+- Harcanan zaman, görev kapanıncaya kadar hesaplanır.
+
+Ortalama Teslim ve Döngü Süresi
+---------------------------
+
+![Average time spent into each column](screenshots/average-lead-cycle-time.png)
+
+Bu grafik, son 1000 görevin zaman içindeki ortalama teslim ve döngü süresini göstermektedir.
+
+- Teslim zamanı, görev yaratma ve tamamlanma tarihi arasındaki zamandır.
+- Döngü süresi, görevin belirtilen başlangıç tarihi ile bitiş tarihine kadar olan zamandır.
+- Görev kapalı değilse, tamamlanma tarihi yerine geçerli saat kullanılır.
+
+Bu metrikler, tüm proje için her gün hesaplanır ve kaydedilir.
+
+Not: Doğru istatistikleri elde etmek için [günlük-daily cronjob](cronjob.markdown) çalıştırmayı unutmayın.
+
diff --git a/doc/tr_TR/api-json-rpc.markdown b/doc/tr_TR/api-json-rpc.markdown
new file mode 100644
index 00000000..7e3bc52f
--- /dev/null
+++ b/doc/tr_TR/api-json-rpc.markdown
@@ -0,0 +1,72 @@
+Json-RPC API
+============
+
+Kullanıcı ve uygulama API'sı
+------------------------
+
+İki tür API erişimi vardır:
+
+### Uygulama API'si
+
+- "jsonrpc" kullanıcısı ve ayarlar sayfasında belirteç-token bulunan API'ya erişim
+- Tüm prosedürlere erişim
+- İzin verilen izin yok
+- Sunucuda kullanıcı oturumu yok
+- "My ..." ile başlayan işlemlere erişim yok (örneğin: "getMe" veya "getMyProjects")
+- Olası hizmetlere-client örnek: veri taşıma / içe aktarma, başka bir sistemden görevler oluşturma, vb.
+
+### Kullanıcı API'si
+
+- Kullanıcı kimlik bilgileri (kullanıcı adı ve şifre) ile API'ye erişim
+- Ayrıca, şifreniz yerine bir kişisel erişim belirteci-token da oluşturabilirsiniz.
+- Uygulama rolü ve proje izinleri her prosedür için kontrol edilir
+- Sunucuda bir kullanıcı oturumu oluşturuldu
+- Olası hizmetlere-client örnek: yerel mobil / masaüstü uygulaması, komut satırı yardımcı programı, vb.
+
+Güvenlik
+--------
+
+- Her zaman geçerli bir sertifika ile HTTPS kullanın (düz metin iletişimi önlemek için)
+- Mobil bir uygulama yaparsanız, cihazdaki kullanıcı kimlik bilgilerini güvenli bir şekilde depolamanız sizin sorumluluğunuzdur
+- Kullanıcı API'sinde 3 kimlik doğrulama hatası yapıldıktan sonra, son kullanıcı end-user giriş formunu kullanarak hesabının kilidini açması gerekir
+- İki-kademeli kimlik doğrulama API aracılığıyla henüz mevcut değil
+
+Protokol
+--------
+
+Kanboard, harici programlarla etkileşim kurmak için Json-RPC protokolünü kullanır.
+
+JSON-RPC, JSON'da kodlanmış uzaktan yordam çağrı protokolüdür.
+XML-RPC ile hemen hemen aynı şey ama JSON biçimi iledir.
+
+[Protokolün 2. versiyonunu](http://www.jsonrpc.org/specification) kullanıyorsanız,
+API'yi `POST` HTTP isteği ile çağırmalısınız.
+
+Kanboard, yığın isteklerini destekler, böylece tek bir HTTP isteğinde birden fazla API çağrısı yapabilirsiniz. Daha yüksek ağ gecikmeli mobil istemciler için özellikle yararlıdır.
+
+Kullanımı
+-----
+
+- [Kimlik Doğrulama](api-authentication.markdown)
+- [Örnekler](api-examples.markdown)
+- [Uygulama](api-application-procedures.markdown)
+- [Projeler](api-project-procedures.markdown)
+- [Proje İzinleri](api-project-permission-procedures.markdown)
+- [Panolar](api-board-procedures.markdown)
+- [Kolonlar](api-column-procedures.markdown)
+- [Kulvarlar](api-swimlane-procedures.markdown)
+- [Kategoriler](api-category-procedures.markdown)
+- [Otomatik İşlemler](api-action-procedures.markdown)
+- [Görevler](api-task-procedures.markdown)
+- [Alt-Görevler](api-subtask-procedures.markdown)
+- [Alt Görev Süre Çizelgesi](api-subtask-time-tracking-procedures.markdown)
+- [Görev Dosyaları](api-task-file-procedures.markdown)
+- [Proje Dosyaları](api-project-file-procedures.markdown)
+- [Bağlantılar](api-link-procedures.markdown)
+- [İç Görev Bağlantıları](api-internal-task-link-procedures.markdown)
+- [Harici Görev Bağlantıları](api-external-task-link-procedures.markdown)
+- [Yorumlar](api-comment-procedures.markdown)
+- [Kullanıcılar](api-user-procedures.markdown)
+- [Gruplar](api-group-procedures.markdown)
+- [Grup Üyeleri](api-group-member-procedures.markdown)
+- [Ben](api-me-procedures.markdown)
diff --git a/doc/tr_TR/application-configuration.markdown b/doc/tr_TR/application-configuration.markdown
new file mode 100644
index 00000000..c0134469
--- /dev/null
+++ b/doc/tr_TR/application-configuration.markdown
@@ -0,0 +1,45 @@
+Uygulama ayarları
+====================
+
+Uygulama için bazı parametreler ayarlar sayfasında değiştirilebilir.
+Bu ayarları yalnızca yöneticiler değiştirebilir.
+
+Sağ üstteki **Ayarlar** menüsüne gidin, ardından soldaki **Uygulama ayarları** seçeneğini seçin.
+
+![Uygulama ayarları](screenshots/application-settings.png)
+
+
+### Uygulama URL
+
+Bu parametre, e-posta bildirimleri için kullanılır.
+E-postalarınızda altbilgi(footer) alanı, Kanboard görevine bir bağlantı içerir.
+
+### Dil
+
+Uygulama dili her an değiştirilebilir.
+Dil, tüm kullanıcılar için belirlenecek.
+
+
+### Saat dilimi
+
+Varsayılan olarak, Kanboard UTC'yi saat dilimi olarak kullanır, ancak kendi saat dilimini tanımlayabilirsiniz.
+Liste, web sunucunuz tarafından desteklenen tüm saat dilimlerini içerir.
+
+
+### Tarih formatı
+
+Tarih alanlarında kullanılan girdi biçimi, örneğin görevler için son tarih.
+
+Kanboard, 4 farklı format sunuyor:
+
+- DD/MM/YYYY
+- MM/DD/YYYY (varsayılan)
+- YYYY/MM/DD
+- MM.DD.YYYY
+
+[ISO 8601](http://en.wikipedia.org/wiki/ISO_8601) biçimi daima kabul edilir (YYYY-MM-DD veya YYYY_MM_DD).
+
+
+### Özel Stil(CSS) Sayfası
+
+Kanboard varsayılan stilini geçersiz kılmak veya geliştirmek için kendi CSS'nizi yazın.
diff --git a/doc/tr_TR/assets.markdown b/doc/tr_TR/assets.markdown
new file mode 100644
index 00000000..3c4ada0e
--- /dev/null
+++ b/doc/tr_TR/assets.markdown
@@ -0,0 +1,50 @@
+Varlıklarğ-assets (Javascript ve CSS dosyaları) nasıl oluşturulur
+==============================================
+
+Stil sayfası ve Javascript dosyaları bir araya getirilir ve küçültülür.
+
+- Orijinal CSS dosyaları `assets/css/src/*.css` klasöründe saklanır
+- Orijinal Javascript kodu `assets/js/src/*.js` klasöründe saklanır
+- `assets/*/vendor.min.*` birleştirilmiş ve küçültülmüş harici bağımlılıklardır
+- `assets/*/app.min.*` birleştirme ve küçültülmüş uygulama kaynak kodu
+
+Gereksinimler
+------------
+
+- `npm` ile [NodeJS](https://nodejs.org/)
+
+Javascript ve CSS dosyalarını oluşturma
+---------------------------------
+
+Kanboard, öğeleri oluşturmak için [Gulp](http://gulpjs.com/) ve bağımlılıkları yönetmek için [Bower](http://bower.io/) kullanır.
+Bu araçlar, projeye NodeJS bağımlılıkları olarak yüklenir.
+
+### Her şeyi çalıştır
+
+```bash
+make static
+```
+
+### `vendor.min.js` ve `vendor.min.css` leri oluşturun
+
+```bash
+gulp vendor
+```
+
+### `app.min.js` oluşturun
+
+```bash
+gulp js
+```
+
+### `app.min.css` oluşturun
+
+```bash
+gulp css
+```
+
+Notlar
+-----
+
+Varlıkların oluşturulması Kanboard'un arşivinden mümkün değildir, havuzun klonlamanız gerekir.
+
diff --git a/doc/tr_TR/automatic-actions.markdown b/doc/tr_TR/automatic-actions.markdown
new file mode 100644
index 00000000..600d735c
--- /dev/null
+++ b/doc/tr_TR/automatic-actions.markdown
@@ -0,0 +1,108 @@
+Otomatik İşlemler
+=================
+
+Kullanıcı etkileşimini en aza indirgemek için, Kanboard otomatik işlemleri desteklemektedir.
+
+Her otomatik işlem şu şekilde tanımlanır:
+
+- Dinlemek için bir etkinlik
+- Bu etkinlikle bağlantılı işlem
+- Sonunda tanımlamak için bazı parametreler
+
+Her projenin farklı otomatik eylemler kümesi vardır, proje girişi sayfasında yapılandırma panelinde bulunur, **Otomatik işlemler** bağlantısına tıklayın.
+
+Yeni bir eylem ekle
+----------------
+
+**Yeni bir otomatik işlem ekle** bağlantısını tıklayın.
+
+![Automatique action](screenshots/automatic-action-creation.png)
+
+- Bir eylem seçin
+- Sonra bir etkinlik seçin
+- Ve son olarak, parametreleri tanımlayın
+
+Kullanılabilir işlemlerin listesi
+-------------------------
+
+- Harici bir sağlayıcının yorumunu oluşturma
+- Görevi sütunlar arasında taşırken yorum günlüğü ekleme
+- Otomatik olarak bir renge dayalı bir kategori atama
+- Kategoriyi harici bir etikete göre değiştirin
+- Bağlantıya dayalı otomatik olarak bir kategori atama
+- Bir kategoriyi temel alan otomatik olarak bir renk ata
+- Görev belirli bir kolona taşıntığında renk ata
+- Belirli bir görev bağlantısı kullanırken görev rengini değiştirme
+- Belirli bir kullanıcıya renk atama
+- Görevi eylemi yapan kişiye atayın
+- Görevi, sütun değiştiğinde işlemi yapan kişiye atayın
+- Görevi belirli bir kullanıcıya atayın
+- Harçlı kişiyi harici bir kullanıcı adına göre değiştirin
+- Görevi kapat
+- Görevi belirli bir sütunda kapatma
+- Harici bir sağlayıcıdan bir görev oluşturma
+- Görevin başka bir projeye kopyalanması
+- Görevini e-postayla birine gönderin
+- Görevi başka bir projeye taşı
+- Görevi bir kullanıcıya atandığında başka bir kolona taşıyın
+- Kategori değiştirildiğinde görevi başka bir kolona taşı
+- Görev sahibi silindiğinde, görevi başka bir kolona taşı
+- Görev aç
+- Başlangıç ​​tarihini otomatik olarak güncelle
+
+Örnekler
+--------
+
+İşte gerçek hayatta kullanılan bazı örnekler:
+
+### Bir görevi "Bitti" kolonuna taşıdığımda, bu görevi otomatik olarak kapat
+
+- İşlemi seçin: **Bir görevi belirli bir sütunda kapatın**
+- Etkinliği seçin: **Görevi başka bir kolona taşıyın**
+- Eylem parametresini tanımlayın: **Kolon=Bitti** (hedef kolon budur)
+
+### Bir görevi "Doğrulanacak" kolonuna taşıdığımda, bu görevi belirli bir kullanıcıya atayın
+
+- İşlemi seçin: **Görevi belirli bir kullanıcıya atayın**
+- Etkinliği seçin: **Görevi başka bir kolona taşıyın**
+- Eylem parametrelerini tanımlayın: **Kolon=Doğrulanacak** ve **Kullanıcı=Bob** (Bob bizim test görevlimizdir)
+
+### Görevi "Çalışma sürüyor" kolonuna taşıdığımda, bu görevi geçerli kullanıcıya atayın
+
+- İşlemi seçin: **Görevi, kolon değiştiğinde işlemi yapan kişiye atayın**
+- Etkinliği seçin: **Görevi başka bir kolona taşıyın**
+- Eylem parametresini tanımlayın: **Kolon=Çalışma sürüyor**
+
+### Bir görev tamamlandığında, bu görevi başka bir projeye kopyalayın
+
+Diyelim ki "Müşteri Siparişi" ve "Üretim" olmak üzere iki projemiz var, sipariş onaylandıktan sonra onu "Üretim" projesine değiştirelim.
+
+- İşlemi seçin: **Görevi başka bir projeye çoğaltın**
+- Etkinliği seçin: **Görevi kapatma**
+- Eylem parametrelerini tanımlayın: **Kolon=Doğrulanmış** ve **Proje=Üretim**
+
+### Bir görev son kolona taşıntığında, aynı görevi başka bir projeye taşıyın
+
+Diyelim ki iki proje "Fikirler" ve "Geliştirme" var, bir kez fikir geçerliliği onaylandıktan sonra onu "Geliştirme" projesine takas edelim.
+
+- İşlemi seçin: **Görevi başka bir projeye taşıyın**
+- Etkinliği seçin: **Görevi başka bir kolona taşıyın**
+- Eylem parametrelerini tanımlayın: **Kolon=Doğrulanmış** ve **Proje=Geliştirme**
+
+### Bob kullanıcısına otomatik olarak bir renk atamak istiyorum
+
+- İşlemi seçin: **Belirli bir kullanıcıya renk atayın**
+- Etkinliği seçin: **Görev atayanı değişim**
+- Eylem parametrelerini tanımlayın: **Renk=Yeşil** ve **Atayan=Bob**
+
+### Tanımlanan "Özellik İsteği" kategorisine otomatik olarak bir renk atamak istiyorum
+
+- İşlemi seçin: **Otomatik olarak bir kategoriye dayalı bir renk atayın**
+- Etkinliği seçin: **Görev oluşturma veya değiştirme**
+- Eylem parametrelerini tanımlayın: **Renk=Mavi** ve **Kategori=Özellik İsteği**
+
+### Görev "Çalışma sürüyor" sütununa taşındığında başlangıç ​​tarihini otomatik olarak ayarlamak istiyorum
+
+- İşlemi seçin: **Başlangıç ​​tarihini otomatik olarak güncelleyin**
+- Etkinliği seçin: **Görevi başka bir kolona taşıyın**
+- Eylem parametrelerini tanımlayın: **Kolon=Çalışma sürüyor**
diff --git a/doc/tr_TR/board-collapsed-expanded.markdown b/doc/tr_TR/board-collapsed-expanded.markdown
new file mode 100644
index 00000000..d26b27cb
--- /dev/null
+++ b/doc/tr_TR/board-collapsed-expanded.markdown
@@ -0,0 +1,18 @@
+Daraltılmış ve Genişletilmiş mod
+===========================
+
+Tahtadaki görevler daraltılmış veya genişletilmiş modda görüntülenebilir.
+Bir görünümden diğerine geçmek, **"s"** klavye kısayoluyla veya soldaki açılır menüyü kullanarak yapılabilir.
+
+Daraltılmış mod
+--------------
+
+![Tasks collapsed](screenshots/board-collapsed-mode.png)
+
+- Görev başkasına devredilirse, kişinin baş harfleri görev numarasının yanında gösterilir
+- Görev başlığı çok uzunsa, tam başlıklı bir araç ipucu göstermek için farenizi görevin üzerine koyabilirsiniz.
+
+Genişletilmiş mod
+-------------
+
+![Tasks expanded](screenshots/board-expanded-mode.png)
diff --git a/doc/tr_TR/board-configuration.markdown b/doc/tr_TR/board-configuration.markdown
new file mode 100644
index 00000000..99f87f07
--- /dev/null
+++ b/doc/tr_TR/board-configuration.markdown
@@ -0,0 +1,24 @@
+Pano ayarları
+==============
+
+Sağ Üst menüden **Ayarlar** menüsüne gidin, ardından soldaki **Pano ayarları** seçimini yapın.
+
+![Board settings](screenshots/board-settings.png)
+
+### Görev öne çıkarma
+
+Bu özellik, yakın zamanda bir görev taşındığında görevin çevresinde bir gölge görüntüler.
+
+Bu özelliği devre dışı bırakmak için 0 değerini, varsayılan olarak 2 gün (172800 saniye) olarak ayarlayın.
+
+2 günden beri taşınan herşey görevin çevresinde gölgeli olacaktır.
+
+### Heskese açık paylaşılan Pano(public board) için yenileme aralığı
+
+Bir panoyu paylaştığınızda, sayfa her 60 saniyede otomatik olarak varsayılan olarak yenilenir.
+
+### Özel Pano için yenileme aralığı
+
+Web tarayıcınız bir tahtada açık olduğunda, bir şey bir başkası tarafından değiştirildiğinde Kanboard her 10 saniyede bir kontrol eder.
+
+Teknik olarak bu süreç Ajax yoklaması ile yapılır.
diff --git a/doc/tr_TR/board-horizontal-scrolling-and-compact-view.markdown b/doc/tr_TR/board-horizontal-scrolling-and-compact-view.markdown
new file mode 100644
index 00000000..e42abb65
--- /dev/null
+++ b/doc/tr_TR/board-horizontal-scrolling-and-compact-view.markdown
@@ -0,0 +1,10 @@
+Yatay kaydırma ve kompakt mod
+=====================================
+
+PAno ekranınıza sığmadığı zaman, altta yatay bir kaydırma çubuğu görünür.
+
+Bununla birlikte, ekranınızdaki tüm sütunları görüntülemek için kompakt ekrana geçmek mümkündür.
+
+![Switch to compact mode](screenshots/board-compact-mode.png)
+
+Yatay kaydırma ve kompakt görünüm arasındaki geçiş, klavye kısayol **"c"** ile veya sol üstteki açılır menüyü kullanarak yapılabilir.
diff --git a/doc/tr_TR/board-show-hide-columns.markdown b/doc/tr_TR/board-show-hide-columns.markdown
new file mode 100644
index 00000000..ea362afe
--- /dev/null
+++ b/doc/tr_TR/board-show-hide-columns.markdown
@@ -0,0 +1,12 @@
+Panoda sütunları göster ve gizle
+==================================
+
+Sütunları çok pratik bir şekilde gizleyebilir veya görüntüleyebilirsiniz:
+
+![Hide a column](screenshots/hide-column.png)
+
+Bir sütunu gizlemek için sütun açılır menüsünü tıklayın ve "Bu sütunu gizle" yi seçin:
+
+![Show a column](screenshots/show-column.png)
+
+Sütunu tekrar göstermek için "artı simgesini" tıklayın.
diff --git a/doc/tr_TR/bruteforce-protection.markdown b/doc/tr_TR/bruteforce-protection.markdown
new file mode 100644
index 00000000..5b543824
--- /dev/null
+++ b/doc/tr_TR/bruteforce-protection.markdown
@@ -0,0 +1,35 @@
+(Brute Force)Kaba kuvvet Koruma
+======================
+
+Kanboard'un kaba kuvvet koruması, kullanıcı hesabı düzeyinde çalışır:
+
+- Aynı kullanıcı adı için üç kimlik doğrulama hatası yapıldıktan sonra, oturum açma formu, otomatik bot hazırlayıcıları önlemek için bir captcha resmi görüntüler.
+- 6 kimlik doğrulama başarısızlığından sonra, kullanıcı hesabı 15 dakika boyunca kilitlenir.
+
+Bu özellik yalnızca oturum açma formunu kullanan kimlik doğrulama yöntemleri için kullanılabilir.
+
+Bununla birlikte **kullanıcı API'sı aracılığıyla üç kimlik doğrulama hatasından sonra**, giriş formunu kullanarak hesabın kilidinin açılması gerekir.
+
+Botlar, çeşitli anonim vekilleri kullanabileceğinden, Kanboard herhangi bir IP adresini engellemez. Bununla birlikte, büyük taramaları önlemek için [fail2ban] (http://www.fail2ban.org) gibi harici araçları kullanabilirsiniz.
+
+Yapılandırma
+-------------
+
+Varsayılan ayarlar şu yapılandırma değişkenleriyle değiştirilebilir:
+
+```php
+// 3 kimlik doğrulama hatasından sonra captcha'yı etkinleştir
+define('BRUTEFORCE_CAPTCHA', 3);
+
+// 6 kimlik doğrulama hatasından sonra hesabı kilitle
+define('BRUTEFORCE_LOCKDOWN', 6);
+
+// Hesap süresini dakika olarak kilitle
+define('BRUTEFORCE_LOCKDOWN_DURATION', 15);
+```
+
+Kullanıcıların kilidini açma
+---------------
+
+15 dakika beklemek istemiyorsanız kullanıcı arayüzünden bir kullanıcının kilidini kaldırabilirsiniz.
+Yönetici olarak, kullanıcı profiline gidin ve "Bu kullanıcının kilidini aç" ı tıklayın.
diff --git a/doc/tr_TR/calendar-configuration.markdown b/doc/tr_TR/calendar-configuration.markdown
new file mode 100644
index 00000000..0ab2550f
--- /dev/null
+++ b/doc/tr_TR/calendar-configuration.markdown
@@ -0,0 +1,44 @@
+Takvim ayarları
+=================
+
+**Ayarlar** menüsüne gidin, ardından soldaki **Takvim ayarları** seçeneğini seçin.
+
+![Calendar settings](screenshots/calendar-settings.png)
+
+Kanboard'da iki farklı takvim vardır:
+
+- Proje takvimi
+- Kullanıcı takvimi (dashboard-gösterge tablosundan kullanılabilir)
+
+Proje takvimi
+----------------
+
+Bu takvim, oluşturulma tarihi veya başlangıç tarihine dayanan bitiş tarihi ve görevleri olan görevleri gösterir.
+
+### Görevleri oluşturma tarihe göre göster
+
+- Takvim etkinliğinin başlangıç tarihi, görevin oluşturulma tarihidir.
+- Etkinliğin bitiş tarihi tamamlanma tarihidir.
+
+### Görevleri başlangıç tarihine göre göster
+
+- Takvim etkinliğinin başlangıç tarihi, görevin başlangıç tarihidir.
+- Bu tarih el-ile manuel olarak tanımlanabilir.
+- Etkinliğin bitiş tarihi tamamlanma tarihidir.
+- Başlama tarihi yoksa, görev takvimde görünmez.
+
+Kullanıcı takvimi
+-------------
+
+Bu takvim yalnızca kullanıcıya atanan görevleri ve isteğe bağlı olarak alt görev bilgisini gösterir.
+
+### Alt görevleri zaman izlemeye göre göster
+
+- Takvimdeki alt görevleri zaman izleme tablosunda kaydedilen bilgilerden görüntüleyin.
+- Kullanıcı zaman çizelgesiyle kesişme noktası da hesaplanır.
+
+### Alt görev tahminlerini göster (gelecek çalışmaların tahmini)
+
+- Alt görevler için "todo" statüsünde ve tanımlanmış "tahmini" değerli gelecekteki çalışmalarının tahmini gösterilir.
+
+
diff --git a/doc/tr_TR/calendar.markdown b/doc/tr_TR/calendar.markdown
new file mode 100644
index 00000000..c2051d44
--- /dev/null
+++ b/doc/tr_TR/calendar.markdown
@@ -0,0 +1,20 @@
+Takvim
+========
+
+Takvim için iki farklı görünüm vardır:
+
+- Filtrelerle proje görünümü (panoda bulunur)
+- Kullanıcı görünümü (kontrol panelinden ve kullanıcı bölümünden kullanılabilir)
+
+Şu anda takvim şu bilgileri görüntüleyebilmektedir:
+
+- Vade tarihli görevler, en üstte gösterilir. **Görevi başka bir güne ** geçirmek suretiyle vade değişimi yapabilirsiniz**.
+- Görevler, oluşturulma tarihi veya başlangıç tarihini temel alır.** Bu etkinlikler takvimle değiştirilemez**.
+- Alt görev zaman takibi, kaydedilen tüm zaman aralığı takvimde gösterilecektir.
+- Alt iş tahminleri, sol iş tahminleri
+
+![Calendar](screenshots/calendar.png)
+
+Takvim yapılandırması ayarlar sayfasından değiştirilebilir.
+
+Not: Teslim tarihi, zaman bilgisi içermemektedir.
diff --git a/doc/tr_TR/centos-installation.markdown b/doc/tr_TR/centos-installation.markdown
new file mode 100644
index 00000000..df20404b
--- /dev/null
+++ b/doc/tr_TR/centos-installation.markdown
@@ -0,0 +1,83 @@
+CentOS'da Kanboard Kurulumu
+===============================
+
+Centos 7
+--------
+
+PHP'yi ve Apache'ye kurun:
+
+```bash
+yum install -y php php-mbstring php-pdo php-gd unzip wget
+```
+
+Varsayılan olarak, Centos 7, PHP 5.4.16 ve Apache 2.4.6 kullanır.
+
+Apache'yi yeniden başlatın:
+
+```bash
+systemctl restart httpd.service
+```
+
+Kanboard'u kurmak:
+
+```bash
+cd /var/www/html
+wget https://kanboard.net/kanboard-latest.zip
+unzip kanboard-latest.zip
+chown -R apache:apache kanboard/data
+rm kanboard-latest.zip
+```
+
+Centos 6.x
+----------
+
+PHP'yi ve Apache'yi kurun:
+
+```bash
+yum install -y php php-mbstring php-pdo php-gd unzip wget
+```
+
+Varsayılan olarak, Centos 6.5, PHP 5.3.3 ve Apache 2.2.15'i kullanır.
+
+Kısa etiketleri etkinleştirin:
+
+- Dosyayı düzenleyin `/etc/php.ini`
+- Satırı değiştirin; `short_open_tag = On`
+
+Apache'yi yeniden başlatın:
+
+```bash
+service httpd restart
+```
+
+Kanboard'u kurmak:
+
+```bash
+cd /var/www/html
+wget https://kanboard.net/kanboard-latest.zip
+unzip kanboard-latest.zip
+chown -R apache:apache kanboard/data
+rm kanboard-latest.zip
+```
+
+SELinux kısıtlamaları
+--------------------
+
+SELinux etkinleştirilmişse, Apache kullanıcısının dizin verilerine yazabildiğinden emin olun:
+
+```bash
+chcon -R -t httpd_sys_content_rw_t /var/www/html/kanboard/data
+```
+
+Sunucunuzu, SELinux'la olduğu gibi, Kanboard'un e-posta göndermelerine ve harici ağ istekleri almasına izin verecek şekilde yapılandırmalarını sağlayın:
+
+```bash
+setsebool -P httpd_can_network_connect=1
+```
+
+LDAP, SMTP, Web kancaları veya herhangi bir üçüncü taraf entegrasyonu kullanıyorsanız harici bağlantılara izin verilmesi gereklidir.
+
+Notlar
+-----
+
+Kanboard'un bazı özellikleri, [günlük arka plan işleri](cronjob.markdown) çalıştırmanızı gerektirir.
diff --git a/doc/tr_TR/cli.markdown b/doc/tr_TR/cli.markdown
new file mode 100644
index 00000000..260921c9
--- /dev/null
+++ b/doc/tr_TR/cli.markdown
@@ -0,0 +1,224 @@
+Komut satırı arayüzü-CLI
+======================
+
+Kanboard, herhangi bir Unix terminalinden kullanılabilen basit bir komut satırı arabirimi sağlar.
+Bu araç yalnızca yerel makinede kullanılabilir.
+
+Bu özellik, komutları web sunucusu işlemleri dışında çalıştırmak için kullanışlıdır.
+
+Kullanımı
+-----
+
+- Bir terminal açın ve Kanboard dizinine gidin (örneğin: `cd /var/www/kanboard`)
+- `./cli` veya `php cli` komutunu çalıştırın
+
+```bash
+Kanboard version master
+
+Usage:
+ command [options] [arguments]
+
+Options:
+ -h, --help Display this help message
+ -q, --quiet Do not output any message
+ -V, --version Display this application version
+ --ansi Force ANSI output
+ --no-ansi Disable ANSI output
+ -n, --no-interaction Do not ask any interactive question
+ -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
+
+Available commands:
+ cronjob Execute daily cronjob
+ help Displays help for a command
+ list Lists commands
+ worker Execute queue worker
+ db
+ db:migrate Execute SQL migrations
+ db:version Show database schema version
+ export
+ export:daily-project-column-stats Daily project column stats CSV export (number of tasks per column and per day)
+ export:subtasks Subtasks CSV export
+ export:tasks Tasks CSV export
+ export:transitions Task transitions CSV export
+ locale
+ locale:compare Compare application translations with the fr_FR locale
+ locale:sync Synchronize all translations based on the fr_FR locale
+ notification
+ notification:overdue-tasks Send notifications for overdue tasks
+ plugin
+ plugin:install Install a plugin from a remote Zip archive
+ plugin:uninstall Remove a plugin
+ plugin:upgrade Update all installed plugins
+ projects
+ projects:daily-stats Calculate daily statistics for all projects
+ trigger
+ trigger:tasks Trigger scheduler event for all tasks
+ user
+ user:reset-2fa Remove two-factor authentication for a user
+ user:reset-password Change user password
+```
+
+Kullanılabilir komutlar
+------------------
+
+### Görevleri CSV olarak dışa aktarma
+
+Kullanımı:
+
+```bash
+./cli export:tasks <project_id> <start_date> <end_date>
+```
+
+Örnek:
+
+```bash
+./cli export:tasks 1 2014-10-01 2014-11-30 > /tmp/my_custom_export.csv
+```
+
+CSV verileri şu adrese gönderilir; `stdout`.
+
+### Alt görevleri CSV olarak dışa aktarma
+
+Kullanımı:
+
+```bash
+./cli export:subtasks <project_id> <start_date> <end_date>
+```
+
+Örnek:
+
+```bash
+./cli export:subtasks 1 2014-10-01 2014-11-30 > /tmp/my_custom_export.csv
+```
+
+### Görev geçişlerini CSV olarak dışa aktarma
+
+Kullanımı:
+
+```bash
+./cli export:transitions <project_id> <start_date> <end_date>
+```
+
+Örnek:
+
+```bash
+./cli export:transitions 1 2014-10-01 2014-11-30 > /tmp/my_custom_export.csv
+```
+
+### CSV'de günlük özet verilerini dışa aktar
+
+Dışa aktarılan veriler standart çıktıda bastırılacaktır:
+
+```bash
+./cli export:daily-project-column-stats <project_id> <start_date> <end_date>
+```
+
+Örnek:
+
+```bash
+./cli export:daily-project-column-stats 1 2014-10-01 2014-11-30 > /tmp/my_custom_export.csv
+```
+
+### Gecikmiş görevler için bildirim gönder
+
+E-postalar, bildirimlerin etkinleştirildiği tüm kullanıcılara gönderilecektir.
+
+```bash
+./cli notification:overdue-tasks
+```
+
+İsteğe bağlı parametreler:
+
+- `--show`: Ekran bildirimleri gönderin
+- `--group`: Bir kullanıcı için tüm gecikmiş görevleri tek bir e-postayla gruplandırın (tüm projelerden)
+- `--manager`: Gecikmiş tüm görevleri tek bir e-postayla proje yöneticisine gönderin
+
+Gecikmiş görevleri bayrağıyla da görüntüleyebilirsiniz `--show`:
+
+```bash
+./kanboard notification:overdue-tasks --show
++-----+---------+------------+------------+--------------+----------+
+| Id | Title | Due date | Project Id | Project name | Assignee |
++-----+---------+------------+------------+--------------+----------+
+| 201 | Test | 2014-10-26 | 1 | Project #0 | admin |
+| 202 | My task | 2014-10-28 | 1 | Project #0 | |
++-----+---------+------------+------------+--------------+----------+
+```
+
+### Günlük proje istatistikleri hesaplamasını çalıştır
+
+Bu komut, her projenin istatistiklerini hesaplar:
+
+```bash
+./cli projects:daily-stats
+Run calculation for Project #0
+Run calculation for Project #1
+Run calculation for Project #10
+```
+
+### Görevler için tetikleyici
+
+Bu komut, her projenin açık görevlerine "günlük cronjob etkinliği" gönderir.
+
+```bash
+./cli trigger:tasks
+Trigger task event: project_id=2, nb_tasks=1
+```
+
+### Kullanıcı şifresini sıfırla
+
+```bash
+./cli user:reset-password my_user
+```
+
+Bir şifre ve onay istenir. Karakterler ekrana yazdırılmaz.
+
+### Bir kullanıcı için iki-kademeli kimlik doğrulamayı kaldırma
+
+```bash
+./cli user:reset-2fa my_user
+```
+
+### Bir eklenti kurma
+
+```bash
+./cli plugin:install https://github.com/kanboard/plugin-github-auth/releases/download/v1.0.1/GithubAuth-1.0.1.zip
+```
+
+Not: Yüklü dosyalar, geçerli kullanıcıyla aynı izinlere sahip olacak
+
+### Eklentiyi kaldır
+
+```bash
+./cli plugin:uninstall Budget
+```
+
+### Tüm eklentileri güncelle
+
+```bash
+./cli plugin:upgrade
+* Updating plugin: Budget Planning
+* Plugin up to date: Github Authentication
+```
+
+### Arkaplan çalışanını çalıştır
+
+```bash
+./cli worker
+```
+
+### Veritabanı geçişlerini yürütün
+
+`DB_RUN_MIGRATIONS` parametresi `false` olarak ayarlanırsa, veritabanı geçişlerini manuel olarak çalıştırmışsınızdır:
+
+```bash
+./cli db:migrate
+```
+
+### Veritabanı şema sürümünü denetle
+
+```bash
+./cli db:version
+Current version: 95
+Last version: 96
+```
diff --git a/doc/tr_TR/closing-tasks.markdown b/doc/tr_TR/closing-tasks.markdown
new file mode 100644
index 00000000..c390b477
--- /dev/null
+++ b/doc/tr_TR/closing-tasks.markdown
@@ -0,0 +1,16 @@
+Görevleri kapatma
+================
+
+Bir görev kapatıldığında, panodan gizlenir.
+
+Bununla birlikte, her zaman arama durumundaki **status:closed** sorgusunu kullanarak kapalı görev listesine her zaman erişebilir veya filtre açılır menüsünden **Kapalı görev** seçeneğini belirleyin.
+
+Bir görevi kapatmak için panodaki görev açılır menüsünden iki farklı yol vardır:
+
+![Close a task from drop-down menu](screenshots/menu-close-task.png)
+
+Veya görev ayrıntı görünümündeki görev yan çubuğu menüsünden:
+
+![Close task](screenshots/closing-tasks.png)
+
+Not: Bir görevi kapattığınızda, tamamlanmayan alt görevlerin tamamı "Bitti" durumuna değiştirilir.
diff --git a/doc/tr_TR/cloudron.markdown b/doc/tr_TR/cloudron.markdown
new file mode 100644
index 00000000..95c63b1d
--- /dev/null
+++ b/doc/tr_TR/cloudron.markdown
@@ -0,0 +1,26 @@
+Cloudboard üzerinde Kanboard nasıl çalıştırılır
+================================
+
+[Cloudron](https://cloudron.io), Kanboard gibi web uygulamaları yükleyebileceğiniz özel bir akıllı sunucudur.
+Kanboard'u özel bir alan-isim-domain e yükleyebilir ve her biri kurulum otomatik olarak Kanboard sürümleri ile yedeklenir ve güncel tutulur.
+
+[![Install](https://cloudron.io/img/button.svg)](https://cloudron.io/button.html?app=net.kanboard.cloudronapp)
+
+Hesaplar
+--------
+
+Uygulama, (LDAP aracılığıyla) Cloudron Kullanıcı Yönetimi ile sıkı bir şekilde bütünleşir. Sadece
+Cloudron kullanıcıları Kanboard'a erişebilirler. Buna ek olarak, herhangi bir Cloudron yöneticisi
+Otomatik olarak bir Kanboard yöneticisi olur.
+
+Eklentileri Yükleme
+------------------
+
+Eklentiler [Cloudron CLI](https://git.cloudron.io/cloudron/cloudron-cli) aracını kullanılarak yüklenebilir ve yapılandırılabilir.
+Daha fazla bilgi için [uygulama açıklaması](https://cloudron.io/appstore.html?app=net.kanboard.cloudronapp) konusuna bakın.
+
+Uygulama Kaynak kodu
+----------------------
+
+Cloudron uygulaması için kaynak kodu [buradadır](https://git.cloudron.io/cloudron/kanboard-app).
+
diff --git a/doc/tr_TR/coding-standards.markdown b/doc/tr_TR/coding-standards.markdown
new file mode 100644
index 00000000..f7d192a6
--- /dev/null
+++ b/doc/tr_TR/coding-standards.markdown
@@ -0,0 +1,24 @@
+Kodlama standartları
+================
+
+PHP kodu
+--------
+
+- Girinti: 4 spaces
+- Satır sonu: Unix => `\n`
+- Kodlama: UTF-8
+- Şablonlar için sadece `<?php` veya `<?=` açık tag kullanın, ancak **asla** `<?` kullanmayın
+- Yöntemler ve sınıf özellikleri için daima PHPdoc yorumlarını yaz
+- Kodlama stili: [PSR-1](http://www.php-fig.org/psr/psr-1/) ve [PSR-2](http://www.php-fig.org/psr/psr-2/)
+
+JavaScript kodu
+---------------
+
+- Girinti: 4 spaces
+- Satır sonu: Unix => `\n`
+
+CSS kodu
+--------
+
+- Girinti: 4 spaces
+- Satır sonu: Unix => `\n`
diff --git a/doc/tr_TR/config.markdown b/doc/tr_TR/config.markdown
new file mode 100644
index 00000000..dc28fbdf
--- /dev/null
+++ b/doc/tr_TR/config.markdown
@@ -0,0 +1,332 @@
+Yapılandırma dosyası
+===========
+
+Kanboard'un varsayılan ayarlarını proje kökünde veya `data` klasöründe `config.php` dosyasına ekleyerek özelleştirebilirsiniz.
+`config.default.php` dosyasını` config.php` olarak yeniden adlandırabilir ve istenen değerleri değiştirebilirsiniz.
+
+Hata ayıklama modunu etkinleştir/devre dışı bırak
+-------------------------
+
+```php
+define('DEBUG', true);
+define('LOG_DRIVER', 'file'); // Other drivers are: syslog, stdout, stderr or file
+```
+
+Hata ayıklama modunu etkinleştirirseniz günlük sürücüsü tanımlanmalıdır.
+Hata ayıklama modu tüm SQL sorgularını ve sayfaları oluşturmak için harcanan süreyi günlüğe kaydeder.
+
+Eklentiler
+-------
+
+Eklenti klasörü:
+
+```php
+define('PLUGINS_DIR', 'data/plugins');
+```
+
+Kullanıcı arayüzünden eklenti kurulumunu etkinleştirme/devre dışı bırakma:
+
+```php
+define('PLUGIN_INSTALLER', true); // Default is true
+```
+
+Varsayılan eklenti dizini URL'sini değiştirin:
+
+```php
+define('PLUGIN_API_URL', 'https://kanboard.net/plugins.json');
+```
+
+Yüklenen dosyalar için klasör
+-------------------------
+
+```php
+define('FILES_DIR', 'data/files');
+```
+
+Önbellek parametreleri
+----------------
+
+```php
+// Available cache drivers are "file" and "memory"
+define('CACHE_DRIVER', 'memory');
+
+// Cache folder to use if cache driver is "file" (must be writeable by the web server user)
+define('CACHE_DIR', DATA_DIR.DIRECTORY_SEPARATOR.'cache');
+```
+
+Url yeniden yazmayı etkinleştir/devre dışı bırak
+--------------------------
+
+```php
+define('ENABLE_URL_REWRITE', false);
+```
+
+E-posta yapılandırması
+-------------------
+
+```php
+// E-mail address for the "From" header (notifications)
+define('MAIL_FROM', 'notifications@kanboard.local');
+
+// Mail transport to use: "smtp", "sendmail" or "mail" (PHP mail function)
+define('MAIL_TRANSPORT', 'mail');
+
+// SMTP configuration to use when the "smtp" transport is chosen
+define('MAIL_SMTP_HOSTNAME', '');
+define('MAIL_SMTP_PORT', 25);
+define('MAIL_SMTP_USERNAME', '');
+define('MAIL_SMTP_PASSWORD', '');
+define('MAIL_SMTP_ENCRYPTION', null); // Valid values are "null", "ssl" or "tls"
+
+// Sendmail command to use when the transport is "sendmail"
+define('MAIL_SENDMAIL_COMMAND', '/usr/sbin/sendmail -bs');
+```
+
+Veritabanı ayarları
+-----------------
+
+```php
+// Run automatically database migrations
+// If set to false, you will have to run manually the SQL migrations from the CLI during the next Kanboard upgrade
+// Do not run the migrations from multiple processes at the same time (example: web page + background worker)
+define('DB_RUN_MIGRATIONS', true);
+
+// Database driver: sqlite, mysql or postgres (sqlite by default)
+define('DB_DRIVER', 'sqlite');
+
+// Mysql/Postgres username
+define('DB_USERNAME', 'root');
+
+// Mysql/Postgres password
+define('DB_PASSWORD', '');
+
+// Mysql/Postgres hostname
+define('DB_HOSTNAME', 'localhost');
+
+// Mysql/Postgres database name
+define('DB_NAME', 'kanboard');
+
+// Mysql/Postgres custom port (null = default port)
+define('DB_PORT', null);
+
+// Mysql SSL key
+define('DB_SSL_KEY', null);
+
+// Mysql SSL certificate
+define('DB_SSL_CERT', null);
+
+// Mysql SSL CA
+define('DB_SSL_CA', null);
+```
+
+LDAP ayarları
+-------------
+
+```php
+// Enable LDAP authentication (false by default)
+define('LDAP_AUTH', false);
+
+// LDAP server hostname
+define('LDAP_SERVER', '');
+
+// LDAP server port (389 by default)
+define('LDAP_PORT', 389);
+
+// By default, require certificate to be verified for ldaps:// style URL. Set to false to skip the verification
+define('LDAP_SSL_VERIFY', true);
+
+// Enable LDAP START_TLS
+define('LDAP_START_TLS', false);
+
+// By default Kanboard lowercase the ldap username to avoid duplicate users (the database is case sensitive)
+// Set to true if you want to preserve the case
+define('LDAP_USERNAME_CASE_SENSITIVE', false);
+
+// LDAP bind type: "anonymous", "user" or "proxy"
+define('LDAP_BIND_TYPE', 'anonymous');
+
+// LDAP username to use with proxy mode
+// LDAP username pattern to use with user mode
+define('LDAP_USERNAME', null);
+
+// LDAP password to use for proxy mode
+define('LDAP_PASSWORD', null);
+
+// LDAP DN for users
+// Example for ActiveDirectory: CN=Users,DC=kanboard,DC=local
+// Example for OpenLDAP: ou=People,dc=example,dc=com
+define('LDAP_USER_BASE_DN', '');
+
+// LDAP pattern to use when searching for a user account
+// Example for ActiveDirectory: '(&(objectClass=user)(sAMAccountName=%s))'
+// Example for OpenLDAP: 'uid=%s'
+define('LDAP_USER_FILTER', '');
+
+// LDAP attribute for username
+// Example for ActiveDirectory: 'samaccountname'
+// Example for OpenLDAP: 'uid'
+define('LDAP_USER_ATTRIBUTE_USERNAME', 'uid');
+
+// LDAP attribute for user full name
+// Example for ActiveDirectory: 'displayname'
+// Example for OpenLDAP: 'cn'
+define('LDAP_USER_ATTRIBUTE_FULLNAME', 'cn');
+
+// LDAP attribute for user email
+define('LDAP_USER_ATTRIBUTE_EMAIL', 'mail');
+
+// LDAP attribute to find groups in user profile
+define('LDAP_USER_ATTRIBUTE_GROUPS', 'memberof');
+
+// LDAP attribute for user avatar image: thumbnailPhoto or jpegPhoto
+define('LDAP_USER_ATTRIBUTE_PHOTO', '');
+
+// LDAP attribute for user language, example: 'preferredlanguage'
+// Put an empty string to disable language sync
+define('LDAP_USER_ATTRIBUTE_LANGUAGE', '');
+
+// Allow automatic LDAP user creation
+define('LDAP_USER_CREATION', true);
+
+// LDAP DN for administrators
+// Example: CN=Kanboard-Admins,CN=Users,DC=kanboard,DC=local
+define('LDAP_GROUP_ADMIN_DN', '');
+
+// LDAP DN for managers
+// Example: CN=Kanboard Managers,CN=Users,DC=kanboard,DC=local
+define('LDAP_GROUP_MANAGER_DN', '');
+
+// Enable LDAP group provider for project permissions
+// The end-user will be able to browse LDAP groups from the user interface and allow access to specified projects
+define('LDAP_GROUP_PROVIDER', false);
+
+// LDAP Base DN for groups
+define('LDAP_GROUP_BASE_DN', '');
+
+// LDAP group filter
+// Example for ActiveDirectory: (&(objectClass=group)(sAMAccountName=%s*))
+define('LDAP_GROUP_FILTER', '');
+
+// LDAP user group filter
+// If this filter is configured, Kanboard will search user groups in LDAP_GROUP_BASE_DN
+// Example for OpenLDAP: (&(objectClass=posixGroup)(memberUid=%s))
+define('LDAP_GROUP_USER_FILTER', '');
+
+// LDAP attribute for the group name
+define('LDAP_GROUP_ATTRIBUTE_NAME', 'cn');
+```
+
+Tersine-Proxy Kimlik Doğrulama ayarları
+-------------------------------------
+
+```php
+// Enable/disable the reverse proxy authentication
+define('REVERSE_PROXY_AUTH', false);
+
+// Header name to use for the username
+define('REVERSE_PROXY_USER_HEADER', 'REMOTE_USER');
+
+// Username of the admin, by default blank
+define('REVERSE_PROXY_DEFAULT_ADMIN', '');
+
+// Default domain to use for setting the email address
+define('REVERSE_PROXY_DEFAULT_DOMAIN', '');
+```
+
+RememberMe Kimlik Doğrulama ayarları hatırla
+----------------------------------
+
+```php
+// Enable/disable remember me authentication
+define('REMEMBER_ME_AUTH', true);
+```
+
+Güvenli HTTP üstbilgileri ayarları
+----------------------------
+
+```php
+// Enable or disable "Strict-Transport-Security" HTTP header
+define('ENABLE_HSTS', true);
+
+// Enable or disable "X-Frame-Options: DENY" HTTP header
+define('ENABLE_XFRAME', true);
+```
+
+Günlüğe kaydetme
+-------
+
+By default, Kanboard do not log anything.
+If you want to enable the logging, you have to set a log driver.
+
+```php
+// Available log drivers: syslog, stderr, stdout or file
+define('LOG_DRIVER', '');
+
+// Log filename if the log driver is "file"
+define('LOG_FILE', __DIR__.DIRECTORY_SEPARATOR.'data'.DIRECTORY_SEPARATOR.'debug.log');
+```
+
+Kaba kuvvet Brute-force koruması
+---------------------
+
+```php
+// Enable captcha after 3 authentication failure
+define('BRUTEFORCE_CAPTCHA', 3);
+
+// Lock the account after 6 authentication failure
+define('BRUTEFORCE_LOCKDOWN', 6);
+
+// Lock account duration in minute
+define('BRUTEFORCE_LOCKDOWN_DURATION', 15);
+```
+
+Oturum
+-------
+
+```php
+// Session duration in second (0 = until the browser is closed)
+// See http://php.net/manual/en/session.configuration.php#ini.session.cookie-lifetime
+define('SESSION_DURATION', 0);
+```
+
+HTTP İstemcisi
+-----------
+
+Harici HTTP isteklerinin bir proxy üzerinden gönderilmesi gerekiyorsa:
+
+```php
+define('HTTP_PROXY_HOSTNAME', '');
+define('HTTP_PROXY_PORT', '3128');
+define('HTTP_PROXY_USERNAME', '');
+define('HTTP_PROXY_PASSWORD', '');
+```
+
+Kendinden imzalı sertifikalara izin vermek için:
+
+```php
+// Set to false to allow self-signed certificates
+define('HTTP_VERIFY_SSL_CERTIFICATE', true);
+```
+
+Çeşitli ayarlar
+----------------
+
+```php
+// Escape html inside markdown text
+define('MARKDOWN_ESCAPE_HTML', true);
+
+// API alternative authentication header, the default is HTTP Basic Authentication defined in RFC2617
+define('API_AUTHENTICATION_HEADER', '');
+
+// Hide login form, useful if all your users use Google/Github/ReverseProxy authentication
+define('HIDE_LOGIN_FORM', false);
+
+// Disabling logout (for external SSO authentication)
+define('DISABLE_LOGOUT', false);
+
+// Override API token stored in the database, useful for automated tests
+define('API_AUTHENTICATION_TOKEN', 'My unique API Token');
+
+// TOTP (2FA) issuer name
+define('TOTP_ISSUER', 'Kanboard');
+```
diff --git a/doc/tr_TR/contributing.markdown b/doc/tr_TR/contributing.markdown
new file mode 100644
index 00000000..ea36057b
--- /dev/null
+++ b/doc/tr_TR/contributing.markdown
@@ -0,0 +1,70 @@
+Katılımcı Yönergeleri
+======================
+
+Nasıl yardımcı olabilirim?
+---------------
+
+Kanboard mükemmel değildir ancak yardımcı olacak birçok yol vardır:
+
+- Geribildirim ver
+- Hataları bildir
+- Çeviriler ekleyin veya güncelleyin
+- Dokümantasyonu iyileştirin
+- Kod yazmak
+- Arkadaşlarına, Kanboard'ın harika olduğunu söyle :)
+
+Herhangi bir büyük taahhütte bulunmadan önce yeni bir konu açın ve teklifinizi açıklayın.
+
+Geribildirim vermek istiyorum
+-----------------------
+
+- Bir şeyin geliştirilmesi gerektiğini düşünüyorsunuz (kullanıcı arayüzü, özellik talepleri)
+- Fikrinizin önceden önerilip onaylanmadığını kontrol edin
+- Yeni bir sayı açın
+- Fikrini tarif et
+- Mevcut tekliflerde +1 ile de oy kullanabilirsiniz
+
+Hata bildirmek istiyorum
+----------------------
+
+- Sorunun daha önce bildirilmediğini kontrol edin
+- Yeni bir bilet aç
+- Neyin kırıldığını açıkla
+- Hatayı nasıl üreteceğinizi açıklayın
+- Çevrenizi tanımlayın (Kanboard sürümü, işletim sistemi, web sunucusu, PHP sürümü, veritabanı sürümü, barındırma sağlayıcısı barındırma)
+
+Kanboard'u tercüme etmek istiyorum
+----------------------------
+
+Kanboard birçok dile çevrildi.
+Bununla birlikte, çeviriler tam değil, [katkıda bulunmak için çeviri rehberine](https://kanboard.net/documentation/translations) göz atın.
+
+Belgeleri iyileştirmek istiyorum
+-----------------------------------
+
+- Bir şeylerin net olmadığını, dilbilgisi hataları, yazım hataları var mı diye düşünüyorsun.
+- Belgeler Markdown'da yazılmış ve `docs` klasöründe saklanmıştır.
+- Dosyaları düzenleyin ve çekme isteği gönderin.
+- Resmi web sitesindeki dokümanlar depo ile senkronize edilir.
+
+Koda katkıda bulunmak istiyorum
+--------------------------------
+
+Çekme talepleri her zaman memnuniyetle karşılanır, ancak kabul edilmesi için şu yönergeleri takip etmeniz gerekir:
+
+- **Büyük bir değişiklik veya tasarım önerisi yapmadan önce, tartışmaya başlamak için yeni bir bilet açın**
+- Yeni bir özellik eklemek isterseniz, Kanboard'un arkasındaki felsefeye saygı gösterin. **Basitliğe** odaklanıyoruz, şişirilmiş bir yazılım istemiyoruz.
+- Aynı şey, kullanıcı arabirimi, **basitlik ve verimlilik** için de geçerlidir.
+- Özellik veya hata düzeltmesi başına yalnızca bir çekme isteği gönderin.
+- Daha küçük bir çekme isteği daha kolay incelenir ve daha hızlı birleştirilir.
+- [Birim testlerinin geçer](tests.markdown) olduğundan emin olun.
+- [kodlama standartlarına](kodlama standartları.markdown) saygı gösterin.
+- Korunabilir kod yazın, kod tekrarından kaçının, PHP'nin iyi uygulamalarını kullanın.
+
+Herhangi bir durumda, bir şey hakkında yeni bir bilet açtığından emin değilseniz.
+
+Arkadaşlarına, Kanboard'ın harika olduğunu söyle :)
+---------------------------------------------
+
+Kanboard kullanırsanız, sözcüğü çevrenize yayın.
+Onlara ücretsiz ve açık kaynak yazılımın harika olduğunu söyle :)
diff --git a/doc/tr_TR/create-tasks-by-email.markdown b/doc/tr_TR/create-tasks-by-email.markdown
new file mode 100644
index 00000000..43762dd4
--- /dev/null
+++ b/doc/tr_TR/create-tasks-by-email.markdown
@@ -0,0 +1,45 @@
+E-posta ile görevler oluşturma
+=====================
+
+Bir e-posta göndererek görevleri doğrudan oluşturabilirsiniz.
+Bu özellik eklentiler kullanarak ulaşılabilir.
+
+Şu anda Kanboard, 3 harici hizmetler ile entegre edilmiştir:
+
+- [Mailgun](https://github.com/kanboard/plugin-mailgun)
+- [Sendgrid](https://github.com/kanboard/plugin-sendgrid)
+- [Postmark](https://github.com/kanboard/plugin-postmark)
+
+Bu hizmetler, herhangi bir SMTP sunucusunu yapılandırmak zorunda kalmadan gelen e-postaları işlemektedir.
+
+Bir e-posta alındığında, Kanboard belirli bir son noktadaki mesajı alır.
+Tüm karmaşık çalışmalar bu hizmetler tarafından zaten gerçekleştirilmektedir.
+
+Gelen e-postaların iş akışı
+------------------------
+
+1. Belli bir adrese bir e-posta gönderiyorsunuz, örneğin **something+myproject@inbound.mydomain.tld**
+2. E-postanız, üçüncü parti SMTP sunucularına yönlendirilir
+3. SMTP sağlayıcısı, Kanboard web kancasını-hook E-postayla JSON veya çok parçalı / form-veri formatlarını çağırır
+4. Kanboard, alınan e-postayı ayrıştırır ve doğru projeye göre görev oluşturur.
+
+Not: Yeni görevler otomatik olarak ilk kolonda oluşturulur.
+
+E-posta biçimi
+------------
+
+- E-posta adresinin yerel kısmı artı ayırıcıyı kullanmalıdır, örneğin ** kanboard + project123 **
+- Artı işaretinden sonra tanımlanan dize, bir proje tanımlayıcısıyla eşleşmelidir, örneğin **project123** ** projenin tanımlayıcısı **Proje 123**
+- E-posta konusu görev başlığı haline gelir
+- E-posta gövdesi görev açıklaması olur (Markdown biçimi)
+
+Gelen e-postalar metin veya HTML biçiminde yazılabilir.
+**Kanboard, basit HTML e-postalarını Markdown** a dönüştürebilir.
+
+Güvenlik ve gereksinimler
+-------------------------
+
+- Kanboard web kancası rastgele bir tokenla korunuyor
+- Gönderenin e-posta adresi bir Kanboard kullanıcısı ile eşleşmelidir
+- Kanboard projesinin benzersiz bir tanımlayıcısı olmalıdır, örneğin **PROJEM**
+- Kanboard kullanıcısının projeye üye olması gerekir
diff --git a/doc/tr_TR/creating-projects.markdown b/doc/tr_TR/creating-projects.markdown
new file mode 100644
index 00000000..2a3a4913
--- /dev/null
+++ b/doc/tr_TR/creating-projects.markdown
@@ -0,0 +1,39 @@
+Projeleri Oluşturma
+=================
+
+Kanboard birden fazla projeyi idare edebilir. İki tür proje vardır:
+
+- Takım projeleri
+- Tek bir kullanıcı için özel proje
+
+Birden fazla kullanıcı için proje oluşturma
+-------------------------------------
+
+- Yalnızca yöneticiler ve proje yöneticileri bu projeleri oluşturabilir
+- Kullanıcı yönetimi mevcut
+
+Gösterge tablosundan **Yeni proje** bağlantısını tıklayın:
+
+![Project creation form](screenshots/new-project.png)
+
+Çok kolay, sadece projeniz için bir isim bulmanız gerekiyor!
+
+Özel proje oluşturma
+--------------------------
+
+- Herkes özel bir proje yaratabilir
+- Burda kullanıcı yönetimi **YOK**.
+- Projeye yalnızca sahibi ve yöneticiler erişebilir
+
+Gösterge tablosundan **Yeni özel proje** bağlantısını tıklayın.
+
+Başka bir projeden projeler oluşturma
+--------------------------------------
+
+Yeni bir proje oluşturduğunuzda, başka bir projenin özelliklerini çoğaltmayı seçebilirsiniz:
+
+- İzinler
+- Eylemler
+- Swimlanes
+- Katagori
+- Görevler
diff --git a/doc/tr_TR/creating-tasks.markdown b/doc/tr_TR/creating-tasks.markdown
new file mode 100644
index 00000000..b1953f31
--- /dev/null
+++ b/doc/tr_TR/creating-tasks.markdown
@@ -0,0 +1,30 @@
+Görevler Oluşturma
+==============
+
+Panodan, sütun adının yanındaki artı işaretini tıklayın:
+
+![Task creation from the board](screenshots/task-creation-board.png)
+
+Sonra görev oluşturma formu görünür:
+
+![Task creation form](screenshots/task-creation-form.png)
+
+Alan açıklamaları:
+
+- **Başlık**: Panoda görünecek olan görevinizin başlığı.
+- **Tanım **: [Markdown](syntax-guide.markdown) biçimini destekleyen açıklama.
+- **Etiketler**: Görevlerle ilişkili etiketler listesi.
+- **Başka bir görev oluştur**: Benzer bir görev oluşturmak istiyorsanız bu kutuyu işaretleyin (bazı alanlar önceden doldurulacaktır).
+- **Renk**: Kartın rengini seçin.
+- **Atanan**: Görev üzerinde çalışacak kişi.
+- **Kategori**: Göreve yalnızca bir kategori atanabilir (yalnızca projelerde kategori varsa görünür).
+- **Kolon**: Görevin oluşturulacağı kolon, göreviniz kolonun en altına yerleştirilir.
+- **Öncelik**: Görev önceliği, aralık proje ayarlarında tanımlanabilir, varsayılan değerler P0 - P3'tür.
+- **Karmaşıklık**: Çevik proje yönetimi (Scrum) 'da kullanılan karmaşıklık veya hikaye puanları, ekibe hikayenin ne kadar zor olduğunu anlatan bir sayıdır. Çoğu zaman insanlar Fibonacci serisini kullanıyor.
+- **Referans**: Görev için harici kimlik, örneğin başka bir sistemden gelen bilet numarası olabilir
+- **Orijinal Tahmin**: Görevi tamamlamak için tahmini saat.
+- **Geçen Süre**: Görev üzerinde geçen süre.
+- **Başlangıç ​​Tarihi**: Bu bir tarih saati alanıdır.
+- **Bitiş Tarihi**: Vadesi geçmiş görevler kırmızı geçerlilik süresine sahip olacak ve yaklaşan bitiş tarihleri panoda siyah olacaktır. Tarih seçiciye ek olarak birkaç tarih biçimi kabul edilir.
+
+Önizleme bağlantısıyla görev açıklamasının Markdown sözdiziminden dönüştürülmesini görebilirsiniz.
diff --git a/doc/tr_TR/cronjob.markdown b/doc/tr_TR/cronjob.markdown
new file mode 100644
index 00000000..188b299c
--- /dev/null
+++ b/doc/tr_TR/cronjob.markdown
@@ -0,0 +1,56 @@
+Arka Plan İş Zaman Planlaması
+=========================
+
+Düzgün çalışabilmek için, Kanboard günlük olarak arka planda bir iş yürütülmesini ister.
+Genellikle Unix platformlarında bu işlem `cron` tarafından yapılır.
+
+Bu arka plan işi, bu özellikler için gereklidir:
+
+- Raporlar ve analizler (her bir projenin günlük istatistiklerini hesaplayın)
+- Vazgeçilmiş görev bildirimleri gönder
+- Olaya bağlı otomatik eylemleri yürütün "Görevler için günlük arka plan işi"
+
+Unix ve Linux platformlarında konfigürasyon
+-----------------------------------------
+
+Unix/Linux işletim sistemlerinde bir cronjob tanımlamanın birden çok yolu vardır, bu örnek Ubuntu 14.04 içindir.
+Prosedür, diğer sistemler için de benzerdir.
+
+Web sunucusu kullanıcısının crontab'sını düzenleyin:
+
+```bash
+sudo crontab -u www-data -e
+```
+
+Günlük cronjobu sabah 08.00'de çalıştırma örneği:
+
+```bash
+0 8 * * * cd /path/to/kanboard && ./cli cronjob >/dev/null 2>&1
+```
+
+Not: Sqlite kullanıyorsanız, cronjob işleminin veritabanına yazma erişimi olmalıdır.
+Genellikle, cronjob'u web sunucusu kullanıcısı altında çalıştırmak yeterlidir.
+
+Microsoft Windows Server'da Yapılandırma
+-----------------------------------------
+
+Yinelenen görevi yapılandırmadan önce, Kanboard CLI komut dosyasını çalıştıran bir toplu iş dosyası (*.bat veya *.cmd) oluşturun.
+
+İşte bir örnek (`C:\kanboard.bat`):
+
+```
+"C:\php\php.exe" -f "C:\inetpub\wwwroot\kanboard\kanboard" cronjob
+```
+
+**Kurulumunuza göre PHP yürütülebilir dosyanın yolunu ve Kanboard'un komut dosyasının yolunu değiştirmelisiniz.**
+
+Windows Görev Zamanlayıcısını yapılandırın:
+
+1. "Yönetimsel Araçlar" bölümüne gidin.
+2. "Görev Zamanlayıcısı" nı açın.
+3. Sağda "Görev Oluştur" u seçin
+4. Bir isim seçin, örneğin "Kanboard"
+5. "Güvenlik Seçenekleri" altında, Sqlite kullanıyorsanız, veritabanına yazabilecek bir kullanıcı seçin (yapılandırmanıza bağlı olarak IIS_IUSRS olabilir)
+6. Yeni bir "Tetikleyici" oluşturun, günlük ve bir gece, örneğin gece vakti seçin
+7. Yeni bir eylem ekleyin, "Bir programı başlat" ı seçin ve yukarıda oluşturulan toplu iş dosyasını seçin
+
diff --git a/doc/tr_TR/currency-rate.markdown b/doc/tr_TR/currency-rate.markdown
new file mode 100644
index 00000000..f775bd84
--- /dev/null
+++ b/doc/tr_TR/currency-rate.markdown
@@ -0,0 +1,11 @@
+Döviz kuru
+==============
+
+Her kullanıcı, farklı para birimlerinde önceden belirlenmiş bir saat ücreti alabilir.
+Birden çok para birimini işlemek zorundaysanız, burada referans para birimine göre oranı tanımlarsınız.
+
+Bu özellik, proje bütçesi hesaplamasında kullanılır.
+
+![Currency Rate](screenshots/currency-rate.png)
+
+Para birimi oranı ayarları ** Ayarlar> Para birimi oranları ** 'da bulunur.
diff --git a/doc/tr_TR/custom-filters.markdown b/doc/tr_TR/custom-filters.markdown
new file mode 100644
index 00000000..7777e2c3
--- /dev/null
+++ b/doc/tr_TR/custom-filters.markdown
@@ -0,0 +1,19 @@
+Özel Filtreler
+==============
+
+Özel filtreler, herhangi bir arama sorgusunu kaydetmenize izin verir.
+Bu şekilde, varsayılan filtreleri kolayca genişletebilir ve en çok kullanılan arama sorguları kaydedebilirsiniz.
+
+- Özel filtreler proje tarafından saklanır ve içerik oluşturucuyla ilişkilendirilir.
+- Oluşturan proje yöneticisi ise, filtreyi diğer proje üyeleri ile paylaşmayı seçebilir.
+
+Filtre oluşturma
+---------------
+
+İşlem açılır menüsüne veya proje ayarlarına gidin ve **özel filtreler** öğesini seçin:
+
+![Custom Filter Creation](screenshots/custom-filter-creation.png)
+
+Filtrenizi oluşturduktan sonra, panoda varsayılan filtrelerin yanında görünecektir:
+
+![Custom Filter Dropdown](screenshots/custom-filter-dropdown.png)
diff --git a/doc/tr_TR/custom-project-roles.markdown b/doc/tr_TR/custom-project-roles.markdown
new file mode 100644
index 00000000..98c74bb4
--- /dev/null
+++ b/doc/tr_TR/custom-project-roles.markdown
@@ -0,0 +1,88 @@
+Özel Proje Rolleri
+====================
+
+Bu role ait kişiler üzerinde belirli kısıtlamalar dizisi uygulamak için özel proje rolleri oluşturabilirsiniz.
+Bu özel roller her proje için tanımlanmıştır.
+
+Özel rol, proje üyesi rolünden devralır.
+Örneğin, birini bir işlemi takip etmeye zorlamak için özel bir rol oluşturmak isteyebilirsiniz.
+Görevleri yalnızca "Devam etmekte olan iş" sütunundan "Bitti" sütununa taşımanıza izin verilen bir grup insana sahip olabilirsiniz.
+
+Mevcut kısıtlamalar
+----------------------
+
+- Proje Kısıtlamaları:
+ - Görev oluşturulmasına izin verilmiyor
+ - Bir görevi kapatmak veya açmak yasaktır
+ - Görevin taşınmasına izin verilmiyor
+- Sütun Kısıtlamaları:
+ - Görev oluşturulması sadece belirli bir sütun için **izin** verilir
+ - Görev oluşturulması yalnızca belirli bir sütun için **engel** lenir
+ - Bir görevi kapatmak veya açmak için sadece belirli bir sütuna **izin** verilir
+ - Bir görevi kapatmak veya açmak için yalnızca belirli bir sütun için **engel** lenir
+- Görevleri yalnızca belirtilen sütunlar arasında taşıma
+
+Yapılandırma
+-------------
+
+### 1) Yeni bir özel rol oluştur
+
+Proje ayarlarından, **Özel Roller** menüsünde soldaki simgesini tıklayın ve sayfanın üst kısmında **Yeni özel rol ekleyin** seçeneğini tıklayın.
+
+![New custom role](screenshots/new_custom_role.png)
+
+Rol için bir isim verin ve formu gönderin.
+
+### 2) Rol için bir sınırlama ekleyin
+
+Burada farklı kısıtlamalar vardır:
+
+- Proje kısıtlamaları
+- Sürükle ve bırak kısıtlamaları
+- Sütun kısıtlamaları
+
+Yeni bir kısıtlama eklemek için tabloda açılır menüye tıklayabilirsiniz:
+
+![Add a new restriction](screenshots/add_new_restriction.png)
+
+### 3) Kısıtlamalar listesi
+
+![List of restrictions](screenshots/example-restrictions.png)
+
+Örneğin, bu rol yalnızca "Geri Kayıt-Backlog" sütununda görevler oluşturabilir ve görevleri "Hazır" ve "Devam etmekte olan" sütunları arasında taşımak mümkündür.
+
+### 4) Rolü birine atayın
+
+Sol menüdeki "izinler" bölümüne gidin ve istenen rolü kullanıcıya atayın.
+
+![Custom project role](screenshots/custom_roles.png)
+
+Örnekler
+--------
+
+### Kullanıcıların yalnızca belirli sütunlarda görev oluşturmasına izin ver
+
+![Example restriction task creation](screenshots/example-restriction-task-creation.png)
+
+- Bu role ait kullanıcılar, yalnızca "Geri Kayıt-Backlog" sütununda yeni görevler oluşturabilir.
+- 2 kuralın kombinasyonu önemlidir, aksi takdirde bu işe yaramaz.
+
+### Kullanıcıların görev durumunu yalnızca belirli sütunlarda değiştirmelerine izin ver
+
+![Example restriction task status](screenshots/example-restriction-task-status.png)
+
+- Bu role ait olan kullanıcılar, "Geri Kayıt-Backlog" sütunundaki görev durumunu değiştirebilecek.
+- Durum açık olan görevler tahta üzerinde görünür ve durum kapalı olan görevler varsayılan olarak tahtada gizlidir.
+
+### Kullanıcıların belirli bir sütundaki görev durumunu değiştirmesine izin verme
+
+![Example column restriction](screenshots/example-restriction-task-status-blocked.png)
+
+Bu role ait kullanıcılar, "Tamamlandı" sütunundaki görev durumunu değiştiremez.
+Ancak diğer sütunlarda da mümkün olacaktır.
+
+### Kullanıcıların görevleri yalnızca belirli sütunlar arasında taşımasına izin ver
+
+![Example restriction task drag and drop](screenshots/example-restriction-task-drag-and-drop.png)
+
+Bu role ait kullanıcılar, görevleri yalnızca "Hazır" ve "Devam etmekte olan" sütunları arasında taşıyabilir.
diff --git a/doc/tr_TR/debian-installation.markdown b/doc/tr_TR/debian-installation.markdown
new file mode 100644
index 00000000..1e1ca9f4
--- /dev/null
+++ b/doc/tr_TR/debian-installation.markdown
@@ -0,0 +1,67 @@
+Debian'da Kanboard Kurulumu
+===============================
+
+Debian 8 (Jessie)
+-----------------
+
+Apache ve PHP'yi kurun:
+
+```bash
+apt-get update
+apt-get install -y php5 php5-sqlite php5-gd unzip
+service apache2 restart
+```
+
+Kanboard'u kurun:
+
+```bash
+cd /var/www/html
+wget https://kanboard.net/kanboard-latest.zip
+unzip kanboard-latest.zip
+chown -R www-data:www-data kanboard/data
+rm kanboard-latest.zip
+```
+
+Debian 7 (Wheezy)
+-----------------
+
+Apache ve PHP'yi kurun:
+```bash
+apt-get update
+apt-get install -y php5 php5-sqlite php5-gd unzip
+```
+
+Kanboard'u kurun:
+
+```bash
+cd /var/www
+wget https://kanboard.net/kanboard-latest.zip
+unzip kanboard-latest.zip
+chown -R www-data:www-data kanboard/data
+rm kanboard-latest.zip
+```
+
+Debian 6 (Squeeze)
+------------------
+
+Apache ve PHP'yi kurun:
+
+```bash
+apt-get update
+apt-get install -y libapache2-mod-php5 php5-sqlite php5-gd unzip
+```
+
+Kanboard'u kurun:
+
+```bash
+cd /var/www
+wget https://kanboard.net/kanboard-latest.zip
+unzip kanboard-latest.zip
+chown -R www-data:www-data kanboard/data
+rm kanboard-latest.zip
+```
+
+Not
+-----
+
+Kanboard'un bazı özellikleri, [günlük arka plan işi-cronjob](cronjob.markdown) çalıştırmanızı gerektirir.
diff --git a/doc/tr_TR/docker.markdown b/doc/tr_TR/docker.markdown
new file mode 100644
index 00000000..b1461808
--- /dev/null
+++ b/doc/tr_TR/docker.markdown
@@ -0,0 +1,96 @@
+Docker ile Kanboard nasıl çalıştırılır?
+================================
+
+Kanboard, [Docker](https://www.docker.com) ile kolayca çalıştırabilir.
+
+Disk görüntü-image boyutu yaklaşık **70MB** olup aşağıdakileri içerir:
+
+- [Alpine Linux](http://alpinelinux.org/)
+- [Süreç yöneticisi S6](http://skarnet.org/software/s6/)
+- Nginx
+- PHP 7
+
+Kanboard cronjob'u her gece yarısı çalışıyor.
+URL yeniden yazma, birlikte gelen yapılandırma dosyasında etkinleştirilmiştir.
+
+Kapsayıcı-konteyner çalışırken, bellek kullanımı yaklaşık **30MB** civarındadır.
+
+Kararlı sürümü kullanmak
+----------------------
+
+Kanboard'un en kararlı sürümünü elde etmek için **stable** etiketini kullanın:
+
+```bash
+docker pull kanboard/kanboard
+docker run -d --name kanboard -p 80:80 -t kanboard/kanboard:stable
+```
+
+Geliştirme sürümünü kullanmak (otomatik yapı)
+---------------------------------------------
+
+Depodaki her yeni taahhüt, [Docker Hub](https://registry.hub.docker.com/u/kanboard/kanboard/) üzerinde yeni bir yapı oluşturur.
+
+```bash
+docker pull kanboard/kanboard
+docker run -d --name kanboard -p 80:80 -t kanboard/kanboard:latest
+```
+
+**latest** etiketi, Kanboard'un **geliştirme versiyonudur-development version**, risk almak kendi sorumluluğunuzdadır.
+
+Kendi Docker görüntü-image oluşturun
+---------------------------
+
+Kendi görüntü-image inızı oluşturmak için Kanboard havuzunda-repository bir `Dockerfile` var.
+Kanboard havuzunda-repository klonlayın ve aşağıdaki komutu çalıştırın:
+
+```bash
+docker build -t youruser/kanboard:master .
+```
+
+veya
+
+```bash
+make docker-image
+```
+
+Bağlantı noktası 80 üzerinde arka planda kapsayıcı-konteyner çalıştırmak için:
+
+```bash
+docker run -d --name kanboard -p 80:80 -t youruser/kanboard:master
+```
+
+Cilt-Volumes
+-------
+
+Kapsayıcınıza-konyetner 2 cilt bağlayabilirsiniz:
+
+- Veri klasörü: `/var/www/app/data`
+- Eklentiler-Plugins klasörü: `/var/www/app/plugins`
+
+[Resmi Docker belgeleri](https://docs.docker.com/engine/userguide/containers/dockervolumes/) 'da açıklandığı gibi, ana makineye bir hacim bağlamak için `-v` parametresi-bayrağını kullanın.
+
+Kapsayıcınızı-Konteyner Yükseltme
+----------------------
+
+- Yeni görüntü-image koy
+- Eski kapsayıcı-konteyner çıkarın
+- Aynı ciltlere sahip yeni bir kapsayıcı-konteyner yeniden başlat
+
+Ortam Değişkenleri
+---------------------
+
+Ortam değişkenleri listesi [bu sayfa](env.markdown) 'da mevcuttur.
+
+Yapılandırma dosyaları
+------------
+
+- Kapsayıcı-konteyner da zaten `/var/www/app/config.php` de bulunan özel bir yapılandırma dosyası bulunmaktadır.
+- Kendi yapılandırma dosyanızı veri hacmine kaydedebilirsiniz: `/var/www/app/data/config.php`.
+
+Kaynaklar
+----------
+
+- [Resmi Kanboard görüntü-image](https://registry.hub.docker.com/u/kanboard/kanboard/)
+- [Docker belgeleri](https://docs.docker.com/)
+- [Dockerfile kararlı sürümü](https://github.com/kanboard/docker)
+- [Dockerfile dev sürümü](https://github.com/kanboard/kanboard/blob/master/Dockerfile)
diff --git a/doc/tr_TR/duplicate-move-tasks.markdown b/doc/tr_TR/duplicate-move-tasks.markdown
new file mode 100644
index 00000000..b0abe3a9
--- /dev/null
+++ b/doc/tr_TR/duplicate-move-tasks.markdown
@@ -0,0 +1,58 @@
+Görevleri çoğaltmak ve taşımak
+========================
+
+Bir görevi aynı projeye çoğalt
+--------------------------------------
+
+Görev görünümüne gidin ve soldaki **Çoğalt** seçeneğini belirleyin.
+
+![Task Duplication](screenshots/task-duplication.png)
+
+Orijinalle aynı özelliklere sahip yeni bir görev oluşturulur.
+
+Görevi başka bir projeye çoğalt
+-----------------------------------
+
+Görev görünümüne gidin ve **Başka bir projeye çoğalt** seçeneğini seçin.
+
+![Task Duplication Another Project](screenshots/task-duplication-another-project.png)
+
+Açılır menüde yalnızca üye olduğunuz projeler gösterilecektir.
+
+Görevleri kopyalamadan önce, Kanboard kaynak ve hedef proje arasında ortak olmayan hedef özellikleri soracaktır.
+
+Temelde şunları tanımlamanız gerekir:
+
+- Hedef kulvar
+- Sütun
+- Kategori
+- Atanan kişi
+
+Görevi başka bir projeye taşıma
+------------------------------
+
+Görev görünümüne gidin ve **Başka bir projeye taşı** öğesini seçin.
+
+Bir görevi başka bir proje çalışmasına çoğaltma ile aynı şekilde taşıdığınızda, görevin yeni özelliklerini seçmeniz gerekir.
+
+Çoğaltılan alanların listesi
+-------------------------
+
+Çoğaltılmış özelliklerin listesi aşağıda:
+
+- title
+- description
+- date_due
+- color_id
+- project_id
+- column_id
+- owner_id
+- score
+- category_id
+- time_estimated
+- swimlane_id
+- recurrence_status
+- recurrence_trigger
+- recurrence_factor
+- recurrence_timeframe
+- recurrence_basedate
diff --git a/doc/tr_TR/editing-projects.markdown b/doc/tr_TR/editing-projects.markdown
new file mode 100644
index 00000000..9255b88b
--- /dev/null
+++ b/doc/tr_TR/editing-projects.markdown
@@ -0,0 +1,15 @@
+Projeleri Düzenleme
+================
+
+Projeler yeniden adlandırılabilir ve istediğiniz zaman devre dışı bırakılabilir.
+
+Bir projeyi yeniden adlandırmak için soldaki "Projeyi düzenle" bağlantısına tıklamanız yeterlidir.
+
+![Project edition](screenshots/project-edition.png)
+
+- Başlangıç tarihi ve bitiş tarihi proje Gantt grafiğini oluşturmak için kullanılır
+- Tanım, panoda ve proje listeleme sayfasında araç ipucu olarak görünür
+- Yöneticiler ve proje yöneticileri, "Özel proje" onay kutusunu değiştirerek özel bir projeyi birden fazla kullanıcı projesine dönüştürebilirler.
+- Birden fazla kullanıcı projesini özel bir projeye dönüştürebilirsiniz.
+
+Not: Bir projeyi özel yaptığınızda, mevcut tüm kullanıcılar projeye hâlâ erişebilir. Kullanıcı listesini ihtiyaçlarınıza göre ayarlayın.
diff --git a/doc/tr_TR/email-configuration.markdown b/doc/tr_TR/email-configuration.markdown
new file mode 100644
index 00000000..b20c8a51
--- /dev/null
+++ b/doc/tr_TR/email-configuration.markdown
@@ -0,0 +1,116 @@
+E-posta yapılandırması
+===================
+
+Kullanıcı ayarları
+-------------
+
+E-posta bildirimlerini almak için, Kanboard kullanıcıları şunları yapmalıdır:
+
+- Profillerinde etkinleştirilmiş bildirimler
+- Profillerinde geçerli bir e-posta adresiniz olsun
+- Bildirimleri tetikleyecek projenin bir üyesi olun
+
+Not: İşlemi gerçekleştiren oturum açmış kullanıcı herhangi bir bildirim almıyor, yalnızca diğer proje üyeleri.
+
+E-posta taşımaları
+----------------
+
+Kullanabileceğiniz birkaç e-posta ulaşımı vardır:
+
+- SMTP
+- Sendmail
+- PHP doğal-native posta fonksiyonu
+- Diğer yöntemler harici eklentiler tarafından sağlanabilir: Postmark, Sendgrid ve Mailgun
+
+Sunucu ayarları
+---------------
+
+Varsayılan olarak, Kanboard, e-postalar göndermek için birlikte verilen PHP posta işlevini kullanacaktır.
+Sunucunuz zaten e-posta gönderebiliyorsa genellikle yapılandırma gerektirmez.
+
+Bununla birlikte, SMTP protokolü ve Sendmail gibi diğer yöntemleri kullanmak mümkündür.
+
+### SMTP yapılandırması
+
+`config.default.php` dosyasını `config.php` olarak yeniden adlandırın ve bu değerleri değiştirin:
+
+```php
+// We choose "smtp" as mail transport
+define('MAIL_TRANSPORT', 'smtp');
+
+// We define our server settings
+define('MAIL_SMTP_HOSTNAME', 'mail.example.com');
+define('MAIL_SMTP_PORT', 25);
+
+// Credentials for authentication on the SMTP server (not mandatory)
+define('MAIL_SMTP_USERNAME', 'username');
+define('MAIL_SMTP_PASSWORD', 'super password');
+```
+
+Güvenli bir bağlantı, TLS veya SSL kullanmak da mümkündür:
+
+```php
+define('MAIL_SMTP_ENCRYPTION', 'ssl'); // Valid values are "null", "ssl" or "tls"
+```
+
+### Sendmail yapılandırması
+
+Varsayılan olarak sendmail komutu `/usr/sbin/sendmail -bs` olacaktır, ancak bunu yapılandırma dosyanızda özelleştirebilirsiniz.
+
+Örnek:
+
+```php
+// We choose "sendmail" as mail transport
+define('MAIL_TRANSPORT', 'sendmail');
+
+// If you need to change the sendmail command, replace the value
+define('MAIL_SENDMAIL_COMMAND', '/usr/sbin/sendmail -bs');
+```
+
+### PHP doğal-native posta fonksiyonu
+
+Varsayılan yapılandırma şu şekildedir:
+
+```php
+define('MAIL_TRANSPORT', 'mail');
+```
+
+### Gönderenin e-posta adresi
+
+Varsayılan olarak, e-postalar gönderenin adresini `notifications@kanboard.local` kullanacaktır.
+Bu adrese cevap vermek mümkün değildir.
+
+Bu adresi, yapılandırma dosyanızdaki `MAIL_FROM` sabitinin değerini değiştirerek özelleştirebilirsiniz.
+
+```php
+define('MAIL_FROM', 'kanboard@mydomain.tld');
+```
+
+SMTP sunucusu yapılandırmanız varsayılan adresi kabul etmiyorsa bu yararlı olabilir.
+
+### Bildirimlerdeki göreve bir bağlantı nasıl görüntülenir?
+
+Bunu yapmak için, [Uygulama Ayarları](https://kanboard.net/documentation/application-configuration) bölümünde Kanboard kurulumunuzun URL'sini belirtmeniz gerekir.
+Varsayılan olarak, hiçbir şey tanımlanmadığından hiçbir bağlantı görüntülenmez.
+
+Örnekler:
+
+- http://demo.kanboard.net/
+- http://myserver/kanboard/
+- http://kanboard.mydomain.com/
+
+Bitiş eğik çizgisini`/` unutmayın.
+
+Kanboard, URL'yi bir komut satırı komut dosyasından tahmin edemediğinden ve bazı kişilerin çok spesifik bir yapılandırmaya sahip olmasından bunu manuel olarak tanımlamanız gerekir.
+
+Sorun giderme
+---------------
+
+E-posta gönderilmiyorsa ve her şeyin doğru yapılandırıldığından eminseniz:
+
+- Spam dosyanı kontrol et
+- Hata ayıklama modunu etkinleştirin ve `data/debug.log` hata ayıklama dosyasını kontrol edin, tam hatayı görmelisiniz
+- Sunucunuzun veya barındırma sağlayıcınızın e-postalar göndermenize izin verdiğinden emin olun
+- SeLinux'u kullanırsanız, PHP'nin e-postaları göndermesine izin verin
+
+
diff --git a/doc/tr_TR/env.markdown b/doc/tr_TR/env.markdown
new file mode 100644
index 00000000..150373ce
--- /dev/null
+++ b/doc/tr_TR/env.markdown
@@ -0,0 +1,10 @@
+Ortam Değişkenleri
+=====================
+
+Ortam değişkenleri, Kanboard konteyner (Docker) olarak kullanıldığında yararlı olabilir.
+
+
+| Değişken | Tanım |
+|---------------|---------------------------------------------------------------------------------------------------------------------------------|
+| DATABASE_URL | `[Veritabanı türü]://[kullanıcı adı]:[şifre]@[host]:[port]/[veritabanı adı]`, örnek: `postgres://foo:foo@myserver:5432/kanboard` |
+| DEBUG | Hata ayıklama modunu etkinleştir/devre dışı bırak: "true" veya "false" |
diff --git a/doc/tr_TR/faq.markdown b/doc/tr_TR/faq.markdown
new file mode 100644
index 00000000..17cd3c8a
--- /dev/null
+++ b/doc/tr_TR/faq.markdown
@@ -0,0 +1,128 @@
+Sıkça Sorulan Sorular (F.A.Q. -S.S.S.)
+==========================
+
+Kanboard için bir web barındırma sağlayıcısı önerebilir misiniz?
+------------------------------------------------------
+
+Kanboard, herhangi bir büyük VPS barındırma sağlayıcısı ile iyi çalışır; [Digital Ocean](https://www.digitalocean.com/?refcode=4b541f47aae4),
+[Linode](https://www.linode.com/?r=4e381ac8a61116f40c60dc7438acc719610d8b11) veya [Gandi](https://www.gandi.net/) gibi.
+
+En iyi performansa sahip olmak için, Kanboard'un varsayılan olarak Sqlite'i kullanması nedeniyle hızlı disk G/Ç(I/O)'si olan bir sağlayıcı seçin.
+Paylaşılan bir NFS bağlama noktası kullanan barındırma sağlayıcılarından kaçının.
+
+
+"Sisteminizde uygun bir CSPRNG yüklü değil"
+"There is no suitable CSPRNG installed on your system" hatası;
+-----------------------------------------------------------------------
+
+PHP <7.0 kullanıyorsanız, openssl uzantısının etkinleştirilmesini sağlamanız gerekir veya eğer bir `open_basedir` kısıtlaması ile kısıtlanmışsa uygulamadan `/dev/urandom` alanına erişilebilir olmalıdır.
+
+
+Sayfa bulunamadı ve URL yanlış görünüyor (&amp;amp;)
+--------------------------------------------------
+
+- URL, `?controller=auth&action=login&redirect_query=` yerine `/?controller=auth&amp;action=login&amp;redirect_query=` gibi görünüyor.
+- Kanboard, "Sayfa bulunamadı" hatası döndürür
+
+Bu sayı PHP yapılandırmanızdan geliyor, `arg_separator.output` değeri PHP'nin varsayılanı değil, bunu düzeltmenin farklı yolları var:
+
+Eğer yapabiliyorsanız, doğrudan `php.ini` dosyanızdaki değeri değiştirin:
+
+```
+arg_separator.output = "&"
+```
+
+Değeri `.htaccess` ile geçersiz kılın:
+
+```
+php_value arg_separator.output "&"
+```
+
+Aksi takdirde, Kanboard değeri doğrudan PHP'de geçersiz kılmaya çalışacaktır.
+
+
+API ve Apache + PHP-FPM ile kimlik doğrulama başarısızlığı
+--------------------------------------------------------
+
+Apache altındaki php-cgi, varsayılan olarak HTTP temel kullanıcı/şifre'sini PHP'ye geçirmiyor.
+Bu geçici çözümün çalışması için aşağıdaki şu satırları `.htaccess` dosyanıza ekleyin:
+
+```
+RewriteCond %{HTTP:Authorization} ^(.+)$
+RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
+```
+
+
+eAccelerator ile bilinen sorunlar
+------------------------------
+
+Kanboard, [eAccelerator](http://eaccelerator.net) ile çok iyi çalışmıyor.
+Buna sebep boş bir sayfa veya bir Apache çökmesi olabilir:
+
+```
+[Wed Mar 05 21:36:56 2014] [notice] child pid 22630 exit signal Segmentation fault (11)
+```
+
+Bu sorunu önlemenin en iyi yolu, eAccelerator'ı devre dışı bırakmak veya hangi dosyaların önbelleklemek istediğinizi `eaccelerator.filter` yapılandırma parametresiyle el-ile manuel olarak tanımlamaktır.
+
+[eAccelerator projesi ölü gibi görünüyor ve 2012'den beri güncellenmedi](https://github.com/eaccelerator/eaccelerator/commits/master).
+[OPcache](http://php.net/manual/en/intro.opcache.php) ile paketlendiğinden PHP'nin son sürümüne geçmenizi öneririz.
+
+
+Neden minimum gereksinim PHP 5.3.3'tir?
+-----------------------------------------
+
+Kanboard, parolaları şifrelemek için `password_hash ()` işlevini kullanır, ancak bu işlev yalnızca PHP >= 5.5 için kullanılabilir.
+
+Bununla birlikte, [eski PHP sürümleri](https://github.com/ircmaxell/password_compat#requirements) için bir arka port var.
+Bu kütüphane, en azından PHP 5.3.7'nin doğru çalışmasını gerektiriyor.
+
+Görünüşe göre, Centos ve Debian arka-port güvenlik güncellemeleri yaptı, böylece PHP 5.3.3 tamam olmalıdır.
+
+Kanboard v1.0.10 ve v1.0.11, en azından PHP 5.3.7 gerektirir, ancak bu değişiklik, Kanboard >= v1.0.12 ile PHP 5.3.3 ile uyumlu olacak şekilde geri döndürülmüştür
+
+Kanboard PHP yerel-local dahili web sunucusu ile nasıl test edilir?
+------------------------------------------------------
+
+Eğer localhost üzerinde Apache gibi bir web sunucusu kurmak istemiyorsanız. [PHP'nin gömülü web sunucusu ile ](http://www.php.net/manual/en/features.commandline.webserver.php) test edebilirsiniz:
+
+```bash
+unzip kanboard-VERSION.zip
+cd kanboard
+php -S localhost:8000
+open http://localhost:8000/
+```
+
+
+Yunboard üzerinde Kanboard nasıl kurulabilir?
+------------------------------------
+
+[YunoHost](https://yunohost.org/) , Herkes tarafından kullanılabilir olan kendi kendini barındırmayı amaçlayan bir sunucu işletim sistemidir.
+
+[Yunohost üzerine Kanboard u kolayca yüklemek için paket] var. (https://github.com/mbugeia/kanboard_ynh).
+
+
+İlgili projelerin listesini nereden bulabilirim?
+--------------------------------------------
+
+- [Kanboard API python istemcisi @freekoder tarafından](https://github.com/freekoder/kanboard-py)
+- [Kanboard Sunum David Eberlein tarafından](https://github.com/davideberlein/kanboard-presenter)
+- [CSV2Kanboard @ashbike tarafından](https://github.com/ashbike/csv2kanboard)
+- [Yunohost için Kanboard by @mbugeia](https://github.com/mbugeia/kanboard_ynh)
+- [Trello Içe aktarma komut dosyası @matueranet tarafından](https://github.com/matueranet/kanboard-import-trello)
+- [Chrome eklentisi Timo tarafından](https://chrome.google.com/webstore/detail/kanboard-quickmenu/akjbeplnnihghabpgcfmfhfmifjljneh?utm_source=chrome-ntp-icon), [Kaynak kodu](https://github.com/BlueTeck/kanboard_chrome_extension)
+- [Python istemci komut dosyası @dzudek tarafından](https://gist.github.com/fguillot/84c70d4928eb1e0cb374)
+- [SQLite dan MySQL/MariaDB geçiş için için kabuk betiği @oliviermaridat tarafından](https://github.com/oliviermaridat/kanboard-sqlite2mysql)
+
+- [Kanboard ile entegrasyon Için Git kancaLARI(hooks) Gene Pavlovsky tarafından](https://github.com/gene-pavlovsky/kanboard-git-hooks)
+
+Kanboard hakkında diğer dillerde bazı eğitimler var mı?
+-----------------------------------------------------------
+
+- [Kanboard hakkında Alman makale dizisi](http://demaya.de/wp/2014/07/kanboard-eine-jira-alternative-im-detail-installation/)
+
+
+İpuçları
+----
+
+- [SQLite veritabanında ad sınırlamasını kaldırmanın kolay yolu](https://github.com/kanboard/kanboard/issues/1508)
diff --git a/doc/tr_TR/freebsd-installation.markdown b/doc/tr_TR/freebsd-installation.markdown
new file mode 100644
index 00000000..bb687ebf
--- /dev/null
+++ b/doc/tr_TR/freebsd-installation.markdown
@@ -0,0 +1,126 @@
+FreeBSD 10 Kurulum
+=======================
+
+Paketlerden yükle
+---------------------
+
+```bash
+$ pkg update
+$ pkg upgrade
+$ pkg install apache24 mod_php56 kanboard
+```
+
+`/etc/rc.conf` dosyanızdaki Apache'yi etkinleştirin:
+
+```bash
+$ echo apache24_enable="YES" >> /etc/rc.conf
+```
+
+Apache için PHP yi kurun:
+
+```bash
+$ echo "AddType application/x-httpd-php .php" >> /usr/local/etc/apache24/Includes/php.conf
+$ echo "DirectoryIndex index.php index.html" >> /usr/local/etc/apache24/Includes/php.conf
+```
+
+Sonra Apache'yi başlatın:
+
+```bash
+$ service apache24 start
+```
+
+Kanboard klasörüne, Apache docroot'unuza sembolik bağ ekleyin:
+
+```bash
+cd /usr/local/www/apache24/data
+ln -s /usr/local/www/kanboard
+```
+
+http://your.server.domain.tld/ adresine gidin ve tadını çıkarın!
+
+*Notlar*:
+- LDAP entegrasyonu gibi ek özellikler kullanmak istiyorsanız; Lütfen pkg'yi kullanarak uygun PHP modülünü kurun.
+- Klasör verisinin izinlerini ayarlamanız gerekebilir
+
+Bağlantı noktalarından yükleme
+---------------------
+
+Genellikle 3 eleman kurulmalıdır:
+
+- Apache
+- Apache için mod_php
+- Kanboard
+
+Bağlantı noktaları getir ve çıkar
+
+```bash
+$ portsnap fetch
+$ portsnap extract
+```
+
+Veya mevcut haliyle güncelleme:
+
+```bash
+$ portsnap fetch
+$ portsnap update
+```
+
+Portsnap ile ilgili daha fazla bilgi [FreeBSD Handbook](https://www.freebsd.org/doc/handbook/ports-using.html) 'da bulunabilir.
+
+Apache'yi kur:
+
+```bash
+$ cd /usr/ports/www/apache24
+$ make install clean
+```
+Enable Apache in your `/etc/rc.conf`:
+
+```bash
+$ echo apache24_enable="YES" >> /etc/rc.conf
+```
+
+Apache için mod_php'yi kurun:
+
+```bash
+$ cd /usr/ports/www/mod_php5
+$ make install clean
+```
+
+Kanboard form bağlantı noktalarını yükle:
+
+```bash
+$ cd /usr/ports/www/kanboard
+$ make install clean
+```
+
+Kanboard formu portları yükleyin
+
+```bash
+$ echo "AddType application/x-httpd-php .php" >> /usr/local/etc/apache24/Includes/php.conf
+$ echo "DirectoryIndex index.php index.html" >> /usr/local/etc/apache24/Includes/php.conf
+```
+
+Sonra Apache'yi başlatın:
+
+```bash
+$ service apache24 start
+```
+
+http://your.server.domain.tld/kanboard adresine gidin ve tadını çıkarın!
+
+*Not*:
+LDAP entegrasyonu gibi ek özellikleri kullanmak isterseniz
+Lütfen `lang/php5-extensions` den uygun PHP eklentisi-modülünü kurun.
+
+El ile kurulum
+-------------------
+
+Sürüm 1.0.16 itibariyle Kanboard FreeBSD portlarında bulunabilir
+Elle kurmanıza gerek yoktur.
+
+Lütfen aklınızda bulundurun
+-----------
+
+- Portlar [bitbucket](https://bitbucket.org/if0/freebsd-kanboard/) üzerinde barındırılıyor . Yorum yapmaktan çekinmeyin
+fork edin ve güncelleme önermek için çekinmeyin!
+- Kanboard'un bazı özellikleri, [günlük arka plan işi-cronjob](cronjob.markdown) çalıştırmanızı gerektirir.
diff --git a/doc/tr_TR/gantt-chart-projects.markdown b/doc/tr_TR/gantt-chart-projects.markdown
new file mode 100644
index 00000000..71c53471
--- /dev/null
+++ b/doc/tr_TR/gantt-chart-projects.markdown
@@ -0,0 +1,17 @@
+Tüm projeler için Gantt Grafiği
+============================
+
+Bu Gantt tablosunun amacı, başlangıç ve bitiş tarihlerine dayanan tüm projelerin bir genel görünümünü görüntülemektir.
+
+- Bu Gantt tablosu proje yönetimi bölümündedir.
+- Yalnızca proje yöneticileri ve yöneticiler bu bölüme erişebilir
+- Proje yöneticileri yalnızca üyelerinin bulunduğu yerdeki projeleri görür
+- Özel projeler bu tabloda gösterilmiyor
+
+![Gantt Chart for all projects](screenshots/gantt-chart-all-projects.png)
+
+- Projelerin **başlangıç tarihi** ve **bitiş tarihi** grafik çizmek için kullanılır
+- Yatay çubuklar yeniden boyutlandırılabilir ve farenizle yatay olarak hareket ettirilebilir
+- Dikey sürükle ve bırak yok
+- Başlangıç veya bitiş tarihi tanımlanmadığında proje çubukları siyah renkte gösterilir
+- Bilgi araç ipucu, proje yöneticilerinin ve standart üyelerin listesini gösterir
diff --git a/doc/tr_TR/gantt-chart-tasks.markdown b/doc/tr_TR/gantt-chart-tasks.markdown
new file mode 100644
index 00000000..528e5174
--- /dev/null
+++ b/doc/tr_TR/gantt-chart-tasks.markdown
@@ -0,0 +1,20 @@
+Görevler için Gantt grafiği
+======================
+
+Bu Gantt grafiğinin amacı, belirli bir projenin görevleri için zamana dayalı bir genel bakış sunmaktır.
+
+- Gantt tablosu "görüntü değiştirici" alanındadır.
+- Sadece proje yöneticileri bu bölüme erişebilir
+
+![Gantt Chart](screenshots/gantt-chart-project.png)
+
+- Görevlerin **başlangıç tarihi** ve **son tarihi** grafik çizmek için kullanılır
+- Görevler, farenizle yatay olarak yeniden boyutlandırılabilir ve taşınabilir
+- Dikey sürükle ve bırak yok
+- Çubuk görevle aynı renktedir
+- Her çubuk bir ilerleme durumu yüzde olarak görüntüler, bu yüzde tahtadaki sütun pozisyonunu kullanarak hesaplanır
+- Kanban modeline uymak için, görevler pano pozisyonlarına göre veya başlangıç tarihine göre sipariş edilebilir
+- Bu görünümden yaratılan yeni görevler, ilk sütundaki 1 numaralı sayfada tahtada görüntülenir
+- Görevler, başlangıç veya bitiş tarihi tanımlanmadığında siyah olarak görüntülenir
+
+![Task not defined](screenshots/gantt-chart-not-defined.png)
diff --git a/doc/tr_TR/groups.markdown b/doc/tr_TR/groups.markdown
new file mode 100644
index 00000000..4954903a
--- /dev/null
+++ b/doc/tr_TR/groups.markdown
@@ -0,0 +1,17 @@
+Grup Yönetimi
+=================
+
+Kanboard'da her kullanıcı bir veya daha fazla gruba üye olabilir.
+Bir grup bir takım ya da bir organizasyon gibidir.
+
+Yalnızca yöneticiler yeni gruplar oluşturabilir ve kullanıcıları atayabilir.
+
+Gruplar **Kullanıcı yönetimi>Tüm Grupları Görüntüle** 'den yönetilebilir.
+Buradan, gruplar oluşturabilir ve kullanıcıları atayabilirsiniz.
+
+![Group Management](screenshots/groups-management.png)
+
+Her proje yöneticisi, [proje izinleri sayfası](project-permissions.markdown) 'dan bir grup gruba erişimi yetkilendirir.
+
+Dış kimlik, çoğunlukla harici grup sağlayıcıları için kullanılır.
+Kanboard [otomatik olarak grupları LDAP sunucularından senkronize et](ldap-group-sync.markdown) için bir LDAP grup sağlayıcısı sağlar.
diff --git a/doc/tr_TR/heroku.markdown b/doc/tr_TR/heroku.markdown
new file mode 100644
index 00000000..6be7cebb
--- /dev/null
+++ b/doc/tr_TR/heroku.markdown
@@ -0,0 +1,39 @@
+Heroku üzerinde Kanboard dağıtma
+=========================
+
+[Heroku](https://www.heroku.com/) 'da Kanboard'u ücretsiz deneyebilirsiniz.
+Bu tek bir tıklama yükleme düğmesini kullanabilirsiniz veya aşağıdaki el-ile-manuel talimatları izleyin:
+
+[![Deploy](https://www.herokucdn.com/deploy/button.png)](https://heroku.com/deploy?template=https://github.com/kanboard/kanboard)
+
+Gereksinimler
+------------
+
+- Heroku hesabı, ücretsiz bir hesap kullanabilirsiniz
+- Heroku komut satırı araçları yüklenmiş olmalı
+
+Manuel talimatlar
+-------------------
+
+```bash
+# Get the last development version
+git clone https://github.com/kanboard/kanboard.git
+cd kanboard
+
+# Push the code to Heroku (You can also use SSH if git over HTTP doesn't work)
+heroku create
+git push heroku master
+
+# Start a new dyno with a Postgresql database
+heroku ps:scale web=1
+heroku addons:add heroku-postgresql:hobby-dev
+
+# Open your browser
+heroku open
+```
+
+Sınırlamalar
+-----------
+
+- Heroku'nun depolaması kısa ömürlüdür, bu da, bir yeniden başlatma sonrasında yüklenen dosyalar Kanboard'dan kalıcı değildir. Dosyalarınızı [Amazon S3](https://github.com/kanboard/plugin-s3) gibi bir bulut depolama sağlayıcısına depolamak için bir eklenti kurmak isteyebilirsiniz.
+- Kanboard'un bazı özellikleri, [günlük arka plan işi](cronjob.markdown) çalıştırmanızı gerektirir.
diff --git a/doc/tr_TR/ical.markdown b/doc/tr_TR/ical.markdown
new file mode 100644
index 00000000..89d8d5f3
--- /dev/null
+++ b/doc/tr_TR/ical.markdown
@@ -0,0 +1,78 @@
+Takvimlerinizi (eş zamanlı bilgi aktarma) senkronize etme
+======================
+
+Kanboard, projeler ve kullanıcılar için iCal özet akışlarını desteklemektedir.
+Bu özellik, neredeyse tüm takvim programlarında (örneğin Microsoft Outlook, Apple Takvim, Mozilla Thunderbird ve Google Takvim) Kanboard görevlerini almanıza olanak tanır.
+
+Takvim abonelikleri **yalnızca okunur** erişimindendir, sizin dışarıdan kullandığınız takvim yazılımından görevler oluşturamazsınız.
+Takvim beslemesi(feed'i)'ni dışa aktarma, iCal standardını takip eder.
+
+Not: Yalnızca -2 ay (önceki) ila +6 aylık (sonraki) tarih aralıklarındaki görevler iCalendar beslemesi(feed'e)'ne aktarılır.
+
+Proje takvimleri
+-----------------
+
+- Her projenin kendi takvimi vardır.
+- Proje başına abonelik bağlantısı benzersizdir, projenizin herkese açık erişimini etkinleştirdiğinizde bu bağlantı etkinleştirilir: **Proje ayarları>Herkese açık erişim**.
+- Bu takvim, seçilen proje için yalnızca görevleri gösterir.
+
+Kullanıcı takvimleri
+--------------
+
+- Her kullanıcının kendi takvimi vardır.
+- Kullanıcı başına abonelik bağlantısı benzersizdir; kullanıcının herkese açık erişimini etkinleştirdiğinizde bağlantı etkindir: **Kullanıcı profili>Herkese açık erişim**.
+- Bu takvim, kullanıcılara tüm projeler için atanan görevleri gösterir.
+
+Kanboard takviminizi Apple Takvim(Calendar)'e ekleme
+-----------------------------------------------
+
+- Takvim'i aç
+- **Dosya>Yeni Takvim Aboneliği** seçeneğini seçin.
+- Kanboard'dan iCal özet akışı (besleme-feed) URL'sini kopyalayıp yapıştırın
+
+! [iCal aboneliğini ekleyin] (screenshots / apple-calendar-add-subscription.png)
+
+- Takvimi iCloud ile senkronize etmeyi tüm cihazlarınızda mevcut olacak şekilde seçebilirsiniz
+- Yenileme sıklığını seçmeyi unutmayın
+
+![Edit iCal subscription](screenshots/apple-calendar-edit-subscription.png)
+
+Kanboard takviminizi Microsoft Outlook'a ekleme
+--------------------------------------------------
+
+![Outlook Add Internet Calendar](screenshots/outlook-add-subscription.png)
+
+- Outlook'u açın
+- ** Takvimi aç>İnternet'ten** i seçin
+- Kanboard'dan iCal özet akışı (besleme-feed) URL'sini kopyalayıp yapıştırın
+
+![Outlook Edit Internet Calendar](screenshots/outlook-edit-subscription.png)
+
+Mozilla Thunderbird'e Kanboard takviminizi ekleme
+----------------------------------------------------
+
+- Thunderbird'e takvim desteği eklemek için ** Lightning ** Eklenti yazılımını yükleyin
+- **Dosya>Yeni Takvim** 'i tıklayın
+- İletişim kutusunda **Ağda** seçeneğini belirleyin
+
+![Thunderbird Step 1](screenshots/thunderbird-new-calendar-step1.png)
+
+- iCalendar biçimini seçin
+- Kanboard'dan iCal özet akışı (besleme-feed) URL'sini kopyalayıp yapıştırın
+
+![Thunderbird Step 2](screenshots/thunderbird-new-calendar-step2.png)
+
+- Renkleri ve diğer ayarları seçin ve sonunda kaydedin
+
+Kanboard takviminizi Google Takvim'e ekleme
+------------------------------------------------
+
+- **Diğer takvimler** 'in yanındaki aşağı-oku tıklayın.
+- Menüden **Link ekle-Add URL** seçeneğini seçin.
+- Kanboard'dan iCal özet akışı (besleme-feed) URL'sini kopyalayıp yapıştırın
+
+![Google Calendar](screenshots/google-calendar-add-subscription.png)
+
+Senkronizasyonunu etkinleştirirseniz, Kanboard takviminiz Android cihazınızdan da kullanılabilir.
+
+Not: Google Destek'e göre, harici takvimler çok sık yenilenmiyor, [belgeleri okuyun](https://support.google.com/calendar/answer/37100?hl=en&ref_topic=1672445).
diff --git a/doc/tr_TR/installation.markdown b/doc/tr_TR/installation.markdown
new file mode 100644
index 00000000..23093e56
--- /dev/null
+++ b/doc/tr_TR/installation.markdown
@@ -0,0 +1,76 @@
+Kurulum Talimatları
+============
+
+Öncelikle, daha ileri gitmek için önce [gereksinimler](requirements.markdown) kontrol edin.
+
+Arşivden (kararlı sürüm)
+---------------------------------
+
+1. PHP'nin yüklü olduğu bir web sunucunuz olmalıdır
+2. Kaynak kodu indirin ve istediğiniz yere `kanboard` dizini kopyalayın
+3. `data` dizininin web sunucusu kullanıcısı tarafından yazılabilir olup olmadığını kontrol edin
+4. Tarayıcınızla <http://yourpersonalserver/kanboard> adresine gidin
+5. Varsayılan kullanıcı adı ve şifre **admin/admin**
+6. Kanboard yazılımını kullanmaya başlayın
+7. Parolanızı değiştirmeyi unutmayın!
+
+`data` klasörü depolamak için kullanılır:
+
+Sqlite veritabanı: `db.sqlite`
+- Hata ayıklama dosyası: `debug.log` (hata ayıklama modu etkinleştirilmişse)
+- Yüklenen dosyalar: `files/*`
+- Resim tırnak-thumb ları: `files/thumbnails/*`
+
+Uzak bir veritabanı (Mysql/Postgresql) ve uzak nesne depolama birimi (Aws S3 veya benzeri) kullananların mutlaka kalıcı bir yerel veri klasörüne sahip olmaları veya izinlerini değiştirmeleri gerekmez.
+
+Git deposundan (geliştirme versiyonu)
+---------------------------------------------
+
+Bu yöntemi kullanmak için [composer](https://getcomposer.org/) yüklemelisiniz.
+
+1. `git clone https://github.com/kanboard/kanboard.git`
+2. `composer install --no-dev`
+3. Yukarıdaki üçüncü adıma geçin
+
+Not: Bu yöntem, **mevcut geliştirme sürümünü** yükleyecektir, kendi sorumluluğunuzdadır.
+
+Belge kökü-root dışında kurulum
+-----------------------------------------
+
+Kanboard'u web sunucusu belge kökü dışında yüklemek isterseniz, en azından bu sembolik bağları-symlinks oluşturmanız gerekir:
+
+```bash
+.
+├── assets -> ../kanboard/assets
+├── cli -> ../kanboard/cli
+├── doc -> ../kanboard/doc
+├── favicon.ico -> ../kanboard/favicon.ico
+├── index.php -> ../kanboard/index.php
+├── jsonrpc.php -> ../kanboard/jsonrpc.php
+└── robots.txt -> ../kanboard/robots.txt
+```
+
+İçeriği doğrudan Apache yapılandırmasına eklenebileceğinden `.htaccess` isteğe bağlıdır.
+
+[Yapılandırma dosyası-Config file](config.markdown) değiştirerek eklentiler ve dosyalar klasörleri için özel bir yer de tanımlayabilirsiniz.
+
+
+Diğer Veritabanı Türleri
+--------------------
+
+Kanboard, MySQL ve Postgres'i Sqlite'e alternatif olarak desteklemektedir.
+
+- [Mysql yapılandırması](mysql-configuration.markdown)
+- [Postgres yapılandırması](postgresql-configuration.markdown)
+
+İsteğe Bağlı Kurulum
+---------------------
+
+- Kanboard'un bazı özellikleri, [günlük arka plan işi-cronjob](cronjob.markdown) çalıştırmanızı gerektirir (Raporlar ve analizler için) .
+- Performansı artırmak için [Arka plan çalışanını kurun](worker.markdown)
+
+Güvenlik
+--------
+
+- Varsayılan kullanıcı/şifreyi değiştirmeyi unutmayın
+- Herkese URL'den `data` dizinine erişmesine izin verme. Apache için zaten bir `.htaccess` ve IIS için bir `web.config` dosyası var, ancak diğer web sunucuları için bir şey yok.
diff --git a/doc/tr_TR/kanban-vs-todo-and-scrum.markdown b/doc/tr_TR/kanban-vs-todo-and-scrum.markdown
new file mode 100644
index 00000000..a751b8c3
--- /dev/null
+++ b/doc/tr_TR/kanban-vs-todo-and-scrum.markdown
@@ -0,0 +1,37 @@
+Kanban - Todo Listeleri ve Scrum
+==============================
+
+Kanban - Todo listeleri karşılaştırma
+---------------------------------
+
+### Todo listeleri:
+
+- Tek aşamalı (yalnızca bir öğe listesi)
+- Çoklu görev mümkün (verimli değil)
+
+### Kanban:
+
+- Çok fazlı, her sütun bir adım temsil eder
+- Sütun başına bir işi ilerleme sınırı belirleyebildiğiniz için Odaklanıp ve Çok görevden kaçınırsınız
+
+Kanban - Scrum karşılaştırma
+-------------------
+
+### Scrum:
+
+- Sprint ler time-boxed zaman-kutuları, genellikle 2 veya 4 hafta
+- Yineleme sırasında değişikliklere izin verilmez
+- Tahmin gerekli
+- Hız varsayılan metrik olarak kullanılır
+- Scrum panosu her sprint arasında silinir
+- Scrum, scrum master, ürün sahipleri ve takım gibi önceden tanımlanmış rollere sahiptir
+- Bir çok toplantı: planlama, backlogs geri-bilgi düzenleme, günlük ayak üstü, retrospektif
+
+### Kanban:
+
+- Sürekli akış
+- Değişiklikler her an yapılabilir
+- Tahmin isteğe bağlıdır
+- Performansı ölçmek için teslim ve döngü süresi kullanılır
+- Kanban tahtası kalıcıdır
+- Kanban sıkı kısıtlamalar veya toplantılar öngörmemektedir, süreç daha esnektir
diff --git a/doc/tr_TR/keyboard-shortcuts.markdown b/doc/tr_TR/keyboard-shortcuts.markdown
new file mode 100644
index 00000000..9257dce3
--- /dev/null
+++ b/doc/tr_TR/keyboard-shortcuts.markdown
@@ -0,0 +1,38 @@
+Klavye kısayolları
+==================
+
+Klavye kısayollarının kullanılabilirliği, bulunduğunuz sayfaya bağlıdır.
+
+Proje görünümleri (Pano, Takvim, Liste, Gantt)
+--------------------------------------------
+
+- Projeye genel bakışa geçiş = **v o**
+- Pano görünümüne geçin = **v b** (**v** sonra **b** üzerine basın)
+- Takvim görünümüne geçin = **v c**
+- Liste görünümüne geçin = **v l**
+- Gantt görünümüne geçin = **v g**
+
+Pano görünümü
+----------
+
+- Yeni görev = **n**
+- Görevleri genişlet/daralt **s**
+- Panoda Kompakt/geniş görünüm = **c**
+
+Görev görünümü
+---------
+
+- Görevi düzenle = **e**
+- Yeni alt görev ** = **s**
+- Yeni yorum = **c**
+- Yeni iç bağlantı-link = **l**
+
+Uygulama
+-----------
+
+- Klavye kısayollarının listesini görüntüle = **?**
+- Açık pano anahtarı = **b**
+- Arama kutusuna gidin = **f**
+- Arama kutusunu sıfırlayın = **r**
+- Diyalog ekranını kapat = **ESC**
+- Formu gönder = **CTRL+ENTER** veya **⌘+ENTER**
diff --git a/doc/tr_TR/ldap-authentication.markdown b/doc/tr_TR/ldap-authentication.markdown
new file mode 100644
index 00000000..c6d31117
--- /dev/null
+++ b/doc/tr_TR/ldap-authentication.markdown
@@ -0,0 +1,185 @@
+LDAP Kimlik Doğrulaması
+===================
+
+Gereksinimler
+------------
+
+- PHP LDAP uzantısı etkinleştirin
+- LDAP sunucusu:
+ - OpenLDAP
+ - Microsoft Active Directory
+ - Novell eDirectory
+
+İş Akışı
+--------
+
+LDAP kimlik doğrulaması etkinleştirildiğinde, oturum açma işlemi şu şekilde iş görür:
+
+1. Önce veritabanını kullanarak kullanıcıyı doğrulamayı dener
+2. Kullanıcı veritabanında bulunmazsa, bir LDAP kimlik doğrulaması yapılır
+3. LDAP kimlik doğrulaması başarılı olursa, varsayılan olarak bir yerel kullanıcı otomatik olarak parola olmadan oluşturulur ve LDAP kullanıcıları olarak işaretlenir.
+
+Tam ad ve e-posta adresi otomatik olarak LDAP sunucusundan alınır.
+
+Kimlik Doğrulama Türleri
+--------------------
+
+| Tip | Açıklama |
+|-------------------|------------------------------------------------------------------------|
+| Proxy Kullanıcısı | LDAP dizinine göz atmak için belirli bir kullanıcı kullanılır. |
+| Kullanıcı | Son kullanıcı kimlik bilgileri LDAP dizinine göz atmak için kullanılır |
+| Anonim | LDAP tarama için kimlik doğrulama yapılmaz |
+
+** Tavsiye edilen kimlik doğrulama yöntemi "Proxy"'dır**.
+
+#### Anonim mod
+
+```php
+define('LDAP_BIND_TYPE', 'anonymous');
+define('LDAP_USERNAME', null);
+define('LDAP_PASSWORD', null);
+```
+
+Varsayılan değer budur, ancak bazı LDAP sunucuları güvenlik nedenleriyle anonim taramaya izin vermez.
+
+#### Proxy mode
+
+LDAP dizinine göz atmak için belirli bir kullanıcı kullanılır:
+
+```php
+define('LDAP_BIND_TYPE', 'proxy');
+define('LDAP_USERNAME', 'my proxy user');
+define('LDAP_PASSWORD', 'my proxy password');
+```
+
+#### Kullanıcı modu
+
+Bu yöntem, son kullanıcı tarafından sağlanan kimlik bilgilerini kullanır.
+
+Örneğin, Microsoft Active Directory varsayılan olarak anonim taramaya izin vermez ve bir proxy kullanıcısı kullanmak istemiyorsanız bu yöntemi kullanabilirsiniz.
+
+```php
+define('LDAP_BIND_TYPE', 'user');
+define('LDAP_USERNAME', '%s@kanboard.local');
+define('LDAP_PASSWORD', null);
+```
+
+Bu durumda, `LDAP_USERNAME` sabiti ldap kullanıcı adına bir örnek olarak kullanılır, örnekler:
+
+- `%s@kanboard.local` Yerini alacak `my_user@kanboard.local`
+- `KANBOARD\\%s` Yerini alacak `KANBOARD\my_user`
+
+Kullanıcı LDAP filtresi
+----------------
+
+LDAP dizinindeki kullanıcıları bulmak için yapılandırma parametresi `LDAP_USER_FILTER` i kullanılır.
+
+Örnekler:
+
+- `(&(objectClass=user)(sAMAccountName=%s))` yerini alır `(&(objectClass=user)(sAMAccountName=my_username))`
+- `uid=%s` yerini alır `uid=my_username`
+
+[Active Directory için filtreler](http://social.technet.microsoft.com/wiki/contents/articles/5392.active-directory-ldap-syntax-filters.aspx) için diğer örnekler
+
+Kanboard'a erişimi filtrelemek için örnek:
+
+`(&(objectClass=user)(sAMAccountName=%s)(memberOf=CN=Kanboard Users,CN=Users,DC=kanboard,DC=local))`
+
+Bu örnek, sadece "Kanboard Kullanıcıları" grubunun üyelerine Kanboard'a bağlanmalarına izin verir.
+
+Microsoft Active Directory için Örnek
+--------------------------------------
+
+Diyelim ki 'KANBOARD' alanına (kanboard.local) sahibiz ve birincil denetleyicisi `myserver.kanboard.local` diyelim.
+
+Proxy moduyla ilk örnek:
+
+```php
+<?php
+
+// Enable LDAP authentication (false by default)
+define('LDAP_AUTH', true);
+
+define('LDAP_BIND_TYPE', 'proxy');
+define('LDAP_USERNAME', 'administrator@kanboard.local');
+define('LDAP_PASSWORD', 'my super secret password');
+
+// LDAP server hostname
+define('LDAP_SERVER', 'myserver.kanboard.local');
+
+// LDAP properties
+define('LDAP_USER_BASE_DN', 'CN=Users,DC=kanboard,DC=local');
+define('LDAP_USER_FILTER', '(&(objectClass=user)(sAMAccountName=%s))');
+```
+
+Kullanıcı modu ile ikinci örnek:
+
+```php
+<?php
+
+// Enable LDAP authentication (false by default)
+define('LDAP_AUTH', true);
+
+define('LDAP_BIND_TYPE', 'user');
+define('LDAP_USERNAME', '%s@kanboard.local');
+define('LDAP_PASSWORD', null);
+
+// LDAP server hostname
+define('LDAP_SERVER', 'myserver.kanboard.local');
+
+// LDAP properties
+define('LDAP_USER_BASE_DN', 'CN=Users,DC=kanboard,DC=local');
+define('LDAP_USER_FILTER', '(&(objectClass=user)(sAMAccountName=%s))');
+```
+
+OpenLDAP için örnek
+--------------------
+
+LDAP sunucumuz `myserver.example.com` olup tüm kullanıcılar `ou=People,dc=example,dc=com` altına saklanır.
+
+Bu örnek için, anonim bağlayıcı kullanıyoruz.
+
+```php
+<?php
+
+// Enable LDAP authentication (false by default)
+define('LDAP_AUTH', true);
+
+// LDAP server hostname
+define('LDAP_SERVER', 'myserver.example.com');
+
+// LDAP properties
+define('LDAP_USER_BASE_DN', 'ou=People,dc=example,dc=com');
+define('LDAP_USER_FILTER', 'uid=%s');
+```
+
+Otomatik hesap oluşturma işlemini devre dışı bırak
+-----------------------------------
+
+Varsayılan olarak, Kanboard hiçbir şey bulunamazsa otomatik olarak bir kullanıcı hesabı oluşturacaktır.
+
+Kanboard'u yalnızca bazı kişilere kısıtlamak için kullanıcı hesapları oluşturmayı tercih ederseniz, bu davranışı devre dışı bırakabilirsiniz.
+
+`LDAP_ACCOUNT_CREATION` değerini `false` olarak değiştirmeniz yeterlidir:
+
+```php
+// Automatically create user account
+define('LDAP_ACCOUNT_CREATION', false);
+```
+
+Sorun giderme
+---------------
+
+### SELinux kısıtlamaları
+
+SELinux etkinleştirilirse, Apache'nin LDAP sunucunuza erişmesine izin vermeniz gerekir.
+
+- SELinux'ü izin moduna-permissive mode geçirebilir veya devre dışı bırakabilirsiniz (önerilmez).
+- Örneğin, `setsebool -P httpd_can_network_connect=1` gibi tüm ağ bağlantılarına izin verebilir veya daha kısıtlayıcı bir kurala sahip olabilirsiniz
+
+Her halükarda, resmi Redhat/Centos belgelerine bakın.
+
+### Hata ayıklama modunu etkinleştir
+
+Doğru şekilde LDAP kimlik doğrulamasını kuramazsanız, [hata ayıklama modunu etkinleştirebilirsiniz](config.markdown) ve günlük dosyalarını izleyebilirsiniz.
+
diff --git a/doc/tr_TR/ldap-configuration-examples.markdown b/doc/tr_TR/ldap-configuration-examples.markdown
new file mode 100644
index 00000000..cd48d5aa
--- /dev/null
+++ b/doc/tr_TR/ldap-configuration-examples.markdown
@@ -0,0 +1,222 @@
+LDAP Yapılandırma Örnekleri
+===========================
+
+Microsoft Active Directory
+--------------------------
+
+- Kullanıcı doğrulama
+- Kullanıcı profili resmini Active Directory'den indirin
+- Kullanıcı dilini LDAP özniteliğinden ayarlayın
+- Kanboard rolleri Active Directory gruplarına eşlenir
+- LDAP grup sağlayıcıları etkinleştirildi
+
+```php
+define('LDAP_AUTH', true);
+
+define('LDAP_SERVER', 'my-ldap-server');
+define('LDAP_PORT', 389);
+
+define('LDAP_BIND_TYPE', 'proxy');
+define('LDAP_USERNAME', 'administrator@kanboard.local');
+define('LDAP_PASSWORD', 'secret');
+
+define('LDAP_USER_BASE_DN', 'CN=Users,DC=kanboard,DC=local');
+define('LDAP_USER_FILTER', '(&(objectClass=user)(sAMAccountName=%s))');
+
+define('LDAP_USER_ATTRIBUTE_USERNAME', 'samaccountname');
+define('LDAP_USER_ATTRIBUTE_FULLNAME', 'displayname');
+define('LDAP_USER_ATTRIBUTE_PHOTO', 'jpegPhoto');
+define('LDAP_USER_ATTRIBUTE_LANGUAGE', 'preferredLanguage');
+
+define('LDAP_GROUP_ADMIN_DN', 'CN=Kanboard Admins,CN=Users,DC=kanboard,DC=local');
+define('LDAP_GROUP_MANAGER_DN', 'CN=Kanboard Managers,CN=Users,DC=kanboard,DC=local');
+
+define('LDAP_GROUP_PROVIDER', true);
+define('LDAP_GROUP_BASE_DN', 'CN=Users,DC=kanboard,DC=local');
+define('LDAP_GROUP_FILTER', '(&(objectClass=group)(sAMAccountName=%s*))');
+define('LDAP_GROUP_ATTRIBUTE_NAME', 'cn');
+```
+
+
+MemberOf yer paylaşımı ile OpenLDAP
+------------------------------
+
+Kullanıcı LDIF örneği:
+
+```
+dn: uid=manager,ou=Users,dc=kanboard,dc=local
+objectClass: top
+objectClass: person
+objectClass: organizationalPerson
+objectClass: inetOrgPerson
+uid: manager
+sn: Lastname
+givenName: Firstname
+cn: Kanboard Manager
+displayName: Kanboard Manager
+mail: manager@kanboard.local
+userPassword: password
+memberOf: cn=Kanboard Managers,ou=Groups,dc=kanboard,dc=local
+```
+
+Grup LDIF örneği:
+
+```
+dn: cn=Kanboard Managers,ou=Groups,dc=kanboard,dc=local
+objectClass: top
+objectClass: groupOfNames
+cn: Kanboard Managers
+member: uid=manager,ou=Users,dc=kanboard,dc=local
+```
+
+Kanboard Konfigürasyonu:
+
+- Kullanıcı doğrulama
+- Kanboard rolleri LDAP gruplarıyla eşlenir
+- LDAP grup sağlayıcıları etkinleştirildi
+
+```php
+define('LDAP_AUTH', true);
+
+define('LDAP_SERVER', 'my-ldap-server');
+define('LDAP_PORT', 389);
+
+define('LDAP_BIND_TYPE', 'proxy');
+define('LDAP_USERNAME', 'cn=admin,DC=kanboard,DC=local');
+define('LDAP_PASSWORD', 'password');
+
+define('LDAP_USER_BASE_DN', 'OU=Users,DC=kanboard,DC=local');
+define('LDAP_USER_FILTER', 'uid=%s');
+
+define('LDAP_GROUP_ADMIN_DN', 'cn=Kanboard Admins,ou=Groups,dc=kanboard,dc=local');
+define('LDAP_GROUP_MANAGER_DN', 'cn=Kanboard Managers,ou=Groups,dc=kanboard,dc=local');
+
+define('LDAP_GROUP_PROVIDER', true);
+define('LDAP_GROUP_BASE_DN', 'ou=Groups,dc=kanboard,dc=local');
+define('LDAP_GROUP_FILTER', '(&(objectClass=groupOfNames)(cn=%s*))');
+define('LDAP_GROUP_ATTRIBUTE_NAME', 'cn');
+```
+
+Posix gruplarıyla OpenLDAP (memberUid)
+--------------------------------------
+
+Kullanıcı LDIF örneği:
+
+```
+dn: uid=manager,ou=Users,dc=kanboard,dc=local
+objectClass: inetOrgPerson
+objectClass: posixAccount
+objectClass: shadowAccount
+uid: manager
+sn: Lastname
+givenName: Firstname
+cn: Kanboard Manager
+displayName: Kanboard Manager
+uidNumber: 10001
+gidNumber: 8000
+userPassword: password
+homeDirectory: /home/manager
+mail: manager@kanboard.local
+```
+
+Grup LDIF örneği:
+
+```
+dn: cn=Kanboard Managers,ou=Groups,dc=kanboard,dc=local
+objectClass: posixGroup
+cn: Kanboard Managers
+gidNumber: 5001
+memberUid: manager
+```
+
+Kanboard Konfigürasyonu:
+
+- Kullanıcı doğrulama
+- Kanboard rolleri LDAP gruplarıyla eşlenir
+- LDAP grup sağlayıcıları etkinleştirildi
+
+```php
+define('LDAP_AUTH', true);
+
+define('LDAP_SERVER', 'my-ldap-server');
+define('LDAP_PORT', 389);
+
+define('LDAP_BIND_TYPE', 'proxy');
+define('LDAP_USERNAME', 'cn=admin,DC=kanboard,DC=local');
+define('LDAP_PASSWORD', 'password');
+
+define('LDAP_USER_BASE_DN', 'OU=Users,DC=kanboard,DC=local');
+define('LDAP_USER_FILTER', 'uid=%s');
+
+define('LDAP_GROUP_ADMIN_DN', 'cn=Kanboard Admins,ou=Groups,dc=kanboard,dc=local');
+define('LDAP_GROUP_MANAGER_DN', 'cn=Kanboard Managers,ou=Groups,dc=kanboard,dc=local');
+
+// This filter is used to find the groups of our user
+define('LDAP_GROUP_USER_FILTER', '(&(objectClass=posixGroup)(memberUid=%s))');
+
+define('LDAP_GROUP_PROVIDER', true);
+define('LDAP_GROUP_BASE_DN', 'ou=Groups,dc=kanboard,dc=local');
+define('LDAP_GROUP_FILTER', '(&(objectClass=posixGroup)(cn=%s*))');
+define('LDAP_GROUP_ATTRIBUTE_NAME', 'cn');
+```
+
+GroupOfNames ile OpenLDAP
+--------------------------
+
+Kullanıcı LDIF örneği:
+
+```
+dn: uid=manager,ou=Users,dc=kanboard,dc=local
+objectClass: top
+objectClass: person
+objectClass: organizationalPerson
+objectClass: inetOrgPerson
+uid: manager
+sn: Lastname
+givenName: Firstname
+cn: Kanboard Manager
+displayName: Kanboard Manager
+mail: manager@kanboard.local
+userPassword: password
+```
+
+Grup LDIF örneği:
+
+```
+dn: cn=Kanboard Managers,ou=Groups,dc=kanboard,dc=local
+objectClass: top
+objectClass: groupOfNames
+cn: Kanboard Managers
+member: uid=manager,ou=Users,dc=kanboard,dc=local
+```
+
+Kanboard Konfigürasyonu:
+
+- Kullanıcı doğrulama
+- Kanboard rolleri LDAP gruplarıyla eşlenir
+- LDAP grup sağlayıcıları etkinleştirildi
+
+```php
+define('LDAP_AUTH', true);
+
+define('LDAP_SERVER', 'my-ldap-server');
+define('LDAP_PORT', 389);
+
+define('LDAP_BIND_TYPE', 'proxy');
+define('LDAP_USERNAME', 'cn=admin,DC=kanboard,DC=local');
+define('LDAP_PASSWORD', 'password');
+
+define('LDAP_USER_BASE_DN', 'OU=Users,DC=kanboard,DC=local');
+define('LDAP_USER_FILTER', 'uid=%s');
+
+define('LDAP_GROUP_ADMIN_DN', 'cn=Kanboard Admins,ou=Groups,dc=kanboard,dc=local');
+define('LDAP_GROUP_MANAGER_DN', 'cn=Kanboard Managers,ou=Groups,dc=kanboard,dc=local');
+
+// This filter is used to find the groups of our user
+define('LDAP_GROUP_USER_FILTER', '(&(objectClass=groupOfNames)(member=uid=%s,ou=Users,dc=kanboard,dc=local))');
+
+define('LDAP_GROUP_PROVIDER', true);
+define('LDAP_GROUP_BASE_DN', 'ou=Groups,dc=kanboard,dc=local');
+define('LDAP_GROUP_FILTER', '(&(objectClass=groupOfNames)(cn=%s*))');
+define('LDAP_GROUP_ATTRIBUTE_NAME', 'cn');
+```
diff --git a/doc/tr_TR/ldap-group-sync.markdown b/doc/tr_TR/ldap-group-sync.markdown
new file mode 100644
index 00000000..a5ba3d0f
--- /dev/null
+++ b/doc/tr_TR/ldap-group-sync.markdown
@@ -0,0 +1,79 @@
+LDAP Grubu Senkronizasyonu
+==========================
+
+Gereksinimler
+------------
+
+- LDAP kimlik doğrulamasının düzgün şekilde yapılandırılmış olmasını sağlayın
+- `memberOf` veya `memberUid` (PosixGroups) destekleyen bir LDAP sunucusu kullanın
+
+Kullanıcı gruplarını LDAP gruplarına dayalı olarak otomatik olarak tanımlama
+----------------------------------------------------
+
+Bu sabitleri yapılandırma dosyanızda kullanın:
+
+- `LDAP_GROUP_ADMIN_DN`: Uygulama yöneticileri için ayırt edici isimler
+- `LDAP_GROUP_MANAGER_DN`: Uygulama yöneticileri için ayırt edici isimler
+
+### Active Directory Örneği:
+
+```php
+define('LDAP_GROUP_ADMIN_DN', 'CN=Kanboard Admins,CN=Users,DC=kanboard,DC=local');
+define('LDAP_GROUP_MANAGER_DN', 'CN=Kanboard Managers,CN=Users,DC=kanboard,DC=local');
+```
+
+- "Kanboard Admins" kişileri "Yönetici" rolüne sahip olacak
+- "Kanboard Yöneticilerinin" üyeleri "Yönetici" rolüne sahip olacak
+- Herkesin "Kullanıcı" rolü olacak
+
+### Posix Gruplu OpenLDAP Örneği:
+
+```php
+define('LDAP_GROUP_BASE_DN', 'ou=Groups,dc=kanboard,dc=local');
+define('LDAP_GROUP_USER_FILTER', '(&(objectClass=posixGroup)(memberUid=%s))');
+define('LDAP_GROUP_ADMIN_DN', 'cn=Kanboard Admins,ou=Groups,dc=kanboard,dc=local');
+define('LDAP_GROUP_MANAGER_DN', 'cn=Kanboard Managers,ou=Groups,dc=kanboard,dc=local');
+```
+
+LDAP sunucunuz `memberOf` yerine `memberUid` kullanıyorsa `LDAP_GROUP_USER_FILTER` **parametresini tanımlamanız gerekir**.
+Bu örnekteki tüm parametreler zorunludur.
+
+Proje izinleri için LDAP gruplarını otomatik olarak yükle
+------------------------------------------------------
+
+Bu özellik, LDAP gruplarını otomatik olarak Kanboard gruplarıyla senkronize etmenizi sağlar.
+Her gruba farklı bir proje rolü atanabilir.
+
+Proje izinleri sayfasında, kullanıcılar otomatik tamamlama alanına gruplar girebilir ve Kanboard herhangi bir sağlayıcı etkin grupları arayabilir.
+
+Grup yerel veritabanında yoksa, otomatik olarak senkronize edilecektir.
+
+- `LDAP_GROUP_PROVIDER`: LDAP grup sağlayıcısını etkinleştirin
+- `LDAP_GROUP_BASE_DN`: LDAP dizinindeki grupları bulmak için ayırt edici adlar
+- `LDAP_GROUP_FILTER`: Sorguyu gerçekleştirmek için kullanılan LDAP filtresi
+- `LDAP_GROUP_ATTRIBUTE_NAME`: grup adını almak için kullanılan LDAP özelliği
+
+### Active Directory Örneği:
+
+```php
+define('LDAP_GROUP_PROVIDER', true);
+define('LDAP_GROUP_BASE_DN', 'CN=Groups,DC=kanboard,DC=local');
+define('LDAP_GROUP_FILTER', '(&(objectClass=group)(sAMAccountName=%s*))');
+```
+
+Yukarıdaki örnekte verilen filtreyle Kanboard, sorguyla eşleşen grupları arayacaktır.
+Son kullanıcı, otomatik tamamlama kutusuna "Grupum" metnini girerse, Kanboard, desenle eşleşen tüm grupları döndürür: `(&(objectClass=group)(sAMAccountName=My group*))`.
+
+- Not 1: Burada `*` özel karakterleri önemlidir, 00aksi halde tam bir eşleşme yapılacak**.
+- Not 2: Bu özellik yalnızca "proxy" veya "anonim" modda yapılandırılmış LDAP kimlik doğrulamasıyla uyumludur
+
+[Active Directory için daha fazla LDAP filtresi örneği](http://social.technet.microsoft.com/wiki/contents/articles/5392.active-directory-ldap-syntax-filters.aspx)
+
+### Example for OpenLDAP with Posix Groups:
+
+```php
+define('LDAP_GROUP_PROVIDER', true);
+define('LDAP_GROUP_BASE_DN', 'ou=Groups,dc=kanboard,dc=local');
+define('LDAP_GROUP_FILTER', '(&(objectClass=posixGroup)(cn=%s*))');
+```
+
diff --git a/doc/tr_TR/ldap-parameters.markdown b/doc/tr_TR/ldap-parameters.markdown
new file mode 100644
index 00000000..2da43169
--- /dev/null
+++ b/doc/tr_TR/ldap-parameters.markdown
@@ -0,0 +1,36 @@
+LDAP Yapılandırma Parametreleri
+=============================
+
+Kullanılabilir LDAP parametrelerinin listesi aşağıdadır:
+
+| Parametre | Varsayılan değer | Açıklama |
+|---------------------------------|------------------|------------------------------------------------|
+| `LDAP_AUTH` | false | LDAP kimlik doğrulamasını etkinleştir |
+| `LDAP_SERVER` | Empty | LDAP sunucusu ana makine adı |
+| `LDAP_PORT` | 389 | LDAP server port |
+| `LDAP_SSL_VERIFY` | true | `ldaps://` stil URL'si için sertifikayı doğrulama |
+| `LDAP_START_TLS` | false | LDAP başlangıç TLS'i etkinleştir |
+| `LDAP_USERNAME_CASE_SENSITIVE` | false | Kanboard, yinelenen kullanıcılardan kaçınmak için ldap kullanıcı adını küçük harflerle yazmaktadır (veritabanı büyük/küçük harf duyarlıdır) |
+| `LDAP_BIND_TYPE` | anonymous | Bağ türü: "anonim", "kullanıcı" veya "vekil" |
+| `LDAP_USERNAME` | null | Kullanıcı moduyla kullanılacak proxy modu veya kullanıcı adı kalıbıyla kullanılacak LDAP kullanıcı adı |
+| `LDAP_PASSWORD` | null | Proxy modu için kullanılacak LDAP şifresi |
+| `LDAP_USER_BASE_DN` | Empty | Kullanıcılar için LDAP DN (Örnek: "CN=Kullanıcılar,DC=kanboard,DC=yerel") |
+| `LDAP_USER_FILTER` | Empty | Kullanıcı hesabı ararken kullanılacak LDAP deseni (Örnek: "(&(objectClass=user)(sAMAccountName=%s))") |
+| `LDAP_USER_ATTRIBUTE_USERNAME` | uid | Kullanıcı adı için LDAP özelliği (Örnek: "samaccountname") |
+| `LDAP_USER_ATTRIBUTE_FULLNAME` | cn | Kullanıcı tam adı için LDAP özelliği (Örnek: "displayname") |
+| `LDAP_USER_ATTRIBUTE_EMAIL` | mail | Kullanıcı e-postası için LDAP özelliği |
+| `LDAP_USER_ATTRIBUTE_GROUPS` | memberof | Kullanıcı profilinde gruplar bulmak için LDAP özniteliği |
+| `LDAP_USER_ATTRIBUTE_PHOTO` | Empty | Kullanıcı fotoğrafını bulmak için LDAP özniteliği (jpegPhoto veya thumbnailPhoto) |
+| `LDAP_USER_ATTRIBUTE_LANGUAGE` | Empty | Kullanıcı dili için LDAP özniteliği (preferredlanguage), kabul edilen dil biçimi "fr-FR" |
+| `LDAP_USER_CREATION` | true | Otomatik LDAP kullanıcı yaratmayı etkinleştir |
+| `LDAP_GROUP_ADMIN_DN` | Empty | Yöneticiler için LDAP DN (Örnek: "CN=Kanboard-Admins,CN=Users,DC=kanboard,DC=local") |
+| `LDAP_GROUP_MANAGER_DN` | Empty | Müdürler için LDAP DN (Örnek: "CN=Kanboard Managers,CN=Users,DC=kanboard,DC=local") |
+| `LDAP_GROUP_PROVIDER` | false | Proje izinleri için LDAP grup sağlayıcısını etkinleştirin |
+| `LDAP_GROUP_BASE_DN` | Empty | Gruplar için LDAP Tabanı DN |
+| `LDAP_GROUP_FILTER` | Empty | LDAP grup filitresi (Örnek: "(&(objectClass=group)(sAMAccountName=%s*))") |
+| `LDAP_GROUP_USER_FILTER` | Empty | Kanboard, tanımlandıysa, LDAP_GROUP_BASE_DN 'deki kullanıcı gruplarını bu filtre ile arayacaktır, yalnızca posixGroups için kullanışlıdır (Örnek: `(&(objectClass=posixGroup)(memberUid=%s))`) |
+| `LDAP_GROUP_ATTRIBUTE_NAME` | cn | Grup adı için LDAP özniteliği |
+
+Notlar:
+
+- LDAP nitelikleri küçük harflerle yazılmış olmalıdır
diff --git a/doc/tr_TR/ldap-profile-picture.markdown b/doc/tr_TR/ldap-profile-picture.markdown
new file mode 100644
index 00000000..515e9d1c
--- /dev/null
+++ b/doc/tr_TR/ldap-profile-picture.markdown
@@ -0,0 +1,27 @@
+LDAP Kullanıcı Profili Fotoğrafı
+=======================
+
+Kanboard otomatik olarak kullanıcı resimlerini LDAP sunucusundan indirebilir.
+
+Bu özellik, yalnızca LDAP kimlik doğrulaması etkinleştirildiğinde ve `LDAP_USER_ATTRIBUTE_PHOTO` parametresi tanımlanırsa etkinleştirilir.
+
+Yapılandırma
+-------------
+
+`config.php` dosyasında, görüntüyü saklamak için kullanılan LDAP özniteliğini ayarlamanız gerekir.
+
+```php
+define('LDAP_USER_ATTRIBUTE_PHOTO', 'jpegPhoto');
+```
+
+Genellikle, `jpegPhoto` veya `thumbnailPhoto` nitelikleri kullanılır.
+Görüntü JPEG veya PNG formatında saklanabilir.
+
+Görüntüyü kullanıcı profiline yüklemek için, Active Directory yöneticileri [AD Photo Edit](http://www.cjwdev.co.uk/Software/ADPhotoEdit/Info.html) gibi yazılımları kullanır.
+
+Notes
+-----
+
+Profil resmi **kullanıcı daha önce bir resim yüklememişse giriş yaparken indirilir**.
+
+Kullanıcı fotoğrafını değiştirmek için önceki fotoğrafı kullanıcı profilinden el ile kaldırmanız gerekir.
diff --git a/doc/tr_TR/link-labels.markdown b/doc/tr_TR/link-labels.markdown
new file mode 100644
index 00000000..c5cb9c95
--- /dev/null
+++ b/doc/tr_TR/link-labels.markdown
@@ -0,0 +1,11 @@
+Bağlantı ayarları
+=============
+
+Görev ilişkileri, uygulama ayarlarından değiştirilebilir (** Ayarlar> Bağlantı ayarları **)
+
+![Link Labels](screenshots/link-labels.png)
+
+Her etiketin zıt bir etiketi olabilir.
+Herhangi bir zıtlık yoksa, etiket iki yönlü olarak değerlendirilir.
+
+![Link Label Creation](screenshots/link-label-creation.png)
diff --git a/doc/tr_TR/mysql-configuration.markdown b/doc/tr_TR/mysql-configuration.markdown
new file mode 100644
index 00000000..597d2abf
--- /dev/null
+++ b/doc/tr_TR/mysql-configuration.markdown
@@ -0,0 +1,72 @@
+Mysql / MariaDB Yapılandırması
+===========================
+
+Varsayılan olarak Kanboard, verilerini depolamak için Sqlite'i kullanır.
+Ancak Mql veya MariaDB yerine Sqlite kullanmak mümkündür.
+
+Gereksinimler
+------------
+
+- MySQL sunucusu
+- PHP'nin `pdo_mysql` uzantısı kuruldu
+
+Not: Kanboard, **Mysql> = 5.5 ve MariaDB> = 10.0** ile test edilmiştir
+
+MySQL yapılandırması
+-------------------
+
+### Veritabanı oluşturma
+
+İlk adım, MySQL sunucunuzda bir veritabanı oluşturmaktır.
+Örneğin, mysql istemcisi komut satırıyla bunu yapabilirsiniz:
+
+```sql
+CREATE DATABASE kanboard;
+```
+
+### Bir yapılandırma dosyası oluştur
+
+`config.php` dosyasında bu değerler bulunmalıdır:
+
+```php
+<?php
+
+// We choose to use Mysql instead of Sqlite
+define('DB_DRIVER', 'mysql');
+
+// Mysql parameters
+define('DB_USERNAME', 'REPLACE_ME');
+define('DB_PASSWORD', 'REPLACE_ME');
+define('DB_HOSTNAME', 'REPLACE_ME');
+define('DB_NAME', 'kanboard');
+```
+
+Not: Ayrıca, `config.default.php` şablon dosyasını `config.php` olarak yeniden adlandırabilirsiniz.
+
+### SQL dökümünü alma (alternatif yöntem)
+
+İlk kez, Kanboard her bir veritabanı geçiş işleminde tek tek çalışacak ve bu işlem konfigürasyonunuza göre biraz zaman alabilir.
+
+Olası bir zaman aşımını önlemek için, veritabanını doğrudan SQL şemasını içe aktararak başlatabilirsiniz:
+
+```bash
+mysql -u root -p my_database < app/Schema/Sql/mysql.sql
+```
+
+`app/Schema/Sql/mysql.sql` dosyası, veritabanının son sürümünü gösteren bir SQL dökümüdür.
+
+SSL yapılandırması
+-----------------
+
+Bu parametrelerin Mysql SSL bağlantısını etkinleştirmek için tanımlanması gerekir:
+
+```php
+// Mysql SSL key
+define('DB_SSL_KEY', '/path/to/client-key.pem');
+
+// Mysql SSL certificate
+define('DB_SSL_CERT', '/path/to/client-cert.pem');
+
+// Mysql SSL CA
+define('DB_SSL_CA', '/path/to/ca-cert.pem');
+```
diff --git a/doc/tr_TR/nice-urls.markdown b/doc/tr_TR/nice-urls.markdown
new file mode 100644
index 00000000..d13ae2f5
--- /dev/null
+++ b/doc/tr_TR/nice-urls.markdown
@@ -0,0 +1,129 @@
+URL yeniden yazımı-rewriting
+=============
+
+Kanboard, URL yeniden yazarlığı etkin veya olmasın kayıtsız çalışabilir.
+
+- URL yeniden yazılmış örneği: `/board/123`
+- Aksi takdirde: `?controller=board&action=show&project_id=123`
+
+Kanboard'u Apache ile kullanıyorsanız ve mod yeniden yazma özelliği etkinse, güzel URL'ler otomatik olarak kullanılacaktır.
+"404 Bulunamadı" mesajı alırsanız, .htaccess dosyalarını çalıştırmak için DocumentRoot için en azından şu geçersiz kılmaları ayarlamanız gerekebilir:
+
+```sh
+<Directory /var/www/kanboard/>
+ AllowOverride FileInfo Options=All,MultiViews AuthConfig
+</Directory>
+```
+
+URL Kısayolları
+-------------
+
+- Görev "#123"'e gidin: **/t/123**
+- "#2" numaralı proje panosuna gidin: **/b/2**
+- Proje takvimi "#5"'e gidin: **/c/5**
+- "#8." Projenin liste görünümüne gidin : **/l/8**
+- Proje numarası "#42" için proje ayarlarına gidin: **/p/42**
+
+Yapılandırma
+-------------
+
+Varsayılan olarak, Kanboard, Apache modu yeniden yazmanın etkin olup olmadığını kontrol edecektir.
+
+URL yeniden yazmanın web sunucusundan otomatik olarak algılanmasını önlemek için, bu özelliği yapılandırma dosyanızdan etkinleştirebilirsiniz:
+
+```php
+define('ENABLE_URL_REWRITE', true);
+```
+
+Bu sabit `true` olduğunda:
+
+- Komut satırı araçlarından üretilen URL'ler de dönüştürülecek
+- Apache'den başka bir web sunucusu, örnegin Nginx veya Microsoft IIS kullanıyorsanız, kendinize URL yeniden yazmayı yapılandırmanız gerekir
+
+Not: Kanboard her zaman eski okul URL'lerine geçmez, yapılandırılmadığında bu yapılandırma isteğe bağlıdır.
+
+Nginx yapılandırma örneği
+---------------------------
+
+Nginx yapılandırma dosyanızın `server` bölümünde şu örneği kullanabilirsiniz:
+
+```bash
+index index.php;
+
+location / {
+ try_files $uri $uri/ /index.php$is_args$args;
+
+ # If Kanboard is under a subfolder
+ # try_files $uri $uri/ /kanboard/index.php;
+}
+
+location ~ \.php$ {
+ try_files $uri =404;
+ fastcgi_split_path_info ^(.+\.php)(/.+)$;
+ fastcgi_pass unix:/var/run/php5-fpm.sock;
+ fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
+ fastcgi_index index.php;
+ include fastcgi_params;
+}
+
+# Deny access to the directory data
+location ~* /data {
+ deny all;
+ return 404;
+}
+
+# Deny access to .htaccess
+location ~ /\.ht {
+ deny all;
+ return 404;
+}
+```
+
+Kanboard `config.php` de:
+
+```php
+define('ENABLE_URL_REWRITE', true);
+```
+
+Yukarıdaki örneği kendi yapılandırmanıza göre uyarlayın.
+
+IIS yapılandırma örneği
+-------------------------
+
+1. IIS için Yeniden Yazma modülünü indirin ve yükleyin: [İndirme linki](http://www.iis.net/learn/extensions/url-rewrite-module/using-the-url-rewrite-module)
+2. Yükleme klasörünüzde bir web.config dosyası oluşturun:
+
+```xml
+<?xml version="1.0"?>
+<configuration>
+ <system.webServer>
+ <defaultDocument>
+ <files>
+ <clear />
+ <add value="index.php" />
+ </files>
+ </defaultDocument>
+ <rewrite>
+ <rules>
+ <rule name="Kanboard URL Rewrite" stopProcessing="true">
+ <match url="^(.*)$" ignoreCase="false" />
+ <conditions logicalGrouping="MatchAll">
+ <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
+ </conditions>
+ <action type="Rewrite" url="index.php" appendQueryString="true" />
+ </rule>
+ </rules>
+ </rewrite>
+ </system.webServer>
+</configuration>
+```
+
+Kanboard `config.php` de:
+
+```php
+define('ENABLE_URL_REWRITE', true);
+```
+
+Yukarıdaki örneği kendi yapılandırmanıza göre uyarlayın.
+
+
diff --git a/doc/tr_TR/notifications.markdown b/doc/tr_TR/notifications.markdown
new file mode 100644
index 00000000..0ded2077
--- /dev/null
+++ b/doc/tr_TR/notifications.markdown
@@ -0,0 +1,46 @@
+Bildirimler
+=============
+
+Kanboard, çeşitli kanallardan bildirimler gönderebilir:
+
+- E-posta
+- Web (Okunmamış mesajların listesi)
+
+Harici eklentiler Slack, Hipchat, Jabber veya herhangi bir sohbet sistemine bildirim göndermenizi sağlar.
+
+Yapılandırma
+-------------
+
+Her kullanıcının profilindeki bildirimleri etkinleştirmesi gerekir: **Kullanıcı Profili>Bildirimler**. Varsayılan olarak devre dışı bırakılmıştır.
+
+E-posta bildirimlerini almak için profilinizde geçerli bir e-posta adresine ihtiyacınız vardır ve uygulama, e-posta göndermek üzere yapılandırılmalıdır.
+
+![Notifications](screenshots/notifications.png)
+
+Favori bildirim yönteminizi seçebilirsiniz:
+
+- E-postalar
+- Web (aşağıya bakın)
+
+Üye olduğunuz her proje için aşağıdakilerle ilgili bildirim almayı seçebilirsiniz:
+
+- Tüm görevler
+- Sadece size verilen görevler için
+- Sadece sizin tarafınızdan yaratılan görevler için
+- Sadece sizin tarafınızdan yaratılan ve size verilen görevler için
+
+Ayrıca yalnızca bazı projeleri seçebilirsiniz, varsayılan olarak tüm üyelerinizin tamamı bu projelerdir.
+
+Web bildirimleri
+-----------------
+
+Web bildirimleri, gösterge tablosundan veya üstteki simgeden edinilebilir:
+
+![Web Notifications Icon](screenshots/web-notifications-icon.png)
+
+Bildirimler bir listede gösterilir, böylece tek tek bildirimi okundu olarak veya her şey olarak işaretleyebilirsiniz.
+
+![Web Notifications](screenshots/web-notifications.png)
+
+Bu şekilde e-postalar almadan bildirim alabilirsiniz.
+
diff --git a/doc/tr_TR/performances.markdown b/doc/tr_TR/performances.markdown
new file mode 100644
index 00000000..6400a622
--- /dev/null
+++ b/doc/tr_TR/performances.markdown
@@ -0,0 +1,39 @@
+Kanboard Performans
+=====================
+
+Yapılandırmanıza göre, bazı özellikler Kanboard kullanımını yavaşlatabilir.
+Varsayılan olarak, tüm işlemler eşzamanlıdır ve HTTP isteği ile aynı iş parçacığında gerçekleştirilir.
+Bu bir PHP kısıtlamasıdır.
+Ancak, bunu iyileştirmek mümkündür.
+
+Yüklediğiniz eklentilere bağlı olarak, harici servislerle iletişim kurmak yüzlerce milisaniyeden fazla hatta saniyeler sürebilir.
+Ana iş parçacığının engellenmesini önlemek için, bu işlemleri bir [arka plan çalışma](worker.markdown) havuzuna devretmek mümkündür.
+Bu kurulum, altyapınıza ek yazılım yüklemenizi gerektirir.
+
+Darboğazı nasıl tespit edebilirim?
+-----------------------------
+
+- Hata ayıklama modunu (debug mode) etkinleştir
+- Günlük dosyasını (log) izleyin
+- Kanboard'da bir şeyler yapın (örneğin bir görevi sürükleyip bırakın)
+- Tüm işlemler yürütme süresi ile günlüğe kaydedilir (HTTP istekleri, E-posta bildirimleri, SQL istekleri)
+
+E-posta bildirimlerinin hızını artırın
+---------------------------------
+
+SMTP metodunu harici bir sunucu ile kullanmak çok yavaş olabilir.
+
+Olası çözümler:
+
+- SMTP'yi hala kullanmak istiyorsanız arka plan çalışma metodunu kullanın
+- Postfix ile yerel bir e-posta geçişi kullanın ve "mail" aktarımı kullanın
+- E-posta göndermek için bir HTTP API kullanan bir e-posta sağlayıcısı kullanın (Sendgrid, Mailgun veya Postmark)
+
+Sqlite performansını geliştirin
+---------------------------
+
+Olası çözümler:
+
+- Eşzamanlılık (çok sayıda kullanıcı) çok olduğunda Sqlite kullanmayın, bunun yerine Postgres veya Mysql seçin
+- Sqlite'i paylaşılan bir NFS bağdaştırıcısı üzerinde kullanmayın
+- Zayıf IOPS'li bir diskte Sqlite kullanmayın, yerel SSD sürücülerini kullanmak her zaman tercih edilir
diff --git a/doc/tr_TR/plugin-directory.markdown b/doc/tr_TR/plugin-directory.markdown
new file mode 100644
index 00000000..946cc57c
--- /dev/null
+++ b/doc/tr_TR/plugin-directory.markdown
@@ -0,0 +1,16 @@
+Eklenti Dizini Yapılandırması
+==============================
+
+Eklentileri kullanıcı arayüzünden kurmak, güncellemek ve kaldırmak için şu gereksinimlere sahip olmanız gerekir:
+
+- Eklenti dizini, web sunucusu kullanıcısı tarafından yazılabilir olmalıdır
+- Zip uzantısı sunucunuzda mevcut olmalıdır
+- `PLUGIN_INSTALLER` yapılandırma parametresi `true` olarak ayarlanmalıdır
+
+Bu özelliği devre dışı bırakmak için yapılandırma dosyanızdaki PLUGIN_INSTALLER` değerini `false` olarak değiştirin.
+Dosya sistemi üzerindeki eklenti klasörünün izinlerini de değiştirebilirsiniz.
+
+Yalnızca yöneticilere kullanıcı arayüzünden eklentiler yüklemesine izin verilir.
+
+Varsayılan olarak, yalnızca Kanboard'un web sitesinde listelenen eklenti mevcuttur.
+
diff --git a/doc/tr_TR/plugins.markdown b/doc/tr_TR/plugins.markdown
new file mode 100644
index 00000000..2f3ec2a7
--- /dev/null
+++ b/doc/tr_TR/plugins.markdown
@@ -0,0 +1,47 @@
+Eklenti(Plugin) Geliştirme
+==================
+
+Not: Eklenti API'sı şu an **alfa olarak kabul edilmektedir**.
+
+Eklentiler, Kanboard'un temel işlevlerini genişletmek, özellikler eklemek, temalar oluşturmak veya varsayılan davranışı değiştirmek için kullanışlıdır.
+
+Eklenti yaratıcıları açıkça Kanboard'un uyumlu sürümlerini belirtmelidir. Kanboard'un dahili kodu zamanla değişebilir ve eklentiniz yeni sürümlerle test edilmelidir. Değişiklikler için lütfen [Değişiklik Günlüğü](https://github.com/kanboard/kanboard/blob/master/ChangeLog) kontrol edin.
+
+- [Eklenti oluşturma](plugin-registration.markdown)
+- [Eklenti kancalarını kullanma](plugin-hooks.markdown)
+- [Etkinlikler](plugin-events.markdown)
+- [Varsayılan uygulama davranışlarını geçersiz kıl](plugin-overrides.markdown)
+- [Eklentiler için transfer şemaları ekle](plugin-schema-migrations.markdown)
+- [Özel rutlar](plugin-routes.markdown)
+- [Yardımcı ekle](plugin-helpers.markdown)
+- [Posta aktarımları ekle](plugin-mail-transports.markdown)
+- [Bildirim türlerini ekle](plugin-notifications.markdown)
+- Otomatik işlemler ekle](plugin-automatic-actions.markdown)
+- [Meta verileri kullanıcılara, görevlere ve projelere ekleme](plugin-metadata.markdown)
+- [Kimlik doğrulama mimarisi](plugin-authentication-architecture.markdown)
+- [Kimlik doğrulama eklenti kaydı](plugin-authentication.markdown)
+- [Yetkilendirme mimarisi](plugin-authorization-architecture.markdown)
+- [Özel grup sağlayıcıları](plugin-group-provider.markdown)
+- [Dış-harici link sağlayıcıları](plugin-external-link.markdown)
+- [Dış görevler](plugin-external-tasks.markdown)
+- [Avatar sağlayıcıları ekle](plugin-avatar-provider.markdown)
+- [LDAP istemcisi](plugin-ldap-client.markdown)
+
+Eklentilere örnekler
+-------------------
+
+- [SMS İki-Kademeli Kimlik Doğrulaması](https://github.com/kanboard/plugin-sms-2fa)
+- [LDAP desteği ile Ters-Proxy Kimlik Doğrulaması](https://github.com/kanboard/plugin-reverse-proxy-ldap)
+- [Slack](https://github.com/kanboard/plugin-slack)
+- [Hipchat](https://github.com/kanboard/plugin-hipchat)
+- [Jabber](https://github.com/kanboard/plugin-jabber)
+- [Sendgrid](https://github.com/kanboard/plugin-sendgrid)
+- [Mailgun](https://github.com/kanboard/plugin-mailgun)
+- [Postmark](https://github.com/kanboard/plugin-postmark)
+- [Amazon S3](https://github.com/kanboard/plugin-s3)
+- [Bütçe planlaması](https://github.com/kanboard/plugin-budget)
+- [Kullanıcı zaman çizelgeleri](https://github.com/kanboard/plugin-timetable)
+- [Alt Görev Tahmini](https://github.com/kanboard/plugin-subtask-forecast)
+- [Otomatik İşlem örneği](https://github.com/kanboard/plugin-example-automatic-action)
+- [Tema eklentisi örneği](https://github.com/kanboard/plugin-example-theme)
+- [CSS eklentisi örneği](https://github.com/kanboard/plugin-example-css)
diff --git a/doc/tr_TR/postgresql-configuration.markdown b/doc/tr_TR/postgresql-configuration.markdown
new file mode 100644
index 00000000..27727919
--- /dev/null
+++ b/doc/tr_TR/postgresql-configuration.markdown
@@ -0,0 +1,51 @@
+Postgresql yapılandırması
+========================
+
+Varsayılan olarak Kanboard, verilerini depolamak için Sqlite'i kullanır, ancak Postgresql'i kullanmak da mümkündür.
+
+Gereksinimler
+------------
+
+- Postgresql >= 9.3
+- `pdo_pgsql` PHP uzantısı kurulmuş olmalı (Debian/Ubuntu: `apt-get install php5-pgsql`)
+
+Configuration
+-------------
+
+### `pgsql` komutu ile boş bir veritabanı oluşturun:
+
+```sql
+CREATE DATABASE kanboard;
+```
+
+### Bir yapılandırma dosyası oluşturun
+
+`config.php` dosyasında aşağıdaki şu değerler bulunmalıdır:
+
+```php
+<?php
+
+// PostgreSQL'i Sqlite yerine kullanmayı seçiyoruz
+// We choose to use Postgresql instead of Sqlite
+define('DB_DRIVER', 'postgres');
+
+// Mysql parameters
+define('DB_USERNAME', 'REPLACE_ME');
+define('DB_PASSWORD', 'REPLACE_ME');
+define('DB_HOSTNAME', 'REPLACE_ME');
+define('DB_NAME', 'kanboard');
+```
+
+Not: Ayrıca, `config.default.php` şablon dosyasını `config.php` olarak yeniden adlandırabilirsiniz.
+
+### SQL dökümünü-dump alma (alternatif yöntem)
+
+Başlangıçta bri kez, Kanboard her bir veritabanı geçiş işleminde tek tek çalışacak ve bu işlem konfigürasyonunuza göre biraz zaman alabilir.
+
+Sorunları veya olası zaman aşımlarını önlemek için, veritabanını doğrudan SQL şemasını içe aktararak başlatabilirsiniz:
+
+```bash
+psql -U postgres my_database < app/Schema/Sql/postgres.sql
+```
+
+`app/Schema/Sql/postgres.sql` dosyası, veritabanının son sürümünü gösteren bir SQL dökümüdür.
diff --git a/doc/tr_TR/project-configuration.markdown b/doc/tr_TR/project-configuration.markdown
new file mode 100644
index 00000000..793667fd
--- /dev/null
+++ b/doc/tr_TR/project-configuration.markdown
@@ -0,0 +1,42 @@
+Proje Ayarları
+================
+
+Sağ üstte bulunan **Ayarlar** menüsüne gidin, ardından soldaki **Proje ayarları** seçeneğini seçin.
+
+![Project settings](screenshots/project-settings.png)
+
+### Yeni projeler için varsayılan sütunlar
+
+Varsayılan sütun adlarını buradan değiştirebilirsiniz.
+Her zaman aynı sütunlara sahip projeler oluşturmanız yararlıdır.
+
+Her sütun adı virgül ile ayrılmalıdır.
+
+Varsayılan olarak, Kanboard şu sütun adlarını kullanır: Bekleme Listesi(Backlog), Hazır, İşlemde ve Tamamlandı.
+
+### Yeni projeler için varsayılan kategoriler
+
+Kategoriler uygulama için genel değildir, ancak bir projeye bağlıdır.
+Her proje farklı kategorilere sahip olabilir.
+
+Bununla birlikte, her zaman tüm projeleriniz için aynı kategorileri oluşturursanız, burada otomatik olarak oluşturulacak kategorilerin listesini tanımlayabilirsiniz.
+
+### Bir kullanıcı için aynı anda yalnızca bir alt görev almasına izin ver
+
+Bu seçenek etkinleştirildiğinde, bir kullanıcı o anda yalnızca bir alt görevle çalışabilir.
+
+Başka bir alt görev "devam ediyor" durumuna sahipse, kullanıcı bu iletişim kutusunu görür:
+
+![Subtask user restriction](screenshots/subtask-user-restriction.png)
+
+### Tetikleme otomatik olarak alt görev zamanı izleme
+
+- Bu seçenek etkinleştirilirse, bir alt görev durumu "devam ediyor" olarak değiştirildiğinde, zamanlayıcı otomatik olarak başlayacaktır.
+- Zaman izlemeyi kullanmıyorsanız bu seçeneği devre dışı bırakın.
+
+### Kümülatif akış diyagramında kapalı görevleri dahil et
+
+- Bu seçenek etkinleştirilirse, kapalı görevler kümülatif akış şemasına dahil edilir.
+- Bu seçenek devre dışı bırakılırsa, yalnızca açık görevler dahil edilir.
+- Bu seçenek tablonun "toplam" sütununu etkiler "project_daily_column_stats"
+
diff --git a/doc/tr_TR/project-permissions.markdown b/doc/tr_TR/project-permissions.markdown
new file mode 100644
index 00000000..2440f085
--- /dev/null
+++ b/doc/tr_TR/project-permissions.markdown
@@ -0,0 +1,23 @@
+Proje İzinleri
+===================
+
+Her proje birbirinden izole edilmiş ve birbirinden ayrılmıştır.
+Proje erişimine proje sahibi tarafından izin verilmelidir.
+
+Her kullanıcı ve her gruba ayrı bir rol atanabilir.
+[Projeler için roller]3 tür var(roles.markdown):
+
+- Proje Müdürü
+- Proje Üyesi
+- Proje Görüntüleyicisi
+
+Yalnızca yöneticilerin her şeye erişimi vardır.
+
+Rol atamaları ** Proje Ayarları> İzinler ** 'den ulaşılabilir:
+
+![Project Permissions](screenshots/project-permissions.png)
+
+Herkese izin vermeyi seçerseniz, tüm Kanboard kullanıcıları Proje Üyesi olarak değerlendirilecektir.
+Bu da artık rol yönetimi olmadığını gösterir. Kullanıcı veya grup başına izin kullanılamaz.
+
+Özel projeler izin tanımlayamaz.
diff --git a/doc/tr_TR/project-types.markdown b/doc/tr_TR/project-types.markdown
new file mode 100644
index 00000000..90dee0ab
--- /dev/null
+++ b/doc/tr_TR/project-types.markdown
@@ -0,0 +1,14 @@
+Proje Tipleri
+=============
+
+İki tür proje vardır:
+
+| Tip | Açıklama |
+|-------------------|-----------------------------------------------------------------------|
+| Takım Projesi | Kullanıcı ve grup yönetimi ile proje |
+| Özel proje | Yalnızca bir kişiye ait olan projede, kullanıcı yönetimi yoktur |
+
+- Yalnızca Yöneticiler ve Uygulama Yöneticileri ekip projeleri oluşturabilir.
+- Özel projeler herkes tarafından oluşturulabilir.
+
+[Kanboard'daki rollerle ilgili belgeleri okuyun](roles.markdown)
diff --git a/doc/tr_TR/project-views.markdown b/doc/tr_TR/project-views.markdown
new file mode 100644
index 00000000..5898bcdf
--- /dev/null
+++ b/doc/tr_TR/project-views.markdown
@@ -0,0 +1,58 @@
+Pano, Takvim ve Liste Görünümleri
+==============================
+
+Her bir proje için, görevler birkaç görünümle görselleştirilebilir: **Pano, Takvim ve Liste ve Gantt**.
+Her görünüm en üstteki filtre kutusunun sonucunu gösterir.
+Arama motoru[gelişmiş sözdizimini-syntax](search.markdown) kullanır.
+
+Pano Görünümü
+----------
+
+![Pano Görünümü](screenshots/board-view.png)
+
+- Bu görünümle, sütunlar arasında görevleri sürükleyip bırakabilirsiniz.
+- Pano görünümüne geçmek için klavye kısayolunu da kullanabilirsiniz: **"v b"**.
+- Bir gölge Görevler son anlarda değiştirilir.
+
+![Pano Görev Sınırı](screenshots/board-task-limit.png)
+
+Bir sütun için görev sınırına ulaşıldığında arka plan kırmızı olur. Yani, aynı anda çok fazla görev devam ediyor demektir.
+
+[Pano yapılandırması hakkında daha fazla bilgi edinin](board-configuration.markdown)
+
+Takvim Görünümü
+--------------
+
+![Takvim görünümü](screenshots/calendar-view.png)
+
+- Bu görünümle, görevleri vade tarihleriyle görselleştirebilirsiniz.
+- Ayarlara bağlı olarak, devam eden görevleri de görebilirsiniz.
+- Takvim görünümüne geçmek için klavye kısayolunu da kullanabilirsiniz: **"v c"**.
+- [Takvim yapılandırması hakkında daha fazla bilgi edinin](calendar-configuration.markdown)
+
+Liste Görünümü
+---------
+
+![Liste görünümü](screenshots/list-view.png)
+
+- Bu görünümde, aramanızın tüm sonuçları bir tabloda gösterilir.
+- Liste görünümüne geçmek için klavye kısayolunu da kullanabilirsiniz: **"v l"**.
+
+Gantt Görünümü
+----------
+
+![Gantt görünümü](screenshots/gantt-view.png)
+
+- Gantt görünümü görevleri yatay bir zaman çizelgesinde görüntüler
+- Grafiği görüntülemek için başlangıç tarihi ve bitiş tarihi kullanılır
+- Hızlı erişim için klavye kısayolunu kullanın: **v g**
+
+Proje Görünümü
+----------------
+
+![Proje görünümü](screenshots/project-view.png)
+
+- Projenin açıklamasını görüntüleyin
+- Belgelerin projeye eklenmesi ve yüklenmesi
+- Proje üyelerinin listesini görüntülenmesi
+- Projenin son faaliyetlerini görüntüleyin
diff --git a/doc/tr_TR/recurring-tasks.markdown b/doc/tr_TR/recurring-tasks.markdown
new file mode 100644
index 00000000..29357323
--- /dev/null
+++ b/doc/tr_TR/recurring-tasks.markdown
@@ -0,0 +1,25 @@
+Tekrar eden görevler
+===============
+
+Kanban metodolojisine uymak için, tekrar eden görevler bir tarih tabanında değil, panoda olaylara dayanır.
+
+- Seçilen olaylar gerçekleştiğinde, tekrar eden görevler panonun ilk sütununa kopyalanır
+- Teslim tarihi otomatik olarak yeniden hesaplanabilir
+- Her görev, onu oluşturan üst görevin görev no(id) ve oluşturulmuş alt görevin kaydını tutar
+
+
+Yapılandırma
+-------------
+
+Görev görünüm sayfasına gidin veya panodaki açılır menüyü kullanın, ardından ** Tekrarı düzenleyin** seçeneğini belirleyin.
+
+![Recurring task](screenshots/recurring-tasks.png)
+
+Halen yeni tekrar eden bir görev oluşturan 3 tetikleyici vardır:
+
+- Bir görevi ilk sütundan taşıma
+- Görevin son sütuna taşınması
+- Görevi kapatmak
+
+Son tarihler, mevcut görev üzerinde ayarlanmışsa, verilen gün, ay veya yıl faktörü ile yeniden hesaplanabilir.
+Yeni vade tarihinin hesaplanması için temel tarih, mevcut vade tarihi veya işlem tarihi olabilir.
diff --git a/doc/tr_TR/removing-projects.markdown b/doc/tr_TR/removing-projects.markdown
new file mode 100644
index 00000000..cf3bf78b
--- /dev/null
+++ b/doc/tr_TR/removing-projects.markdown
@@ -0,0 +1,10 @@
+Projeleri Kaldırma
+=================
+
+Bir projeyi kaldırmak için, projenin müdürü veya yönetici olmanız gerekir.
+
+**"Proje ayarları"** 'na gidin ve sol taraftaki menüden, en alttaki **"Kaldır"** seçeneğini seçin.
+
+![Removing Projects](screenshots/project-remove.png)
+
+Bir projeyi kaldırmak, bu projeye ait tüm görevleri kaldırır.
diff --git a/doc/tr_TR/requirements.markdown b/doc/tr_TR/requirements.markdown
new file mode 100644
index 00000000..32edce00
--- /dev/null
+++ b/doc/tr_TR/requirements.markdown
@@ -0,0 +1,108 @@
+Gereksinimler
+============
+
+Sunucu tarafı
+-----------
+
+### Uyumlu İşletim Sistemleri
+
+| İşletim sistemi |
+|--------------------------------------|
+| Linux Ubuntu Xenial Xerus 16.04 LTS |
+| Linux Ubuntu Trusty 14.04 LTS |
+| Linux Centos 6.x |
+| Linux Centos 7.x |
+| Linux Redhat 6.x |
+| Linux Redhat 7.x |
+| Linux Debian 8 |
+| FreeBSD 10.x |
+| Microsoft Windows 2012 R2 |
+| Microsoft Windows 2008 |
+
+### Uyumlu Veritabanları
+
+| Veritabanı |
+|--------------------|
+| Sqlite 3.x |
+| Mysql >= 5.5 |
+| MariaDB >= 10 |
+| Postgresql >= 9.3 |
+
+Hangi veritabanı seçmeli?
+
+| Tip | Kullanımı |
+|-----------------|------------------------------------------------------------|
+| Sqlite | Tek kullanıcı veya küçük ekip (neredeyse eşzamanlılık yok) |
+| Mysql/Postgres | Daha büyük ekip, yüksek erişilebilirlik yapılandırması |
+
+Sqlite'i NFS bağlarken kullanmayın; yalnızca hızlı G/Ç - I/O ile bir diskiniz olduğunda.
+
+### Uyumlu Web Sunucuları
+
+| WWeb Sunucu |
+|--------------------|
+| Apache HTTP Server |
+| Nginx |
+| Microsoft IIS |
+
+Kanboard, Apache ile çalışacak şekilde önceden yapılandırılmıştır (URL yeniden yazımı).
+
+### PHP Versionları
+
+| PHP Version |
+|----------------|
+| PHP >= 5.3.9 |
+| PHP 5.4 |
+| PHP 5.5 |
+| PHP 5.6 |
+| PHP 7.x |
+
+### Gerekli PHP Eklentileri
+
+| PHP Eklentisi | Not |
+|----------------------------|--------------------------------------|
+| pdo_sqlite | Sadece Sqlite kullanıyorsanız |
+| pdo_mysql | Sadece Mysql/MariaDB kullanıyorsanız |
+| pdo_pgsql | Sadece Postgres kullanıyorsanız |
+| gd | |
+| mbstring | |
+| openssl | |
+| json | |
+| hash | |
+| ctype | |
+| session | |
+| ldap | Yalnızca LDAP kimlik doğrulaması için|
+| Zend OPcache | Tavsiye edilen |
+
+### İsteğe bağlı PHP Eklentileri
+
+| PHP Eklentisi | Not |
+|----------------------------|--------------------------------------------------|
+| zip | Kanboard'dan eklentileri kurmak için kullanılır |
+
+### Tavsiyeler
+
+- Modern Linux veya Unix işletim sistemi.
+- En iyi performanslar OPcode önbellekleme etkinleştirilmiş haliyle PHP'nin en son sürümü ile elde edilmiştir.
+
+İstemci-Client tarafı
+-----------
+
+### Tarayıcı-Browsers
+
+Mümkünse daima en yeni sürümü olan modern bir tarayıcı kullanın:
+
+| Tarayıcı |
+|---------------------------------------|
+| Safari |
+| Google Chrome |
+| Mozilla Firefox |
+| Microsoft Internet Explorer >= 11 |
+| Microsoft Edge |
+
+### Cihazlar-PC ler
+
+| Cihaz | Ekran çözünürlüğü |
+|------------------------|--------------------|
+| Dizüstü veya masaüstü | >= 1366 x 768 |
+| Tablet | >= 1024 x 768 |
diff --git a/doc/tr_TR/reverse-proxy-authentication.markdown b/doc/tr_TR/reverse-proxy-authentication.markdown
new file mode 100644
index 00000000..56c9b1fb
--- /dev/null
+++ b/doc/tr_TR/reverse-proxy-authentication.markdown
@@ -0,0 +1,66 @@
+Ters-Reverse Proxy Kimlik Doğrulaması
+============================
+
+Bu kimlik doğrulama yöntemi genellikle büyük kuruluşlar için [SSO](http://en.wikipedia.org/wiki/Single_sign-on) (Tek Oturum Açma/Single Sign-On) için kullanılır.
+
+Kimlik doğrulama başka bir sistem tarafından yapılır, Kanboard şifrenizi bilmiyor ve siz zaten kimliği doğrulanmış olduğunu varsayalım.
+
+Gereksinimler
+------------
+
+- İyi yapılandırılmış bir ters proxy
+
+veya
+
+- Aynı sunucuda Apache Kimliği
+
+
+Bu nasıl çalışıyor?
+-------------------
+
+1. Geri vekiliniz, kullanıcının kimliğini doğrular ve kullanıcı adını bir HTTP üstbilgisi aracılığıyla gönderir.
+2. Kanboard talepten kullanıcı adını alır
+ - Kullanıcı gerekirse otomatik olarak oluşturulur
+ - Geçerli olduğunu varsayan herhangi bir istemeden yeni bir Kanboard oturumu açın
+
+Kurulum Talimatları
+-------------------------
+
+### Ters proxy ayarlarınızı yapma
+
+Bu, bu dokümantasyon kapsamında değildir.
+Kullanıcı girişinin bir HTTP üstbilgisi kullanarak ters proxy tarafından gönderildiğini kontrol etmeli ve bunlardan hangisinin olduğunu öğrenmelisin.
+
+### Kanboard'u Kurma
+
+Özel bir `config.php` dosyası oluşturun veya `config.default.php` dosyasını kopyalayın:
+
+
+```php
+<?php
+
+// Enable/disable reverse proxy authentication
+define('REVERSE_PROXY_AUTH', true); // Set this value to true
+
+// The HTTP header to retrieve. If not specified, REMOTE_USER is the default
+define('REVERSE_PROXY_USER_HEADER', 'REMOTE_USER');
+
+// The default Kanboard admin for your organization.
+// Since everything should be filtered by the reverse proxy,
+// you should want to have a bootstrap admin user.
+define('REVERSE_PROXY_DEFAULT_ADMIN', 'myadmin');
+
+// The default domain to assume for the email address.
+// In case the username is not an email address, it
+// will be updated automatically as USER@mydomain.com
+define('REVERSE_PROXY_DEFAULT_DOMAIN', 'mydomain.com');
+```
+
+Notlar:
+
+- Proxy, Kanboard'u çalıştıran aynı web sunucusuysa, [CGI protokolü](http://www.ietf.org/rfc/rfc3875) uyarınca, başlık adı `REMOTE_USER` olacaktır. Örnek olarak, Apache, `Require valid-user` parametresi ayarlanmışsa varsayılan olarak `REMOTE_USER` ekler.
+
+- Apache, Kanboard çalıştıran başka bir Apache için bir ters proxy ise, `REMOTE_USER` başlığı ayarlanmamıştır (IIS ve Nginx ile aynı davranış).
+
+- Gerçek bir ters proxyğiniz varsa, [HTTP ICAP taslağı](http://tools.ietf.org/html/draft-stecher-icap-subid-00#section-3.4) üstbilgisini `X-Authenticated-User` Kimliği Doğrulanmış Kullanıcı. Bu fiili standart birçok araç tarafından benimsenmiştir.
+
diff --git a/doc/tr_TR/roles.markdown b/doc/tr_TR/roles.markdown
new file mode 100644
index 00000000..98859bc0
--- /dev/null
+++ b/doc/tr_TR/roles.markdown
@@ -0,0 +1,26 @@
+Kullanıcı Rolleri
+==========
+
+Uygulama Rolleri
+-----------------
+
+Her Kanboard kullanıcısı bu rollerden birine sahiptir:
+
+| Rol | Açıklama |
+|------------|---------------------------------------------------------------------------|
+| Yönetici | Her şeye erişim |
+| Müdür | Ekip projeleri oluşturabilir, ancak uygulama ayarlarını değiştiremezsiniz |
+| Kullanıcı | Sadece özel projeler yaratabilir |
+
+Proje Rolleri
+-------------
+
+Her bir proje ekip projesi her kullanıcıya ve gruba farklı bir rol atayabilir:
+
+| Rol | Açıklama |
+|---------------------|---------------------------------------------------------------------------|
+| Proje Müdürü | Proje ayarlarını değiştirebilir, Gantt grafiğine ve raporlara erişebilir |
+| Proje Üyesi | Görevler oluşturabilir ve panoyu kullanabilir |
+| Proje Görüntüleyici | Panoya ve görevlere salt okunur |
+
+Kullanıcılara bir dizi kısıtlama uygulamak için özel proje rolleri oluşturulabilir.
diff --git a/doc/tr_TR/rss.markdown b/doc/tr_TR/rss.markdown
new file mode 100644
index 00000000..6ee95c7a
--- /dev/null
+++ b/doc/tr_TR/rss.markdown
@@ -0,0 +1,24 @@
+RSS / Atom abonelikleri
+======================
+
+Kanboard, projeler ve kullanıcılar için RSS yayınlarını desteklemektedir.
+
+- Proje akışları yalnızca projenin aktivitesini içerir
+- Kullanıcı akışları, kullanıcının üye olduğu tüm projelerin etkinlik akışını içeriyor
+
+Bu abonelikler, yalnızca kullanıcı profilinde veya proje ayarlarında genel erişim etkinleştirildiğinde etkinleştirilir.
+
+Proje RSS yayınlarını etkinleştir / devre dışı bırak
+--------------------------------
+
+**Proje ayarları> Herkese açık erişim** 'e gidin.
+
+![Disable public access](screenshots/project-disable-sharing.png)
+
+Kullanıcı RSS yayınlarını etkinleştir / devre dışı bırak
+--------------------------------
+
+
+**Kullanıcı profili> Herkese açık erişim** seçeneğine gidin.
+
+RSS bağlantısı rastgele bir belirteç-token tarafından korunuyor, yalnızca URL'yi bilen insanlar özet akışına erişebilir.
diff --git a/doc/tr_TR/screenshots.markdown b/doc/tr_TR/screenshots.markdown
new file mode 100644
index 00000000..e7b30ab5
--- /dev/null
+++ b/doc/tr_TR/screenshots.markdown
@@ -0,0 +1,25 @@
+Ekran görüntüleri ekleme
+==================
+
+Zaman kazanmak için görüntüleri doğrudan Kanboard'a kopyalayıp yapıştırabilirsiniz.
+Bu görüntüler göreve ek olarak yüklenir.
+
+Bu, örneğin, bir sorunu tarif etmek için ekran görüntülerinin alınması için özellikle yararlıdır.
+
+Açılır menüye tıklayarak veya görev görünümü sayfasında doğrudan ekran görüntüleri ekleyebilirsiniz.
+
+![Drop-down screenshot menu](screenshots/dropdown-screenshot.png)
+
+Yeni bir görüntü eklemek için ekran görüntüsünü alın ve CTRL+V veya Command+V ile yapıştırın:
+
+![Screenshot page](screenshots/task-screenshot.png)
+
+Mac OS X'te ekran görüntüleri almak için şu klavye kısayolları kullanabilirsiniz:
+
+- Command-Control-Shift-3: Ekranın ekran görüntüsünü alın ve kopya panoya kaydedin
+- Command-Control-Shift-4, sonra bir alan seçin: Alanın ekran görüntüsünü alın ve panoya kaydedin.
+- Command-Control-Shift-4, daha sonra boşluk bırakın, sonra bir pencereyi tıklatın: Bir pencerenin ekran görüntüsünü alın ve panoya kaydedin
+
+Ek açıklamaları ve şekilleri içeren ekran görüntüleri almak için kullanılabilecek birkaç üçüncü taraf uygulaması da vardır.
+
+**Not: Bu özellik tüm tarayıcılarda çalışmaz.** Şu hata yüzünden Safari ile çalışmaz:https://bugs.webkit.org/show_bug.cgi?id=49141
diff --git a/doc/tr_TR/search.markdown b/doc/tr_TR/search.markdown
new file mode 100644
index 00000000..f810ad5c
--- /dev/null
+++ b/doc/tr_TR/search.markdown
@@ -0,0 +1,189 @@
+Gelişmiş Arama Sözdizimi(Kodları)
+======================
+
+Kanboard, gelişmiş arama için basit bir sorgu dili kullanıyor.
+Görevler, yorumlar, alt görevler, bağlantılar ile aynı zamanda etkinlik akışında da arama yapabilirsiniz.
+
+Sorgu örneği
+----------------
+
+Bu örnek, yarın için bir bitiş tarihi ve "başlığım" ı içeren bir başlık ile bana atanan tüm görevleri geri alacaktır:
+
+```
+assigne:me due:tomorrow başlığım
+```
+
+Genel arama
+-------------
+
+### Görev kimliği veya başlığa göre arama
+
+- Görev kimliği ile ara: `#123`
+- Görev kimliği ve görev başlığına göre ara: `123`
+- Görev başlığına göre ara: herhangi bir arama nitelikleriyle eşleşmeyen herhangi bir şey
+
+### Duruma göre ara
+
+Özellik: **status**
+
+- Açık görevleri bulmak için sorgu: `status:open`
+- Kapatılan görevleri bulmak için sorgu: `status:closed`
+
+### Devralan göre ara
+
+Özellik: **assignee**
+
+- Tam adıyla sorgu: `assignee:"Frederic Guillot"`
+- Kullanıcı adı ile sorgu: `assignee:fguillot`
+- Birden fazla atanan arama: 'assignee:user1 assignee:"John Doe"
+- Atanmamış görevler için sorgu: 'assignee:nobody'
+- Görevlerimin sorgulanması: 'assignee:me`
+
+### Görev yaratıcısına göre ara
+
+Özellik: **creator**
+
+- Benim tarafından oluşturulan görevler: `creator:me`
+- John Doe tarafından oluşturulan görevler: `creator:"John Doe"`
+- Kullanıcı no #1 tarafından oluşturulan görevler: `creator:1`
+
+### Alt görev atayan tarafından arama yapın
+
+Özellik: **subtask:assignee**
+
+- Örnek: `subtask:assignee:"John Doe"`
+
+### Renk ile ara
+
+Özellik: **color**
+
+- Renk kimliği ile arama yapmak için sorgu: `color:mavi`
+- Renk adına göre arama yapmak için sorgu: `color:"Oranj"`
+
+### Vadesine göre ara
+
+Özellik: **due**
+
+- Bugünkü görevler için arama yapın: `due:today`
+- Yarınki görevler için arama yapın: `due:tomorrow`
+- Dünkü görevler için arama yapın: `due:yesterday`
+- Tam tarihi olan görevlerde arama yapın: `due:2015-06-29`
+
+Tarihin ISO 8601 biçimi ile kullanması gerekir: **YYYY-MM-DD**.
+
+`strtotime ()` işlevi tarafından desteklenen tüm dize formatları desteklenmektedir, örneğin `next Thursday`,` -2 days`, `+2 months`, `tomorrow`, vb.
+
+Tarih ile desteklenen operatörler:
+
+- Bundan büyük: **due:>2015-06-29**
+- Bundan küçük: **due:<2015-06-29**
+- Bundan büyük veya eşit: **due:>=2015-06-29**
+- Bundan küçük veya eşit: **due:<=2015-06-29**
+
+### Değiştirilme tarihine göre ara
+
+Özellik: **modified** or **updated**
+
+Tarih biçimleri son tarihle aynıdır.
+
+Yakın zamanda değiştirilmiş görevlerde aynı zamanda bir filtre var:: `modified:recently`.
+
+Bu sorgu, ayarlarda yapılandırılan pano vurgulama dönemiyle aynı değeri kullanacaktır.
+
+### Oluşturma tarihine göre ara
+
+Özellik: **created**
+
+Değiştirme tarihi sorguları aynı şekilde çalışır.
+
+### Başlangıç tarihine göre ara
+
+Özellik: **started**
+
+### Açıklamaya göre ara
+
+Özellik: **description** veya **desc**
+
+Örnek: `description:"metin arama"`
+
+### Dış referansa göre ara
+
+Görev referansı, görevinizin harici bir kimliği, örneğin başka bir yazılımdan gelen bir bilet numarasıdır.
+
+- Görevleri referans ile bulun: `ref:1234` veya `reference:TICKET-1234`
+
+### Kategoriye göre ara
+
+Özellik: **category**
+
+- Görevleri belirli bir kategori ile bulun: `category:"Feature Request"`
+- Bu kategorilere sahip tüm görevleri bulun: `category:"Bug" category:"İyileştirmeler"`
+- Hiçbir kategori atanmamış görevler bulun: `category:none`
+
+### Projeye göre ara
+
+Özellik: **project**
+
+- Görevleri proje adına göre bulun: `project:"Benim proje adım"`
+- Görevleri proje idine göre bulun: `project:23`
+- Çeşitli projeler için görevler bulun: `project:"Benim projem A" project:"Benim projem B"`
+
+### Sütunlara göre ara
+
+Özellik: **column**
+
+- Görevleri sütun adına göre bul: `column:" Devam eden işler"`
+- Birkaç sütun için görevler bulun: `column:"Backlog" column:hazır`
+
+### Kulvar (Swim-lane) lara göre ara
+
+Özellik: **swimlane**
+
+- Görevleri kulvarlara(swim-lane) göre ara: `swimlane:"Version 42"`
+- Görevleri default kulvarlar (swim-lane) göre ara: `swimlane:default`
+- Çeşitli kulvarlar (swim-lanes) için görev ara: `swimlane:"Version 1.2" swimlane:"Version 1.3"`
+
+### Görev bağlantısı ile arama
+
+Özellik: **link**
+
+- Görevleri bağlantı adına göre bulma: `link:"is a milestone of"`
+- Görevleri birkaç bağlantıya bul: `link:"is a milestone of" link:"relates to"`
+
+### Yorumlara göre ara
+
+Özellik: **comment**
+
+- Bu başlık içeren yorumları bulun: `comment:"Yorum mesajım"`
+
+### Etiketlere göre ara
+
+Özellik: **tag**
+
+- Örnek: `tag:"Etiketim"`
+
+Etkinlik akışı arama
+----------------------
+
+### Görev başlıklarına göre etkinlik arama
+
+Özellik: **title** veya yok (varsayılan)
+
+- Örnek: `title:"Benim Görevim"`
+- Görev no ile ara: `#123`
+
+### Görev durumuna göre olayları arama
+
+Özellik: **status**
+
+### Olay yaratıcısı tarafından arayın
+
+Özellik: **creator**
+
+### Olay oluşturma tarihine göre ara
+
+Özellik: **created**
+
+### Etkinlikleri projeye göre ara
+
+Özellik: **project**
diff --git a/doc/tr_TR/sharing-projects.markdown b/doc/tr_TR/sharing-projects.markdown
new file mode 100644
index 00000000..6e0bda37
--- /dev/null
+++ b/doc/tr_TR/sharing-projects.markdown
@@ -0,0 +1,35 @@
+Pano ve görev paylaşımı
+========================
+
+Varsayılan olarak, panolar özel durumdadır, ancak panoyu herkese açık yapmak mümkündür.
+
+Bir genel kurul **değiştirilemez; salt-okunur bir erişimdir**.
+Bu erişim rasgele belirteç (random token) tarafından korunur, yalnızca doğru URL'ye sahip kullanıcılar panoyu görebilir.
+
+Genel panolar her 60 saniyede bir otomatik olarak yenilenir.
+Görev ayrıntıları salt okunur haldedir.
+
+Kullanım örnekleri:
+
+- Panonuzu kuruluşunuz dışındaki biriyle paylaşın
+- Panoyu ofiste geniş bir ekranda görüntüle
+
+Herkese açık erişimi etkinleştir
+--------------------
+
+Projenizi seçin, ardından "Herkese açık erişim" i tıklayın ve "Herkese açık erişimi etkinleştir" düğmesini tıklayın.
+
+![Enable public access](screenshots/project-enable-sharing.png)
+
+Genel erişim etkinleştirildiğinde, birkaç bağlantı oluşturulur:
+
+- Genel pano görünümü
+- RSS beslemesi abonelik bağlantısı
+- iCalendar abonelik bağlantısı
+
+![Disable public access](screenshots/project-disable-sharing.png)
+
+Ayrıca, herkese açık erişimi istediğiniz zaman devre dışı bırakabilirsiniz.
+
+Her seferinde, kamu erişimini etkinleştirir veya devre dışı bırakırsanız, yeni bir rastgele belirteç (random token) üretilir.
+** Önceki bağlantıları artık çalışmayacak **.
diff --git a/doc/tr_TR/solving-blank-page-issue.markdown b/doc/tr_TR/solving-blank-page-issue.markdown
new file mode 100644
index 00000000..8a397c84
--- /dev/null
+++ b/doc/tr_TR/solving-blank-page-issue.markdown
@@ -0,0 +1,7 @@
+Kanboard'u yükledikten veya yükselttikten sonra boş bir sayfa alıyorum
+=========================================================
+
+- Tüm gereksinimleri sunucunuza yüklediniz mi kontrol edin
+- PHP ve Apache hata günlüklerini kontrol edin
+- Dosyaların doğru izinlere sahip olup olmadığını kontrol edin
+- Agresif bir OPcode önbellekleme kullanıyorsanız, web sunucunuzu veya php-fpm'yi yeniden yükleyin
diff --git a/doc/tr_TR/solving-database-migration-issues.markdown b/doc/tr_TR/solving-database-migration-issues.markdown
new file mode 100644
index 00000000..4e929ae6
--- /dev/null
+++ b/doc/tr_TR/solving-database-migration-issues.markdown
@@ -0,0 +1,23 @@
+Veritabanlar Arası Transfer Sorunlarını Çözme
+=================================
+
+- Kanboard'u yeni bir sürüme yükselttiğinizde, SQL transferleri(migrations) otomatik olarak yürütülür
+- Postgres ve MySQL için geçerli şema sürüm numarası `schema_version` tablosunda saklanır ve Sqlite için bu değişken ` user_version` değişkeninde saklanır
+- Transfer(migrations) dosyaları `app/Schema/<DatabaseType>.php` dosyasında tanımlanır
+- Her işlev bir transfer işlemidir
+- Her transfer, bir işlemde yürütülür
+- Transfer işleminde bir hata oluşturursa geri alma gerçekleştirilir
+
+Yeni sürüme geçerken:
+
+- Daima verilerinizi yedekleyin
+- Transfer işlemlerini birden çok işlemden paralel olarak çalıştırmayın
+
+"SQL geçişleri çalıştırılamadı [...]" hatası alıyorsanız, el ile düzeltme adımları şunlardır:
+
+1. Veritabanınıza karşılık gelen dosyayı açın `app/Schema/Sqlite.php` veya `app/Schema/Mysql.php`
+2. Başarısız transfer işlevine gidin
+3. İşlevde tanımlanan SQL sorgularını manuel olarak çalıştırın
+4. Bir hata ile karşılaşırsanız, sorunu tam hata ile birlikte hata izleyicisine bildirin
+5. Transferin tüm SQL deyimleri yürütüldüğünde, şema sürüm numarasını güncelleyin
+6. Diğer transfer işlemlerini çalıştırın
diff --git a/doc/tr_TR/solving-session-issue-windows-iis-ie.markdown b/doc/tr_TR/solving-session-issue-windows-iis-ie.markdown
new file mode 100644
index 00000000..c3bc57a8
--- /dev/null
+++ b/doc/tr_TR/solving-session-issue-windows-iis-ie.markdown
@@ -0,0 +1,19 @@
+Internet Explorer ve Microsoft IIS ile oturum açamıyorum
+==============================================================
+
+Eğer giriş yapamıyorsanız ve her zaman doğru kimlik bilgilerini girmiş olsanız bile **"Kullanıcı adı veya parola gerekli" ** hatasını alırsanız,
+Oturumda bir sorun olduğu anlamına gelir.
+
+Örneğin, bu kriterler ile karşılarsanız, bu bilinen bir sorundur:
+
+- Alt çizgi içeren bir alan adı kullanıyorsanız: `kanboard_something.mycompany.tld`
+- Microsoft Windows Server ve IIS kullanıyorsanız
+- Tarayıcınız Internet Explorer ise
+
+Çözüm: **Etki alanı adında altçizgi kullanmayın; çünkü bu geçerli bir alan adı değildir**.
+
+Açıklama: Internet Explorer geçersiz kılınmış alan adlarına sahip çerezleri kabul etmiyor çünkü bu geçerli değil.
+
+Referans:
+
+- https://support.microsoft.com/en-us/kb/316112
diff --git a/doc/tr_TR/sqlite-database.markdown b/doc/tr_TR/sqlite-database.markdown
new file mode 100644
index 00000000..e092ea8e
--- /dev/null
+++ b/doc/tr_TR/sqlite-database.markdown
@@ -0,0 +1,52 @@
+Sqlite veritabanı yönetimi
+==========================
+
+Kanboard, verilerini depolamak için varsayılan olarak Sqlite kullanır.
+Tüm görevler, projeler ve kullanıcılar bu veritabanında saklanır.
+
+Teknik olarak, veritabanı `data` dizini içinde bulunan ve `db.sqlite` olarak adlandırılan tek bir dosyadır.
+
+Dışa Aktar/Yedekle
+-------------
+
+### Komut satırı
+
+Yedekleme yapmak çok kolay, kimsenin yazılımı kullanmadığı zaman `data/db.sqlite` dosyasını başka bir yere kopyalamalısın.
+
+### Kullanıcı arayüzü
+
+Veritabanını istediğiniz zaman **ayarlar** menüsünden indirebilirsiniz.
+
+İndirilen veritabanı Gzip ile sıkıştırılır, dosya adı `db.sqlite.gz` olur.
+
+İthalat/Restorasyon
+------------------
+
+Veritabanını kullanıcı arabiriminden geri yüklemenin hiçbir yolu yoktur.
+Restorasyon, herhangi bir vücut yazılımı kullanmadığında manuel olarak yapılmalıdır.
+
+- Eski bir yedeklemeyi geri yüklemek için `data/db.sqlite` dosyasını değiştirin ve üzerine kaydedin.
+- Sıkıştırılmış bir veritabanını açmak için, terminalde bu komutu; `gunzip db.sqlite.gz` çalıştırın.
+
+Optimizasyon
+------------
+
+Bazen, `VACUUM` komutu çalıştırarak veritabanı dosyasını optimize etmek mümkündür.
+Bu komut, tüm veritabanını yeniden oluşturur ve çeşitli nedenlerle kullanılabilir:
+
+- Dosya boyutunu küçült, verileri silerek boş alan yarat, ancak dosya boyutunu değiştirmez.
+- Veritabanı sık eklemeler veya güncellemeler nedeniyle parçalanmış.
+
+### Komut satırından
+
+```
+sqlite3 data/db.sqlite 'VACUUM'
+```
+
+### Kullanıcı arayüzünden
+
+**ayarlar** menüsüne gidin ve **Veritabanını optimize et** linkine tıklayın.
+
+Daha fazla bilgi için [Sqlite belgeler](https://sqlite.org/lang_vacuum.html).
+
+
diff --git a/doc/tr_TR/subtasks.markdown b/doc/tr_TR/subtasks.markdown
new file mode 100644
index 00000000..11726089
--- /dev/null
+++ b/doc/tr_TR/subtasks.markdown
@@ -0,0 +1,44 @@
+Alt Görevler
+========
+
+Alt görevler bir görevin işini bölmek için yararlıdır.
+
+Her alt görev:
+
+- Bir proje üyesine atanabilir
+- 3 farklı duruma sahip: **Yapılacak**, **Devam ediyor**, **Bitti**
+- Zaman bilgileri bulundurun: **geçen süre** ve **tahmini süre**
+- Pozisyona göre sıralanır
+
+Alt görevler oluşturma
+-----------------
+
+Görev görünümünden, sol kenar çubuğunda **Bir alt görev ekle** seçeneğine tıklayın:
+
+![Add a subtask](screenshots/add-subtask.png)
+
+Ayrıca, yalnızca başlığı girerek bir alt görev ekleyebilirsiniz:
+
+![Add a subtask from the task view](screenshots/add-subtask-shortcut.png)
+
+Alt görev durumunu değiştir
+---------------------
+
+Alt görev başlığına tıkladığınızda durum değişir:
+
+![Subtask in progress](screenshots/subtask-status-inprogress.png)
+
+Başlıktan önceki simge duruma göre güncellenir.
+
+![Subtask done](screenshots/subtask-status-done.png)
+
+Not: Görev kapatıldığında, tüm alt görevler **Bitti** durumuna değiştirilir.
+
+Alt görev zamanlayıcı
+-------------
+
+- Bir alt görev her gerçekleştirildiğinde, zamanlayıcı da başlatılır. Zamanlayıcı, herhangi bir zamanda başlatılabilir ve durdurulabilir.
+- Süreölçer, alt görev için geçen süreyiotomatik olarak kaydeder. Bir alt görev düzenlediğinizde geçen süre alanının değerini manuel olarak değiştirebilirsiniz.
+- Hesaplanan süre, en yakın çeyreğe yuvarlanır. Bu bilgi ayrı bir tabloda kaydedilmiştir.
+- Geçen süre ve tahmini süre, tüm alt görevlerin toplamına göre otomatik olarak güncellenir.
+
diff --git a/doc/suse-installation.markdown b/doc/tr_TR/suse-installation.markdown
index 788b4fce..b6aee5b6 100644
--- a/doc/suse-installation.markdown
+++ b/doc/tr_TR/suse-installation.markdown
@@ -1,4 +1,4 @@
-Installation on OpenSuse
+OpenSuse kurulumu
========================
OpenSuse Leap 42.1
diff --git a/doc/tr_TR/swimlanes.markdown b/doc/tr_TR/swimlanes.markdown
new file mode 100644
index 00000000..212431bf
--- /dev/null
+++ b/doc/tr_TR/swimlanes.markdown
@@ -0,0 +1,31 @@
+Kulvarlar
+=========
+
+Kulvarlar tahtada yatay ayrımlardır.
+Örneğin, yazılım sürümlerini ayırmak, görevlerinizi farklı ürünlerde, ekiplerde ya da istediğiniz her yerde bölmek yararlıdır.
+
+Kulvarlar ile pano
+--------------------
+
+![Swimlanes](screenshots/swimlanes.png)
+
+- Soldaki ikonuna tıklayarak kulvar(swimlanes) daraltabilirsiniz
+- Varsayılan kulvar her zaman üst kısmında gösterilir
+
+Kulvarları yönetmek
+------------------
+
+- Bütün projeler varsayılan bir kulvardadır.
+- Birden fazla kulvar varsa, pano tüm kulvarları gösterecektir.
+- Görevleri kulvarlar arasında sürükleyip bırakabilirsiniz.
+
+Kulvarları yapılandırmak için **proje yapılandırma sayfasına** gidin ve **Kulvarlar** bölümünü seçin.
+
+![Swimlanes Configuration](screenshots/swimlane-configuration.png)
+
+Oradan, yeni bir kulvar ekleyebilir veya varsayılan bir yeniden adlandırabilirsiniz.
+Farklı yüzücülerin yerlerini de devre dışı bırakabilir ve değiştirebilirsiniz.
+
+- Varsayılan kulvar her zaman en üsttedir fakat bunu gizleyebilirsiniz.
+- Aktif olmayan kulvarlar panoda gösterilmiyor.
+- ** Bir kulvarın kaldırılması kendisine verilen görevleri kaldırmaz**, bu görevler varsayılan kulvara taşınacaktır.
diff --git a/doc/tr_TR/syntax-guide.markdown b/doc/tr_TR/syntax-guide.markdown
new file mode 100644
index 00000000..b48c7dc9
--- /dev/null
+++ b/doc/tr_TR/syntax-guide.markdown
@@ -0,0 +1,147 @@
+Sözdizimi Kılavuzu
+============
+
+Kanboard, yorumlar veya görev açıklamaları için [Markdown Sözdizimi-syntax](http://en.wikipedia.org/wiki/Markdown) kullanır.
+İşte bazı örnekler:
+
+Kalın ve italik
+----------------
+
+- Kalın metin: 2 yıldız veya 2 altçizgi kullanın
+- İtalik metin: 1 yıldız veya 1 altçizgi kullanın
+
+### Kaynak
+```
+Bu **kelime** çok __önemlidir__.
+
+Ve burada, bir *italik* bir kelime ; bir altcizgi_ ile.
+```
+
+### Sonuç
+
+Bu **kelime** çok __önemlidir__.
+
+Ve burada, bir *italik* bir kelime ; bir altcizgi_ ile.
+
+Sırasız Listeler
+---------------
+
+Sırasız listeda yıldız , eksi veya artılar kullanabilir.
+
+### Source
+
+```
+- Öğe 1
+- Öğe 2
+- Öğe 3
+
+veya
+
+* Öğe 1
+* Öğe 2
+* Öğe 3
+```
+
+### Sonuç
+
+- Öğe 1
+- Öğe 2
+- Öğe 3
+
+Sıralı listeler
+-------------
+
+Sıralı listeler şöyle bir sayı göre öneki:
+
+### Source
+
+```
+1. Önde bunu yap
+2. Bunu yap
+3. Ve şu
+```
+
+### Result
+
+1. Önde bunu yap
+2. Bunu yap
+3. Ve şu
+
+Bağlantılar
+-----
+
+### Kaynak
+
+```
+[Bağlantı başlığım](https://kanboard.net/)
+
+<https://kanboard.net>
+
+```
+
+### Sonuç
+
+[Bağlantı başlığım](https://kanboard.net/)
+
+<https://kanboard.net>
+
+Kaynak kod
+-----------
+
+### Satır içi kod
+
+Geri-tırnak-işareti backtick kullanın.
+
+```
+Bu komutu çalıştır: `tail -f /var/log/messages`.
+```
+
+### Sonuç
+
+Bu komutu çalıştır: `tail -f /var/log/messages`.
+
+### Kod blokları
+
+Sonunda dil adıyla birlikte 3 geri-tırnak-işareti kullanın.
+
+<pre>
+<code class="language-markdown">```php
+&lt;?php
+
+phpinfo();
+
+?&gt;
+```
+</code>
+</pre>
+
+### Sonuç
+
+```
+<?php
+
+phpinfo();
+
+?>
+```
+
+Başlıklar
+------
+
+### Kaynak
+
+```
+# Başlık düzeyi 1
+
+## Başlık düzeyi 2
+
+### Başlık düzeyi 3
+```
+
+### Sonuç
+
+# Başlık düzeyi 1
+
+## Başlık düzeyi 2
+
+### Başlık düzeyi 3
diff --git a/doc/tr_TR/tags.markdown b/doc/tr_TR/tags.markdown
new file mode 100644
index 00000000..ac62bce7
--- /dev/null
+++ b/doc/tr_TR/tags.markdown
@@ -0,0 +1,28 @@
+Etiketler
+====
+
+Kanboard ile, bir veya birçok etiketi görevle ilişkilendirebilirsiniz.
+Etiketleri genel olarak tüm projeler için veya yalnızca belirli bir proje için tanımlayabilirsiniz.
+
+![Tags on the board](screenshots/tags-board.png)
+
+Görev formundan istediğiniz etiketleri girebilirsiniz:
+
+![Tags form](screenshots/tags-task.png)
+
+Otomatik tamamlama formu, kullanılabilir etiketleri önermek için görünür.
+
+Etiketleri doğrudan görev formundan da oluşturabilirsiniz.
+Varsayılan olarak, bir görev formundan etiketler oluşturduğunuzda, bunlar geçerli projeyle ilişkilendirilir:
+
+![Project Tags](screenshots/tags-projects.png)
+
+Tüm etiketler proje ayarlarında yönetilebilir.
+
+Etiketleri tüm projeler için genel olarak tanımlamak için uygulama ayarlarına gidin:
+
+![Global Tags](screenshots/tags-global.png)
+
+Görevleri etiketler temelinde aramak için "tag" özelliğini kullanmanız yeterlidir:
+
+![Search Tags](screenshots/tags-search.png)
diff --git a/doc/tr_TR/task-links.markdown b/doc/tr_TR/task-links.markdown
new file mode 100644
index 00000000..44531f22
--- /dev/null
+++ b/doc/tr_TR/task-links.markdown
@@ -0,0 +1,24 @@
+İç Görev Bağlantıları
+===================
+
+Görevler önceden tanımlanmış ilişkilerle birlikte birbirine bağlanabilir:
+
+![Task Links](screenshots/internal-task-links.png)
+
+Bu görevler projeler arasında bağlamak için de mümkündür.
+
+Varsayılan ilişkiler şunlardır:
+
+- **alakalı**
+- **bloklar** | tarafından engellendi
+- **tarafından engellendi**| bloklar
+- **çoğaltır** | tarafından çoğaltılan
+- **tarafından çoğaltılan** | çoğaltır
+- **bir çocuğun ** | bir ebeveyni
+- **'nın ebeveyni ** | bir çocuğu
+- **dönüm noktası hedefliyor ** | bir dönüm noktası
+- **bir dönüm noktası** | dönüm noktasını hedeflemek
+- **düzeltmeler** | tarafından düzeltildi
+- **tarafından düzeltildi** | düzeltmeler
+
+Bu etiketler uygulama ayarlarından değiştirilebilir.
diff --git a/doc/tr_TR/tests.markdown b/doc/tr_TR/tests.markdown
new file mode 100644
index 00000000..410a8513
--- /dev/null
+++ b/doc/tr_TR/tests.markdown
@@ -0,0 +1,158 @@
+Otomatik testler
+===============
+
+[PHPUnit](https://phpunit.de/), Kanboard'da otomatik testler yapmak için kullanılır.
+
+Sonuçların her yerde aynı olduğundan emin olmak için farklı veritabanlarında (Sqlite, Mysql ve PostgreSQL) testler çalıştırabilirsiniz.
+
+Gereksinimler
+------------
+
+- Linux/Unix machine
+- PHP
+- PHPUnit yüklü
+- Mysql ve Postgresql (isteğe bağlı)
+- Selenium (isteğe bağlı)
+- Firefox (isteğe bağlı)
+
+Birim Testleri
+----------
+
+### Sqlite ile sınama
+
+Sqlite testlerinde bellek içi bir veritabanı kullanılır, dosya sisteminde hiçbir şey yazılmaz.
+
+PHPUnit yapılandırma dosyası `tests/units.sqlite.xml`.
+Kanboard dizininizden `phpunit -c tests/units.sqlite.xml` komutunu çalıştırın.
+
+Örnek:
+
+```bash
+phpunit -c tests/units.sqlite.xml
+
+PHPUnit 5.0.0 by Sebastian Bergmann and contributors.
+
+............................................................... 63 / 649 ( 9%)
+............................................................... 126 / 649 ( 19%)
+............................................................... 189 / 649 ( 29%)
+............................................................... 252 / 649 ( 38%)
+............................................................... 315 / 649 ( 48%)
+............................................................... 378 / 649 ( 58%)
+............................................................... 441 / 649 ( 67%)
+............................................................... 504 / 649 ( 77%)
+............................................................... 567 / 649 ( 87%)
+............................................................... 630 / 649 ( 97%)
+................... 649 / 649 (100%)
+
+Time: 1.22 minutes, Memory: 151.25Mb
+
+OK (649 tests, 43595 assertions)
+```
+
+### Mysql ile Test
+
+Localhost'da MySQL veya MariaDb yüklü olmalıdır.
+
+Varsayılan olarak, bu kimlik bilgileri kullanılır:
+
+- Ana makine adı: **localhost**
+- Kullanıcı adı: **kök**
+- Şifre: yok
+- Veritabanı: **kanboard_unit_test**
+
+Her yürütme için veritabanı silinir ve yeniden oluşturulur.
+
+PHPUnit yapılandırma dosyası `tests/units.postgres.xml` dir.
+Kanboard dizininizden `phpunit -c `phpunit -c tests/units.postgres.xml` komutunu çalıştırın.
+
+### Postgresql ile test edin
+
+Postgresql'in localhost'a kurulmuş olması gerekir.
+
+Varsayılan olarak, bu kimlik bilgileri kullanılır:
+
+- Ana makine adı: **localhost**
+- Kullanıcı adı: **postgres**
+- Şifre: yok
+- Veritabanı: **kanboard_unit_test**
+
+'Postgres` kullanıcısının veritabanlarını oluşturup açmasına izin verdiğinizden emin olun.
+Veritabanı her yürütme için yeniden oluşturulur.
+
+PHPUnit yapılandırma dosyası `tests/units.postgres.xml` dir.
+Kanboard dizininizden `phpunit -c tests/units.postgres.xml` komutunu çalıştırın.
+
+Entegrasyon Testleri
+-----------------
+
+Entegrasyon testleri esas olarak API'yi test etmek için kullanılır.
+Test paketleri, bir kapsayıcı içinde çalışan uygulamaya gerçek HTTP çağrıları yapıyor.
+
+### Gereksinimler
+
+- PHP
+- Composer
+- Unix işletim sistemi (Mac OS veya Linux)
+- Docker
+- Docker Compose
+
+### Uyum testlerini çalıştırmak
+
+Entegrasyon testleri Docker konteynerlerini kullanıyor.
+Desteklenen her bir veritabanına karşı testleri çalıştırmak için kullanılabilecek 3 farklı ortam vardır.
+
+Her bir test paketini çalıştırmak için aşağıdaki komutları kullanabilirsiniz:
+
+```bash
+# Run tests with Sqlite
+make integration-test-sqlite
+
+# Run tests with Mysql
+make integration-test-mysql
+
+# Run tests with Postgres
+make integration-test-postgres
+```
+
+Kabul Deneyleri
+----------------
+
+Kabul testleri (bazen uçtan uca testler ve işlevsel testler olarak da bilinir), Selenium'u kullanan bir tarayıcıda UI'nın gerçek işlevselliğini test eder.
+
+Bu testleri çalıştırmak için [Selenium Standalone Server] (http://www.seleniumhq.org/download/) ve Firefox'un uyumlu bir sürümü yüklü olmalıdır.
+
+PHPUnit yapılandırma dosyası `tests / acceptance.xml` dir.
+Selenyum ve Kanboard uygulaması çalışıyorken, Kanboard dizininizden `make test-browser` komutunu çalıştırın. Bu, test paketini başlatacak ve Firefox'un otomatik olarak açıldığını göreceksiniz ve kabul testlerinde belirtilen işlemleri uygulayacaksınız.
+
+Örnek:
+
+```bash
+$ make test-browser
+PHPUnit 4.8.26 by Sebastian Bergmann and contributors.
+
+..
+
+Time: 5.59 seconds, Memory: 5.25MB
+
+OK (2 tests, 5 assertions)
+```
+
+
+Travis-CI ile Sürekli Entegrasyon
+-------------------------------------
+
+Her taahhüt ana depoda itildikten sonra, birim testleri PHP'nin 5 farklı versiyonu boyunca yürütülür:
+
+- PHP 7.0
+- PHP 5.6
+- PHP 5.5
+- PHP 5.4
+- PHP 5.3
+
+Each version of PHP is tested against the 3 supported database: Sqlite, Mysql and Postgresql.
+
+The Travis config file `.travis.yml` is located on the root directory of Kanboard.
+
+PHP'nin her sürümü desteklenen 3 veritabanına karşı test edilmiştir: Sqlite, Mysql ve Postgresql.
+
+Travis yapılandırma dosyası `.travis.yml` , Kanboard'un kök dizininde bulunur.
diff --git a/doc/tr_TR/time-tracking.markdown b/doc/tr_TR/time-tracking.markdown
new file mode 100644
index 00000000..4994b510
--- /dev/null
+++ b/doc/tr_TR/time-tracking.markdown
@@ -0,0 +1,43 @@
+Zaman izleme
+=============
+
+Zaman izleme bilgileri, görev seviyesinde veya alt görev seviyesinde tanımlanabilir.
+
+Görev zamanı izleme
+------------------
+
+![Task time tracking](screenshots/task-time-tracking.png)
+
+Görevlerin iki alanı vardır:
+
+- Tahmini zaman
+- Harcanan zaman
+
+Bu değerler çalışma saatlerini temsil eder ve manuel olarak ayarlanması gerekir.
+
+Alt görev zaman izleme
+---------------------
+
+![Subtask time tracking](screenshots/subtask-time-tracking.png)
+
+Alt görevlerin "geçen süre" ve "zaman tahmini" alanları da vardır.
+
+Bu alanların değerini değiştirdiğinizde **görev zaman izleme değerleri otomatik olarak güncellenir ve tüm alt görev değerlerinin toplamı haline gelir**.
+
+Kanboard, her bir alt görev durumu değişikliği arasındaki zamanı ayrı bir tabloda kaydeder.
+
+- Alt görev durumunu **todo** dan **devam eden** ne olarak değiştirme başlangıç zamanını günlüğüne kaydeder
+- Alt görev durumu **devam eden** dan **tamamlanmış** olarak değiştirildiğinde, bitiş saati günlüğe kaydedilir, ancak alt görevin ve görevin geöen süresi de güncellenir
+
+Tüm kayıtların dökümü görev görünümü sayfasında görünür:
+
+![Task timesheet](screenshots/task-timesheet.png)
+
+Her bir alt görev için zamanlayıcı, istediği zaman durdurulabilir / başlatılabilir:
+
+![Subtask timer](screenshots/subtask-timer.png)
+
+- Zamanlayıcı, alt görev durumuna bağlı değildir
+- Zamanlayıcıyı her başlatışınızda, zaman takibi tablosunda yeni bir kayıt oluşturulur
+- Saati durdurduğunuz her sefer, bitiş tarihi saat izleme tablosuna kaydedilir
+- Hesaplanan geçen süre en yakın çeyreğe yuvarlanır (sadece Kanboard < 1.0.32 için)
diff --git a/doc/tr_TR/transitions.markdown b/doc/tr_TR/transitions.markdown
new file mode 100644
index 00000000..88ee0fdc
--- /dev/null
+++ b/doc/tr_TR/transitions.markdown
@@ -0,0 +1,14 @@
+Görev Geçişleri
+================
+
+Bir görevin sütunlar arasındaki her hareketi veritabanına kaydedilir.
+
+![Task Transitions](screenshots/task-transitions.png)
+
+Görev görünümünden ulaşılabilir, şu bilgileri görebilirsiniz:
+
+- Eylem tarihi
+- Kaynak kolonu
+- Hedef kolon
+- Yürütücü (görevi yerine getiren kullanıcılar)
+- Başlangıç kolonunda geçen süre
diff --git a/doc/tr_TR/translations.markdown b/doc/tr_TR/translations.markdown
new file mode 100644
index 00000000..1038f489
--- /dev/null
+++ b/doc/tr_TR/translations.markdown
@@ -0,0 +1,68 @@
+Translations
+============
+
+Kanboard'u yeni bir dilde nasıl tercüme edebilirim?
+--------------------------------------------
+
+- Çeviriler, `app/Locale` dizininde saklanır
+- Her dil için bir alt dizin var; örneğin Fransızca'da `fr_FR`, İtalyanca'da `it_IT`, Türkçe'de `tr_TR` vb.
+- Bir çeviri, bir anahtar-değer çifti içeren bir dizi-Array döndüren bir PHP dosyasıdır
+- Anahtar, İngilizce orijinal metindir ve değer ilgili dildeki tercümedir
+- **Fransızca çeviriler her zaman günceldir**
+- Daima son sürümü kullanın (branch master)
+
+### Yeni çeviri oluştur:
+
+1. Yeni bir dizin yapın: `app/Locale/xx_XX` örneğin Kanada Fransızcası için `app/Locale/fr_CA`
+2. Çeviri için yeni bir dosya oluşturun: `app/Locale/xx_XX/translations.php`
+3. Fransızca yerel ayarların içeriğini kullanın ve değerleri değiştirin
+4. `app/Model/Language.php` dosyasını güncelleyin
+5. Her şey yolunda giderse, Kanboard'u yerel olarak kurun.
+6. [Github ile çekme isteği-pull-request with Github](https://help.github.com/articles/using-pull-requests/) gönderin
+
+Mevcut bir çeviri nasıl güncellenir?
+--------------------------------------
+
+1. Çeviri dosyasını açın `app/Locale/xx_XX/translations.php`
+2. Kayıp çeviriler `//` ile yorumlanır ve değerler boş, sadece boşluk doldurun ve açıklamayı kaldırın.
+3. Yerel kurulumunuz olan Kanboard'u kontrol edin ve bir [pull-request](https://help.github.com/articles/using-pull-requests/) gönderin.
+
+Uygulamaya yeni çevrilmiş metin nasıl eklenir?
+--------------------------------------------------
+
+Çeviriler, kaynak kodunda aşağıdaki işlevlerle birlikte görüntülenir:
+
+- `t()`: HTML escaping-çıkışı olan metinleri görüntüle
+- `e()`: HTML escaping-çıkışı olmadan metinleri görüntüle
+
+Kaynak kodunda daima İngilizce sürümünü kullanın.
+
+Metin dizeleri, öğeleri değiştirmek için `sprintf()` işlevini kullanır:
+
+- `%s` bir karakter-kelime-string yerine kullanılır
+- `%d` bir tamsayıyı-integer değiştirmek için kullanılır
+
+Tüm formatlar için [PHP Belgeleri-documentation](http://php.net/sprintf).
+
+Uygulamalardaki eksik çevirileri nasıl bulabilirim?
+-----------------------------------------------------
+
+Bir terminalden aşağıdaki komutu çalıştırın:
+
+```bash
+./cli locale:compare
+```
+
+Eksik ve kullanılmayan tüm çeviriler ekranda görüntülenir.
+Bunu Fransız yerel ayarına koyun ve diğer yerel ayarları eşzamanlayın (aşağıya bakın).
+
+Çeviri dosyalarını nasıl senkronize ederim?
+-------------------------------------
+
+Bir Unix shell-kabuğundan şu komutu çalıştırın:
+
+```bash
+./cli locale:sync
+```
+
+Fransızca çevirisi diğer yerel ayarlarda referans olarak kullanılır.
diff --git a/doc/tr_TR/ubuntu-installation.markdown b/doc/tr_TR/ubuntu-installation.markdown
new file mode 100644
index 00000000..344ded4f
--- /dev/null
+++ b/doc/tr_TR/ubuntu-installation.markdown
@@ -0,0 +1,65 @@
+Ubuntu üzerinde Kanboard Kurulumu
+================================
+
+Ubuntu Xenial 16.04 LTS
+-----------------------
+
+Apache ve PHP'yi kurun:
+
+```bash
+sudo apt-get update
+sudo apt-get install -y apache2 libapache2-mod-php7.0 php7.0-cli php7.0-mbstring php7.0-sqlite3 \
+ php7.0-opcache php7.0-json php7.0-mysql php7.0-pgsql php7.0-ldap php7.0-gd
+```
+
+Kanboard'u kurun:
+
+```bash
+cd /var/www/html
+sudo wget https://kanboard.net/kanboard-latest.zip
+sudo unzip kanboard-latest.zip
+sudo chown -R www-data:www-data kanboard/data
+sudo rm kanboard-latest.zip
+```
+
+Ubuntu Trusty 14.04 LTS
+-----------------------
+
+Apache ve PHP'yi kurun:
+
+```bash
+sudo apt-get update
+sudo apt-get install -y php5 php5-sqlite php5-mysql php5-pgsql php5-ldap php5-gd php5-json php5-mcrypt unzip
+```
+
+Kanboard'u kurun:
+
+```bash
+cd /var/www/html
+sudo wget https://kanboard.net/kanboard-latest.zip
+sudo unzip kanboard-latest.zip
+sudo chown -R www-data:www-data kanboard/data
+sudo rm kanboard-latest.zip
+```
+
+Ubuntu Precise 12.04 LTS
+------------------------
+
+Apache ve PHP'yi kurun:
+
+```bash
+sudo apt-get update
+sudo apt-get install -y php5 php5-sqlite php5-mysql php5-pgsql php5-ldap php5-gd php5-json php5-mcrypt unzip
+```
+
+Kanboard'u kurun:
+
+```bash
+cd /var/www
+sudo wget https://kanboard.net/kanboard-latest.zip
+sudo unzip kanboard-latest.zip
+sudo chown -R www-data:www-data kanboard/data
+sudo rm kanboard-latest.zip
+```
+
+Kanboard'un bazı özellikleri, [günlük arka plan işi-cronjob](cronjob.markdown) çalıştırmanızı gerektirir.
diff --git a/doc/tr_TR/update.markdown b/doc/tr_TR/update.markdown
new file mode 100644
index 00000000..842b1b5a
--- /dev/null
+++ b/doc/tr_TR/update.markdown
@@ -0,0 +1,53 @@
+Kanboard'u yeni bir sürüme güncelleyin
+=================================
+
+Çoğu zaman, Kanboard'un daha yeni bir sürümüne yükseltilmesi sorunsuzdur.
+İşlem, yalnızca mevcut veri klasörünüzü yeni Kanboard klasörüne kopyalamak olarak özetlenebilir.
+Kanboard otomatik olarak veritabanı geçişlerini-transferlerini sizin için yapar.
+
+Güncellemeden önce yapılması gereken önemli şeyler
+--------------------------------------
+
+- **Yeni sürüme geçmeden önce verilerinizin her zaman yedek alın**
+- **Yedeklemenizin geçerli olup olmadığını kontrol edin!**
+- Tekrar kontrol edin
+- Değişikliklerin olup olmadığını kontrol etmek için daima [değişiklik geçmişini](https://github.com/kanboard/kanboard/blob/master/ChangeLog) okuyun
+- Çalıştırıcıyı-worker kullanıyorsanız durdurun
+- Web sunucusunu bakım moduna geçirin; böylece kullanıcılar güncelleme işlemi sırasında yazılımı kullanmazlar
+
+Arşivden (kararlı sürüm)
+---------------------------------
+
+1. Yeni arşivin sıkıştırmasını açın
+2. `data` klasörünü yeni sıkıştırılması açılmış dizine kopyalayın
+3. Özel ``config.php` dosyanız varsa kopyalayın.
+4. Bazı eklentileri kurduysanız, en yeni sürümlerini kullanın
+5. `data` dizininin web sunucusu kullanıcısı tarafından yazılabilir olduğundan emin olun
+6. Test edin
+7. Eski Kanboard dizininizi kaldırın
+
+Depodan-repository (geliştirme versiyonu)
+-----------------------------------------
+
+1. `git pull`
+2. `composer install --no-dev`
+3. Giriş yapın ve her şeyin yolunda olduğunu kontrol edin
+
+Not: Bu yöntem, **mevcut geliştirme sürümünü** yükleyecektir, bu versiyonu kullanmanız kendi sorumluluğunuzdadır.
+
+SQL geçişlerini el-ile-manuel olarak çalıştırma
+-------------------------------
+
+Varsayılan olarak, SQL geçişleri otomatik olarak yürütülür. Her istekte şema sürümü kontrol edilir.
+Bu şekilde, Kanboard'u başka bir sürüme yükselttiğinizde, veritabanı şeması sizin için güncellenir.
+
+Belirli bir yapılandırmanız olması durumunda bu davranışı devre dışı bırakmak isteyebilirsiniz.
+Örneğin, birden çok işlem göçleri-transferleri aynı anda uygulamayı denerseniz, her işlem bir işlem içinde yürütülseler de eşzamanlılık sorunlarınız olabilir.
+
+Bu özelliği devre dışı bırakmak için, [config file](config.markdown) 'da `DB_RUN_MIGRATIONS` parametresini `false` olarak ayarlayın.
+
+Kanboard'u yükseltmeniz gerektiğinde, şu komutu çalıştırın:
+
+```bash
+./cli db:migrate
+```
diff --git a/doc/tr_TR/usage-examples.markdown b/doc/tr_TR/usage-examples.markdown
new file mode 100644
index 00000000..b2c95c8e
--- /dev/null
+++ b/doc/tr_TR/usage-examples.markdown
@@ -0,0 +1,67 @@
+Kullanım Örnekleri
+==============
+
+Panolarınızı ticari faaliyetlerinize göre özelleştirebilirsiniz:
+
+Yazılım geliştirme
+--------------------
+
+- Birikim
+- Hazır
+- Devam ediyor
+- Onaylanacak
+- Doğrulanmış
+- Üretimde dağıtılmıştır
+
+Hata-Bug izleme
+------------
+
+- Bildirildi
+- Onaylandı
+- Devam ediyor
+- Test edildi
+- Onaylandı
+
+Satış
+-----
+
+- Teslimatlar
+- Toplantı
+- Teklif
+- Satın alma
+
+Yalın işletme yönetimi
+------------------------
+
+- Fikirler
+- Geliştirme
+- Tedbir
+- Analiz
+- Bitti
+
+İşe alım-İstihdam süreci
+------------------
+
+- İş başvuruları
+- Adaylar
+- Telefon ekranları
+- Görüşmeler
+- Çalışanlar
+
+Online mağazalar
+------------
+
+- Siparişler
+- Paketleme
+- Gönderilmeye hazır
+- Kargoya verildi-Sevk edildi
+
+Fabrikada
+-----------
+
+- Müşteri Siparişleri
+- Montaj
+- Testler
+- Paketleme
+- Kargo hazırlık
+- Kargoya verildi-Sevk edildi
diff --git a/doc/tr_TR/user-management.markdown b/doc/tr_TR/user-management.markdown
new file mode 100644
index 00000000..8d625ed3
--- /dev/null
+++ b/doc/tr_TR/user-management.markdown
@@ -0,0 +1,36 @@
+Kullanıcı yönetimi
+===============
+
+Yeni kullanıcı ekle
+--------------
+
+Yeni bir kullanıcı eklemek için bir yönetici olmalısınız.
+
+1. Sağ üst köşedeki açılır menüden **Kullanıcı Yönetimi** seçeneğine gidin
+2. Üst kısımda bir bağlantı var **Yeni yerel kullanıcı** veya **Yeni uzak kullanıcı**
+3. Formu doldurun ve kaydedin.
+
+![New user](screenshots/new-user.png)
+
+Bir **yerel kullanıcı** oluşturduğunuzda, en azından bu değerleri belirtmeniz gerekir:
+
+- **kullanıcı adı**: Bu, kullanıcının benzersiz tanımlayıcısıdır (giriş)
+- **şifre**: Kullanıcınızın şifresi en az 6 karakter olmalıdır
+
+**uzak kullanıcı** için yalnızca kullanıcı adı zorunludur.
+
+Kullanıcıları düzenle
+----------
+
+**kullanıcılar** menüsüne gittiğinizde, kullanıcıların listesine sahipsiniz. Bir kullanıcıyı değiştirmek için **bağlantıyı-link düzenle** ye tıklayınız.
+
+- Normal bir kullanıcısanız, yalnızca kendi profilinizi değiştirebilirsiniz
+- Herhangi bir kullanıcıyı düzenleyebilmek için bir yönetici olmak zorundasınız.
+
+Kullanıcıları kaldır
+------------
+
+**kullanıcılar** menüsünden **kaldır** bağlantısını tıklayın. Bu bağlantı, yalnızca siz yönetici iseniz görünür.
+
+Belirli bir kullanıcıyı kaldırırsanız, **bu kişiye atanan görevler işlemden sonra atanmamış olacaktır**.
+
diff --git a/doc/tr_TR/user-mentions.markdown b/doc/tr_TR/user-mentions.markdown
new file mode 100644
index 00000000..afca3df7
--- /dev/null
+++ b/doc/tr_TR/user-mentions.markdown
@@ -0,0 +1,17 @@
+Kullanıcı Mentionları
+=============
+
+Kanboard, birinden bahsedildiğinde bildirim gönderme olanağı sunar.
+
+Bir yorumda veya bir görevde birinin dikkatini çekmeniz gerekiyorsa, @ simgesini ve ardından kullanıcı adını kullanın.
+Kanboard otomatik olarak bir kullanıcı listesi önerecektir:
+
+![User Mention](screenshots/user-mentions.png)
+
+- Şu anda yalnızca görev açıklaması ve açıklama metin alanı bu özelliği etkinleştirmiştir.
+- Kullanıcı, yalnızca görevler ve yorumlar oluşturma sırasında bahsediyor.
+- Bildirilmek üzere bahsedilen kullanıcıların projenin bir üyesi olması gerekiyor.
+- Birisi belirtildiğinde, bu kullanıcı bir bildirim alacaktır.
+- @ kullanıcı adı yazısı genel kullanıcı profiliyle bağlantılıdır.
+
+Bildirim, kullanıcı ayarlarına göre gönderilir; doğru eklentileri yüklediyseniz, Slack / Hipchat / Jabber'de bir e-posta, web bildirimi veya bir mesaj olabilir.
diff --git a/doc/tr_TR/user-types.markdown b/doc/tr_TR/user-types.markdown
new file mode 100644
index 00000000..6df725bf
--- /dev/null
+++ b/doc/tr_TR/user-types.markdown
@@ -0,0 +1,14 @@
+Kullanıcı Tipleri
+==========
+
+Kanboard'da iki tür kullanıcı vardır:
+
+| Tip | Açıklama |
+|-----------------|-----------------------------------------------------------------------------------------|
+| Yerel Kullanıcı | Kullanıcı şifresini Kanboard'un veritabanında saklar |
+| Uzak Kullanıcı | Kullanıcı kimlik bilgileri başka bir sistem tarafından yönetilir (Örnek: LDAP sunucusu) |
+
+Uzak kullanıcılara örnekler:
+
+- LDAP kullanıcısı
+- Ters proxy ile kimlik doğrulamasına tabi tutulmuş kullanıcılar
diff --git a/doc/tr_TR/vagrant.markdown b/doc/tr_TR/vagrant.markdown
new file mode 100644
index 00000000..b8f7389a
--- /dev/null
+++ b/doc/tr_TR/vagrant.markdown
@@ -0,0 +1,10 @@
+Vagrant ile Kanboard çalıştırın
+=========================
+
+Kanboard with Vagrant'ı çok kolay deneyebilirsiniz:
+
+- Git havuzundan projeyi klonlamak
+- `vagrant up` yapın
+- Uygulamaya, `http://localhost:8001/` URL'sini kullanarak erişebilirsiniz.
+
+Sanal makine PHP 5.5 ile Ubuntu 14.04 üzerine kurulmuştur.
diff --git a/doc/tr_TR/webhooks.markdown b/doc/tr_TR/webhooks.markdown
new file mode 100644
index 00000000..571b44b4
--- /dev/null
+++ b/doc/tr_TR/webhooks.markdown
@@ -0,0 +1,487 @@
+Web kancası-Webhooks
+========
+
+Web kancası-Webhooks harici uygulamalarla işlemleri gerçekleştirmek için kullanışlıdır.
+
+- Webhook'lar, basit bir URL'yi çağırarak bir görev oluşturmak için kullanılabilir (Bunu da API ile yapabilirsiniz)
+- Kanboard'da bir olay meydana geldiğinde (görev yaratma, açıklama güncellendi, vb.) Harici bir URL otomatik olarak çağrılabilir
+
+Web kancası-Webhooks alıcı nasıl yazılır?
+---------------------------------
+
+Kanboard'un tüm dahili olayları harici bir URL'ye gönderilebilir.
+
+- Web kancası-Webhooks URL'si **Ayarlar> Web kancası-Webhooks> Web kancası-Webhooks URL** 'de tanımlanmalıdır.
+- Bir olay tetiklendiğinde Kanboard önceden tanımlı URL'yi otomatik olarak çağırır
+- Veriler JSON formatında kodlanır ve bir POST HTTP isteğiyle gönderilir
+- Web kancası-Webhooks anahtarı-token da bir sorgu dizesi parametresi olarak gönderilir, böylece isteğin gerçekten Kanboard'dan geldiğini kontrol edebilirsiniz.
+- **Özel URL'niz 1 saniyeden kısa bir sürede yanıt almalıdır**, bu istekler senkron (PHP sınırlaması) olup komut dosyası çok yavaşsa kullanıcı arayüzünü yavaşlatabilir!
+
+### Desteklenen etkinlikler listesi
+
+- comment.create
+- comment.update
+- comment.delete
+- file.create
+- task.move.project
+- task.move.column
+- task.move.position
+- task.move.swimlane
+- task.update
+- task.create
+- task.close
+- task.open
+- task.assignee_change
+- subtask.update
+- subtask.create
+- subtask.delete
+- task_internal_link.create_update
+- task_internal_link.delete
+
+### HTTP isteği örneği
+
+```
+POST https://your_webhook_url/?token=WEBHOOK_TOKEN_HERE
+User-Agent: Kanboard Webhook
+Content-Type: application/json
+Connection: close
+
+{
+ "event_name": "task.move.column",
+ "event_data": {
+ "task_id": "4",
+ "task": {
+ "id": "4",
+ "reference": "",
+ "title": "My task",
+ "description": "",
+ "date_creation": "1469314356",
+ "date_completed": null,
+ "date_modification": "1469315422",
+ "date_due": "1469491200",
+ "date_started": "0",
+ "time_estimated": "0",
+ "time_spent": "0",
+ "color_id": "green",
+ "project_id": "1",
+ "column_id": "1",
+ "owner_id": "1",
+ "creator_id": "1",
+ "position": "1",
+ "is_active": "1",
+ "score": "0",
+ "category_id": "0",
+ "priority": "0",
+ "swimlane_id": "0",
+ "date_moved": "1469315422",
+ "recurrence_status": "0",
+ "recurrence_trigger": "0",
+ "recurrence_factor": "0",
+ "recurrence_timeframe": "0",
+ "recurrence_basedate": "0",
+ "recurrence_parent": null,
+ "recurrence_child": null,
+ "category_name": null,
+ "swimlane_name": null,
+ "project_name": "Demo Project",
+ "default_swimlane": "Default swimlane",
+ "column_title": "Backlog",
+ "assignee_username": "admin",
+ "assignee_name": null,
+ "creator_username": "admin",
+ "creator_name": null
+ },
+ "changes": {
+ "src_column_id": "2",
+ "dst_column_id": "1",
+ "date_moved": "1469315398"
+ },
+ "project_id": "1",
+ "position": 1,
+ "column_id": "1",
+ "swimlane_id": "0",
+ "src_column_id": "2",
+ "dst_column_id": "1",
+ "date_moved": "1469315398",
+ "recurrence_status": "0",
+ "recurrence_trigger": "0"
+ }
+}
+```
+
+Tüm etkinlik yükleri aşağıdaki biçimde:
+
+```json
+{
+ "event_name": "model.event_name",
+ "event_data": {
+ "key1": "value1",
+ "key2": "value2",
+ ...
+ }
+}
+```
+
+`event_data` değerleri olaylar arasında normalize edilmek zorunda değildir.
+
+### Etkinlik yükü örnekleri
+
+Görev yaratma:
+
+```json
+{
+ "event_name": "task.create",
+ "event_data": {
+ "task_id": 5,
+ "task": {
+ "id": "5",
+ "reference": "",
+ "title": "My new task",
+ "description": "",
+ "date_creation": "1469315481",
+ "date_completed": null,
+ "date_modification": "1469315481",
+ "date_due": "0",
+ "date_started": "0",
+ "time_estimated": "0",
+ "time_spent": "0",
+ "color_id": "orange",
+ "project_id": "1",
+ "column_id": "2",
+ "owner_id": "1",
+ "creator_id": "1",
+ "position": "1",
+ "is_active": "1",
+ "score": "3",
+ "category_id": "0",
+ "priority": "2",
+ "swimlane_id": "0",
+ "date_moved": "1469315481",
+ "recurrence_status": "0",
+ "recurrence_trigger": "0",
+ "recurrence_factor": "0",
+ "recurrence_timeframe": "0",
+ "recurrence_basedate": "0",
+ "recurrence_parent": null,
+ "recurrence_child": null,
+ "category_name": null,
+ "swimlane_name": null,
+ "project_name": "Demo Project",
+ "default_swimlane": "Default swimlane",
+ "column_title": "Ready",
+ "assignee_username": "admin",
+ "assignee_name": null,
+ "creator_username": "admin",
+ "creator_name": null
+ }
+ }
+}
+```
+
+Görev değişikliği:
+
+```json
+{
+ "event_name": "task.update",
+ "event_data": {
+ "task_id": "5",
+ "task": {
+ "id": "5",
+ "reference": "",
+ "title": "My new task",
+ "description": "New description",
+ "date_creation": "1469315481",
+ "date_completed": null,
+ "date_modification": "1469315531",
+ "date_due": "1469836800",
+ "date_started": "0",
+ "time_estimated": "0",
+ "time_spent": "0",
+ "color_id": "purple",
+ "project_id": "1",
+ "column_id": "2",
+ "owner_id": "1",
+ "creator_id": "1",
+ "position": "1",
+ "is_active": "1",
+ "score": "3",
+ "category_id": "0",
+ "priority": "2",
+ "swimlane_id": "0",
+ "date_moved": "1469315481",
+ "recurrence_status": "0",
+ "recurrence_trigger": "0",
+ "recurrence_factor": "0",
+ "recurrence_timeframe": "0",
+ "recurrence_basedate": "0",
+ "recurrence_parent": null,
+ "recurrence_child": null,
+ "category_name": null,
+ "swimlane_name": null,
+ "project_name": "Demo Project",
+ "default_swimlane": "Default swimlane",
+ "column_title": "Ready",
+ "assignee_username": "admin",
+ "assignee_name": null,
+ "creator_username": "admin",
+ "creator_name": null
+ },
+ "changes": {
+ "description": "New description",
+ "color_id": "purple",
+ "date_due": 1469836800
+ }
+ }
+}
+```
+
+Görev güncelleme etkinlikleri, güncellenmiş değerleri içeren `changes` adı verilen bir alana sahiptir.
+
+Yorum yaratma:
+
+```json
+{
+ "event_name": "comment.create",
+ "event_data": {
+ "comment": {
+ "id": "1",
+ "task_id": "5",
+ "user_id": "1",
+ "date_creation": "1469315727",
+ "comment": "My comment.",
+ "reference": null,
+ "username": "admin",
+ "name": null,
+ "email": null,
+ "avatar_path": null
+ },
+ "task": {
+ "id": "5",
+ "reference": "",
+ "title": "My new task",
+ "description": "New description",
+ "date_creation": "1469315481",
+ "date_completed": null,
+ "date_modification": "1469315531",
+ "date_due": "1469836800",
+ "date_started": "0",
+ "time_estimated": "0",
+ "time_spent": "0",
+ "color_id": "purple",
+ "project_id": "1",
+ "column_id": "2",
+ "owner_id": "1",
+ "creator_id": "1",
+ "position": "1",
+ "is_active": "1",
+ "score": "3",
+ "category_id": "0",
+ "priority": "2",
+ "swimlane_id": "0",
+ "date_moved": "1469315481",
+ "recurrence_status": "0",
+ "recurrence_trigger": "0",
+ "recurrence_factor": "0",
+ "recurrence_timeframe": "0",
+ "recurrence_basedate": "0",
+ "recurrence_parent": null,
+ "recurrence_child": null,
+ "category_name": null,
+ "swimlane_name": null,
+ "project_name": "Demo Project",
+ "default_swimlane": "Default swimlane",
+ "column_title": "Ready",
+ "assignee_username": "admin",
+ "assignee_name": null,
+ "creator_username": "admin",
+ "creator_name": null
+ }
+ }
+}
+```
+
+Alt görev yaratma:
+
+```json
+{
+ "event_name": "subtask.create",
+ "event_data": {
+ "subtask": {
+ "id": "1",
+ "title": "My subtask",
+ "status": "0",
+ "time_estimated": "0",
+ "time_spent": "0",
+ "task_id": "5",
+ "user_id": "1",
+ "position": "1",
+ "username": "admin",
+ "name": null,
+ "timer_start_date": 0,
+ "status_name": "Todo",
+ "is_timer_started": false
+ },
+ "task": {
+ "id": "5",
+ "reference": "",
+ "title": "My new task",
+ "description": "New description",
+ "date_creation": "1469315481",
+ "date_completed": null,
+ "date_modification": "1469315531",
+ "date_due": "1469836800",
+ "date_started": "0",
+ "time_estimated": "0",
+ "time_spent": "0",
+ "color_id": "purple",
+ "project_id": "1",
+ "column_id": "2",
+ "owner_id": "1",
+ "creator_id": "1",
+ "position": "1",
+ "is_active": "1",
+ "score": "3",
+ "category_id": "0",
+ "priority": "2",
+ "swimlane_id": "0",
+ "date_moved": "1469315481",
+ "recurrence_status": "0",
+ "recurrence_trigger": "0",
+ "recurrence_factor": "0",
+ "recurrence_timeframe": "0",
+ "recurrence_basedate": "0",
+ "recurrence_parent": null,
+ "recurrence_child": null,
+ "category_name": null,
+ "swimlane_name": null,
+ "project_name": "Demo Project",
+ "default_swimlane": "Default swimlane",
+ "column_title": "Ready",
+ "assignee_username": "admin",
+ "assignee_name": null,
+ "creator_username": "admin",
+ "creator_name": null
+ }
+ }
+}
+```
+
+Dosya yükleme:
+
+```json
+{
+ "event_name": "task.file.create",
+ "event_data": {
+ "file": {
+ "id": "1",
+ "name": "kanboard-latest.zip",
+ "path": "tasks/5/6f32893e467e76671965b1ec58c06a2440823752",
+ "is_image": "0",
+ "task_id": "5",
+ "date": "1469315613",
+ "user_id": "1",
+ "size": "4907308"
+ },
+ "task": {
+ "id": "5",
+ "reference": "",
+ "title": "My new task",
+ "description": "New description",
+ "date_creation": "1469315481",
+ "date_completed": null,
+ "date_modification": "1469315531",
+ "date_due": "1469836800",
+ "date_started": "0",
+ "time_estimated": "0",
+ "time_spent": "0",
+ "color_id": "purple",
+ "project_id": "1",
+ "column_id": "2",
+ "owner_id": "1",
+ "creator_id": "1",
+ "position": "1",
+ "is_active": "1",
+ "score": "3",
+ "category_id": "0",
+ "priority": "2",
+ "swimlane_id": "0",
+ "date_moved": "1469315481",
+ "recurrence_status": "0",
+ "recurrence_trigger": "0",
+ "recurrence_factor": "0",
+ "recurrence_timeframe": "0",
+ "recurrence_basedate": "0",
+ "recurrence_parent": null,
+ "recurrence_child": null,
+ "category_name": null,
+ "swimlane_name": null,
+ "project_name": "Demo Project",
+ "default_swimlane": "Default swimlane",
+ "column_title": "Ready",
+ "assignee_username": "admin",
+ "assignee_name": null,
+ "creator_username": "admin",
+ "creator_name": null
+ }
+ }
+}
+```
+
+Görev bağlantısı oluşturulması:
+
+```json
+{
+ "event_name": "task_internal_link.create_update",
+ "event_data": {
+ "task_link": {
+ "id": "2",
+ "opposite_task_id": "5",
+ "task_id": "4",
+ "link_id": "3",
+ "label": "is blocked by",
+ "opposite_link_id": "2"
+ },
+ "task": {
+ "id": "4",
+ "reference": "",
+ "title": "My task",
+ "description": "",
+ "date_creation": "1469314356",
+ "date_completed": null,
+ "date_modification": "1469315422",
+ "date_due": "1469491200",
+ "date_started": "0",
+ "time_estimated": "0",
+ "time_spent": "0",
+ "color_id": "green",
+ "project_id": "1",
+ "column_id": "1",
+ "owner_id": "1",
+ "creator_id": "1",
+ "position": "1",
+ "is_active": "1",
+ "score": "0",
+ "category_id": "0",
+ "priority": "0",
+ "swimlane_id": "0",
+ "date_moved": "1469315422",
+ "recurrence_status": "0",
+ "recurrence_trigger": "0",
+ "recurrence_factor": "0",
+ "recurrence_timeframe": "0",
+ "recurrence_basedate": "0",
+ "recurrence_parent": null,
+ "recurrence_child": null,
+ "category_name": null,
+ "swimlane_name": null,
+ "project_name": "Demo Project",
+ "default_swimlane": "Default swimlane",
+ "column_title": "Backlog",
+ "assignee_username": "admin",
+ "assignee_name": null,
+ "creator_username": "admin",
+ "creator_name": null
+ }
+ }
+}
+```
diff --git a/doc/tr_TR/windows-apache-installation.markdown b/doc/tr_TR/windows-apache-installation.markdown
new file mode 100644
index 00000000..d45c1117
--- /dev/null
+++ b/doc/tr_TR/windows-apache-installation.markdown
@@ -0,0 +1,130 @@
+Windows Server ve Apache üzerinde Kurulum
+=========================================
+
+Bu kılavuz, bir Windows Server'da Apache ve PHP ile adım adım Kanboard kurmanıza yardımcı olacaktır.
+
+Not: 64 bitlik bir platformunuz varsa "x64" seçin, aksi halde 32-bit sistemler için "x86" seçeneğini seçin.
+
+Visual C ++ Yeniden Dağıtılabilir-Redistributable Kurulum
+---------------------------------------
+
+PHP ve Apache Visual Studio ile derlenmiştir, bu kütüphaneyi henüz kurmadıysanız yüklemeniz gerekir.
+
+1. Kitaplığı [resmi Microsoft web sitesinden](http://www.microsoft.com/en-us/download/details.aspx?id=30679) indirin.
+2. Yükleyicilerden `vcredist_x64.exe` veya `vcredist_x86.exe` yi platformunuza göre çalıştırın
+
+Apache kurulumu
+---------------------------------------
+
+1. Apache ikili-binary dosyasını [Apache Lounge](http://www.apachelounge.com/download/) adresinden indirin.
+2. Apache24 ü `C:\Apache24` klasörününe sıkıştırılmış dosyaları açın.
+
+### Sunucu adını tanımla
+
+`C:\Apache24\conf\httpd.conf` dosyasını açın ve yönergeyi ekleyin:
+
+```
+ServerName localhost
+```
+
+### Apache hizmetini-service kur
+
+Bir komut istemi açın (`cmd.exe`) ve `C:\Apache24\bin` dizinine gidin:
+
+```bash
+cd C:\Apache24\bin
+
+# Windows hizmetini-service yükle
+httpd.exe -k install
+```
+
+### ApacheMonitor'i kur
+
+- `C:\Apache24\bin\ApacheMonitor.exe` dosyasına çift tıklayın veya başlangıç klasörüne koyun.
+- Simgesine sağ tıklayın ve Apache'yi başlatın.
+
+### Apache kurulumunu kontrol edin
+
+http://localhost/ adresine giderseniz, "It works! / Çalışıyor!" metniyle birlikte boş bir sayfa görmeniz gerekir.
+
+PHP kurulumu
+----------------
+
+1. PHP'nin son kararlı sürümünü [resmi PHP web sitesinden](http://windows.php.net/download/) indirin, **İş Parçası Güvenli-Thread Safe** sürümünü seçin ve Apache ile aynı yapı türünü kullanın: x86 or x64
+2. `C:\php` klasörüne sıkıştırılmış dosyaları açın
+3. PHP klasörüne gidin ve `php.ini-production` dosyasını `php.ini` olarak yeniden adlandırın
+
+`php.ini` yi düzenleyin:
+
+Uzantı dizininindeki yorum işaretlerini-Uncomment kaldırın:
+
+```ini
+extension_dir = "C:/php/ext"
+```
+
+Şu PHP modüllerininden yorum işaretlerini-Uncomment kaldırın:
+
+```ini
+extension=php_gd2.dll
+extension=php_ldap.dll
+extension=php_mbstring.dll
+extension=php_openssl.dll
+extension=php_pdo_sqlite.dll
+```
+
+Saat dilimini ayarlayın:
+
+```ini
+date.timezone = Europe/Istanbul
+```
+
+Desteklenen saat dilimlerinin listesi [PHP belgeleri](http://php.net/manual/en/timezones.america.php) adresinde bulunabilir.
+
+Apache için PHP modülünü yükleyin:
+
+Şu yapılandırmayı `C:\Apache24\conf\httpd.conf` dosyasına ekleyin:
+
+```
+LoadModule php5_module "c:/php/php5apache2_4.dll"
+AddHandler application/x-httpd-php .php
+
+# configure the path to php.ini
+PHPIniDir "C:/php"
+
+# change this directive
+DirectoryIndex index.php index.html
+```
+
+Apache'yi yeniden başlatın.
+
+PHP kurulumunuzu test edin:
+
+`C:\Apache24\htdocs` klasöründe `phpinfo.php` adlı bir dosya oluşturun:
+
+```php
+<?php
+
+phpinfo();
+
+?>
+```
+
+http://localhost/phpinfo.php adresine gidin ve PHP kurulumunuzla ilgili tüm bilgileri görmelisiniz.
+
+Kanboard kurulumu
+---------------------
+
+- Zipli dosyayı indirin
+- Sıkıştırılmış arşiv dosyasının `C:\Apache24\htdocs\kanboard` klasöründe sıkıştırmasını açın
+- Kanboard'u kullanmak için http://localhost/kanboard/ adresini web tarayıcınızı açın
+- Varsayılan kimlik bilgileri **kullanıcı adı:admin/şifre:admin**
+
+Test edilmiş yapılandırma
+--------------------
+
+- Windows 2008 R2 / Apache 2.4.12 / PHP 5.6.8
+
+Not
+-----
+
+- Kanboard'un bazı özellikleri, [günlük arka plan işi-cronjob](cronjob.markdown) çalıştırmanızı gerektirir.
diff --git a/doc/tr_TR/windows-iis-installation.markdown b/doc/tr_TR/windows-iis-installation.markdown
new file mode 100644
index 00000000..9d8d0d67
--- /dev/null
+++ b/doc/tr_TR/windows-iis-installation.markdown
@@ -0,0 +1,67 @@
+Windows 2008/2012 üzerinde IIS ile Yükleme
+==========================================
+
+Bu kılavuz, Kanboard'un IIS ve PHP ile Windows Server'da adım adım kurulmasına yardımcı olacaktır.
+
+PHP kurulumu
+----------------
+
+- IIS'yi sunucunuza yükleyin (yeni bir rol ekleyin ve CGI/FastCGI'yi etkinleştirmeyi unutmayın)
+- Resmi belgeleri izleyerek PHP'yi kurun:
+ - [Microsoft IIS 5.1 ve IIS 6.0](http://php.net/manual/tr/install.windows.iis6.php)
+ - [Microsoft IIS 7.0 ve sonrası](http://php.net/manual/en/install.windows.iis7.php)
+ - [PHP for Windows burada mevcuttur](http://windows.php.net/download/)
+
+
+### PHP.ini
+
+En azından bu uzantıları `php.ini` dosyanızda bulmanız gerekir:
+
+```ini
+extension=php_gd2.dll
+extension=php_ldap.dll
+extension=php_mbstring.dll
+extension=php_openssl.dll
+extension=php_pdo_sqlite.dll
+```
+
+Gerekli PHP uzantılarının tam listesi [gereksinimler sayfasında](requirements.markdown) dır.
+
+Saat dilimini ayarlamayı unutmayın:
+
+```ini
+date.timezone = Europe/Istanbul
+```
+
+Desteklenen saat dilimleri listesi [PHP belgelerinde](http://php.net/manual/tr/timezones.europe.php) bulunabilir.
+
+Notlar:
+
+- PHP <5.4 kullanıyorsanız, php.ini dosyanızdaki kısa etiketleri etkinleştirmeniz gerekir
+- Yukarıda belirtilen gerekli php uzantılarını etkinleştirmeyi unutmayın
+- "MSVCP110.dll kütüphanesi eksik / the library MSVCP110.dll is missing" konusunda bir hata alırsanız, Microsoft web sitesinden Visual Studio için Visual C ++ Yeniden Dağıtılabilir (Visual C++ Redistributable for Visual Studio) dosyasını indirmeniz gerekebilir.
+
+IIS Modülleri
+-----------
+
+Kanboard arşivi(sıkıştırılmış dosya) [URL yeniden yazma](nice-urls.markdown) özelliğini etkinleştirmek için bir `web.config` dosyası içerir.
+Bu yapılandırma [IIS için yeniden yazma modülü-Rewrite module for IIS](http://www.iis.net/learn/extensions/url-rewrite-module/using-the-url-rewrite-module) gerektirir.
+
+Yeniden yazma modülünüz yoksa, IIS'den bir dahili sunucu hatası (500) alırsınız.
+Kanboard'da okunabilir-hoş URL'lerle sahip olmak istemiyorsanız `web.config` dosyasını kaldırabilirsiniz.
+
+Kanboard kurulumu
+---------------------
+
+- Zip-arşivi(sıkıştırılmış dosya) dosyasını indirin
+- Arşivi(sıkıştırılmış dosya) `C:\inetpub\wwwroot\kanboard` klasörüne sıkıştırılmış dosyaları açınız
+- `veri 'dizininin IIS kullanıcısı tarafından yazılabilir olduğundan emin olun
+- Kanboard'u kullanmak için web tarayıcınızı açın http: // localhost / kanboard /
+- Varsayılan kimlik bilgileri **admin/admin**
+- [URL yeniden yazma yapılandırması](nice-urls.markdown)
+
+Notlar
+-----
+
+- Kanboard'un bazı özellikleri, [günlük arka plan işi-cronjob](cronjob.markdown) çalıştırmanızı gerektirir.
+
diff --git a/doc/tr_TR/worker.markdown b/doc/tr_TR/worker.markdown
new file mode 100644
index 00000000..808884af
--- /dev/null
+++ b/doc/tr_TR/worker.markdown
@@ -0,0 +1,37 @@
+Arka Plan Çalışanları-Workers
+==================
+
+**Bu özellik deneyseldir**.
+
+Yapılandırmanıza bağlı olarak, bazı özellikler HTTP isteği ile aynı işlemde yürütülürse uygulamayı yavaşlatabilir.
+Kanboard, bu görevleri gelen olayları dinleyen bir arka plan işçisine devredebilir.
+
+Kanboard'u yavaşlatabilecek özellik örneği:
+
+- Harici bir SMTP sunucusu üzerinden e-posta göndermek birkaç saniye sürebilir
+- Dış hizmetleri bildirim gönderme
+
+Bu özellik isteğe bağlıdır ve sunucunuza bir sıra arka plan programının yüklenmesini gerektirir.
+
+### Beanstalk
+
+[Beanstalk](http://kr.github.io/beanstalkd/) basit, hızlı bir iş kuyruğu.
+
+- Beanstalk'u kurmak için, Linux dağıtımınızın paket yöneticisini kullanabilirsiniz
+- [Beanstalk için Kanboard eklentisi](https://kanboard.net/plugin/beanstalk)
+- Çalışanı Kanboard komut satırı aracıyla çalıştırın: `./cli worker`
+
+### RabbitMQ
+
+[RabbitMQ](https://www.rabbitmq.com/), yüksek kullanılabilirlikli altyapı için daha uygun olan sağlam bir mesajlaşma sistemidir.
+
+- Kurulum ve yapılandırma için RabbitMQ'nun resmi belgelerini takip edin
+- [RabboardMQ için Kanboard eklentisi](https://kanboard.net/plugin/rabbitmq)
+- Çalışanı Kanboard komut satırı aracıyla çalıştırın: `./cli worker`
+
+### Notlar
+
+- Kanboard çalışana bir süreç denetçisi (systemd, upstart veya supervisord) ile başlanmalıdır.
+- Dosyaları yerel dosya sisteminde saklıyorsanız veya Sqlite'i kullanıyorsanız işlemin veri klasörüne erişmesi gerekir
+
+
diff --git a/doc/transitions.markdown b/doc/transitions.markdown
deleted file mode 100644
index 7b2ad97b..00000000
--- a/doc/transitions.markdown
+++ /dev/null
@@ -1,20 +0,0 @@
-Task transitions
-================
-
-Transitions record each movement of the tasks between columns.
-
-![Transitions](https://kanboard.net/screenshots/documentation/transitions.png)
-
-Available from the task view, you can see that information:
-
-- Date of the action
-- Source column
-- Destination column
-- Executor (users that moves the task)
-- Time spent in the origin column
-
-Task transition data can also be exported from the project settings page.
-
-![Transitions Export](https://kanboard.net/screenshots/documentation/transitions-export.png)
-
-For the specified time range you will generate a CSV file that you can use with any spreadsheet software.
diff --git a/doc/update.markdown b/doc/update.markdown
deleted file mode 100644
index 44f81ff0..00000000
--- a/doc/update.markdown
+++ /dev/null
@@ -1,34 +0,0 @@
-Upgrade Kanboard to a new version
-=================================
-
-Upgrading Kanboard to a newer version is seamless.
-The process can be summarized to simply copy your data folder to the new Kanboard folder.
-Kanboard will run database migrations automatically for you.
-
-Important things to do before updating
---------------------------------------
-
-- **Always make a backup of your data before upgrading**
-- Check that your backup is valid
-- Always read the [change log](https://github.com/fguillot/kanboard/blob/master/ChangeLog) to check for breaking changes
-- Always close all user sessions (flush all sessions on the server)
-
-From the archive (stable version)
----------------------------------
-
-1. Decompress the new archive
-2. Copy the content of your data folder into the newly uncompressed directory
-3. Copy your custom `config.php` if you have one
-4. Copy your plugins if necessary
-5. Make sure the directory `data` is writeable by your web server user
-6. Test
-7. Remove your old Kanboard directory
-
-From the repository (development version)
------------------------------------------
-
-1. `git pull`
-2. `composer install --no-dev`
-3. Login and check if everything is ok
-
-Note: This method will install the **current development version**, use at your own risk.
diff --git a/doc/webhooks.markdown b/doc/webhooks.markdown
deleted file mode 100644
index 628c7e38..00000000
--- a/doc/webhooks.markdown
+++ /dev/null
@@ -1,271 +0,0 @@
-Web Hooks
-=========
-
-Webhooks are useful to perform actions with external applications.
-
-- Webhooks can be used to create a task by calling a simple URL (You can also do that with the API)
-- An external URL can be called automatically when an event occurs in Kanboard (task creation, comment updated, etc)
-
-How to write a web hook receiver?
----------------------------------
-
-All internal events of Kanboard can be sent to an external URL.
-
-- The web hook URL has to be defined in **Settings > Webhooks > Webhook URL**.
-- When an event is triggered Kanboard calls the pre-defined URL automatically
-- The data are encoded in JSON format and sent with a POST HTTP request
-- The web hook token is also sent as a query string parameter, so you can check if the request really comes from Kanboard.
-- **Your custom URL must answer in less than 1 second**, those requests are synchronous (PHP limitation) and that can slow down the user interface if your script is too slow!
-
-### List of supported events
-
-- comment.create
-- comment.update
-- file.create
-- task.move.project
-- task.move.column
-- task.move.position
-- task.move.swimlane
-- task.update
-- task.create
-- task.close
-- task.open
-- task.assignee_change
-- subtask.update
-- subtask.create
-
-### Example of HTTP request
-
-```
-POST https://your_webhook_url/?token=WEBHOOK_TOKEN_HERE
-User-Agent: Kanboard Webhook
-Content-Type: application/json
-Connection: close
-
-{
- "event_name": "task.move.column",
- "event_data": {
- "task_id": "1",
- "project_id": "1",
- "position": 1,
- "column_id": "1",
- "swimlane_id": "0",
- "src_column_id": "2",
- "dst_column_id": "1",
- "date_moved": "1431991532",
- "recurrence_status": "0",
- "recurrence_trigger": "0"
- }
-}
-```
-
-All event payloads are in the following format:
-
-```json
-{
- "event_name": "model.event_name",
- "event_data": {
- "key1": "value1",
- "key2": "value2",
- ...
- }
-}
-```
-
-The `event_data` values are not necessary normalized across events.
-
-### Examples of event payloads
-
-Task creation:
-
-```json
-{
- "event_name": "task.create",
- "event_data": {
- "title": "Demo",
- "description": "",
- "project_id": "1",
- "owner_id": "1",
- "category_id": 0,
- "swimlane_id": 0,
- "column_id": "2",
- "color_id": "yellow",
- "score": 0,
- "time_estimated": 0,
- "date_due": 0,
- "creator_id": 1,
- "date_creation": 1431991532,
- "date_modification": 1431991532,
- "date_moved": 1431991532,
- "position": 1,
- "task_id": 1
- }
-}
-```
-
-Task modification:
-
-```json
-{
- "event_name": "task.update",
- "event_data": {
- "id": "1",
- "title": "Demo",
- "description": "",
- "date_creation": "1431991532",
- "color_id": "yellow",
- "project_id": "1",
- "column_id": "1",
- "owner_id": "1",
- "position": "1",
- "is_active": "1",
- "date_completed": null,
- "score": "0",
- "date_due": "0",
- "category_id": "2",
- "creator_id": "1",
- "date_modification": 1431991603,
- "reference": "",
- "date_started": 1431993600,
- "time_spent": 0,
- "time_estimated": 0,
- "swimlane_id": "0",
- "date_moved": "1431991572",
- "recurrence_status": "0",
- "recurrence_trigger": "0",
- "recurrence_factor": "0",
- "recurrence_timeframe": "0",
- "recurrence_basedate": "0",
- "recurrence_parent": null,
- "recurrence_child": null,
- "task_id": "1",
- "changes": {
- "category_id": "2"
- }
- }
-}
-```
-
-Task update events have a field called `changes` that contains updated values.
-
-Move a task to another column:
-
-```json
-{
- "event_name": "task.move.column",
- "event_data": {
- "task_id": "1",
- "project_id": "1",
- "position": 1,
- "column_id": "1",
- "swimlane_id": "0",
- "src_column_id": "2",
- "dst_column_id": "1",
- "date_moved": "1431991532",
- "recurrence_status": "0",
- "recurrence_trigger": "0"
- }
-}
-```
-
-Move a task to another position:
-
-```json
-{
- "event_name": "task.move.position",
- "event_data": {
- "task_id": "2",
- "project_id": "1",
- "position": 1,
- "column_id": "1",
- "swimlane_id": "0",
- "src_column_id": "1",
- "dst_column_id": "1",
- "date_moved": "1431996905",
- "recurrence_status": "0",
- "recurrence_trigger": "0"
- }
-}
-```
-
-Comment creation:
-
-```json
-{
- "event_name": "comment.create",
- "event_data": {
- "id": 1,
- "task_id": "1",
- "user_id": "1",
- "comment": "test",
- "date_creation": 1431991615
- }
-}
-```
-
-Comment modification:
-
-```
-{
- "event_name": "comment.update",
- "event_data": {
- "id": "1",
- "task_id": "1",
- "user_id": "1",
- "comment": "test edit"
- }
-}
-```
-
-Subtask creation:
-
-```json
-{
- "event_name": "subtask.create",
- "event_data": {
- "id": 3,
- "task_id": "1",
- "title": "Test",
- "user_id": "1",
- "time_estimated": "2",
- "position": 3
- }
-}
-```
-
-Subtask modification:
-
-```json
-{
- "event_name": "subtask.update",
- "event_data": {
- "id": "1",
- "status": 1,
- "task_id": "1"
- }
-}
-```
-
-File upload:
-
-```json
-{
- "event_name": "file.create",
- "event_data": {
- "task_id": "1",
- "name": "test.png"
- }
-}
-```
-
-Screenshot created:
-
-```json
-{
- "event_name": "file.create",
- "event_data": {
- "task_id": "2",
- "name": "Screenshot taken May 19, 2015 at 10:56 AM"
- }
-}
-```