diff options
69 files changed, 5583 insertions, 1019 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ed993abae73..8501911fde4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -404,6 +404,7 @@ docs lint:    before_script: []    script:      - scripts/lint-doc.sh +    - scripts/lint-changelog-yaml      - mv doc/ /nanoc/content/      - cd /nanoc      # Build HTML from Markdown diff --git a/GITLAB_SHELL_VERSION b/GITLAB_SHELL_VERSION index da902181863..5508e17c23b 100644 --- a/GITLAB_SHELL_VERSION +++ b/GITLAB_SHELL_VERSION @@ -1 +1,2 @@ -5.9.2 +5.9.3 + diff --git a/app/assets/javascripts/cycle_analytics/components/stage_code_component.vue b/app/assets/javascripts/cycle_analytics/components/stage_code_component.vue index e4d62b649e5..45930145b0a 100644 --- a/app/assets/javascripts/cycle_analytics/components/stage_code_component.vue +++ b/app/assets/javascripts/cycle_analytics/components/stage_code_component.vue @@ -1,5 +1,7 @@  <script>    import userAvatarImage from '../../vue_shared/components/user_avatar/user_avatar_image.vue'; +  import limitWarning from './limit_warning_component.vue'; +  import totalTime from './total_time_component.vue';    export default {      props: { @@ -8,6 +10,8 @@      },      components: {        userAvatarImage, +      limitWarning, +      totalTime,      },    };  </script> diff --git a/app/assets/javascripts/cycle_analytics/components/stage_component.vue b/app/assets/javascripts/cycle_analytics/components/stage_component.vue index ab730af8f5b..8c98bd249a1 100644 --- a/app/assets/javascripts/cycle_analytics/components/stage_component.vue +++ b/app/assets/javascripts/cycle_analytics/components/stage_component.vue @@ -1,5 +1,7 @@  <script>    import userAvatarImage from '../../vue_shared/components/user_avatar/user_avatar_image.vue'; +  import limitWarning from './limit_warning_component.vue'; +  import totalTime from './total_time_component.vue';    export default {      props: { @@ -8,6 +10,8 @@      },      components: {        userAvatarImage, +      limitWarning, +      totalTime,      },    };  </script> diff --git a/app/assets/javascripts/cycle_analytics/components/stage_plan_component.vue b/app/assets/javascripts/cycle_analytics/components/stage_plan_component.vue index 152c086a606..75d2f1fd70c 100644 --- a/app/assets/javascripts/cycle_analytics/components/stage_plan_component.vue +++ b/app/assets/javascripts/cycle_analytics/components/stage_plan_component.vue @@ -1,21 +1,25 @@  <script> -import userAvatarImage from '../../vue_shared/components/user_avatar/user_avatar_image.vue'; -import iconCommit from '../svg/icon_commit.svg'; +  import userAvatarImage from '../../vue_shared/components/user_avatar/user_avatar_image.vue'; +  import iconCommit from '../svg/icon_commit.svg'; +  import limitWarning from './limit_warning_component.vue'; +  import totalTime from './total_time_component.vue'; -export default { -  props: { -    items: Array, -    stage: Object, -  }, -  components: { -    userAvatarImage, -  }, -  computed: { -    iconCommit() { -      return iconCommit; +  export default { +    props: { +      items: Array, +      stage: Object,      }, -  }, -}; +    components: { +      userAvatarImage, +      totalTime, +      limitWarning, +    }, +    computed: { +      iconCommit() { +        return iconCommit; +      }, +    }, +  };  </script>  <template>    <div> diff --git a/app/assets/javascripts/cycle_analytics/components/stage_review_component.vue b/app/assets/javascripts/cycle_analytics/components/stage_review_component.vue index 9e66b690404..f54ea7df522 100644 --- a/app/assets/javascripts/cycle_analytics/components/stage_review_component.vue +++ b/app/assets/javascripts/cycle_analytics/components/stage_review_component.vue @@ -1,5 +1,7 @@  <script>    import userAvatarImage from '../../vue_shared/components/user_avatar/user_avatar_image.vue'; +  import limitWarning from './limit_warning_component.vue'; +  import totalTime from './total_time_component.vue';    export default {      props: { @@ -8,6 +10,8 @@      },      components: {        userAvatarImage, +      totalTime, +      limitWarning,      },    };  </script> diff --git a/app/assets/javascripts/cycle_analytics/components/stage_staging_component.vue b/app/assets/javascripts/cycle_analytics/components/stage_staging_component.vue index 2787b5ea47b..5d95ddcd90e 100644 --- a/app/assets/javascripts/cycle_analytics/components/stage_staging_component.vue +++ b/app/assets/javascripts/cycle_analytics/components/stage_staging_component.vue @@ -1,6 +1,8 @@  <script>    import userAvatarImage from '../../vue_shared/components/user_avatar/user_avatar_image.vue';    import iconBranch from '../svg/icon_branch.svg'; +  import limitWarning from './limit_warning_component.vue'; +  import totalTime from './total_time_component.vue';    export default {      props: { @@ -9,6 +11,8 @@      },      components: {        userAvatarImage, +      totalTime, +      limitWarning,      },      computed: {        iconBranch() { diff --git a/app/assets/javascripts/cycle_analytics/components/stage_test_component.vue b/app/assets/javascripts/cycle_analytics/components/stage_test_component.vue index 9c3d39ce011..04d5440b77b 100644 --- a/app/assets/javascripts/cycle_analytics/components/stage_test_component.vue +++ b/app/assets/javascripts/cycle_analytics/components/stage_test_component.vue @@ -1,21 +1,27 @@  <script> -import iconBuildStatus from '../svg/icon_build_status.svg'; -import iconBranch from '../svg/icon_branch.svg'; +  import iconBuildStatus from '../svg/icon_build_status.svg'; +  import iconBranch from '../svg/icon_branch.svg'; +  import limitWarning from './limit_warning_component.vue'; +  import totalTime from './total_time_component.vue'; -export default { -  props: { -    items: Array, -    stage: Object, -  }, -  computed: { -    iconBuildStatus() { -      return iconBuildStatus; +  export default { +    props: { +      items: Array, +      stage: Object,      }, -    iconBranch() { -      return iconBranch; +    components: { +      totalTime, +      limitWarning,      }, -  }, -}; +    computed: { +      iconBuildStatus() { +        return iconBuildStatus; +      }, +      iconBranch() { +        return iconBranch; +      }, +    }, +  };  </script>  <template>    <div> diff --git a/app/assets/javascripts/cycle_analytics/cycle_analytics_bundle.js b/app/assets/javascripts/cycle_analytics/cycle_analytics_bundle.js index 8002b0b23c9..991fcf114da 100644 --- a/app/assets/javascripts/cycle_analytics/cycle_analytics_bundle.js +++ b/app/assets/javascripts/cycle_analytics/cycle_analytics_bundle.js @@ -3,14 +3,12 @@  import Vue from 'vue';  import Cookies from 'js-cookie';  import Translate from '../vue_shared/translate'; -import limitWarningComponent from './components/limit_warning_component.vue';  import stageCodeComponent from './components/stage_code_component.vue';  import stagePlanComponent from './components/stage_plan_component.vue';  import stageComponent from './components/stage_component.vue';  import stageReviewComponent from './components/stage_review_component.vue';  import stageStagingComponent from './components/stage_staging_component.vue';  import stageTestComponent from './components/stage_test_component.vue'; -import totalTime from './components/total_time_component.vue';  import CycleAnalyticsService from './cycle_analytics_service';  import CycleAnalyticsStore from './cycle_analytics_store'; @@ -133,8 +131,4 @@ $(() => {        },      },    }); - -  // Register global components -  Vue.component('limit-warning', limitWarningComponent); -  Vue.component('total-time', totalTime);  }); diff --git a/app/assets/javascripts/issuable_context.js b/app/assets/javascripts/issuable_context.js index 70c364e51fe..1d305f1eb2f 100644 --- a/app/assets/javascripts/issuable_context.js +++ b/app/assets/javascripts/issuable_context.js @@ -67,10 +67,13 @@ const PARTICIPANTS_ROW_COUNT = 7;        originalText = $(this).data("original-text");        if (currentText === originalText) {          $(this).text(lessText); + +        if (gl.lazyLoader) gl.lazyLoader.loadCheck();        } else {          $(this).text(originalText);        } -      return $(".js-participants-hidden").toggle(); + +      $(".js-participants-hidden").toggle();      };      return IssuableContext; diff --git a/app/assets/javascripts/projects_dropdown/service/projects_service.js b/app/assets/javascripts/projects_dropdown/service/projects_service.js index fad956b4c26..9cbd8f21f2a 100644 --- a/app/assets/javascripts/projects_dropdown/service/projects_service.js +++ b/app/assets/javascripts/projects_dropdown/service/projects_service.js @@ -19,7 +19,7 @@ export default class ProjectsService {    getSearchedProjects(searchQuery) {      return this.projectsPath.get({ -      simple: false, +      simple: true,        per_page: 20,        membership: !!gon.current_user_id,        order_by: 'last_activity_at', diff --git a/app/assets/javascripts/repo/components/repo_file.vue b/app/assets/javascripts/repo/components/repo_file.vue index 20ebf840774..8b9cbd23456 100644 --- a/app/assets/javascripts/repo/components/repo_file.vue +++ b/app/assets/javascripts/repo/components/repo_file.vue @@ -95,7 +95,7 @@ export default RepoFile;        </div>      </td> -    <td class="hidden-xs"> +    <td class="hidden-xs text-right">        <span          class="commit-update"          :title="tooltipTitle(file.lastCommitUpdate)"> diff --git a/app/assets/javascripts/repo/components/repo_sidebar.vue b/app/assets/javascripts/repo/components/repo_sidebar.vue index dc1bda95a01..1e40814b95f 100644 --- a/app/assets/javascripts/repo/components/repo_sidebar.vue +++ b/app/assets/javascripts/repo/components/repo_sidebar.vue @@ -75,7 +75,7 @@ export default {        <tr>          <th class="name">Name</th>          <th class="hidden-sm hidden-xs last-commit">Last Commit</th> -        <th class="hidden-xs last-update">Last Update</th> +        <th class="hidden-xs last-update text-right">Last Update</th>        </tr>      </thead>      <tbody> diff --git a/app/assets/javascripts/right_sidebar.js b/app/assets/javascripts/right_sidebar.js index 0c1ec276baf..a41548bd694 100644 --- a/app/assets/javascripts/right_sidebar.js +++ b/app/assets/javascripts/right_sidebar.js @@ -29,30 +29,32 @@ import Cookies from 'js-cookie';        $('.dropdown').on('loading.gl.dropdown', this.sidebarDropdownLoading);        $('.dropdown').on('loaded.gl.dropdown', this.sidebarDropdownLoaded); -      $document.on('click', '.js-sidebar-toggle', function(e, triggered) { -        var $allGutterToggleIcons, $this, $thisIcon; -        e.preventDefault(); -        $this = $(this); -        $thisIcon = $this.find('i'); -        $allGutterToggleIcons = $('.js-sidebar-toggle i'); -        if ($thisIcon.hasClass('fa-angle-double-right')) { -          $allGutterToggleIcons.removeClass('fa-angle-double-right').addClass('fa-angle-double-left'); -          $('aside.right-sidebar').removeClass('right-sidebar-expanded').addClass('right-sidebar-collapsed'); -          $('.page-with-sidebar').removeClass('right-sidebar-expanded').addClass('right-sidebar-collapsed'); -        } else { -          $allGutterToggleIcons.removeClass('fa-angle-double-left').addClass('fa-angle-double-right'); -          $('aside.right-sidebar').removeClass('right-sidebar-collapsed').addClass('right-sidebar-expanded'); -          $('.page-with-sidebar').removeClass('right-sidebar-collapsed').addClass('right-sidebar-expanded'); - -          if (gl.lazyLoader) gl.lazyLoader.loadCheck(); -        } -        if (!triggered) { -          return Cookies.set("collapsed_gutter", $('.right-sidebar').hasClass('right-sidebar-collapsed')); -        } -      }); +      $document.on('click', '.js-sidebar-toggle', this.sidebarToggleClicked);        return $(document).off('click', '.js-issuable-todo').on('click', '.js-issuable-todo', this.toggleTodo);      }; +    Sidebar.prototype.sidebarToggleClicked = function (e, triggered) { +      var $allGutterToggleIcons, $this, $thisIcon; +      e.preventDefault(); +      $this = $(this); +      $thisIcon = $this.find('i'); +      $allGutterToggleIcons = $('.js-sidebar-toggle i'); +      if ($thisIcon.hasClass('fa-angle-double-right')) { +        $allGutterToggleIcons.removeClass('fa-angle-double-right').addClass('fa-angle-double-left'); +        $('aside.right-sidebar').removeClass('right-sidebar-expanded').addClass('right-sidebar-collapsed'); +        $('.page-with-sidebar').removeClass('right-sidebar-expanded').addClass('right-sidebar-collapsed'); +      } else { +        $allGutterToggleIcons.removeClass('fa-angle-double-left').addClass('fa-angle-double-right'); +        $('aside.right-sidebar').removeClass('right-sidebar-collapsed').addClass('right-sidebar-expanded'); +        $('.page-with-sidebar').removeClass('right-sidebar-collapsed').addClass('right-sidebar-expanded'); + +        if (gl.lazyLoader) gl.lazyLoader.loadCheck(); +      } +      if (!triggered) { +        Cookies.set("collapsed_gutter", $('.right-sidebar').hasClass('right-sidebar-collapsed')); +      } +    }; +      Sidebar.prototype.toggleTodo = function(e) {        var $btnText, $this, $todoLoading, ajaxType, url;        $this = $(e.currentTarget); diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb index 21fb17e06d6..4c0cce54527 100644 --- a/app/helpers/projects_helper.rb +++ b/app/helpers/projects_helper.rb @@ -21,11 +21,14 @@ module ProjectsHelper      classes = %W[avatar avatar-inline s#{opts[:size]}]      classes << opts[:avatar_class] if opts[:avatar_class] -    image_tag(avatar_icon(author, opts[:size]), width: opts[:size], class: classes, alt: '') +    avatar = avatar_icon(author, opts[:size]) +    src = opts[:lazy_load] ? nil : avatar + +    image_tag(src, width: opts[:size], class: classes, alt: '', "data-src" => avatar)    end    def link_to_member(project, author, opts = {}, &block) -    default_opts = { avatar: true, name: true, size: 16, author_class: 'author', title: ":name", tooltip: false } +    default_opts = { avatar: true, name: true, size: 16, author_class: 'author', title: ":name", tooltip: false, lazy_load: false }      opts = default_opts.merge(opts)      return "(deleted)" unless author diff --git a/app/models/repository.rb b/app/models/repository.rb index 1f4df50a913..a0f57f1e54d 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -34,7 +34,10 @@ class Repository    CACHED_METHODS = %i(size commit_count rendered_readme contribution_guide                        changelog license_blob license_key gitignore koding_yml                        gitlab_ci_yml branch_names tag_names branch_count -                      tag_count avatar exists? empty? root_ref).freeze +                      tag_count avatar exists? empty? root_ref has_visible_content?).freeze + +  # Methods that use cache_method but only memoize the value +  MEMOIZED_CACHED_METHODS = %i(license empty_repo?).freeze    # Certain method caches should be refreshed when certain types of files are    # changed. This Hash maps file types (as returned by Gitlab::FileDetector) to @@ -269,7 +272,7 @@ class Repository    end    def expire_branches_cache -    expire_method_caches(%i(branch_names branch_count)) +    expire_method_caches(%i(branch_names branch_count has_visible_content?))      @local_branches = nil      @branch_exists_memo = nil    end @@ -340,7 +343,7 @@ class Repository    def expire_emptiness_caches      return unless empty? -    expire_method_caches(%i(empty?)) +    expire_method_caches(%i(empty? has_visible_content?))    end    def lookup_cache diff --git a/app/views/shared/issuable/_participants.html.haml b/app/views/shared/issuable/_participants.html.haml index 8a71819aa8e..d2b62557e03 100644 --- a/app/views/shared/issuable/_participants.html.haml +++ b/app/views/shared/issuable/_participants.html.haml @@ -11,7 +11,7 @@    .hide-collapsed.participants-list      - participants.each do |participant|        .participants-author.js-participants-author -        = link_to_member(@project, participant, name: false, size: 24) +        = link_to_member(@project, participant, name: false, size: 24, lazy_load: true)    - if participants_extra > 0      .hide-collapsed.participants-more        %a.js-participants-more{ href: "#", data: { original_text: "+ #{participants_size - 7} more", less_text: "- show less" } } diff --git a/changelogs/unreleased/34366-issue-sidebar-don-t-render-participants-in-collapsed-state.yml b/changelogs/unreleased/34366-issue-sidebar-don-t-render-participants-in-collapsed-state.yml new file mode 100644 index 00000000000..d34e685b5f5 --- /dev/null +++ b/changelogs/unreleased/34366-issue-sidebar-don-t-render-participants-in-collapsed-state.yml @@ -0,0 +1,5 @@ +--- +title: Load sidebar participants avatars only when visible +merge_request: 14270 +author: +type: other diff --git a/changelogs/unreleased/38052-use-simple-api-for-projects.yml b/changelogs/unreleased/38052-use-simple-api-for-projects.yml new file mode 100644 index 00000000000..49c7485861e --- /dev/null +++ b/changelogs/unreleased/38052-use-simple-api-for-projects.yml @@ -0,0 +1,5 @@ +--- +title: Use `simple=true` for projects API in Projects dropdown for better search performance +merge_request: +author: +type: other diff --git a/changelogs/unreleased/38571-fix-exception-in-raven-report.yml b/changelogs/unreleased/38571-fix-exception-in-raven-report.yml new file mode 100644 index 00000000000..62e3b8d304c --- /dev/null +++ b/changelogs/unreleased/38571-fix-exception-in-raven-report.yml @@ -0,0 +1,6 @@ +--- +title: Ensure no exception is raised when Raven tries to get the current user in API +  context +merge_request: 14580 +author: +type: fixed diff --git a/changelogs/unreleased/remote_user.yml b/changelogs/unreleased/remote_user.yml new file mode 100644 index 00000000000..75a941fa95f --- /dev/null +++ b/changelogs/unreleased/remote_user.yml @@ -0,0 +1,4 @@ +--- +title: Add username as GL_USERNAME in hooks +merge_request: +author: diff --git a/changelogs/unreleased/sh-fix-issue-38646.yml b/changelogs/unreleased/sh-fix-issue-38646.yml new file mode 100644 index 00000000000..5c205775662 --- /dev/null +++ b/changelogs/unreleased/sh-fix-issue-38646.yml @@ -0,0 +1,5 @@ +--- +title: Fix pushes to an empty repository not invalidating has_visible_content? cache +merge_request: +author: +type: fixed diff --git a/doc/development/gitaly.md b/doc/development/gitaly.md index f0be3a6b141..e41d258bec6 100644 --- a/doc/development/gitaly.md +++ b/doc/development/gitaly.md @@ -12,6 +12,7 @@ status of the migration.  Gitaly makes heavy use of [feature flags](feature_flags.md).  Each Rugged-to-Gitaly migration goes through a [series of phases](https://gitlab.com/gitlab-org/gitaly/blob/master/doc/MIGRATION_PROCESS.md): +  * **Opt-In**: by default the Rugged implementation is used.    * Production instances can choose to enable the Gitaly endpoint by enabling the feature flag.    * For testing purposes, you may wish to enable all feature flags by default. This can be done by exporting the following @@ -19,7 +20,7 @@ Each Rugged-to-Gitaly migration goes through a [series of phases](https://gitlab    * On developer instances (ie, when `Rails.env.development?` is true), the Gitaly endpoint      is enabled by default, but can be _disabled_ using feature flags.  * **Opt-Out**: by default, the Gitaly endpoint is used, but the feature can be explicitly disabled using the feature flag. -* **Madatory**: The migration is complete and cannot be disabled. The old codepath is removed. +* **Mandatory**: The migration is complete and cannot be disabled. The old codepath is removed.  ### Enabling and Disabling Feature @@ -49,6 +50,35 @@ If your test-suite is failing with Gitaly issues, as a first step, try running:  rm -rf tmp/tests/gitaly  ``` +## `TooManyInvocationsError` errors + +During development and testing, you may experience `Gitlab::GitalyClient::TooManyInvocationsError` failures.  +The `GitalyClient` will attempt to block against potential n+1 issues by raising this error  +when Gitaly is called more than 30 times in a single Rails request or Sidekiq execution. + +As a temporary measure, export `GITALY_DISABLE_REQUEST_LIMITS=1` to suppress the error. This will disable the n+1 detection +in your development environment. + +Please raise an issue in the GitLab CE or EE repositories to report the issue. Include the labels ~Gitaly +~performance ~"technical debt". Please ensure that the issue contains the full stack trace and error message of the +`TooManyInvocationsError`. Also include any known failing tests if possible. + +Isolate the source of the n+1 problem. This will normally be a loop that results in Gitaly being called for each +element in an array. If you are unable to isolate the problem, please contact a member  +of the [Gitaly Team](https://gitlab.com/groups/gl-gitaly/group_members) for assistance. + +Once the source has been found, wrap it in an `allow_n_plus_1_calls` block, as follows: + +```ruby +# n+1: link to n+1 issue +Gitlab::GitalyClient.allow_n_plus_1_calls do +  # original code +  commits.each { |commit| ... } +end +``` + +Once the code is wrapped in this block, this code-path will be excluded from n+1 detection. +  ---  [Return to Development documentation](README.md) diff --git a/doc/install/kubernetes/gitlab_chart.md b/doc/install/kubernetes/gitlab_chart.md index 177124c8291..ddfd47df099 100644 --- a/doc/install/kubernetes/gitlab_chart.md +++ b/doc/install/kubernetes/gitlab_chart.md @@ -1,8 +1,13 @@  # GitLab Helm Chart  > **Note**: -* This chart will be replaced by the [gitlab-omnibus](gitlab_omnibus.md) chart, once it supports [additional configuration options](https://gitlab.com/charts/charts.gitlab.io/issues/68). +* This chart will be replaced by the [gitlab-omnibus](gitlab_omnibus.md) chart, once it supports [additional configuration options](https://gitlab.com/charts/charts.gitlab.io/issues/68). For more information on available charts, please see our [overview](index.md#chart-overview).  * These charts have been tested on Google Container Engine and Azure Container Service. Other Kubernetes installations may work as well, if not please [open an issue](https://gitlab.com/charts/charts.gitlab.io/issues). + +For more information on available GitLab Helm Charts, please see our [overview](index.md#chart-overview). + +## Introduction +  The `gitlab` Helm chart deploys just GitLab into your Kubernetes cluster, and offers extensive configuration options. This chart requires advanced knowledge of Kubernetes to successfully use. For most deployments we **strongly recommended** the [gitlab-omnibus](gitlab_omnibus.md) chart, which will replace this chart once it supports [additional configuration options](https://gitlab.com/charts/charts.gitlab.io/issues/68). Due to the difficulty in supporting upgrades to the `omnibus-gitlab` chart, migrating will require exporting data out of this instance and importing it into the new deployment.  This chart includes the following: @@ -15,8 +20,6 @@ This chart includes the following:  - Optional PostgreSQL deployment using the [PostgreSQL Chart](https://github.com/kubernetes/charts/tree/master/stable/postgresql) (defaults to enabled)  - Optional Ingress (defaults to disabled) -For more information on available GitLab Helm Charts, please see our [overview](index.md#chart-overview). -  ## Prerequisites  - _At least_ 3 GB of RAM available on your cluster. 41GB of storage and 2 CPU are also required. diff --git a/doc/install/kubernetes/index.md b/doc/install/kubernetes/index.md index 467d5b92e0c..aed00ae9e2c 100644 --- a/doc/install/kubernetes/index.md +++ b/doc/install/kubernetes/index.md @@ -9,12 +9,12 @@ should be deployed, upgraded, and configured.  ## Chart Overview -* **[GitLab-Omnibus](#gitlab-omnibus-chart-recommended)**: The best way to run GitLab on Kubernetes today. It is suited for small to medium deployments, and is in beta while support for backups and other features are added. -* **[Upcoming Cloud Native Charts](#upcoming-cloud-native-helm-charts)**: The next generation of charts, currently in development. Will support large deployments, with horizontal scaling of individual GitLab components. +* **[GitLab-Omnibus](gitlab_omnibus.md)**: The best way to run GitLab on Kubernetes today. It is suited for small to medium deployments, and is in beta while support for backups and other features are added. +* **[Cloud Native GitLab Chart](https://gitlab.com/charts/helm.gitlab.io/blob/master/README.md)**: The next generation GitLab chart, currently in development. Will support large deployments with horizontal scaling of individual GitLab components.  * Other Charts -  * [GitLab Runner Chart](#gitlab-runner-chart): For deploying just the GitLab Runner. -  * [Advanced GitLab Installation](#advanced-gitlab-installation): Provides additional deployment options, but provides less functionality out-of-the-box. It's beta, no longer actively developed, and will be deprecated by [gitlab-omnibus](#gitlab-omnibus-chart-recommended) once it supports these options. -  * [Community Contributed Charts](#community-contributed-charts): Community contributed charts, deprecated by the official GitLab charts. +  * [GitLab Runner Chart](gitlab_runner_chart.md): For deploying just the GitLab Runner. +  * [Advanced GitLab Installation](gitlab_chart.md): Provides additional deployment options, but provides less functionality out-of-the-box. It's beta, no longer actively developed, and will be deprecated by [gitlab-omnibus](#gitlab-omnibus-chart-recommended) once it supports these options. +  * [Community Contributed Charts](#community-contributed-charts): Community contributed charts, deprecated by the official GitLab chart.  ## GitLab-Omnibus Chart (Recommended)  > **Note**: This chart is in beta while [additional features](https://gitlab.com/charts/charts.gitlab.io/issues/68) are being added. @@ -25,9 +25,9 @@ Once the [cloud native charts](#upcoming-cloud-native-helm-charts) are ready for  Learn more about the [gitlab-omnibus chart.](gitlab_omnibus.md) -## Upcoming Cloud Native Charts +## Cloud Native GitLab Chart -GitLab is working towards building a [cloud native deployment method](https://gitlab.com/charts/helm.gitlab.io/blob/master/README.md). A key part of this effort is to isolate each service into its [own Docker container and Helm chart](https://gitlab.com/gitlab-org/omnibus-gitlab/issues/2420), rather than utilizing the all-in-one container image of the [current charts](#official-gitlab-helm-charts-recommended). +GitLab is working towards building a [cloud native GitLab chart](https://gitlab.com/charts/helm.gitlab.io/blob/master/README.md). A key part of this effort is to isolate each service into its [own Docker container and Helm chart](https://gitlab.com/gitlab-org/omnibus-gitlab/issues/2420), rather than utilizing the all-in-one container image of the [current charts](#official-gitlab-helm-charts-recommended).  By offering individual containers and charts, we will be able to provide a number of benefits:  * Easier horizontal scaling of each service, @@ -37,6 +37,8 @@ By offering individual containers and charts, we will be able to provide a numbe  This is a large project and will be worked on over the span of multiple releases. For the most up-to-date status and release information, please see our [tracking issue](https://gitlab.com/gitlab-org/omnibus-gitlab/issues/2420). We do not expect these to be production ready before the second half of 2018. +Learn more about the [cloud native GitLab chart.](https://gitlab.com/charts/helm.gitlab.io/blob/master/README.md) +  ## Other Charts  ### GitLab Runner Chart @@ -55,7 +57,7 @@ Learn more about the [gitlab chart.](gitlab_chart.md)  ### Community Contributed Charts -The community has also [contributed GitLab charts](https://github.com/kubernetes/charts/tree/master/stable/gitlab-ce) to the [Helm Stable Repository](https://github.com/kubernetes/charts#repository-structure). These charts should be considered [deprecated](https://github.com/kubernetes/charts/issues/1138) in favor of the [official Charts](#official-gitlab-helm-charts-recommended). +The community has also contributed GitLab [CE](https://github.com/kubernetes/charts/tree/master/stable/gitlab-ce) and [EE](https://github.com/kubernetes/charts/tree/master/stable/gitlab-ee) charts to the [Helm Stable Repository](https://github.com/kubernetes/charts#repository-structure). These charts should be considered [deprecated](https://github.com/kubernetes/charts/issues/1138) in favor of the [official Charts](gitlab_omnibus.md).  [chart]: https://github.com/kubernetes/charts  [helm]: https://github.com/kubernetes/helm/blob/master/README.md diff --git a/doc/user/admin_area/monitoring/health_check.md b/doc/user/admin_area/monitoring/health_check.md index 70934f9960a..843fb4ce26b 100644 --- a/doc/user/admin_area/monitoring/health_check.md +++ b/doc/user/admin_area/monitoring/health_check.md @@ -18,7 +18,7 @@ traffic until the system is ready or restart the container as needed.  To access monitoring resources, the client IP needs to be included in a whitelist. -[Read how to add IPs to a whitelist for the monitoring endpoints.][admin]. +[Read how to add IPs to a whitelist for the monitoring endpoints][admin].  ## Using the endpoint diff --git a/lib/api/helpers.rb b/lib/api/helpers.rb index 1e8475ba3ec..4964a76bef6 100644 --- a/lib/api/helpers.rb +++ b/lib/api/helpers.rb @@ -464,10 +464,12 @@ module API        header(*Gitlab::Workhorse.send_artifacts_entry(build, entry))      end -    # The Grape Error Middleware only has access to env but no params. We workaround this by -    # defining a method that returns the right value. +    # The Grape Error Middleware only has access to `env` but not `params` nor +    # `request`. We workaround this by defining methods that returns the right +    # values.      def define_params_for_grape_middleware -      self.define_singleton_method(:params) { Rack::Request.new(env).params.symbolize_keys } +      self.define_singleton_method(:request) { Rack::Request.new(env) } +      self.define_singleton_method(:params) { request.params.symbolize_keys }      end      # We could get a Grape or a standard Ruby exception. We should only report anything that diff --git a/lib/api/internal.rb b/lib/api/internal.rb index a0557a609ca..6e78ac2c903 100644 --- a/lib/api/internal.rb +++ b/lib/api/internal.rb @@ -31,6 +31,12 @@ module API          protocol = params[:protocol]          actor.update_last_used_at if actor.is_a?(Key) +        user = +          if actor.is_a?(Key) +            actor.user +          else +            actor +          end          access_checker_klass = wiki? ? Gitlab::GitAccessWiki : Gitlab::GitAccess          access_checker = access_checker_klass @@ -47,6 +53,7 @@ module API          {            status: true,            gl_repository: gl_repository, +          gl_username: user&.username,            repository_path: repository_path,            gitaly: gitaly_payload(params[:action])          } diff --git a/lib/gitlab/git/hook.rb b/lib/gitlab/git/hook.rb index 208e4bbaf60..e29a1f7afa1 100644 --- a/lib/gitlab/git/hook.rb +++ b/lib/gitlab/git/hook.rb @@ -22,22 +22,22 @@ module Gitlab          File.exist?(path)        end -      def trigger(gl_id, oldrev, newrev, ref) +      def trigger(gl_id, gl_username, oldrev, newrev, ref)          return [true, nil] unless exists?          Bundler.with_clean_env do            case name            when "pre-receive", "post-receive" -            call_receive_hook(gl_id, oldrev, newrev, ref) +            call_receive_hook(gl_id, gl_username, oldrev, newrev, ref)            when "update" -            call_update_hook(gl_id, oldrev, newrev, ref) +            call_update_hook(gl_id, gl_username, oldrev, newrev, ref)            end          end        end        private -      def call_receive_hook(gl_id, oldrev, newrev, ref) +      def call_receive_hook(gl_id, gl_username, oldrev, newrev, ref)          changes = [oldrev, newrev, ref].join(" ")          exit_status = false @@ -45,6 +45,7 @@ module Gitlab          vars = {            'GL_ID' => gl_id, +          'GL_USERNAME' => gl_username,            'PWD' => repo_path,            'GL_PROTOCOL' => GL_PROTOCOL,            'GL_REPOSITORY' => repository.gl_repository @@ -80,9 +81,13 @@ module Gitlab          [exit_status, exit_message]        end -      def call_update_hook(gl_id, oldrev, newrev, ref) +      def call_update_hook(gl_id, gl_username, oldrev, newrev, ref)          Dir.chdir(repo_path) do -          stdout, stderr, status = Open3.capture3({ 'GL_ID' => gl_id }, path, ref, oldrev, newrev) +          env = { +            'GL_ID' => gl_id, +            'GL_USERNAME' => gl_username +          } +          stdout, stderr, status = Open3.capture3(env, path, ref, oldrev, newrev)            [status.success?, (stderr.presence || stdout).gsub(/\R/, "<br>").html_safe]          end        end diff --git a/lib/gitlab/git/hooks_service.rb b/lib/gitlab/git/hooks_service.rb index ea8a87a1290..c327e9b1616 100644 --- a/lib/gitlab/git/hooks_service.rb +++ b/lib/gitlab/git/hooks_service.rb @@ -5,12 +5,13 @@ module Gitlab        attr_accessor :oldrev, :newrev, :ref -      def execute(committer, repository, oldrev, newrev, ref) -        @repository = repository -        @gl_id      = committer.gl_id -        @oldrev     = oldrev -        @newrev     = newrev -        @ref        = ref +      def execute(pusher, repository, oldrev, newrev, ref) +        @repository  = repository +        @gl_id       = pusher.gl_id +        @gl_username = pusher.name +        @oldrev      = oldrev +        @newrev      = newrev +        @ref         = ref          %w(pre-receive update).each do |hook_name|            status, message = run_hook(hook_name) @@ -29,7 +30,7 @@ module Gitlab        def run_hook(name)          hook = Gitlab::Git::Hook.new(name, @repository) -        hook.trigger(@gl_id, oldrev, newrev, ref) +        hook.trigger(@gl_id, @gl_username, oldrev, newrev, ref)        end      end    end diff --git a/lib/gitlab/git/repository.rb b/lib/gitlab/git/repository.rb index ef76245a608..22b735c6f7b 100644 --- a/lib/gitlab/git/repository.rb +++ b/lib/gitlab/git/repository.rb @@ -656,13 +656,13 @@ module Gitlab        end        def add_branch(branch_name, user:, target:) -        target_object = Ref.dereference_object(lookup(target)) -        raise InvalidRef.new("target not found: #{target}") unless target_object - -        OperationService.new(user, self).add_branch(branch_name, target_object.oid) -        find_branch(branch_name) -      rescue Rugged::ReferenceError => ex -        raise InvalidRef, ex +        gitaly_migrate(:operation_user_create_branch) do |is_enabled| +          if is_enabled +            gitaly_add_branch(branch_name, user, target) +          else +            rugged_add_branch(branch_name, user, target) +          end +        end        end        def add_tag(tag_name, user:, target:, message: nil) @@ -1062,7 +1062,7 @@ module Gitlab        end        def gitaly_repository -        Gitlab::GitalyClient::Util.repository(@storage, @relative_path) +        Gitlab::GitalyClient::Util.repository(@storage, @relative_path, @gl_repository)        end        def gitaly_operations_client @@ -1081,6 +1081,10 @@ module Gitlab          @gitaly_repository_client ||= Gitlab::GitalyClient::RepositoryService.new(self)        end +      def gitaly_operation_client +        @gitaly_operation_client ||= Gitlab::GitalyClient::OperationService.new(self) +      end +        def gitaly_migrate(method, status: Gitlab::GitalyClient::MigrationStatus::OPT_IN, &block)          Gitlab::GitalyClient.migrate(method, status: status, &block)        rescue GRPC::NotFound => e @@ -1472,6 +1476,22 @@ module Gitlab            file.write(gitattributes_content)          end        end + +      def gitaly_add_branch(branch_name, user, target) +        gitaly_operation_client.user_create_branch(branch_name, user, target) +      rescue GRPC::FailedPrecondition => ex +        raise InvalidRef, ex +      end + +      def rugged_add_branch(branch_name, user, target) +        target_object = Ref.dereference_object(lookup(target)) +        raise InvalidRef.new("target not found: #{target}") unless target_object + +        OperationService.new(user, self).add_branch(branch_name, target_object.oid) +        find_branch(branch_name) +      rescue Rugged::ReferenceError +        raise InvalidRef, ex +      end      end    end  end diff --git a/lib/gitlab/git/user.rb b/lib/gitlab/git/user.rb index ea634d39668..cb1af5f3b7c 100644 --- a/lib/gitlab/git/user.rb +++ b/lib/gitlab/git/user.rb @@ -1,24 +1,21 @@  module Gitlab    module Git      class User -      attr_reader :name, :email, :gl_id +      attr_reader :username, :name, :email, :gl_id        def self.from_gitlab(gitlab_user) -        new(gitlab_user.name, gitlab_user.email, Gitlab::GlId.gl_id(gitlab_user)) +        new(gitlab_user.username, gitlab_user.name, gitlab_user.email, Gitlab::GlId.gl_id(gitlab_user))        end -      def self.from_gitaly(gitaly_user) -        new(gitaly_user.name, gitaly_user.email, gitaly_user.gl_id) -      end - -      def initialize(name, email, gl_id) +      def initialize(username, name, email, gl_id) +        @username = username          @name = name          @email = email          @gl_id = gl_id        end        def ==(other) -        [name, email, gl_id] == [other.name, other.email, other.gl_id] +        [username, name, email, gl_id] == [other.username, other.name, other.email, other.gl_id]        end      end    end diff --git a/lib/gitlab/gitaly_client.rb b/lib/gitlab/gitaly_client.rb index 955d2307f88..e75e0500ed8 100644 --- a/lib/gitlab/gitaly_client.rb +++ b/lib/gitlab/gitaly_client.rb @@ -151,7 +151,7 @@ module Gitlab        actual_call_count = increment_call_count("gitaly_#{call_site}_actual")        # Do no enforce limits in production -      return if Rails.env.production? +      return if Rails.env.production? || ENV["GITALY_DISABLE_REQUEST_LIMITS"]        # Check if this call is nested within a allow_n_plus_1_calls        # block and skip check if it is diff --git a/lib/gitlab/gitaly_client/operation_service.rb b/lib/gitlab/gitaly_client/operation_service.rb index 2d5440e7ea8..46bd5c18603 100644 --- a/lib/gitlab/gitaly_client/operation_service.rb +++ b/lib/gitlab/gitaly_client/operation_service.rb @@ -40,6 +40,26 @@ module Gitlab        rescue GRPC::FailedPrecondition => e          raise Gitlab::Git::Repository::InvalidRef, e        end + +      def user_create_branch(branch_name, user, start_point) +        request = Gitaly::UserCreateBranchRequest.new( +          repository: @gitaly_repo, +          branch_name: GitalyClient.encode(branch_name), +          user: Util.gitaly_user(user), +          start_point: GitalyClient.encode(start_point) +        ) +        response = GitalyClient.call(@repository.storage, :operation_service, +          :user_create_branch, request) +        if response.pre_receive_error.present? +          raise Gitlab::Git::HooksService::PreReceiveError.new(response.pre_receive_error) +        end + +        branch = response.branch +        return nil unless branch + +        target_commit = Gitlab::Git::Commit.decorate(@repository, branch.target_commit) +        Gitlab::Git::Branch.new(@repository, branch.name, target_commit.id, target_commit) +      end      end    end  end diff --git a/lib/gitlab/gitaly_client/util.rb b/lib/gitlab/gitaly_client/util.rb index 2fb5875a7a2..da43c616b94 100644 --- a/lib/gitlab/gitaly_client/util.rb +++ b/lib/gitlab/gitaly_client/util.rb @@ -2,10 +2,11 @@ module Gitlab    module GitalyClient      module Util        class << self -        def repository(repository_storage, relative_path) +        def repository(repository_storage, relative_path, gl_repository)            Gitaly::Repository.new(              storage_name: repository_storage,              relative_path: relative_path, +            gl_repository: gl_repository,              git_object_directory: Gitlab::Git::Env['GIT_OBJECT_DIRECTORY'].to_s,              git_alternate_object_directories: Array.wrap(Gitlab::Git::Env['GIT_ALTERNATE_OBJECT_DIRECTORIES'])            ) diff --git a/lib/gitlab/workhorse.rb b/lib/gitlab/workhorse.rb index 17550cf9074..45f246242f1 100644 --- a/lib/gitlab/workhorse.rb +++ b/lib/gitlab/workhorse.rb @@ -22,9 +22,9 @@ module Gitlab          params = {            GL_ID: Gitlab::GlId.gl_id(user),            GL_REPOSITORY: Gitlab::GlRepository.gl_repository(project, is_wiki), +          GL_USERNAME: user&.username,            RepoPath: repo_path          } -          server = {            address: Gitlab::GitalyClient.address(project.repository_storage),            token: Gitlab::GitalyClient.token(project.repository_storage) diff --git a/locale/bg/gitlab.po b/locale/bg/gitlab.po index 9d90f4ed5b1..38d63315fdc 100644 --- a/locale/bg/gitlab.po +++ b/locale/bg/gitlab.po @@ -2,8 +2,8 @@ msgid ""  msgstr ""  "Project-Id-Version: gitlab-ee\n"  "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-09-06 08:32+0200\n" -"PO-Revision-Date: 2017-09-15 05:22-0400\n" +"POT-Creation-Date: 2017-09-27 16:26+0200\n" +"PO-Revision-Date: 2017-09-27 13:45-0400\n"  "Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n"  "Language-Team: Bulgarian\n"  "Language: bg_BG\n" @@ -29,6 +29,9 @@ msgstr[1] "%s подавания бяха пропуснати, за да не   msgid "%{commit_author_link} committed %{commit_timeago}"  msgstr "%{commit_author_link} подаде %{commit_timeago}" +msgid "%{number_commits_behind} commits behind %{default_branch}, %{number_commits_ahead} commits ahead" +msgstr "" +  msgid "%{number_of_failures} of %{maximum_failures} failures. GitLab will allow access on the next attempt."  msgstr "" @@ -51,6 +54,9 @@ msgid_plural "%d pipelines"  msgstr[0] "1 схема"  msgstr[1] "%d схеми" +msgid "1st contribution!" +msgstr "" +  msgid "A collection of graphs regarding Continuous Integration"  msgstr "Набор от графики относно непрекъснатата интеграция" @@ -93,7 +99,7 @@ msgstr "Добавяне на нова папка"  msgid "All"  msgstr "" -msgid "Appearances" +msgid "Appearance"  msgstr ""  msgid "Applications" @@ -117,10 +123,34 @@ msgstr ""  msgid "Are you sure?"  msgstr "" +msgid "Artifacts" +msgstr "" +  msgid "Attach a file by drag & drop or %{upload_link}"  msgstr "Прикачете файл чрез влачене и пускане или %{upload_link}" -msgid "Authentication log" +msgid "Authentication Log" +msgstr "" + +msgid "Auto DevOps (Beta)" +msgstr "" + +msgid "Auto DevOps can be activated for this project. It will automatically build, test, and deploy your application based on a predefined CI/CD configuration." +msgstr "" + +msgid "Auto DevOps documentation" +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need a domain name and the %{kubernetes} to work correctly." +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need a domain name to work correctly." +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need the %{kubernetes} to work correctly." +msgstr "" + +msgid "AutoDevOps|Learn more in the"  msgstr ""  msgid "Billing" @@ -177,6 +207,9 @@ msgstr ""  msgid "Billinglans|Downgrade"  msgstr "" +msgid "Board" +msgstr "" +  msgid "Branch"  msgid_plural "Branches"  msgstr[0] "Клон" @@ -194,6 +227,90 @@ msgstr "Превключване на клона"  msgid "Branches"  msgstr "Клонове" +msgid "Branches|Cant find HEAD commit for this branch" +msgstr "" + +msgid "Branches|Compare" +msgstr "" + +msgid "Branches|Delete all branches that are merged into '%{default_branch}'" +msgstr "" + +msgid "Branches|Delete branch" +msgstr "" + +msgid "Branches|Delete merged branches" +msgstr "" + +msgid "Branches|Delete protected branch" +msgstr "" + +msgid "Branches|Delete protected branch '%{branch_name}'?" +msgstr "" + +msgid "Branches|Deleting the '%{branch_name}' branch cannot be undone. Are you sure?" +msgstr "" + +msgid "Branches|Deleting the merged branches cannot be undone. Are you sure?" +msgstr "" + +msgid "Branches|Filter by branch name" +msgstr "" + +msgid "Branches|Merged into %{default_branch}" +msgstr "" + +msgid "Branches|New branch" +msgstr "" + +msgid "Branches|No branches to show" +msgstr "" + +msgid "Branches|Once you confirm and press %{delete_protected_branch}, it cannot be undone or recovered." +msgstr "" + +msgid "Branches|Only a project master or owner can delete a protected branch" +msgstr "" + +msgid "Branches|Protected branches can be managed in %{project_settings_link}" +msgstr "" + +msgid "Branches|Sort by" +msgstr "" + +msgid "Branches|The branch could not be updated automatically because it has diverged from its upstream counterpart." +msgstr "" + +msgid "Branches|The default branch cannot be deleted" +msgstr "" + +msgid "Branches|This branch hasn’t been merged into %{default_branch}." +msgstr "" + +msgid "Branches|To avoid data loss, consider merging this branch before deleting it." +msgstr "" + +msgid "Branches|To confirm, type %{branch_name_confirmation}:" +msgstr "" + +msgid "Branches|To discard the local changes and overwrite the branch with the upstream version, delete it here and choose 'Update Now' above." +msgstr "" + +msgid "Branches|You’re about to permanently delete the protected branch %{branch_name}." +msgstr "" + +msgid "Branches|diverged from upstream" +msgstr "" + +msgid "Branches|merged" +msgstr "" + +msgid "Branches|project settings" +msgstr "" + +msgid "Branches|protected" +msgstr "" +  msgid "Browse Directory"  msgstr "Преглед на папката" @@ -337,9 +454,6 @@ msgstr "Подадено от"  msgid "Compare"  msgstr "Сравнение" -msgid "Container Registry" -msgstr "" -  msgid "Contribution guide"  msgstr "Ръководство за сътрудничество" @@ -489,6 +603,9 @@ msgstr "Редактиране на плана %{id} за схема"  msgid "Emails"  msgstr "" +msgid "Enable in settings" +msgstr "" +  msgid "EventFilterBy|Filter by all"  msgstr "" @@ -516,6 +633,9 @@ msgstr "Всеки месец (на 1-во число, в 4 ч. сутринта  msgid "Every week (Sundays at 4:00am)"  msgstr "Всяка седмица (в неделя, в 4 ч. сутринта)" +msgid "Explore projects" +msgstr "" +  msgid "Failed to change the owner"  msgstr "Собственикът не може да бъде променен" @@ -572,7 +692,28 @@ msgstr "Към Вашето разклонение"  msgid "GoToYourFork|Fork"  msgstr "Разклонение" -msgid "Group overview" +msgid "GroupSettings|Prevent sharing a project within %{group} with other groups" +msgstr "" + +msgid "GroupSettings|Share with group lock" +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group} and has been overridden on this subgroup." +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group}. To share projects in this group with another group, ask the owner to override the setting or %{remove_ancestor_share_with_group_lock}." +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group}. You can override the setting or %{remove_ancestor_share_with_group_lock}." +msgstr "" + +msgid "GroupSettings|This setting will be applied to all subgroups unless overridden by a group owner. Groups that already have access to the project will continue to have access unless removed manually." +msgstr "" + +msgid "GroupSettings|cannot be disabled when the parent group \"Share with group lock\" is enabled, except by the owner of the parent group" +msgstr "" + +msgid "GroupSettings|remove the share with group lock from %{ancestor_group_name}"  msgstr ""  msgid "Health Check" @@ -593,12 +734,6 @@ msgstr ""  msgid "HealthCheck|Unhealthy"  msgstr "" -msgid "Home" -msgstr "Начало" - -msgid "Hooks" -msgstr "" -  msgid "Housekeeping successfully started"  msgstr "Освежаването започна успешно" @@ -620,6 +755,9 @@ msgstr ""  msgid "Issues"  msgstr "" +msgid "Jobs" +msgstr "" +  msgid "LFSStatus|Disabled"  msgstr "Изключено" @@ -684,6 +822,9 @@ msgstr ""  msgid "Merge events"  msgstr "" +msgid "Merge request" +msgstr "" +  msgid "Messages"  msgstr "" @@ -812,6 +953,18 @@ msgstr ""  msgid "Owner"  msgstr "Собственик" +msgid "Pagination|Last »" +msgstr "" + +msgid "Pagination|Next" +msgstr "" + +msgid "Pagination|Prev" +msgstr "" + +msgid "Pagination|« First" +msgstr "" +  msgid "Password"  msgstr "" @@ -917,10 +1070,7 @@ msgstr "с етапи"  msgid "Preferences"  msgstr "" -msgid "Profile Settings" -msgstr "" - -msgid "Project" +msgid "Profile"  msgstr ""  msgid "Project '%{project_name}' queued for deletion." @@ -953,12 +1103,6 @@ msgstr "Връзката към изнесените данни на проек  msgid "Project export started. A download link will be sent by email."  msgstr "Изнасянето на проекта започна. Ще получите връзка към данните по е-поща." -msgid "Project home" -msgstr "Начална страница на проекта" - -msgid "Project overview" -msgstr "" -  msgid "ProjectActivityRSS|Subscribe"  msgstr "" @@ -983,27 +1127,30 @@ msgstr "Етап"  msgid "ProjectNetworkGraph|Graph"  msgstr "Графика" -msgid "Push Rules" +msgid "ProjectsDropdown|Frequently visited"  msgstr ""  msgid "ProjectsDropdown|Loading projects"  msgstr "" -msgid "ProjectsDropdown|Sorry, no projects matched your search" -msgstr "" -  msgid "ProjectsDropdown|Projects you visit often will appear here"  msgstr ""  msgid "ProjectsDropdown|Search your projects"  msgstr "" -msgid "ProjectsDropdown|Something went wrong on our end" +msgid "ProjectsDropdown|Something went wrong on our end." +msgstr "" + +msgid "ProjectsDropdown|Sorry, no projects matched your search"  msgstr ""  msgid "ProjectsDropdown|This feature requires browser localStorage support"  msgstr "" +msgid "Push Rules" +msgstr "" +  msgid "Push events"  msgstr "" @@ -1019,6 +1166,9 @@ msgstr "Клонове"  msgid "RefSwitcher|Tags"  msgstr "Етикети" +msgid "Registry" +msgstr "" +  msgid "Related Commits"  msgstr "Свързани подавания" @@ -1073,6 +1223,9 @@ msgstr "Запазване на плана за схема"  msgid "Schedule a new pipeline"  msgstr "Създаване на нов план за схема" +msgid "Schedules" +msgstr "" +  msgid "Scheduling Pipelines"  msgstr "Планиране на схемите" @@ -1112,6 +1265,12 @@ msgstr "зададете парола"  msgid "Settings"  msgstr "" +msgid "Show parent pages" +msgstr "" + +msgid "Show parent subgroups" +msgstr "" +  msgid "Showing %d event"  msgid_plural "Showing %d events"  msgstr[0] "Показване на %d събитие" @@ -1120,6 +1279,102 @@ msgstr[1] "Показване на %d събития"  msgid "Snippets"  msgstr "" +msgid "SortOptions|Access level, ascending" +msgstr "" + +msgid "SortOptions|Access level, descending" +msgstr "" + +msgid "SortOptions|Created date" +msgstr "" + +msgid "SortOptions|Due date" +msgstr "" + +msgid "SortOptions|Due later" +msgstr "" + +msgid "SortOptions|Due soon" +msgstr "" + +msgid "SortOptions|Label priority" +msgstr "" + +msgid "SortOptions|Largest group" +msgstr "" + +msgid "SortOptions|Largest repository" +msgstr "" + +msgid "SortOptions|Last created" +msgstr "" + +msgid "SortOptions|Last joined" +msgstr "" + +msgid "SortOptions|Last updated" +msgstr "" + +msgid "SortOptions|Least popular" +msgstr "" + +msgid "SortOptions|Less weight" +msgstr "" + +msgid "SortOptions|Milestone" +msgstr "" + +msgid "SortOptions|Milestone due later" +msgstr "" + +msgid "SortOptions|Milestone due soon" +msgstr "" + +msgid "SortOptions|More weight" +msgstr "" + +msgid "SortOptions|Most popular" +msgstr "" + +msgid "SortOptions|Name" +msgstr "" + +msgid "SortOptions|Name, ascending" +msgstr "" + +msgid "SortOptions|Name, descending" +msgstr "" + +msgid "SortOptions|Oldest created" +msgstr "" + +msgid "SortOptions|Oldest joined" +msgstr "" + +msgid "SortOptions|Oldest sign in" +msgstr "" + +msgid "SortOptions|Oldest updated" +msgstr "" + +msgid "SortOptions|Popularity" +msgstr "" + +msgid "SortOptions|Priority" +msgstr "" + +msgid "SortOptions|Recent sign in" +msgstr "" + +msgid "SortOptions|Start later" +msgstr "" + +msgid "SortOptions|Start soon" +msgstr "" + +msgid "SortOptions|Weight" +msgstr "" +  msgid "Source code"  msgstr "Изходен код" @@ -1132,6 +1387,9 @@ msgstr ""  msgid "StarProject|Star"  msgstr "Звезда" +msgid "Starred projects" +msgstr "" +  msgid "Start a %{new_merge_request} with these changes"  msgstr "Създайте %{new_merge_request} с тези промени" @@ -1141,6 +1399,9 @@ msgstr ""  msgid "Switch branch/tag"  msgstr "Преминаване към клон/етикет" +msgid "System Hooks" +msgstr "" +  msgid "Tag"  msgid_plural "Tags"  msgstr[0] "Етикет" @@ -1206,6 +1467,9 @@ msgstr "Стойността, която се намира в средата н  msgid "There are problems accessing Git storage: "  msgstr "" +msgid "This is the author's first Merge Request to this project. Handle with care." +msgstr "" +  msgid "This means you can not push code until you create an empty repository or import existing one."  msgstr "Това означава, че няма да можете да изпращате код, докато не създадете празно хранилище или не внесете съществуващо такова." @@ -1381,9 +1645,15 @@ msgstr ""  msgid "Use your global notification setting"  msgstr "Използване на глобалната Ви настройка за известията" +msgid "View file @ " +msgstr "" +  msgid "View open merge request"  msgstr "Преглед на отворената заявка за сливане" +msgid "View replaced file @ " +msgstr "" +  msgid "VisibilityLevel|Internal"  msgstr "Вътрешен" @@ -1456,6 +1726,12 @@ msgstr "Няма да можете да изтегляте или изпраща  msgid "Your name"  msgstr "Вашето име" +msgid "Your projects" +msgstr "" + +msgid "commit" +msgstr "" +  msgid "day"  msgid_plural "days"  msgstr[0] "ден" diff --git a/locale/de/gitlab.po b/locale/de/gitlab.po index 19961043ede..fc3c60166b7 100644 --- a/locale/de/gitlab.po +++ b/locale/de/gitlab.po @@ -2,8 +2,8 @@ msgid ""  msgstr ""  "Project-Id-Version: gitlab-ee\n"  "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-09-06 08:32+0200\n" -"PO-Revision-Date: 2017-09-15 05:22-0400\n" +"POT-Creation-Date: 2017-09-27 16:26+0200\n" +"PO-Revision-Date: 2017-09-27 13:45-0400\n"  "Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n"  "Language-Team: German\n"  "Language: de_DE\n" @@ -18,8 +18,8 @@ msgstr ""  msgid "%d commit"  msgid_plural "%d commits" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d Commit" +msgstr[1] "%d Commits"  msgid "%s additional commit has been omitted to prevent performance issues."  msgid_plural "%s additional commits have been omitted to prevent performance issues." @@ -27,6 +27,9 @@ msgstr[0] "%s zusätzlicher Commit wurde ausgelassen um Leistungsprobleme zu ver  msgstr[1] "%s zusätzliche Commits wurden ausgelassen um Leistungsprobleme zu verhindern."  msgid "%{commit_author_link} committed %{commit_timeago}" +msgstr "%{commit_author_link} hat %{commit_timeago} committet" + +msgid "%{number_commits_behind} commits behind %{default_branch}, %{number_commits_ahead} commits ahead"  msgstr ""  msgid "%{number_of_failures} of %{maximum_failures} failures. GitLab will allow access on the next attempt." @@ -40,8 +43,8 @@ msgstr "%{number_of_failures} von %{maximum_failures} Fehlschlägen. GitLab wird  msgid "%{storage_name}: failed storage access attempt on host:"  msgid_plural "%{storage_name}: %{failed_attempts} failed storage access attempts:" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%{storage_name}: fehlgeschlagener Speicherzugriff auf Host:" +msgstr[1] "%{storage_name}: %{failed_attempts} fehlgeschlagene Speicherzugriffe:"  msgid "(checkout the %{link} for information on how to install it)."  msgstr "(beachte die Informationen zur Installation auf %{link})." @@ -51,6 +54,9 @@ msgid_plural "%d pipelines"  msgstr[0] ""  msgstr[1] "" +msgid "1st contribution!" +msgstr "" +  msgid "A collection of graphs regarding Continuous Integration"  msgstr "Eine Sammlung von Graphen bezüglich kontinuierlicher Integration" @@ -67,13 +73,13 @@ msgid "Access to failing storages has been temporarily disabled to allow the mou  msgstr "Zugriff auf fehlerhafte Speicher wurde vorübergehend deaktiviert, um die Wiederherstellung zu ermöglichen. Für den zukünftigen Zugriff, behebe bitte das Problem und setze danach die Speicherinformationen zurück."  msgid "Account" -msgstr "" +msgstr "Konto"  msgid "Active"  msgstr "Aktiv"  msgid "Activity" -msgstr "" +msgstr "Aktivität"  msgid "Add Changelog"  msgstr "Änderungsliste hinzufügen " @@ -93,8 +99,8 @@ msgstr "Erstelle eine neues Verzeichnis"  msgid "All"  msgstr "Alle" -msgid "Appearances" -msgstr "Erscheinungsbild" +msgid "Appearance" +msgstr ""  msgid "Applications"  msgstr "Anwendungen" @@ -117,10 +123,34 @@ msgstr "Bist Du sicher, dass Du den Systemüberwachungstoken zurücksetzen wills  msgid "Are you sure?"  msgstr "Bist Du sicher?" +msgid "Artifacts" +msgstr "" +  msgid "Attach a file by drag & drop or %{upload_link}"  msgstr "Datei mittels Drag & Drop oder %{upload_link} hinzufügen" -msgid "Authentication log" +msgid "Authentication Log" +msgstr "" + +msgid "Auto DevOps (Beta)" +msgstr "" + +msgid "Auto DevOps can be activated for this project. It will automatically build, test, and deploy your application based on a predefined CI/CD configuration." +msgstr "" + +msgid "Auto DevOps documentation" +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need a domain name and the %{kubernetes} to work correctly." +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need a domain name to work correctly." +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need the %{kubernetes} to work correctly." +msgstr "" + +msgid "AutoDevOps|Learn more in the"  msgstr ""  msgid "Billing" @@ -177,10 +207,13 @@ msgstr ""  msgid "Billinglans|Downgrade"  msgstr "" +msgid "Board" +msgstr "" +  msgid "Branch"  msgid_plural "Branches" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Zweig" +msgstr[1] "Zweige"  msgid "Branch <strong>%{branch_name}</strong> was created. To set up auto deploy, choose a GitLab CI Yaml template and commit your changes. %{link_to_autodeploy_doc}"  msgstr "Branch <strong>%{branch_name}</strong> wurde erstellt. Um die automatische Bereitstellung einzurichten, wähle eine GitLab CI Yaml Vorlage und committe Deine Änderungen. %{link_to_autodeploy_doc}" @@ -194,6 +227,90 @@ msgstr "Branch wechseln"  msgid "Branches"  msgstr "" +msgid "Branches|Cant find HEAD commit for this branch" +msgstr "" + +msgid "Branches|Compare" +msgstr "" + +msgid "Branches|Delete all branches that are merged into '%{default_branch}'" +msgstr "" + +msgid "Branches|Delete branch" +msgstr "" + +msgid "Branches|Delete merged branches" +msgstr "" + +msgid "Branches|Delete protected branch" +msgstr "" + +msgid "Branches|Delete protected branch '%{branch_name}'?" +msgstr "" + +msgid "Branches|Deleting the '%{branch_name}' branch cannot be undone. Are you sure?" +msgstr "" + +msgid "Branches|Deleting the merged branches cannot be undone. Are you sure?" +msgstr "" + +msgid "Branches|Filter by branch name" +msgstr "" + +msgid "Branches|Merged into %{default_branch}" +msgstr "" + +msgid "Branches|New branch" +msgstr "" + +msgid "Branches|No branches to show" +msgstr "" + +msgid "Branches|Once you confirm and press %{delete_protected_branch}, it cannot be undone or recovered." +msgstr "" + +msgid "Branches|Only a project master or owner can delete a protected branch" +msgstr "" + +msgid "Branches|Protected branches can be managed in %{project_settings_link}" +msgstr "" + +msgid "Branches|Sort by" +msgstr "" + +msgid "Branches|The branch could not be updated automatically because it has diverged from its upstream counterpart." +msgstr "" + +msgid "Branches|The default branch cannot be deleted" +msgstr "" + +msgid "Branches|This branch hasn’t been merged into %{default_branch}." +msgstr "" + +msgid "Branches|To avoid data loss, consider merging this branch before deleting it." +msgstr "" + +msgid "Branches|To confirm, type %{branch_name_confirmation}:" +msgstr "" + +msgid "Branches|To discard the local changes and overwrite the branch with the upstream version, delete it here and choose 'Update Now' above." +msgstr "" + +msgid "Branches|You’re about to permanently delete the protected branch %{branch_name}." +msgstr "" + +msgid "Branches|diverged from upstream" +msgstr "" + +msgid "Branches|merged" +msgstr "" + +msgid "Branches|project settings" +msgstr "" + +msgid "Branches|protected" +msgstr "" +  msgid "Browse Directory"  msgstr "Verzeichnisse durchsuchen" @@ -210,7 +327,7 @@ msgid "ByAuthor|by"  msgstr "von"  msgid "CI / CD" -msgstr "" +msgstr "CI / CD"  msgid "CI configuration"  msgstr "CI-Konfiguration" @@ -240,7 +357,7 @@ msgid "Charts"  msgstr "Diagramme"  msgid "Chat" -msgstr "" +msgstr "Chat"  msgid "Cherry-pick this commit"  msgstr "Diesen Commit herauspicken " @@ -307,8 +424,8 @@ msgstr "Kommentare"  msgid "Commit"  msgid_plural "Commits" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Commit" +msgstr[1] "Commits"  msgid "Commit duration in minutes for last 30 commits"  msgstr "Dauer der Commits in Minuten für die letzten 30 Commits" @@ -323,7 +440,7 @@ msgid "CommitMessage|Add %{file_name}"  msgstr "%{file_name} hinzufügen"  msgid "Commits" -msgstr "" +msgstr "Commits"  msgid "Commits feed"  msgstr "Liste der Commits" @@ -337,9 +454,6 @@ msgstr "Committed von"  msgid "Compare"  msgstr "Vergleichen" -msgid "Container Registry" -msgstr "" -  msgid "Contribution guide"  msgstr "Mitarbeitsanleitung" @@ -442,7 +556,7 @@ msgid "Description"  msgstr "Beschreibung"  msgid "Details" -msgstr "" +msgstr "Details"  msgid "Directory name"  msgstr "Verzeichnisname" @@ -489,6 +603,9 @@ msgstr "Pipeline Zeitplan bearbeiten %{id}"  msgid "Emails"  msgstr "E-Mails" +msgid "Enable in settings" +msgstr "" +  msgid "EventFilterBy|Filter by all"  msgstr "Filtere alle" @@ -516,6 +633,9 @@ msgstr "Monatlich (am Ersten um 4:00 Uhr)"  msgid "Every week (Sundays at 4:00am)"  msgstr "Wöchentlich (Sonntags um 4:00 Uhr)" +msgid "Explore projects" +msgstr "" +  msgid "Failed to change the owner"  msgstr "Wechsel des Besitzers fehlgeschlagen" @@ -572,8 +692,29 @@ msgstr "Gehe zu Deinem Ableger"  msgid "GoToYourFork|Fork"  msgstr "Ableger" -msgid "Group overview" -msgstr "Gruppen-Übersicht" +msgid "GroupSettings|Prevent sharing a project within %{group} with other groups" +msgstr "" + +msgid "GroupSettings|Share with group lock" +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group} and has been overridden on this subgroup." +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group}. To share projects in this group with another group, ask the owner to override the setting or %{remove_ancestor_share_with_group_lock}." +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group}. You can override the setting or %{remove_ancestor_share_with_group_lock}." +msgstr "" + +msgid "GroupSettings|This setting will be applied to all subgroups unless overridden by a group owner. Groups that already have access to the project will continue to have access unless removed manually." +msgstr "" + +msgid "GroupSettings|cannot be disabled when the parent group \"Share with group lock\" is enabled, except by the owner of the parent group" +msgstr "" + +msgid "GroupSettings|remove the share with group lock from %{ancestor_group_name}" +msgstr ""  msgid "Health Check"  msgstr "Systemzustand" @@ -593,12 +734,6 @@ msgstr "Keine Probleme erkannt"  msgid "HealthCheck|Unhealthy"  msgstr "Problematisch" -msgid "Home" -msgstr "Startseite" - -msgid "Hooks" -msgstr "" -  msgid "Housekeeping successfully started"  msgstr "Aufräumen erfolgreich gestartet" @@ -620,6 +755,9 @@ msgstr "Ticketereignisse"  msgid "Issues"  msgstr "" +msgid "Jobs" +msgstr "" +  msgid "LFSStatus|Disabled"  msgstr "Deaktiviert" @@ -662,7 +800,7 @@ msgid "Leave project"  msgstr "Verlasse das Projekt"  msgid "License" -msgstr "Lizenz" +msgstr ""  msgid "Limited to showing %d event at most"  msgid_plural "Limited to showing %d events at most" @@ -670,7 +808,7 @@ msgstr[0] "Limitiere die Anzeige auf höchstens %d Ereignis"  msgstr[1] "Limitiere die Anzeige auf höchstens %d Ereignisse"  msgid "Locked Files" -msgstr "Gesperrte Dateien" +msgstr ""  msgid "Median"  msgstr "Median" @@ -684,14 +822,17 @@ msgstr ""  msgid "Merge events"  msgstr "Ereignisse zusammenführen" -msgid "Messages" +msgid "Merge request"  msgstr "" +msgid "Messages" +msgstr "Nachrichten" +  msgid "MissingSSHKeyWarningLink|add an SSH key"  msgstr "einen SSH Schlüssel hinzufügst"  msgid "Monitoring" -msgstr "" +msgstr "Überwachung"  msgid "More information is available|here"  msgstr "hier" @@ -812,6 +953,18 @@ msgstr "Übersicht"  msgid "Owner"  msgstr "Besitzer" +msgid "Pagination|Last »" +msgstr "" + +msgid "Pagination|Next" +msgstr "" + +msgid "Pagination|Prev" +msgstr "" + +msgid "Pagination|« First" +msgstr "" +  msgid "Password"  msgstr "Passwort" @@ -900,7 +1053,7 @@ msgid "Pipelines for last week"  msgstr ""  msgid "Pipelines for last year" -msgstr "" +msgstr "Pipelines des letzten Jahres"  msgid "Pipeline|all"  msgstr "Alle" @@ -917,12 +1070,9 @@ msgstr "mit Stages"  msgid "Preferences"  msgstr "" -msgid "Profile Settings" +msgid "Profile"  msgstr "" -msgid "Project" -msgstr "Projekt" -  msgid "Project '%{project_name}' queued for deletion."  msgstr "Das Projekt '%{project_name}' wurde zur Löschung eingeplant." @@ -953,12 +1103,6 @@ msgstr "Der Link für den Export des Projektes ist abgelaufen. Bitte generiere e  msgid "Project export started. A download link will be sent by email."  msgstr "Export des Projektes gestartet. Ein Link zum herunterladen wir Dir per E-Mail zugesandt." -msgid "Project home" -msgstr "Startseite des Projektes" - -msgid "Project overview" -msgstr "" -  msgid "ProjectActivityRSS|Subscribe"  msgstr "Abonnieren" @@ -983,27 +1127,30 @@ msgstr "Stage"  msgid "ProjectNetworkGraph|Graph"  msgstr "Diagramm" -msgid "Push Rules" +msgid "ProjectsDropdown|Frequently visited"  msgstr ""  msgid "ProjectsDropdown|Loading projects"  msgstr "" -msgid "ProjectsDropdown|Sorry, no projects matched your search" -msgstr "" -  msgid "ProjectsDropdown|Projects you visit often will appear here" -msgstr "" +msgstr "ProjectsDropdown | Projekte, die Sie häufig besuchen, werden hier angezeigt"  msgid "ProjectsDropdown|Search your projects"  msgstr "" -msgid "ProjectsDropdown|Something went wrong on our end" +msgid "ProjectsDropdown|Something went wrong on our end." +msgstr "" + +msgid "ProjectsDropdown|Sorry, no projects matched your search"  msgstr ""  msgid "ProjectsDropdown|This feature requires browser localStorage support"  msgstr "" +msgid "Push Rules" +msgstr "" +  msgid "Push events"  msgstr "Übertragungsereignisse" @@ -1019,6 +1166,9 @@ msgstr "Branches"  msgid "RefSwitcher|Tags"  msgstr "Tags" +msgid "Registry" +msgstr "" +  msgid "Related Commits"  msgstr "Zugehörige Commits" @@ -1065,7 +1215,7 @@ msgid "Revert this merge request"  msgstr "Merge Request zurücksetzen"  msgid "SSH Keys" -msgstr "" +msgstr "SSH-Schlüssel"  msgid "Save pipeline schedule"  msgstr "Zeitplan der Pipeline speichern" @@ -1073,6 +1223,9 @@ msgstr "Zeitplan der Pipeline speichern"  msgid "Schedule a new pipeline"  msgstr "Plane eine neue Pipeline" +msgid "Schedules" +msgstr "" +  msgid "Scheduling Pipelines"  msgstr "Pipelines planen" @@ -1110,6 +1263,12 @@ msgid "SetPasswordToCloneLink|set a password"  msgstr "ein Passwort festlegst"  msgid "Settings" +msgstr "Einstellungen" + +msgid "Show parent pages" +msgstr "" + +msgid "Show parent subgroups"  msgstr ""  msgid "Showing %d event" @@ -1120,11 +1279,107 @@ msgstr[1] "Zeige %d Ereignisse"  msgid "Snippets"  msgstr "" +msgid "SortOptions|Access level, ascending" +msgstr "" + +msgid "SortOptions|Access level, descending" +msgstr "" + +msgid "SortOptions|Created date" +msgstr "" + +msgid "SortOptions|Due date" +msgstr "" + +msgid "SortOptions|Due later" +msgstr "" + +msgid "SortOptions|Due soon" +msgstr "" + +msgid "SortOptions|Label priority" +msgstr "" + +msgid "SortOptions|Largest group" +msgstr "" + +msgid "SortOptions|Largest repository" +msgstr "" + +msgid "SortOptions|Last created" +msgstr "" + +msgid "SortOptions|Last joined" +msgstr "" + +msgid "SortOptions|Last updated" +msgstr "" + +msgid "SortOptions|Least popular" +msgstr "" + +msgid "SortOptions|Less weight" +msgstr "" + +msgid "SortOptions|Milestone" +msgstr "" + +msgid "SortOptions|Milestone due later" +msgstr "" + +msgid "SortOptions|Milestone due soon" +msgstr "" + +msgid "SortOptions|More weight" +msgstr "" + +msgid "SortOptions|Most popular" +msgstr "" + +msgid "SortOptions|Name" +msgstr "" + +msgid "SortOptions|Name, ascending" +msgstr "" + +msgid "SortOptions|Name, descending" +msgstr "" + +msgid "SortOptions|Oldest created" +msgstr "" + +msgid "SortOptions|Oldest joined" +msgstr "" + +msgid "SortOptions|Oldest sign in" +msgstr "" + +msgid "SortOptions|Oldest updated" +msgstr "" + +msgid "SortOptions|Popularity" +msgstr "" + +msgid "SortOptions|Priority" +msgstr "" + +msgid "SortOptions|Recent sign in" +msgstr "" + +msgid "SortOptions|Start later" +msgstr "" + +msgid "SortOptions|Start soon" +msgstr "" + +msgid "SortOptions|Weight" +msgstr "" +  msgid "Source code"  msgstr "Quellcode"  msgid "Spam Logs" -msgstr "" +msgstr "Spam-Protokolle"  msgid "Specify the following URL during the Runner setup:"  msgstr "Lege die folgende URL während des Runner Setups fest:" @@ -1132,6 +1387,9 @@ msgstr "Lege die folgende URL während des Runner Setups fest:"  msgid "StarProject|Star"  msgstr "Favorisieren" +msgid "Starred projects" +msgstr "" +  msgid "Start a %{new_merge_request} with these changes"  msgstr "Beginne einen %{new_merge_request} mit diesen Änderungen" @@ -1141,6 +1399,9 @@ msgstr "Starte den Runner!"  msgid "Switch branch/tag"  msgstr "Zu Branch/Tag wechseln" +msgid "System Hooks" +msgstr "" +  msgid "Tag"  msgid_plural "Tags"  msgstr[0] "" @@ -1206,6 +1467,9 @@ msgstr "Der mittlere aller erfassten Werte. Zum Beispiel ist für 3, 5, 9 der Me  msgid "There are problems accessing Git storage: "  msgstr "Es gibt ein Problem beim Zugriff auf den Gitspeicher:" +msgid "This is the author's first Merge Request to this project. Handle with care." +msgstr "" +  msgid "This means you can not push code until you create an empty repository or import existing one."  msgstr "Dies bedeutet, dass Du keinen Code übertragen kannst, bevor Du kein leeres Repositorium erstellt oder ein Existierendes importiert hast." @@ -1222,7 +1486,7 @@ msgid "Time until first merge request"  msgstr "Zeit bis zum ersten Merge Request"  msgid "Timeago|%s days ago" -msgstr "seit %s Tagen" +msgstr ""  msgid "Timeago|%s days remaining"  msgstr "%s Tage verbleibend" @@ -1231,13 +1495,13 @@ msgid "Timeago|%s hours remaining"  msgstr "%s Stunden verbleibend"  msgid "Timeago|%s minutes ago" -msgstr "seit %s Minuten " +msgstr ""  msgid "Timeago|%s minutes remaining"  msgstr "%s Minuten verbleibend"  msgid "Timeago|%s months ago" -msgstr "seit %s Monaten" +msgstr ""  msgid "Timeago|%s months remaining"  msgstr "%s Monate verbleibend" @@ -1246,13 +1510,13 @@ msgid "Timeago|%s seconds remaining"  msgstr "%s Sekunden verbleibend"  msgid "Timeago|%s weeks ago" -msgstr "seit %s Wochen" +msgstr ""  msgid "Timeago|%s weeks remaining"  msgstr "%s Wochen verbleibend"  msgid "Timeago|%s years ago" -msgstr "seit %s Jahren" +msgstr ""  msgid "Timeago|%s years remaining"  msgstr "%s Jahre verbleibend" @@ -1381,9 +1645,15 @@ msgstr "Benutze den folgenden Registrierungstoken während des Setups:"  msgid "Use your global notification setting"  msgstr "Benutze Deine globalen Benachrichtigungseinstellungen" +msgid "View file @ " +msgstr "" +  msgid "View open merge request"  msgstr "Zeige offene Merge Requests." +msgid "View replaced file @ " +msgstr "" +  msgid "VisibilityLevel|Internal"  msgstr "Intern" @@ -1456,6 +1726,12 @@ msgstr "Du kannst erst mittels SSH übertragen (push) oder abrufen (pull), nachd  msgid "Your name"  msgstr "Dein Name" +msgid "Your projects" +msgstr "" + +msgid "commit" +msgstr "" +  msgid "day"  msgid_plural "days"  msgstr[0] "Tag" diff --git a/locale/eo/gitlab.po b/locale/eo/gitlab.po index f9f61a109f6..e8c2195e4e3 100644 --- a/locale/eo/gitlab.po +++ b/locale/eo/gitlab.po @@ -2,8 +2,8 @@ msgid ""  msgstr ""  "Project-Id-Version: gitlab-ee\n"  "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-09-06 08:32+0200\n" -"PO-Revision-Date: 2017-09-15 05:22-0400\n" +"POT-Creation-Date: 2017-09-27 16:26+0200\n" +"PO-Revision-Date: 2017-09-27 13:45-0400\n"  "Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n"  "Language-Team: Esperanto\n"  "Language: eo_UY\n" @@ -29,6 +29,9 @@ msgstr[1] "%s enmetadoj estis transsaltitaj, por ne troŝarĝi la sistemon."  msgid "%{commit_author_link} committed %{commit_timeago}"  msgstr "%{commit_author_link} enmetis %{commit_timeago}" +msgid "%{number_commits_behind} commits behind %{default_branch}, %{number_commits_ahead} commits ahead" +msgstr "" +  msgid "%{number_of_failures} of %{maximum_failures} failures. GitLab will allow access on the next attempt."  msgstr "" @@ -51,6 +54,9 @@ msgid_plural "%d pipelines"  msgstr[0] "1 ĉenstablo"  msgstr[1] "%d ĉenstabloj" +msgid "1st contribution!" +msgstr "" +  msgid "A collection of graphs regarding Continuous Integration"  msgstr "Aro da diagramoj pri la seninterrompa integrado" @@ -93,7 +99,7 @@ msgstr "Aldoni novan dosierujon"  msgid "All"  msgstr "" -msgid "Appearances" +msgid "Appearance"  msgstr ""  msgid "Applications" @@ -117,10 +123,34 @@ msgstr ""  msgid "Are you sure?"  msgstr "" +msgid "Artifacts" +msgstr "" +  msgid "Attach a file by drag & drop or %{upload_link}"  msgstr "Alkroĉu dosieron per ŝovmetado aŭ %{upload_link}" -msgid "Authentication log" +msgid "Authentication Log" +msgstr "" + +msgid "Auto DevOps (Beta)" +msgstr "" + +msgid "Auto DevOps can be activated for this project. It will automatically build, test, and deploy your application based on a predefined CI/CD configuration." +msgstr "" + +msgid "Auto DevOps documentation" +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need a domain name and the %{kubernetes} to work correctly." +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need a domain name to work correctly." +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need the %{kubernetes} to work correctly." +msgstr "" + +msgid "AutoDevOps|Learn more in the"  msgstr ""  msgid "Billing" @@ -177,6 +207,9 @@ msgstr ""  msgid "Billinglans|Downgrade"  msgstr "" +msgid "Board" +msgstr "" +  msgid "Branch"  msgid_plural "Branches"  msgstr[0] "Branĉo" @@ -194,6 +227,90 @@ msgstr "Iri al branĉo"  msgid "Branches"  msgstr "Branĉoj" +msgid "Branches|Cant find HEAD commit for this branch" +msgstr "" + +msgid "Branches|Compare" +msgstr "" + +msgid "Branches|Delete all branches that are merged into '%{default_branch}'" +msgstr "" + +msgid "Branches|Delete branch" +msgstr "" + +msgid "Branches|Delete merged branches" +msgstr "" + +msgid "Branches|Delete protected branch" +msgstr "" + +msgid "Branches|Delete protected branch '%{branch_name}'?" +msgstr "" + +msgid "Branches|Deleting the '%{branch_name}' branch cannot be undone. Are you sure?" +msgstr "" + +msgid "Branches|Deleting the merged branches cannot be undone. Are you sure?" +msgstr "" + +msgid "Branches|Filter by branch name" +msgstr "" + +msgid "Branches|Merged into %{default_branch}" +msgstr "" + +msgid "Branches|New branch" +msgstr "" + +msgid "Branches|No branches to show" +msgstr "" + +msgid "Branches|Once you confirm and press %{delete_protected_branch}, it cannot be undone or recovered." +msgstr "" + +msgid "Branches|Only a project master or owner can delete a protected branch" +msgstr "" + +msgid "Branches|Protected branches can be managed in %{project_settings_link}" +msgstr "" + +msgid "Branches|Sort by" +msgstr "" + +msgid "Branches|The branch could not be updated automatically because it has diverged from its upstream counterpart." +msgstr "" + +msgid "Branches|The default branch cannot be deleted" +msgstr "" + +msgid "Branches|This branch hasn’t been merged into %{default_branch}." +msgstr "" + +msgid "Branches|To avoid data loss, consider merging this branch before deleting it." +msgstr "" + +msgid "Branches|To confirm, type %{branch_name_confirmation}:" +msgstr "" + +msgid "Branches|To discard the local changes and overwrite the branch with the upstream version, delete it here and choose 'Update Now' above." +msgstr "" + +msgid "Branches|You’re about to permanently delete the protected branch %{branch_name}." +msgstr "" + +msgid "Branches|diverged from upstream" +msgstr "" + +msgid "Branches|merged" +msgstr "" + +msgid "Branches|project settings" +msgstr "" + +msgid "Branches|protected" +msgstr "" +  msgid "Browse Directory"  msgstr "Foliumi dosierujon" @@ -337,9 +454,6 @@ msgstr "Enmetita de"  msgid "Compare"  msgstr "Kompari" -msgid "Container Registry" -msgstr "" -  msgid "Contribution guide"  msgstr "Gvidlinioj por kontribuado" @@ -489,6 +603,9 @@ msgstr "Redakti ĉenstablan planon %{id}"  msgid "Emails"  msgstr "" +msgid "Enable in settings" +msgstr "" +  msgid "EventFilterBy|Filter by all"  msgstr "" @@ -516,6 +633,9 @@ msgstr "Ĉiumonate (en la 1a de la monato, je 4:00)"  msgid "Every week (Sundays at 4:00am)"  msgstr "Ĉiusemajne (en dimanĉo, je 4:00)" +msgid "Explore projects" +msgstr "" +  msgid "Failed to change the owner"  msgstr "Ne eblas ŝanĝi la posedanton" @@ -572,7 +692,28 @@ msgstr "Al via disbranĉigo"  msgid "GoToYourFork|Fork"  msgstr "Disbranĉigo" -msgid "Group overview" +msgid "GroupSettings|Prevent sharing a project within %{group} with other groups" +msgstr "" + +msgid "GroupSettings|Share with group lock" +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group} and has been overridden on this subgroup." +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group}. To share projects in this group with another group, ask the owner to override the setting or %{remove_ancestor_share_with_group_lock}." +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group}. You can override the setting or %{remove_ancestor_share_with_group_lock}." +msgstr "" + +msgid "GroupSettings|This setting will be applied to all subgroups unless overridden by a group owner. Groups that already have access to the project will continue to have access unless removed manually." +msgstr "" + +msgid "GroupSettings|cannot be disabled when the parent group \"Share with group lock\" is enabled, except by the owner of the parent group" +msgstr "" + +msgid "GroupSettings|remove the share with group lock from %{ancestor_group_name}"  msgstr ""  msgid "Health Check" @@ -593,12 +734,6 @@ msgstr ""  msgid "HealthCheck|Unhealthy"  msgstr "" -msgid "Home" -msgstr "Hejmo" - -msgid "Hooks" -msgstr "" -  msgid "Housekeeping successfully started"  msgstr "La refreŝigo komenciĝis sukcese" @@ -620,6 +755,9 @@ msgstr ""  msgid "Issues"  msgstr "" +msgid "Jobs" +msgstr "" +  msgid "LFSStatus|Disabled"  msgstr "Malŝaltita" @@ -684,6 +822,9 @@ msgstr ""  msgid "Merge events"  msgstr "" +msgid "Merge request" +msgstr "" +  msgid "Messages"  msgstr "" @@ -812,6 +953,18 @@ msgstr ""  msgid "Owner"  msgstr "Posedanto" +msgid "Pagination|Last »" +msgstr "" + +msgid "Pagination|Next" +msgstr "" + +msgid "Pagination|Prev" +msgstr "" + +msgid "Pagination|« First" +msgstr "" +  msgid "Password"  msgstr "" @@ -917,10 +1070,7 @@ msgstr "kun etapoj"  msgid "Preferences"  msgstr "" -msgid "Profile Settings" -msgstr "" - -msgid "Project" +msgid "Profile"  msgstr ""  msgid "Project '%{project_name}' queued for deletion." @@ -953,12 +1103,6 @@ msgstr "La ligilo por la projekta elporto eksvalidiĝis. Bonvolu krei novan elpo  msgid "Project export started. A download link will be sent by email."  msgstr "La elporto de la projekto komenciĝis. Vi ricevos ligilon per retpoŝto por elŝuti la datenoj." -msgid "Project home" -msgstr "Hejmo de la projekto" - -msgid "Project overview" -msgstr "" -  msgid "ProjectActivityRSS|Subscribe"  msgstr "" @@ -983,27 +1127,30 @@ msgstr "Etapo"  msgid "ProjectNetworkGraph|Graph"  msgstr "Grafeo" -msgid "Push Rules" +msgid "ProjectsDropdown|Frequently visited"  msgstr ""  msgid "ProjectsDropdown|Loading projects"  msgstr "" -msgid "ProjectsDropdown|Sorry, no projects matched your search" -msgstr "" -  msgid "ProjectsDropdown|Projects you visit often will appear here"  msgstr ""  msgid "ProjectsDropdown|Search your projects"  msgstr "" -msgid "ProjectsDropdown|Something went wrong on our end" +msgid "ProjectsDropdown|Something went wrong on our end." +msgstr "" + +msgid "ProjectsDropdown|Sorry, no projects matched your search"  msgstr ""  msgid "ProjectsDropdown|This feature requires browser localStorage support"  msgstr "" +msgid "Push Rules" +msgstr "" +  msgid "Push events"  msgstr "" @@ -1019,6 +1166,9 @@ msgstr "Branĉoj"  msgid "RefSwitcher|Tags"  msgstr "Etikedoj" +msgid "Registry" +msgstr "" +  msgid "Related Commits"  msgstr "Rilataj enmetadoj" @@ -1073,6 +1223,9 @@ msgstr "Konservi ĉenstablan planon"  msgid "Schedule a new pipeline"  msgstr "Plani novan ĉenstablon" +msgid "Schedules" +msgstr "" +  msgid "Scheduling Pipelines"  msgstr "Planado de la ĉenstabloj" @@ -1112,6 +1265,12 @@ msgstr "kreos pasvorton"  msgid "Settings"  msgstr "" +msgid "Show parent pages" +msgstr "" + +msgid "Show parent subgroups" +msgstr "" +  msgid "Showing %d event"  msgid_plural "Showing %d events"  msgstr[0] "Estas montrata %d evento" @@ -1120,6 +1279,102 @@ msgstr[1] "Estas montrataj %d eventoj"  msgid "Snippets"  msgstr "" +msgid "SortOptions|Access level, ascending" +msgstr "" + +msgid "SortOptions|Access level, descending" +msgstr "" + +msgid "SortOptions|Created date" +msgstr "" + +msgid "SortOptions|Due date" +msgstr "" + +msgid "SortOptions|Due later" +msgstr "" + +msgid "SortOptions|Due soon" +msgstr "" + +msgid "SortOptions|Label priority" +msgstr "" + +msgid "SortOptions|Largest group" +msgstr "" + +msgid "SortOptions|Largest repository" +msgstr "" + +msgid "SortOptions|Last created" +msgstr "" + +msgid "SortOptions|Last joined" +msgstr "" + +msgid "SortOptions|Last updated" +msgstr "" + +msgid "SortOptions|Least popular" +msgstr "" + +msgid "SortOptions|Less weight" +msgstr "" + +msgid "SortOptions|Milestone" +msgstr "" + +msgid "SortOptions|Milestone due later" +msgstr "" + +msgid "SortOptions|Milestone due soon" +msgstr "" + +msgid "SortOptions|More weight" +msgstr "" + +msgid "SortOptions|Most popular" +msgstr "" + +msgid "SortOptions|Name" +msgstr "" + +msgid "SortOptions|Name, ascending" +msgstr "" + +msgid "SortOptions|Name, descending" +msgstr "" + +msgid "SortOptions|Oldest created" +msgstr "" + +msgid "SortOptions|Oldest joined" +msgstr "" + +msgid "SortOptions|Oldest sign in" +msgstr "" + +msgid "SortOptions|Oldest updated" +msgstr "" + +msgid "SortOptions|Popularity" +msgstr "" + +msgid "SortOptions|Priority" +msgstr "" + +msgid "SortOptions|Recent sign in" +msgstr "" + +msgid "SortOptions|Start later" +msgstr "" + +msgid "SortOptions|Start soon" +msgstr "" + +msgid "SortOptions|Weight" +msgstr "" +  msgid "Source code"  msgstr "Kodo" @@ -1132,6 +1387,9 @@ msgstr ""  msgid "StarProject|Star"  msgstr "Steligi" +msgid "Starred projects" +msgstr "" +  msgid "Start a %{new_merge_request} with these changes"  msgstr "Kreu %{new_merge_request} kun ĉi tiuj ŝanĝoj" @@ -1141,6 +1399,9 @@ msgstr ""  msgid "Switch branch/tag"  msgstr "Iri al branĉo/etikedo" +msgid "System Hooks" +msgstr "" +  msgid "Tag"  msgid_plural "Tags"  msgstr[0] "Etikedo" @@ -1206,6 +1467,9 @@ msgstr "La valoro, kiu troviĝas en la mezo de aro da rigardataj valoroj. Ekzemp  msgid "There are problems accessing Git storage: "  msgstr "" +msgid "This is the author's first Merge Request to this project. Handle with care." +msgstr "" +  msgid "This means you can not push code until you create an empty repository or import existing one."  msgstr "Ĉi tiu signifas, ke vi ne povos alpuŝi kodon, antaŭ ol vi kreos malplenan deponejon aŭ enportos jam ekzistantan." @@ -1381,9 +1645,15 @@ msgstr ""  msgid "Use your global notification setting"  msgstr "Uzi vian ĝeneralan agordon pri la sciigoj" +msgid "View file @ " +msgstr "" +  msgid "View open merge request"  msgstr "Vidi la malfermitan peton pri kunfando" +msgid "View replaced file @ " +msgstr "" +  msgid "VisibilityLevel|Internal"  msgstr "Interna" @@ -1456,6 +1726,12 @@ msgstr "Vi ne povos eltiri aŭ alpuŝi kodon per SSH antaŭ ol vi %{add_ssh_key_  msgid "Your name"  msgstr "Via nomo" +msgid "Your projects" +msgstr "" + +msgid "commit" +msgstr "" +  msgid "day"  msgid_plural "days"  msgstr[0] "tago" diff --git a/locale/es/gitlab.po b/locale/es/gitlab.po index ccf4b0abf9f..29a010f9428 100644 --- a/locale/es/gitlab.po +++ b/locale/es/gitlab.po @@ -2,8 +2,8 @@ msgid ""  msgstr ""  "Project-Id-Version: gitlab-ee\n"  "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-09-06 08:32+0200\n" -"PO-Revision-Date: 2017-09-15 05:19-0400\n" +"POT-Creation-Date: 2017-09-27 16:26+0200\n" +"PO-Revision-Date: 2017-09-27 13:43-0400\n"  "Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n"  "Language-Team: Spanish\n"  "Language: es_ES\n" @@ -29,6 +29,9 @@ msgstr[1] "%s cambios adicionales han sido omitidos para evitar problemas de ren  msgid "%{commit_author_link} committed %{commit_timeago}"  msgstr "%{commit_author_link} cambió %{commit_timeago}" +msgid "%{number_commits_behind} commits behind %{default_branch}, %{number_commits_ahead} commits ahead" +msgstr "" +  msgid "%{number_of_failures} of %{maximum_failures} failures. GitLab will allow access on the next attempt."  msgstr "" @@ -51,6 +54,9 @@ msgid_plural "%d pipelines"  msgstr[0] ""  msgstr[1] "" +msgid "1st contribution!" +msgstr "" +  msgid "A collection of graphs regarding Continuous Integration"  msgstr "Una colección de gráficos sobre Integración Continua" @@ -93,7 +99,7 @@ msgstr "Agregar nuevo directorio"  msgid "All"  msgstr "" -msgid "Appearances" +msgid "Appearance"  msgstr ""  msgid "Applications" @@ -117,10 +123,34 @@ msgstr ""  msgid "Are you sure?"  msgstr "" +msgid "Artifacts" +msgstr "" +  msgid "Attach a file by drag & drop or %{upload_link}"  msgstr "Adjunte un archivo arrastrando & soltando o %{upload_link}" -msgid "Authentication log" +msgid "Authentication Log" +msgstr "" + +msgid "Auto DevOps (Beta)" +msgstr "" + +msgid "Auto DevOps can be activated for this project. It will automatically build, test, and deploy your application based on a predefined CI/CD configuration." +msgstr "" + +msgid "Auto DevOps documentation" +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need a domain name and the %{kubernetes} to work correctly." +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need a domain name to work correctly." +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need the %{kubernetes} to work correctly." +msgstr "" + +msgid "AutoDevOps|Learn more in the"  msgstr ""  msgid "Billing" @@ -177,6 +207,9 @@ msgstr ""  msgid "Billinglans|Downgrade"  msgstr "" +msgid "Board" +msgstr "" +  msgid "Branch"  msgid_plural "Branches"  msgstr[0] "Rama" @@ -194,6 +227,90 @@ msgstr "Cambiar rama"  msgid "Branches"  msgstr "Ramas" +msgid "Branches|Cant find HEAD commit for this branch" +msgstr "" + +msgid "Branches|Compare" +msgstr "" + +msgid "Branches|Delete all branches that are merged into '%{default_branch}'" +msgstr "" + +msgid "Branches|Delete branch" +msgstr "" + +msgid "Branches|Delete merged branches" +msgstr "" + +msgid "Branches|Delete protected branch" +msgstr "" + +msgid "Branches|Delete protected branch '%{branch_name}'?" +msgstr "" + +msgid "Branches|Deleting the '%{branch_name}' branch cannot be undone. Are you sure?" +msgstr "" + +msgid "Branches|Deleting the merged branches cannot be undone. Are you sure?" +msgstr "" + +msgid "Branches|Filter by branch name" +msgstr "" + +msgid "Branches|Merged into %{default_branch}" +msgstr "" + +msgid "Branches|New branch" +msgstr "" + +msgid "Branches|No branches to show" +msgstr "" + +msgid "Branches|Once you confirm and press %{delete_protected_branch}, it cannot be undone or recovered." +msgstr "" + +msgid "Branches|Only a project master or owner can delete a protected branch" +msgstr "" + +msgid "Branches|Protected branches can be managed in %{project_settings_link}" +msgstr "" + +msgid "Branches|Sort by" +msgstr "" + +msgid "Branches|The branch could not be updated automatically because it has diverged from its upstream counterpart." +msgstr "" + +msgid "Branches|The default branch cannot be deleted" +msgstr "" + +msgid "Branches|This branch hasn’t been merged into %{default_branch}." +msgstr "" + +msgid "Branches|To avoid data loss, consider merging this branch before deleting it." +msgstr "" + +msgid "Branches|To confirm, type %{branch_name_confirmation}:" +msgstr "" + +msgid "Branches|To discard the local changes and overwrite the branch with the upstream version, delete it here and choose 'Update Now' above." +msgstr "" + +msgid "Branches|You’re about to permanently delete the protected branch %{branch_name}." +msgstr "" + +msgid "Branches|diverged from upstream" +msgstr "" + +msgid "Branches|merged" +msgstr "" + +msgid "Branches|project settings" +msgstr "" + +msgid "Branches|protected" +msgstr "" +  msgid "Browse Directory"  msgstr "Examinar directorio" @@ -337,9 +454,6 @@ msgstr "Enviado por"  msgid "Compare"  msgstr "Comparar" -msgid "Container Registry" -msgstr "" -  msgid "Contribution guide"  msgstr "Guía de contribución" @@ -489,6 +603,9 @@ msgstr "Editar Programación del Pipeline %{id}"  msgid "Emails"  msgstr "" +msgid "Enable in settings" +msgstr "" +  msgid "EventFilterBy|Filter by all"  msgstr "" @@ -516,6 +633,9 @@ msgstr "Todos los meses (el día 1 a las 4:00 am)"  msgid "Every week (Sundays at 4:00am)"  msgstr "Todas las semanas (domingos a las 4:00 am)" +msgid "Explore projects" +msgstr "" +  msgid "Failed to change the owner"  msgstr "Error al cambiar el propietario" @@ -572,7 +692,28 @@ msgstr "Ir a tu bifurcación"  msgid "GoToYourFork|Fork"  msgstr "Bifurcación" -msgid "Group overview" +msgid "GroupSettings|Prevent sharing a project within %{group} with other groups" +msgstr "" + +msgid "GroupSettings|Share with group lock" +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group} and has been overridden on this subgroup." +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group}. To share projects in this group with another group, ask the owner to override the setting or %{remove_ancestor_share_with_group_lock}." +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group}. You can override the setting or %{remove_ancestor_share_with_group_lock}." +msgstr "" + +msgid "GroupSettings|This setting will be applied to all subgroups unless overridden by a group owner. Groups that already have access to the project will continue to have access unless removed manually." +msgstr "" + +msgid "GroupSettings|cannot be disabled when the parent group \"Share with group lock\" is enabled, except by the owner of the parent group" +msgstr "" + +msgid "GroupSettings|remove the share with group lock from %{ancestor_group_name}"  msgstr ""  msgid "Health Check" @@ -593,12 +734,6 @@ msgstr ""  msgid "HealthCheck|Unhealthy"  msgstr "" -msgid "Home" -msgstr "Inicio" - -msgid "Hooks" -msgstr "" -  msgid "Housekeeping successfully started"  msgstr "Servicio de limpieza iniciado con éxito" @@ -620,6 +755,9 @@ msgstr ""  msgid "Issues"  msgstr "" +msgid "Jobs" +msgstr "" +  msgid "LFSStatus|Disabled"  msgstr "Deshabilitado" @@ -684,6 +822,9 @@ msgstr ""  msgid "Merge events"  msgstr "" +msgid "Merge request" +msgstr "" +  msgid "Messages"  msgstr "" @@ -812,6 +953,18 @@ msgstr ""  msgid "Owner"  msgstr "Propietario" +msgid "Pagination|Last »" +msgstr "" + +msgid "Pagination|Next" +msgstr "" + +msgid "Pagination|Prev" +msgstr "" + +msgid "Pagination|« First" +msgstr "" +  msgid "Password"  msgstr "" @@ -917,10 +1070,7 @@ msgstr "con etapas"  msgid "Preferences"  msgstr "" -msgid "Profile Settings" -msgstr "" - -msgid "Project" +msgid "Profile"  msgstr ""  msgid "Project '%{project_name}' queued for deletion." @@ -953,12 +1103,6 @@ msgstr "El enlace de exportación del proyecto ha caducado. Por favor, genera un  msgid "Project export started. A download link will be sent by email."  msgstr "Se inició la exportación del proyecto. Se enviará un enlace de descarga por correo electrónico." -msgid "Project home" -msgstr "Inicio del proyecto" - -msgid "Project overview" -msgstr "" -  msgid "ProjectActivityRSS|Subscribe"  msgstr "" @@ -983,27 +1127,30 @@ msgstr "Etapa"  msgid "ProjectNetworkGraph|Graph"  msgstr "Historial gráfico" -msgid "Push Rules" +msgid "ProjectsDropdown|Frequently visited"  msgstr ""  msgid "ProjectsDropdown|Loading projects"  msgstr "" -msgid "ProjectsDropdown|Sorry, no projects matched your search" -msgstr "" -  msgid "ProjectsDropdown|Projects you visit often will appear here"  msgstr ""  msgid "ProjectsDropdown|Search your projects"  msgstr "" -msgid "ProjectsDropdown|Something went wrong on our end" +msgid "ProjectsDropdown|Something went wrong on our end." +msgstr "" + +msgid "ProjectsDropdown|Sorry, no projects matched your search"  msgstr ""  msgid "ProjectsDropdown|This feature requires browser localStorage support"  msgstr "" +msgid "Push Rules" +msgstr "" +  msgid "Push events"  msgstr "" @@ -1019,6 +1166,9 @@ msgstr "Ramas"  msgid "RefSwitcher|Tags"  msgstr "Etiquetas" +msgid "Registry" +msgstr "" +  msgid "Related Commits"  msgstr "Cambios Relacionados" @@ -1073,6 +1223,9 @@ msgstr "Guardar programación del pipeline"  msgid "Schedule a new pipeline"  msgstr "Programar un nuevo pipeline" +msgid "Schedules" +msgstr "" +  msgid "Scheduling Pipelines"  msgstr "Programación de Pipelines" @@ -1112,6 +1265,12 @@ msgstr "establecer una contraseña"  msgid "Settings"  msgstr "" +msgid "Show parent pages" +msgstr "" + +msgid "Show parent subgroups" +msgstr "" +  msgid "Showing %d event"  msgid_plural "Showing %d events"  msgstr[0] "Mostrando %d evento" @@ -1120,6 +1279,102 @@ msgstr[1] "Mostrando %d eventos"  msgid "Snippets"  msgstr "" +msgid "SortOptions|Access level, ascending" +msgstr "" + +msgid "SortOptions|Access level, descending" +msgstr "" + +msgid "SortOptions|Created date" +msgstr "" + +msgid "SortOptions|Due date" +msgstr "" + +msgid "SortOptions|Due later" +msgstr "" + +msgid "SortOptions|Due soon" +msgstr "" + +msgid "SortOptions|Label priority" +msgstr "" + +msgid "SortOptions|Largest group" +msgstr "" + +msgid "SortOptions|Largest repository" +msgstr "" + +msgid "SortOptions|Last created" +msgstr "" + +msgid "SortOptions|Last joined" +msgstr "" + +msgid "SortOptions|Last updated" +msgstr "" + +msgid "SortOptions|Least popular" +msgstr "" + +msgid "SortOptions|Less weight" +msgstr "" + +msgid "SortOptions|Milestone" +msgstr "" + +msgid "SortOptions|Milestone due later" +msgstr "" + +msgid "SortOptions|Milestone due soon" +msgstr "" + +msgid "SortOptions|More weight" +msgstr "" + +msgid "SortOptions|Most popular" +msgstr "" + +msgid "SortOptions|Name" +msgstr "" + +msgid "SortOptions|Name, ascending" +msgstr "" + +msgid "SortOptions|Name, descending" +msgstr "" + +msgid "SortOptions|Oldest created" +msgstr "" + +msgid "SortOptions|Oldest joined" +msgstr "" + +msgid "SortOptions|Oldest sign in" +msgstr "" + +msgid "SortOptions|Oldest updated" +msgstr "" + +msgid "SortOptions|Popularity" +msgstr "" + +msgid "SortOptions|Priority" +msgstr "" + +msgid "SortOptions|Recent sign in" +msgstr "" + +msgid "SortOptions|Start later" +msgstr "" + +msgid "SortOptions|Start soon" +msgstr "" + +msgid "SortOptions|Weight" +msgstr "" +  msgid "Source code"  msgstr "Código fuente" @@ -1132,6 +1387,9 @@ msgstr ""  msgid "StarProject|Star"  msgstr "Destacar" +msgid "Starred projects" +msgstr "" +  msgid "Start a %{new_merge_request} with these changes"  msgstr "Iniciar una %{new_merge_request} con estos cambios" @@ -1141,6 +1399,9 @@ msgstr ""  msgid "Switch branch/tag"  msgstr "Cambiar rama/etiqueta" +msgid "System Hooks" +msgstr "" +  msgid "Tag"  msgid_plural "Tags"  msgstr[0] "Etiqueta" @@ -1206,6 +1467,9 @@ msgstr "El valor en el punto medio de una serie de valores observados. Por ejemp  msgid "There are problems accessing Git storage: "  msgstr "" +msgid "This is the author's first Merge Request to this project. Handle with care." +msgstr "" +  msgid "This means you can not push code until you create an empty repository or import existing one."  msgstr "Esto significa que no puede enviar código hasta que cree un repositorio vacío o importe uno existente." @@ -1381,9 +1645,15 @@ msgstr ""  msgid "Use your global notification setting"  msgstr "Utiliza tu configuración de notificación global" +msgid "View file @ " +msgstr "" +  msgid "View open merge request"  msgstr "Ver solicitud de fusión abierta" +msgid "View replaced file @ " +msgstr "" +  msgid "VisibilityLevel|Internal"  msgstr "Interno" @@ -1456,6 +1726,12 @@ msgstr "No podrás actualizar o enviar código al proyecto a través de SSH hast  msgid "Your name"  msgstr "Tu nombre" +msgid "Your projects" +msgstr "" + +msgid "commit" +msgstr "" +  msgid "day"  msgid_plural "days"  msgstr[0] "día" diff --git a/locale/fr/gitlab.po b/locale/fr/gitlab.po index c98156e026e..28d9c6a3e56 100644 --- a/locale/fr/gitlab.po +++ b/locale/fr/gitlab.po @@ -2,8 +2,8 @@ msgid ""  msgstr ""  "Project-Id-Version: gitlab-ee\n"  "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-09-06 08:32+0200\n" -"PO-Revision-Date: 2017-09-15 05:22-0400\n" +"POT-Creation-Date: 2017-09-27 16:26+0200\n" +"PO-Revision-Date: 2017-09-27 13:45-0400\n"  "Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n"  "Language-Team: French\n"  "Language: fr_FR\n" @@ -29,27 +29,33 @@ msgstr[1] "%s validations supplémentaires ont été masquées afin d'éviter de  msgid "%{commit_author_link} committed %{commit_timeago}"  msgstr "%{commit_author_link} a validé %{commit_timeago}" -msgid "%{number_of_failures} of %{maximum_failures} failures. GitLab will allow access on the next attempt." +msgid "%{number_commits_behind} commits behind %{default_branch}, %{number_commits_ahead} commits ahead"  msgstr "" +msgid "%{number_of_failures} of %{maximum_failures} failures. GitLab will allow access on the next attempt." +msgstr "%{number_of_failures} sur %{maximum_failures} tentative(s). GitLab va vous permettre d'accéder à la prochaine tentative." +  msgid "%{number_of_failures} of %{maximum_failures} failures. GitLab will block access for %{number_of_seconds} seconds." -msgstr "" +msgstr "%{number_of_failures} échecs sur %{maximum_failures}. GitLab va bloquer l’accès pendant %{number_of_seconds} secondes."  msgid "%{number_of_failures} of %{maximum_failures} failures. GitLab will not retry automatically. Reset storage information when the problem is resolved." -msgstr "" +msgstr "%{number_of_failures} échecs sur %{maximum_failures}. GitLab ne va plus réessayer automatiquement. Réinitialisez les informations de stockage lorsque le problème est résolu."  msgid "%{storage_name}: failed storage access attempt on host:"  msgid_plural "%{storage_name}: %{failed_attempts} failed storage access attempts:" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%{storage_name} : la tentative d’accès au stockage a échouée sur l’hôte :" +msgstr[1] "%{storage_name} : %{failed_attempts} tentatives d’accès au stockage ont échouées :"  msgid "(checkout the %{link} for information on how to install it)." -msgstr "" +msgstr "(Lisez %{link} pour savoir comment l'installer)."  msgid "1 pipeline"  msgid_plural "%d pipelines" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "1 pipeline" +msgstr[1] "%d pipelines" + +msgid "1st contribution!" +msgstr ""  msgid "A collection of graphs regarding Continuous Integration"  msgstr "Un ensemble de graphiques concernant l’Intégration Continue (CI)" @@ -58,16 +64,16 @@ msgid "About auto deploy"  msgstr "A propos de l'auto-déploiement"  msgid "Abuse Reports" -msgstr "" +msgstr "Rapports d’abus"  msgid "Access Tokens" -msgstr "" +msgstr "Jetons d'Accès"  msgid "Access to failing storages has been temporarily disabled to allow the mount to recover. Reset storage information after the issue has been resolved to allow access again." -msgstr "" +msgstr "L'accès aux stockages défaillants a été temporairement désactivé pour permettre au montage de récupérer. Réinitialiser les informations de stockage dès que le problème est résolu pour permettre l’accès à nouveau."  msgid "Account" -msgstr "" +msgstr "Compte"  msgid "Active"  msgstr "Actif" @@ -91,13 +97,13 @@ msgid "Add new directory"  msgstr "Ajouter un nouveau dossier"  msgid "All" -msgstr "" +msgstr "Tous" -msgid "Appearances" +msgid "Appearance"  msgstr ""  msgid "Applications" -msgstr "" +msgstr "Applications"  msgid "Archived project! Repository is read-only"  msgstr "Projet archivé ! Le dépôt est en lecture seule" @@ -106,21 +112,45 @@ msgid "Are you sure you want to delete this pipeline schedule?"  msgstr "Êtes-vous sûr de vouloir supprimer ce pipeline programmé"  msgid "Are you sure you want to discard your changes?" -msgstr "" +msgstr "Êtes-vous sûr de vouloir annuler vos modifications ?"  msgid "Are you sure you want to reset registration token?" -msgstr "" +msgstr "Êtes-vous sûr de vouloir réinitialiser le jeton d’inscription ?"  msgid "Are you sure you want to reset the health check token?" -msgstr "" +msgstr "Êtes-vous sûr de vouloir réinitialiser le jeton de bilan de santé ?"  msgid "Are you sure?" +msgstr "Êtes-vous certain ?" + +msgid "Artifacts"  msgstr ""  msgid "Attach a file by drag & drop or %{upload_link}"  msgstr "Attachez un fichier par glisser & déposer ou %{upload_link}" -msgid "Authentication log" +msgid "Authentication Log" +msgstr "" + +msgid "Auto DevOps (Beta)" +msgstr "" + +msgid "Auto DevOps can be activated for this project. It will automatically build, test, and deploy your application based on a predefined CI/CD configuration." +msgstr "" + +msgid "Auto DevOps documentation" +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need a domain name and the %{kubernetes} to work correctly." +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need a domain name to work correctly." +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need the %{kubernetes} to work correctly." +msgstr "" + +msgid "AutoDevOps|Learn more in the"  msgstr ""  msgid "Billing" @@ -177,10 +207,13 @@ msgstr ""  msgid "Billinglans|Downgrade"  msgstr "" +msgid "Board" +msgstr "" +  msgid "Branch"  msgid_plural "Branches" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Branche" +msgstr[1] "Branches"  msgid "Branch <strong>%{branch_name}</strong> was created. To set up auto deploy, choose a GitLab CI Yaml template and commit your changes. %{link_to_autodeploy_doc}"  msgstr "La branche <strong>%{branch_name}</strong> a été crée. Pour mettre en place le déploiement automatisé, sélectionnez un modèle de fichier Yaml pour l'intégration continue (CI) de GitLab, et validez les modifications. %{link_to_autodeploy_doc}" @@ -192,6 +225,90 @@ msgid "BranchSwitcherTitle|Switch branch"  msgstr "Changer de branche"  msgid "Branches" +msgstr "Branches" + +msgid "Branches|Cant find HEAD commit for this branch" +msgstr "" + +msgid "Branches|Compare" +msgstr "" + +msgid "Branches|Delete all branches that are merged into '%{default_branch}'" +msgstr "" + +msgid "Branches|Delete branch" +msgstr "" + +msgid "Branches|Delete merged branches" +msgstr "" + +msgid "Branches|Delete protected branch" +msgstr "" + +msgid "Branches|Delete protected branch '%{branch_name}'?" +msgstr "" + +msgid "Branches|Deleting the '%{branch_name}' branch cannot be undone. Are you sure?" +msgstr "" + +msgid "Branches|Deleting the merged branches cannot be undone. Are you sure?" +msgstr "" + +msgid "Branches|Filter by branch name" +msgstr "" + +msgid "Branches|Merged into %{default_branch}" +msgstr "" + +msgid "Branches|New branch" +msgstr "" + +msgid "Branches|No branches to show" +msgstr "" + +msgid "Branches|Once you confirm and press %{delete_protected_branch}, it cannot be undone or recovered." +msgstr "" + +msgid "Branches|Only a project master or owner can delete a protected branch" +msgstr "" + +msgid "Branches|Protected branches can be managed in %{project_settings_link}" +msgstr "" + +msgid "Branches|Sort by" +msgstr "" + +msgid "Branches|The branch could not be updated automatically because it has diverged from its upstream counterpart." +msgstr "" + +msgid "Branches|The default branch cannot be deleted" +msgstr "" + +msgid "Branches|This branch hasn’t been merged into %{default_branch}." +msgstr "" + +msgid "Branches|To avoid data loss, consider merging this branch before deleting it." +msgstr "" + +msgid "Branches|To confirm, type %{branch_name_confirmation}:" +msgstr "" + +msgid "Branches|To discard the local changes and overwrite the branch with the upstream version, delete it here and choose 'Update Now' above." +msgstr "" + +msgid "Branches|You’re about to permanently delete the protected branch %{branch_name}." +msgstr "" + +msgid "Branches|diverged from upstream" +msgstr "" + +msgid "Branches|merged" +msgstr "" + +msgid "Branches|project settings" +msgstr "" + +msgid "Branches|protected"  msgstr ""  msgid "Browse Directory" @@ -210,7 +327,7 @@ msgid "ByAuthor|by"  msgstr "par"  msgid "CI / CD" -msgstr "" +msgstr "Intégration continu / Déploiement continu"  msgid "CI configuration"  msgstr "Configuration de l'intégration continue (CI)" @@ -219,19 +336,19 @@ msgid "Cancel"  msgstr "Annuler"  msgid "Cancel edit" -msgstr "" +msgstr "Annuler modification"  msgid "ChangeTypeActionLabel|Pick into branch"  msgstr "Sélectionner dans la branche"  msgid "ChangeTypeActionLabel|Revert in branch" -msgstr "Annuler dans la branche" +msgstr "Défaire dans la branche"  msgid "ChangeTypeAction|Cherry-pick"  msgstr "Sélectionner"  msgid "ChangeTypeAction|Revert" -msgstr "Annuler" +msgstr "Défaire"  msgid "Changelog"  msgstr "Journal des modifications" @@ -240,7 +357,7 @@ msgid "Charts"  msgstr "Graphiques"  msgid "Chat" -msgstr "" +msgstr "Chat"  msgid "Cherry-pick this commit"  msgstr "Sélectionner cette validation" @@ -261,10 +378,10 @@ msgid "CiStatusLabel|manual action"  msgstr "action manuelle"  msgid "CiStatusLabel|passed" -msgstr "passé" +msgstr "réussi"  msgid "CiStatusLabel|passed with warnings" -msgstr "passé avec des avertissements" +msgstr "réussi avec des avertissements"  msgid "CiStatusLabel|pending"  msgstr "en attente" @@ -279,7 +396,7 @@ msgid "CiStatusText|blocked"  msgstr "bloqué"  msgid "CiStatusText|canceled" -msgstr "annulé " +msgstr "annulé"  msgid "CiStatusText|created"  msgstr "créé" @@ -291,7 +408,7 @@ msgid "CiStatusText|manual"  msgstr "manuel"  msgid "CiStatusText|passed" -msgstr "passé" +msgstr "réussi"  msgid "CiStatusText|pending"  msgstr "en attente" @@ -303,7 +420,7 @@ msgid "CiStatus|running"  msgstr "en cours"  msgid "Comments" -msgstr "" +msgstr "Commentaires"  msgid "Commit"  msgid_plural "Commits" @@ -337,9 +454,6 @@ msgstr "Validé par"  msgid "Compare"  msgstr "Comparer" -msgid "Container Registry" -msgstr "" -  msgid "Contribution guide"  msgstr "Guilde de contribution" @@ -359,7 +473,7 @@ msgid "Create New Directory"  msgstr "Créer un nouveau dossier"  msgid "Create a new branch" -msgstr "" +msgstr "Créer une nouvelle branche"  msgid "Create a personal access token on your account to pull or push via %{protocol}."  msgstr "Créer un jeton d’accès personnel pour votre compte afin de récupérer ou pousser par %{protocol}." @@ -436,19 +550,19 @@ msgstr[0] "Déploiement"  msgstr[1] "Déploiements"  msgid "Deploy Keys" -msgstr "" +msgstr "Clés de déploiement"  msgid "Description" -msgstr "" +msgstr "Description"  msgid "Details" -msgstr "" +msgstr "Détails"  msgid "Directory name"  msgstr "Nom du dossier"  msgid "Discard changes" -msgstr "" +msgstr "Supprimer les modifications"  msgid "Don't show again"  msgstr "Ne plus montrer" @@ -487,25 +601,28 @@ msgid "Edit Pipeline Schedule %{id}"  msgstr "Éditer le pipeline programmé %{id}"  msgid "Emails" +msgstr "Courriels" + +msgid "Enable in settings"  msgstr ""  msgid "EventFilterBy|Filter by all" -msgstr "" +msgstr "Aucun filtre"  msgid "EventFilterBy|Filter by comments" -msgstr "" +msgstr "Filtrer par commentaires"  msgid "EventFilterBy|Filter by issue events" -msgstr "" +msgstr "Filtrer par événements d'incident"  msgid "EventFilterBy|Filter by merge events" -msgstr "" +msgstr "Filtrer par événements de fusion"  msgid "EventFilterBy|Filter by push events" -msgstr "" +msgstr "Filtrer par événements de poussée"  msgid "EventFilterBy|Filter by team" -msgstr "" +msgstr "Filtrer par équipe"  msgid "Every day (at 4:00am)"  msgstr "Chaque jour (à 4:00 du matin)" @@ -516,6 +633,9 @@ msgstr "Chaque mois (le 1er à 4:00 du matin)"  msgid "Every week (Sundays at 4:00am)"  msgstr "Chaque semaine (dimanche à 4:00 du matin)" +msgid "Explore projects" +msgstr "" +  msgid "Failed to change the owner"  msgstr "Échec du changement de propriétaire" @@ -555,16 +675,16 @@ msgid "From merge request merge until deploy to production"  msgstr "Depuis la fusion de la demande de fusion jusqu'au déploiement en production"  msgid "GPG Keys" -msgstr "" +msgstr "Clés GPG"  msgid "Geo Nodes"  msgstr ""  msgid "Git storage health information has been reset" -msgstr "" +msgstr "Les informations de santé du stockage Git ont été réinitialisées"  msgid "GitLab Runner section" -msgstr "" +msgstr "Section de Runner GitLab"  msgid "Go to your fork"  msgstr "Aller à votre fourche" @@ -572,33 +692,48 @@ msgstr "Aller à votre fourche"  msgid "GoToYourFork|Fork"  msgstr "Fourche" -msgid "Group overview" +msgid "GroupSettings|Prevent sharing a project within %{group} with other groups"  msgstr "" -msgid "Health Check" +msgid "GroupSettings|Share with group lock"  msgstr "" -msgid "Health information can be retrieved from the following endpoints. More information is available" +msgid "GroupSettings|This setting is applied on %{ancestor_group} and has been overridden on this subgroup."  msgstr "" -msgid "HealthCheck|Access token is" +msgid "GroupSettings|This setting is applied on %{ancestor_group}. To share projects in this group with another group, ask the owner to override the setting or %{remove_ancestor_share_with_group_lock}."  msgstr "" -msgid "HealthCheck|Healthy" +msgid "GroupSettings|This setting is applied on %{ancestor_group}. You can override the setting or %{remove_ancestor_share_with_group_lock}."  msgstr "" -msgid "HealthCheck|No Health Problems Detected" +msgid "GroupSettings|This setting will be applied to all subgroups unless overridden by a group owner. Groups that already have access to the project will continue to have access unless removed manually."  msgstr "" -msgid "HealthCheck|Unhealthy" +msgid "GroupSettings|cannot be disabled when the parent group \"Share with group lock\" is enabled, except by the owner of the parent group"  msgstr "" -msgid "Home" -msgstr "Accueil" - -msgid "Hooks" +msgid "GroupSettings|remove the share with group lock from %{ancestor_group_name}"  msgstr "" +msgid "Health Check" +msgstr "Bilan de santé" + +msgid "Health information can be retrieved from the following endpoints. More information is available" +msgstr "Des informations de santé peuvent être récupérées depuis les adresses suivantes. Plus d’informations" + +msgid "HealthCheck|Access token is" +msgstr "Le jeton d’accès est" + +msgid "HealthCheck|Healthy" +msgstr "En bonne santé" + +msgid "HealthCheck|No Health Problems Detected" +msgstr "Aucun problème détecté" + +msgid "HealthCheck|Unhealthy" +msgstr "En mauvaise santé" +  msgid "Housekeeping successfully started"  msgstr "Maintenance démarrée avec succès" @@ -606,7 +741,7 @@ msgid "Import repository"  msgstr "Importer un dépôt"  msgid "Install a Runner compatible with GitLab CI" -msgstr "" +msgstr "Installez un Runner compatible avec l'intégration continue de GitLab"  msgid "Interval Pattern"  msgstr "Schéma d’intervalle" @@ -615,9 +750,12 @@ msgid "Introducing Cycle Analytics"  msgstr "Introduction à l'analyseur de cycle"  msgid "Issue events" -msgstr "" +msgstr "Événements de l'incident"  msgid "Issues" +msgstr "Incidents" + +msgid "Jobs"  msgstr ""  msgid "LFSStatus|Disabled" @@ -644,10 +782,10 @@ msgid "Last commit"  msgstr "Dernière validation"  msgid "LastPushEvent|You pushed to" -msgstr "" +msgstr "Vous avez poussé sur"  msgid "LastPushEvent|at" -msgstr "" +msgstr "à"  msgid "Learn more in the"  msgstr "En apprendre plus dans le" @@ -676,25 +814,28 @@ msgid "Median"  msgstr "Médian"  msgid "Members" -msgstr "" +msgstr "Membres"  msgid "Merge Requests" -msgstr "" +msgstr "Demandes de fusion"  msgid "Merge events" +msgstr "Événements de fusion" + +msgid "Merge request"  msgstr ""  msgid "Messages" -msgstr "" +msgstr "Messages"  msgid "MissingSSHKeyWarningLink|add an SSH key"  msgstr "ajouter une clef SSH"  msgid "Monitoring" -msgstr "" +msgstr "Surveillance"  msgid "More information is available|here" -msgstr "" +msgstr "ici"  msgid "New Issue"  msgid_plural "New Issues" @@ -795,7 +936,7 @@ msgid "NotificationLevel|Watch"  msgstr "Surveillé"  msgid "Notifications" -msgstr "" +msgstr "Notifications"  msgid "OfSearchInADropdown|Filter"  msgstr "Filtre" @@ -804,20 +945,32 @@ msgid "OpenedNDaysAgo|Opened"  msgstr "Ouvert"  msgid "Options" -msgstr "" +msgstr "Paramètres"  msgid "Overview" -msgstr "" +msgstr "Vue d'ensemble"  msgid "Owner"  msgstr "Propriétaire" -msgid "Password" +msgid "Pagination|Last »"  msgstr "" -msgid "Pipeline" +msgid "Pagination|Next"  msgstr "" +msgid "Pagination|Prev" +msgstr "" + +msgid "Pagination|« First" +msgstr "" + +msgid "Password" +msgstr "Mot de Passe" + +msgid "Pipeline" +msgstr "Pipeline" +  msgid "Pipeline Health"  msgstr "Santé du Pipeline" @@ -888,19 +1041,19 @@ msgid "PipelineSheduleIntervalPattern|Custom"  msgstr "Personnalisé"  msgid "Pipelines" -msgstr "" +msgstr "Pipelines"  msgid "Pipelines charts"  msgstr "Graphique des pipelines"  msgid "Pipelines for last month" -msgstr "" +msgstr "Pipelines pour le dernier mois"  msgid "Pipelines for last week" -msgstr "" +msgstr "Pipelines pour la dernière semaine"  msgid "Pipelines for last year" -msgstr "" +msgstr "Pipelines pour la dernière année"  msgid "Pipeline|all"  msgstr "Tous" @@ -915,12 +1068,9 @@ msgid "Pipeline|with stages"  msgstr "avec les étapes"  msgid "Preferences" -msgstr "" - -msgid "Profile Settings" -msgstr "" +msgstr "Préférences" -msgid "Project" +msgid "Profile"  msgstr ""  msgid "Project '%{project_name}' queued for deletion." @@ -939,7 +1089,7 @@ msgid "Project access must be granted explicitly to each user."  msgstr "L’accès au projet doit être explicitement accordé à chaque utilisateur."  msgid "Project details" -msgstr "" +msgstr "Détails du projet"  msgid "Project export could not be deleted."  msgstr "L'export du projet n'a pas pu être supprimé." @@ -953,14 +1103,8 @@ msgstr "Le lien de l’export du projet a expiré. Merci de générer un nouvel  msgid "Project export started. A download link will be sent by email."  msgstr "L'export du projet a débuté. Un lien de téléchargement sera envoyé par courriel." -msgid "Project home" -msgstr "Accueil du projet" - -msgid "Project overview" -msgstr "" -  msgid "ProjectActivityRSS|Subscribe" -msgstr "" +msgstr "S’abonner"  msgid "ProjectFeature|Disabled"  msgstr "Désactivé" @@ -983,29 +1127,32 @@ msgstr "Étape"  msgid "ProjectNetworkGraph|Graph"  msgstr "Graphique " -msgid "Push Rules" +msgid "ProjectsDropdown|Frequently visited"  msgstr ""  msgid "ProjectsDropdown|Loading projects" -msgstr "" - -msgid "ProjectsDropdown|Sorry, no projects matched your search" -msgstr "" +msgstr "Chargement des projets"  msgid "ProjectsDropdown|Projects you visit often will appear here" -msgstr "" +msgstr "Les projets que vous visitez souvent apparaîtront ici"  msgid "ProjectsDropdown|Search your projects" -msgstr "" +msgstr "Chercher dans vos projets" -msgid "ProjectsDropdown|Something went wrong on our end" +msgid "ProjectsDropdown|Something went wrong on our end."  msgstr "" +msgid "ProjectsDropdown|Sorry, no projects matched your search" +msgstr "Désolé, aucun projet ne correspond à votre recherche" +  msgid "ProjectsDropdown|This feature requires browser localStorage support" +msgstr "Cette fonctionnalité requiert le support du localStorage par votre navigateur" + +msgid "Push Rules"  msgstr ""  msgid "Push events" -msgstr "" +msgstr "Évènements de poussée"  msgid "Read more"  msgstr "Lire plus" @@ -1019,6 +1166,9 @@ msgstr "Branches"  msgid "RefSwitcher|Tags"  msgstr "Étiquettes" +msgid "Registry" +msgstr "" +  msgid "Related Commits"  msgstr "Validations liés" @@ -1044,19 +1194,19 @@ msgid "Remove project"  msgstr "Supprimer le projet"  msgid "Repository" -msgstr "" +msgstr "Dépôt"  msgid "Request Access"  msgstr "Demander l'accès"  msgid "Reset git storage health information" -msgstr "" +msgstr "Réinitialiser les informations de santé du stockage Git"  msgid "Reset health check access token" -msgstr "" +msgstr "Réinitialiser le jeton d’accès au bilan de santé"  msgid "Reset runners registration token" -msgstr "" +msgstr "Réinitialiser le jeton d’inscription des Runners"  msgid "Revert this commit"  msgstr "Annuler cette validation" @@ -1065,7 +1215,7 @@ msgid "Revert this merge request"  msgstr "Annuler cette demande de fusion"  msgid "SSH Keys" -msgstr "" +msgstr "Clés SSH"  msgid "Save pipeline schedule"  msgstr "Sauvegarder le pipeline programmé" @@ -1073,6 +1223,9 @@ msgstr "Sauvegarder le pipeline programmé"  msgid "Schedule a new pipeline"  msgstr "Programmer un nouveau pipeline" +msgid "Schedules" +msgstr "" +  msgid "Scheduling Pipelines"  msgstr "Programmer des pipelines" @@ -1086,13 +1239,13 @@ msgid "Select a timezone"  msgstr "Sélectionnez un fuseau horaire"  msgid "Select existing branch" -msgstr "" +msgstr "Sélectionnez une branche existante"  msgid "Select target branch"  msgstr "Sélectionnez une branche cible"  msgid "Service Templates" -msgstr "" +msgstr "Modèles de service"  msgid "Set a password on your account to pull or push via %{protocol}."  msgstr "Définissez un mot de passe pour votre compte pour pouvoir tirer ou pousser par %{protocol}." @@ -1110,6 +1263,12 @@ msgid "SetPasswordToCloneLink|set a password"  msgstr "définir un mot de passe"  msgid "Settings" +msgstr "Paramètres" + +msgid "Show parent pages" +msgstr "" + +msgid "Show parent subgroups"  msgstr ""  msgid "Showing %d event" @@ -1118,29 +1277,131 @@ msgstr[0] "Affichage de %d évènement"  msgstr[1] "Affichage de %d évènements"  msgid "Snippets" +msgstr "Extraits de code" + +msgid "SortOptions|Access level, ascending" +msgstr "" + +msgid "SortOptions|Access level, descending" +msgstr "" + +msgid "SortOptions|Created date" +msgstr "" + +msgid "SortOptions|Due date" +msgstr "" + +msgid "SortOptions|Due later" +msgstr "" + +msgid "SortOptions|Due soon" +msgstr "" + +msgid "SortOptions|Label priority" +msgstr "" + +msgid "SortOptions|Largest group" +msgstr "" + +msgid "SortOptions|Largest repository" +msgstr "" + +msgid "SortOptions|Last created" +msgstr "" + +msgid "SortOptions|Last joined" +msgstr "" + +msgid "SortOptions|Last updated" +msgstr "" + +msgid "SortOptions|Least popular" +msgstr "" + +msgid "SortOptions|Less weight" +msgstr "" + +msgid "SortOptions|Milestone" +msgstr "" + +msgid "SortOptions|Milestone due later" +msgstr "" + +msgid "SortOptions|Milestone due soon" +msgstr "" + +msgid "SortOptions|More weight" +msgstr "" + +msgid "SortOptions|Most popular" +msgstr "" + +msgid "SortOptions|Name" +msgstr "" + +msgid "SortOptions|Name, ascending" +msgstr "" + +msgid "SortOptions|Name, descending" +msgstr "" + +msgid "SortOptions|Oldest created" +msgstr "" + +msgid "SortOptions|Oldest joined" +msgstr "" + +msgid "SortOptions|Oldest sign in" +msgstr "" + +msgid "SortOptions|Oldest updated" +msgstr "" + +msgid "SortOptions|Popularity" +msgstr "" + +msgid "SortOptions|Priority" +msgstr "" + +msgid "SortOptions|Recent sign in" +msgstr "" + +msgid "SortOptions|Start later" +msgstr "" + +msgid "SortOptions|Start soon" +msgstr "" + +msgid "SortOptions|Weight"  msgstr ""  msgid "Source code"  msgstr "Code source"  msgid "Spam Logs" -msgstr "" +msgstr "Journaux des messages indésirables"  msgid "Specify the following URL during the Runner setup:" -msgstr "" +msgstr "Spécifiez l’URL suivante lors de la configuration du Runner :"  msgid "StarProject|Star"  msgstr "S'abonner" +msgid "Starred projects" +msgstr "" +  msgid "Start a %{new_merge_request} with these changes"  msgstr "Créer une %{new_merge_request} avec ces changements"  msgid "Start the Runner!" -msgstr "" +msgstr "Démarrer le Runner !"  msgid "Switch branch/tag"  msgstr "Changer de branche / d'étiquette" +msgid "System Hooks" +msgstr "" +  msgid "Tag"  msgid_plural "Tags"  msgstr[0] "Étiquette" @@ -1153,7 +1414,7 @@ msgid "Target Branch"  msgstr "Branche cible"  msgid "Team" -msgstr "" +msgstr "Équipe"  msgid "The coding stage shows the time from the first commit to creating the merge request. The data will automatically be added here once you create your first merge request."  msgstr "L’étape de développement montre le temps entre la première validation et la création de la demande de fusion. Les données seront automatiquement ajoutées ici une fois que vous aurez créé votre première demande de fusion." @@ -1204,6 +1465,9 @@ msgid "The value lying at the midpoint of a series of observed values. E.g., bet  msgstr "La valeur située au point médian d’une série de valeur observée. C.à.d., entre 3, 5, 9, le médian est 5. Entre 3, 5, 7, 8, le médian est (5+7)/2 = 6."  msgid "There are problems accessing Git storage: " +msgstr "Il y a des difficultés à accéder aux données Git : " + +msgid "This is the author's first Merge Request to this project. Handle with care."  msgstr ""  msgid "This means you can not push code until you create an empty repository or import existing one." @@ -1376,14 +1640,20 @@ msgid "UploadLink|click to upload"  msgstr "Cliquez pour envoyer"  msgid "Use the following registration token during setup:" -msgstr "" +msgstr "Utiliser le jeton d’inscription suivant pendant l’installation :"  msgid "Use your global notification setting"  msgstr "Utiliser vos paramètres de notification globaux" +msgid "View file @ " +msgstr "" +  msgid "View open merge request"  msgstr "Afficher la demande de fusion" +msgid "View replaced file @ " +msgstr "" +  msgid "VisibilityLevel|Internal"  msgstr "Interne" @@ -1403,7 +1673,7 @@ msgid "We don't have enough data to show this stage."  msgstr "Nous n'avons pas suffisamment de données pour afficher cette étape."  msgid "Wiki" -msgstr "" +msgstr "Wiki"  msgid "Withdraw Access Request"  msgstr "Retirer la demande d'accès" @@ -1456,6 +1726,12 @@ msgstr "Vous ne pourrez pas récupérer ou pousser de code par SSH tant que vous  msgid "Your name"  msgstr "Votre nom" +msgid "Your projects" +msgstr "" + +msgid "commit" +msgstr "" +  msgid "day"  msgid_plural "days"  msgstr[0] "jour" @@ -1469,6 +1745,6 @@ msgstr "courriels de notification"  msgid "parent"  msgid_plural "parents" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "parent" +msgstr[1] "parents" diff --git a/locale/it/gitlab.po b/locale/it/gitlab.po index 0249c4fe9eb..804817e96e9 100644 --- a/locale/it/gitlab.po +++ b/locale/it/gitlab.po @@ -2,8 +2,8 @@ msgid ""  msgstr ""  "Project-Id-Version: gitlab-ee\n"  "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-09-06 08:32+0200\n" -"PO-Revision-Date: 2017-09-15 05:20-0400\n" +"POT-Creation-Date: 2017-09-27 16:26+0200\n" +"PO-Revision-Date: 2017-09-27 13:44-0400\n"  "Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n"  "Language-Team: Italian\n"  "Language: it_IT\n" @@ -29,6 +29,9 @@ msgstr[1] "%s commit aggiuntivi sono stati omessi per evitare degradi di prestaz  msgid "%{commit_author_link} committed %{commit_timeago}"  msgstr "%{commit_author_link} ha committato %{commit_timeago}" +msgid "%{number_commits_behind} commits behind %{default_branch}, %{number_commits_ahead} commits ahead" +msgstr "" +  msgid "%{number_of_failures} of %{maximum_failures} failures. GitLab will allow access on the next attempt."  msgstr "" @@ -51,6 +54,9 @@ msgid_plural "%d pipelines"  msgstr[0] ""  msgstr[1] "" +msgid "1st contribution!" +msgstr "" +  msgid "A collection of graphs regarding Continuous Integration"  msgstr "Un insieme di grafici riguardo la Continuous Integration" @@ -93,7 +99,7 @@ msgstr "Aggiungi una directory (cartella)"  msgid "All"  msgstr "" -msgid "Appearances" +msgid "Appearance"  msgstr ""  msgid "Applications" @@ -117,10 +123,34 @@ msgstr ""  msgid "Are you sure?"  msgstr "" +msgid "Artifacts" +msgstr "" +  msgid "Attach a file by drag & drop or %{upload_link}"  msgstr "Aggiungi un file tramite trascina & rilascia ( drag & drop) o %{upload_link}" -msgid "Authentication log" +msgid "Authentication Log" +msgstr "" + +msgid "Auto DevOps (Beta)" +msgstr "" + +msgid "Auto DevOps can be activated for this project. It will automatically build, test, and deploy your application based on a predefined CI/CD configuration." +msgstr "" + +msgid "Auto DevOps documentation" +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need a domain name and the %{kubernetes} to work correctly." +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need a domain name to work correctly." +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need the %{kubernetes} to work correctly." +msgstr "" + +msgid "AutoDevOps|Learn more in the"  msgstr ""  msgid "Billing" @@ -177,6 +207,9 @@ msgstr ""  msgid "Billinglans|Downgrade"  msgstr "" +msgid "Board" +msgstr "" +  msgid "Branch"  msgid_plural "Branches"  msgstr[0] "" @@ -194,6 +227,90 @@ msgstr "Cambia branch"  msgid "Branches"  msgstr "" +msgid "Branches|Cant find HEAD commit for this branch" +msgstr "" + +msgid "Branches|Compare" +msgstr "" + +msgid "Branches|Delete all branches that are merged into '%{default_branch}'" +msgstr "" + +msgid "Branches|Delete branch" +msgstr "" + +msgid "Branches|Delete merged branches" +msgstr "" + +msgid "Branches|Delete protected branch" +msgstr "" + +msgid "Branches|Delete protected branch '%{branch_name}'?" +msgstr "" + +msgid "Branches|Deleting the '%{branch_name}' branch cannot be undone. Are you sure?" +msgstr "" + +msgid "Branches|Deleting the merged branches cannot be undone. Are you sure?" +msgstr "" + +msgid "Branches|Filter by branch name" +msgstr "" + +msgid "Branches|Merged into %{default_branch}" +msgstr "" + +msgid "Branches|New branch" +msgstr "" + +msgid "Branches|No branches to show" +msgstr "" + +msgid "Branches|Once you confirm and press %{delete_protected_branch}, it cannot be undone or recovered." +msgstr "" + +msgid "Branches|Only a project master or owner can delete a protected branch" +msgstr "" + +msgid "Branches|Protected branches can be managed in %{project_settings_link}" +msgstr "" + +msgid "Branches|Sort by" +msgstr "" + +msgid "Branches|The branch could not be updated automatically because it has diverged from its upstream counterpart." +msgstr "" + +msgid "Branches|The default branch cannot be deleted" +msgstr "" + +msgid "Branches|This branch hasn’t been merged into %{default_branch}." +msgstr "" + +msgid "Branches|To avoid data loss, consider merging this branch before deleting it." +msgstr "" + +msgid "Branches|To confirm, type %{branch_name_confirmation}:" +msgstr "" + +msgid "Branches|To discard the local changes and overwrite the branch with the upstream version, delete it here and choose 'Update Now' above." +msgstr "" + +msgid "Branches|You’re about to permanently delete the protected branch %{branch_name}." +msgstr "" + +msgid "Branches|diverged from upstream" +msgstr "" + +msgid "Branches|merged" +msgstr "" + +msgid "Branches|project settings" +msgstr "" + +msgid "Branches|protected" +msgstr "" +  msgid "Browse Directory"  msgstr "Naviga direttori" @@ -337,9 +454,6 @@ msgstr "Committato da "  msgid "Compare"  msgstr "Confronta" -msgid "Container Registry" -msgstr "" -  msgid "Contribution guide"  msgstr "Guida per contribuire" @@ -489,6 +603,9 @@ msgstr "Cambia programmazione della pipeline %{id}"  msgid "Emails"  msgstr "" +msgid "Enable in settings" +msgstr "" +  msgid "EventFilterBy|Filter by all"  msgstr "" @@ -516,6 +633,9 @@ msgstr "Ogni primo giorno del mese (alle 4 del mattino)"  msgid "Every week (Sundays at 4:00am)"  msgstr "Ogni settimana (Di domenica alle 4 del mattino)" +msgid "Explore projects" +msgstr "" +  msgid "Failed to change the owner"  msgstr "Impossibile cambiare owner" @@ -572,7 +692,28 @@ msgstr "Vai il tuo fork"  msgid "GoToYourFork|Fork"  msgstr "Fork" -msgid "Group overview" +msgid "GroupSettings|Prevent sharing a project within %{group} with other groups" +msgstr "" + +msgid "GroupSettings|Share with group lock" +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group} and has been overridden on this subgroup." +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group}. To share projects in this group with another group, ask the owner to override the setting or %{remove_ancestor_share_with_group_lock}." +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group}. You can override the setting or %{remove_ancestor_share_with_group_lock}." +msgstr "" + +msgid "GroupSettings|This setting will be applied to all subgroups unless overridden by a group owner. Groups that already have access to the project will continue to have access unless removed manually." +msgstr "" + +msgid "GroupSettings|cannot be disabled when the parent group \"Share with group lock\" is enabled, except by the owner of the parent group" +msgstr "" + +msgid "GroupSettings|remove the share with group lock from %{ancestor_group_name}"  msgstr ""  msgid "Health Check" @@ -593,12 +734,6 @@ msgstr ""  msgid "HealthCheck|Unhealthy"  msgstr "" -msgid "Home" -msgstr "" - -msgid "Hooks" -msgstr "" -  msgid "Housekeeping successfully started"  msgstr "Housekeeping iniziato con successo" @@ -620,6 +755,9 @@ msgstr ""  msgid "Issues"  msgstr "" +msgid "Jobs" +msgstr "" +  msgid "LFSStatus|Disabled"  msgstr "Disabilitato" @@ -684,6 +822,9 @@ msgstr ""  msgid "Merge events"  msgstr "" +msgid "Merge request" +msgstr "" +  msgid "Messages"  msgstr "" @@ -812,6 +953,18 @@ msgstr ""  msgid "Owner"  msgstr "" +msgid "Pagination|Last »" +msgstr "" + +msgid "Pagination|Next" +msgstr "" + +msgid "Pagination|Prev" +msgstr "" + +msgid "Pagination|« First" +msgstr "" +  msgid "Password"  msgstr "" @@ -917,10 +1070,7 @@ msgstr "con più stadi"  msgid "Preferences"  msgstr "" -msgid "Profile Settings" -msgstr "" - -msgid "Project" +msgid "Profile"  msgstr ""  msgid "Project '%{project_name}' queued for deletion." @@ -953,12 +1103,6 @@ msgstr "Il link d'esportazione del progetto è scaduto. Genera una nuova esporta  msgid "Project export started. A download link will be sent by email."  msgstr "Esportazione del progetto iniziata. Un link di download sarà inviato via email." -msgid "Project home" -msgstr "Home di progetto" - -msgid "Project overview" -msgstr "" -  msgid "ProjectActivityRSS|Subscribe"  msgstr "" @@ -983,27 +1127,30 @@ msgstr "Stadio"  msgid "ProjectNetworkGraph|Graph"  msgstr "Grafico" -msgid "Push Rules" +msgid "ProjectsDropdown|Frequently visited"  msgstr ""  msgid "ProjectsDropdown|Loading projects"  msgstr "" -msgid "ProjectsDropdown|Sorry, no projects matched your search" -msgstr "" -  msgid "ProjectsDropdown|Projects you visit often will appear here"  msgstr ""  msgid "ProjectsDropdown|Search your projects"  msgstr "" -msgid "ProjectsDropdown|Something went wrong on our end" +msgid "ProjectsDropdown|Something went wrong on our end." +msgstr "" + +msgid "ProjectsDropdown|Sorry, no projects matched your search"  msgstr ""  msgid "ProjectsDropdown|This feature requires browser localStorage support"  msgstr "" +msgid "Push Rules" +msgstr "" +  msgid "Push events"  msgstr "" @@ -1019,6 +1166,9 @@ msgstr "Branches"  msgid "RefSwitcher|Tags"  msgstr "Tags" +msgid "Registry" +msgstr "" +  msgid "Related Commits"  msgstr "Commit correlati" @@ -1073,6 +1223,9 @@ msgstr "Salva pianificazione pipeline"  msgid "Schedule a new pipeline"  msgstr "Pianifica una nuova Pipeline" +msgid "Schedules" +msgstr "" +  msgid "Scheduling Pipelines"  msgstr "Pianificazione pipelines" @@ -1112,6 +1265,12 @@ msgstr "imposta una password"  msgid "Settings"  msgstr "" +msgid "Show parent pages" +msgstr "" + +msgid "Show parent subgroups" +msgstr "" +  msgid "Showing %d event"  msgid_plural "Showing %d events"  msgstr[0] "Visualizza %d evento" @@ -1120,6 +1279,102 @@ msgstr[1] "Visualizza %d eventi"  msgid "Snippets"  msgstr "" +msgid "SortOptions|Access level, ascending" +msgstr "" + +msgid "SortOptions|Access level, descending" +msgstr "" + +msgid "SortOptions|Created date" +msgstr "" + +msgid "SortOptions|Due date" +msgstr "" + +msgid "SortOptions|Due later" +msgstr "" + +msgid "SortOptions|Due soon" +msgstr "" + +msgid "SortOptions|Label priority" +msgstr "" + +msgid "SortOptions|Largest group" +msgstr "" + +msgid "SortOptions|Largest repository" +msgstr "" + +msgid "SortOptions|Last created" +msgstr "" + +msgid "SortOptions|Last joined" +msgstr "" + +msgid "SortOptions|Last updated" +msgstr "" + +msgid "SortOptions|Least popular" +msgstr "" + +msgid "SortOptions|Less weight" +msgstr "" + +msgid "SortOptions|Milestone" +msgstr "" + +msgid "SortOptions|Milestone due later" +msgstr "" + +msgid "SortOptions|Milestone due soon" +msgstr "" + +msgid "SortOptions|More weight" +msgstr "" + +msgid "SortOptions|Most popular" +msgstr "" + +msgid "SortOptions|Name" +msgstr "" + +msgid "SortOptions|Name, ascending" +msgstr "" + +msgid "SortOptions|Name, descending" +msgstr "" + +msgid "SortOptions|Oldest created" +msgstr "" + +msgid "SortOptions|Oldest joined" +msgstr "" + +msgid "SortOptions|Oldest sign in" +msgstr "" + +msgid "SortOptions|Oldest updated" +msgstr "" + +msgid "SortOptions|Popularity" +msgstr "" + +msgid "SortOptions|Priority" +msgstr "" + +msgid "SortOptions|Recent sign in" +msgstr "" + +msgid "SortOptions|Start later" +msgstr "" + +msgid "SortOptions|Start soon" +msgstr "" + +msgid "SortOptions|Weight" +msgstr "" +  msgid "Source code"  msgstr "Codice Sorgente" @@ -1132,6 +1387,9 @@ msgstr ""  msgid "StarProject|Star"  msgstr "Star" +msgid "Starred projects" +msgstr "" +  msgid "Start a %{new_merge_request} with these changes"  msgstr "inizia una %{new_merge_request} con queste modifiche" @@ -1141,6 +1399,9 @@ msgstr ""  msgid "Switch branch/tag"  msgstr "Cambia branch/tag" +msgid "System Hooks" +msgstr "" +  msgid "Tag"  msgid_plural "Tags"  msgstr[0] "" @@ -1206,6 +1467,9 @@ msgstr "Il valore falsato nel mezzo di una serie di dati osservati. ES: tra 3,5,  msgid "There are problems accessing Git storage: "  msgstr "" +msgid "This is the author's first Merge Request to this project. Handle with care." +msgstr "" +  msgid "This means you can not push code until you create an empty repository or import existing one."  msgstr "Questo significa che non è possibile effettuare push di codice fino a che non crei una repository vuota o ne importi una esistente" @@ -1381,9 +1645,15 @@ msgstr ""  msgid "Use your global notification setting"  msgstr "Usa le tue impostazioni globali " +msgid "View file @ " +msgstr "" +  msgid "View open merge request"  msgstr "Mostra la richieste di merge aperte" +msgid "View replaced file @ " +msgstr "" +  msgid "VisibilityLevel|Internal"  msgstr "Interno" @@ -1456,6 +1726,12 @@ msgstr "Non sarai in grado di effettuare push o pull tramite SSH fino a che %{ad  msgid "Your name"  msgstr "Il tuo nome" +msgid "Your projects" +msgstr "" + +msgid "commit" +msgstr "" +  msgid "day"  msgid_plural "days"  msgstr[0] "giorno" diff --git a/locale/ja/gitlab.po b/locale/ja/gitlab.po index c66dd3c1b6b..2a08abda7ce 100644 --- a/locale/ja/gitlab.po +++ b/locale/ja/gitlab.po @@ -2,8 +2,8 @@ msgid ""  msgstr ""  "Project-Id-Version: gitlab-ee\n"  "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-09-06 08:32+0200\n" -"PO-Revision-Date: 2017-09-15 05:20-0400\n" +"POT-Creation-Date: 2017-09-27 16:26+0200\n" +"PO-Revision-Date: 2017-09-27 13:44-0400\n"  "Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n"  "Language-Team: Japanese\n"  "Language: ja_JP\n" @@ -27,6 +27,9 @@ msgstr[0] "パフォーマンス低下を避けるため %s 個のコミット  msgid "%{commit_author_link} committed %{commit_timeago}"  msgstr "%{commit_timeago}に%{commit_author_link}がコミットしました。" +msgid "%{number_commits_behind} commits behind %{default_branch}, %{number_commits_ahead} commits ahead" +msgstr "" +  msgid "%{number_of_failures} of %{maximum_failures} failures. GitLab will allow access on the next attempt."  msgstr "" @@ -47,6 +50,9 @@ msgid "1 pipeline"  msgid_plural "%d pipelines"  msgstr[0] "%d 個のパイプライン" +msgid "1st contribution!" +msgstr "" +  msgid "A collection of graphs regarding Continuous Integration"  msgstr "CIについてのグラフ" @@ -89,7 +95,7 @@ msgstr "新規ディレクトリを追加"  msgid "All"  msgstr "" -msgid "Appearances" +msgid "Appearance"  msgstr ""  msgid "Applications" @@ -113,10 +119,34 @@ msgstr ""  msgid "Are you sure?"  msgstr "" +msgid "Artifacts" +msgstr "" +  msgid "Attach a file by drag & drop or %{upload_link}"  msgstr "ドラッグ&ドロップまたは %{upload_link} でファイルを添付" -msgid "Authentication log" +msgid "Authentication Log" +msgstr "" + +msgid "Auto DevOps (Beta)" +msgstr "" + +msgid "Auto DevOps can be activated for this project. It will automatically build, test, and deploy your application based on a predefined CI/CD configuration." +msgstr "" + +msgid "Auto DevOps documentation" +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need a domain name and the %{kubernetes} to work correctly." +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need a domain name to work correctly." +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need the %{kubernetes} to work correctly." +msgstr "" + +msgid "AutoDevOps|Learn more in the"  msgstr ""  msgid "Billing" @@ -173,6 +203,9 @@ msgstr ""  msgid "Billinglans|Downgrade"  msgstr "" +msgid "Board" +msgstr "" +  msgid "Branch"  msgid_plural "Branches"  msgstr[0] "ブランチ" @@ -189,6 +222,90 @@ msgstr "ブランチを切替"  msgid "Branches"  msgstr "ブランチ" +msgid "Branches|Cant find HEAD commit for this branch" +msgstr "" + +msgid "Branches|Compare" +msgstr "" + +msgid "Branches|Delete all branches that are merged into '%{default_branch}'" +msgstr "" + +msgid "Branches|Delete branch" +msgstr "" + +msgid "Branches|Delete merged branches" +msgstr "" + +msgid "Branches|Delete protected branch" +msgstr "" + +msgid "Branches|Delete protected branch '%{branch_name}'?" +msgstr "" + +msgid "Branches|Deleting the '%{branch_name}' branch cannot be undone. Are you sure?" +msgstr "" + +msgid "Branches|Deleting the merged branches cannot be undone. Are you sure?" +msgstr "" + +msgid "Branches|Filter by branch name" +msgstr "" + +msgid "Branches|Merged into %{default_branch}" +msgstr "" + +msgid "Branches|New branch" +msgstr "" + +msgid "Branches|No branches to show" +msgstr "" + +msgid "Branches|Once you confirm and press %{delete_protected_branch}, it cannot be undone or recovered." +msgstr "" + +msgid "Branches|Only a project master or owner can delete a protected branch" +msgstr "" + +msgid "Branches|Protected branches can be managed in %{project_settings_link}" +msgstr "" + +msgid "Branches|Sort by" +msgstr "" + +msgid "Branches|The branch could not be updated automatically because it has diverged from its upstream counterpart." +msgstr "" + +msgid "Branches|The default branch cannot be deleted" +msgstr "" + +msgid "Branches|This branch hasn’t been merged into %{default_branch}." +msgstr "" + +msgid "Branches|To avoid data loss, consider merging this branch before deleting it." +msgstr "" + +msgid "Branches|To confirm, type %{branch_name_confirmation}:" +msgstr "" + +msgid "Branches|To discard the local changes and overwrite the branch with the upstream version, delete it here and choose 'Update Now' above." +msgstr "" + +msgid "Branches|You’re about to permanently delete the protected branch %{branch_name}." +msgstr "" + +msgid "Branches|diverged from upstream" +msgstr "" + +msgid "Branches|merged" +msgstr "" + +msgid "Branches|project settings" +msgstr "" + +msgid "Branches|protected" +msgstr "" +  msgid "Browse Directory"  msgstr "ディレクトリを表示" @@ -331,9 +448,6 @@ msgstr "コミット担当者: "  msgid "Compare"  msgstr "比較" -msgid "Container Registry" -msgstr "" -  msgid "Contribution guide"  msgstr "貢献者向けガイド" @@ -482,6 +596,9 @@ msgstr "パイプラインスケジュール %{id} を編集"  msgid "Emails"  msgstr "" +msgid "Enable in settings" +msgstr "" +  msgid "EventFilterBy|Filter by all"  msgstr "" @@ -509,6 +626,9 @@ msgstr "毎月 (1日の午前4:00)"  msgid "Every week (Sundays at 4:00am)"  msgstr "毎週 (日曜日の午前4:00)" +msgid "Explore projects" +msgstr "" +  msgid "Failed to change the owner"  msgstr "オーナーを変更できませんでした" @@ -564,7 +684,28 @@ msgstr "自分のフォークへ移動"  msgid "GoToYourFork|Fork"  msgstr "フォーク" -msgid "Group overview" +msgid "GroupSettings|Prevent sharing a project within %{group} with other groups" +msgstr "" + +msgid "GroupSettings|Share with group lock" +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group} and has been overridden on this subgroup." +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group}. To share projects in this group with another group, ask the owner to override the setting or %{remove_ancestor_share_with_group_lock}." +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group}. You can override the setting or %{remove_ancestor_share_with_group_lock}." +msgstr "" + +msgid "GroupSettings|This setting will be applied to all subgroups unless overridden by a group owner. Groups that already have access to the project will continue to have access unless removed manually." +msgstr "" + +msgid "GroupSettings|cannot be disabled when the parent group \"Share with group lock\" is enabled, except by the owner of the parent group" +msgstr "" + +msgid "GroupSettings|remove the share with group lock from %{ancestor_group_name}"  msgstr ""  msgid "Health Check" @@ -585,12 +726,6 @@ msgstr ""  msgid "HealthCheck|Unhealthy"  msgstr "" -msgid "Home" -msgstr "ホーム" - -msgid "Hooks" -msgstr "" -  msgid "Housekeeping successfully started"  msgstr "ハウスキーピングは正常に起動しました。" @@ -612,6 +747,9 @@ msgstr ""  msgid "Issues"  msgstr "" +msgid "Jobs" +msgstr "" +  msgid "LFSStatus|Disabled"  msgstr "無効" @@ -674,6 +812,9 @@ msgstr ""  msgid "Merge events"  msgstr "" +msgid "Merge request" +msgstr "" +  msgid "Messages"  msgstr "" @@ -801,6 +942,18 @@ msgstr ""  msgid "Owner"  msgstr "オーナー" +msgid "Pagination|Last »" +msgstr "" + +msgid "Pagination|Next" +msgstr "" + +msgid "Pagination|Prev" +msgstr "" + +msgid "Pagination|« First" +msgstr "" +  msgid "Password"  msgstr "" @@ -906,10 +1059,7 @@ msgstr "ステージあり"  msgid "Preferences"  msgstr "" -msgid "Profile Settings" -msgstr "" - -msgid "Project" +msgid "Profile"  msgstr ""  msgid "Project '%{project_name}' queued for deletion." @@ -942,12 +1092,6 @@ msgstr "プロジェクトのエクスポートリンクは期限切れになり  msgid "Project export started. A download link will be sent by email."  msgstr "プロジェクトのエクスポートを開始しました。ダウンロードのリンクはメールで送信します" -msgid "Project home" -msgstr "プロジェクトホーム" - -msgid "Project overview" -msgstr "" -  msgid "ProjectActivityRSS|Subscribe"  msgstr "" @@ -972,27 +1116,30 @@ msgstr "ステージ"  msgid "ProjectNetworkGraph|Graph"  msgstr "ネットワークグラフ" -msgid "Push Rules" +msgid "ProjectsDropdown|Frequently visited"  msgstr ""  msgid "ProjectsDropdown|Loading projects"  msgstr "" -msgid "ProjectsDropdown|Sorry, no projects matched your search" -msgstr "" -  msgid "ProjectsDropdown|Projects you visit often will appear here"  msgstr ""  msgid "ProjectsDropdown|Search your projects"  msgstr "" -msgid "ProjectsDropdown|Something went wrong on our end" +msgid "ProjectsDropdown|Something went wrong on our end." +msgstr "" + +msgid "ProjectsDropdown|Sorry, no projects matched your search"  msgstr ""  msgid "ProjectsDropdown|This feature requires browser localStorage support"  msgstr "" +msgid "Push Rules" +msgstr "" +  msgid "Push events"  msgstr "" @@ -1008,6 +1155,9 @@ msgstr "ブランチ"  msgid "RefSwitcher|Tags"  msgstr "タグ" +msgid "Registry" +msgstr "" +  msgid "Related Commits"  msgstr "関連するコミット" @@ -1062,6 +1212,9 @@ msgstr "パイプラインスケジュールを保存"  msgid "Schedule a new pipeline"  msgstr "新しいパイプラインのスケジュールを作成" +msgid "Schedules" +msgstr "" +  msgid "Scheduling Pipelines"  msgstr "パイプラインスケジューリング" @@ -1101,6 +1254,12 @@ msgstr "パスワードを設定"  msgid "Settings"  msgstr "" +msgid "Show parent pages" +msgstr "" + +msgid "Show parent subgroups" +msgstr "" +  msgid "Showing %d event"  msgid_plural "Showing %d events"  msgstr[0] "%d のイベントを表示中" @@ -1108,6 +1267,102 @@ msgstr[0] "%d のイベントを表示中"  msgid "Snippets"  msgstr "" +msgid "SortOptions|Access level, ascending" +msgstr "" + +msgid "SortOptions|Access level, descending" +msgstr "" + +msgid "SortOptions|Created date" +msgstr "" + +msgid "SortOptions|Due date" +msgstr "" + +msgid "SortOptions|Due later" +msgstr "" + +msgid "SortOptions|Due soon" +msgstr "" + +msgid "SortOptions|Label priority" +msgstr "" + +msgid "SortOptions|Largest group" +msgstr "" + +msgid "SortOptions|Largest repository" +msgstr "" + +msgid "SortOptions|Last created" +msgstr "" + +msgid "SortOptions|Last joined" +msgstr "" + +msgid "SortOptions|Last updated" +msgstr "" + +msgid "SortOptions|Least popular" +msgstr "" + +msgid "SortOptions|Less weight" +msgstr "" + +msgid "SortOptions|Milestone" +msgstr "" + +msgid "SortOptions|Milestone due later" +msgstr "" + +msgid "SortOptions|Milestone due soon" +msgstr "" + +msgid "SortOptions|More weight" +msgstr "" + +msgid "SortOptions|Most popular" +msgstr "" + +msgid "SortOptions|Name" +msgstr "" + +msgid "SortOptions|Name, ascending" +msgstr "" + +msgid "SortOptions|Name, descending" +msgstr "" + +msgid "SortOptions|Oldest created" +msgstr "" + +msgid "SortOptions|Oldest joined" +msgstr "" + +msgid "SortOptions|Oldest sign in" +msgstr "" + +msgid "SortOptions|Oldest updated" +msgstr "" + +msgid "SortOptions|Popularity" +msgstr "" + +msgid "SortOptions|Priority" +msgstr "" + +msgid "SortOptions|Recent sign in" +msgstr "" + +msgid "SortOptions|Start later" +msgstr "" + +msgid "SortOptions|Start soon" +msgstr "" + +msgid "SortOptions|Weight" +msgstr "" +  msgid "Source code"  msgstr "ソースコード" @@ -1120,6 +1375,9 @@ msgstr ""  msgid "StarProject|Star"  msgstr "スターを付ける" +msgid "Starred projects" +msgstr "" +  msgid "Start a %{new_merge_request} with these changes"  msgstr "この変更で %{new_merge_request} を作成する" @@ -1129,6 +1387,9 @@ msgstr ""  msgid "Switch branch/tag"  msgstr "ブランチ・タグ切り替え" +msgid "System Hooks" +msgstr "" +  msgid "Tag"  msgid_plural "Tags"  msgstr[0] "タグ" @@ -1193,6 +1454,9 @@ msgstr "得られた一連のデータを小さい順に並べたときに中央  msgid "There are problems accessing Git storage: "  msgstr "" +msgid "This is the author's first Merge Request to this project. Handle with care." +msgstr "" +  msgid "This means you can not push code until you create an empty repository or import existing one."  msgstr "空レポジトリーを作成または既存レポジトリーをインポートをしなければ、コードのプッシュはできません。" @@ -1366,9 +1630,15 @@ msgstr ""  msgid "Use your global notification setting"  msgstr "全体通知設定を利用" +msgid "View file @ " +msgstr "" +  msgid "View open merge request"  msgstr "オープンなマージリクエストを表示" +msgid "View replaced file @ " +msgstr "" +  msgid "VisibilityLevel|Internal"  msgstr "内部" @@ -1441,6 +1711,12 @@ msgstr "%{add_ssh_key_link} をプロファイルに追加していないので  msgid "Your name"  msgstr "名前" +msgid "Your projects" +msgstr "" + +msgid "commit" +msgstr "" +  msgid "day"  msgid_plural "days"  msgstr[0] "日" diff --git a/locale/ko/gitlab.po b/locale/ko/gitlab.po index bbf4aa15cd7..de4a13d3765 100644 --- a/locale/ko/gitlab.po +++ b/locale/ko/gitlab.po @@ -2,8 +2,8 @@ msgid ""  msgstr ""  "Project-Id-Version: gitlab-ee\n"  "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-09-06 08:32+0200\n" -"PO-Revision-Date: 2017-09-15 05:19-0400\n" +"POT-Creation-Date: 2017-09-27 16:26+0200\n" +"PO-Revision-Date: 2017-09-27 13:43-0400\n"  "Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n"  "Language-Team: Korean\n"  "Language: ko_KR\n" @@ -27,6 +27,9 @@ msgstr[0] "%s 추가 커밋은 성능 이슈를 방지하기 위해 생략되었  msgid "%{commit_author_link} committed %{commit_timeago}"  msgstr "%{commit_timeago} 에 %{commit_author_link} 님이 커밋하였습니다. " +msgid "%{number_commits_behind} commits behind %{default_branch}, %{number_commits_ahead} commits ahead" +msgstr "" +  msgid "%{number_of_failures} of %{maximum_failures} failures. GitLab will allow access on the next attempt."  msgstr "%{number_of_failures} / %{maximum_failures} 실패. GitLab 은 다음 시도에서 성공하면 접근을 허용할 것입니다." @@ -47,6 +50,9 @@ msgid "1 pipeline"  msgid_plural "%d pipelines"  msgstr[0] "%d 파이프라인" +msgid "1st contribution!" +msgstr "" +  msgid "A collection of graphs regarding Continuous Integration"  msgstr "지속적인 통합에 관한 그래프 모음" @@ -89,7 +95,7 @@ msgstr "새 디렉토리 추가"  msgid "All"  msgstr "전체" -msgid "Appearances" +msgid "Appearance"  msgstr ""  msgid "Applications" @@ -113,10 +119,34 @@ msgstr "헬스 체크 토큰을 초기화 하시겠습니까?"  msgid "Are you sure?"  msgstr "확실합니까?" +msgid "Artifacts" +msgstr "" +  msgid "Attach a file by drag & drop or %{upload_link}"  msgstr "드래그 & 드롭 또는 %{upload_link}" -msgid "Authentication log" +msgid "Authentication Log" +msgstr "" + +msgid "Auto DevOps (Beta)" +msgstr "" + +msgid "Auto DevOps can be activated for this project. It will automatically build, test, and deploy your application based on a predefined CI/CD configuration." +msgstr "" + +msgid "Auto DevOps documentation" +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need a domain name and the %{kubernetes} to work correctly." +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need a domain name to work correctly." +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need the %{kubernetes} to work correctly." +msgstr "" + +msgid "AutoDevOps|Learn more in the"  msgstr ""  msgid "Billing" @@ -173,6 +203,9 @@ msgstr ""  msgid "Billinglans|Downgrade"  msgstr "" +msgid "Board" +msgstr "" +  msgid "Branch"  msgid_plural "Branches"  msgstr[0] "브랜치" @@ -189,6 +222,90 @@ msgstr "브랜치 변경"  msgid "Branches"  msgstr "브랜치" +msgid "Branches|Cant find HEAD commit for this branch" +msgstr "" + +msgid "Branches|Compare" +msgstr "" + +msgid "Branches|Delete all branches that are merged into '%{default_branch}'" +msgstr "" + +msgid "Branches|Delete branch" +msgstr "" + +msgid "Branches|Delete merged branches" +msgstr "" + +msgid "Branches|Delete protected branch" +msgstr "" + +msgid "Branches|Delete protected branch '%{branch_name}'?" +msgstr "" + +msgid "Branches|Deleting the '%{branch_name}' branch cannot be undone. Are you sure?" +msgstr "" + +msgid "Branches|Deleting the merged branches cannot be undone. Are you sure?" +msgstr "" + +msgid "Branches|Filter by branch name" +msgstr "" + +msgid "Branches|Merged into %{default_branch}" +msgstr "" + +msgid "Branches|New branch" +msgstr "" + +msgid "Branches|No branches to show" +msgstr "" + +msgid "Branches|Once you confirm and press %{delete_protected_branch}, it cannot be undone or recovered." +msgstr "" + +msgid "Branches|Only a project master or owner can delete a protected branch" +msgstr "" + +msgid "Branches|Protected branches can be managed in %{project_settings_link}" +msgstr "" + +msgid "Branches|Sort by" +msgstr "" + +msgid "Branches|The branch could not be updated automatically because it has diverged from its upstream counterpart." +msgstr "" + +msgid "Branches|The default branch cannot be deleted" +msgstr "" + +msgid "Branches|This branch hasn’t been merged into %{default_branch}." +msgstr "" + +msgid "Branches|To avoid data loss, consider merging this branch before deleting it." +msgstr "" + +msgid "Branches|To confirm, type %{branch_name_confirmation}:" +msgstr "" + +msgid "Branches|To discard the local changes and overwrite the branch with the upstream version, delete it here and choose 'Update Now' above." +msgstr "" + +msgid "Branches|You’re about to permanently delete the protected branch %{branch_name}." +msgstr "" + +msgid "Branches|diverged from upstream" +msgstr "" + +msgid "Branches|merged" +msgstr "" + +msgid "Branches|project settings" +msgstr "" + +msgid "Branches|protected" +msgstr "" +  msgid "Browse Directory"  msgstr "디렉토리 찾아보기" @@ -331,9 +448,6 @@ msgstr "커밋한 사용자"  msgid "Compare"  msgstr "비교" -msgid "Container Registry" -msgstr "" -  msgid "Contribution guide"  msgstr "기여에 대한 안내" @@ -482,6 +596,9 @@ msgstr "파이프라인 스케줄 편집 %{id}"  msgid "Emails"  msgstr "" +msgid "Enable in settings" +msgstr "" +  msgid "EventFilterBy|Filter by all"  msgstr "모든 값을 기준으로 필터" @@ -509,6 +626,9 @@ msgstr "매월 (1일 오전 4시)"  msgid "Every week (Sundays at 4:00am)"  msgstr "매주 (일요일 오전 4시에)" +msgid "Explore projects" +msgstr "" +  msgid "Failed to change the owner"  msgstr "소유자를 변경하지 못했습니다" @@ -564,7 +684,28 @@ msgstr "당신의 포크로 이동하세요"  msgid "GoToYourFork|Fork"  msgstr "포크" -msgid "Group overview" +msgid "GroupSettings|Prevent sharing a project within %{group} with other groups" +msgstr "" + +msgid "GroupSettings|Share with group lock" +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group} and has been overridden on this subgroup." +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group}. To share projects in this group with another group, ask the owner to override the setting or %{remove_ancestor_share_with_group_lock}." +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group}. You can override the setting or %{remove_ancestor_share_with_group_lock}." +msgstr "" + +msgid "GroupSettings|This setting will be applied to all subgroups unless overridden by a group owner. Groups that already have access to the project will continue to have access unless removed manually." +msgstr "" + +msgid "GroupSettings|cannot be disabled when the parent group \"Share with group lock\" is enabled, except by the owner of the parent group" +msgstr "" + +msgid "GroupSettings|remove the share with group lock from %{ancestor_group_name}"  msgstr ""  msgid "Health Check" @@ -585,12 +726,6 @@ msgstr " 헬스 문제가 발견되지 않았습니다."  msgid "HealthCheck|Unhealthy"  msgstr "비정상" -msgid "Home" -msgstr "홈" - -msgid "Hooks" -msgstr "" -  msgid "Housekeeping successfully started"  msgstr "Housekeeping이 성공적으로 시작되었습니다" @@ -612,6 +747,9 @@ msgstr "이슈 이벤트"  msgid "Issues"  msgstr "" +msgid "Jobs" +msgstr "" +  msgid "LFSStatus|Disabled"  msgstr "Disabled" @@ -674,6 +812,9 @@ msgstr ""  msgid "Merge events"  msgstr "머지 이벤트" +msgid "Merge request" +msgstr "" +  msgid "Messages"  msgstr "" @@ -801,6 +942,18 @@ msgstr ""  msgid "Owner"  msgstr "소유자" +msgid "Pagination|Last »" +msgstr "" + +msgid "Pagination|Next" +msgstr "" + +msgid "Pagination|Prev" +msgstr "" + +msgid "Pagination|« First" +msgstr "" +  msgid "Password"  msgstr "" @@ -906,10 +1059,7 @@ msgstr "스테이징"  msgid "Preferences"  msgstr "" -msgid "Profile Settings" -msgstr "" - -msgid "Project" +msgid "Profile"  msgstr ""  msgid "Project '%{project_name}' queued for deletion." @@ -942,12 +1092,6 @@ msgstr "프로젝트 내보내기 링크가 만료되었습니다. 프로젝트  msgid "Project export started. A download link will be sent by email."  msgstr "프로젝트 내보내기가 시작되었습니다. 다운로드 링크는 이메일로 전송됩니다." -msgid "Project home" -msgstr "프로젝트 홈" - -msgid "Project overview" -msgstr "" -  msgid "ProjectActivityRSS|Subscribe"  msgstr "구독" @@ -972,27 +1116,30 @@ msgstr "스테이징"  msgid "ProjectNetworkGraph|Graph"  msgstr "그래프" -msgid "Push Rules" +msgid "ProjectsDropdown|Frequently visited"  msgstr ""  msgid "ProjectsDropdown|Loading projects"  msgstr "" -msgid "ProjectsDropdown|Sorry, no projects matched your search" -msgstr "" -  msgid "ProjectsDropdown|Projects you visit often will appear here"  msgstr ""  msgid "ProjectsDropdown|Search your projects"  msgstr "" -msgid "ProjectsDropdown|Something went wrong on our end" +msgid "ProjectsDropdown|Something went wrong on our end." +msgstr "" + +msgid "ProjectsDropdown|Sorry, no projects matched your search"  msgstr ""  msgid "ProjectsDropdown|This feature requires browser localStorage support"  msgstr "" +msgid "Push Rules" +msgstr "" +  msgid "Push events"  msgstr "푸쉬 이벤트" @@ -1008,6 +1155,9 @@ msgstr "브랜치"  msgid "RefSwitcher|Tags"  msgstr "태그" +msgid "Registry" +msgstr "" +  msgid "Related Commits"  msgstr "관련 커밋" @@ -1062,6 +1212,9 @@ msgstr "파이프라인  스케줄 저장"  msgid "Schedule a new pipeline"  msgstr "새로운 파이프라인 스케줄 잡기" +msgid "Schedules" +msgstr "" +  msgid "Scheduling Pipelines"  msgstr "파이프라인 스케줄링" @@ -1101,6 +1254,12 @@ msgstr "패스워드 설정"  msgid "Settings"  msgstr "" +msgid "Show parent pages" +msgstr "" + +msgid "Show parent subgroups" +msgstr "" +  msgid "Showing %d event"  msgid_plural "Showing %d events"  msgstr[0] "%d 개의 이벤트 표시 중" @@ -1108,6 +1267,102 @@ msgstr[0] "%d 개의 이벤트 표시 중"  msgid "Snippets"  msgstr "" +msgid "SortOptions|Access level, ascending" +msgstr "" + +msgid "SortOptions|Access level, descending" +msgstr "" + +msgid "SortOptions|Created date" +msgstr "" + +msgid "SortOptions|Due date" +msgstr "" + +msgid "SortOptions|Due later" +msgstr "" + +msgid "SortOptions|Due soon" +msgstr "" + +msgid "SortOptions|Label priority" +msgstr "" + +msgid "SortOptions|Largest group" +msgstr "" + +msgid "SortOptions|Largest repository" +msgstr "" + +msgid "SortOptions|Last created" +msgstr "" + +msgid "SortOptions|Last joined" +msgstr "" + +msgid "SortOptions|Last updated" +msgstr "" + +msgid "SortOptions|Least popular" +msgstr "" + +msgid "SortOptions|Less weight" +msgstr "" + +msgid "SortOptions|Milestone" +msgstr "" + +msgid "SortOptions|Milestone due later" +msgstr "" + +msgid "SortOptions|Milestone due soon" +msgstr "" + +msgid "SortOptions|More weight" +msgstr "" + +msgid "SortOptions|Most popular" +msgstr "" + +msgid "SortOptions|Name" +msgstr "" + +msgid "SortOptions|Name, ascending" +msgstr "" + +msgid "SortOptions|Name, descending" +msgstr "" + +msgid "SortOptions|Oldest created" +msgstr "" + +msgid "SortOptions|Oldest joined" +msgstr "" + +msgid "SortOptions|Oldest sign in" +msgstr "" + +msgid "SortOptions|Oldest updated" +msgstr "" + +msgid "SortOptions|Popularity" +msgstr "" + +msgid "SortOptions|Priority" +msgstr "" + +msgid "SortOptions|Recent sign in" +msgstr "" + +msgid "SortOptions|Start later" +msgstr "" + +msgid "SortOptions|Start soon" +msgstr "" + +msgid "SortOptions|Weight" +msgstr "" +  msgid "Source code"  msgstr "소스 코드" @@ -1120,6 +1375,9 @@ msgstr "Runner 설정 중 다음 URL을 지정하세요."  msgid "StarProject|Star"  msgstr "별표" +msgid "Starred projects" +msgstr "" +  msgid "Start a %{new_merge_request} with these changes"  msgstr "이 변경 사항으로 %{new_merge_request} 을 시작하십시오." @@ -1129,6 +1387,9 @@ msgstr "Runner 시작!"  msgid "Switch branch/tag"  msgstr "스위치 브랜치/태그" +msgid "System Hooks" +msgstr "" +  msgid "Tag"  msgid_plural "Tags"  msgstr[0] "태그" @@ -1193,6 +1454,9 @@ msgstr "값은 일련의 관측 값 중점에 있습니다. 예를 들어, 3, 5,  msgid "There are problems accessing Git storage: "  msgstr "git storage에 접근하는데 문제가 발생했습니다. " +msgid "This is the author's first Merge Request to this project. Handle with care." +msgstr "" +  msgid "This means you can not push code until you create an empty repository or import existing one."  msgstr "즉, 빈 저장소를 만들거나 기존 저장소를 가져올 때까지 코드를 Push 할 수 없습니다." @@ -1366,9 +1630,15 @@ msgstr "설정 중에 다음 등록 토큰 이용 : "  msgid "Use your global notification setting"  msgstr "전체 알림 설정 사용" +msgid "View file @ " +msgstr "" +  msgid "View open merge request"  msgstr "열린 머지 리퀘스트보기" +msgid "View replaced file @ " +msgstr "" +  msgid "VisibilityLevel|Internal"  msgstr "내부" @@ -1441,6 +1711,12 @@ msgstr "당신의 프로필에 %{add_ssh_key_link} 를 하기 전에는 SSH를   msgid "Your name"  msgstr "귀하의 이름" +msgid "Your projects" +msgstr "" + +msgid "commit" +msgstr "" +  msgid "day"  msgid_plural "days"  msgstr[0] "일" diff --git a/locale/nl_NL/gitlab.po b/locale/nl_NL/gitlab.po index 250d3bd413c..45a444fac43 100644 --- a/locale/nl_NL/gitlab.po +++ b/locale/nl_NL/gitlab.po @@ -2,8 +2,8 @@ msgid ""  msgstr ""  "Project-Id-Version: gitlab-ee\n"  "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-09-06 08:32+0200\n" -"PO-Revision-Date: 2017-09-15 05:20-0400\n" +"POT-Creation-Date: 2017-09-27 16:26+0200\n" +"PO-Revision-Date: 2017-09-27 13:43-0400\n"  "Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n"  "Language-Team: Dutch\n"  "Language: nl_NL\n" @@ -18,17 +18,20 @@ msgstr ""  msgid "%d commit"  msgid_plural "%d commits" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d commit" +msgstr[1] "%d commits"  msgid "%s additional commit has been omitted to prevent performance issues."  msgid_plural "%s additional commits have been omitted to prevent performance issues." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%s andere commit is weggelaten om prestatieproblemen te voorkomen." +msgstr[1] "%s andere commits zijn weggelaten om prestatieproblemen te voorkomen."  msgid "%{commit_author_link} committed %{commit_timeago}"  msgstr "" +msgid "%{number_commits_behind} commits behind %{default_branch}, %{number_commits_ahead} commits ahead" +msgstr "" +  msgid "%{number_of_failures} of %{maximum_failures} failures. GitLab will allow access on the next attempt."  msgstr "" @@ -44,60 +47,63 @@ msgstr[0] ""  msgstr[1] ""  msgid "(checkout the %{link} for information on how to install it)." -msgstr "" +msgstr "(bekijk de %{link} voor meer info over hoe je het kan installeren)."  msgid "1 pipeline"  msgid_plural "%d pipelines"  msgstr[0] ""  msgstr[1] "" +msgid "1st contribution!" +msgstr "" +  msgid "A collection of graphs regarding Continuous Integration"  msgstr ""  msgid "About auto deploy" -msgstr "" +msgstr "Over auto deploy"  msgid "Abuse Reports" -msgstr "" +msgstr "Misbruik rapporten"  msgid "Access Tokens" -msgstr "" +msgstr "Toegangstokens"  msgid "Access to failing storages has been temporarily disabled to allow the mount to recover. Reset storage information after the issue has been resolved to allow access again."  msgstr ""  msgid "Account" -msgstr "" +msgstr "Account"  msgid "Active" -msgstr "" +msgstr "Actief"  msgid "Activity" -msgstr "" +msgstr "Activiteit"  msgid "Add Changelog" -msgstr "" +msgstr "Changelog toevoegen"  msgid "Add Contribution guide"  msgstr ""  msgid "Add License" -msgstr "" +msgstr "Licentie toevoegen"  msgid "Add an SSH key to your profile to pull or push via SSH."  msgstr ""  msgid "Add new directory" -msgstr "" +msgstr "Nieuwe map toevoegen"  msgid "All" -msgstr "" +msgstr "Alles" -msgid "Appearances" +msgid "Appearance"  msgstr ""  msgid "Applications" -msgstr "" +msgstr "Applicaties"  msgid "Archived project! Repository is read-only"  msgstr "" @@ -117,10 +123,34 @@ msgstr ""  msgid "Are you sure?"  msgstr "" +msgid "Artifacts" +msgstr "" +  msgid "Attach a file by drag & drop or %{upload_link}"  msgstr "" -msgid "Authentication log" +msgid "Authentication Log" +msgstr "" + +msgid "Auto DevOps (Beta)" +msgstr "" + +msgid "Auto DevOps can be activated for this project. It will automatically build, test, and deploy your application based on a predefined CI/CD configuration." +msgstr "" + +msgid "Auto DevOps documentation" +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need a domain name and the %{kubernetes} to work correctly." +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need a domain name to work correctly." +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need the %{kubernetes} to work correctly." +msgstr "" + +msgid "AutoDevOps|Learn more in the"  msgstr ""  msgid "Billing" @@ -177,6 +207,9 @@ msgstr ""  msgid "Billinglans|Downgrade"  msgstr "" +msgid "Board" +msgstr "" +  msgid "Branch"  msgid_plural "Branches"  msgstr[0] "" @@ -192,35 +225,119 @@ msgid "BranchSwitcherTitle|Switch branch"  msgstr ""  msgid "Branches" +msgstr "Branches" + +msgid "Branches|Cant find HEAD commit for this branch"  msgstr "" -msgid "Browse Directory" +msgid "Branches|Compare"  msgstr "" -msgid "Browse File" +msgid "Branches|Delete all branches that are merged into '%{default_branch}'"  msgstr "" -msgid "Browse Files" +msgid "Branches|Delete branch"  msgstr "" -msgid "Browse files" +msgid "Branches|Delete merged branches"  msgstr "" -msgid "ByAuthor|by" +msgid "Branches|Delete protected branch"  msgstr "" -msgid "CI / CD" +msgid "Branches|Delete protected branch '%{branch_name}'?"  msgstr "" -msgid "CI configuration" +msgid "Branches|Deleting the '%{branch_name}' branch cannot be undone. Are you sure?"  msgstr "" -msgid "Cancel" +msgid "Branches|Deleting the merged branches cannot be undone. Are you sure?"  msgstr "" -msgid "Cancel edit" +msgid "Branches|Filter by branch name" +msgstr "" + +msgid "Branches|Merged into %{default_branch}" +msgstr "" + +msgid "Branches|New branch" +msgstr "" + +msgid "Branches|No branches to show" +msgstr "" + +msgid "Branches|Once you confirm and press %{delete_protected_branch}, it cannot be undone or recovered." +msgstr "" + +msgid "Branches|Only a project master or owner can delete a protected branch" +msgstr "" + +msgid "Branches|Protected branches can be managed in %{project_settings_link}" +msgstr "" + +msgid "Branches|Sort by" +msgstr "" + +msgid "Branches|The branch could not be updated automatically because it has diverged from its upstream counterpart." +msgstr "" + +msgid "Branches|The default branch cannot be deleted"  msgstr "" +msgid "Branches|This branch hasn’t been merged into %{default_branch}." +msgstr "" + +msgid "Branches|To avoid data loss, consider merging this branch before deleting it." +msgstr "" + +msgid "Branches|To confirm, type %{branch_name_confirmation}:" +msgstr "" + +msgid "Branches|To discard the local changes and overwrite the branch with the upstream version, delete it here and choose 'Update Now' above." +msgstr "" + +msgid "Branches|You’re about to permanently delete the protected branch %{branch_name}." +msgstr "" + +msgid "Branches|diverged from upstream" +msgstr "" + +msgid "Branches|merged" +msgstr "" + +msgid "Branches|project settings" +msgstr "" + +msgid "Branches|protected" +msgstr "" + +msgid "Browse Directory" +msgstr "Bladeren in map" + +msgid "Browse File" +msgstr "Bekijk bestand" + +msgid "Browse Files" +msgstr "Door bestanden bladeren" + +msgid "Browse files" +msgstr "Door bestanden bladeren" + +msgid "ByAuthor|by" +msgstr "door" + +msgid "CI / CD" +msgstr "CI / CD" + +msgid "CI configuration" +msgstr "CI Configuratie" + +msgid "Cancel" +msgstr "Annuleren" + +msgid "Cancel edit" +msgstr "Bewerken annuleren" +  msgid "ChangeTypeActionLabel|Pick into branch"  msgstr "" @@ -237,25 +354,25 @@ msgid "Changelog"  msgstr ""  msgid "Charts" -msgstr "" +msgstr "Grafieken"  msgid "Chat" -msgstr "" +msgstr "Chat"  msgid "Cherry-pick this commit" -msgstr "" +msgstr "Cherry-pick deze commit"  msgid "Cherry-pick this merge request"  msgstr ""  msgid "CiStatusLabel|canceled" -msgstr "" +msgstr "geannuleerd"  msgid "CiStatusLabel|created" -msgstr "" +msgstr "gemaakt"  msgid "CiStatusLabel|failed" -msgstr "" +msgstr "mislukt"  msgid "CiStatusLabel|manual action"  msgstr "" @@ -270,40 +387,40 @@ msgid "CiStatusLabel|pending"  msgstr ""  msgid "CiStatusLabel|skipped" -msgstr "" +msgstr "overgeslagen"  msgid "CiStatusLabel|waiting for manual action"  msgstr ""  msgid "CiStatusText|blocked" -msgstr "" +msgstr "geblokkeerd"  msgid "CiStatusText|canceled"  msgstr ""  msgid "CiStatusText|created" -msgstr "" +msgstr "gemaakt"  msgid "CiStatusText|failed"  msgstr ""  msgid "CiStatusText|manual" -msgstr "" +msgstr "handmatig"  msgid "CiStatusText|passed" -msgstr "" +msgstr "geslaagd"  msgid "CiStatusText|pending"  msgstr ""  msgid "CiStatusText|skipped" -msgstr "" +msgstr "overgeslagen"  msgid "CiStatus|running"  msgstr ""  msgid "Comments" -msgstr "" +msgstr "Opmerkingen"  msgid "Commit"  msgid_plural "Commits" @@ -317,28 +434,25 @@ msgid "Commit message"  msgstr ""  msgid "CommitBoxTitle|Commit" -msgstr "" +msgstr "Commit"  msgid "CommitMessage|Add %{file_name}" -msgstr "" +msgstr "%{file_name} toevoegen"  msgid "Commits" -msgstr "" +msgstr "Commits"  msgid "Commits feed"  msgstr ""  msgid "Commits|History" -msgstr "" +msgstr "Geschiedenis"  msgid "Committed by" -msgstr "" +msgstr "Gecommit door"  msgid "Compare" -msgstr "" - -msgid "Container Registry" -msgstr "" +msgstr "Vergelijk"  msgid "Contribution guide"  msgstr "" @@ -365,7 +479,7 @@ msgid "Create a personal access token on your account to pull or push via %{prot  msgstr ""  msgid "Create directory" -msgstr "" +msgstr "Maak map aan"  msgid "Create empty bare repository"  msgstr "" @@ -489,6 +603,9 @@ msgstr ""  msgid "Emails"  msgstr "" +msgid "Enable in settings" +msgstr "" +  msgid "EventFilterBy|Filter by all"  msgstr "" @@ -516,6 +633,9 @@ msgstr ""  msgid "Every week (Sundays at 4:00am)"  msgstr "" +msgid "Explore projects" +msgstr "" +  msgid "Failed to change the owner"  msgstr "" @@ -572,7 +692,28 @@ msgstr ""  msgid "GoToYourFork|Fork"  msgstr "" -msgid "Group overview" +msgid "GroupSettings|Prevent sharing a project within %{group} with other groups" +msgstr "" + +msgid "GroupSettings|Share with group lock" +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group} and has been overridden on this subgroup." +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group}. To share projects in this group with another group, ask the owner to override the setting or %{remove_ancestor_share_with_group_lock}." +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group}. You can override the setting or %{remove_ancestor_share_with_group_lock}." +msgstr "" + +msgid "GroupSettings|This setting will be applied to all subgroups unless overridden by a group owner. Groups that already have access to the project will continue to have access unless removed manually." +msgstr "" + +msgid "GroupSettings|cannot be disabled when the parent group \"Share with group lock\" is enabled, except by the owner of the parent group" +msgstr "" + +msgid "GroupSettings|remove the share with group lock from %{ancestor_group_name}"  msgstr ""  msgid "Health Check" @@ -593,12 +734,6 @@ msgstr ""  msgid "HealthCheck|Unhealthy"  msgstr "" -msgid "Home" -msgstr "" - -msgid "Hooks" -msgstr "" -  msgid "Housekeeping successfully started"  msgstr "" @@ -620,6 +755,9 @@ msgstr ""  msgid "Issues"  msgstr "" +msgid "Jobs" +msgstr "" +  msgid "LFSStatus|Disabled"  msgstr "" @@ -684,6 +822,9 @@ msgstr ""  msgid "Merge events"  msgstr "" +msgid "Merge request" +msgstr "" +  msgid "Messages"  msgstr "" @@ -698,8 +839,8 @@ msgstr ""  msgid "New Issue"  msgid_plural "New Issues" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Nieuwe issue" +msgstr[1] "Nieuwe issues"  msgid "New Pipeline Schedule"  msgstr "" @@ -812,6 +953,18 @@ msgstr ""  msgid "Owner"  msgstr "" +msgid "Pagination|Last »" +msgstr "" + +msgid "Pagination|Next" +msgstr "" + +msgid "Pagination|Prev" +msgstr "" + +msgid "Pagination|« First" +msgstr "" +  msgid "Password"  msgstr "" @@ -917,10 +1070,7 @@ msgstr ""  msgid "Preferences"  msgstr "" -msgid "Profile Settings" -msgstr "" - -msgid "Project" +msgid "Profile"  msgstr ""  msgid "Project '%{project_name}' queued for deletion." @@ -953,12 +1103,6 @@ msgstr ""  msgid "Project export started. A download link will be sent by email."  msgstr "" -msgid "Project home" -msgstr "" - -msgid "Project overview" -msgstr "" -  msgid "ProjectActivityRSS|Subscribe"  msgstr "" @@ -983,27 +1127,30 @@ msgstr ""  msgid "ProjectNetworkGraph|Graph"  msgstr "" -msgid "Push Rules" +msgid "ProjectsDropdown|Frequently visited"  msgstr ""  msgid "ProjectsDropdown|Loading projects"  msgstr "" -msgid "ProjectsDropdown|Sorry, no projects matched your search" -msgstr "" -  msgid "ProjectsDropdown|Projects you visit often will appear here"  msgstr ""  msgid "ProjectsDropdown|Search your projects"  msgstr "" -msgid "ProjectsDropdown|Something went wrong on our end" +msgid "ProjectsDropdown|Something went wrong on our end." +msgstr "" + +msgid "ProjectsDropdown|Sorry, no projects matched your search"  msgstr ""  msgid "ProjectsDropdown|This feature requires browser localStorage support"  msgstr "" +msgid "Push Rules" +msgstr "" +  msgid "Push events"  msgstr "" @@ -1019,6 +1166,9 @@ msgstr ""  msgid "RefSwitcher|Tags"  msgstr "" +msgid "Registry" +msgstr "" +  msgid "Related Commits"  msgstr "" @@ -1073,6 +1223,9 @@ msgstr ""  msgid "Schedule a new pipeline"  msgstr "" +msgid "Schedules" +msgstr "" +  msgid "Scheduling Pipelines"  msgstr "" @@ -1112,6 +1265,12 @@ msgstr ""  msgid "Settings"  msgstr "" +msgid "Show parent pages" +msgstr "" + +msgid "Show parent subgroups" +msgstr "" +  msgid "Showing %d event"  msgid_plural "Showing %d events"  msgstr[0] "" @@ -1120,6 +1279,102 @@ msgstr[1] ""  msgid "Snippets"  msgstr "" +msgid "SortOptions|Access level, ascending" +msgstr "" + +msgid "SortOptions|Access level, descending" +msgstr "" + +msgid "SortOptions|Created date" +msgstr "" + +msgid "SortOptions|Due date" +msgstr "" + +msgid "SortOptions|Due later" +msgstr "" + +msgid "SortOptions|Due soon" +msgstr "" + +msgid "SortOptions|Label priority" +msgstr "" + +msgid "SortOptions|Largest group" +msgstr "" + +msgid "SortOptions|Largest repository" +msgstr "" + +msgid "SortOptions|Last created" +msgstr "" + +msgid "SortOptions|Last joined" +msgstr "" + +msgid "SortOptions|Last updated" +msgstr "" + +msgid "SortOptions|Least popular" +msgstr "" + +msgid "SortOptions|Less weight" +msgstr "" + +msgid "SortOptions|Milestone" +msgstr "" + +msgid "SortOptions|Milestone due later" +msgstr "" + +msgid "SortOptions|Milestone due soon" +msgstr "" + +msgid "SortOptions|More weight" +msgstr "" + +msgid "SortOptions|Most popular" +msgstr "" + +msgid "SortOptions|Name" +msgstr "" + +msgid "SortOptions|Name, ascending" +msgstr "" + +msgid "SortOptions|Name, descending" +msgstr "" + +msgid "SortOptions|Oldest created" +msgstr "" + +msgid "SortOptions|Oldest joined" +msgstr "" + +msgid "SortOptions|Oldest sign in" +msgstr "" + +msgid "SortOptions|Oldest updated" +msgstr "" + +msgid "SortOptions|Popularity" +msgstr "" + +msgid "SortOptions|Priority" +msgstr "" + +msgid "SortOptions|Recent sign in" +msgstr "" + +msgid "SortOptions|Start later" +msgstr "" + +msgid "SortOptions|Start soon" +msgstr "" + +msgid "SortOptions|Weight" +msgstr "" +  msgid "Source code"  msgstr "" @@ -1132,6 +1387,9 @@ msgstr ""  msgid "StarProject|Star"  msgstr "" +msgid "Starred projects" +msgstr "" +  msgid "Start a %{new_merge_request} with these changes"  msgstr "" @@ -1141,6 +1399,9 @@ msgstr ""  msgid "Switch branch/tag"  msgstr "" +msgid "System Hooks" +msgstr "" +  msgid "Tag"  msgid_plural "Tags"  msgstr[0] "" @@ -1206,6 +1467,9 @@ msgstr ""  msgid "There are problems accessing Git storage: "  msgstr "" +msgid "This is the author's first Merge Request to this project. Handle with care." +msgstr "" +  msgid "This means you can not push code until you create an empty repository or import existing one."  msgstr "" @@ -1381,9 +1645,15 @@ msgstr ""  msgid "Use your global notification setting"  msgstr "" +msgid "View file @ " +msgstr "" +  msgid "View open merge request"  msgstr "" +msgid "View replaced file @ " +msgstr "" +  msgid "VisibilityLevel|Internal"  msgstr "" @@ -1456,6 +1726,12 @@ msgstr ""  msgid "Your name"  msgstr "" +msgid "Your projects" +msgstr "" + +msgid "commit" +msgstr "" +  msgid "day"  msgid_plural "days"  msgstr[0] "" diff --git a/locale/pt_BR/gitlab.po b/locale/pt_BR/gitlab.po index 5469f77d950..318c719c2ed 100644 --- a/locale/pt_BR/gitlab.po +++ b/locale/pt_BR/gitlab.po @@ -2,8 +2,8 @@ msgid ""  msgstr ""  "Project-Id-Version: gitlab-ee\n"  "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-09-06 08:32+0200\n" -"PO-Revision-Date: 2017-09-15 05:18-0400\n" +"POT-Creation-Date: 2017-09-27 16:26+0200\n" +"PO-Revision-Date: 2017-09-27 13:42-0400\n"  "Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n"  "Language-Team: Portuguese, Brazilian\n"  "Language: pt_BR\n" @@ -29,6 +29,9 @@ msgstr[1] "%s commits adicionais foram omitidos para prevenir problemas de perfo  msgid "%{commit_author_link} committed %{commit_timeago}"  msgstr "%{commit_author_link} fez commit %{commit_timeago}" +msgid "%{number_commits_behind} commits behind %{default_branch}, %{number_commits_ahead} commits ahead" +msgstr "" +  msgid "%{number_of_failures} of %{maximum_failures} failures. GitLab will allow access on the next attempt."  msgstr "" @@ -51,6 +54,9 @@ msgid_plural "%d pipelines"  msgstr[0] ""  msgstr[1] "" +msgid "1st contribution!" +msgstr "" +  msgid "A collection of graphs regarding Continuous Integration"  msgstr "Uma coleção de gráficos sobre Integração Contínua" @@ -93,7 +99,7 @@ msgstr "Adicionar novo diretório"  msgid "All"  msgstr "" -msgid "Appearances" +msgid "Appearance"  msgstr ""  msgid "Applications" @@ -117,10 +123,34 @@ msgstr ""  msgid "Are you sure?"  msgstr "" +msgid "Artifacts" +msgstr "" +  msgid "Attach a file by drag & drop or %{upload_link}"  msgstr "Para anexar arquivo, arraste e solte ou %{upload_link}" -msgid "Authentication log" +msgid "Authentication Log" +msgstr "" + +msgid "Auto DevOps (Beta)" +msgstr "" + +msgid "Auto DevOps can be activated for this project. It will automatically build, test, and deploy your application based on a predefined CI/CD configuration." +msgstr "" + +msgid "Auto DevOps documentation" +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need a domain name and the %{kubernetes} to work correctly." +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need a domain name to work correctly." +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need the %{kubernetes} to work correctly." +msgstr "" + +msgid "AutoDevOps|Learn more in the"  msgstr ""  msgid "Billing" @@ -177,6 +207,9 @@ msgstr ""  msgid "Billinglans|Downgrade"  msgstr "" +msgid "Board" +msgstr "" +  msgid "Branch"  msgid_plural "Branches"  msgstr[0] "" @@ -194,6 +227,90 @@ msgstr "Mudar de branch"  msgid "Branches"  msgstr "" +msgid "Branches|Cant find HEAD commit for this branch" +msgstr "" + +msgid "Branches|Compare" +msgstr "" + +msgid "Branches|Delete all branches that are merged into '%{default_branch}'" +msgstr "" + +msgid "Branches|Delete branch" +msgstr "" + +msgid "Branches|Delete merged branches" +msgstr "" + +msgid "Branches|Delete protected branch" +msgstr "" + +msgid "Branches|Delete protected branch '%{branch_name}'?" +msgstr "" + +msgid "Branches|Deleting the '%{branch_name}' branch cannot be undone. Are you sure?" +msgstr "" + +msgid "Branches|Deleting the merged branches cannot be undone. Are you sure?" +msgstr "" + +msgid "Branches|Filter by branch name" +msgstr "" + +msgid "Branches|Merged into %{default_branch}" +msgstr "" + +msgid "Branches|New branch" +msgstr "" + +msgid "Branches|No branches to show" +msgstr "" + +msgid "Branches|Once you confirm and press %{delete_protected_branch}, it cannot be undone or recovered." +msgstr "" + +msgid "Branches|Only a project master or owner can delete a protected branch" +msgstr "" + +msgid "Branches|Protected branches can be managed in %{project_settings_link}" +msgstr "" + +msgid "Branches|Sort by" +msgstr "" + +msgid "Branches|The branch could not be updated automatically because it has diverged from its upstream counterpart." +msgstr "" + +msgid "Branches|The default branch cannot be deleted" +msgstr "" + +msgid "Branches|This branch hasn’t been merged into %{default_branch}." +msgstr "" + +msgid "Branches|To avoid data loss, consider merging this branch before deleting it." +msgstr "" + +msgid "Branches|To confirm, type %{branch_name_confirmation}:" +msgstr "" + +msgid "Branches|To discard the local changes and overwrite the branch with the upstream version, delete it here and choose 'Update Now' above." +msgstr "" + +msgid "Branches|You’re about to permanently delete the protected branch %{branch_name}." +msgstr "" + +msgid "Branches|diverged from upstream" +msgstr "" + +msgid "Branches|merged" +msgstr "" + +msgid "Branches|project settings" +msgstr "" + +msgid "Branches|protected" +msgstr "" +  msgid "Browse Directory"  msgstr "Navegar no Diretório" @@ -337,9 +454,6 @@ msgstr "Commit feito por"  msgid "Compare"  msgstr "Comparar" -msgid "Container Registry" -msgstr "" -  msgid "Contribution guide"  msgstr "Guia de contribuição" @@ -489,6 +603,9 @@ msgstr "Alterar Agendamento do Pipeline %{id}"  msgid "Emails"  msgstr "" +msgid "Enable in settings" +msgstr "" +  msgid "EventFilterBy|Filter by all"  msgstr "" @@ -516,6 +633,9 @@ msgstr "Todos os meses (no dia primeiro às 4:00)"  msgid "Every week (Sundays at 4:00am)"  msgstr "Toda semana (domingos às 4:00)" +msgid "Explore projects" +msgstr "" +  msgid "Failed to change the owner"  msgstr "Erro ao alterar o proprietário" @@ -572,7 +692,28 @@ msgstr "Ir para seu fork"  msgid "GoToYourFork|Fork"  msgstr "Fork" -msgid "Group overview" +msgid "GroupSettings|Prevent sharing a project within %{group} with other groups" +msgstr "" + +msgid "GroupSettings|Share with group lock" +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group} and has been overridden on this subgroup." +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group}. To share projects in this group with another group, ask the owner to override the setting or %{remove_ancestor_share_with_group_lock}." +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group}. You can override the setting or %{remove_ancestor_share_with_group_lock}." +msgstr "" + +msgid "GroupSettings|This setting will be applied to all subgroups unless overridden by a group owner. Groups that already have access to the project will continue to have access unless removed manually." +msgstr "" + +msgid "GroupSettings|cannot be disabled when the parent group \"Share with group lock\" is enabled, except by the owner of the parent group" +msgstr "" + +msgid "GroupSettings|remove the share with group lock from %{ancestor_group_name}"  msgstr ""  msgid "Health Check" @@ -593,12 +734,6 @@ msgstr ""  msgid "HealthCheck|Unhealthy"  msgstr "" -msgid "Home" -msgstr "Início" - -msgid "Hooks" -msgstr "" -  msgid "Housekeeping successfully started"  msgstr "Manutenção iniciada com sucesso" @@ -620,6 +755,9 @@ msgstr ""  msgid "Issues"  msgstr "" +msgid "Jobs" +msgstr "" +  msgid "LFSStatus|Disabled"  msgstr "Desabilitado" @@ -684,6 +822,9 @@ msgstr ""  msgid "Merge events"  msgstr "" +msgid "Merge request" +msgstr "" +  msgid "Messages"  msgstr "" @@ -812,6 +953,18 @@ msgstr ""  msgid "Owner"  msgstr "Proprietário" +msgid "Pagination|Last »" +msgstr "" + +msgid "Pagination|Next" +msgstr "" + +msgid "Pagination|Prev" +msgstr "" + +msgid "Pagination|« First" +msgstr "" +  msgid "Password"  msgstr "" @@ -917,10 +1070,7 @@ msgstr "com etapas"  msgid "Preferences"  msgstr "" -msgid "Profile Settings" -msgstr "" - -msgid "Project" +msgid "Profile"  msgstr ""  msgid "Project '%{project_name}' queued for deletion." @@ -953,12 +1103,6 @@ msgstr "O link para a exportação do projeto expirou. Favor gerar uma nova expo  msgid "Project export started. A download link will be sent by email."  msgstr "Exportação do projeto iniciada. Um link para baixá-la será enviado por email." -msgid "Project home" -msgstr "Página inicial do projeto" - -msgid "Project overview" -msgstr "" -  msgid "ProjectActivityRSS|Subscribe"  msgstr "" @@ -983,27 +1127,30 @@ msgstr "Etapa"  msgid "ProjectNetworkGraph|Graph"  msgstr "Árvore" -msgid "Push Rules" +msgid "ProjectsDropdown|Frequently visited"  msgstr ""  msgid "ProjectsDropdown|Loading projects"  msgstr "" -msgid "ProjectsDropdown|Sorry, no projects matched your search" -msgstr "" -  msgid "ProjectsDropdown|Projects you visit often will appear here"  msgstr ""  msgid "ProjectsDropdown|Search your projects"  msgstr "" -msgid "ProjectsDropdown|Something went wrong on our end" +msgid "ProjectsDropdown|Something went wrong on our end." +msgstr "" + +msgid "ProjectsDropdown|Sorry, no projects matched your search"  msgstr ""  msgid "ProjectsDropdown|This feature requires browser localStorage support"  msgstr "" +msgid "Push Rules" +msgstr "" +  msgid "Push events"  msgstr "" @@ -1019,6 +1166,9 @@ msgstr "Branches"  msgid "RefSwitcher|Tags"  msgstr "Tags" +msgid "Registry" +msgstr "" +  msgid "Related Commits"  msgstr "Commits Relacionados" @@ -1073,6 +1223,9 @@ msgstr "Salvar agendamento da pipeline"  msgid "Schedule a new pipeline"  msgstr "Agendar nova pipeline" +msgid "Schedules" +msgstr "" +  msgid "Scheduling Pipelines"  msgstr "Agendando pipelines" @@ -1112,6 +1265,12 @@ msgstr "defina uma senha"  msgid "Settings"  msgstr "" +msgid "Show parent pages" +msgstr "" + +msgid "Show parent subgroups" +msgstr "" +  msgid "Showing %d event"  msgid_plural "Showing %d events"  msgstr[0] "Mostrando %d evento" @@ -1120,6 +1279,102 @@ msgstr[1] "Mostrando %d eventos"  msgid "Snippets"  msgstr "" +msgid "SortOptions|Access level, ascending" +msgstr "" + +msgid "SortOptions|Access level, descending" +msgstr "" + +msgid "SortOptions|Created date" +msgstr "" + +msgid "SortOptions|Due date" +msgstr "" + +msgid "SortOptions|Due later" +msgstr "" + +msgid "SortOptions|Due soon" +msgstr "" + +msgid "SortOptions|Label priority" +msgstr "" + +msgid "SortOptions|Largest group" +msgstr "" + +msgid "SortOptions|Largest repository" +msgstr "" + +msgid "SortOptions|Last created" +msgstr "" + +msgid "SortOptions|Last joined" +msgstr "" + +msgid "SortOptions|Last updated" +msgstr "" + +msgid "SortOptions|Least popular" +msgstr "" + +msgid "SortOptions|Less weight" +msgstr "" + +msgid "SortOptions|Milestone" +msgstr "" + +msgid "SortOptions|Milestone due later" +msgstr "" + +msgid "SortOptions|Milestone due soon" +msgstr "" + +msgid "SortOptions|More weight" +msgstr "" + +msgid "SortOptions|Most popular" +msgstr "" + +msgid "SortOptions|Name" +msgstr "" + +msgid "SortOptions|Name, ascending" +msgstr "" + +msgid "SortOptions|Name, descending" +msgstr "" + +msgid "SortOptions|Oldest created" +msgstr "" + +msgid "SortOptions|Oldest joined" +msgstr "" + +msgid "SortOptions|Oldest sign in" +msgstr "" + +msgid "SortOptions|Oldest updated" +msgstr "" + +msgid "SortOptions|Popularity" +msgstr "" + +msgid "SortOptions|Priority" +msgstr "" + +msgid "SortOptions|Recent sign in" +msgstr "" + +msgid "SortOptions|Start later" +msgstr "" + +msgid "SortOptions|Start soon" +msgstr "" + +msgid "SortOptions|Weight" +msgstr "" +  msgid "Source code"  msgstr "Código-fonte" @@ -1132,6 +1387,9 @@ msgstr ""  msgid "StarProject|Star"  msgstr "Marcar" +msgid "Starred projects" +msgstr "" +  msgid "Start a %{new_merge_request} with these changes"  msgstr "Iniciar um %{new_merge_request} a partir dessas alterações" @@ -1141,6 +1399,9 @@ msgstr ""  msgid "Switch branch/tag"  msgstr "Trocar branch/tag" +msgid "System Hooks" +msgstr "" +  msgid "Tag"  msgid_plural "Tags"  msgstr[0] "" @@ -1206,6 +1467,9 @@ msgstr "O valor situado no ponto médio de uma série de valores observados. Ex.  msgid "There are problems accessing Git storage: "  msgstr "" +msgid "This is the author's first Merge Request to this project. Handle with care." +msgstr "" +  msgid "This means you can not push code until you create an empty repository or import existing one."  msgstr "Isto significa que você não pode entregar código até que crie um repositório vazio ou importe um existente." @@ -1381,9 +1645,15 @@ msgstr ""  msgid "Use your global notification setting"  msgstr "Utilizar configuração de notificação global" +msgid "View file @ " +msgstr "" +  msgid "View open merge request"  msgstr "Ver merge request aberto" +msgid "View replaced file @ " +msgstr "" +  msgid "VisibilityLevel|Internal"  msgstr "Interno" @@ -1456,6 +1726,12 @@ msgstr "Você não conseguirá fazer pull ou push no projeto via SSH até que  a  msgid "Your name"  msgstr "Seu nome" +msgid "Your projects" +msgstr "" + +msgid "commit" +msgstr "" +  msgid "day"  msgid_plural "days"  msgstr[0] "dia" diff --git a/locale/ru/gitlab.po b/locale/ru/gitlab.po index 808bc9dedce..507dc187cdb 100644 --- a/locale/ru/gitlab.po +++ b/locale/ru/gitlab.po @@ -2,8 +2,8 @@ msgid ""  msgstr ""  "Project-Id-Version: gitlab-ee\n"  "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-09-06 08:32+0200\n" -"PO-Revision-Date: 2017-09-15 05:19-0400\n" +"POT-Creation-Date: 2017-09-27 16:26+0200\n" +"PO-Revision-Date: 2017-09-27 13:43-0400\n"  "Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n"  "Language-Team: Russian\n"  "Language: ru_RU\n" @@ -31,23 +31,26 @@ msgstr[2] "%s добавленные коммиты были исключены  msgid "%{commit_author_link} committed %{commit_timeago}"  msgstr "%{commit_author_link} коммичено %{commit_timeago}" -msgid "%{number_of_failures} of %{maximum_failures} failures. GitLab will allow access on the next attempt." +msgid "%{number_commits_behind} commits behind %{default_branch}, %{number_commits_ahead} commits ahead"  msgstr "" +msgid "%{number_of_failures} of %{maximum_failures} failures. GitLab will allow access on the next attempt." +msgstr "%{number_of_failures} из %{maximum_failures} возможных попыток. Вы можете попытаться еще раз." +  msgid "%{number_of_failures} of %{maximum_failures} failures. GitLab will block access for %{number_of_seconds} seconds." -msgstr "" +msgstr "%{number_of_failures} из %{maximum_failures} возможных неудачных попыток. GitLab заблокирует доступ на %{number_of_seconds} секунд."  msgid "%{number_of_failures} of %{maximum_failures} failures. GitLab will not retry automatically. Reset storage information when the problem is resolved." -msgstr "" +msgstr "%{number_of_failures} из %{maximum_failures} возможных неудачных попыток. GitLab не будет автоматически повторять попытку. Сбросьте информацию хранилища после устранения проблемы."  msgid "%{storage_name}: failed storage access attempt on host:"  msgid_plural "%{storage_name}: %{failed_attempts} failed storage access attempts:" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "%{storage_name}: неудачная попытка доступа к хранилищу на хосте:" +msgstr[1] "%{storage_name}: %{failed_attempts} - неудачные попытки доступа к хранилищу:" +msgstr[2] "%{storage_name}: %{failed_attempts} - неудачные попытки доступа к хранилищу:"  msgid "(checkout the %{link} for information on how to install it)." -msgstr "" +msgstr "(перейдите по ссылке %{link} для получения информации об установке)."  msgid "1 pipeline"  msgid_plural "%d pipelines" @@ -55,23 +58,26 @@ msgstr[0] "1 конвейер"  msgstr[1] "%d конвейеры"  msgstr[2] "%d конвейеры" +msgid "1st contribution!" +msgstr "" +  msgid "A collection of graphs regarding Continuous Integration"  msgstr "Графики относительно непрерывной интеграции"  msgid "About auto deploy" -msgstr "Автоматическое развертывание" +msgstr "Об автоматическом развёртывании"  msgid "Abuse Reports" -msgstr "" +msgstr "Отчёты о Жалобах"  msgid "Access Tokens" -msgstr "" +msgstr "Токены Доступа"  msgid "Access to failing storages has been temporarily disabled to allow the mount to recover. Reset storage information after the issue has been resolved to allow access again." -msgstr "" +msgstr "Доступ к вышедшим из строя хранилищам временно отключен для возможности монтирования в целях восстановления. Сбросьте информацию о хранилищах после устранения проблемы, чтобы разрешить доступ."  msgid "Account" -msgstr "" +msgstr "Учетная запись"  msgid "Active"  msgstr "Активный" @@ -95,13 +101,13 @@ msgid "Add new directory"  msgstr "Добавить каталог"  msgid "All" -msgstr "" +msgstr "Все" -msgid "Appearances" +msgid "Appearance"  msgstr ""  msgid "Applications" -msgstr "" +msgstr "Приложения"  msgid "Archived project! Repository is read-only"  msgstr "Архивный проект! Репозиторий доступен только для чтения" @@ -113,18 +119,42 @@ msgid "Are you sure you want to discard your changes?"  msgstr "Вы уверены, что Вы хотите отменить Ваши изменения?"  msgid "Are you sure you want to reset registration token?" -msgstr "" +msgstr "Вы уверены, что Вы хотите сбросить этот ключ регистрации?"  msgid "Are you sure you want to reset the health check token?" -msgstr "" +msgstr "Вы уверены, что Вы хотите сбросить этот ключ проверки работоспособности?"  msgid "Are you sure?"  msgstr "Вы уверены?" +msgid "Artifacts" +msgstr "" +  msgid "Attach a file by drag & drop or %{upload_link}"  msgstr "Приложить файл через drag & drop или %{upload_link}" -msgid "Authentication log" +msgid "Authentication Log" +msgstr "" + +msgid "Auto DevOps (Beta)" +msgstr "" + +msgid "Auto DevOps can be activated for this project. It will automatically build, test, and deploy your application based on a predefined CI/CD configuration." +msgstr "" + +msgid "Auto DevOps documentation" +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need a domain name and the %{kubernetes} to work correctly." +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need a domain name to work correctly." +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need the %{kubernetes} to work correctly." +msgstr "" + +msgid "AutoDevOps|Learn more in the"  msgstr ""  msgid "Billing" @@ -181,6 +211,9 @@ msgstr ""  msgid "Billinglans|Downgrade"  msgstr "" +msgid "Board" +msgstr "" +  msgid "Branch"  msgid_plural "Branches"  msgstr[0] "Ветка" @@ -199,6 +232,90 @@ msgstr "Переключить ветку"  msgid "Branches"  msgstr "Ветки" +msgid "Branches|Cant find HEAD commit for this branch" +msgstr "" + +msgid "Branches|Compare" +msgstr "" + +msgid "Branches|Delete all branches that are merged into '%{default_branch}'" +msgstr "" + +msgid "Branches|Delete branch" +msgstr "" + +msgid "Branches|Delete merged branches" +msgstr "" + +msgid "Branches|Delete protected branch" +msgstr "" + +msgid "Branches|Delete protected branch '%{branch_name}'?" +msgstr "" + +msgid "Branches|Deleting the '%{branch_name}' branch cannot be undone. Are you sure?" +msgstr "" + +msgid "Branches|Deleting the merged branches cannot be undone. Are you sure?" +msgstr "" + +msgid "Branches|Filter by branch name" +msgstr "" + +msgid "Branches|Merged into %{default_branch}" +msgstr "" + +msgid "Branches|New branch" +msgstr "" + +msgid "Branches|No branches to show" +msgstr "" + +msgid "Branches|Once you confirm and press %{delete_protected_branch}, it cannot be undone or recovered." +msgstr "" + +msgid "Branches|Only a project master or owner can delete a protected branch" +msgstr "" + +msgid "Branches|Protected branches can be managed in %{project_settings_link}" +msgstr "" + +msgid "Branches|Sort by" +msgstr "" + +msgid "Branches|The branch could not be updated automatically because it has diverged from its upstream counterpart." +msgstr "" + +msgid "Branches|The default branch cannot be deleted" +msgstr "" + +msgid "Branches|This branch hasn’t been merged into %{default_branch}." +msgstr "" + +msgid "Branches|To avoid data loss, consider merging this branch before deleting it." +msgstr "" + +msgid "Branches|To confirm, type %{branch_name_confirmation}:" +msgstr "" + +msgid "Branches|To discard the local changes and overwrite the branch with the upstream version, delete it here and choose 'Update Now' above." +msgstr "" + +msgid "Branches|You’re about to permanently delete the protected branch %{branch_name}." +msgstr "" + +msgid "Branches|diverged from upstream" +msgstr "" + +msgid "Branches|merged" +msgstr "" + +msgid "Branches|project settings" +msgstr "" + +msgid "Branches|protected" +msgstr "" +  msgid "Browse Directory"  msgstr "Обзор" @@ -215,7 +332,7 @@ msgid "ByAuthor|by"  msgstr "по автору"  msgid "CI / CD" -msgstr "" +msgstr "CI / CD"  msgid "CI configuration"  msgstr "Настройка CI" @@ -245,7 +362,7 @@ msgid "Charts"  msgstr "Диаграммы"  msgid "Chat" -msgstr "" +msgstr "Чат"  msgid "Cherry-pick this commit"  msgstr "Подобрать в этом коммите" @@ -343,9 +460,6 @@ msgstr "Фиксировано"  msgid "Compare"  msgstr "Сравнить" -msgid "Container Registry" -msgstr "" -  msgid "Contribution guide"  msgstr "Руководство участника" @@ -443,13 +557,13 @@ msgstr[1] "Размещение"  msgstr[2] "Размещение"  msgid "Deploy Keys" -msgstr "" +msgstr "Ключи Развертывания"  msgid "Description"  msgstr "Описание"  msgid "Details" -msgstr "" +msgstr "Подробная информация"  msgid "Directory name"  msgstr "Каталог" @@ -494,25 +608,28 @@ msgid "Edit Pipeline Schedule %{id}"  msgstr "Изменить расписание конвейера %{id}"  msgid "Emails" +msgstr "Email-адреса" + +msgid "Enable in settings"  msgstr ""  msgid "EventFilterBy|Filter by all" -msgstr "" +msgstr "Фильтр по всему"  msgid "EventFilterBy|Filter by comments" -msgstr "" +msgstr "Фильтр по комментарию"  msgid "EventFilterBy|Filter by issue events" -msgstr "" +msgstr "Фильтр по событиям обсуждений"  msgid "EventFilterBy|Filter by merge events" -msgstr "" +msgstr "Фильтр по событиям слияний"  msgid "EventFilterBy|Filter by push events" -msgstr "" +msgstr "Фильтр по событиям отправки"  msgid "EventFilterBy|Filter by team" -msgstr "" +msgstr "Фильтр по команде"  msgid "Every day (at 4:00am)"  msgstr "Ежедневно (в 4:00)" @@ -523,6 +640,9 @@ msgstr "Ежемесячно (каждое 1-е число в 4:00)"  msgid "Every week (Sundays at 4:00am)"  msgstr "Еженедельно (по воскресениями в 4:00)" +msgid "Explore projects" +msgstr "" +  msgid "Failed to change the owner"  msgstr "Не удалось изменить владельца" @@ -563,13 +683,13 @@ msgid "From merge request merge until deploy to production"  msgstr "От запроса на слияние до развертывания в рабочей среде"  msgid "GPG Keys" -msgstr "" +msgstr "GPG Ключи"  msgid "Geo Nodes"  msgstr ""  msgid "Git storage health information has been reset" -msgstr "" +msgstr "Информация о стабильности Git хранилища была сброшена"  msgid "GitLab Runner section"  msgstr "Секция Gitlab Runner" @@ -580,33 +700,48 @@ msgstr "Перейти к вашему форку"  msgid "GoToYourFork|Fork"  msgstr "Форк" -msgid "Group overview" +msgid "GroupSettings|Prevent sharing a project within %{group} with other groups"  msgstr "" -msgid "Health Check" +msgid "GroupSettings|Share with group lock"  msgstr "" -msgid "Health information can be retrieved from the following endpoints. More information is available" +msgid "GroupSettings|This setting is applied on %{ancestor_group} and has been overridden on this subgroup."  msgstr "" -msgid "HealthCheck|Access token is" +msgid "GroupSettings|This setting is applied on %{ancestor_group}. To share projects in this group with another group, ask the owner to override the setting or %{remove_ancestor_share_with_group_lock}."  msgstr "" -msgid "HealthCheck|Healthy" +msgid "GroupSettings|This setting is applied on %{ancestor_group}. You can override the setting or %{remove_ancestor_share_with_group_lock}."  msgstr "" -msgid "HealthCheck|No Health Problems Detected" +msgid "GroupSettings|This setting will be applied to all subgroups unless overridden by a group owner. Groups that already have access to the project will continue to have access unless removed manually."  msgstr "" -msgid "HealthCheck|Unhealthy" +msgid "GroupSettings|cannot be disabled when the parent group \"Share with group lock\" is enabled, except by the owner of the parent group"  msgstr "" -msgid "Home" -msgstr "Главная" - -msgid "Hooks" +msgid "GroupSettings|remove the share with group lock from %{ancestor_group_name}"  msgstr "" +msgid "Health Check" +msgstr "Проверка работоспособности" + +msgid "Health information can be retrieved from the following endpoints. More information is available" +msgstr "Информация о работоспособности может быть получена из следующих точек подключения. Доступна более подробная информация" + +msgid "HealthCheck|Access token is" +msgstr "Ключ доступа - " + +msgid "HealthCheck|Healthy" +msgstr "Стабильно" + +msgid "HealthCheck|No Health Problems Detected" +msgstr "Проблем работоспособности не обнаружено" + +msgid "HealthCheck|Unhealthy" +msgstr "Нестабильный" +  msgid "Housekeeping successfully started"  msgstr "Очистка успешно запущена" @@ -623,9 +758,12 @@ msgid "Introducing Cycle Analytics"  msgstr "Внедрение Цикла Аналитик"  msgid "Issue events" -msgstr "" +msgstr "События задачи"  msgid "Issues" +msgstr "Задачи" + +msgid "Jobs"  msgstr ""  msgid "LFSStatus|Disabled" @@ -635,7 +773,7 @@ msgid "LFSStatus|Enabled"  msgstr "Включено"  msgid "Labels" -msgstr "" +msgstr "Метки"  msgid "Last %d day"  msgid_plural "Last %d days" @@ -653,10 +791,10 @@ msgid "Last commit"  msgstr "Последний коммит"  msgid "LastPushEvent|You pushed to" -msgstr "" +msgstr "Вы отправили в"  msgid "LastPushEvent|at" -msgstr "" +msgstr "в"  msgid "Learn more in the"  msgstr "Узнайте больше в" @@ -686,25 +824,28 @@ msgid "Median"  msgstr "Среднее"  msgid "Members" -msgstr "" +msgstr "Участники"  msgid "Merge Requests" -msgstr "" +msgstr "Запросы на Слияние"  msgid "Merge events" +msgstr "События слияний" + +msgid "Merge request"  msgstr ""  msgid "Messages" -msgstr "" +msgstr "Сообщения"  msgid "MissingSSHKeyWarningLink|add an SSH key"  msgstr "добавить ключ SSH"  msgid "Monitoring" -msgstr "" +msgstr "Мониторинг"  msgid "More information is available|here" -msgstr "" +msgstr "Больше информации доступно|тут"  msgid "New Issue"  msgid_plural "New Issues" @@ -806,7 +947,7 @@ msgid "NotificationLevel|Watch"  msgstr "Отслеживать"  msgid "Notifications" -msgstr "" +msgstr "Уведомления"  msgid "OfSearchInADropdown|Filter"  msgstr "Фильтр" @@ -818,14 +959,26 @@ msgid "Options"  msgstr "Настройки"  msgid "Overview" -msgstr "" +msgstr "Обзор"  msgid "Owner"  msgstr "Владелец" -msgid "Password" +msgid "Pagination|Last »" +msgstr "" + +msgid "Pagination|Next"  msgstr "" +msgid "Pagination|Prev" +msgstr "" + +msgid "Pagination|« First" +msgstr "" + +msgid "Password" +msgstr "Пароль" +  msgid "Pipeline"  msgstr "Конвейер" @@ -905,13 +1058,13 @@ msgid "Pipelines charts"  msgstr "Диаграмма конвейера"  msgid "Pipelines for last month" -msgstr "" +msgstr "Конвеер за последний месяц"  msgid "Pipelines for last week" -msgstr "" +msgstr "Конвеер за последнюю неделю"  msgid "Pipelines for last year" -msgstr "" +msgstr "Конвееры за последний год"  msgid "Pipeline|all"  msgstr "все" @@ -926,12 +1079,9 @@ msgid "Pipeline|with stages"  msgstr "со стадиями"  msgid "Preferences" -msgstr "" +msgstr "Предпочтения" -msgid "Profile Settings" -msgstr "" - -msgid "Project" +msgid "Profile"  msgstr ""  msgid "Project '%{project_name}' queued for deletion." @@ -950,7 +1100,7 @@ msgid "Project access must be granted explicitly to each user."  msgstr "Доступ к проекту должен предоставляться явно каждому пользователю."  msgid "Project details" -msgstr "" +msgstr "Детали проекта"  msgid "Project export could not be deleted."  msgstr "Невозможно удалить экспорт проекта." @@ -964,14 +1114,8 @@ msgstr "Истек срок действия ссылки на проект. С  msgid "Project export started. A download link will be sent by email."  msgstr "Начат экспорт проекта. Ссылка для скачивания будет отправлена по электронной почте." -msgid "Project home" -msgstr "Домашняя страница" - -msgid "Project overview" -msgstr "" -  msgid "ProjectActivityRSS|Subscribe" -msgstr "" +msgstr "Подписаться"  msgid "ProjectFeature|Disabled"  msgstr "Отключено" @@ -994,35 +1138,38 @@ msgstr "Этап"  msgid "ProjectNetworkGraph|Graph"  msgstr "Граф" -msgid "Push Rules" +msgid "ProjectsDropdown|Frequently visited"  msgstr ""  msgid "ProjectsDropdown|Loading projects" -msgstr "" - -msgid "ProjectsDropdown|Sorry, no projects matched your search" -msgstr "" +msgstr "Загрузка проектов"  msgid "ProjectsDropdown|Projects you visit often will appear here" -msgstr "" +msgstr "Проекты, которые вы часто посещаете, будут отображаться здесь"  msgid "ProjectsDropdown|Search your projects" -msgstr "" +msgstr "Поиск по вашим проектам" -msgid "ProjectsDropdown|Something went wrong on our end" +msgid "ProjectsDropdown|Something went wrong on our end."  msgstr "" +msgid "ProjectsDropdown|Sorry, no projects matched your search" +msgstr "К сожалению, по вашему запросу проекты не найдены" +  msgid "ProjectsDropdown|This feature requires browser localStorage support" +msgstr "Эта функциональность требует поддержки localStorage в вашем браузере" + +msgid "Push Rules"  msgstr ""  msgid "Push events" -msgstr "" +msgstr "События отправки"  msgid "Read more"  msgstr "Подробнее"  msgid "Readme" -msgstr "" +msgstr "Инструкция"  msgid "RefSwitcher|Branches"  msgstr "Ветки" @@ -1030,6 +1177,9 @@ msgstr "Ветки"  msgid "RefSwitcher|Tags"  msgstr "Теги" +msgid "Registry" +msgstr "" +  msgid "Related Commits"  msgstr "Связанные коммиты" @@ -1055,19 +1205,19 @@ msgid "Remove project"  msgstr "Удалить проект"  msgid "Repository" -msgstr "" +msgstr "Репозиторий"  msgid "Request Access"  msgstr "Запрос доступа"  msgid "Reset git storage health information" -msgstr "" +msgstr "Сбросить информацию о работоспособности репозитория git"  msgid "Reset health check access token" -msgstr "" +msgstr "Сбросить ключ доступа проверки работоспособности"  msgid "Reset runners registration token" -msgstr "" +msgstr "Сбросить ключ регистрации Gitlab Runners"  msgid "Revert this commit"  msgstr "Отменить это изменение" @@ -1076,7 +1226,7 @@ msgid "Revert this merge request"  msgstr "Отменить этот запрос на слияние"  msgid "SSH Keys" -msgstr "" +msgstr "SSH Ключи"  msgid "Save pipeline schedule"  msgstr "Сохранить расписание конвейра" @@ -1084,6 +1234,9 @@ msgstr "Сохранить расписание конвейра"  msgid "Schedule a new pipeline"  msgstr "Расписание нового конвейера" +msgid "Schedules" +msgstr "" +  msgid "Scheduling Pipelines"  msgstr "Планирование конвейеров" @@ -1097,13 +1250,13 @@ msgid "Select a timezone"  msgstr "Выбор временной зоны"  msgid "Select existing branch" -msgstr "" +msgstr "Выбрать существующую ветвь"  msgid "Select target branch"  msgstr "Выбор целевой ветки"  msgid "Service Templates" -msgstr "" +msgstr "Шаблоны Служб"  msgid "Set a password on your account to pull or push via %{protocol}."  msgstr "Установите пароль в своем аккаунте, чтобы отправлять или получать код через %{protocol}." @@ -1121,6 +1274,12 @@ msgid "SetPasswordToCloneLink|set a password"  msgstr "установить пароль"  msgid "Settings" +msgstr "Настройки" + +msgid "Show parent pages" +msgstr "" + +msgid "Show parent subgroups"  msgstr ""  msgid "Showing %d event" @@ -1130,29 +1289,131 @@ msgstr[1] "Показано %d событий"  msgstr[2] "Показано %d событий"  msgid "Snippets" +msgstr "Сниппеты" + +msgid "SortOptions|Access level, ascending" +msgstr "" + +msgid "SortOptions|Access level, descending" +msgstr "" + +msgid "SortOptions|Created date" +msgstr "" + +msgid "SortOptions|Due date" +msgstr "" + +msgid "SortOptions|Due later" +msgstr "" + +msgid "SortOptions|Due soon" +msgstr "" + +msgid "SortOptions|Label priority" +msgstr "" + +msgid "SortOptions|Largest group" +msgstr "" + +msgid "SortOptions|Largest repository" +msgstr "" + +msgid "SortOptions|Last created" +msgstr "" + +msgid "SortOptions|Last joined" +msgstr "" + +msgid "SortOptions|Last updated" +msgstr "" + +msgid "SortOptions|Least popular" +msgstr "" + +msgid "SortOptions|Less weight" +msgstr "" + +msgid "SortOptions|Milestone" +msgstr "" + +msgid "SortOptions|Milestone due later" +msgstr "" + +msgid "SortOptions|Milestone due soon" +msgstr "" + +msgid "SortOptions|More weight" +msgstr "" + +msgid "SortOptions|Most popular" +msgstr "" + +msgid "SortOptions|Name" +msgstr "" + +msgid "SortOptions|Name, ascending" +msgstr "" + +msgid "SortOptions|Name, descending" +msgstr "" + +msgid "SortOptions|Oldest created" +msgstr "" + +msgid "SortOptions|Oldest joined" +msgstr "" + +msgid "SortOptions|Oldest sign in" +msgstr "" + +msgid "SortOptions|Oldest updated" +msgstr "" + +msgid "SortOptions|Popularity" +msgstr "" + +msgid "SortOptions|Priority" +msgstr "" + +msgid "SortOptions|Recent sign in" +msgstr "" + +msgid "SortOptions|Start later" +msgstr "" + +msgid "SortOptions|Start soon" +msgstr "" + +msgid "SortOptions|Weight"  msgstr ""  msgid "Source code"  msgstr "Исходный код"  msgid "Spam Logs" -msgstr "" +msgstr "Спам Логи"  msgid "Specify the following URL during the Runner setup:" -msgstr "" +msgstr "Укажите следующий URL во время настройки Gitlab Runner:"  msgid "StarProject|Star"  msgstr "Отметить" +msgid "Starred projects" +msgstr "" +  msgid "Start a %{new_merge_request} with these changes"  msgstr "Начать %{new_merge_request} с этих изменений"  msgid "Start the Runner!" -msgstr "" +msgstr "Запустить GitLab Runner!"  msgid "Switch branch/tag"  msgstr "Переключить ветка/тег" +msgid "System Hooks" +msgstr "" +  msgid "Tag"  msgid_plural "Tags"  msgstr[0] "Тег" @@ -1166,7 +1427,7 @@ msgid "Target Branch"  msgstr "Ветка"  msgid "Team" -msgstr "" +msgstr "Команда"  msgid "The coding stage shows the time from the first commit to creating the merge request. The data will automatically be added here once you create your first merge request."  msgstr "На этапе написания кода показывает время первого коммита до создания запроса на слияние. Данные автоматически добавятся после того, как вы создать свой первый запрос на слияние." @@ -1217,6 +1478,9 @@ msgid "The value lying at the midpoint of a series of observed values. E.g., bet  msgstr "Среднее значение в ряду. Пример: между 3, 5, 9, среднее 5, между 3, 5, 7, 8, среднее (5+7)/2 = 6."  msgid "There are problems accessing Git storage: " +msgstr "Проблемы с доступом к Git хранилищу: " + +msgid "This is the author's first Merge Request to this project. Handle with care."  msgstr ""  msgid "This means you can not push code until you create an empty repository or import existing one." @@ -1391,14 +1655,20 @@ msgid "UploadLink|click to upload"  msgstr "кликните для загрузки"  msgid "Use the following registration token during setup:" -msgstr "" +msgstr "Используйте следующий токен регистрации в процессе установки:"  msgid "Use your global notification setting"  msgstr "Используются глобальный настройки уведомлений" +msgid "View file @ " +msgstr "" +  msgid "View open merge request"  msgstr "Просмотреть открытый запрос на слияние" +msgid "View replaced file @ " +msgstr "" +  msgid "VisibilityLevel|Internal"  msgstr "Ограниченный" @@ -1418,7 +1688,7 @@ msgid "We don't have enough data to show this stage."  msgstr "Информация по этапу отсутствует."  msgid "Wiki" -msgstr "" +msgstr "Wiki"  msgid "Withdraw Access Request"  msgstr "Отменить запрос доступа" @@ -1471,6 +1741,12 @@ msgstr "Вы не сможете получать и отправлять код  msgid "Your name"  msgstr "Ваше имя" +msgid "Your projects" +msgstr "" + +msgid "commit" +msgstr "" +  msgid "day"  msgid_plural "days"  msgstr[0] "день" diff --git a/locale/uk/gitlab.po b/locale/uk/gitlab.po index 1dc42901daf..ffbbe88cc51 100644 --- a/locale/uk/gitlab.po +++ b/locale/uk/gitlab.po @@ -2,8 +2,8 @@ msgid ""  msgstr ""  "Project-Id-Version: gitlab-ee\n"  "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-09-06 08:32+0200\n" -"PO-Revision-Date: 2017-09-15 05:20-0400\n" +"POT-Creation-Date: 2017-09-27 16:26+0200\n" +"PO-Revision-Date: 2017-09-27 13:43-0400\n"  "Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n"  "Language-Team: Ukrainian\n"  "Language: uk_UA\n" @@ -31,23 +31,26 @@ msgstr[2] "%s доданих коммітів були виключені для  msgid "%{commit_author_link} committed %{commit_timeago}"  msgstr "%{commit_author_link} комміт %{commit_timeago}" -msgid "%{number_of_failures} of %{maximum_failures} failures. GitLab will allow access on the next attempt." +msgid "%{number_commits_behind} commits behind %{default_branch}, %{number_commits_ahead} commits ahead"  msgstr "" +msgid "%{number_of_failures} of %{maximum_failures} failures. GitLab will allow access on the next attempt." +msgstr "%{number_of_failures} від %{maximum_failures} невдач. GitLab надасть доступ на наступну спробу." +  msgid "%{number_of_failures} of %{maximum_failures} failures. GitLab will block access for %{number_of_seconds} seconds." -msgstr "" +msgstr "%{number_of_failures} із %{maximum_failures} невдач. GitLab заблокує доступ на %{number_of_seconds} секунд."  msgid "%{number_of_failures} of %{maximum_failures} failures. GitLab will not retry automatically. Reset storage information when the problem is resolved." -msgstr "" +msgstr "%{number_of_failures} від %{maximum_failures} невдач. GitLab автоматично не повторюватиме спробу. Скиньте інформацію сховища при усуненні проблеми."  msgid "%{storage_name}: failed storage access attempt on host:"  msgid_plural "%{storage_name}: %{failed_attempts} failed storage access attempts:" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "%{storage_name}: спроба невдалого доступу до сховища на хості:" +msgstr[1] "%{storage_name}: %{failed_attempts} невдалі спроби доступу до сховища:" +msgstr[2] "%{storage_name}: %{failed_attempts} невдалих спроб доступу до сховища:"  msgid "(checkout the %{link} for information on how to install it)." -msgstr "" +msgstr "(перейдіть за посиланням %{link} для отримання інформації стосовно встановлення)."  msgid "1 pipeline"  msgid_plural "%d pipelines" @@ -55,6 +58,9 @@ msgstr[0] "1 конвеєр"  msgstr[1] "%d конвеєра"  msgstr[2] "%d конвеєрів" +msgid "1st contribution!" +msgstr "" +  msgid "A collection of graphs regarding Continuous Integration"  msgstr "Це набір графічних елементів для безперервної інтеграції" @@ -62,16 +68,16 @@ msgid "About auto deploy"  msgstr "Про авто розгортання"  msgid "Abuse Reports" -msgstr "" +msgstr "Звіти про зловживання"  msgid "Access Tokens" -msgstr "" +msgstr "Токени доступу"  msgid "Access to failing storages has been temporarily disabled to allow the mount to recover. Reset storage information after the issue has been resolved to allow access again." -msgstr "" +msgstr "Доступ до помилкових сховищ тимчасово відключений для можливості монтування та відновлення. Скиньте інформацію про сховища після усунення проблеми, щоб дозволити доступ."  msgid "Account" -msgstr "" +msgstr "Обліковий запис"  msgid "Active"  msgstr "Активний" @@ -97,11 +103,11 @@ msgstr "Додати новий каталог"  msgid "All"  msgstr "Всі" -msgid "Appearances" +msgid "Appearance"  msgstr ""  msgid "Applications" -msgstr "" +msgstr "Додатки"  msgid "Archived project! Repository is read-only"  msgstr "Заархівований проект! Репозиторій доступний лише для читання" @@ -116,15 +122,39 @@ msgid "Are you sure you want to reset registration token?"  msgstr "Ви впевнені, що бажаєте скинути реєстраційний токен?"  msgid "Are you sure you want to reset the health check token?" -msgstr "" +msgstr "Ви впевнені, що Ви хочете скинути цей ключ перевірки працездатності?"  msgid "Are you sure?" +msgstr "Ви впевнені?" + +msgid "Artifacts"  msgstr ""  msgid "Attach a file by drag & drop or %{upload_link}"  msgstr "Прикріпити файл за допомогою перетягування або %{upload_link}" -msgid "Authentication log" +msgid "Authentication Log" +msgstr "" + +msgid "Auto DevOps (Beta)" +msgstr "" + +msgid "Auto DevOps can be activated for this project. It will automatically build, test, and deploy your application based on a predefined CI/CD configuration." +msgstr "" + +msgid "Auto DevOps documentation" +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need a domain name and the %{kubernetes} to work correctly." +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need a domain name to work correctly." +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need the %{kubernetes} to work correctly." +msgstr "" + +msgid "AutoDevOps|Learn more in the"  msgstr ""  msgid "Billing" @@ -181,6 +211,9 @@ msgstr ""  msgid "Billinglans|Downgrade"  msgstr "" +msgid "Board" +msgstr "" +  msgid "Branch"  msgid_plural "Branches"  msgstr[0] "Гілка" @@ -199,6 +232,90 @@ msgstr "Переключити гілку"  msgid "Branches"  msgstr "Гілки" +msgid "Branches|Cant find HEAD commit for this branch" +msgstr "" + +msgid "Branches|Compare" +msgstr "" + +msgid "Branches|Delete all branches that are merged into '%{default_branch}'" +msgstr "" + +msgid "Branches|Delete branch" +msgstr "" + +msgid "Branches|Delete merged branches" +msgstr "" + +msgid "Branches|Delete protected branch" +msgstr "" + +msgid "Branches|Delete protected branch '%{branch_name}'?" +msgstr "" + +msgid "Branches|Deleting the '%{branch_name}' branch cannot be undone. Are you sure?" +msgstr "" + +msgid "Branches|Deleting the merged branches cannot be undone. Are you sure?" +msgstr "" + +msgid "Branches|Filter by branch name" +msgstr "" + +msgid "Branches|Merged into %{default_branch}" +msgstr "" + +msgid "Branches|New branch" +msgstr "" + +msgid "Branches|No branches to show" +msgstr "" + +msgid "Branches|Once you confirm and press %{delete_protected_branch}, it cannot be undone or recovered." +msgstr "" + +msgid "Branches|Only a project master or owner can delete a protected branch" +msgstr "" + +msgid "Branches|Protected branches can be managed in %{project_settings_link}" +msgstr "" + +msgid "Branches|Sort by" +msgstr "" + +msgid "Branches|The branch could not be updated automatically because it has diverged from its upstream counterpart." +msgstr "" + +msgid "Branches|The default branch cannot be deleted" +msgstr "" + +msgid "Branches|This branch hasn’t been merged into %{default_branch}." +msgstr "" + +msgid "Branches|To avoid data loss, consider merging this branch before deleting it." +msgstr "" + +msgid "Branches|To confirm, type %{branch_name_confirmation}:" +msgstr "" + +msgid "Branches|To discard the local changes and overwrite the branch with the upstream version, delete it here and choose 'Update Now' above." +msgstr "" + +msgid "Branches|You’re about to permanently delete the protected branch %{branch_name}." +msgstr "" + +msgid "Branches|diverged from upstream" +msgstr "" + +msgid "Branches|merged" +msgstr "" + +msgid "Branches|project settings" +msgstr "" + +msgid "Branches|protected" +msgstr "" +  msgid "Browse Directory"  msgstr "Переглянути каталог" @@ -215,7 +332,7 @@ msgid "ByAuthor|by"  msgstr "від"  msgid "CI / CD" -msgstr "" +msgstr "CI / CD"  msgid "CI configuration"  msgstr "Налаштування CI" @@ -224,7 +341,7 @@ msgid "Cancel"  msgstr "Скасувати"  msgid "Cancel edit" -msgstr "" +msgstr "Відмінити правку"  msgid "ChangeTypeActionLabel|Pick into branch"  msgstr "Вибрати в гілці" @@ -245,7 +362,7 @@ msgid "Charts"  msgstr "Графіки"  msgid "Chat" -msgstr "" +msgstr "Чат"  msgid "Cherry-pick this commit"  msgstr "Cherry-pick в цьому комміті" @@ -308,7 +425,7 @@ msgid "CiStatus|running"  msgstr "виконується"  msgid "Comments" -msgstr "" +msgstr "Коментарі"  msgid "Commit"  msgid_plural "Commits" @@ -343,9 +460,6 @@ msgstr "Комміт від"  msgid "Compare"  msgstr "Порівняти" -msgid "Container Registry" -msgstr "" -  msgid "Contribution guide"  msgstr "Керівництво контриб’юторів" @@ -365,7 +479,7 @@ msgid "Create New Directory"  msgstr "Створити новий каталог"  msgid "Create a new branch" -msgstr "" +msgstr "Створити нову гілку"  msgid "Create a personal access token on your account to pull or push via %{protocol}."  msgstr "Створити токен доступу для вашого аккауета, щоб відправляти або отримувати через %{protocol}." @@ -443,19 +557,19 @@ msgstr[1] "Розгортання"  msgstr[2] "Розгортань"  msgid "Deploy Keys" -msgstr "" +msgstr "Ключи для розгортування"  msgid "Description"  msgstr "Опис"  msgid "Details" -msgstr "" +msgstr "Деталі"  msgid "Directory name"  msgstr "Ім'я каталогу"  msgid "Discard changes" -msgstr "" +msgstr "Скасувати зміни"  msgid "Don't show again"  msgstr "Не показувати знову" @@ -494,25 +608,28 @@ msgid "Edit Pipeline Schedule %{id}"  msgstr "Редагувати Розклад Конвеєра %{id}"  msgid "Emails" +msgstr "Адреси електронної пошти" + +msgid "Enable in settings"  msgstr ""  msgid "EventFilterBy|Filter by all" -msgstr "" +msgstr "Всі"  msgid "EventFilterBy|Filter by comments" -msgstr "" +msgstr "Коментарю"  msgid "EventFilterBy|Filter by issue events" -msgstr "" +msgstr "Проблеми"  msgid "EventFilterBy|Filter by merge events" -msgstr "" +msgstr "Запити на злиття"  msgid "EventFilterBy|Filter by push events" -msgstr "" +msgstr "По відправленні комміту"  msgid "EventFilterBy|Filter by team" -msgstr "" +msgstr "За командою"  msgid "Every day (at 4:00am)"  msgstr "Кожен день (в 4:00 ранку)" @@ -523,6 +640,9 @@ msgstr "Кожен місяць (1-го числа о 4:00 ранку)"  msgid "Every week (Sundays at 4:00am)"  msgstr "Щотижня (в неділю о 4:00 ранку)" +msgid "Explore projects" +msgstr "" +  msgid "Failed to change the owner"  msgstr "Не вдалося змінити власника" @@ -563,16 +683,16 @@ msgid "From merge request merge until deploy to production"  msgstr "З об'єднання запиту злиття до розгортання на ПРОД"  msgid "GPG Keys" -msgstr "" +msgstr "GPG ключі"  msgid "Geo Nodes"  msgstr ""  msgid "Git storage health information has been reset" -msgstr "" +msgstr "Інформація про статус зберігання Git була скинута"  msgid "GitLab Runner section" -msgstr "" +msgstr "Розділ GitLab Runner"  msgid "Go to your fork"  msgstr "Перейти до вашого форку" @@ -580,33 +700,48 @@ msgstr "Перейти до вашого форку"  msgid "GoToYourFork|Fork"  msgstr "Форк" -msgid "Group overview" +msgid "GroupSettings|Prevent sharing a project within %{group} with other groups"  msgstr "" -msgid "Health Check" +msgid "GroupSettings|Share with group lock"  msgstr "" -msgid "Health information can be retrieved from the following endpoints. More information is available" +msgid "GroupSettings|This setting is applied on %{ancestor_group} and has been overridden on this subgroup."  msgstr "" -msgid "HealthCheck|Access token is" +msgid "GroupSettings|This setting is applied on %{ancestor_group}. To share projects in this group with another group, ask the owner to override the setting or %{remove_ancestor_share_with_group_lock}."  msgstr "" -msgid "HealthCheck|Healthy" +msgid "GroupSettings|This setting is applied on %{ancestor_group}. You can override the setting or %{remove_ancestor_share_with_group_lock}."  msgstr "" -msgid "HealthCheck|No Health Problems Detected" +msgid "GroupSettings|This setting will be applied to all subgroups unless overridden by a group owner. Groups that already have access to the project will continue to have access unless removed manually."  msgstr "" -msgid "HealthCheck|Unhealthy" +msgid "GroupSettings|cannot be disabled when the parent group \"Share with group lock\" is enabled, except by the owner of the parent group"  msgstr "" -msgid "Home" -msgstr "Головна" - -msgid "Hooks" +msgid "GroupSettings|remove the share with group lock from %{ancestor_group_name}"  msgstr "" +msgid "Health Check" +msgstr "Перевірки працездатності" + +msgid "Health information can be retrieved from the following endpoints. More information is available" +msgstr "Інформацію про працездатність можна отримати з наступних ендпойнтів. Більше інформації доступно" + +msgid "HealthCheck|Access token is" +msgstr "Токен доступу є" + +msgid "HealthCheck|Healthy" +msgstr "Здоровий" + +msgid "HealthCheck|No Health Problems Detected" +msgstr "Жодних проблем із здоров'ям не виявлено" + +msgid "HealthCheck|Unhealthy" +msgstr "Нездорові" +  msgid "Housekeeping successfully started"  msgstr "Очищення успішно розпочато" @@ -614,7 +749,7 @@ msgid "Import repository"  msgstr "Імпорт репозеторія"  msgid "Install a Runner compatible with GitLab CI" -msgstr "" +msgstr "Встановіть Runner, сумісний з GitLab CI"  msgid "Interval Pattern"  msgstr "Шаблон інтервалу" @@ -623,9 +758,12 @@ msgid "Introducing Cycle Analytics"  msgstr "Представляємо аналітику циклу"  msgid "Issue events" -msgstr "" +msgstr "Події проблем"  msgid "Issues" +msgstr "Проблеми" + +msgid "Jobs"  msgstr ""  msgid "LFSStatus|Disabled" @@ -635,7 +773,7 @@ msgid "LFSStatus|Enabled"  msgstr "Увімкнено"  msgid "Labels" -msgstr "" +msgstr "Мітки"  msgid "Last %d day"  msgid_plural "Last %d days" @@ -653,10 +791,10 @@ msgid "Last commit"  msgstr "Останній комміт"  msgid "LastPushEvent|You pushed to" -msgstr "" +msgstr "Ви надіслали зміни до"  msgid "LastPushEvent|at" -msgstr "" +msgstr "в"  msgid "Learn more in the"  msgstr "Дізнайтесь більше" @@ -686,25 +824,28 @@ msgid "Median"  msgstr "Медіана"  msgid "Members" -msgstr "" +msgstr "Користувачі"  msgid "Merge Requests" -msgstr "" +msgstr "Запит на злиття"  msgid "Merge events" +msgstr "Події запит на злиття" + +msgid "Merge request"  msgstr ""  msgid "Messages" -msgstr "" +msgstr "Повідомлення"  msgid "MissingSSHKeyWarningLink|add an SSH key"  msgstr "не додасте SSH ключ"  msgid "Monitoring" -msgstr "" +msgstr "Моніторинг"  msgid "More information is available|here" -msgstr "" +msgstr "тут"  msgid "New Issue"  msgid_plural "New Issues" @@ -806,7 +947,7 @@ msgid "NotificationLevel|Watch"  msgstr "Відстежувати"  msgid "Notifications" -msgstr "" +msgstr "Сповіщення"  msgid "OfSearchInADropdown|Filter"  msgstr "Фільтр" @@ -818,14 +959,26 @@ msgid "Options"  msgstr "Параметри"  msgid "Overview" -msgstr "" +msgstr "Огляд"  msgid "Owner"  msgstr "Власник" -msgid "Password" +msgid "Pagination|Last »"  msgstr "" +msgid "Pagination|Next" +msgstr "" + +msgid "Pagination|Prev" +msgstr "" + +msgid "Pagination|« First" +msgstr "" + +msgid "Password" +msgstr "Пароль" +  msgid "Pipeline"  msgstr "Конвеєр" @@ -905,13 +1058,13 @@ msgid "Pipelines charts"  msgstr "Чарти Конвеєрів"  msgid "Pipelines for last month" -msgstr "" +msgstr "Конвеєри за останній місяць"  msgid "Pipelines for last week" -msgstr "" +msgstr "Конвеєри за останній тиждень"  msgid "Pipelines for last year" -msgstr "" +msgstr "Конвеєри за останній рік"  msgid "Pipeline|all"  msgstr "всі" @@ -926,12 +1079,9 @@ msgid "Pipeline|with stages"  msgstr "зі стадіями"  msgid "Preferences" -msgstr "" - -msgid "Profile Settings" -msgstr "" +msgstr "Налаштування" -msgid "Project" +msgid "Profile"  msgstr ""  msgid "Project '%{project_name}' queued for deletion." @@ -950,7 +1100,7 @@ msgid "Project access must be granted explicitly to each user."  msgstr "Доступ до проекту повинен надаватися кожному користувачеві."  msgid "Project details" -msgstr "" +msgstr "Деталі проекту"  msgid "Project export could not be deleted."  msgstr "Неможливо видалити експорт проекту." @@ -964,14 +1114,8 @@ msgstr "Закінчився термін дії посилання на про  msgid "Project export started. A download link will be sent by email."  msgstr "Розпочато експорт проекту. Посилання для скачування буде надіслана електронною поштою." -msgid "Project home" -msgstr "Домашня сторінка проекту" - -msgid "Project overview" -msgstr "" -  msgid "ProjectActivityRSS|Subscribe" -msgstr "" +msgstr "Підписатися"  msgid "ProjectFeature|Disabled"  msgstr "Вимкнено" @@ -994,29 +1138,32 @@ msgstr "Етап"  msgid "ProjectNetworkGraph|Graph"  msgstr "Історія" -msgid "Push Rules" +msgid "ProjectsDropdown|Frequently visited"  msgstr ""  msgid "ProjectsDropdown|Loading projects" -msgstr "" - -msgid "ProjectsDropdown|Sorry, no projects matched your search" -msgstr "" +msgstr "Завантаження проектів"  msgid "ProjectsDropdown|Projects you visit often will appear here" -msgstr "" +msgstr "Проекти, які ви часто відвідуєте, будуть відображені тут"  msgid "ProjectsDropdown|Search your projects" -msgstr "" +msgstr "Пошук по ваших проектах" -msgid "ProjectsDropdown|Something went wrong on our end" +msgid "ProjectsDropdown|Something went wrong on our end."  msgstr "" +msgid "ProjectsDropdown|Sorry, no projects matched your search" +msgstr "На жаль, по вашоу запиту проектів не знайдено" +  msgid "ProjectsDropdown|This feature requires browser localStorage support" +msgstr "Ця функція потребує підтримки localStorage вашим браузером" + +msgid "Push Rules"  msgstr ""  msgid "Push events" -msgstr "" +msgstr "Push події"  msgid "Read more"  msgstr "Докладніше" @@ -1030,6 +1177,9 @@ msgstr "Гілки"  msgid "RefSwitcher|Tags"  msgstr "Теги" +msgid "Registry" +msgstr "" +  msgid "Related Commits"  msgstr "Пов'язані Комміти" @@ -1055,19 +1205,19 @@ msgid "Remove project"  msgstr "Видалити проект"  msgid "Repository" -msgstr "" +msgstr "Репозиторій"  msgid "Request Access"  msgstr "Запит доступу"  msgid "Reset git storage health information" -msgstr "" +msgstr "Скиньте інформацію про працездатність сховища git"  msgid "Reset health check access token" -msgstr "" +msgstr "Скиньте токен доступу для перевірки перевірки працездатності"  msgid "Reset runners registration token" -msgstr "" +msgstr "Скинути реєстраційний токен runner-ів"  msgid "Revert this commit"  msgstr "Скасувати цей комміт" @@ -1076,7 +1226,7 @@ msgid "Revert this merge request"  msgstr "Скасувати цей запит на злиття"  msgid "SSH Keys" -msgstr "" +msgstr "Ключі SSH"  msgid "Save pipeline schedule"  msgstr "Зберегти Розклад Конвеєра" @@ -1084,6 +1234,9 @@ msgstr "Зберегти Розклад Конвеєра"  msgid "Schedule a new pipeline"  msgstr "Розклад нового конвеєра" +msgid "Schedules" +msgstr "" +  msgid "Scheduling Pipelines"  msgstr "Планування конвеєрів" @@ -1097,13 +1250,13 @@ msgid "Select a timezone"  msgstr "Вибрати часовий пояс"  msgid "Select existing branch" -msgstr "" +msgstr "Виберіть гілку"  msgid "Select target branch"  msgstr "Вибір цільової гілки"  msgid "Service Templates" -msgstr "" +msgstr "Сервіс шаблонів"  msgid "Set a password on your account to pull or push via %{protocol}."  msgstr "Встановіть пароль свого облікового запису, щоб відправляти або отримувати код через %{protocol}." @@ -1121,6 +1274,12 @@ msgid "SetPasswordToCloneLink|set a password"  msgstr "встановити пароль"  msgid "Settings" +msgstr "Налаштування" + +msgid "Show parent pages" +msgstr "" + +msgid "Show parent subgroups"  msgstr ""  msgid "Showing %d event" @@ -1130,29 +1289,131 @@ msgstr[1] "Показано %d події"  msgstr[2] "Показано %d подій"  msgid "Snippets" +msgstr "Фрагменти" + +msgid "SortOptions|Access level, ascending" +msgstr "" + +msgid "SortOptions|Access level, descending" +msgstr "" + +msgid "SortOptions|Created date" +msgstr "" + +msgid "SortOptions|Due date" +msgstr "" + +msgid "SortOptions|Due later" +msgstr "" + +msgid "SortOptions|Due soon" +msgstr "" + +msgid "SortOptions|Label priority" +msgstr "" + +msgid "SortOptions|Largest group" +msgstr "" + +msgid "SortOptions|Largest repository" +msgstr "" + +msgid "SortOptions|Last created" +msgstr "" + +msgid "SortOptions|Last joined" +msgstr "" + +msgid "SortOptions|Last updated" +msgstr "" + +msgid "SortOptions|Least popular" +msgstr "" + +msgid "SortOptions|Less weight" +msgstr "" + +msgid "SortOptions|Milestone" +msgstr "" + +msgid "SortOptions|Milestone due later" +msgstr "" + +msgid "SortOptions|Milestone due soon" +msgstr "" + +msgid "SortOptions|More weight" +msgstr "" + +msgid "SortOptions|Most popular" +msgstr "" + +msgid "SortOptions|Name" +msgstr "" + +msgid "SortOptions|Name, ascending" +msgstr "" + +msgid "SortOptions|Name, descending" +msgstr "" + +msgid "SortOptions|Oldest created" +msgstr "" + +msgid "SortOptions|Oldest joined" +msgstr "" + +msgid "SortOptions|Oldest sign in" +msgstr "" + +msgid "SortOptions|Oldest updated" +msgstr "" + +msgid "SortOptions|Popularity" +msgstr "" + +msgid "SortOptions|Priority" +msgstr "" + +msgid "SortOptions|Recent sign in" +msgstr "" + +msgid "SortOptions|Start later" +msgstr "" + +msgid "SortOptions|Start soon" +msgstr "" + +msgid "SortOptions|Weight"  msgstr ""  msgid "Source code"  msgstr "Код"  msgid "Spam Logs" -msgstr "" +msgstr "Спам-журнал"  msgid "Specify the following URL during the Runner setup:" -msgstr "" +msgstr "Зазначте наступний URL під час встановлення Runner-а:"  msgid "StarProject|Star"  msgstr "Підписатися" +msgid "Starred projects" +msgstr "" +  msgid "Start a %{new_merge_request} with these changes"  msgstr "Почати %{new_merge_request} з цих змін"  msgid "Start the Runner!" -msgstr "" +msgstr "Запустіть Runner!"  msgid "Switch branch/tag"  msgstr "тег" +msgid "System Hooks" +msgstr "" +  msgid "Tag"  msgid_plural "Tags"  msgstr[0] "Тег" @@ -1166,7 +1427,7 @@ msgid "Target Branch"  msgstr "Цільова гілка"  msgid "Team" -msgstr "" +msgstr "Команда"  msgid "The coding stage shows the time from the first commit to creating the merge request. The data will automatically be added here once you create your first merge request."  msgstr "На стадії написання коду, показує час першого комміту до створення запиту на об'єднання. Дані будуть автоматично додані після створення вашого першого запиту на об'єднання." @@ -1217,6 +1478,9 @@ msgid "The value lying at the midpoint of a series of observed values. E.g., bet  msgstr "Середнє значення в рядку. Приклад: між 3, 5, 9, середніми 5, між 3, 5, 7, 8, середніми (5 + 7) / 2 = 6."  msgid "There are problems accessing Git storage: " +msgstr "Є проблеми з доступом до сховища: " + +msgid "This is the author's first Merge Request to this project. Handle with care."  msgstr ""  msgid "This means you can not push code until you create an empty repository or import existing one." @@ -1391,14 +1655,20 @@ msgid "UploadLink|click to upload"  msgstr "Натисніть, щоб завантажити"  msgid "Use the following registration token during setup:" -msgstr "" +msgstr "Використовувати токен під час установки:"  msgid "Use your global notification setting"  msgstr "Використовуються глобальні налаштування повідомлень" +msgid "View file @ " +msgstr "" +  msgid "View open merge request"  msgstr "Перегляд відкритих запитів на злиття" +msgid "View replaced file @ " +msgstr "" +  msgid "VisibilityLevel|Internal"  msgstr "Внутрішній" @@ -1418,7 +1688,7 @@ msgid "We don't have enough data to show this stage."  msgstr "Ми не маємо достатньо даних для показу цього етапу."  msgid "Wiki" -msgstr "" +msgstr "Wiki"  msgid "Withdraw Access Request"  msgstr "Скасувати запит доступу" @@ -1471,6 +1741,12 @@ msgstr "Ви не зможете отримувати і відправляти  msgid "Your name"  msgstr "Ваше ім'я" +msgid "Your projects" +msgstr "" + +msgid "commit" +msgstr "" +  msgid "day"  msgid_plural "days"  msgstr[0] "день" diff --git a/locale/zh_CN/gitlab.po b/locale/zh_CN/gitlab.po index d6f756e813f..4a05b159008 100644 --- a/locale/zh_CN/gitlab.po +++ b/locale/zh_CN/gitlab.po @@ -2,8 +2,8 @@ msgid ""  msgstr ""  "Project-Id-Version: gitlab-ee\n"  "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-09-06 08:32+0200\n" -"PO-Revision-Date: 2017-09-15 05:21-0400\n" +"POT-Creation-Date: 2017-09-27 16:26+0200\n" +"PO-Revision-Date: 2017-09-27 13:44-0400\n"  "Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n"  "Language-Team: Chinese Simplified\n"  "Language: zh_CN\n" @@ -27,6 +27,9 @@ msgstr[0] "为提高页面加载速度及性能,已省略了 %s 次提交。"  msgid "%{commit_author_link} committed %{commit_timeago}"  msgstr "由 %{commit_author_link} 提交于 %{commit_timeago}" +msgid "%{number_commits_behind} commits behind %{default_branch}, %{number_commits_ahead} commits ahead" +msgstr "" +  msgid "%{number_of_failures} of %{maximum_failures} failures. GitLab will allow access on the next attempt."  msgstr "已失败 %{number_of_failures} 次/最多允许失败失败 %{maximum_failures} 次,GitLab 将继续重试。" @@ -47,6 +50,9 @@ msgid "1 pipeline"  msgid_plural "%d pipelines"  msgstr[0] "%d 条流水线" +msgid "1st contribution!" +msgstr "" +  msgid "A collection of graphs regarding Continuous Integration"  msgstr "持续集成数据图" @@ -89,8 +95,8 @@ msgstr "添加目录"  msgid "All"  msgstr "全部" -msgid "Appearances" -msgstr "外观样式" +msgid "Appearance" +msgstr ""  msgid "Applications"  msgstr "应用程序" @@ -113,65 +119,92 @@ msgstr "确定要重置健康检查令牌吗?"  msgid "Are you sure?"  msgstr "确定吗?" +msgid "Artifacts" +msgstr "" +  msgid "Attach a file by drag & drop or %{upload_link}"  msgstr "拖放文件到此处或者 %{upload_link}" -msgid "Authentication log" -msgstr "认证日志" +msgid "Authentication Log" +msgstr "" + +msgid "Auto DevOps (Beta)" +msgstr "" + +msgid "Auto DevOps can be activated for this project. It will automatically build, test, and deploy your application based on a predefined CI/CD configuration." +msgstr "" + +msgid "Auto DevOps documentation" +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need a domain name and the %{kubernetes} to work correctly." +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need a domain name to work correctly." +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need the %{kubernetes} to work correctly." +msgstr "" + +msgid "AutoDevOps|Learn more in the" +msgstr ""  msgid "Billing" -msgstr "账单" +msgstr ""  msgid "BillingPlans|%{group_name} is currently on the %{plan_link} plan." -msgstr "%{group_name} 目前正在使用 %{plan_link} 方案。" +msgstr ""  msgid "BillingPlans|Automatic downgrade and upgrade to some plans is currently not available." -msgstr "当某些方案当前不可用时自动降级和升级。" +msgstr ""  msgid "BillingPlans|Current plan" -msgstr "当前方案" +msgstr ""  msgid "BillingPlans|Customer Support" -msgstr "客户支持" +msgstr ""  msgid "BillingPlans|Learn more about each plan by reading our %{faq_link}." -msgstr "通过阅读%{faq_link} 了解关于每个方案的更多信息。" +msgstr ""  msgid "BillingPlans|Manage plan" -msgstr "管理方案" +msgstr ""  msgid "BillingPlans|Please contact %{customer_support_link} in that case." -msgstr "在这种情况下,请联系 %{customer_support_link}。" +msgstr ""  msgid "BillingPlans|See all %{plan_name} features" -msgstr "查看 %{plan_name} 的所有功能" +msgstr ""  msgid "BillingPlans|This group uses the plan associated with its parent group." -msgstr "该群组使用与它的父团队相关联的计划。" +msgstr ""  msgid "BillingPlans|To manage the plan for this group, visit the billing section of %{parent_billing_page_link}." -msgstr "请访问 %{parent_billing_page_link} 的计费方案部分来管理该团队的计费方案,。" +msgstr ""  msgid "BillingPlans|Upgrade" -msgstr "升级" +msgstr ""  msgid "BillingPlans|You are currently on the %{plan_link} plan." -msgstr "你目前正在使用 %{plan_link} 方案。" +msgstr ""  msgid "BillingPlans|frequently asked questions" -msgstr "常见问题" +msgstr ""  msgid "BillingPlans|monthly" -msgstr "每月" +msgstr ""  msgid "BillingPlans|paid annually at %{price_per_year}" -msgstr "每年支付 %{price_per_year}" +msgstr ""  msgid "BillingPlans|per user" -msgstr "每个用户" +msgstr ""  msgid "Billinglans|Downgrade" -msgstr "降级" +msgstr "" + +msgid "Board" +msgstr ""  msgid "Branch"  msgid_plural "Branches" @@ -189,6 +222,90 @@ msgstr "切换分支"  msgid "Branches"  msgstr "分支" +msgid "Branches|Cant find HEAD commit for this branch" +msgstr "" + +msgid "Branches|Compare" +msgstr "" + +msgid "Branches|Delete all branches that are merged into '%{default_branch}'" +msgstr "" + +msgid "Branches|Delete branch" +msgstr "" + +msgid "Branches|Delete merged branches" +msgstr "" + +msgid "Branches|Delete protected branch" +msgstr "" + +msgid "Branches|Delete protected branch '%{branch_name}'?" +msgstr "" + +msgid "Branches|Deleting the '%{branch_name}' branch cannot be undone. Are you sure?" +msgstr "" + +msgid "Branches|Deleting the merged branches cannot be undone. Are you sure?" +msgstr "" + +msgid "Branches|Filter by branch name" +msgstr "" + +msgid "Branches|Merged into %{default_branch}" +msgstr "" + +msgid "Branches|New branch" +msgstr "" + +msgid "Branches|No branches to show" +msgstr "" + +msgid "Branches|Once you confirm and press %{delete_protected_branch}, it cannot be undone or recovered." +msgstr "" + +msgid "Branches|Only a project master or owner can delete a protected branch" +msgstr "" + +msgid "Branches|Protected branches can be managed in %{project_settings_link}" +msgstr "" + +msgid "Branches|Sort by" +msgstr "" + +msgid "Branches|The branch could not be updated automatically because it has diverged from its upstream counterpart." +msgstr "" + +msgid "Branches|The default branch cannot be deleted" +msgstr "" + +msgid "Branches|This branch hasn’t been merged into %{default_branch}." +msgstr "" + +msgid "Branches|To avoid data loss, consider merging this branch before deleting it." +msgstr "" + +msgid "Branches|To confirm, type %{branch_name_confirmation}:" +msgstr "" + +msgid "Branches|To discard the local changes and overwrite the branch with the upstream version, delete it here and choose 'Update Now' above." +msgstr "" + +msgid "Branches|You’re about to permanently delete the protected branch %{branch_name}." +msgstr "" + +msgid "Branches|diverged from upstream" +msgstr "" + +msgid "Branches|merged" +msgstr "" + +msgid "Branches|project settings" +msgstr "" + +msgid "Branches|protected" +msgstr "" +  msgid "Browse Directory"  msgstr "浏览目录" @@ -331,9 +448,6 @@ msgstr "提交者:"  msgid "Compare"  msgstr "比较" -msgid "Container Registry" -msgstr "容器注册表" -  msgid "Contribution guide"  msgstr "贡献指南" @@ -341,7 +455,7 @@ msgid "Contributors"  msgstr "贡献者"  msgid "Copy SSH public key to clipboard" -msgstr "将 SSH 公钥复制到剪贴板" +msgstr ""  msgid "Copy URL to clipboard"  msgstr "复制 URL 到剪贴板" @@ -482,6 +596,9 @@ msgstr "编辑 %{id} 流水线计划"  msgid "Emails"  msgstr "电子邮件" +msgid "Enable in settings" +msgstr "" +  msgid "EventFilterBy|Filter by all"  msgstr "全部" @@ -509,6 +626,9 @@ msgstr "每月执行(每月 1 日凌晨 4 点)"  msgid "Every week (Sundays at 4:00am)"  msgstr "每周执行(周日凌晨 4 点)" +msgid "Explore projects" +msgstr "" +  msgid "Failed to change the owner"  msgstr "无法变更所有者" @@ -550,7 +670,7 @@ msgid "GPG Keys"  msgstr "GPG 密钥"  msgid "Geo Nodes" -msgstr "Geo 节点" +msgstr ""  msgid "Git storage health information has been reset"  msgstr "Git 存储健康信息已重置" @@ -564,8 +684,29 @@ msgstr "跳转到派生项目"  msgid "GoToYourFork|Fork"  msgstr "跳转到派生项目" -msgid "Group overview" -msgstr "群组概览" +msgid "GroupSettings|Prevent sharing a project within %{group} with other groups" +msgstr "" + +msgid "GroupSettings|Share with group lock" +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group} and has been overridden on this subgroup." +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group}. To share projects in this group with another group, ask the owner to override the setting or %{remove_ancestor_share_with_group_lock}." +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group}. You can override the setting or %{remove_ancestor_share_with_group_lock}." +msgstr "" + +msgid "GroupSettings|This setting will be applied to all subgroups unless overridden by a group owner. Groups that already have access to the project will continue to have access unless removed manually." +msgstr "" + +msgid "GroupSettings|cannot be disabled when the parent group \"Share with group lock\" is enabled, except by the owner of the parent group" +msgstr "" + +msgid "GroupSettings|remove the share with group lock from %{ancestor_group_name}" +msgstr ""  msgid "Health Check"  msgstr "健康检查" @@ -585,12 +726,6 @@ msgstr "没有检测到健康问题"  msgid "HealthCheck|Unhealthy"  msgstr "非健康" -msgid "Home" -msgstr "首页" - -msgid "Hooks" -msgstr "钩子" -  msgid "Housekeeping successfully started"  msgstr "已开始维护" @@ -612,6 +747,9 @@ msgstr "议题事件"  msgid "Issues"  msgstr "议题" +msgid "Jobs" +msgstr "" +  msgid "LFSStatus|Disabled"  msgstr "停用" @@ -653,14 +791,14 @@ msgid "Leave project"  msgstr "退出项目"  msgid "License" -msgstr "许可" +msgstr ""  msgid "Limited to showing %d event at most"  msgid_plural "Limited to showing %d events at most"  msgstr[0] "最多显示 %d 个事件"  msgid "Locked Files" -msgstr "锁定的文件" +msgstr ""  msgid "Median"  msgstr "中位数" @@ -674,6 +812,9 @@ msgstr "合并请求"  msgid "Merge events"  msgstr "合并事件" +msgid "Merge request" +msgstr "" +  msgid "Messages"  msgstr "消息" @@ -801,6 +942,18 @@ msgstr "概览"  msgid "Owner"  msgstr "所有者" +msgid "Pagination|Last »" +msgstr "" + +msgid "Pagination|Next" +msgstr "" + +msgid "Pagination|Prev" +msgstr "" + +msgid "Pagination|« First" +msgstr "" +  msgid "Password"  msgstr "密码" @@ -817,7 +970,7 @@ msgid "Pipeline Schedules"  msgstr "流水线计划"  msgid "Pipeline quota" -msgstr "流水线配额" +msgstr ""  msgid "PipelineCharts|Failed:"  msgstr "失败:" @@ -906,11 +1059,8 @@ msgstr "于阶段"  msgid "Preferences"  msgstr "偏好设置" -msgid "Profile Settings" -msgstr "账户设置" - -msgid "Project" -msgstr "项目" +msgid "Profile" +msgstr ""  msgid "Project '%{project_name}' queued for deletion."  msgstr "项目 '%{project_name}' 已进入删除队列。" @@ -942,12 +1092,6 @@ msgstr "项目导出链接已过期。请从项目设置中重新生成项目导  msgid "Project export started. A download link will be sent by email."  msgstr "项目导出已开始。下载链接将通过电子邮件发送。" -msgid "Project home" -msgstr "项目首页" - -msgid "Project overview" -msgstr "项目概览" -  msgid "ProjectActivityRSS|Subscribe"  msgstr "订阅" @@ -972,25 +1116,28 @@ msgstr "阶段"  msgid "ProjectNetworkGraph|Graph"  msgstr "分支图" -msgid "Push Rules" -msgstr "推送规则" - -msgid "ProjectsDropdown|Loading projects" +msgid "ProjectsDropdown|Frequently visited"  msgstr "" -msgid "ProjectsDropdown|Sorry, no projects matched your search" -msgstr "" +msgid "ProjectsDropdown|Loading projects" +msgstr "加载项目中"  msgid "ProjectsDropdown|Projects you visit often will appear here" -msgstr "" +msgstr "您经常访问的项目将出现在这里"  msgid "ProjectsDropdown|Search your projects" -msgstr "" +msgstr "搜索您的项目" -msgid "ProjectsDropdown|Something went wrong on our end" +msgid "ProjectsDropdown|Something went wrong on our end."  msgstr "" +msgid "ProjectsDropdown|Sorry, no projects matched your search" +msgstr "对不起,没有搜索到符合条件的项目" +  msgid "ProjectsDropdown|This feature requires browser localStorage support" +msgstr "此功能需要浏览器支持 localStorage" + +msgid "Push Rules"  msgstr ""  msgid "Push events" @@ -1008,6 +1155,9 @@ msgstr "分支"  msgid "RefSwitcher|Tags"  msgstr "标签" +msgid "Registry" +msgstr "" +  msgid "Related Commits"  msgstr "相关的提交" @@ -1062,6 +1212,9 @@ msgstr "保存流水线计划"  msgid "Schedule a new pipeline"  msgstr "新建流水线计划" +msgid "Schedules" +msgstr "" +  msgid "Scheduling Pipelines"  msgstr "流水线计划" @@ -1101,6 +1254,12 @@ msgstr "设置密码"  msgid "Settings"  msgstr "设置" +msgid "Show parent pages" +msgstr "" + +msgid "Show parent subgroups" +msgstr "" +  msgid "Showing %d event"  msgid_plural "Showing %d events"  msgstr[0] "显示 %d 个事件" @@ -1108,6 +1267,102 @@ msgstr[0] "显示 %d 个事件"  msgid "Snippets"  msgstr "代码片段" +msgid "SortOptions|Access level, ascending" +msgstr "" + +msgid "SortOptions|Access level, descending" +msgstr "" + +msgid "SortOptions|Created date" +msgstr "" + +msgid "SortOptions|Due date" +msgstr "" + +msgid "SortOptions|Due later" +msgstr "" + +msgid "SortOptions|Due soon" +msgstr "" + +msgid "SortOptions|Label priority" +msgstr "" + +msgid "SortOptions|Largest group" +msgstr "" + +msgid "SortOptions|Largest repository" +msgstr "" + +msgid "SortOptions|Last created" +msgstr "" + +msgid "SortOptions|Last joined" +msgstr "" + +msgid "SortOptions|Last updated" +msgstr "" + +msgid "SortOptions|Least popular" +msgstr "" + +msgid "SortOptions|Less weight" +msgstr "" + +msgid "SortOptions|Milestone" +msgstr "" + +msgid "SortOptions|Milestone due later" +msgstr "" + +msgid "SortOptions|Milestone due soon" +msgstr "" + +msgid "SortOptions|More weight" +msgstr "" + +msgid "SortOptions|Most popular" +msgstr "" + +msgid "SortOptions|Name" +msgstr "" + +msgid "SortOptions|Name, ascending" +msgstr "" + +msgid "SortOptions|Name, descending" +msgstr "" + +msgid "SortOptions|Oldest created" +msgstr "" + +msgid "SortOptions|Oldest joined" +msgstr "" + +msgid "SortOptions|Oldest sign in" +msgstr "" + +msgid "SortOptions|Oldest updated" +msgstr "" + +msgid "SortOptions|Popularity" +msgstr "" + +msgid "SortOptions|Priority" +msgstr "" + +msgid "SortOptions|Recent sign in" +msgstr "" + +msgid "SortOptions|Start later" +msgstr "" + +msgid "SortOptions|Start soon" +msgstr "" + +msgid "SortOptions|Weight" +msgstr "" +  msgid "Source code"  msgstr "源代码" @@ -1120,6 +1375,9 @@ msgstr "在 Runner 设置时指定以下 URL:"  msgid "StarProject|Star"  msgstr "星标" +msgid "Starred projects" +msgstr "" +  msgid "Start a %{new_merge_request} with these changes"  msgstr "由此更改 %{new_merge_request}" @@ -1129,6 +1387,9 @@ msgstr "启动 Runner!"  msgid "Switch branch/tag"  msgstr "切换分支/标签" +msgid "System Hooks" +msgstr "" +  msgid "Tag"  msgid_plural "Tags"  msgstr[0] "标签" @@ -1193,6 +1454,9 @@ msgstr "中位数是一个数列中最中间的值。例如在 3、5、9 之间  msgid "There are problems accessing Git storage: "  msgstr "访问 Git 存储时出现问题:" +msgid "This is the author's first Merge Request to this project. Handle with care." +msgstr "" +  msgid "This means you can not push code until you create an empty repository or import existing one."  msgstr "在创建一个空的存储库或导入现有存储库之前,将无法推送代码。" @@ -1366,9 +1630,15 @@ msgstr "在安装过程中使用以下注册令牌:"  msgid "Use your global notification setting"  msgstr "使用全局通知设置" +msgid "View file @ " +msgstr "" +  msgid "View open merge request"  msgstr "查看待处理的合并请求" +msgid "View replaced file @ " +msgstr "" +  msgid "VisibilityLevel|Internal"  msgstr "内部" @@ -1441,6 +1711,12 @@ msgstr "在账号中 %{add_ssh_key_link} 之前将无法通过 SSH 拉取或推  msgid "Your name"  msgstr "您的名字" +msgid "Your projects" +msgstr "" + +msgid "commit" +msgstr "" +  msgid "day"  msgid_plural "days"  msgstr[0] "天" diff --git a/locale/zh_HK/gitlab.po b/locale/zh_HK/gitlab.po index 48b86508d1e..c3b6cc72aed 100644 --- a/locale/zh_HK/gitlab.po +++ b/locale/zh_HK/gitlab.po @@ -2,8 +2,8 @@ msgid ""  msgstr ""  "Project-Id-Version: gitlab-ee\n"  "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-09-06 08:32+0200\n" -"PO-Revision-Date: 2017-09-15 05:21-0400\n" +"POT-Creation-Date: 2017-09-27 16:26+0200\n" +"PO-Revision-Date: 2017-09-27 13:44-0400\n"  "Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n"  "Language-Team: Chinese Traditional, Hong Kong\n"  "Language: zh_HK\n" @@ -27,6 +27,9 @@ msgstr[0] "為提高頁面加載速度及性能,已省略了 %s 次提交。"  msgid "%{commit_author_link} committed %{commit_timeago}"  msgstr "由 %{commit_author_link} 提交於 %{commit_timeago}" +msgid "%{number_commits_behind} commits behind %{default_branch}, %{number_commits_ahead} commits ahead" +msgstr "" +  msgid "%{number_of_failures} of %{maximum_failures} failures. GitLab will allow access on the next attempt."  msgstr "已失敗 %{number_of_failures} 次,最大失敗 %{maximum_failures} 次,GitLab 將重試。" @@ -47,6 +50,9 @@ msgid "1 pipeline"  msgid_plural "%d pipelines"  msgstr[0] "%d 條流水線" +msgid "1st contribution!" +msgstr "" +  msgid "A collection of graphs regarding Continuous Integration"  msgstr "相關持續集成的圖像集合" @@ -89,7 +95,7 @@ msgstr "添加新目錄"  msgid "All"  msgstr "全部" -msgid "Appearances" +msgid "Appearance"  msgstr ""  msgid "Applications" @@ -113,10 +119,34 @@ msgstr "確定要重置健康檢查令牌嗎?"  msgid "Are you sure?"  msgstr "確定嗎?" +msgid "Artifacts" +msgstr "" +  msgid "Attach a file by drag & drop or %{upload_link}"  msgstr "拖放文件到此處或者 %{upload_link}" -msgid "Authentication log" +msgid "Authentication Log" +msgstr "" + +msgid "Auto DevOps (Beta)" +msgstr "" + +msgid "Auto DevOps can be activated for this project. It will automatically build, test, and deploy your application based on a predefined CI/CD configuration." +msgstr "" + +msgid "Auto DevOps documentation" +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need a domain name and the %{kubernetes} to work correctly." +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need a domain name to work correctly." +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need the %{kubernetes} to work correctly." +msgstr "" + +msgid "AutoDevOps|Learn more in the"  msgstr ""  msgid "Billing" @@ -173,6 +203,9 @@ msgstr ""  msgid "Billinglans|Downgrade"  msgstr "" +msgid "Board" +msgstr "" +  msgid "Branch"  msgid_plural "Branches"  msgstr[0] "分支" @@ -189,6 +222,90 @@ msgstr "切換分支"  msgid "Branches"  msgstr "分支" +msgid "Branches|Cant find HEAD commit for this branch" +msgstr "" + +msgid "Branches|Compare" +msgstr "" + +msgid "Branches|Delete all branches that are merged into '%{default_branch}'" +msgstr "" + +msgid "Branches|Delete branch" +msgstr "" + +msgid "Branches|Delete merged branches" +msgstr "" + +msgid "Branches|Delete protected branch" +msgstr "" + +msgid "Branches|Delete protected branch '%{branch_name}'?" +msgstr "" + +msgid "Branches|Deleting the '%{branch_name}' branch cannot be undone. Are you sure?" +msgstr "" + +msgid "Branches|Deleting the merged branches cannot be undone. Are you sure?" +msgstr "" + +msgid "Branches|Filter by branch name" +msgstr "" + +msgid "Branches|Merged into %{default_branch}" +msgstr "" + +msgid "Branches|New branch" +msgstr "" + +msgid "Branches|No branches to show" +msgstr "" + +msgid "Branches|Once you confirm and press %{delete_protected_branch}, it cannot be undone or recovered." +msgstr "" + +msgid "Branches|Only a project master or owner can delete a protected branch" +msgstr "" + +msgid "Branches|Protected branches can be managed in %{project_settings_link}" +msgstr "" + +msgid "Branches|Sort by" +msgstr "" + +msgid "Branches|The branch could not be updated automatically because it has diverged from its upstream counterpart." +msgstr "" + +msgid "Branches|The default branch cannot be deleted" +msgstr "" + +msgid "Branches|This branch hasn’t been merged into %{default_branch}." +msgstr "" + +msgid "Branches|To avoid data loss, consider merging this branch before deleting it." +msgstr "" + +msgid "Branches|To confirm, type %{branch_name_confirmation}:" +msgstr "" + +msgid "Branches|To discard the local changes and overwrite the branch with the upstream version, delete it here and choose 'Update Now' above." +msgstr "" + +msgid "Branches|You’re about to permanently delete the protected branch %{branch_name}." +msgstr "" + +msgid "Branches|diverged from upstream" +msgstr "" + +msgid "Branches|merged" +msgstr "" + +msgid "Branches|project settings" +msgstr "" + +msgid "Branches|protected" +msgstr "" +  msgid "Browse Directory"  msgstr "瀏覽目錄" @@ -331,9 +448,6 @@ msgstr "提交者:"  msgid "Compare"  msgstr "比較" -msgid "Container Registry" -msgstr "" -  msgid "Contribution guide"  msgstr "貢獻指南" @@ -482,6 +596,9 @@ msgstr "編輯 %{id} 流水線計劃"  msgid "Emails"  msgstr "" +msgid "Enable in settings" +msgstr "" +  msgid "EventFilterBy|Filter by all"  msgstr "全部" @@ -509,6 +626,9 @@ msgstr "每月執行(每月 1 日淩晨 4 點)"  msgid "Every week (Sundays at 4:00am)"  msgstr "每週執行(周日淩晨 4 點)" +msgid "Explore projects" +msgstr "" +  msgid "Failed to change the owner"  msgstr "無法變更所有者" @@ -564,7 +684,28 @@ msgstr "跳轉到派生項目"  msgid "GoToYourFork|Fork"  msgstr "跳轉到派生項目" -msgid "Group overview" +msgid "GroupSettings|Prevent sharing a project within %{group} with other groups" +msgstr "" + +msgid "GroupSettings|Share with group lock" +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group} and has been overridden on this subgroup." +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group}. To share projects in this group with another group, ask the owner to override the setting or %{remove_ancestor_share_with_group_lock}." +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group}. You can override the setting or %{remove_ancestor_share_with_group_lock}." +msgstr "" + +msgid "GroupSettings|This setting will be applied to all subgroups unless overridden by a group owner. Groups that already have access to the project will continue to have access unless removed manually." +msgstr "" + +msgid "GroupSettings|cannot be disabled when the parent group \"Share with group lock\" is enabled, except by the owner of the parent group" +msgstr "" + +msgid "GroupSettings|remove the share with group lock from %{ancestor_group_name}"  msgstr ""  msgid "Health Check" @@ -585,12 +726,6 @@ msgstr "沒有檢測到健康問題"  msgid "HealthCheck|Unhealthy"  msgstr "不良" -msgid "Home" -msgstr "首頁" - -msgid "Hooks" -msgstr "" -  msgid "Housekeeping successfully started"  msgstr "已開始維護" @@ -612,6 +747,9 @@ msgstr "議題事件 (issue event)"  msgid "Issues"  msgstr "" +msgid "Jobs" +msgstr "" +  msgid "LFSStatus|Disabled"  msgstr "停用" @@ -674,6 +812,9 @@ msgstr ""  msgid "Merge events"  msgstr "合併事件 (merge event)" +msgid "Merge request" +msgstr "" +  msgid "Messages"  msgstr "" @@ -801,6 +942,18 @@ msgstr ""  msgid "Owner"  msgstr "所有者" +msgid "Pagination|Last »" +msgstr "" + +msgid "Pagination|Next" +msgstr "" + +msgid "Pagination|Prev" +msgstr "" + +msgid "Pagination|« First" +msgstr "" +  msgid "Password"  msgstr "" @@ -906,12 +1059,9 @@ msgstr "於階段"  msgid "Preferences"  msgstr "" -msgid "Profile Settings" +msgid "Profile"  msgstr "" -msgid "Project" -msgstr "專案" -  msgid "Project '%{project_name}' queued for deletion."  msgstr "項目 '%{project_name}' 已進入刪除隊列。" @@ -942,12 +1092,6 @@ msgstr "項目導出鏈接已過期。請從項目設置中重新生成項目導  msgid "Project export started. A download link will be sent by email."  msgstr "項目導出已開始。下載鏈接將通過電子郵件發送。" -msgid "Project home" -msgstr "項目首頁" - -msgid "Project overview" -msgstr "" -  msgid "ProjectActivityRSS|Subscribe"  msgstr "訂閱" @@ -972,27 +1116,30 @@ msgstr "階段"  msgid "ProjectNetworkGraph|Graph"  msgstr "分支圖" -msgid "Push Rules" +msgid "ProjectsDropdown|Frequently visited"  msgstr ""  msgid "ProjectsDropdown|Loading projects"  msgstr "" -msgid "ProjectsDropdown|Sorry, no projects matched your search" -msgstr "" -  msgid "ProjectsDropdown|Projects you visit often will appear here"  msgstr ""  msgid "ProjectsDropdown|Search your projects"  msgstr "" -msgid "ProjectsDropdown|Something went wrong on our end" +msgid "ProjectsDropdown|Something went wrong on our end." +msgstr "" + +msgid "ProjectsDropdown|Sorry, no projects matched your search"  msgstr ""  msgid "ProjectsDropdown|This feature requires browser localStorage support"  msgstr "" +msgid "Push Rules" +msgstr "" +  msgid "Push events"  msgstr "推送事件 (push event) " @@ -1008,6 +1155,9 @@ msgstr "分支"  msgid "RefSwitcher|Tags"  msgstr "標籤" +msgid "Registry" +msgstr "" +  msgid "Related Commits"  msgstr "相關的提交" @@ -1062,6 +1212,9 @@ msgstr "保存流水線計劃"  msgid "Schedule a new pipeline"  msgstr "新建流水線計劃" +msgid "Schedules" +msgstr "" +  msgid "Scheduling Pipelines"  msgstr "流水線計劃" @@ -1101,6 +1254,12 @@ msgstr "設置密碼"  msgid "Settings"  msgstr "" +msgid "Show parent pages" +msgstr "" + +msgid "Show parent subgroups" +msgstr "" +  msgid "Showing %d event"  msgid_plural "Showing %d events"  msgstr[0] "顯示 %d 個事件" @@ -1108,6 +1267,102 @@ msgstr[0] "顯示 %d 個事件"  msgid "Snippets"  msgstr "" +msgid "SortOptions|Access level, ascending" +msgstr "" + +msgid "SortOptions|Access level, descending" +msgstr "" + +msgid "SortOptions|Created date" +msgstr "" + +msgid "SortOptions|Due date" +msgstr "" + +msgid "SortOptions|Due later" +msgstr "" + +msgid "SortOptions|Due soon" +msgstr "" + +msgid "SortOptions|Label priority" +msgstr "" + +msgid "SortOptions|Largest group" +msgstr "" + +msgid "SortOptions|Largest repository" +msgstr "" + +msgid "SortOptions|Last created" +msgstr "" + +msgid "SortOptions|Last joined" +msgstr "" + +msgid "SortOptions|Last updated" +msgstr "" + +msgid "SortOptions|Least popular" +msgstr "" + +msgid "SortOptions|Less weight" +msgstr "" + +msgid "SortOptions|Milestone" +msgstr "" + +msgid "SortOptions|Milestone due later" +msgstr "" + +msgid "SortOptions|Milestone due soon" +msgstr "" + +msgid "SortOptions|More weight" +msgstr "" + +msgid "SortOptions|Most popular" +msgstr "" + +msgid "SortOptions|Name" +msgstr "" + +msgid "SortOptions|Name, ascending" +msgstr "" + +msgid "SortOptions|Name, descending" +msgstr "" + +msgid "SortOptions|Oldest created" +msgstr "" + +msgid "SortOptions|Oldest joined" +msgstr "" + +msgid "SortOptions|Oldest sign in" +msgstr "" + +msgid "SortOptions|Oldest updated" +msgstr "" + +msgid "SortOptions|Popularity" +msgstr "" + +msgid "SortOptions|Priority" +msgstr "" + +msgid "SortOptions|Recent sign in" +msgstr "" + +msgid "SortOptions|Start later" +msgstr "" + +msgid "SortOptions|Start soon" +msgstr "" + +msgid "SortOptions|Weight" +msgstr "" +  msgid "Source code"  msgstr "源代碼" @@ -1120,6 +1375,9 @@ msgstr "在 Runner 設置時指定以下 URL:"  msgid "StarProject|Star"  msgstr "星標" +msgid "Starred projects" +msgstr "" +  msgid "Start a %{new_merge_request} with these changes"  msgstr "由此更改 %{new_merge_request}" @@ -1129,6 +1387,9 @@ msgstr "運作 Runner!"  msgid "Switch branch/tag"  msgstr "切換分支/標籤" +msgid "System Hooks" +msgstr "" +  msgid "Tag"  msgid_plural "Tags"  msgstr[0] "標籤" @@ -1193,6 +1454,9 @@ msgstr "中位數是壹個數列中最中間的值。例如在 3、5、9 之間  msgid "There are problems accessing Git storage: "  msgstr "訪問 Git 存儲時出現問題:" +msgid "This is the author's first Merge Request to this project. Handle with care." +msgstr "" +  msgid "This means you can not push code until you create an empty repository or import existing one."  msgstr "在創建壹個空的存儲庫或導入現有存儲庫之前,您將無法推送代碼。" @@ -1366,9 +1630,15 @@ msgstr "在安裝過程中使用以下註冊令牌:"  msgid "Use your global notification setting"  msgstr "使用全局通知設置" +msgid "View file @ " +msgstr "" +  msgid "View open merge request"  msgstr "查看開啟的合並請求" +msgid "View replaced file @ " +msgstr "" +  msgid "VisibilityLevel|Internal"  msgstr "內部" @@ -1441,6 +1711,12 @@ msgstr "在賬號中 %{add_ssh_key_link} 之前將無法通過 SSH 拉取或推  msgid "Your name"  msgstr "您的名字" +msgid "Your projects" +msgstr "" + +msgid "commit" +msgstr "" +  msgid "day"  msgid_plural "days"  msgstr[0] "天" diff --git a/locale/zh_TW/gitlab.po b/locale/zh_TW/gitlab.po index da6a98bdb5c..8a14cd01566 100644 --- a/locale/zh_TW/gitlab.po +++ b/locale/zh_TW/gitlab.po @@ -2,8 +2,8 @@ msgid ""  msgstr ""  "Project-Id-Version: gitlab-ee\n"  "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-09-06 08:32+0200\n" -"PO-Revision-Date: 2017-09-15 05:21-0400\n" +"POT-Creation-Date: 2017-09-27 16:26+0200\n" +"PO-Revision-Date: 2017-09-27 13:44-0400\n"  "Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n"  "Language-Team: Chinese Traditional\n"  "Language: zh_TW\n" @@ -27,6 +27,9 @@ msgstr[0] "因效能考量,不顯示 %s 個更動 (commit)。"  msgid "%{commit_author_link} committed %{commit_timeago}"  msgstr "%{commit_author_link} 在 %{commit_timeago} 送交" +msgid "%{number_commits_behind} commits behind %{default_branch}, %{number_commits_ahead} commits ahead" +msgstr "" +  msgid "%{number_of_failures} of %{maximum_failures} failures. GitLab will allow access on the next attempt."  msgstr "已失敗 %{number_of_failures} 次,在失敗 %{maximum_failures} 次前 GitLab 會重試。" @@ -47,6 +50,9 @@ msgid "1 pipeline"  msgid_plural "%d pipelines"  msgstr[0] "%d 條流水線" +msgid "1st contribution!" +msgstr "" +  msgid "A collection of graphs regarding Continuous Integration"  msgstr "持續整合 (CI) 相關的圖表" @@ -63,7 +69,7 @@ msgid "Access to failing storages has been temporarily disabled to allow the mou  msgstr "已暫時停用失敗的 Git 儲存空間。當儲存空間恢復正常後,請重置儲存空間健康指數。"  msgid "Account" -msgstr "" +msgstr "帳號"  msgid "Active"  msgstr "啟用" @@ -89,8 +95,8 @@ msgstr "新增目錄"  msgid "All"  msgstr "全部" -msgid "Appearances" -msgstr "外觀" +msgid "Appearance" +msgstr ""  msgid "Applications"  msgstr "應用程式" @@ -113,10 +119,34 @@ msgstr "確定要重置健康檢查存取憑證 (access token) 嗎?"  msgid "Are you sure?"  msgstr "確定嗎?" +msgid "Artifacts" +msgstr "" +  msgid "Attach a file by drag & drop or %{upload_link}"  msgstr "拖放檔案到此處或者 %{upload_link}" -msgid "Authentication log" +msgid "Authentication Log" +msgstr "" + +msgid "Auto DevOps (Beta)" +msgstr "" + +msgid "Auto DevOps can be activated for this project. It will automatically build, test, and deploy your application based on a predefined CI/CD configuration." +msgstr "" + +msgid "Auto DevOps documentation" +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need a domain name and the %{kubernetes} to work correctly." +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need a domain name to work correctly." +msgstr "" + +msgid "Auto Review Apps and Auto Deploy need the %{kubernetes} to work correctly." +msgstr "" + +msgid "AutoDevOps|Learn more in the"  msgstr ""  msgid "Billing" @@ -173,6 +203,9 @@ msgstr ""  msgid "Billinglans|Downgrade"  msgstr "" +msgid "Board" +msgstr "" +  msgid "Branch"  msgid_plural "Branches"  msgstr[0] "分支 (branch) " @@ -189,6 +222,90 @@ msgstr "切換分支 (branch)"  msgid "Branches"  msgstr "分支 (branch) " +msgid "Branches|Cant find HEAD commit for this branch" +msgstr "" + +msgid "Branches|Compare" +msgstr "" + +msgid "Branches|Delete all branches that are merged into '%{default_branch}'" +msgstr "" + +msgid "Branches|Delete branch" +msgstr "" + +msgid "Branches|Delete merged branches" +msgstr "" + +msgid "Branches|Delete protected branch" +msgstr "" + +msgid "Branches|Delete protected branch '%{branch_name}'?" +msgstr "" + +msgid "Branches|Deleting the '%{branch_name}' branch cannot be undone. Are you sure?" +msgstr "" + +msgid "Branches|Deleting the merged branches cannot be undone. Are you sure?" +msgstr "" + +msgid "Branches|Filter by branch name" +msgstr "" + +msgid "Branches|Merged into %{default_branch}" +msgstr "" + +msgid "Branches|New branch" +msgstr "" + +msgid "Branches|No branches to show" +msgstr "" + +msgid "Branches|Once you confirm and press %{delete_protected_branch}, it cannot be undone or recovered." +msgstr "" + +msgid "Branches|Only a project master or owner can delete a protected branch" +msgstr "" + +msgid "Branches|Protected branches can be managed in %{project_settings_link}" +msgstr "" + +msgid "Branches|Sort by" +msgstr "" + +msgid "Branches|The branch could not be updated automatically because it has diverged from its upstream counterpart." +msgstr "" + +msgid "Branches|The default branch cannot be deleted" +msgstr "" + +msgid "Branches|This branch hasn’t been merged into %{default_branch}." +msgstr "" + +msgid "Branches|To avoid data loss, consider merging this branch before deleting it." +msgstr "" + +msgid "Branches|To confirm, type %{branch_name_confirmation}:" +msgstr "" + +msgid "Branches|To discard the local changes and overwrite the branch with the upstream version, delete it here and choose 'Update Now' above." +msgstr "" + +msgid "Branches|You’re about to permanently delete the protected branch %{branch_name}." +msgstr "" + +msgid "Branches|diverged from upstream" +msgstr "" + +msgid "Branches|merged" +msgstr "" + +msgid "Branches|project settings" +msgstr "" + +msgid "Branches|protected" +msgstr "" +  msgid "Browse Directory"  msgstr "瀏覽目錄" @@ -331,9 +448,6 @@ msgstr "送交者為 "  msgid "Compare"  msgstr "比較" -msgid "Container Registry" -msgstr "" -  msgid "Contribution guide"  msgstr "協作指南" @@ -429,7 +543,7 @@ msgid_plural "Deploys"  msgstr[0] "部署"  msgid "Deploy Keys" -msgstr "" +msgstr "部署金鑰"  msgid "Description"  msgstr "描述" @@ -482,6 +596,9 @@ msgstr "編輯 %{id} 流水線 (pipeline) 排程"  msgid "Emails"  msgstr "電子郵件" +msgid "Enable in settings" +msgstr "" +  msgid "EventFilterBy|Filter by all"  msgstr "顯示全部" @@ -509,6 +626,9 @@ msgstr "每月執行(每月一日淩晨四點)"  msgid "Every week (Sundays at 4:00am)"  msgstr "每週執行(週日淩晨 四點)" +msgid "Explore projects" +msgstr "" +  msgid "Failed to change the owner"  msgstr "無法變更所有權" @@ -547,7 +667,7 @@ msgid "From merge request merge until deploy to production"  msgstr "從請求被合併後 (merge request merged) 直到部署至營運環境"  msgid "GPG Keys" -msgstr "" +msgstr "GPG 金鑰"  msgid "Geo Nodes"  msgstr "" @@ -564,8 +684,29 @@ msgstr "前往您的分支 (fork) "  msgid "GoToYourFork|Fork"  msgstr "前往您的分支 (fork) " -msgid "Group overview" -msgstr "群組總覽" +msgid "GroupSettings|Prevent sharing a project within %{group} with other groups" +msgstr "" + +msgid "GroupSettings|Share with group lock" +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group} and has been overridden on this subgroup." +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group}. To share projects in this group with another group, ask the owner to override the setting or %{remove_ancestor_share_with_group_lock}." +msgstr "" + +msgid "GroupSettings|This setting is applied on %{ancestor_group}. You can override the setting or %{remove_ancestor_share_with_group_lock}." +msgstr "" + +msgid "GroupSettings|This setting will be applied to all subgroups unless overridden by a group owner. Groups that already have access to the project will continue to have access unless removed manually." +msgstr "" + +msgid "GroupSettings|cannot be disabled when the parent group \"Share with group lock\" is enabled, except by the owner of the parent group" +msgstr "" + +msgid "GroupSettings|remove the share with group lock from %{ancestor_group_name}" +msgstr ""  msgid "Health Check"  msgstr "健康檢查" @@ -585,12 +726,6 @@ msgstr "沒有檢測到健康問題"  msgid "HealthCheck|Unhealthy"  msgstr "不良" -msgid "Home" -msgstr "首頁" - -msgid "Hooks" -msgstr "" -  msgid "Housekeeping successfully started"  msgstr "已開始維護" @@ -612,6 +747,9 @@ msgstr "議題 (issue) 事件"  msgid "Issues"  msgstr "議題" +msgid "Jobs" +msgstr "" +  msgid "LFSStatus|Disabled"  msgstr "停用" @@ -669,13 +807,16 @@ msgid "Members"  msgstr "成員"  msgid "Merge Requests" -msgstr "" +msgstr "合併請求 (merge request)"  msgid "Merge events"  msgstr "合併 (merge) 事件" +msgid "Merge request" +msgstr "" +  msgid "Messages" -msgstr "訊息" +msgstr "公告"  msgid "MissingSSHKeyWarningLink|add an SSH key"  msgstr "新增 SSH 金鑰" @@ -801,6 +942,18 @@ msgstr "總覽"  msgid "Owner"  msgstr "所有權" +msgid "Pagination|Last »" +msgstr "" + +msgid "Pagination|Next" +msgstr "" + +msgid "Pagination|Prev" +msgstr "" + +msgid "Pagination|« First" +msgstr "" +  msgid "Password"  msgstr "密碼" @@ -904,14 +1057,11 @@ msgid "Pipeline|with stages"  msgstr "於階段"  msgid "Preferences" -msgstr "" +msgstr "偏好設定" -msgid "Profile Settings" +msgid "Profile"  msgstr "" -msgid "Project" -msgstr "專案" -  msgid "Project '%{project_name}' queued for deletion."  msgstr "專案 '%{project_name}' 已加入刪除佇列。" @@ -942,12 +1092,6 @@ msgstr "專案的匯出連結已失效。請到專案設定中產生新的連結  msgid "Project export started. A download link will be sent by email."  msgstr "專案導出已開始。完成後下載連結會送到您的信箱。" -msgid "Project home" -msgstr "專案首頁" - -msgid "Project overview" -msgstr "專案總覽" -  msgid "ProjectActivityRSS|Subscribe"  msgstr "訂閱" @@ -972,25 +1116,28 @@ msgstr "階段"  msgid "ProjectNetworkGraph|Graph"  msgstr "分支圖" -msgid "Push Rules" +msgid "ProjectsDropdown|Frequently visited"  msgstr ""  msgid "ProjectsDropdown|Loading projects"  msgstr "" -msgid "ProjectsDropdown|Sorry, no projects matched your search" -msgstr "" -  msgid "ProjectsDropdown|Projects you visit often will appear here"  msgstr ""  msgid "ProjectsDropdown|Search your projects" -msgstr "" +msgstr "搜尋您的專案" -msgid "ProjectsDropdown|Something went wrong on our end" +msgid "ProjectsDropdown|Something went wrong on our end."  msgstr "" +msgid "ProjectsDropdown|Sorry, no projects matched your search" +msgstr "抱歉,沒有符合搜尋條件的專案" +  msgid "ProjectsDropdown|This feature requires browser localStorage support" +msgstr "此功能需要瀏覽器支援 localStorage" + +msgid "Push Rules"  msgstr ""  msgid "Push events" @@ -1008,6 +1155,9 @@ msgstr "分支 (branch) "  msgid "RefSwitcher|Tags"  msgstr "標籤" +msgid "Registry" +msgstr "" +  msgid "Related Commits"  msgstr "相關的更動記錄 (commit) " @@ -1054,7 +1204,7 @@ msgid "Revert this merge request"  msgstr "還原此合併請求 (merge request) "  msgid "SSH Keys" -msgstr "" +msgstr "SSH 金鑰"  msgid "Save pipeline schedule"  msgstr "儲存流水線 (pipeline) 排程" @@ -1062,6 +1212,9 @@ msgstr "儲存流水線 (pipeline) 排程"  msgid "Schedule a new pipeline"  msgstr "建立流水線 (pipeline) 排程" +msgid "Schedules" +msgstr "" +  msgid "Scheduling Pipelines"  msgstr "流水線 (pipeline) 排程" @@ -1101,6 +1254,12 @@ msgstr "設定密碼"  msgid "Settings"  msgstr "設定" +msgid "Show parent pages" +msgstr "" + +msgid "Show parent subgroups" +msgstr "" +  msgid "Showing %d event"  msgid_plural "Showing %d events"  msgstr[0] "顯示 %d 個事件" @@ -1108,6 +1267,102 @@ msgstr[0] "顯示 %d 個事件"  msgid "Snippets"  msgstr "" +msgid "SortOptions|Access level, ascending" +msgstr "" + +msgid "SortOptions|Access level, descending" +msgstr "" + +msgid "SortOptions|Created date" +msgstr "" + +msgid "SortOptions|Due date" +msgstr "" + +msgid "SortOptions|Due later" +msgstr "" + +msgid "SortOptions|Due soon" +msgstr "" + +msgid "SortOptions|Label priority" +msgstr "" + +msgid "SortOptions|Largest group" +msgstr "" + +msgid "SortOptions|Largest repository" +msgstr "" + +msgid "SortOptions|Last created" +msgstr "" + +msgid "SortOptions|Last joined" +msgstr "" + +msgid "SortOptions|Last updated" +msgstr "" + +msgid "SortOptions|Least popular" +msgstr "" + +msgid "SortOptions|Less weight" +msgstr "" + +msgid "SortOptions|Milestone" +msgstr "" + +msgid "SortOptions|Milestone due later" +msgstr "" + +msgid "SortOptions|Milestone due soon" +msgstr "" + +msgid "SortOptions|More weight" +msgstr "" + +msgid "SortOptions|Most popular" +msgstr "" + +msgid "SortOptions|Name" +msgstr "" + +msgid "SortOptions|Name, ascending" +msgstr "" + +msgid "SortOptions|Name, descending" +msgstr "" + +msgid "SortOptions|Oldest created" +msgstr "" + +msgid "SortOptions|Oldest joined" +msgstr "" + +msgid "SortOptions|Oldest sign in" +msgstr "" + +msgid "SortOptions|Oldest updated" +msgstr "" + +msgid "SortOptions|Popularity" +msgstr "" + +msgid "SortOptions|Priority" +msgstr "" + +msgid "SortOptions|Recent sign in" +msgstr "" + +msgid "SortOptions|Start later" +msgstr "" + +msgid "SortOptions|Start soon" +msgstr "" + +msgid "SortOptions|Weight" +msgstr "" +  msgid "Source code"  msgstr "原始碼" @@ -1120,6 +1375,9 @@ msgstr "在安裝 Runner 時指定以下 URL:"  msgid "StarProject|Star"  msgstr "收藏" +msgid "Starred projects" +msgstr "" +  msgid "Start a %{new_merge_request} with these changes"  msgstr "以這些改動建立一個新的 %{new_merge_request} " @@ -1129,6 +1387,9 @@ msgstr "啟動 Runner!"  msgid "Switch branch/tag"  msgstr "切換分支 (branch) 或標籤" +msgid "System Hooks" +msgstr "" +  msgid "Tag"  msgid_plural "Tags"  msgstr[0] "標籤" @@ -1193,6 +1454,9 @@ msgstr "中位數是一個數列中最中間的值。例如在 3、5、9 之間  msgid "There are problems accessing Git storage: "  msgstr "存取 Git 儲存空間時出現問題:" +msgid "This is the author's first Merge Request to this project. Handle with care." +msgstr "" +  msgid "This means you can not push code until you create an empty repository or import existing one."  msgstr "這代表在您建立一個空的檔案庫 (repository) 或是匯入一個現存的檔案庫之前,您將無法上傳更新 (push) 。" @@ -1366,9 +1630,15 @@ msgstr "在安裝過程中使用此註冊憑證 (registration token):"  msgid "Use your global notification setting"  msgstr "使用全域通知設定" +msgid "View file @ " +msgstr "" +  msgid "View open merge request"  msgstr "查看此分支的合併請求 (merge request)" +msgid "View replaced file @ " +msgstr "" +  msgid "VisibilityLevel|Internal"  msgstr "內部" @@ -1388,7 +1658,7 @@ msgid "We don't have enough data to show this stage."  msgstr "因該階段的資料不足而無法顯示相關資訊"  msgid "Wiki" -msgstr "" +msgstr "Wiki"  msgid "Withdraw Access Request"  msgstr "取消權限申請" @@ -1441,6 +1711,12 @@ msgstr "在個人帳號中 %{add_ssh_key_link} 之前, 將無法使用 SSH 上  msgid "Your name"  msgstr "您的名字" +msgid "Your projects" +msgstr "" + +msgid "commit" +msgstr "" +  msgid "day"  msgid_plural "days"  msgstr[0] "天" diff --git a/qa/README.md b/qa/README.md index b6b5a76f1d3..e0ebb53a2e9 100644 --- a/qa/README.md +++ b/qa/README.md @@ -16,3 +16,22 @@ against any existing instance.  1. When we release a new version of GitLab, we build a Docker images for it.  1. Along with GitLab Docker Images we also build and publish GitLab QA images.  1. GitLab QA project uses these images to execute integration tests. + +## How can I use it? + +You can use GitLab QA to exercise tests on any live instance! For example, the +follow call would login to the local GitLab instance and run all specs in +`qa/specs/features`: + +``` +GITLAB_USERNAME='root' GITLAB_PASSWORD='5iveL!fe' bin/qa Test::Instance http://localhost +``` + +You can also supply a specific tests to run as another parameter. For example, to +test the EE license specs, you can run: + +``` +EE_LICENSE="<YOUR LICENSE KEY>" GITLAB_USERNAME='root' GITLAB_PASSWORD='5iveL!fe' bin/qa Test::Instance http://localhost qa/ee +``` + +All [supported environment variables are here](https://gitlab.com/gitlab-org/gitlab-qa#supported-environment-variables). diff --git a/qa/qa/page/admin/menu.rb b/qa/qa/page/admin/menu.rb index b01a4e10f93..f4619042e34 100644 --- a/qa/qa/page/admin/menu.rb +++ b/qa/qa/page/admin/menu.rb @@ -3,15 +3,10 @@ module QA      module Admin        class Menu < Page::Base          def go_to_license -          within_middle_menu { click_link 'License' } -        end - -        private - -        def within_middle_menu -          page.within('.nav-control') do -            yield -          end +          link = find_link 'License' +          # Click space to scroll this link into the view +          link.send_keys(:space) +          link.click          end        end      end diff --git a/spec/factories/gitaly/commit.rb b/spec/factories/gitaly/commit.rb new file mode 100644 index 00000000000..e7966cee77b --- /dev/null +++ b/spec/factories/gitaly/commit.rb @@ -0,0 +1,17 @@ +FactoryGirl.define do +  sequence(:gitaly_commit_id) { Digest::SHA1.hexdigest(Time.now.to_f.to_s) } + +  factory :gitaly_commit, class: Gitaly::GitCommit do +    skip_create + +    id { generate(:gitaly_commit_id) } +    parent_ids do +      ids = [generate(:gitaly_commit_id), generate(:gitaly_commit_id)] +      Google::Protobuf::RepeatedField.new(:string, ids) +    end +    subject { "My commit" } +    body { subject + "\nMy body" } +    author { build(:gitaly_commit_author) } +    committer { build(:gitaly_commit_author) } +  end +end diff --git a/spec/factories/gitaly/commit_author.rb b/spec/factories/gitaly/commit_author.rb new file mode 100644 index 00000000000..341873a2002 --- /dev/null +++ b/spec/factories/gitaly/commit_author.rb @@ -0,0 +1,9 @@ +FactoryGirl.define do +  factory :gitaly_commit_author, class: Gitaly::CommitAuthor do +    skip_create + +    name { generate(:name) } +    email { generate(:email) } +    date { Google::Protobuf::Timestamp.new(seconds: Time.now.to_i) } +  end +end diff --git a/spec/helpers/projects_helper_spec.rb b/spec/helpers/projects_helper_spec.rb index 7ded95d01af..641971485de 100644 --- a/spec/helpers/projects_helper_spec.rb +++ b/spec/helpers/projects_helper_spec.rb @@ -200,13 +200,13 @@ describe ProjectsHelper do      end      it 'returns image tag for member avatar' do -      expect(helper).to receive(:image_tag).with(expected, { width: 16, class: ["avatar", "avatar-inline", "s16"], alt: "" }) +      expect(helper).to receive(:image_tag).with(expected, { width: 16, class: ["avatar", "avatar-inline", "s16"], alt: "", "data-src" => anything })        helper.link_to_member_avatar(user)      end      it 'returns image tag with avatar class' do -      expect(helper).to receive(:image_tag).with(expected, { width: 16, class: ["avatar", "avatar-inline", "s16", "any-avatar-class"], alt: "" }) +      expect(helper).to receive(:image_tag).with(expected, { width: 16, class: ["avatar", "avatar-inline", "s16", "any-avatar-class"], alt: "", "data-src" => anything })        helper.link_to_member_avatar(user, avatar_class: "any-avatar-class")      end diff --git a/spec/javascripts/issuable_context_spec.js b/spec/javascripts/issuable_context_spec.js new file mode 100644 index 00000000000..bcb2b7b24a0 --- /dev/null +++ b/spec/javascripts/issuable_context_spec.js @@ -0,0 +1,34 @@ +/* global IssuableContext */ +import '~/issuable_context'; +import $ from 'jquery'; + +describe('IssuableContext', () => { +  describe('toggleHiddenParticipants', () => { +    const event = jasmine.createSpyObj('event', ['preventDefault']); + +    beforeEach(() => { +      spyOn($.fn, 'data').and.returnValue('data'); +      spyOn($.fn, 'text').and.returnValue('data'); +    }); + +    afterEach(() => { +      gl.lazyLoader = undefined; +    }); + +    it('calls loadCheck if lazyLoader is set', () => { +      gl.lazyLoader = jasmine.createSpyObj('lazyLoader', ['loadCheck']); + +      IssuableContext.prototype.toggleHiddenParticipants(event); + +      expect(gl.lazyLoader.loadCheck).toHaveBeenCalled(); +    }); + +    it('does not throw if lazyLoader is not defined', () => { +      gl.lazyLoader = undefined; + +      const toggle = IssuableContext.prototype.toggleHiddenParticipants.bind(null, event); + +      expect(toggle).not.toThrow(); +    }); +  }); +}); diff --git a/spec/javascripts/projects_dropdown/service/projects_service_spec.js b/spec/javascripts/projects_dropdown/service/projects_service_spec.js index d5dd8b3449a..cfd1bb7d24f 100644 --- a/spec/javascripts/projects_dropdown/service/projects_service_spec.js +++ b/spec/javascripts/projects_dropdown/service/projects_service_spec.js @@ -34,7 +34,7 @@ describe('ProjectsService', () => {        const searchQuery = 'lab';        const queryParams = { -        simple: false, +        simple: true,          per_page: 20,          membership: true,          order_by: 'last_activity_at', diff --git a/spec/javascripts/right_sidebar_spec.js b/spec/javascripts/right_sidebar_spec.js index f2072a6f350..5505f983d71 100644 --- a/spec/javascripts/right_sidebar_spec.js +++ b/spec/javascripts/right_sidebar_spec.js @@ -32,56 +32,86 @@ import '~/right_sidebar';    };    describe('RightSidebar', function() { -    var fixtureName = 'issues/open-issue.html.raw'; -    preloadFixtures(fixtureName); -    loadJSONFixtures('todos/todos.json'); - -    beforeEach(function() { -      loadFixtures(fixtureName); -      this.sidebar = new Sidebar; -      $aside = $('.right-sidebar'); -      $page = $('.page-with-sidebar'); -      $icon = $aside.find('i'); -      $toggle = $aside.find('.js-sidebar-toggle'); -      return $labelsIcon = $aside.find('.sidebar-collapsed-icon'); -    }); -    it('should expand/collapse the sidebar when arrow is clicked', function() { -      assertSidebarState('expanded'); -      $toggle.click(); -      assertSidebarState('collapsed'); -      $toggle.click(); -      assertSidebarState('expanded'); -    }); -    it('should float over the page and when sidebar icons clicked', function() { -      $labelsIcon.click(); -      return assertSidebarState('expanded'); -    }); -    it('should collapse when the icon arrow clicked while it is floating on page', function() { -      $labelsIcon.click(); -      assertSidebarState('expanded'); -      $toggle.click(); -      return assertSidebarState('collapsed'); +    describe('fixture tests', () => { +      var fixtureName = 'issues/open-issue.html.raw'; +      preloadFixtures(fixtureName); +      loadJSONFixtures('todos/todos.json'); + +      beforeEach(function() { +        loadFixtures(fixtureName); +        this.sidebar = new Sidebar; +        $aside = $('.right-sidebar'); +        $page = $('.page-with-sidebar'); +        $icon = $aside.find('i'); +        $toggle = $aside.find('.js-sidebar-toggle'); +        return $labelsIcon = $aside.find('.sidebar-collapsed-icon'); +      }); +      it('should expand/collapse the sidebar when arrow is clicked', function() { +        assertSidebarState('expanded'); +        $toggle.click(); +        assertSidebarState('collapsed'); +        $toggle.click(); +        assertSidebarState('expanded'); +      }); +      it('should float over the page and when sidebar icons clicked', function() { +        $labelsIcon.click(); +        return assertSidebarState('expanded'); +      }); +      it('should collapse when the icon arrow clicked while it is floating on page', function() { +        $labelsIcon.click(); +        assertSidebarState('expanded'); +        $toggle.click(); +        return assertSidebarState('collapsed'); +      }); + +      it('should broadcast todo:toggle event when add todo clicked', function() { +        var todos = getJSONFixture('todos/todos.json'); +        spyOn(jQuery, 'ajax').and.callFake(function() { +          var d = $.Deferred(); +          var response = todos; +          d.resolve(response); +          return d.promise(); +        }); + +        var todoToggleSpy = spyOnEvent(document, 'todo:toggle'); + +        $('.issuable-sidebar-header .js-issuable-todo').click(); + +        expect(todoToggleSpy.calls.count()).toEqual(1); +      }); + +      it('should not hide collapsed icons', () => { +        [].forEach.call(document.querySelectorAll('.sidebar-collapsed-icon'), (el) => { +          expect(el.querySelector('.fa, svg').classList.contains('hidden')).toBeFalsy(); +        }); +      });      }); -    it('should broadcast todo:toggle event when add todo clicked', function() { -      var todos = getJSONFixture('todos/todos.json'); -      spyOn(jQuery, 'ajax').and.callFake(function() { -        var d = $.Deferred(); -        var response = todos; -        d.resolve(response); -        return d.promise(); +    describe('sidebarToggleClicked', () => { +      const event = jasmine.createSpyObj('event', ['preventDefault']); + +      beforeEach(() => { +        spyOn($.fn, 'hasClass').and.returnValue(false); +      }); + +      afterEach(() => { +        gl.lazyLoader = undefined;        }); -      var todoToggleSpy = spyOnEvent(document, 'todo:toggle'); +      it('calls loadCheck if lazyLoader is set', () => { +        gl.lazyLoader = jasmine.createSpyObj('lazyLoader', ['loadCheck']); -      $('.issuable-sidebar-header .js-issuable-todo').click(); +        Sidebar.prototype.sidebarToggleClicked(event); -      expect(todoToggleSpy.calls.count()).toEqual(1); -    }); +        expect(gl.lazyLoader.loadCheck).toHaveBeenCalled(); +      }); + +      it('does not throw if lazyLoader is not defined', () => { +        gl.lazyLoader = undefined; + +        const toggle = Sidebar.prototype.sidebarToggleClicked.bind(null, event); -    it('should not hide collapsed icons', () => { -      [].forEach.call(document.querySelectorAll('.sidebar-collapsed-icon'), (el) => { -        expect(el.querySelector('.fa, svg').classList.contains('hidden')).toBeFalsy(); +        expect(toggle).not.toThrow();        });      });    }); diff --git a/spec/lib/gitlab/git/commit_spec.rb b/spec/lib/gitlab/git/commit_spec.rb index a3dff6d0d4b..3815055139a 100644 --- a/spec/lib/gitlab/git/commit_spec.rb +++ b/spec/lib/gitlab/git/commit_spec.rb @@ -65,34 +65,12 @@ describe Gitlab::Git::Commit, seed_helper: true do    end    describe "Commit info from gitaly commit" do -    let(:id) { 'f00' } -    let(:parent_ids) { %w(b45 b46) }      let(:subject) { "My commit".force_encoding('ASCII-8BIT') }      let(:body) { subject + "My body".force_encoding('ASCII-8BIT') } -    let(:committer) do -      Gitaly::CommitAuthor.new( -        name: generate(:name), -        email: generate(:email), -        date: Google::Protobuf::Timestamp.new(seconds: 123) -      ) -    end -    let(:author) do -      Gitaly::CommitAuthor.new( -        name: generate(:name), -        email: generate(:email), -        date: Google::Protobuf::Timestamp.new(seconds: 456) -      ) -    end -    let(:gitaly_commit) do -      Gitaly::GitCommit.new( -        id: id, -        subject: subject, -        body: body, -        author: author, -        committer: committer, -        parent_ids: parent_ids -      ) -    end +    let(:gitaly_commit) { build(:gitaly_commit, subject: subject, body: body) } +    let(:id) { gitaly_commit.id } +    let(:committer) { gitaly_commit.committer } +    let(:author) { gitaly_commit.author }      let(:commit) { described_class.new(repository, gitaly_commit) }      it { expect(commit.short_id).to eq(id[0..10]) } @@ -104,7 +82,7 @@ describe Gitlab::Git::Commit, seed_helper: true do      it { expect(commit.author_name).to eq(author.name) }      it { expect(commit.committer_name).to eq(committer.name) }      it { expect(commit.committer_email).to eq(committer.email) } -    it { expect(commit.parent_ids).to eq(parent_ids) } +    it { expect(commit.parent_ids).to eq(gitaly_commit.parent_ids) }      context 'no body' do        let(:body) { "".force_encoding('ASCII-8BIT') } diff --git a/spec/lib/gitlab/git/hook_spec.rb b/spec/lib/gitlab/git/hook_spec.rb index 0ff4f3bd105..2fe1f5603ce 100644 --- a/spec/lib/gitlab/git/hook_spec.rb +++ b/spec/lib/gitlab/git/hook_spec.rb @@ -14,6 +14,7 @@ describe Gitlab::Git::Hook do      let(:repo_path) { repository.path }      let(:user) { create(:user) }      let(:gl_id) { Gitlab::GlId.gl_id(user) } +    let(:gl_username) { user.username }      def create_hook(name)        FileUtils.mkdir_p(File.join(repo_path, 'hooks')) @@ -42,6 +43,7 @@ describe Gitlab::Git::Hook do            let(:env) do              {                'GL_ID' => gl_id, +              'GL_USERNAME' => gl_username,                'PWD' => repo_path,                'GL_PROTOCOL' => 'web',                'GL_REPOSITORY' => gl_repository @@ -59,7 +61,7 @@ describe Gitlab::Git::Hook do                  .with(env, hook_path, chdir: repo_path).and_call_original              end -            status, errors = hook.trigger(gl_id, blank, blank, ref) +            status, errors = hook.trigger(gl_id, gl_username, blank, blank, ref)              expect(status).to be true              expect(errors).to be_blank            end @@ -72,7 +74,7 @@ describe Gitlab::Git::Hook do              blank = Gitlab::Git::BLANK_SHA              ref = Gitlab::Git::BRANCH_REF_PREFIX + 'new_branch' -            status, errors = hook.trigger(gl_id, blank, blank, ref) +            status, errors = hook.trigger(gl_id, gl_username, blank, blank, ref)              expect(status).to be false              expect(errors).to eq("error message from the hook<br>error message from the hook line 2<br>")            end @@ -86,7 +88,7 @@ describe Gitlab::Git::Hook do          blank = Gitlab::Git::BLANK_SHA          ref = Gitlab::Git::BRANCH_REF_PREFIX + 'new_branch' -        status, errors = hook.trigger(gl_id, blank, blank, ref) +        status, errors = hook.trigger(gl_id, gl_username, blank, blank, ref)          expect(status).to be true          expect(errors).to be_nil        end diff --git a/spec/lib/gitlab/git/hooks_service_spec.rb b/spec/lib/gitlab/git/hooks_service_spec.rb index d4d75b66659..51e4e3fdad1 100644 --- a/spec/lib/gitlab/git/hooks_service_spec.rb +++ b/spec/lib/gitlab/git/hooks_service_spec.rb @@ -1,7 +1,7 @@  require 'spec_helper'  describe Gitlab::Git::HooksService, seed_helper: true do -  let(:user) { Gitlab::Git::User.new('Jane Doe', 'janedoe@example.com', 'user-456') } +  let(:user) { Gitlab::Git::User.new('janedoe', 'Jane Doe', 'janedoe@example.com', 'user-456') }    let(:repository) { Gitlab::Git::Repository.new('default', TEST_REPO_PATH, 'project-123') }    let(:service) { described_class.new } diff --git a/spec/lib/gitlab/git/user_spec.rb b/spec/lib/gitlab/git/user_spec.rb index 0ebcecb26c0..ab64b041187 100644 --- a/spec/lib/gitlab/git/user_spec.rb +++ b/spec/lib/gitlab/git/user_spec.rb @@ -1,22 +1,24 @@  require 'spec_helper'  describe Gitlab::Git::User do +  let(:username) { 'janedo' }    let(:name) { 'Jane Doe' }    let(:email) { 'janedoe@example.com' }    let(:gl_id) { 'user-123' } -  subject { described_class.new(name, email, gl_id) } +  subject { described_class.new(username, name, email, gl_id) }    describe '#==' do -    def eq_other(name, email, gl_id) -      eq(described_class.new(name, email, gl_id)) +    def eq_other(username, name, email, gl_id) +      eq(described_class.new(username, name, email, gl_id))      end -    it { expect(subject).to eq_other(name, email, gl_id) } +    it { expect(subject).to eq_other(username, name, email, gl_id) } -    it { expect(subject).not_to eq_other(nil, nil, nil) } -    it { expect(subject).not_to eq_other(name + 'x', email, gl_id) } -    it { expect(subject).not_to eq_other(name, email + 'x', gl_id) } -    it { expect(subject).not_to eq_other(name, email, gl_id + 'x') } +    it { expect(subject).not_to eq_other(nil, nil, nil, nil) } +    it { expect(subject).not_to eq_other(username + 'x', name, email, gl_id) } +    it { expect(subject).not_to eq_other(username, name + 'x', email, gl_id) } +    it { expect(subject).not_to eq_other(username, name, email + 'x', gl_id) } +    it { expect(subject).not_to eq_other(username, name, email, gl_id + 'x') }    end  end diff --git a/spec/lib/gitlab/gitaly_client/operation_service_spec.rb b/spec/lib/gitlab/gitaly_client/operation_service_spec.rb new file mode 100644 index 00000000000..769b14687ac --- /dev/null +++ b/spec/lib/gitlab/gitaly_client/operation_service_spec.rb @@ -0,0 +1,55 @@ +require 'spec_helper' + +describe Gitlab::GitalyClient::OperationService do +  let(:project) { create(:project) } +  let(:repository) { project.repository.raw } +  let(:client) { described_class.new(repository) } + +  describe '#user_create_branch' do +    let(:user) { create(:user) } +    let(:gitaly_user) { Gitlab::GitalyClient::Util.gitaly_user(user) } +    let(:branch_name) { 'new' } +    let(:start_point) { 'master' } +    let(:request) do +      Gitaly::UserCreateBranchRequest.new( +        repository: repository.gitaly_repository, +        branch_name: branch_name, +        start_point: start_point, +        user: gitaly_user +      ) +    end +    let(:gitaly_commit) { build(:gitaly_commit) } +    let(:commit_id) { gitaly_commit.id } +    let(:gitaly_branch) do +      Gitaly::Branch.new(name: branch_name, target_commit: gitaly_commit) +    end +    let(:response) { Gitaly::UserCreateBranchResponse.new(branch: gitaly_branch) } +    let(:commit) { Gitlab::Git::Commit.new(repository, gitaly_commit) } + +    subject { client.user_create_branch(branch_name, user, start_point) } + +    it 'sends a user_create_branch message and returns a Gitlab::git::Branch' do +      expect_any_instance_of(Gitaly::OperationService::Stub) +        .to receive(:user_create_branch).with(request, kind_of(Hash)) +        .and_return(response) + +      expect(subject.name).to eq(branch_name) +      expect(subject.dereferenced_target).to eq(commit) +    end + +    context "when pre_receive_error is present" do +      let(:response) do +        Gitaly::UserCreateBranchResponse.new(pre_receive_error: "something failed") +      end + +      it "throws a PreReceive exception" do +        expect_any_instance_of(Gitaly::OperationService::Stub) +          .to receive(:user_create_branch).with(request, kind_of(Hash)) +          .and_return(response) + +        expect { subject }.to raise_error( +          Gitlab::Git::HooksService::PreReceiveError, "something failed") +      end +    end +  end +end diff --git a/spec/lib/gitlab/gitaly_client/util_spec.rb b/spec/lib/gitlab/gitaly_client/util_spec.rb new file mode 100644 index 00000000000..498f6886bee --- /dev/null +++ b/spec/lib/gitlab/gitaly_client/util_spec.rb @@ -0,0 +1,43 @@ +require 'spec_helper' + +describe Gitlab::GitalyClient::Util do +  describe '.repository' do +    let(:repository_storage) { 'default' } +    let(:relative_path) { 'my/repo.git' } +    let(:gl_repository) { 'project-1' } +    let(:git_object_directory) { '.git/objects' } +    let(:git_alternate_object_directory) { '/dir/one:/dir/two' } + +    subject do +      described_class.repository(repository_storage, relative_path, gl_repository) +    end + +    it 'creates a Gitaly::Repository with the given data' do +      expect(Gitlab::Git::Env).to receive(:[]).with('GIT_OBJECT_DIRECTORY') +        .and_return(git_object_directory) +      expect(Gitlab::Git::Env).to receive(:[]).with('GIT_ALTERNATE_OBJECT_DIRECTORIES') +        .and_return(git_alternate_object_directory) + +      expect(subject).to be_a(Gitaly::Repository) +      expect(subject.storage_name).to eq(repository_storage) +      expect(subject.relative_path).to eq(relative_path) +      expect(subject.gl_repository).to eq(gl_repository) +      expect(subject.git_object_directory).to eq(git_object_directory) +      expect(subject.git_alternate_object_directories).to eq([git_alternate_object_directory]) +    end +  end + +  describe '.gitaly_user' do +    let(:user) { create(:user) } +    let(:gl_id) { Gitlab::GlId.gl_id(user) } + +    subject { described_class.gitaly_user(user) } + +    it 'creates a Gitaly::User from a GitLab user' do +      expect(subject).to be_a(Gitaly::User) +      expect(subject.name).to eq(user.name) +      expect(subject.email).to eq(user.email) +      expect(subject.gl_id).to eq(gl_id) +    end +  end +end diff --git a/spec/lib/gitlab/workhorse_spec.rb b/spec/lib/gitlab/workhorse_spec.rb index 5708aa6754f..72496e9a212 100644 --- a/spec/lib/gitlab/workhorse_spec.rb +++ b/spec/lib/gitlab/workhorse_spec.rb @@ -182,7 +182,12 @@ describe Gitlab::Workhorse do      let(:repo_path) { repository.path_to_repo }      let(:action) { 'info_refs' }      let(:params) do -      { GL_ID: "user-#{user.id}", GL_REPOSITORY: "project-#{project.id}", RepoPath: repo_path } +      { +        GL_ID: "user-#{user.id}", +        GL_USERNAME: user.username, +        GL_REPOSITORY: "project-#{project.id}", +        RepoPath: repo_path +      }      end      subject { described_class.git_http_ok(repository, false, user, action) } @@ -191,7 +196,12 @@ describe Gitlab::Workhorse do      context 'when is_wiki' do        let(:params) do -        { GL_ID: "user-#{user.id}", GL_REPOSITORY: "wiki-#{project.id}", RepoPath: repo_path } +        { +          GL_ID: "user-#{user.id}", +          GL_USERNAME: user.username, +          GL_REPOSITORY: "wiki-#{project.id}", +          RepoPath: repo_path +        }        end        subject { described_class.git_http_ok(repository, true, user, action) } @@ -216,7 +226,8 @@ describe Gitlab::Workhorse do        it 'includes a Repository param' do          repo_param = {            storage_name: 'default', -          relative_path: project.full_path + '.git' +          relative_path: project.full_path + '.git', +          gl_repository: "project-#{project.id}"          }          expect(subject[:Repository]).to include(repo_param) diff --git a/spec/models/repository_spec.rb b/spec/models/repository_spec.rb index ab81d39691b..157a10edd73 100644 --- a/spec/models/repository_spec.rb +++ b/spec/models/repository_spec.rb @@ -815,45 +815,70 @@ describe Repository do    end    describe '#add_branch' do -    context 'when pre hooks were successful' do -      it 'runs without errors' do -        hook = double(trigger: [true, nil]) -        expect(Gitlab::Git::Hook).to receive(:new).exactly(3).times.and_return(hook) +    let(:branch_name) { 'new_feature' } +    let(:target) { 'master' } -        expect { repository.add_branch(user, 'new_feature', 'master') }.not_to raise_error -      end +    subject { repository.add_branch(user, branch_name, target) } -      it 'creates the branch' do -        allow_any_instance_of(Gitlab::Git::Hook).to receive(:trigger).and_return([true, nil]) +    context 'with Gitaly enabled' do +      it "calls Gitaly's OperationService" do +        expect_any_instance_of(Gitlab::GitalyClient::OperationService) +          .to receive(:user_create_branch).with(branch_name, user, target) +          .and_return(nil) -        branch = repository.add_branch(user, 'new_feature', 'master') +        subject +      end -        expect(branch.name).to eq('new_feature') +      it 'creates_the_branch' do +        expect(subject.name).to eq(branch_name) +        expect(repository.find_branch(branch_name)).not_to be_nil        end -      it 'calls the after_create_branch hook' do -        expect(repository).to receive(:after_create_branch) +      context 'with a non-existing target' do +        let(:target) { 'fake-target' } -        repository.add_branch(user, 'new_feature', 'master') +        it "returns false and doesn't create the branch" do +          expect(subject).to be(false) +          expect(repository.find_branch(branch_name)).to be_nil +        end        end      end -    context 'when pre hooks failed' do -      it 'gets an error' do -        allow_any_instance_of(Gitlab::Git::Hook).to receive(:trigger).and_return([false, '']) +    context 'with Gitaly disabled', skip_gitaly_mock: true do +      context 'when pre hooks were successful' do +        it 'runs without errors' do +          hook = double(trigger: [true, nil]) +          expect(Gitlab::Git::Hook).to receive(:new).exactly(3).times.and_return(hook) -        expect do -          repository.add_branch(user, 'new_feature', 'master') -        end.to raise_error(Gitlab::Git::HooksService::PreReceiveError) +          expect { subject }.not_to raise_error +        end + +        it 'creates the branch' do +          allow_any_instance_of(Gitlab::Git::Hook).to receive(:trigger).and_return([true, nil]) + +          expect(subject.name).to eq(branch_name) +        end + +        it 'calls the after_create_branch hook' do +          expect(repository).to receive(:after_create_branch) + +          subject +        end        end -      it 'does not create the branch' do -        allow_any_instance_of(Gitlab::Git::Hook).to receive(:trigger).and_return([false, '']) +      context 'when pre hooks failed' do +        it 'gets an error' do +          allow_any_instance_of(Gitlab::Git::Hook).to receive(:trigger).and_return([false, '']) -        expect do -          repository.add_branch(user, 'new_feature', 'master') -        end.to raise_error(Gitlab::Git::HooksService::PreReceiveError) -        expect(repository.find_branch('new_feature')).to be_nil +          expect { subject }.to raise_error(Gitlab::Git::HooksService::PreReceiveError) +        end + +        it 'does not create the branch' do +          allow_any_instance_of(Gitlab::Git::Hook).to receive(:trigger).and_return([false, '']) + +          expect { subject }.to raise_error(Gitlab::Git::HooksService::PreReceiveError) +          expect(repository.find_branch(branch_name)).to be_nil +        end        end      end    end @@ -1272,6 +1297,7 @@ describe Repository do        allow(repository).to receive(:empty?).and_return(true)        expect(cache).to receive(:expire).with(:empty?) +      expect(cache).to receive(:expire).with(:has_visible_content?)        repository.expire_emptiness_caches      end @@ -1280,6 +1306,7 @@ describe Repository do        allow(repository).to receive(:empty?).and_return(false)        expect(cache).not_to receive(:expire).with(:empty?) +      expect(cache).not_to receive(:expire).with(:has_visible_content?)        repository.expire_emptiness_caches      end @@ -1609,7 +1636,7 @@ describe Repository do    describe '#expire_branches_cache' do      it 'expires the cache' do        expect(repository).to receive(:expire_method_caches) -        .with(%i(branch_names branch_count)) +        .with(%i(branch_names branch_count has_visible_content?))          .and_call_original        repository.expire_branches_cache @@ -1679,11 +1706,11 @@ describe Repository do          tag_sha = tag.target          expect(pre_receive_hook).to have_received(:trigger) -          .with(anything, anything, commit_sha, anything) +          .with(anything, anything, anything, commit_sha, anything)          expect(update_hook).to have_received(:trigger) -          .with(anything, anything, commit_sha, anything) +          .with(anything, anything, anything, commit_sha, anything)          expect(post_receive_hook).to have_received(:trigger) -          .with(anything, anything, tag_sha, anything) +          .with(anything, anything, anything, tag_sha, anything)        end      end    end @@ -1888,6 +1915,15 @@ describe Repository do        repository.expire_all_method_caches      end + +    it 'all cache_method definitions are in the lists of method caches' do +      methods = repository.methods.map do |method| +        match = /^_uncached_(.*)/.match(method) +        match[1].to_sym if match +      end.compact + +      expect(methods).to match_array(Repository::CACHED_METHODS + Repository::MEMOIZED_CACHED_METHODS) +    end    end    describe '#file_on_head' do diff --git a/spec/requests/api/helpers_spec.rb b/spec/requests/api/helpers_spec.rb index 98c49d3364c..060c8902471 100644 --- a/spec/requests/api/helpers_spec.rb +++ b/spec/requests/api/helpers_spec.rb @@ -480,6 +480,27 @@ describe API::Helpers do        handle_api_exception(exception)      end + +    context 'with a personal access token given' do +      let(:token) { create(:personal_access_token, scopes: ['api'], user: user) } + +      # Regression test for https://gitlab.com/gitlab-org/gitlab-ce/issues/38571 +      it 'does not raise an additional exception because of missing `request`' do +        # We need to stub at a lower level than #sentry_enabled? otherwise +        # Sentry is not enabled when the request below is made, and the test +        # would pass even without the fix +        expect(Gitlab::Sentry).to receive(:enabled?).twice.and_return(true) +        expect(ProjectsFinder).to receive(:new).and_raise('Runtime Error!') + +        get api('/projects', personal_access_token: token) + +        # The 500 status is expected as we're testing a case where an exception +        # is raised, but Grape shouldn't raise an additional exception +        expect(response).to have_gitlab_http_status(500) +        expect(json_response['message']).not_to include("undefined local variable or method `request'") +        expect(json_response['message']).to start_with("\nRuntimeError (Runtime Error!):") +      end +    end    end    describe '.authenticate_non_get!' do diff --git a/spec/views/shared/issuable/_participants.html.haml.rb b/spec/views/shared/issuable/_participants.html.haml.rb new file mode 100644 index 00000000000..51059d4c0d7 --- /dev/null +++ b/spec/views/shared/issuable/_participants.html.haml.rb @@ -0,0 +1,26 @@ +require 'spec_helper' +require 'nokogiri' + +describe 'shared/issuable/_participants.html.haml' do +  let(:project) { create(:project) } +  let(:participants)  { create_list(:user, 100) } + +  before do +    allow(view).to receive_messages(project: project, +                                    participants: participants) +  end + +  it 'renders lazy loaded avatars' do +    render 'shared/issuable/participants' + +    html = Nokogiri::HTML(rendered) + +    avatars = html.css('.participants-author img') + +    avatars.each do |avatar| +      expect(avatar[:class]).to include('lazy') +      expect(avatar[:src]).to eql(LazyImageTagHelper.placeholder_image) +      expect(avatar[:"data-src"]).to match('http://www.gravatar.com/avatar/') +    end +  end +end  | 
