Changeset - aa3e860a1fe0
[Not reviewed]
kallithea/controllers/api/api.py
Show inline comments
 
@@ -885,943 +885,943 @@ class ApiController(JSONRPCController):
 
            "failed to add member to user group `<user_group_name>`"
 
          }
 

	
 
        """
 
        user = get_user_or_error(userid)
 
        user_group = get_user_group_or_error(usergroupid)
 
        if not HasPermissionAny('hg.admin')():
 
            if not HasUserGroupPermissionLevel('admin')(user_group.users_group_name):
 
                raise JSONRPCError('user group `%s` does not exist' % (usergroupid,))
 

	
 
        try:
 
            ugm = UserGroupModel().add_user_to_group(user_group, user)
 
            success = True if ugm is not True else False
 
            msg = 'added member `%s` to user group `%s`' % (
 
                user.username, user_group.users_group_name
 
            )
 
            msg = msg if success else 'User is already in that group'
 
            meta.Session().commit()
 

	
 
            return dict(
 
                success=success,
 
                msg=msg
 
            )
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            raise JSONRPCError(
 
                'failed to add member to user group `%s`' % (
 
                    user_group.users_group_name,
 
                )
 
            )
 

	
 
    # permission check inside
 
    def remove_user_from_user_group(self, usergroupid, userid):
 
        """
 
        Removes a user from a user group. If user is not in given group success will
 
        be `false`. This command can be executed only
 
        using api_key belonging to user with admin rights or an admin of given user group
 

	
 
        :param usergroupid:
 
        :param userid:
 

	
 

	
 
        OUTPUT::
 

	
 
            id : <id_given_in_input>
 
            result: {
 
                      "success":  True|False,  # depends on if member is in group
 
                      "msg": "removed member <username> from user group <groupname> |
 
                              User wasn't in group"
 
                    }
 
            error:  null
 

	
 
        """
 
        user = get_user_or_error(userid)
 
        user_group = get_user_group_or_error(usergroupid)
 
        if not HasPermissionAny('hg.admin')():
 
            if not HasUserGroupPermissionLevel('admin')(user_group.users_group_name):
 
                raise JSONRPCError('user group `%s` does not exist' % (usergroupid,))
 

	
 
        try:
 
            success = UserGroupModel().remove_user_from_group(user_group, user)
 
            msg = 'removed member `%s` from user group `%s`' % (
 
                user.username, user_group.users_group_name
 
            )
 
            msg = msg if success else "User wasn't in group"
 
            meta.Session().commit()
 
            return dict(success=success, msg=msg)
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            raise JSONRPCError(
 
                'failed to remove member from user group `%s`' % (
 
                    user_group.users_group_name,
 
                )
 
            )
 

	
 
    # permission check inside
 
    def get_repo(self, repoid,
 
                 with_revision_names=False,
 
                 with_pullrequests=False):
 
        """
 
        Gets an existing repository by it's name or repository_id. Members will return
 
        either users_group or user associated to that repository. This command can be
 
        executed only using api_key belonging to user with admin
 
        rights or regular user that have at least read access to repository.
 

	
 
        :param repoid: repository name or repository id
 
        :type repoid: str or int
 

	
 
        OUTPUT::
 

	
 
          id : <id_given_in_input>
 
          result : {
 
            {
 
                "repo_id" :          "<repo_id>",
 
                "repo_name" :        "<reponame>"
 
                "repo_type" :        "<repo_type>",
 
                "clone_uri" :        "<clone_uri>",
 
                "enable_downloads":  "<bool>",
 
                "enable_statistics": "<bool>",
 
                "private":           "<bool>",
 
                "created_on" :       "<date_time_created>",
 
                "description" :      "<description>",
 
                "landing_rev":       "<landing_rev>",
 
                "last_changeset":    {
 
                                       "author":   "<full_author>",
 
                                       "date":     "<date_time_of_commit>",
 
                                       "message":  "<commit_message>",
 
                                       "raw_id":   "<raw_id>",
 
                                       "revision": "<numeric_revision>",
 
                                       "short_id": "<short_id>"
 
                                     }
 
                "owner":             "<repo_owner>",
 
                "fork_of":           "<name_of_fork_parent>",
 
                "members" :     [
 
                                  {
 
                                    "name":     "<username>",
 
                                    "type" :    "user",
 
                                    "permission" : "repository.(read|write|admin)"
 
                                  },
 
 
                                  {
 
                                    "name":     "<usergroup name>",
 
                                    "type" :    "user_group",
 
                                    "permission" : "usergroup.(read|write|admin)"
 
                                  },
 
 
                                ]
 
                 "followers":   [<user_obj>, ...],
 
                 <if with_revision_names == True>
 
                 "tags": {
 
                            "<tagname>": "<raw_id>",
 
                            ...
 
                         },
 
                 "branches": {
 
                            "<branchname>": "<raw_id>",
 
                            ...
 
                         },
 
                 "bookmarks": {
 
                            "<bookmarkname>": "<raw_id>",
 
                            ...
 
                         },
 
            }
 
          }
 
          error :  null
 

	
 
        """
 
        repo = get_repo_or_error(repoid)
 

	
 
        if not HasPermissionAny('hg.admin')():
 
            if not HasRepoPermissionLevel('read')(repo.repo_name):
 
                raise JSONRPCError('repository `%s` does not exist' % (repoid,))
 

	
 
        members = []
 
        for user in repo.repo_to_perm:
 
            perm = user.permission.permission_name
 
            user = user.user
 
            user_data = {
 
                'name': user.username,
 
                'type': "user",
 
                'permission': perm
 
            }
 
            members.append(user_data)
 

	
 
        for user_group in repo.users_group_to_perm:
 
            perm = user_group.permission.permission_name
 
            user_group = user_group.users_group
 
            user_group_data = {
 
                'name': user_group.users_group_name,
 
                'type': "user_group",
 
                'permission': perm
 
            }
 
            members.append(user_group_data)
 

	
 
        followers = [
 
            uf.user.get_api_data()
 
            for uf in repo.followers
 
        ]
 

	
 
        data = repo.get_api_data(with_revision_names=with_revision_names,
 
                                 with_pullrequests=with_pullrequests)
 
        data['members'] = members
 
        data['followers'] = followers
 
        return data
 

	
 
    # permission check inside
 
    def get_repos(self):
 
        """
 
        Lists all existing repositories. This command can be executed only using
 
        api_key belonging to user with admin rights or regular user that have
 
        admin, write or read access to repository.
 

	
 

	
 
        OUTPUT::
 

	
 
            id : <id_given_in_input>
 
            result: [
 
                      {
 
                        "repo_id" :          "<repo_id>",
 
                        "repo_name" :        "<reponame>"
 
                        "repo_type" :        "<repo_type>",
 
                        "clone_uri" :        "<clone_uri>",
 
                        "private": :         "<bool>",
 
                        "created_on" :       "<datetimecreated>",
 
                        "description" :      "<description>",
 
                        "landing_rev":       "<landing_rev>",
 
                        "owner":             "<repo_owner>",
 
                        "fork_of":           "<name_of_fork_parent>",
 
                        "enable_downloads":  "<bool>",
 
                        "enable_statistics": "<bool>",
 
                      },
 
 
                    ]
 
            error:  null
 
        """
 
        if not HasPermissionAny('hg.admin')():
 
            repos = request.authuser.get_all_user_repos()
 
        else:
 
            repos = db.Repository.query()
 

	
 
        return [
 
            repo.get_api_data()
 
            for repo in repos
 
        ]
 

	
 
    # permission check inside
 
    def get_repo_nodes(self, repoid, revision, root_path,
 
                       ret_type='all'):
 
        """
 
        returns a list of nodes and it's children in a flat list for a given path
 
        at given revision. It's possible to specify ret_type to show only `files` or
 
        `dirs`.  This command can be executed only using api_key belonging to
 
        user with admin rights or regular user that have at least read access to repository.
 

	
 
        :param repoid: repository name or repository id
 
        :type repoid: str or int
 
        :param revision: revision for which listing should be done
 
        :type revision: str
 
        :param root_path: path from which start displaying
 
        :type root_path: str
 
        :param ret_type: return type 'all|files|dirs' nodes
 
        :type ret_type: Optional(str)
 

	
 

	
 
        OUTPUT::
 

	
 
            id : <id_given_in_input>
 
            result: [
 
                      {
 
                        "name" :        "<name>"
 
                        "type" :        "<type>",
 
                      },
 
 
                    ]
 
            error:  null
 
        """
 
        repo = get_repo_or_error(repoid)
 

	
 
        if not HasPermissionAny('hg.admin')():
 
            if not HasRepoPermissionLevel('read')(repo.repo_name):
 
                raise JSONRPCError('repository `%s` does not exist' % (repoid,))
 

	
 
        _map = {}
 
        try:
 
            _d, _f = ScmModel().get_nodes(repo, revision, root_path,
 
                                          flat=False)
 
            _map = {
 
                'all': _d + _f,
 
                'files': _f,
 
                'dirs': _d,
 
            }
 
            return _map[ret_type]
 
        except KeyError:
 
            raise JSONRPCError('ret_type must be one of %s'
 
                               % (','.join(sorted(_map))))
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            raise JSONRPCError(
 
                'failed to get repo: `%s` nodes' % repo.repo_name
 
            )
 

	
 
    @HasPermissionAnyDecorator('hg.admin', 'hg.create.repository')
 
    def create_repo(self, repo_name, owner=None,
 
                    repo_type=None, description='',
 
                    private=False, clone_uri=None,
 
                    landing_rev='rev:tip',
 
                    enable_statistics=None,
 
                    enable_downloads=None,
 
                    copy_permissions=False):
 
        """
 
        Creates a repository. The repository name contains the full path, but the
 
        parent repository group must exist. For example "foo/bar/baz" require the groups
 
        "foo" and "bar" (with "foo" as parent), and create "baz" repository with
 
        "bar" as group. This command can be executed only using api_key
 
        belonging to user with admin rights or regular user that have create
 
        repository permission. Regular users cannot specify owner parameter
 

	
 
        :param repo_name: repository name
 
        :type repo_name: str
 
        :param owner: user_id or username
 
        :type owner: Optional(str)
 
        :param repo_type: 'hg' or 'git'
 
        :type repo_type: Optional(str)
 
        :param description: repository description
 
        :type description: Optional(str)
 
        :param private:
 
        :type private: bool
 
        :param clone_uri:
 
        :type clone_uri: str
 
        :param landing_rev: <rev_type>:<rev>
 
        :type landing_rev: str
 
        :param enable_downloads:
 
        :type enable_downloads: bool
 
        :param enable_statistics:
 
        :type enable_statistics: bool
 
        :param copy_permissions: Copy permission from group that repository is
 
            being created.
 
        :type copy_permissions: bool
 

	
 
        OUTPUT::
 

	
 
            id : <id_given_in_input>
 
            result: {
 
                      "msg": "Created new repository `<reponame>`",
 
                      "success": true,
 
                      "task": "<celery task id or None if done sync>"
 
                    }
 
            error:  null
 

	
 
        ERROR OUTPUT::
 

	
 
          id : <id_given_in_input>
 
          result : null
 
          error :  {
 
             'failed to create repository `<repo_name>`
 
          }
 

	
 
        """
 
        if not HasPermissionAny('hg.admin')():
 
            if owner is not None:
 
                # forbid setting owner for non-admins
 
                raise JSONRPCError(
 
                    'Only Kallithea admin can specify `owner` param'
 
                )
 
        if owner is None:
 
            owner = request.authuser.user_id
 

	
 
        owner = get_user_or_error(owner)
 

	
 
        if RepoModel().get_by_repo_name(repo_name):
 
            raise JSONRPCError("repo `%s` already exist" % repo_name)
 

	
 
        defs = db.Setting.get_default_repo_settings(strip_prefix=True)
 
        if private is None:
 
            private = defs.get('repo_private') or False
 
        if repo_type is None:
 
            repo_type = defs.get('repo_type')
 
        if enable_statistics is None:
 
            enable_statistics = defs.get('repo_enable_statistics')
 
        if enable_downloads is None:
 
            enable_downloads = defs.get('repo_enable_downloads')
 

	
 
        try:
 
            repo_name_parts = repo_name.split('/')
 
            repo_group = None
 
            if len(repo_name_parts) > 1:
 
                group_name = '/'.join(repo_name_parts[:-1])
 
                repo_group = db.RepoGroup.get_by_group_name(group_name)
 
                if repo_group is None:
 
                    raise JSONRPCError("repo group `%s` not found" % group_name)
 
            data = dict(
 
                repo_name=repo_name_parts[-1],
 
                repo_name_full=repo_name,
 
                repo_type=repo_type,
 
                repo_description=description,
 
                owner=owner,
 
                repo_private=private,
 
                clone_uri=clone_uri,
 
                repo_group=repo_group,
 
                repo_landing_rev=landing_rev,
 
                enable_statistics=enable_statistics,
 
                enable_downloads=enable_downloads,
 
                repo_copy_permissions=copy_permissions,
 
            )
 

	
 
            task = RepoModel().create(form_data=data, cur_user=owner)
 
            task = RepoModel().create(form_data=data, cur_user=owner.username)
 
            task_id = task.task_id
 
            # no commit, it's done in RepoModel, or async via celery
 
            return dict(
 
                msg="Created new repository `%s`" % (repo_name,),
 
                success=True,  # cannot return the repo data here since fork
 
                               # can be done async
 
                task=task_id
 
            )
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            raise JSONRPCError(
 
                'failed to create repository `%s`' % (repo_name,))
 

	
 
    # permission check inside
 
    def update_repo(self, repoid, name=None,
 
                    owner=None,
 
                    group=None,
 
                    description=None, private=None,
 
                    clone_uri=None, landing_rev=None,
 
                    enable_statistics=None,
 
                    enable_downloads=None):
 

	
 
        """
 
        Updates repo
 

	
 
        :param repoid: repository name or repository id
 
        :type repoid: str or int
 
        :param name:
 
        :param owner:
 
        :param group:
 
        :param description:
 
        :param private:
 
        :param clone_uri:
 
        :param landing_rev:
 
        :param enable_statistics:
 
        :param enable_downloads:
 
        """
 
        repo = get_repo_or_error(repoid)
 
        if not HasPermissionAny('hg.admin')():
 
            if not HasRepoPermissionLevel('admin')(repo.repo_name):
 
                raise JSONRPCError('repository `%s` does not exist' % (repoid,))
 

	
 
            if (name != repo.repo_name and
 
                not HasPermissionAny('hg.create.repository')()
 
            ):
 
                raise JSONRPCError('no permission to create (or move) repositories')
 

	
 
            if owner is not None:
 
                # forbid setting owner for non-admins
 
                raise JSONRPCError(
 
                    'Only Kallithea admin can specify `owner` param'
 
                )
 

	
 
        updates = {}
 
        repo_group = group
 
        if repo_group is not None:
 
            repo_group = get_repo_group_or_error(repo_group)
 
            repo_group = repo_group.group_id
 
        try:
 
            store_update(updates, name, 'repo_name')
 
            store_update(updates, repo_group, 'repo_group')
 
            store_update(updates, owner, 'owner')
 
            store_update(updates, description, 'repo_description')
 
            store_update(updates, private, 'repo_private')
 
            store_update(updates, clone_uri, 'clone_uri')
 
            store_update(updates, landing_rev, 'repo_landing_rev')
 
            store_update(updates, enable_statistics, 'repo_enable_statistics')
 
            store_update(updates, enable_downloads, 'repo_enable_downloads')
 

	
 
            RepoModel().update(repo, **updates)
 
            meta.Session().commit()
 
            return dict(
 
                msg='updated repo ID:%s %s' % (repo.repo_id, repo.repo_name),
 
                repository=repo.get_api_data()
 
            )
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            raise JSONRPCError('failed to update repo `%s`' % repoid)
 

	
 
    @HasPermissionAnyDecorator('hg.admin', 'hg.fork.repository')
 
    def fork_repo(self, repoid, fork_name,
 
                  owner=None,
 
                  description='', copy_permissions=False,
 
                  private=False, landing_rev='rev:tip'):
 
        """
 
        Creates a fork of given repo. In case of using celery this will
 
        immediately return success message, while fork is going to be created
 
        asynchronous. This command can be executed only using api_key belonging to
 
        user with admin rights or regular user that have fork permission, and at least
 
        read access to forking repository. Regular users cannot specify owner parameter.
 

	
 
        :param repoid: repository name or repository id
 
        :type repoid: str or int
 
        :param fork_name:
 
        :param owner:
 
        :param description:
 
        :param copy_permissions:
 
        :param private:
 
        :param landing_rev:
 

	
 
        INPUT::
 

	
 
            id : <id_for_response>
 
            api_key : "<api_key>"
 
            args:     {
 
                        "repoid" :          "<reponame or repo_id>",
 
                        "fork_name":        "<forkname>",
 
                        "owner":            "<username or user_id = Optional(=apiuser)>",
 
                        "description":      "<description>",
 
                        "copy_permissions": "<bool>",
 
                        "private":          "<bool>",
 
                        "landing_rev":      "<landing_rev>"
 
                      }
 

	
 
        OUTPUT::
 

	
 
            id : <id_given_in_input>
 
            result: {
 
                      "msg": "Created fork of `<reponame>` as `<forkname>`",
 
                      "success": true,
 
                      "task": "<celery task id or None if done sync>"
 
                    }
 
            error:  null
 

	
 
        """
 
        repo = get_repo_or_error(repoid)
 
        repo_name = repo.repo_name
 

	
 
        _repo = RepoModel().get_by_repo_name(fork_name)
 
        if _repo:
 
            type_ = 'fork' if _repo.fork else 'repo'
 
            raise JSONRPCError("%s `%s` already exist" % (type_, fork_name))
 

	
 
        if HasPermissionAny('hg.admin')():
 
            pass
 
        elif HasRepoPermissionLevel('read')(repo.repo_name):
 
            if owner is not None:
 
                # forbid setting owner for non-admins
 
                raise JSONRPCError(
 
                    'Only Kallithea admin can specify `owner` param'
 
                )
 

	
 
            if not HasPermissionAny('hg.create.repository')():
 
                raise JSONRPCError('no permission to create repositories')
 
        else:
 
            raise JSONRPCError('repository `%s` does not exist' % (repoid,))
 

	
 
        if owner is None:
 
            owner = request.authuser.user_id
 

	
 
        owner = get_user_or_error(owner)
 

	
 
        try:
 
            fork_name_parts = fork_name.split('/')
 
            repo_group = None
 
            if len(fork_name_parts) > 1:
 
                group_name = '/'.join(fork_name_parts[:-1])
 
                repo_group = db.RepoGroup.get_by_group_name(group_name)
 
                if repo_group is None:
 
                    raise JSONRPCError("repo group `%s` not found" % group_name)
 

	
 
            form_data = dict(
 
                repo_name=fork_name_parts[-1],
 
                repo_name_full=fork_name,
 
                repo_group=repo_group,
 
                repo_type=repo.repo_type,
 
                description=description,
 
                private=private,
 
                copy_permissions=copy_permissions,
 
                landing_rev=landing_rev,
 
                update_after_clone=False,
 
                fork_parent_id=repo.repo_id,
 
            )
 
            task = RepoModel().create_fork(form_data, cur_user=owner)
 
            task = RepoModel().create_fork(form_data, cur_user=owner.username)
 
            # no commit, it's done in RepoModel, or async via celery
 
            task_id = task.task_id
 
            return dict(
 
                msg='Created fork of `%s` as `%s`' % (repo.repo_name,
 
                                                      fork_name),
 
                success=True,  # cannot return the repo data here since fork
 
                               # can be done async
 
                task=task_id
 
            )
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            raise JSONRPCError(
 
                'failed to fork repository `%s` as `%s`' % (repo_name,
 
                                                            fork_name)
 
            )
 

	
 
    # permission check inside
 
    def delete_repo(self, repoid, forks=''):
 
        """
 
        Deletes a repository. This command can be executed only using api_key belonging
 
        to user with admin rights or regular user that have admin access to repository.
 
        When `forks` param is set it's possible to detach or delete forks of deleting
 
        repository
 

	
 
        :param repoid: repository name or repository id
 
        :type repoid: str or int
 
        :param forks: `detach` or `delete`, what do do with attached forks for repo
 
        :type forks: Optional(str)
 

	
 
        OUTPUT::
 

	
 
            id : <id_given_in_input>
 
            result: {
 
                      "msg": "Deleted repository `<reponame>`",
 
                      "success": true
 
                    }
 
            error:  null
 

	
 
        """
 
        repo = get_repo_or_error(repoid)
 

	
 
        if not HasPermissionAny('hg.admin')():
 
            if not HasRepoPermissionLevel('admin')(repo.repo_name):
 
                raise JSONRPCError('repository `%s` does not exist' % (repoid,))
 

	
 
        try:
 
            handle_forks = forks
 
            _forks_msg = ''
 
            _forks = [f for f in repo.forks]
 
            if handle_forks == 'detach':
 
                _forks_msg = ' ' + 'Detached %s forks' % len(_forks)
 
            elif handle_forks == 'delete':
 
                _forks_msg = ' ' + 'Deleted %s forks' % len(_forks)
 
            elif _forks:
 
                raise JSONRPCError(
 
                    'Cannot delete `%s` it still contains attached forks' %
 
                    (repo.repo_name,)
 
                )
 

	
 
            RepoModel().delete(repo, forks=forks)
 
            meta.Session().commit()
 
            return dict(
 
                msg='Deleted repository `%s`%s' % (repo.repo_name, _forks_msg),
 
                success=True
 
            )
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            raise JSONRPCError(
 
                'failed to delete repository `%s`' % (repo.repo_name,)
 
            )
 

	
 
    @HasPermissionAnyDecorator('hg.admin')
 
    def grant_user_permission(self, repoid, userid, perm):
 
        """
 
        Grant permission for user on given repository, or update existing one
 
        if found. This command can be executed only using api_key belonging to user
 
        with admin rights.
 

	
 
        :param repoid: repository name or repository id
 
        :type repoid: str or int
 
        :param userid:
 
        :param perm: (repository.(none|read|write|admin))
 
        :type perm: str
 

	
 
        OUTPUT::
 

	
 
            id : <id_given_in_input>
 
            result: {
 
                      "msg" : "Granted perm: `<perm>` for user: `<username>` in repo: `<reponame>`",
 
                      "success": true
 
                    }
 
            error:  null
 
        """
 
        repo = get_repo_or_error(repoid)
 
        user = get_user_or_error(userid)
 
        perm = get_perm_or_error(perm)
 

	
 
        try:
 

	
 
            RepoModel().grant_user_permission(repo=repo, user=user, perm=perm)
 

	
 
            meta.Session().commit()
 
            return dict(
 
                msg='Granted perm: `%s` for user: `%s` in repo: `%s`' % (
 
                    perm.permission_name, user.username, repo.repo_name
 
                ),
 
                success=True
 
            )
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            raise JSONRPCError(
 
                'failed to edit permission for user: `%s` in repo: `%s`' % (
 
                    userid, repoid
 
                )
 
            )
 

	
 
    @HasPermissionAnyDecorator('hg.admin')
 
    def revoke_user_permission(self, repoid, userid):
 
        """
 
        Revoke permission for user on given repository. This command can be executed
 
        only using api_key belonging to user with admin rights.
 

	
 
        :param repoid: repository name or repository id
 
        :type repoid: str or int
 
        :param userid:
 

	
 
        OUTPUT::
 

	
 
            id : <id_given_in_input>
 
            result: {
 
                      "msg" : "Revoked perm for user: `<username>` in repo: `<reponame>`",
 
                      "success": true
 
                    }
 
            error:  null
 

	
 
        """
 

	
 
        repo = get_repo_or_error(repoid)
 
        user = get_user_or_error(userid)
 
        try:
 
            RepoModel().revoke_user_permission(repo=repo, user=user)
 
            meta.Session().commit()
 
            return dict(
 
                msg='Revoked perm for user: `%s` in repo: `%s`' % (
 
                    user.username, repo.repo_name
 
                ),
 
                success=True
 
            )
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            raise JSONRPCError(
 
                'failed to edit permission for user: `%s` in repo: `%s`' % (
 
                    userid, repoid
 
                )
 
            )
 

	
 
    # permission check inside
 
    def grant_user_group_permission(self, repoid, usergroupid, perm):
 
        """
 
        Grant permission for user group on given repository, or update
 
        existing one if found. This command can be executed only using
 
        api_key belonging to user with admin rights.
 

	
 
        :param repoid: repository name or repository id
 
        :type repoid: str or int
 
        :param usergroupid: id of usergroup
 
        :type usergroupid: str or int
 
        :param perm: (repository.(none|read|write|admin))
 
        :type perm: str
 

	
 
        OUTPUT::
 

	
 
          id : <id_given_in_input>
 
          result : {
 
            "msg" : "Granted perm: `<perm>` for group: `<usersgroupname>` in repo: `<reponame>`",
 
            "success": true
 

	
 
          }
 
          error :  null
 

	
 
        ERROR OUTPUT::
 

	
 
          id : <id_given_in_input>
 
          result : null
 
          error :  {
 
            "failed to edit permission for user group: `<usergroup>` in repo `<repo>`'
 
          }
 

	
 
        """
 
        repo = get_repo_or_error(repoid)
 
        perm = get_perm_or_error(perm)
 
        user_group = get_user_group_or_error(usergroupid)
 
        if not HasPermissionAny('hg.admin')():
 
            if not HasRepoPermissionLevel('admin')(repo.repo_name):
 
                raise JSONRPCError('repository `%s` does not exist' % (repoid,))
 

	
 
            if not HasUserGroupPermissionLevel('read')(user_group.users_group_name):
 
                raise JSONRPCError('user group `%s` does not exist' % (usergroupid,))
 

	
 
        try:
 
            RepoModel().grant_user_group_permission(
 
                repo=repo, group_name=user_group, perm=perm)
 

	
 
            meta.Session().commit()
 
            return dict(
 
                msg='Granted perm: `%s` for user group: `%s` in '
 
                    'repo: `%s`' % (
 
                        perm.permission_name, user_group.users_group_name,
 
                        repo.repo_name
 
                    ),
 
                success=True
 
            )
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            raise JSONRPCError(
 
                'failed to edit permission for user group: `%s` in '
 
                'repo: `%s`' % (
 
                    usergroupid, repo.repo_name
 
                )
 
            )
 

	
 
    # permission check inside
 
    def revoke_user_group_permission(self, repoid, usergroupid):
 
        """
 
        Revoke permission for user group on given repository. This command can be
 
        executed only using api_key belonging to user with admin rights.
 

	
 
        :param repoid: repository name or repository id
 
        :type repoid: str or int
 
        :param usergroupid:
 

	
 
        OUTPUT::
 

	
 
            id : <id_given_in_input>
 
            result: {
 
                      "msg" : "Revoked perm for group: `<usersgroupname>` in repo: `<reponame>`",
 
                      "success": true
 
                    }
 
            error:  null
 
        """
 
        repo = get_repo_or_error(repoid)
 
        user_group = get_user_group_or_error(usergroupid)
 
        if not HasPermissionAny('hg.admin')():
 
            if not HasRepoPermissionLevel('admin')(repo.repo_name):
 
                raise JSONRPCError('repository `%s` does not exist' % (repoid,))
 

	
 
            if not HasUserGroupPermissionLevel('read')(user_group.users_group_name):
 
                raise JSONRPCError('user group `%s` does not exist' % (usergroupid,))
 

	
 
        try:
 
            RepoModel().revoke_user_group_permission(
 
                repo=repo, group_name=user_group)
 

	
 
            meta.Session().commit()
 
            return dict(
 
                msg='Revoked perm for user group: `%s` in repo: `%s`' % (
 
                    user_group.users_group_name, repo.repo_name
 
                ),
 
                success=True
 
            )
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            raise JSONRPCError(
 
                'failed to edit permission for user group: `%s` in '
 
                'repo: `%s`' % (
 
                    user_group.users_group_name, repo.repo_name
 
                )
 
            )
 

	
 
    @HasPermissionAnyDecorator('hg.admin')
 
    def get_repo_group(self, repogroupid):
 
        """
 
        Returns given repo group together with permissions, and repositories
 
        inside the group
 

	
 
        :param repogroupid: id/name of repository group
 
        :type repogroupid: str or int
 
        """
 
        repo_group = get_repo_group_or_error(repogroupid)
 

	
 
        members = []
 
        for user in repo_group.repo_group_to_perm:
 
            perm = user.permission.permission_name
 
            user = user.user
 
            user_data = {
 
                'name': user.username,
 
                'type': "user",
 
                'permission': perm
 
            }
 
            members.append(user_data)
 

	
 
        for user_group in repo_group.users_group_to_perm:
 
            perm = user_group.permission.permission_name
 
            user_group = user_group.users_group
 
            user_group_data = {
 
                'name': user_group.users_group_name,
 
                'type': "user_group",
 
                'permission': perm
 
            }
 
            members.append(user_group_data)
 

	
 
        data = repo_group.get_api_data()
 
        data["members"] = members
 
        return data
 

	
 
    @HasPermissionAnyDecorator('hg.admin')
 
    def get_repo_groups(self):
 
        """
 
        Returns all repository groups
 

	
 
        """
 
        return [
 
            repo_group.get_api_data()
 
            for repo_group in db.RepoGroup.query()
 
        ]
 

	
 
    @HasPermissionAnyDecorator('hg.admin')
 
    def create_repo_group(self, group_name, description='',
 
                          owner=None,
 
                          parent=None,
 
                          copy_permissions=False):
 
        """
 
        Creates a repository group. This command can be executed only using
 
        api_key belonging to user with admin rights.
 

	
 
        :param group_name:
 
        :type group_name:
 
        :param description:
 
        :type description:
 
        :param owner:
 
        :type owner:
 
        :param parent:
 
        :type parent:
 
        :param copy_permissions:
 
        :type copy_permissions:
 

	
 
        OUTPUT::
 

	
 
          id : <id_given_in_input>
 
          result : {
 
              "msg": "created new repo group `<repo_group_name>`"
 
              "repo_group": <repogroup_object>
 
          }
 
          error :  null
 

	
 
        ERROR OUTPUT::
 

	
 
          id : <id_given_in_input>
 
          result : null
 
          error :  {
 
            failed to create repo group `<repogroupid>`
 
          }
 

	
 
        """
 
        if db.RepoGroup.get_by_group_name(group_name):
 
            raise JSONRPCError("repo group `%s` already exist" % (group_name,))
 

	
 
        if owner is None:
 
            owner = request.authuser.user_id
 
        group_description = description
 
        parent_group = None
 
        if parent is not None:
 
            parent_group = get_repo_group_or_error(parent)
 

	
 
        try:
 
            repo_group = RepoGroupModel().create(
 
                group_name=group_name,
 
                group_description=group_description,
 
                owner=owner,
 
                parent=parent_group,
 
                copy_permissions=copy_permissions
 
            )
 
            meta.Session().commit()
 
            return dict(
 
                msg='created new repo group `%s`' % group_name,
 
                repo_group=repo_group.get_api_data()
 
            )
 
        except Exception:
 

	
 
            log.error(traceback.format_exc())
 
            raise JSONRPCError('failed to create repo group `%s`' % (group_name,))
 

	
 
    @HasPermissionAnyDecorator('hg.admin')
 
    def update_repo_group(self, repogroupid, group_name=None,
kallithea/i18n/de/LC_MESSAGES/kallithea.po
Show inline comments
 
@@ -1663,769 +1663,769 @@ msgstr "Vorgabe"
 

	
 
msgid "Revoke"
 
msgstr "Zurückziehen"
 

	
 
msgid "Add new"
 
msgstr "Neues hinzufügen"
 

	
 
msgid "Apply to children"
 
msgstr "Auf untergeordnete Elemente anwenden"
 

	
 
msgid "Both"
 
msgstr "Beide"
 

	
 
msgid ""
 
"Set or revoke permission to all children of that group, including non-"
 
"private repositories and other groups if selected."
 
msgstr ""
 
"Setzen oder zurückziehen von Berechtigungen bezüglich aller "
 
"untergeordneten Elemente, einschließlich nicht-privater Repositories und "
 
"anderer Gruppen, falls ausgewählt."
 

	
 
msgid "Remove this group"
 
msgstr "Diese Gruppe löschen"
 

	
 
msgid "Confirm to delete this group"
 
msgstr "Löschen der Gruppe bestätigen"
 

	
 
msgid "Repository group %s"
 
msgstr "Repository-Gruppe %s"
 

	
 
msgid "Repository Groups Administration"
 
msgstr "Repositorygruppenverwaltung"
 

	
 
msgid "Number of Top-level Repositories"
 
msgstr "Anzahl der Repositories oberster Ebene"
 

	
 
msgid "Clone remote repository"
 
msgstr "Entferntes Repository clonen"
 

	
 
msgid ""
 
"Optional: URL of a remote repository. If set, the repository will be "
 
"created as a clone from this URL."
 
msgstr ""
 
"Optional: URL eines entfernten Repositories. Falls gesetzt, dann wird das "
 
"Repository als Clon von dieser URL erstellt."
 

	
 
msgid ""
 
"Keep it short and to the point. Use a README file for longer descriptions."
 
msgstr ""
 
"Halten Sie es kurz und prägnant. Benutzen Sie eine README-Datei für "
 
"längere Beschreibungen."
 

	
 
msgid "Optionally select a group to put this repository into."
 
msgstr ""
 
"Wähle bei Bedarf eine Gruppe, der dieses Repository zugeordnet werden "
 
"soll."
 

	
 
msgid "Type of repository to create."
 
msgstr "Repository Typ der erstellt werden soll."
 

	
 
msgid "Landing revision"
 
msgstr "Start Revision"
 

	
 
msgid ""
 
"Default revision for files page, downloads, full text search index and "
 
"readme generation"
 
msgstr ""
 
"Vorgabe-Revision für Datei-Seiten, Downloads, Volltext-Indizierung und "
 
"Doku-Erzeugung"
 

	
 
msgid "%s Creating Repository"
 
msgstr "%s Erstelle Repository"
 

	
 
msgid "Creating repository"
 
msgstr "Repository erzeugen"
 

	
 
msgid ""
 
"Repository \"%(repo_name)s\" is being created, you will be redirected "
 
"when this process is finished.repo_name"
 
msgstr ""
 
"Repository \"%(repo_name)s\" wird erzeugt. Sie werden dorthin umgeleitet, "
 
"sobald der Prozess abgeschlossen ist."
 

	
 
msgid ""
 
"We're sorry but error occurred during this operation. Please check your "
 
"Kallithea server logs, or contact administrator."
 
msgstr ""
 
"Bedauerlicherweise ist bei dieser Operation ein Fehler aufgetreten. Bitte "
 
"prüfen Sie die Kallithea-Server-Logs or kontaktieren Sie die "
 
"Administrierenden."
 

	
 
msgid "%s Repository Settings"
 
msgstr "%s Repositoryeinstellungen"
 

	
 
msgid "Extra Fields"
 
msgstr "Extra-Feld"
 

	
 
msgid "Remote"
 
msgstr "Entfernt"
 

	
 
msgid "Statistics"
 
msgstr "Statistiken"
 

	
 
msgid "Parent"
 
msgstr "Übergeordnet"
 

	
 
msgid "Set"
 
msgstr "Setzen"
 

	
 
msgid "Manually set this repository as a fork of another from the list."
 
msgstr ""
 
"Manuell dieses Repository als Fork einem anderen aus der List zuordnen."
 

	
 
msgid "Public Journal Visibility"
 
msgstr "Sichtbarkeit des öffentlichen Logbuches"
 

	
 
msgid "Remove from public journal"
 
msgstr "Entferne aus dem Öffentlichen Logbuch"
 

	
 
msgid "Add to Public Journal"
 
msgstr "Zum öffentlichen Logbuch hinzufügen"
 

	
 
msgid ""
 
"All actions done in this repository will be visible to everyone in the "
 
"public journal."
 
msgstr ""
 
"Alle Aktionen, die in diesem Repository ausgeführt wurden, sind im "
 
"öffentlichen Logbuch für jeden einsehbar."
 

	
 
msgid "Confirm to delete this repository: %s"
 
msgstr "Löschen des Repositorys bestätigen: %s"
 

	
 
msgid "Delete this Repository"
 
msgstr "Dieses Repository löschen"
 

	
 
msgid "This repository has %s fork"
 
msgid_plural "This repository has %s forks"
 
msgstr[0] "Dieses Repository hat %s Fork"
 
msgstr[1] "Dieses Repository hat %s Forks"
 

	
 
msgid "Detach forks"
 
msgstr "Fork abtrennen"
 

	
 
msgid "Delete forks"
 
msgstr "Forks löschen"
 

	
 
msgid ""
 
"The deleted repository will be moved away and hidden until the "
 
"administrator expires it. The administrator can both permanently delete "
 
"it or restore it."
 
msgstr ""
 
"Das gelöschte Repository wird beiseitegelegt und versteckt, bis ein "
 
"Administrierender es verfallen lässt. Der Administrierende kann es sowohl "
 
"permanent löschen oder wiederherstellen."
 

	
 
msgid "Label"
 
msgstr "Bezeichnung"
 

	
 
msgid "Key"
 
msgstr "Schlüssel"
 

	
 
msgid "Confirm to delete this field: %s"
 
msgstr "Löschen des Felds bestätigen: %s"
 

	
 
msgid "New field key"
 
msgstr "Eindeutiges Kennzeichen des neuen Felds"
 

	
 
msgid "New field label"
 
msgstr "Neue Bezeichnung des Felds"
 

	
 
msgid "Enter short label"
 
msgstr "Eingabe einer kurzen Bezeichnung"
 

	
 
msgid "New field description"
 
msgstr "Beschreibung des neuen Felds"
 

	
 
msgid "Enter description of a field"
 
msgstr "Beschreibung eines Felds eingeben"
 

	
 
msgid "Extra fields are disabled."
 
msgstr "Zusatzfelder sind deaktiviert."
 

	
 
msgid "Private Repository"
 
msgstr "Privates Repository"
 

	
 
msgid "Fork of repository"
 
msgstr "Fork des Repository"
 

	
 
msgid "Remote repository URL"
 
msgstr "URL des entfernten Repository"
 

	
 
msgid "Pull Changes from Remote Repository"
 
msgstr "Hole Änderungen vom entfernten Repository"
 

	
 
msgid "Confirm to pull changes from remote repository."
 
msgstr "Bestätige die Abholung von Änderungen vom entfernten Repository."
 

	
 
msgid "This repository does not have a remote repository URL."
 
msgstr "Für dieses Repository ist keine nicht-lokale URL angegeben."
 

	
 
msgid ""
 
"In case this repository is renamed or moved into another group the "
 
"repository URL changes.\n"
 
"                               Using the above permanent URL guarantees "
 
"that this repository always will be accessible on that URL.\n"
 
"                               This is useful for CI systems, or any "
 
"other cases that you need to hardcode the URL into a 3rd party service."
 
msgstr ""
 
"Falls dieses Repository umbenannt oder in eine andere Gruppe verschoben "
 
"wird, ändert sich seine URL.\n"
 
"Die Verwendung der permanenten URL garantiert, dass dieses Repository "
 
"immer über diese URL erreichbar sein wird.\n"
 
"Dies ist insbesondere für CI-Systeme oder in Fällen nützlich, in denen "
 
"die URL des Repositories bei Dritten dauerhaft eingetragen wird."
 

	
 
msgid "Remote repository"
 
msgstr "Entferntes Repository"
 

	
 
msgid "Repository URL"
 
msgstr "Repository URL"
 

	
 
msgid ""
 
"Optional: URL of a remote repository. If set, the repository can be "
 
"pulled from this URL."
 
msgstr ""
 
"Optional: URL eines entfernten Repositories. Falls gesetzt, dann kann das "
 
"Repository von dieser URL bezogen werden."
 

	
 
msgid "Default revision for files page, downloads, whoosh and readme"
 
msgstr "Standardrevision für Dateiseite, Downloads, Whoosh und Readme"
 

	
 
msgid "Type name of user"
 
msgstr "Typname des Benutzers"
 

	
 
msgid "Change owner of this repository."
 
msgstr "Besitzer des Repositorys ändern."
 

	
 
msgid "Processed commits"
 
msgstr "Verarbeitete Commits"
 

	
 
msgid "Processed progress"
 
msgstr "Verarbeiteter Fortschritt"
 

	
 
msgid "Reset Statistics"
 
msgstr "Statistiken zurücksetzen"
 

	
 
msgid "Confirm to remove current statistics."
 
msgstr "Bestätigen Sie, um die aktuellen Statistiken zu entfernen."
 

	
 
msgid "Repositories Administration"
 
msgstr "Repositoryverwaltung"
 

	
 
msgid "State"
 
msgstr "Zustand"
 

	
 
msgid "Settings Administration"
 
msgstr "Einstellungsverwaltung"
 

	
 
msgid "VCS"
 
msgstr "VCS"
 

	
 
msgid "Remap and Rescan"
 
msgstr "Neu zuordnen und neu scannen"
 

	
 
msgid "Visual"
 
msgstr "Visuell"
 

	
 
msgid "Hooks"
 
msgstr "Hooks"
 

	
 
msgid "Full Text Search"
 
msgstr "Volltextsuche"
 

	
 
msgid "System Info"
 
msgstr "Systeminfo"
 

	
 
msgid "Send test email to"
 
msgstr "Test-E-Mail senden an"
 

	
 
msgid "Send"
 
msgstr "Senden"
 

	
 
msgid "Site branding"
 
msgstr "Website-Branding"
 

	
 
msgid "Set a custom title for your Kallithea Service."
 
msgstr ""
 
"Legen Sie einen benutzerdefinierten Titel für Ihren Kallithea-Dienst fest."
 

	
 
msgid "HTTP authentication realm"
 
msgstr "HTTP-Authentifizierungsrealm"
 

	
 
msgid "HTML/JavaScript/CSS customization block"
 
msgstr "HTML/JavaScript/CSS Anpassungsblock"
 

	
 
msgid "ReCaptcha public key"
 
msgstr "ReCaptcha öffentlicher Schlüssel"
 

	
 
msgid "Public key for reCaptcha system."
 
msgstr "Öffentlicher Schlüssel für das reCaptcha-System."
 

	
 
msgid "ReCaptcha private key"
 
msgstr "ReCaptcha privater Schlüssel"
 

	
 
msgid ""
 
"Private key for reCaptcha system. Setting this value will enable captcha "
 
"on registration."
 
msgstr ""
 
"Privater Schlüssel für das reCaptcha-System. Wenn Sie diesen Wert "
 
"einstellen, wird das Captcha bei der Registrierung aktiviert."
 

	
 
msgid "Save Settings"
 
msgstr "Einstellungen speichern"
 

	
 
msgid "Built-in Mercurial Hooks (Read-Only)"
 
msgstr "Eingebaute Mercurial Hooks (Read -Only)"
 

	
 
msgid "Custom Hooks"
 
msgstr "Benutzerdefinierte Hooks"
 

	
 
msgid ""
 
"Hooks can be used to trigger actions on certain events such as push / "
 
"pull. They can trigger Python functions or external applications."
 
msgstr ""
 
"Mit Hilfe von Hooks können bei bestimmten Ereignissen, wie z.B. Push / "
 
"Pull, Aktionen ausgelöst werden. Sie können Python-Funktionen oder "
 
"externe Anwendungen auslösen."
 

	
 
msgid "Failed to remove hook"
 
msgstr "Hook konnte nicht entfernt werden"
 

	
 
msgid "Delete records of missing repositories"
 
msgstr "Datensätze fehlender Repositories löschen"
 

	
 
msgid ""
 
"Check this option to remove all comments, pull requests and other records "
 
"related to repositories that no longer exist in the filesystem."
 
msgstr ""
 
"Aktivieren Sie diese Option, um alle Kommentare, Pull-Requests und andere "
 
"Datensätze zu entfernen, die sich auf Repositories beziehen, die nicht "
 
"mehr im Dateisystem vorhanden sind."
 

	
 
msgid "Invalidate cache for all repositories"
 
msgstr "Cache für alle Repositories entwerten"
 

	
 
msgid "Check this to reload data and clear cache keys for all repositories."
 
msgstr ""
 
"Aktivieren Sie dies, um Daten neu zu laden und Cache-Schlüssel für alle "
 
"Repositories zu löschen."
 

	
 
msgid "Install Git hooks"
 
msgstr "Git-Hooks installieren"
 

	
 
msgid ""
 
"Verify if Kallithea's Git hooks are installed for each repository. "
 
"Current hooks will be updated to the latest version."
 
msgstr ""
 
"Überprüfen Sie, ob die Git-Hooks von Kallithea für jedes Repository "
 
"installiert sind. Aktuelle Hooks werden auf die neueste Version "
 
"aktualisiert."
 

	
 
msgid "Overwrite existing Git hooks"
 
msgstr "Bestehende Git-Hooks überschreiben"
 

	
 
msgid ""
 
"If installing Git hooks, overwrite any existing hooks, even if they do "
 
"not seem to come from Kallithea. WARNING: This operation will destroy any "
 
"custom git hooks you may have deployed by hand!"
 
msgstr ""
 
"Wenn Sie Git-Hooks installieren, überschreiben Sie alle vorhandenen "
 
"Hooks, auch wenn sie nicht von Kallithea zu kommen scheinen. WARNUNG: "
 
"Diese Operation zerstört alle benutzerdefinierten Git-Hooks, die Sie "
 
"möglicherweise von Hand bereitgestellt haben!"
 

	
 
msgid "Rescan Repositories"
 
msgstr "Repositories erneut scannen"
 

	
 
msgid "Index build option"
 
msgstr "Option zum Aufbau eines Index"
 

	
 
msgid "Build from scratch"
 
msgstr "Von Grund auf neu bauen"
 

	
 
msgid ""
 
"This option completely reindexeses all of the repositories for proper "
 
"This option completely reindexes all of the repositories for proper "
 
"fulltext search capabilities."
 
msgstr ""
 
"Diese Option führt zu einer vollständigen Neuindizierung aller "
 
"Repositories für eine korrekte Volltextsuche."
 

	
 
msgid "Reindex"
 
msgstr "Erneut Indizieren"
 

	
 
msgid "Checking for updates..."
 
msgstr "Prüfe auf Updates..."
 

	
 
msgid "Kallithea version"
 
msgstr "Kallithea-Version"
 

	
 
msgid "Kallithea configuration file"
 
msgstr "Kallithea Konfigurationsdatei"
 

	
 
msgid "Python version"
 
msgstr "Python-Version"
 

	
 
msgid "Platform"
 
msgstr "Plattform"
 

	
 
msgid "Git version"
 
msgstr "Git-Version"
 

	
 
msgid "Git path"
 
msgstr "Git-Pfad"
 

	
 
msgid "Python Packages"
 
msgstr "Python-Pakete"
 

	
 
msgid "Show repository size after push"
 
msgstr "Zeigt die Größe des Repositories nach dem Push an"
 

	
 
msgid "Update repository after push (hg update)"
 
msgstr "Repository nach dem Push aktualisieren (hg update)"
 

	
 
msgid "Mercurial extensions"
 
msgstr "Mercurial-Erweiterungen"
 

	
 
msgid "Enable largefiles extension"
 
msgstr "Erweiterung largefiles aktivieren"
 

	
 
msgid "Location of repositories"
 
msgstr "Ort der Repositories"
 

	
 
msgid ""
 
"Click to unlock. You must restart Kallithea in order to make this setting "
 
"take effect."
 
msgstr ""
 
"Zum Entsperren klicken. Sie müssen Kallithea neu starten, damit diese "
 
"Einstellung wirksam wird."
 

	
 
msgid ""
 
"Filesystem location where repositories are stored. After changing this "
 
"value, a restart and rescan of the repository folder are both required."
 
msgstr ""
 
"Dateisystem-Speicherort, an dem die Repositories gespeichert sind. Nach "
 
"dem Ändern dieses Wertes sind sowohl ein Neustart als auch ein erneuter "
 
"Scan des Repository-Ordners erforderlich."
 

	
 
msgid "General"
 
msgstr "Allgemein"
 

	
 
msgid "Use repository extra fields"
 
msgstr "Zusätzliche Repository-Felder verwenden"
 

	
 
msgid "Allows storing additional customized fields per repository."
 
msgstr ""
 
"Ermöglicht die Speicherung zusätzlicher benutzerdefinierter Felder pro "
 
"Repository."
 

	
 
msgid "Show Kallithea version"
 
msgstr "Zeige Kallithea-Version"
 

	
 
msgid ""
 
"Shows or hides a version number of Kallithea displayed in the footer."
 
msgstr ""
 
"Zeigt oder verbirgt eine Versionsnummer von Kallithea, die in der "
 
"Fußzeile angezeigt wird."
 

	
 
msgid "Show user Gravatars"
 
msgstr "Benutzer Gravatare anzeigen"
 

	
 
msgid ""
 
"Gravatar URL allows you to use another avatar server application.\n"
 
"                                                        The following "
 
"variables of the URL will be replaced accordingly.\n"
 
"                                                        {scheme}    "
 
"'http' or 'https' sent from running Kallithea server,\n"
 
"                                                        {email}     user "
 
"email,\n"
 
"                                                        {md5email}  md5 "
 
"hash of the user email (like at gravatar.com),\n"
 
"                                                        {size}      size "
 
"of the image that is expected from the server application,\n"
 
"                                                        {netloc}    "
 
"network location/server host of running Kallithea server"
 
msgstr ""
 
"Gravatar URL ermöglicht es Ihnen, eine andere Avatar-Serveranwendung zu "
 
"verwenden.\n"
 
"                                                        Die folgenden "
 
"Variablen der URL werden entsprechend ersetzt.\n"
 
"                                                        {scheme}    "
 
"'http' oder'https', die vom laufenden Kallithea-Server gesendet werden,\n"
 
"                                                        {email}    "
 
"Benutzer-E-Mail,\n"
 
"                                                        {md5email}  md5 "
 
"Hash der Benutzer-E-Mail (wie bei gravatar.com),\n"
 
"                                                        {size}       "
 
"Größe des Bildes, das von der Serveranwendung erwartet wird,\n"
 
"                                                        {netloc}    "
 
"Netzwerkstandort/Server-Host des laufenden Kallithea-Servers"
 

	
 
msgid ""
 
"Number of items displayed in the repository pages before pagination is "
 
"shown."
 
msgstr ""
 
"Anzahl der Elemente, die auf den Repository-Seiten angezeigt werden, "
 
"bevor der Seitenumbruch angezeigt wird."
 

	
 
msgid "Admin page size"
 
msgstr "Größe der Admin-Seite"
 

	
 
msgid ""
 
"Number of items displayed in the admin pages grids before pagination is "
 
"shown."
 
msgstr ""
 
"Anzahl der Elemente, die in den Gittern der Admin-Seiten angezeigt "
 
"werden, bevor der Seitenumbruch angezeigt wird."
 

	
 
msgid "Icons"
 
msgstr "Icons"
 

	
 
msgid "Show public repository icon on repositories"
 
msgstr "Öffentliches Repository-Symbol in Repositories anzeigen"
 

	
 
msgid "Show private repository icon on repositories"
 
msgstr "Privates Repository-Symbol in Repositories anzeigen"
 

	
 
msgid "Show public/private icons next to repository names."
 
msgstr ""
 
"Zeigt öffentliche/private Symbole neben den Namen der Repositories an."
 

	
 
msgid ""
 
"Parses meta tags from the repository description field and turns them "
 
"into colored tags."
 
msgstr ""
 
"Analysiert Meta-Tags aus dem Beschreibungsfeld des Repositorys und "
 
"verwandelt sie in farbige Tags."
 

	
 
msgid "Stylify recognised meta tags:"
 
msgstr "Erkannte Meta-Tags stilisieren:"
 

	
 
msgid "Add user group"
 
msgstr "Benutzergruppe hinzufügen"
 

	
 
msgid "User Groups"
 
msgstr "Benutzergruppen"
 

	
 
msgid "Add User Group"
 
msgstr "Benutzergruppe hinzufügen"
 

	
 
msgid "Short, optional description for this user group."
 
msgstr "Kurze, optionale Beschreibung für diese Benutzergruppe."
 

	
 
msgid "Active"
 
msgstr "Aktiv"
 

	
 
msgid "User Group: %s"
 
msgstr "Benutzergruppe: %s"
 

	
 
msgid "Members"
 
msgstr "Mitglieder"
 

	
 
msgid "Confirm to delete this user group: %s"
 
msgstr "Bestätigen, um diese Benutzergruppe zu löschen: %s"
 

	
 
msgid "Delete this user group"
 
msgstr "Diese Benutzergruppe löschen"
 

	
 
msgid "No members yet"
 
msgstr "Noch keine Mitglieder"
 

	
 
msgid "Chosen group members"
 
msgstr "Ausgewählte Grppenmitglieder"
 

	
 
msgid "Available members"
 
msgstr "Verfügbare Mitglieder"
 

	
 
msgid "User Groups Administration"
 
msgstr "Benutzergruppenverwaltung"
 

	
 
msgid "Add user"
 
msgstr "Benutzer hinzufügen"
 

	
 
msgid "Users"
 
msgstr "Benutzer"
 

	
 
msgid "Add User"
 
msgstr "Benutzer hinzufügen"
 

	
 
msgid "Password confirmation"
 
msgstr "Passwortbestätigung"
 

	
 
msgid "Emails"
 
msgstr "E-Mails"
 

	
 
msgid "User: %s"
 
msgstr "Benutzer: %s"
 

	
 
msgid "Last Login"
 
msgstr "Letzter Login"
 

	
 
msgid "Member of User Groups"
 
msgstr "Mitglieder der Benutzergruppe"
 

	
 
msgid "Delete this user"
 
msgstr "Diesen Benutzer löschen"
 

	
 
msgid "Users Administration"
 
msgstr "Benutzerverwaltung"
 

	
 
msgid "Auth Type"
 
msgstr "Authentifizierungsart"
 

	
 
msgid "Support"
 
msgstr "Support"
 

	
 
msgid "Mercurial repository"
 
msgstr "Mercurial Repository"
 

	
 
msgid "Git repository"
 
msgstr "Git Repository"
 

	
 
msgid "Create Fork"
 
msgstr "Fork erstellen"
 

	
 
msgid "Summary"
 
msgstr "Zusammenfassung"
 

	
 
msgid "Files"
 
msgstr "Dateien"
 

	
 
msgid "Pull Requests"
 
msgstr "Pull Requests"
 

	
 
msgid "Options"
 
msgstr "Optionen"
 

	
 
msgid "Compare Fork"
 
msgstr "Fork vergleichen"
 

	
 
msgid "No matches found"
 
msgstr "Keine Übereinstimmungen gefunden"
 

	
 
msgid "Public journal"
 
msgstr "Öffentliches Logbuch"
 

	
 
msgid "My Pull Requests"
 
msgstr "Meine Pull Requests"
 

	
 
msgid "Not Logged In"
 
msgstr "Nicht eingeloggt"
 

	
 
msgid "Permission"
 
msgstr "Rechte"
 

	
 
msgid "Edit Permission"
 
msgstr "Berechtigungen editieren"
 

	
 
msgid "Add Another Comment"
 
msgstr "Einen weiteren Kommentar hinzufügen"
 

	
 
msgid "Group"
 
msgstr "Gruppe"
 

	
 
msgid "Confirm to revoke permission for {0}: {1} ?"
 
msgstr "Widerruf der Rechte für {0}: {1} bestätigen?"
 

	
 
msgid "Select changeset"
 
msgstr "Änderungssätze auswählen"
 

	
 
msgid "Specify changeset"
 
msgstr "Changeset angeben"
 

	
 
msgid "Click to sort ascending"
 
msgstr "Klicken um Aufsteigend zu Sortieren"
 

	
 
msgid "Click to sort descending"
 
msgstr "Klicken um Absteigend zu Sortieren"
 

	
 
msgid "No records found."
 
msgstr "Keine Datensätze gefunden."
 

	
 
msgid "Data error."
 
msgstr "Datenfehler."
 

	
 
msgid "Loading..."
 
msgstr "Lade..."
 

	
 
msgid "Go to tip of repository"
 
msgstr "Gehe zum Tip des Repositorys"
 

	
 
msgid "There are no changes yet"
 
msgstr "Bisher gibt es keine Änderungen"
 

	
 
msgid "Branch %s"
 
msgstr "Branch %s"
 

	
 
msgid "No title"
 
msgstr "Kein Titel"
 

	
 
msgid "Delete comment?"
 
msgstr "Kommentar löschen?"
 

	
 
msgid "Set changeset status"
 
msgstr "Setze Changesetstatus"
 

	
 
msgid "No change"
 
msgstr "Keine Änderungen"
 

	
 
msgid "Close"
 
msgstr "Schließen"
 

	
 
msgid "Comment"
 
msgstr "Kommentar"
 

	
 
msgid "%d comment"
 
msgid_plural "%d comments"
 
msgstr[0] "%d Kommentar"
 
msgstr[1] "%d Kommentare"
 

	
 
msgid "%d inline"
 
msgid_plural "%d inline"
 
msgstr[0] "%d inline"
 
msgstr[1] "%d inline"
 

	
 
msgid "%d general"
 
msgid_plural "%d general"
 
msgstr[0] "%d generell"
 
msgstr[1] "%d generell"
 

	
 
msgid "Deleted"
 
msgstr "Gelöscht"
 

	
 
msgid "Renamed"
 
msgstr "Umbenannt"
 

	
 
msgid "%s changesets"
 
msgstr "%s Changesets"
 

	
 
msgid "behind"
 
msgstr "zurück"
 

	
 
msgid "Public repository"
 
msgstr "Öffenentliches Repository"
 

	
 
msgid "Subscribe to %s rss feed"
 
msgstr "Abonniere den %s RSS Feed"
 

	
 
msgid "Subscribe to %s atom feed"
 
msgstr "Abonniere den %s ATOM Feed"
 

	
 
msgid "Hello %s"
 
msgstr "Hallo %s"
 

	
 
msgid "or"
 
msgstr "oder"
 

	
 
msgid "Upload File"
 
msgstr "Datei hochladen"
 

	
 
msgid "Commit Changes"
 
msgstr "Änderungen einchecken"
 

	
 
msgid "Size"
 
msgstr "Größe"
 

	
 
msgid "Last Modified"
 
msgstr "Zuletzt geändert"
 

	
 
msgid "Delete file"
kallithea/i18n/el/LC_MESSAGES/kallithea.po
Show inline comments
 
@@ -1820,769 +1820,769 @@ msgstr "Μη ορατό"
 

	
 
msgid "Visible"
 
msgstr "Ορατό"
 

	
 
msgid "Add repos"
 
msgstr "Προσθήκη αποθετηρίων"
 

	
 
msgid "Add/Edit groups"
 
msgstr "Προσθήκη/Επεξεργασία ομάδων"
 

	
 
msgid "User/User Group"
 
msgstr "Χρήστης / Ομάδα χρηστών"
 

	
 
msgid "Default"
 
msgstr "Προεπιλογή"
 

	
 
msgid "Revoke"
 
msgstr "Ανακάλεσε"
 

	
 
msgid "Add new"
 
msgstr "Προσθήκη νέου"
 

	
 
msgid "Apply to children"
 
msgstr "Εφαρμογή στα θυγατρικά"
 

	
 
msgid "Both"
 
msgstr "Και τα δυο"
 

	
 
msgid ""
 
"Set or revoke permission to all children of that group, including non-"
 
"private repositories and other groups if selected."
 
msgstr ""
 
"Ορίστε ή ανακαλέστε τα θυγατρικά δικαιώματα αυτής της ομάδας, "
 
"συμπεριλαμβανομένων των μη ιδιωτικών αποθετηρίων και άλλων ομάδων, εάν "
 
"επιλεγεί."
 

	
 
msgid "Remove this group"
 
msgstr "Κατάργηση αυτής της ομάδας"
 

	
 
msgid "Confirm to delete this group"
 
msgstr "Επιβεβαιώστε για να διαγράψετε αυτή την ομάδα"
 

	
 
msgid "Repository group %s"
 
msgstr "Ομάδα αποθετηρίων %s"
 

	
 
msgid "Repository Groups Administration"
 
msgstr "Διαχείριση Ομάδων Αποθετηρίου"
 

	
 
msgid "Number of Top-level Repositories"
 
msgstr "Αριθμός αποθετηρίων ανώτατου επιπέδου"
 

	
 
msgid "Clone remote repository"
 
msgstr "Κλωνοποίηση απομακρυσμένου αποθετηρίου"
 

	
 
msgid ""
 
"Optional: URL of a remote repository. If set, the repository will be "
 
"created as a clone from this URL."
 
msgstr ""
 
"Προαιρετικό: Διεύθυνση URL ενός απομακρυσμένου αποθετηρίου. Εάν οριστεί, "
 
"το αποθετήριο θα δημιουργηθεί ως κλώνος από αυτήν τη διεύθυνση URL."
 

	
 
msgid ""
 
"Keep it short and to the point. Use a README file for longer descriptions."
 
msgstr ""
 
"Κρατήστε τη σύντομη και περιεκτική. Χρησιμοποιήστε ένα αρχείο README για "
 
"μεγαλύτερες περιγραφές."
 

	
 
msgid "Optionally select a group to put this repository into."
 
msgstr ""
 
"Προαιρετικά, επιλέξτε μια ομάδα για να τοποθετήσετε αυτό το αποθετήριο."
 

	
 
msgid "Type of repository to create."
 
msgstr "Τύπος αποθετηρίου προς δημιουργία."
 

	
 
msgid ""
 
"Default revision for files page, downloads, full text search index and "
 
"readme generation"
 
msgstr ""
 
"Προεπιλεγμένη αναθεώρηση για τη σελίδα αρχείων, λήψεων, ευρετήριο "
 
"αναζήτησης πλήρους κειμένου και δημιουργία readme"
 

	
 
msgid "%s Creating Repository"
 
msgstr "%s Δημιουργία Αποθετηρίου"
 

	
 
msgid "Creating repository"
 
msgstr "Δημιουργία αποθετηρίου"
 

	
 
msgid ""
 
"Repository \"%(repo_name)s\" is being created, you will be redirected "
 
"when this process is finished.repo_name"
 
msgstr ""
 
"Δημιουργείται το αποθετήριο \"%(repo_name)s\", θα ανακατευθυνθείτε όταν "
 
"ολοκληρωθεί αυτή η διαδικασία."
 

	
 
msgid ""
 
"We're sorry but error occurred during this operation. Please check your "
 
"Kallithea server logs, or contact administrator."
 
msgstr ""
 
"Λυπούμαστε, αλλά παρουσιάστηκε σφάλμα κατά τη διάρκεια αυτής της "
 
"λειτουργίας. Ελέγξτε τα αρχεία καταγραφής του διακομιστή Καλλιθέας ή "
 
"επικοινωνήστε με το διαχειριστή."
 

	
 
msgid "%s Repository Settings"
 
msgstr "Ρυθμίσεις Αποθετηρίου %s"
 

	
 
msgid "Extra Fields"
 
msgstr "Επιπλέον Πεδία"
 

	
 
msgid "Remote"
 
msgstr "Απομακρυσμένο"
 

	
 
msgid "Statistics"
 
msgstr "Στατιστικά"
 

	
 
msgid "Parent"
 
msgstr "Γονικό"
 

	
 
msgid "Set"
 
msgstr "Ορισμός"
 

	
 
msgid "Public Journal Visibility"
 
msgstr "Ορατότητα δημόσιων εγγραφών"
 

	
 
msgid "Remove from public journal"
 
msgstr "Κατάργηση από τις δημόσιες εγγραφές"
 

	
 
msgid "Add to Public Journal"
 
msgstr "Προσθήκη στις Δημόσια Εγγραφές"
 

	
 
msgid ""
 
"All actions done in this repository will be visible to everyone in the "
 
"public journal."
 
msgstr ""
 
"Όλες οι ενέργειες που γίνονται σε αυτό το αποθετήριο θα είναι ορατές σε "
 
"όλους στις δημόσιες εγγραφές."
 

	
 
msgid "Confirm to delete this repository: %s"
 
msgstr "Επιβεβαίωση διαγραφής αυτού του αποθετηρίου: %s"
 

	
 
msgid "Delete this Repository"
 
msgstr "Διαγραφή αυτού του Αποθετηρίου"
 

	
 
msgid "This repository has %s fork"
 
msgid_plural "This repository has %s forks"
 
msgstr[0] "Αυτό το αποθετήριο έχει %s παράγωγο"
 
msgstr[1] "Αυτό το αποθετήριο έχει %s παράγωγα"
 

	
 
msgid ""
 
"The deleted repository will be moved away and hidden until the "
 
"administrator expires it. The administrator can both permanently delete "
 
"it or restore it."
 
msgstr ""
 
"Το διαγραμμένο αποθετήριο θα απομακρυνθεί και θα κρυφτεί έως ότου το "
 
"λήξει ο διαχειριστής. Ο διαχειριστής μπορεί να το διαγράψει οριστικά ή να "
 
"το επαναφέρει."
 

	
 
msgid "Label"
 
msgstr "Ετικέτα"
 

	
 
msgid "Key"
 
msgstr "Κλειδί"
 

	
 
msgid "Confirm to delete this field: %s"
 
msgstr "Επιβεβαίωση διαγραφής αυτού του πεδίου: %s"
 

	
 
msgid "New field key"
 
msgstr "Νέο κλειδί πεδίου"
 

	
 
msgid "New field label"
 
msgstr "Νέα ετικέτα πεδίου"
 

	
 
msgid "Enter short label"
 
msgstr "Εισαγωγή σύντομης ετικέτας"
 

	
 
msgid "New field description"
 
msgstr "Νέα περιγραφή πεδίου"
 

	
 
msgid "Enter description of a field"
 
msgstr "Εισαγωγή περιγραφής ενός πεδίου"
 

	
 
msgid "Extra fields are disabled."
 
msgstr "Τα επιπλέον πεδία είναι απενεργοποιημένα."
 

	
 
msgid "Private Repository"
 
msgstr "Ιδιωτικό Αποθετήριο"
 

	
 
msgid "Remote repository URL"
 
msgstr "Διεύθυνση URL απομακρυσμένου αποθετηρίου"
 

	
 
msgid "Pull Changes from Remote Repository"
 
msgstr "Τραβήξτε τις αλλαγές από το απομακρυσμένο αποθετήριο"
 

	
 
msgid "Confirm to pull changes from remote repository."
 
msgstr ""
 
"Επιβεβαιώστε ότι θα τραβήξετε αλλαγές από το απομακρυσμένο αποθετήριο "
 
"δεδομένων."
 

	
 
msgid "This repository does not have a remote repository URL."
 
msgstr ""
 
"Αυτό το αποθετήριο δεν έχει διεύθυνση URL απομακρυσμένου αποθετηρίου."
 

	
 
msgid "Permanent URL"
 
msgstr "Μόνιμη διεύθυνση URL"
 

	
 
msgid ""
 
"In case this repository is renamed or moved into another group the "
 
"repository URL changes.\n"
 
"                               Using the above permanent URL guarantees "
 
"that this repository always will be accessible on that URL.\n"
 
"                               This is useful for CI systems, or any "
 
"other cases that you need to hardcode the URL into a 3rd party service."
 
msgstr ""
 
"Η διεύθυνση URL του αποθετηρίου αλλάζει όταν αυτό μετονομαστεί ή "
 
"μετακινηθεί σε άλλη ομάδα.\n"
 
"                               Η χρήση της παραπάνω μόνιμης διεύθυνσης "
 
"URL εγγυάται ότι αυτό το αποθετήριο θα είναι πάντα προσβάσιμο σε αυτήν τη "
 
"διεύθυνση URL.\n"
 
"                               Αυτό είναι χρήσιμο για συστήματα CI ή για "
 
"άλλες περιπτώσεις που χρειάζεστε να κωδικοποιήσετε τη διεύθυνση URL σε "
 
"κάποια υπηρεσία τρίτου μέρους."
 

	
 
msgid "Remote repository"
 
msgstr "Απομακρυσμένο αποθετήριο"
 

	
 
msgid "Repository URL"
 
msgstr "URL Αποθετηρίου"
 

	
 
msgid ""
 
"Optional: URL of a remote repository. If set, the repository can be "
 
"pulled from this URL."
 
msgstr ""
 
"Προαιρετικό: Διεύθυνση URL ενός απομακρυσμένου αποθετηρίου. Εάν οριστεί, "
 
"το αποθετήριο μπορεί να τραβηχτεί από αυτήν τη διεύθυνση URL."
 

	
 
msgid "Default revision for files page, downloads, whoosh and readme"
 
msgstr ""
 
"Προεπιλεγμένη αναθεώρηση για τη σελίδα αρχείων, λήψεων, Whoosh και readme"
 

	
 
msgid "Type name of user"
 
msgstr "Πληκτρολογήστε το όνομα του χρήστη"
 

	
 
msgid "Change owner of this repository."
 
msgstr "Αλλάξτε τον κάτοχο αυτού του αποθετηρίου."
 

	
 
msgid "Processed commits"
 
msgstr "Επεξεργασμένα commits"
 

	
 
msgid "Processed progress"
 
msgstr "Επεξεργασμένη πρόοδος"
 

	
 
msgid "Reset Statistics"
 
msgstr "Επαναφορά Στατιστικών"
 

	
 
msgid "Confirm to remove current statistics."
 
msgstr "Επιβεβαιώστε την κατάργηση των τρεχόντων στατιστικών στοιχείων."
 

	
 
msgid "Repositories Administration"
 
msgstr "Διαχείριση Αποθετηρίων"
 

	
 
msgid "State"
 
msgstr "Κατάσταση"
 

	
 
msgid "Settings Administration"
 
msgstr "Διαχείριση Ρυθμίσεων"
 

	
 
msgid "VCS"
 
msgstr "VCS"
 

	
 
msgid "Remap and Rescan"
 
msgstr "Επανάληψη αντιστοίχισης και επανασάρωση"
 

	
 
msgid "Visual"
 
msgstr "Εμφάνιση"
 

	
 
msgid "Full Text Search"
 
msgstr "Αναζήτηση Πλήρους Κειμένου"
 

	
 
msgid "System Info"
 
msgstr "Πληροφορίες Συστήματος"
 

	
 
msgid "Send test email to"
 
msgstr "Αποστολή δοκιμαστικού μηνύματος ηλεκτρονικού ταχυδρομείου σε"
 

	
 
msgid "Send"
 
msgstr "Αποστολή"
 

	
 
msgid "Site branding"
 
msgstr "Επωνυμία ιστότοπου"
 

	
 
msgid "Set a custom title for your Kallithea Service."
 
msgstr "Ορίστε έναν προσαρμοσμένο τίτλο για την υπηρεσία της Καλλιθέα σας."
 

	
 
msgid "HTML/JavaScript/CSS customization block"
 
msgstr "Μπλοκ προσαρμογής HTML / JavaScript / CSS"
 

	
 
msgid ""
 
"HTML (possibly with                         JavaScript and/or CSS) that "
 
"will be added to the bottom                         of every page. This "
 
"can be used for web analytics                         systems, but also "
 
"to                         perform instance-specific customizations like "
 
"adding a                         project banner at the top of every page."
 
msgstr ""
 
"HTML (ενδεχομένως με JavaScript ή / και CSS) που θα προστεθούν στο κάτω "
 
"μέρος της κάθε σελίδας. Αυτό μπορεί να χρησιμοποιηθεί για web analytics, "
 
"αλλά και για την προσαρμογή της εμφάνισης, όπως η προσθήκη ενός banner "
 
"στο επάνω μέρος κάθε σελίδας."
 

	
 
msgid "ReCaptcha public key"
 
msgstr "Δημόσιο κλειδί ReCaptcha"
 

	
 
msgid "Public key for reCaptcha system."
 
msgstr "Δημόσιο κλειδί για το σύστημα reCaptcha."
 

	
 
msgid "ReCaptcha private key"
 
msgstr "Ιδιωτικό κλειδί ReCaptcha"
 

	
 
msgid ""
 
"Private key for reCaptcha system. Setting this value will enable captcha "
 
"on registration."
 
msgstr ""
 
"Ιδιωτικό κλειδί για το σύστημα reCaptcha. Ο καθορισμός αυτής της τιμής θα "
 
"ενεργοποιήσει το captcha κατά την εγγραφή."
 

	
 
msgid "Save Settings"
 
msgstr "Αποθήκευση Ρυθμίσεων"
 

	
 
msgid "Built-in Mercurial Hooks (Read-Only)"
 
msgstr "Ενσωματωμένοι Mercurial Hooks (μόνο για ανάγνωση)"
 

	
 
msgid "Rescan options"
 
msgstr "Επιλογές Επανασάρωσης"
 

	
 
msgid "Delete records of missing repositories"
 
msgstr "Διαγραφή εγγραφών αποθετηρίων που λείπουν"
 

	
 
msgid ""
 
"Check this option to remove all comments, pull requests and other records "
 
"related to repositories that no longer exist in the filesystem."
 
msgstr ""
 
"Επιλέξτε αυτήν την επιλογή για να καταργήσετε όλα τα σχόλια, να αιτήματα "
 
"έλξης και άλλες εγγραφές που σχετίζονται με αποθετήρια που δεν υπάρχουν "
 
"πλέον στο σύστημα αρχείων."
 

	
 
msgid "Invalidate cache for all repositories"
 
msgstr "Ακυρώνει την προσωρινή αποθήκευση για όλα τα αποθετήρια"
 

	
 
msgid "Check this to reload data and clear cache keys for all repositories."
 
msgstr ""
 
"Επιλέξτε αυτό για να φορτώσετε ξανά τα δεδομένα και να καταργήστε την "
 
"cache για όλα τα αποθετήρια."
 

	
 
msgid "Install Git hooks"
 
msgstr "Εγκατάσταση Git hooks"
 

	
 
msgid ""
 
"Verify if Kallithea's Git hooks are installed for each repository. "
 
"Current hooks will be updated to the latest version."
 
msgstr ""
 
"Επαληθεύστε εάν τα Git hooks της Καλλιθέας είναι εγκατεστημένα για κάθε "
 
"αποθετήριο. Τα τρέχοντα hooks θα ενημερωθούν στην τελευταία έκδοση."
 

	
 
msgid "Overwrite existing Git hooks"
 
msgstr "Αντικατάσταση υπαρχόντων Git hooks"
 

	
 
msgid ""
 
"If installing Git hooks, overwrite any existing hooks, even if they do "
 
"not seem to come from Kallithea. WARNING: This operation will destroy any "
 
"custom git hooks you may have deployed by hand!"
 
msgstr ""
 
"Εάν εγκαθιστάτε Git hooks, αντικαταστήστε τυχόν υπάρχοντα hooks, ακόμα κι "
 
"αν δεν φαίνεται να προέρχονται από την Καλλιθέα. ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Αυτή η "
 
"λειτουργία θα καταστρέψει τυχόν προσαρμοσμένα git hooks που μπορεί να "
 
"έχετε αναπτύξει με το χέρι!"
 

	
 
msgid "Rescan Repositories"
 
msgstr "Επανασάρωση αποθετηρίων"
 

	
 
msgid "Index build option"
 
msgstr "Επιλογή δημιουργίας ευρετηρίου"
 

	
 
msgid "Build from scratch"
 
msgstr "Κατασκευή από το μηδέν"
 

	
 
msgid ""
 
"This option completely reindexeses all of the repositories for proper "
 
"This option completely reindexes all of the repositories for proper "
 
"fulltext search capabilities."
 
msgstr ""
 
"Αυτή η επιλογή ξαναδημιουργεί πλήρως τα ευρετήρια σε όλα τα αποθετήρια "
 
"για δυνατότητα αναζήτησης πλήρους κειμένου."
 

	
 
msgid "Reindex"
 
msgstr "Αναδημιουργία ευρετηρίου"
 

	
 
msgid "Checking for updates..."
 
msgstr "Έλεγχος για ενημερώσεις..."
 

	
 
msgid "Kallithea version"
 
msgstr "Έκδοση Καλλιθέας"
 

	
 
msgid "Kallithea configuration file"
 
msgstr "Αρχείο διαμόρφωσης Καλλιθέας"
 

	
 
msgid "Python version"
 
msgstr "Έκδοση Python"
 

	
 
msgid "Platform"
 
msgstr "Πλατφόρμα"
 

	
 
msgid "Git version"
 
msgstr "Έκδοση Git"
 

	
 
msgid "Git path"
 
msgstr "Διαδρομή Git"
 

	
 
msgid "Python Packages"
 
msgstr "Πακέτα Python"
 

	
 
msgid "Show repository size after push"
 
msgstr "Εμφάνιση μεγέθους αποθετηρίου μετά την ώθηση"
 

	
 
msgid "Update repository after push (hg update)"
 
msgstr "Ενημέρωση αποθετηρίου μετά την ώθηση (hg update)"
 

	
 
msgid "Mercurial extensions"
 
msgstr "Επεκτάσεις Mercurial"
 

	
 
msgid "Enable largefiles extension"
 
msgstr "Ενεργοποίηση επέκτασης μεγάλων αρχείων"
 

	
 
msgid "Location of repositories"
 
msgstr "Τοποθεσία αποθετηρίων"
 

	
 
msgid ""
 
"Click to unlock. You must restart Kallithea in order to make this setting "
 
"take effect."
 
msgstr ""
 
"Κάντε κλικ για να ξεκλειδώσετε. Πρέπει να επανεκκινήσετε την Καλλιθέα για "
 
"να εφαρμοστεί αυτή η ρύθμιση."
 

	
 
msgid ""
 
"Filesystem location where repositories are stored. After changing this "
 
"value, a restart and rescan of the repository folder are both required."
 
msgstr ""
 
"Θέση συστήματος αρχείων όπου αποθηκεύονται τα αποθετήρια. Μετά την αλλαγή "
 
"αυτής της τιμής, απαιτείται επανεκκίνηση και σάρωση του φακέλου "
 
"αποθετηρίου."
 

	
 
msgid "General"
 
msgstr "Γενικά"
 

	
 
msgid "Use repository extra fields"
 
msgstr "Χρήση πρόσθετων πεδίων αποθετηρίου"
 

	
 
msgid "Allows storing additional customized fields per repository."
 
msgstr ""
 
"Επιτρέπει την αποθήκευση πρόσθετων προσαρμοσμένων πεδίων ανά αποθετήριο."
 

	
 
msgid "Show Kallithea version"
 
msgstr "Εμφάνιση της έκδοσης Καλλιθέας"
 

	
 
msgid ""
 
"Shows or hides a version number of Kallithea displayed in the footer."
 
msgstr ""
 
"Εμφανίζει ή αποκρύπτει τον αριθμό έκδοσης της Καλλιθέας που εμφανίζεται "
 
"στο υποσέλιδο."
 

	
 
msgid "Show user Gravatars"
 
msgstr "Εμφάνιση Gravatars του χρήστη"
 

	
 
msgid ""
 
"Gravatar URL allows you to use another avatar server application.\n"
 
"                                                        The following "
 
"variables of the URL will be replaced accordingly.\n"
 
"                                                        {scheme}    "
 
"'http' or 'https' sent from running Kallithea server,\n"
 
"                                                        {email}     user "
 
"email,\n"
 
"                                                        {md5email}  md5 "
 
"hash of the user email (like at gravatar.com),\n"
 
"                                                        {size}      size "
 
"of the image that is expected from the server application,\n"
 
"                                                        {netloc}    "
 
"network location/server host of running Kallithea server"
 
msgstr ""
 
"Το Gravatar URL σας επιτρέπει να χρησιμοποιήσετε avatar από έναν άλλο "
 
"διακομιστή.\n"
 
"                                                        Οι ακόλουθες "
 
"μεταβλητές της διεύθυνσης URL θα αντικατασταθούν ανάλογα.\n"
 
"                                                        {scheme} 'http' ή "
 
"'https' που αποστέλλεται από την εκτέλεση του διακομιστή της Καλλιθέας,\n"
 
"                                                        {email} "
 
"ηλεκτρονικό ταχυδρομείο,\n"
 
"                                                        {md5email} md5 "
 
"hash του email χρήστη (όπως στο gravatar.com),\n"
 
"                                                        {size} μέγεθος "
 
"της εικόνας που αναμένεται από το διακομιστή,\n"
 
"                                                        {netloc} θέση "
 
"δικτύου/διακομιστή που τρέχει την Καλλιθέα"
 

	
 
msgid "HTTP Clone URL"
 
msgstr "HTTP Clone URL"
 

	
 
msgid ""
 
"Schema of clone URL construction eg. '{scheme}://{user}@{netloc}/"
 
"{repo}'.\n"
 
"                                                    The following "
 
"variables are available:\n"
 
"                                                    {scheme} 'http' or "
 
"'https' sent from running Kallithea server,\n"
 
"                                                    {user}   current user "
 
"username,\n"
 
"                                                    {netloc} network "
 
"location/server host of running Kallithea server,\n"
 
"                                                    {repo}   full "
 
"repository name,\n"
 
"                                                    {repoid} ID of "
 
"repository, can be used to construct clone-by-id,\n"
 
"                                                    {system_user}  name "
 
"of the Kallithea system user,\n"
 
"                                                    {hostname}  server "
 
"hostname\n"
 
"                                                    "
 
msgstr ""
 
"Κατασκευή σχήματος του URL clone π.χ. '{scheme}}}{user}@{netloc}/"
 
"{repo}'.\n"
 
"                                                    Οι ακόλουθες "
 
"μεταβλητές είναι διαθέσιμες:\n"
 
"                                                    {scheme} 'http' ή "
 
"'https' αποστέλλεται από την εκτέλεση του διακομιστή της Καλλιθέας,\n"
 
"                                                    {user} τρέχον όνομα "
 
"χρήστη,\n"
 
"                                                    {netloc} θέση δικτύου/"
 
"κεντρικός υπολογιστής διακομιστή που τρέχει το διακομιστή της Καλλιθέας,\n"
 
"                                                    {repo} πλήρες όνομα "
 
"αποθετηρίου,\n"
 
"                                                    {repoid} ID του "
 
"αποθετηρίου, μπορεί να χρησιμοποιηθεί για την κατασκευή clone-by-id,\n"
 
"                                                    {system_user} όνομα "
 
"του χρήστη του συστήματος Καλλιθέας,\n"
 
"                                                    {hostname} όνομα του "
 
"διακομιστή\n"
 
"                                                    "
 

	
 
msgid "SSH Clone URL"
 
msgstr "SSH Clone URL"
 

	
 
msgid ""
 
"Schema for constructing SSH clone URL, eg. 'ssh://{system_user}"
 
"@{hostname}/{repo}'."
 
msgstr ""
 
"Κατασκευή σχήματος SSH clone URL, πχ. 'ssh://{system_user}@{hostname}/"
 
"{repo}'."
 

	
 
msgid "Repository page size"
 
msgstr "Μέγεθος σελίδας αποθετηρίου"
 

	
 
msgid ""
 
"Number of items displayed in the repository pages before pagination is "
 
"shown."
 
msgstr ""
 
"Ο αριθμός των αντικειμένων που εμφανίζονται στις σελίδες αποθετηρίου πριν "
 
"εφαρμοστεί η σελιδοποίηση."
 

	
 
msgid "Admin page size"
 
msgstr "Μέγεθος σελίδας διαχειριστή"
 

	
 
msgid ""
 
"Number of items displayed in the admin pages grids before pagination is "
 
"shown."
 
msgstr ""
 
"Ο αριθμός των στοιχείων που εμφανίζονται στα πλέγματα των σελίδων "
 
"διαχειριστή πριν εφαρμοστεί η σελιδοποίηση."
 

	
 
msgid "Icons"
 
msgstr "Εικονίδια"
 

	
 
msgid "Show public repository icon on repositories"
 
msgstr "Εμφάνιση δημόσιου εικονιδίου αποθετηρίου στα αποθετήρια"
 

	
 
msgid "Show private repository icon on repositories"
 
msgstr "Εμφάνιση εικονιδίου ιδιωτικού αποθετηρίου στα αποθετήρια"
 

	
 
msgid "Show public/private icons next to repository names."
 
msgstr ""
 
"Εμφάνιση δημόσιων/ιδιωτικών εικονιδίων δίπλα στα ονόματα αποθετηρίων."
 

	
 
msgid "Meta Tagging"
 
msgstr "Μεταετικέτες"
 

	
 
msgid ""
 
"Parses meta tags from the repository description field and turns them "
 
"into colored tags."
 
msgstr ""
 
"Αναλύει τις μετα-ετικέτες από το πεδίο περιγραφής του αποθετηρίου και τις "
 
"μετατρέπει σε έγχρωμες ετικέτες."
 

	
 
msgid "Add user group"
 
msgstr "Προσθήκη ομάδας χρηστών"
 

	
 
msgid "User Groups"
 
msgstr "Ομάδες Χρηστών"
 

	
 
msgid "Add User Group"
 
msgstr "Προσθήκη Ομάδας Χρηστών"
 

	
 
msgid "Short, optional description for this user group."
 
msgstr "Σύντομη, προαιρετική περιγραφή για αυτήν την ομάδα χρηστών."
 

	
 
msgid "Active"
 
msgstr "Ενεργό"
 

	
 
msgid "%s user group settings"
 
msgstr "Ρυθμίσεις ομάδας χρηστών %s"
 

	
 
msgid "Show Members"
 
msgstr "Εμφάνιση Μελών"
 

	
 
msgid "User Group: %s"
 
msgstr "Ομάδα Χρηστών: %s"
 

	
 
msgid "Members"
 
msgstr "Μέλη"
 

	
 
msgid "Confirm to delete this user group: %s"
 
msgstr "Επιβεβαίωση για διαγραφή αυτής της ομάδας χρηστών: %s"
 

	
 
msgid "Delete this user group"
 
msgstr "Διαγραφή αυτής της ομάδας χρηστών"
 

	
 
msgid "No members yet"
 
msgstr "Δεν υπάρχουν μέλη ακόμα"
 

	
 
msgid "Chosen group members"
 
msgstr "Επιλεγμένα μέλη της ομάδας"
 

	
 
msgid "Available members"
 
msgstr "Διαθέσιμα μέλη"
 

	
 
msgid "User Groups Administration"
 
msgstr "Διαχείριση Ομάδων Χρηστών"
 

	
 
msgid "Add user"
 
msgstr "Προσθήκη χρήστη"
 

	
 
msgid "Users"
 
msgstr "Χρήστες"
 

	
 
msgid "Add User"
 
msgstr "Προσθήκη χρήστη"
 

	
 
msgid "Password confirmation"
 
msgstr "Επιβεβαίωση κωδικού πρόσβασης"
 

	
 
msgid "%s user settings"
 
msgstr "Ρυθμίσεις χρήστη %s"
 

	
 
msgid "Emails"
 
msgstr "Μηνύματα ηλεκτρονικού ταχυδρομείου"
 

	
 
msgid "User: %s"
 
msgstr "Χρήστης: %s"
 

	
 
msgid "Source of Record"
 
msgstr "Προέλευση εγγραφής"
 

	
 
msgid "Last Login"
 
msgstr "Τελευταία Σύνδεση"
 

	
 
msgid "Member of User Groups"
 
msgstr "Μέλος των Ομάδων Χρηστών"
 

	
 
msgid "Confirm to delete this user: %s"
 
msgstr "Επιβεβαίωση διαγραφής αυτού του χρήστη: %s"
 

	
 
msgid "Delete this user"
 
msgstr "Διαγραφή αυτού του χρήστη"
 

	
 
msgid "Inherited from %s"
 
msgstr "Κληρονομήθηκε από %s"
 

	
 
msgid "New password confirmation"
 
msgstr "Επιβεβαίωση νέου κωδικού πρόσβασης"
 

	
 
msgid "Users Administration"
 
msgstr "Διαχείριση Χρηστών"
 

	
 
msgid "Auth Type"
 
msgstr "Τύπος Πιστοποίησης"
 

	
 
msgid "Server instance: %s"
 
msgstr "Παρουσία διακομιστή: %s"
 

	
 
msgid "Support"
 
msgstr "Υποστήριξη"
 

	
 
msgid "Mercurial repository"
 
msgstr "Αποθετήριο Mercurial"
 

	
 
msgid "Git repository"
 
msgstr "Αποθετήριο Git"
 

	
 
msgid "Summary"
 
msgstr "Περίληψη"
 

	
 
msgid "Changelog"
 
msgstr "Ιστορικό αλλαγών"
 

	
 
msgid "Files"
 
msgstr "Αρχεία"
 

	
 
msgid "Show Pull Requests for %s"
 
msgstr "Εμφάνιση Αιτήσεων Έλξης για %s"
 

	
 
msgid "Pull Requests"
 
msgstr "Αιτήματα Έλξης"
 

	
 
msgid "Options"
 
msgstr "Επιλογές"
 

	
 
msgid "Compare"
 
msgstr "Σύγκριση"
 

	
 
msgid "Search"
 
msgstr "Αναζήτηση"
 

	
 
msgid "Follow"
 
msgstr "Παρακολούθηση"
 

	
 
msgid "Unfollow"
 
msgstr "Κατάργηση παρακολούθησης"
 

	
 
msgid "Create Pull Request"
 
msgstr "Δημιουργία Αιτήματος Έλξης"
 

	
 
msgid "Switch To"
 
msgstr "Αλλαγή Σε"
 

	
 
msgid "No matches found"
 
msgstr "Δεν βρέθηκαν αντιστοιχίσεις"
 

	
 
msgid "Show recent activity"
 
msgstr "Εμφάνιση πρόσφατης δραστηριότητας"
 

	
 
msgid "Public journal"
 
msgstr "Δημόσιο Ημερολόγιο"
 

	
 
msgid "Show public gists"
 
msgstr "Εμφάνιση δημόσιων gists"
 

	
 
msgid "Gists"
 
msgstr "Gists"
 

	
 
msgid "All Public Gists"
 
msgstr "Όλα τα Δημόσια Gists"
 

	
 
msgid "My Public Gists"
 
msgstr "Τα Δημόσιά μου Gists"
 

	
 
msgid "My Private Gists"
 
msgstr "Τα Ιδιωτικά μου Gists"
 

	
 
msgid "Search in repositories"
 
msgstr "Αναζήτηση σε αποθετήρια"
 

	
 
msgid "My Pull Requests"
 
msgstr "Τα αιτήματά μου για έλξη"
 

	
 
msgid "Not Logged In"
 
msgstr "Δεν έχετε συνδεθεί"
kallithea/i18n/fr/LC_MESSAGES/kallithea.po
Show inline comments
 
@@ -1950,769 +1950,769 @@ msgid ""
 
msgstr ""
 
"Ajouter ou révoquer la permission pour tous les enfants de ce groupe, y "
 
"compris les dépôts non-privés et les autres groupes si sélectionné."
 

	
 
msgid "Remove this group"
 
msgstr "Supprimer ce groupe"
 

	
 
msgid "Confirm to delete this group"
 
msgstr "Confirmer la suppression de ce groupe"
 

	
 
msgid "Repository group %s"
 
msgstr "Groupe de dépôts %s"
 

	
 
msgid "Repository Groups Administration"
 
msgstr "Administration des groupes de dépôts"
 

	
 
msgid "Number of Top-level Repositories"
 
msgstr "Nombre de dépôts de niveau supérieur"
 

	
 
msgid "Clone remote repository"
 
msgstr "Cloner le dépôt distant"
 

	
 
msgid ""
 
"Optional: URL of a remote repository. If set, the repository will be "
 
"created as a clone from this URL."
 
msgstr ""
 
"Optionnel : URL d'un dépôt distant. Si renseigné, le dépôt sera créé "
 
"comme un clone à partir de cette URL."
 

	
 
msgid ""
 
"Keep it short and to the point. Use a README file for longer descriptions."
 
msgstr ""
 
"Gardez cette description précise et concise. Utilisez un fichier README "
 
"pour des descriptions plus détaillées."
 

	
 
msgid "Optionally select a group to put this repository into."
 
msgstr "Sélectionnez un groupe (optionel) dans lequel sera placé le dépôt."
 

	
 
msgid "Type of repository to create."
 
msgstr "Type de dépôt à créer."
 

	
 
msgid "Landing revision"
 
msgstr "Révision d’arrivée"
 

	
 
msgid ""
 
"Default revision for files page, downloads, full text search index and "
 
"readme generation"
 
msgstr ""
 
"Révision par défaut pour les pages de fichiers, de téléchargement, de "
 
"l'index de recherche dans le texte complet, et de génération de "
 
"documentation (readme)"
 

	
 
msgid "%s Creating Repository"
 
msgstr "Création du dépôt %s"
 

	
 
msgid "Creating repository"
 
msgstr "Création du dépôt"
 

	
 
msgid ""
 
"Repository \"%(repo_name)s\" is being created, you will be redirected "
 
"when this process is finished.repo_name"
 
msgstr ""
 
"Le dépôt « %(repo_name)s » est en cours de création, vous allez être "
 
"redirigé quand cette opération sera terminée."
 

	
 
msgid ""
 
"We're sorry but error occurred during this operation. Please check your "
 
"Kallithea server logs, or contact administrator."
 
msgstr ""
 
"Désolé, une erreur est survenue pendant l'opération. Vérifiez les "
 
"journaux du serveur Kallithea, ou contactez votre administrateur."
 

	
 
msgid "%s Repository Settings"
 
msgstr "Réglages du dépôt %s"
 

	
 
msgid "Extra Fields"
 
msgstr "Champs supplémentaires"
 

	
 
msgid "Remote"
 
msgstr "Dépôt distant"
 

	
 
msgid "Statistics"
 
msgstr "Statistiques"
 

	
 
msgid "Parent"
 
msgstr "Parent"
 

	
 
msgid "Set"
 
msgstr "Appliquer"
 

	
 
msgid "Manually set this repository as a fork of another from the list."
 
msgstr ""
 
"Marquer manuellement ce dépôt comme fork d’un autre dépôt de la liste."
 

	
 
msgid "Public Journal Visibility"
 
msgstr "Visibilité du journal public"
 

	
 
msgid "Remove from public journal"
 
msgstr "Supprimer du journal public"
 

	
 
msgid "Add to Public Journal"
 
msgstr "Ajouter au journal public"
 

	
 
msgid ""
 
"All actions done in this repository will be visible to everyone in the "
 
"public journal."
 
msgstr ""
 
"Les actions réalisées sur ce dépôt seront visibles à tous depuis le "
 
"journal public."
 

	
 
msgid "Confirm to delete this repository: %s"
 
msgstr "Voulez-vous vraiment supprimer le dépôt %s ?"
 

	
 
msgid "Delete this Repository"
 
msgstr "Supprimer ce dépôt"
 

	
 
msgid "This repository has %s fork"
 
msgid_plural "This repository has %s forks"
 
msgstr[0] "Ce dépôt a %s fork"
 
msgstr[1] "Ce dépôt a %s forks"
 

	
 
msgid "Detach forks"
 
msgstr "Détacher les forks"
 

	
 
msgid "Delete forks"
 
msgstr "Supprimer les forks"
 

	
 
msgid ""
 
"The deleted repository will be moved away and hidden until the "
 
"administrator expires it. The administrator can both permanently delete "
 
"it or restore it."
 
msgstr ""
 
"Le dépôt supprimé sera mis de côté et caché jusqu'à ce que "
 
"l'administrateur le fasse expirer. L'administrateur peut soit le "
 
"supprimer définitivement, soit le restaurer."
 

	
 
msgid "Label"
 
msgstr "Libellé"
 

	
 
msgid "Key"
 
msgstr "Clé"
 

	
 
msgid "Confirm to delete this field: %s"
 
msgstr "Voulez-vous vraiment supprimer ce champ : %s ?"
 

	
 
msgid "New field key"
 
msgstr "Clé du nouveau champ"
 

	
 
msgid "New field label"
 
msgstr "Libellé du nouveau champ"
 

	
 
msgid "Enter short label"
 
msgstr "Saisir un libellé court"
 

	
 
msgid "New field description"
 
msgstr "Description du nouveau champ"
 

	
 
msgid "Enter description of a field"
 
msgstr "Saisir la description du champ"
 

	
 
msgid "Extra fields are disabled."
 
msgstr "Les champs supplémentaires sont désactivés."
 

	
 
msgid "Private Repository"
 
msgstr "Dépôt privé"
 

	
 
msgid "Fork of repository"
 
msgstr "Forker du dépôt"
 

	
 
msgid "Remote repository URL"
 
msgstr "URL du dépôt distant"
 

	
 
msgid "Pull Changes from Remote Repository"
 
msgstr "Récupérer les modifications depuis le dépôt distant"
 

	
 
msgid "Confirm to pull changes from remote repository."
 
msgstr ""
 
"Voulez-vous vraiment récupérer les changements depuis le dépôt distant ?"
 

	
 
msgid "This repository does not have a remote repository URL."
 
msgstr "Ce dépôt n'a pas d'URL de dépôt distant."
 

	
 
msgid "Permanent URL"
 
msgstr "URL permanente"
 

	
 
msgid ""
 
"In case this repository is renamed or moved into another group the "
 
"repository URL changes.\n"
 
"                               Using the above permanent URL guarantees "
 
"that this repository always will be accessible on that URL.\n"
 
"                               This is useful for CI systems, or any "
 
"other cases that you need to hardcode the URL into a 3rd party service."
 
msgstr ""
 
"Si ce dépôt est renommé ou déplacé dans un autre groupe, l'URL du dépôt "
 
"change.\n"
 
"                               L'utilisation de l'URL permanente ci-"
 
"dessus garantit que ce dépôt sera toujours accessible via cette URL.\n"
 
"                               Cela peut être utile pour les systèmes "
 
"d'intégration continue, ou dans tous les cas où vous devez saisir l'URL "
 
"« en dur » dans un service tiers."
 

	
 
msgid "Remote repository"
 
msgstr "Dépôt distant"
 

	
 
msgid "Repository URL"
 
msgstr "URL du dépôt"
 

	
 
msgid ""
 
"Optional: URL of a remote repository. If set, the repository can be "
 
"pulled from this URL."
 
msgstr ""
 
"Optionel : URL d'un dépôt distant. Si renseigné, le dépôt sera pullé à "
 
"partir de cette URL."
 

	
 
msgid "Default revision for files page, downloads, whoosh and readme"
 
msgstr ""
 
"Révision par défaut pour les pages de fichiers, de téléchargements, de "
 
"recherche et de documentation"
 

	
 
msgid "Type name of user"
 
msgstr "Saisir le nom de l'utilisateur"
 

	
 
msgid "Change owner of this repository."
 
msgstr "Changer le propriétaire de ce dépôt."
 

	
 
msgid "Processed commits"
 
msgstr "Commits traités"
 

	
 
msgid "Processed progress"
 
msgstr "Avancement"
 

	
 
msgid "Reset Statistics"
 
msgstr "Remettre les statistiques à zéro"
 

	
 
msgid "Confirm to remove current statistics."
 
msgstr ""
 
"Souhaitez-vous vraiment réinitialiser les statistiques de ce dépôt ?"
 

	
 
msgid "Repositories Administration"
 
msgstr "Administration des dépôts"
 

	
 
msgid "State"
 
msgstr "État"
 

	
 
msgid "Settings Administration"
 
msgstr "Administration des options"
 

	
 
msgid "VCS"
 
msgstr "VCS"
 

	
 
msgid "Remap and Rescan"
 
msgstr "Mapper et scanner"
 

	
 
msgid "Visual"
 
msgstr "Visuel"
 

	
 
msgid "Hooks"
 
msgstr "Hooks"
 

	
 
msgid "Full Text Search"
 
msgstr "Recherche dans le texte complet"
 

	
 
msgid "System Info"
 
msgstr "Informations sytème"
 

	
 
msgid "Send test email to"
 
msgstr "Envoyer un courriel de test à"
 

	
 
msgid "Send"
 
msgstr "Envoyer"
 

	
 
msgid "Site branding"
 
msgstr "Nom du site"
 

	
 
msgid "Set a custom title for your Kallithea Service."
 
msgstr "Mettez un title personnalisé pour votre service Kallithea."
 

	
 
msgid "HTTP authentication realm"
 
msgstr "Domaine d'authentification HTTP (realm)"
 

	
 
msgid "HTML/JavaScript/CSS customization block"
 
msgstr "Bloc de personnalisation HTML/JavaScript/CSS"
 

	
 
msgid ""
 
"HTML (possibly with                         JavaScript and/or CSS) that "
 
"will be added to the bottom                         of every page. This "
 
"can be used for web analytics                         systems, but also "
 
"to                         perform instance-specific customizations like "
 
"adding a                         project banner at the top of every page."
 
msgstr ""
 
"HTML (potentiellement avec du JavaScript et/ou du CSS) qui sera ajouté en "
 
"bas de chaque page. Cela peut être utilisé pour les systèmes d'analyse de "
 
"trafic Web, mais aussi pour effectuer des personnalisations spécifiques à "
 
"une instance, comme ajouter une bannière de projet en haut de chaque page."
 

	
 
msgid "ReCaptcha public key"
 
msgstr "Clé publique ReCaptcha"
 

	
 
msgid "Public key for reCaptcha system."
 
msgstr "Clé publique pour le système reCaptcha."
 

	
 
msgid "ReCaptcha private key"
 
msgstr "Clé privée ReCaptcha"
 

	
 
msgid ""
 
"Private key for reCaptcha system. Setting this value will enable captcha "
 
"on registration."
 
msgstr ""
 
"Clé privée pour le système reCaptcha. Définir cette valeur activera le "
 
"captcha à l'enregistrement."
 

	
 
msgid "Save Settings"
 
msgstr "Enregistrer les options"
 

	
 
msgid "Built-in Mercurial Hooks (Read-Only)"
 
msgstr "Hooks Mercurial intégrés (lecture seule)"
 

	
 
msgid "Custom Hooks"
 
msgstr "Hooks personnalisés"
 

	
 
msgid ""
 
"Hooks can be used to trigger actions on certain events such as push / "
 
"pull. They can trigger Python functions or external applications."
 
msgstr ""
 
"Les hooks peuvent être utilisés pour déclencher des actions lors de "
 
"certains évènements comme le push et le pull. Ils peuvent déclencher des "
 
"fonctions Python ou des applications externes."
 

	
 
msgid "Failed to remove hook"
 
msgstr "Erreur lors de la suppression du hook"
 

	
 
msgid "Rescan options"
 
msgstr "Options de scan"
 

	
 
msgid "Delete records of missing repositories"
 
msgstr "Supprimer les enregistrements de dépôts manquants"
 

	
 
msgid ""
 
"Check this option to remove all comments, pull requests and other records "
 
"related to repositories that no longer exist in the filesystem."
 
msgstr ""
 
"Cocher cette option pour supprimer tous les commentaires, les requêtes de "
 
"pull et d'autres informations liées aux dépôts qui n'existent plus sur le "
 
"système de fichiers."
 

	
 
msgid "Invalidate cache for all repositories"
 
msgstr "Invalider le cache pour tous les dépôts"
 

	
 
msgid "Check this to reload data and clear cache keys for all repositories."
 
msgstr ""
 
"Cocher pour recharger les données et vider le cache pour tous les dépôts."
 

	
 
msgid "Install Git hooks"
 
msgstr "Installer des hooks Git"
 

	
 
msgid ""
 
"Verify if Kallithea's Git hooks are installed for each repository. "
 
"Current hooks will be updated to the latest version."
 
msgstr ""
 
"Vérifier si les hooks Git de Kallithea sont installés pour chaque dépôt. "
 
"Les hooks actuels seront mis à jour vers la dernière version."
 

	
 
msgid "Overwrite existing Git hooks"
 
msgstr "Écraser les hooks Git existants"
 

	
 
msgid ""
 
"If installing Git hooks, overwrite any existing hooks, even if they do "
 
"not seem to come from Kallithea. WARNING: This operation will destroy any "
 
"custom git hooks you may have deployed by hand!"
 
msgstr ""
 
"Lors de l'installation des hooks Git, écraser tous les hooks existants, "
 
"même s'ils ne semblent pas provenir de Kallithea. ATTENTION : cette "
 
"opération détruira tous les hooks Git que vous avez déployés à la main !"
 

	
 
msgid "Rescan Repositories"
 
msgstr "Relancer le scan des dépôts"
 

	
 
msgid "Index build option"
 
msgstr "Option de construction de l'index"
 

	
 
msgid "Build from scratch"
 
msgstr "Construire ex nihilo"
 

	
 
msgid ""
 
"This option completely reindexeses all of the repositories for proper "
 
"This option completely reindexes all of the repositories for proper "
 
"fulltext search capabilities."
 
msgstr ""
 
"Cette option ré-indexe complètement tous les dépôts pour pouvoir faire "
 
"des recherches dans le texte complet."
 

	
 
msgid "Reindex"
 
msgstr "Mettre à jour l’index"
 

	
 
msgid "Checking for updates..."
 
msgstr "Vérification des mises à jour…"
 

	
 
msgid "Kallithea version"
 
msgstr "Version de Kallithea"
 

	
 
msgid "Kallithea configuration file"
 
msgstr "Fichier de configuration de Kallithea"
 

	
 
msgid "Python version"
 
msgstr "Version de Python"
 

	
 
msgid "Platform"
 
msgstr "Plateforme"
 

	
 
msgid "Git version"
 
msgstr "Version de Git"
 

	
 
msgid "Git path"
 
msgstr "Chemin de Git"
 

	
 
msgid "Python Packages"
 
msgstr "Paquets Python"
 

	
 
msgid "Show repository size after push"
 
msgstr "Afficher la taille du dépôt après un push"
 

	
 
msgid "Update repository after push (hg update)"
 
msgstr "Mettre à jour les dépôts après un push (hg update)"
 

	
 
msgid "Mercurial extensions"
 
msgstr "Extensions Mercurial"
 

	
 
msgid "Enable largefiles extension"
 
msgstr "Activer l'extension largefiles"
 

	
 
msgid "Location of repositories"
 
msgstr "Emplacement des dépôts"
 

	
 
msgid ""
 
"Click to unlock. You must restart Kallithea in order to make this setting "
 
"take effect."
 
msgstr ""
 
"Cliquez pour déverrouiller. Vous devez redémarrer Kallithea pour ce que "
 
"réglage prenne effet."
 

	
 
msgid ""
 
"Filesystem location where repositories are stored. After changing this "
 
"value, a restart and rescan of the repository folder are both required."
 
msgstr ""
 
"Emplacement où les dépôts sont stockés sur le système de fichiers. La "
 
"modification de cette valeur nécessite un re-démarrage et un nouveau scan."
 

	
 
msgid "General"
 
msgstr "Général"
 

	
 
msgid "Use repository extra fields"
 
msgstr "Activer les champs supplémentaires sur les dépôts"
 

	
 
msgid "Allows storing additional customized fields per repository."
 
msgstr ""
 
"Permet d'enregistrer des champs personnalisés additionnels pour chaque "
 
"dépôt."
 

	
 
msgid "Show Kallithea version"
 
msgstr "Afficher la version de Kallithea"
 

	
 
msgid ""
 
"Shows or hides a version number of Kallithea displayed in the footer."
 
msgstr ""
 
"Afficher ou cacher le numéro de version de Kallithea dans le pied de page."
 

	
 
msgid "Show user Gravatars"
 
msgstr "Afficher les Gravatars des utilisateurs"
 

	
 
msgid ""
 
"Gravatar URL allows you to use another avatar server application.\n"
 
"                                                        The following "
 
"variables of the URL will be replaced accordingly.\n"
 
"                                                        {scheme}    "
 
"'http' or 'https' sent from running Kallithea server,\n"
 
"                                                        {email}     user "
 
"email,\n"
 
"                                                        {md5email}  md5 "
 
"hash of the user email (like at gravatar.com),\n"
 
"                                                        {size}      size "
 
"of the image that is expected from the server application,\n"
 
"                                                        {netloc}    "
 
"network location/server host of running Kallithea server"
 
msgstr ""
 
"L'URL de Gravatar vous permet d'utiliser un autre serveur d'avatars.\n"
 
"                                                        Les variables "
 
"suivantes dans l'URL seront remplacées comme suit :\n"
 
"                                                        {scheme}    "
 
"'http' ou 'https' envoyé à partir du serveur Kallithea en cours "
 
"d'utilisation,\n"
 
"                                                        {email}     "
 
"adresse e-mail de l'utilisateur,\n"
 
"                                                        {md5email}  "
 
"empreinte md5 (hash) de l'adresse e-mail de l'utilisateur (comme sur "
 
"gravatar.com),\n"
 
"                                                        {size}      "
 
"taille de l'image demandée au serveur,\n"
 
"                                                        {netloc}    "
 
"emplacement réseau/hôte du serveur Kallithea en cours d'utilisation."
 

	
 
msgid "Repository page size"
 
msgstr "Taille de la page du dépôt"
 

	
 
msgid ""
 
"Number of items displayed in the repository pages before pagination is "
 
"shown."
 
msgstr ""
 
"Nombre d'éléments affichés dans les pages des dépôts avant d'afficher la "
 
"pagination."
 

	
 
msgid "Admin page size"
 
msgstr "Taille de la page d'admin"
 

	
 
msgid ""
 
"Number of items displayed in the admin pages grids before pagination is "
 
"shown."
 
msgstr ""
 
"Nombre d'éléments affichés dans les grilles des pages admin avant "
 
"d'afficher la pagination."
 

	
 
msgid "Icons"
 
msgstr "Icônes"
 

	
 
msgid "Show public repository icon on repositories"
 
msgstr "Afficher l’icône de dépôt public sur les dépôts"
 

	
 
msgid "Show private repository icon on repositories"
 
msgstr "Afficher l’icône de dépôt privé sur les dépôts"
 

	
 
msgid "Show public/private icons next to repository names."
 
msgstr "Afficher l’icône « public/privé » à côté du nom des dépôts."
 

	
 
msgid "Meta Tagging"
 
msgstr "Meta-tagging"
 

	
 
msgid ""
 
"Parses meta tags from the repository description field and turns them "
 
"into colored tags."
 
msgstr ""
 
"Analyser les méta-tags dans le champ de description du dépôt et les "
 
"transformer en tags colorés."
 

	
 
msgid "Stylify recognised meta tags:"
 
msgstr "Styliser les méta-tags reconnus :"
 

	
 
msgid "Add user group"
 
msgstr "Ajouter un groupe d'utilisateurs"
 

	
 
msgid "User Groups"
 
msgstr "Groupes d'utilisateurs"
 

	
 
msgid "Add User Group"
 
msgstr "Ajouter un groupe d'utilisateurs"
 

	
 
msgid "Short, optional description for this user group."
 
msgstr "Description courte pour ce groupe d'utilisateur (optionnel)."
 

	
 
msgid "Active"
 
msgstr "Actif"
 

	
 
msgid "%s user group settings"
 
msgstr "Réglages du groupe d'utilisateurs %s"
 

	
 
msgid "Show Members"
 
msgstr "Afficher les membres"
 

	
 
msgid "User Group: %s"
 
msgstr "Groupe d'utilisateurs : %s"
 

	
 
msgid "Members"
 
msgstr "Membres"
 

	
 
msgid "Confirm to delete this user group: %s"
 
msgstr "Voulez-vous vraiment supprimer ce groupe utilisateur : %s ?"
 

	
 
msgid "Delete this user group"
 
msgstr "Supprimer ce groupe d'utilisateurs"
 

	
 
msgid "No members yet"
 
msgstr "Aucun membre pour l'instant"
 

	
 
msgid "Chosen group members"
 
msgstr "Membres de groupe sélectionnés"
 

	
 
msgid "Available members"
 
msgstr "Membres disponibles"
 

	
 
msgid "User Groups Administration"
 
msgstr "Administration des groupes d'utilisateurs"
 

	
 
msgid "Add user"
 
msgstr "Ajouter un utilisateur"
 

	
 
msgid "Users"
 
msgstr "Utilisateurs"
 

	
 
msgid "Add User"
 
msgstr "Ajouter un utilisateur"
 

	
 
msgid "Password confirmation"
 
msgstr "Confirmation"
 

	
 
msgid "%s user settings"
 
msgstr "Réglages de l'utilisateur %s"
 

	
 
msgid "Emails"
 
msgstr "E-mails"
 

	
 
msgid "User: %s"
 
msgstr "Utilisateur : %s"
 

	
 
msgid "Source of Record"
 
msgstr "Source de l'enregistrement"
 

	
 
msgid "Last Login"
 
msgstr "Dernière connexion"
 

	
 
msgid "Member of User Groups"
 
msgstr "Membre des groupes d'utilisateurs"
 

	
 
msgid "Confirm to delete this user: %s"
 
msgstr "Voulez-vous vraiment supprimer l’utilisateur « %s » ?"
 

	
 
msgid "Delete this user"
 
msgstr "Supprimer cet utilisateur"
 

	
 
msgid "Inherited from %s"
 
msgstr "Hérité de %s"
 

	
 
msgid "Name in Source of Record"
 
msgstr "Nom dans la source de l'enregistrement"
 

	
 
msgid "New password confirmation"
 
msgstr "Confirmation du nouveau mot de passe"
 

	
 
msgid "Users Administration"
 
msgstr "Administration des utilisateurs"
 

	
 
msgid "Auth Type"
 
msgstr "Type d'authentification"
 

	
 
msgid "Server instance: %s"
 
msgstr "Instance de serveur : %s"
 

	
 
msgid "Support"
 
msgstr "Support"
 

	
 
msgid "Mercurial repository"
 
msgstr "Dépôt Mercurial"
 

	
 
msgid "Git repository"
 
msgstr "Dépôt Git"
 

	
 
msgid "Create Fork"
 
msgstr "Créer un fork"
 

	
 
msgid "Summary"
 
msgstr "Résumé"
 

	
 
msgid "Changelog"
 
msgstr "Historique"
 

	
 
msgid "Files"
 
msgstr "Fichiers"
 

	
 
msgid "Show Pull Requests for %s"
 
msgstr "Afficher les requêtes de pull pour %s"
 

	
 
msgid "Pull Requests"
 
msgstr "Demandes de pull"
 

	
 
msgid "Options"
 
msgstr "Options"
 

	
 
msgid "Compare Fork"
 
msgstr "Comparer le fork"
 

	
 
msgid "Compare"
 
msgstr "Comparer"
 

	
 
msgid "Search"
 
msgstr "Rechercher"
 

	
 
msgid "Follow"
 
msgstr "Suivre"
 

	
 
msgid "Unfollow"
 
msgstr "Arrêter de suivre"
 

	
 
msgid "Fork"
 
msgstr "Fork"
 

	
 
msgid "Create Pull Request"
 
msgstr "Créer une requête de pull"
 

	
 
msgid "Switch To"
 
msgstr "Basculer vers"
 

	
 
msgid "No matches found"
 
msgstr "Aucune correspondance trouvée"
 

	
 
msgid "Show recent activity"
 
msgstr "Afficher l'activité récente"
 

	
 
msgid "Public journal"
 
msgstr "Journal public"
 

	
 
msgid "Show public gists"
 
msgstr "Afficher les gists publics"
 

	
 
msgid "Gists"
 
msgstr "Gists"
 

	
 
msgid "All Public Gists"
 
msgstr "Tous les Gists publics"
 

	
 
msgid "My Public Gists"
 
msgstr "Mes Gists publics"
 

	
 
msgid "My Private Gists"
 
msgstr "Mes Gist privés"
 

	
 
msgid "Search in repositories"
 
msgstr "Recherche dans les dépôts"
 

	
 
msgid "My Pull Requests"
 
msgstr "Mes requêtes de pull"
 

	
 
msgid "Not Logged In"
 
msgstr "Non connecté"
 

	
 
msgid "Login to Your Account"
 
msgstr "Connexion à votre compte"
 

	
 
msgid "Forgot password?"
 
msgstr "Mot de passe oublié ?"
 

	
 
msgid "Don't have an account?"
 
msgstr "Vous n’avez pas de compte ?"
 

	
 
msgid "Log Out"
 
msgstr "Se déconnecter"
 

	
 
msgid "Parent rev."
 
msgstr "Révision parente"
 

	
 
msgid "Child rev."
 
msgstr "Révision fille"
 

	
 
msgid "Create repositories"
 
msgstr "Création de dépôts"
 

	
 
msgid "Select this option to allow repository creation for this user"
 
msgstr ""
 
"Sélectionner cette option pour autoriser cet utilisateur à créer des "
 
"dépôts"
 

	
 
msgid "Create user groups"
 
msgstr "Créer des groupes d'utilisateurs"
 

	
 
msgid "Select this option to allow user group creation for this user"
 
msgstr ""
 
"Sélectionner cette option pour autoriser cet utilisateur à créer des "
 
"groupes d'utilisateurs"
 

	
 
msgid "Fork repositories"
 
msgstr "Forker les dépôts"
 

	
 
msgid "Select this option to allow repository forking for this user"
 
msgstr ""
kallithea/i18n/ja/LC_MESSAGES/kallithea.po
Show inline comments
 
@@ -1378,769 +1378,769 @@ msgid "Repository Groups"
 
msgstr "リポジトリグループ"
 

	
 
msgid "Group name"
 
msgstr "グループ名"
 

	
 
msgid "Group parent"
 
msgstr "親グループ"
 

	
 
msgid "Copy parent group permissions"
 
msgstr "親グループのパーミッションをコピー"
 

	
 
msgid "Copy permission set from parent repository group."
 
msgstr ""
 
"親のリポジトリグループにセットされているパーミッションをコピーします。"
 

	
 
msgid "%s Repository Group Settings"
 
msgstr "%s リポジトリグループ設定"
 

	
 
msgid "Add Child Group"
 
msgstr "子グループを追加"
 

	
 
msgid "Settings"
 
msgstr "設定"
 

	
 
msgid "Advanced"
 
msgstr "高度な設定"
 

	
 
msgid "Permissions"
 
msgstr "権限設定"
 

	
 
msgid "Repository Group: %s"
 
msgstr "リポジトリグループ: %s"
 

	
 
msgid "Top level repositories"
 
msgstr "トップレベルリポジトリ数"
 

	
 
msgid "Total repositories"
 
msgstr "リポジトリ総数"
 

	
 
msgid "Children groups"
 
msgstr "子グループ数"
 

	
 
msgid "Created on"
 
msgstr "作成日"
 

	
 
msgid "Confirm to delete this group: %s with %s repository"
 
msgid_plural "Confirm to delete this group: %s with %s repositories"
 
msgstr[0] "このグループを削除してもよろしいですか? : %s %s 個のリポジトリ"
 

	
 
msgid "Delete this repository group"
 
msgstr "このリポジトリグループを削除"
 

	
 
msgid "User/User Group"
 
msgstr "ユーザー/ユーザーグループ"
 

	
 
msgid "Revoke"
 
msgstr "取消"
 

	
 
msgid "Add new"
 
msgstr "新規追加"
 

	
 
msgid "Apply to children"
 
msgstr "子要素にも適用"
 

	
 
msgid "Both"
 
msgstr "両方"
 

	
 
msgid ""
 
"Set or revoke permission to all children of that group, including non-"
 
"private repositories and other groups if selected."
 
msgstr ""
 
"このグループに属する全ての子要素のパーミッションを設定または無効化します。"
 
"選択されていれば、非公開でないリポジトリや他のリポジトリも対象に含みます。"
 

	
 
msgid "Remove this group"
 
msgstr "このグループを削除"
 

	
 
msgid "Confirm to delete this group"
 
msgstr "このグループを削除してもよろしいですか?: %s"
 

	
 
msgid "Repository Groups Administration"
 
msgstr "リポジトリグループ管理"
 

	
 
msgid "Number of Top-level Repositories"
 
msgstr "トップレベルリポジトリ数"
 

	
 
msgid "Clone remote repository"
 
msgstr "リモートリポジトリをクローン"
 

	
 
msgid ""
 
"Keep it short and to the point. Use a README file for longer descriptions."
 
msgstr ""
 
"短く要点を絞ってください。長い説明にはREADMEファイルを利用してください。"
 

	
 
msgid "Optionally select a group to put this repository into."
 
msgstr "オプション:このリポジトリが属するグループを選択します"
 

	
 
msgid "Type of repository to create."
 
msgstr "作成するリポジトリの種別を指定します"
 

	
 
msgid "Landing revision"
 
msgstr "ランディングリビジョン"
 

	
 
msgid ""
 
"Default revision for files page, downloads, full text search index and "
 
"readme generation"
 
msgstr ""
 
"ファイルページ、ダウンロード、全文検索インデックス、READMEなどの生成に使う"
 
"デフォルトのリビジョン"
 

	
 
msgid "Creating repository"
 
msgstr "リポジトリを作成中"
 

	
 
msgid ""
 
"Repository \"%(repo_name)s\" is being created, you will be redirected "
 
"when this process is finished.repo_name"
 
msgstr ""
 
"リポジトリ \"%(repo_name)s\" を作成中です。処理を完了したらリダイレクトし"
 
"ます。"
 

	
 
msgid ""
 
"We're sorry but error occurred during this operation. Please check your "
 
"Kallithea server logs, or contact administrator."
 
msgstr ""
 
"恐れいります。操作中にエラーが発生しました。 Kallithea サーバのログを"
 
"チェックするか、管理者に問い合わせてください。"
 

	
 
msgid "%s Repository Settings"
 
msgstr "%s リポジトリ設定"
 

	
 
msgid "Extra Fields"
 
msgstr "拡張フィールド"
 

	
 
msgid "Remote"
 
msgstr "リモート"
 

	
 
msgid "Statistics"
 
msgstr "統計"
 

	
 
msgid "Parent"
 
msgstr "Parent"
 

	
 
msgid "Set"
 
msgstr "保存"
 

	
 
msgid "Manually set this repository as a fork of another from the list."
 
msgstr "一覧から別のフォークとしてこのリポジトリを手動で設定します。"
 

	
 
msgid "Public Journal Visibility"
 
msgstr "公開ジャーナルでの可視性"
 

	
 
msgid "Remove from public journal"
 
msgstr "公開ジャーナルから削除する"
 

	
 
msgid "Add to Public Journal"
 
msgstr "公開ジャーナルへ追加"
 

	
 
msgid ""
 
"All actions done in this repository will be visible to everyone in the "
 
"public journal."
 
msgstr ""
 
"公開ジャーナルでは、このリポジトリに対して行った操作のすべてが公開されます"
 

	
 
msgid "Confirm to delete this repository: %s"
 
msgstr "このリポジトリを削除してもよろしいですか? : %s"
 

	
 
msgid "Delete this Repository"
 
msgstr "このリポジトリを削除"
 

	
 
msgid "This repository has %s fork"
 
msgid_plural "This repository has %s forks"
 
msgstr[0] "このリポジトリには %s 個のフォークがあります"
 

	
 
msgid "Detach forks"
 
msgstr "フォークの切り離し"
 

	
 
msgid "Delete forks"
 
msgstr "フォークも削除"
 

	
 
msgid "Label"
 
msgstr "ラベル"
 

	
 
msgid "Key"
 
msgstr "キー"
 

	
 
msgid "Confirm to delete this field: %s"
 
msgstr "このフィールドを削除してもよろしいですか? : %s"
 

	
 
msgid "New field key"
 
msgstr "新しいフィールドのキー"
 

	
 
msgid "New field label"
 
msgstr "新しいフィールドのラベル"
 

	
 
msgid "Enter short label"
 
msgstr "ラベルを入力してください"
 

	
 
msgid "New field description"
 
msgstr "新しいフィールドの説明"
 

	
 
msgid "Enter description of a field"
 
msgstr "フィールドの説明を入力してください"
 

	
 
msgid "Extra fields are disabled."
 
msgstr "拡張フィールドは無効化されています"
 

	
 
msgid "Private Repository"
 
msgstr "非公開リポジトリ"
 

	
 
msgid "Remote repository URL"
 
msgstr "リモートリポジトリURL"
 

	
 
msgid "Pull Changes from Remote Repository"
 
msgstr "リモートリポジトリから変更を取り込む"
 

	
 
msgid "Confirm to pull changes from remote repository."
 
msgstr "リモートリポジトリから変更を取り込んでもよろしいですか?"
 

	
 
msgid "This repository does not have a remote repository URL."
 
msgstr "このリポジトリにリモートURLは設定されていません"
 

	
 
msgid ""
 
"In case this repository is renamed or moved into another group the "
 
"repository URL changes.\n"
 
"                               Using the above permanent URL guarantees "
 
"that this repository always will be accessible on that URL.\n"
 
"                               This is useful for CI systems, or any "
 
"other cases that you need to hardcode the URL into a 3rd party service."
 
msgstr ""
 
"通常、リポジトリの名前を変更したり、別のグループに移動すると、リポジトリの"
 
"URLが変わります。\n"
 
"上のURLを使えば、常にリポジトリにアクセスできます。\n"
 
"この機能は、CIを使っている場合や、3rd pirtyのサービス向けにURLを固定化した"
 
"いときに便利です。"
 

	
 
msgid "Remote repository"
 
msgstr "リモートリポジトリ"
 

	
 
msgid "Repository URL"
 
msgstr "リポジトリURL"
 

	
 
msgid ""
 
"Optional: URL of a remote repository. If set, the repository can be "
 
"pulled from this URL."
 
msgstr ""
 
"オプション: リモートリポジトリのURLです。設定した場合、このURLから変更を取"
 
"得することができます。"
 

	
 
msgid "Default revision for files page, downloads, whoosh and readme"
 
msgstr ""
 
"ファイルページ、ダウンロード、検索、READMEのデフォルトのリビジョンを指定し"
 
"ます"
 

	
 
msgid "Change owner of this repository."
 
msgstr "リポジトリの所有者を変更"
 

	
 
msgid "Processed commits"
 
msgstr "処理済みコミット数"
 

	
 
msgid "Processed progress"
 
msgstr "処理状況"
 

	
 
msgid "Reset Statistics"
 
msgstr "統計情報をリセット"
 

	
 
msgid "Confirm to remove current statistics."
 
msgstr "現在の統計情報をリセットしてもよろしいですか?"
 

	
 
msgid "Repositories Administration"
 
msgstr "リポジトリ管理"
 

	
 
msgid "State"
 
msgstr "状態"
 

	
 
msgid "Settings Administration"
 
msgstr "設定管理"
 

	
 
msgid "VCS"
 
msgstr "VCS"
 

	
 
msgid "Remap and Rescan"
 
msgstr "再マップと再スキャン"
 

	
 
msgid "Visual"
 
msgstr "表示"
 

	
 
msgid "Hooks"
 
msgstr "フック"
 

	
 
msgid "Full Text Search"
 
msgstr "全文検索"
 

	
 
msgid "System Info"
 
msgstr "システム情報"
 

	
 
msgid "Send test email to"
 
msgstr "テストメールの送信"
 

	
 
msgid "Send"
 
msgstr "送信"
 

	
 
msgid "Site branding"
 
msgstr "サイト名"
 

	
 
msgid "Set a custom title for your Kallithea Service."
 
msgstr "このKallitheaサービスのカスタムタイトルを設定します。"
 

	
 
msgid "HTTP authentication realm"
 
msgstr "HTTP認証レルム"
 

	
 
msgid "ReCaptcha public key"
 
msgstr "ReCaptcha 公開鍵"
 

	
 
msgid "Public key for reCaptcha system."
 
msgstr "reCaptchaの公開鍵。"
 

	
 
msgid "ReCaptcha private key"
 
msgstr "ReCaptcha 秘密鍵"
 

	
 
msgid ""
 
"Private key for reCaptcha system. Setting this value will enable captcha "
 
"on registration."
 
msgstr ""
 
"reCaptchaの秘密鍵。この値が設定されると登録時のキャプチャが有効になりま"
 
"す。"
 

	
 
msgid "Save Settings"
 
msgstr "設定を保存"
 

	
 
msgid "Built-in Mercurial Hooks (Read-Only)"
 
msgstr "組み込みのMercurialフック (編集不可)"
 

	
 
msgid "Custom Hooks"
 
msgstr "カスタムフック"
 

	
 
msgid ""
 
"Hooks can be used to trigger actions on certain events such as push / "
 
"pull. They can trigger Python functions or external applications."
 
msgstr ""
 
"フックを使うと、リポジトリへのプッシュやプルといった特定のイベントに合わせ"
 
"て、何らかのアクションを実行できます。フック機能では、Pythonの関数を呼び出"
 
"したり、外部アプリケーションを起動したりできます。"
 

	
 
msgid "Failed to remove hook"
 
msgstr "フックの削除に失敗しました"
 

	
 
msgid "Delete records of missing repositories"
 
msgstr "見つからないリポジトリのレコードを削除"
 

	
 
msgid "Invalidate cache for all repositories"
 
msgstr "すべてのリポジトリのキャッシュを無効化する"
 

	
 
msgid "Install Git hooks"
 
msgstr "Gitフックをインストール"
 

	
 
msgid ""
 
"Verify if Kallithea's Git hooks are installed for each repository. "
 
"Current hooks will be updated to the latest version."
 
msgstr ""
 
"各リポジトリに Kallitheas の Gitフックがインストールされているか確認してく"
 
"ださい。現在のフックは最新版に更新されます"
 

	
 
msgid "Overwrite existing Git hooks"
 
msgstr "既存のGitフックを上書きする"
 

	
 
msgid ""
 
"If installing Git hooks, overwrite any existing hooks, even if they do "
 
"not seem to come from Kallithea. WARNING: This operation will destroy any "
 
"custom git hooks you may have deployed by hand!"
 
msgstr ""
 
"GitフックをインストールするとKallitheaから設定されたものであっても既存の"
 
"フックは全て上書きされます。警告: この操作はあなたが手動で配置したGitのカ"
 
"スタムフックを全て破壊します!"
 

	
 
msgid "Rescan Repositories"
 
msgstr "リポジトリを再スキャン"
 

	
 
msgid "Index build option"
 
msgstr "インデックス作成時の設定"
 

	
 
msgid "Build from scratch"
 
msgstr "一度削除してから再度インデックスを作成"
 

	
 
msgid ""
 
"This option completely reindexeses all of the repositories for proper "
 
"This option completely reindexes all of the repositories for proper "
 
"fulltext search capabilities."
 
msgstr ""
 
"このオプションを使うと、全文検索の機能が正しく発揮されるよう、 Kallithea "
 
"中の全てのファイルのインデックスを再生成します。"
 

	
 
msgid "Reindex"
 
msgstr "再インデックス"
 

	
 
msgid "Checking for updates..."
 
msgstr "更新を確認中..."
 

	
 
msgid "Kallithea version"
 
msgstr "Kallithea バージョン"
 

	
 
msgid "Kallithea configuration file"
 
msgstr "Kallithea の設定ファイル"
 

	
 
msgid "Python version"
 
msgstr "Python バージョン"
 

	
 
msgid "Platform"
 
msgstr "プラットフォーム"
 

	
 
msgid "Git version"
 
msgstr "Git バージョン"
 

	
 
msgid "Git path"
 
msgstr "Git パス"
 

	
 
msgid "Python Packages"
 
msgstr "Python パッケージ"
 

	
 
msgid "Show repository size after push"
 
msgstr "プッシュ後にリポジトリのサイズを表示する"
 

	
 
msgid "Update repository after push (hg update)"
 
msgstr "プッシュ後にリポジトリを更新する (hg update)"
 

	
 
msgid "Mercurial extensions"
 
msgstr "Mercurialエクステンション"
 

	
 
msgid "Enable largefiles extension"
 
msgstr "largefilesエクステンションを有効にする"
 

	
 
msgid "Location of repositories"
 
msgstr "リポジトリの場所"
 

	
 
msgid ""
 
"Click to unlock. You must restart Kallithea in order to make this setting "
 
"take effect."
 
msgstr ""
 
"アンロックする。この設定を有効にするためにはKallitheaの再起動が必要です。"
 

	
 
msgid ""
 
"Filesystem location where repositories are stored. After changing this "
 
"value, a restart and rescan of the repository folder are both required."
 
msgstr ""
 
"リポジトリを保存するファイルシステム上の場所。この値を変更した場合、サー"
 
"バーの再起動とリポジトリフォルダの再スキャンが必要です。"
 

	
 
msgid "General"
 
msgstr "一般"
 

	
 
msgid "Use repository extra fields"
 
msgstr "リポジトリの拡張フィールドを使用する"
 

	
 
msgid "Allows storing additional customized fields per repository."
 
msgstr "追加のカスタムフィールドをリポジトリ毎に保存することを許可します。"
 

	
 
msgid "Show Kallithea version"
 
msgstr "Kallitheaのバージョンを表示する"
 

	
 
msgid ""
 
"Shows or hides a version number of Kallithea displayed in the footer."
 
msgstr ""
 
"フッターに表示されるKallitheaのバージョン番号の表示、非表示を設定します。"
 

	
 
msgid ""
 
"Number of items displayed in the admin pages grids before pagination is "
 
"shown."
 
msgstr "管理ページで、ページ分割しないでグリッドに表示する項目の数"
 

	
 
msgid "Icons"
 
msgstr "アイコン"
 

	
 
msgid "Show public repository icon on repositories"
 
msgstr "公開リポジトリのアイコンを表示する"
 

	
 
msgid "Show private repository icon on repositories"
 
msgstr "非公開リポジトリのアイコンを表示する"
 

	
 
msgid "Show public/private icons next to repository names."
 
msgstr "リポジトリ名の隣に公開/非公開アイコンを表示します。"
 

	
 
msgid "Meta Tagging"
 
msgstr "メタタグ"
 

	
 
msgid ""
 
"Parses meta tags from the repository description field and turns them "
 
"into colored tags."
 
msgstr "リポジトリの説明のメタタグを解析して色つきのタグに変換します。"
 

	
 
msgid "Stylify recognised meta tags:"
 
msgstr "次のメタタグを変換する:"
 

	
 
msgid "Add user group"
 
msgstr "ユーザーグループを追加"
 

	
 
msgid "User Groups"
 
msgstr "ユーザーグループ"
 

	
 
msgid "Add User Group"
 
msgstr "ユーザーグループを追加"
 

	
 
msgid "Short, optional description for this user group."
 
msgstr "このユーザーグループの簡潔な説明を書いてください。"
 

	
 
msgid "Active"
 
msgstr "アクティブ"
 

	
 
msgid "%s user group settings"
 
msgstr "%s ユーザーグループ設定"
 

	
 
msgid "Show Members"
 
msgstr "メンバーを表示"
 

	
 
msgid "User Group: %s"
 
msgstr "ユーサーグループ: %s"
 

	
 
msgid "Members"
 
msgstr "メンバー"
 

	
 
msgid "Confirm to delete this user group: %s"
 
msgstr "このユーザーグループを削除してもよろしいですか?: %s"
 

	
 
msgid "Delete this user group"
 
msgstr "このユーザーグループを削除"
 

	
 
msgid "No members yet"
 
msgstr "まだメンバーがいません"
 

	
 
msgid "Chosen group members"
 
msgstr "グループメンバーを選ぶ"
 

	
 
msgid "Available members"
 
msgstr "有効なメンバー"
 

	
 
msgid "User Groups Administration"
 
msgstr "ユーザーグループ管理"
 

	
 
msgid "Add user"
 
msgstr "ユーザーを追加"
 

	
 
msgid "Users"
 
msgstr "ユーザー"
 

	
 
msgid "Add User"
 
msgstr "ユーザーを追加"
 

	
 
msgid "Password confirmation"
 
msgstr "パスワード再入力"
 

	
 
msgid "%s user settings"
 
msgstr "%s ユーザー設定"
 

	
 
msgid "Emails"
 
msgstr "メールアドレス"
 

	
 
msgid "User: %s"
 
msgstr "ユーザー: %s"
 

	
 
msgid "Source of Record"
 
msgstr "アカウントのソース"
 

	
 
msgid "Last Login"
 
msgstr "最終ログイン日時"
 

	
 
msgid "Member of User Groups"
 
msgstr "グループのメンバー数"
 

	
 
msgid "Confirm to delete this user: %s"
 
msgstr "このユーザーを削除してもよろしいですか? : %s"
 

	
 
msgid "Delete this user"
 
msgstr "このユーザーを削除"
 

	
 
msgid "Inherited from %s"
 
msgstr "%s から継承"
 

	
 
msgid "Name in Source of Record"
 
msgstr "アカウントのソースでの名前"
 

	
 
msgid "New password confirmation"
 
msgstr "新しいパスワード 再入力"
 

	
 
msgid "Users Administration"
 
msgstr "ユーザー管理"
 

	
 
msgid "Auth Type"
 
msgstr "認証タイプ"
 

	
 
msgid "Server instance: %s"
 
msgstr "サーバーインスタンス: %s"
 

	
 
msgid "Support"
 
msgstr "サポート"
 

	
 
msgid "Mercurial repository"
 
msgstr "Mercurialリポジトリ"
 

	
 
msgid "Git repository"
 
msgstr "Gitリポジトリ"
 

	
 
msgid "Create Fork"
 
msgstr "フォークを作成"
 

	
 
msgid "Summary"
 
msgstr "要約"
 

	
 
msgid "Changelog"
 
msgstr "履歴"
 

	
 
msgid "Files"
 
msgstr "ファイル"
 

	
 
msgid "Show Pull Requests for %s"
 
msgstr "%s のプルリクエストを表示"
 

	
 
msgid "Pull Requests"
 
msgstr "プルリクエスト"
 

	
 
msgid "Options"
 
msgstr "オプション"
 

	
 
msgid "Compare Fork"
 
msgstr "フォークと比較"
 

	
 
msgid "Compare"
 
msgstr "比較"
 

	
 
msgid "Search"
 
msgstr "検索"
 

	
 
msgid "Follow"
 
msgstr "フォロー"
 

	
 
msgid "Unfollow"
 
msgstr "アンフォロー"
 

	
 
msgid "Fork"
 
msgstr "フォーク"
 

	
 
msgid "Create Pull Request"
 
msgstr "プルリクエストを作成"
 

	
 
msgid "Switch To"
 
msgstr "ブランチの切り替え"
 

	
 
msgid "No matches found"
 
msgstr "一致するものが見つかりません"
 

	
 
msgid "Show recent activity"
 
msgstr "最近の活動を表示"
 

	
 
msgid "Public journal"
 
msgstr "公開ジャーナル"
 

	
 
msgid "Show public gists"
 
msgstr "公開 gists を表示"
 

	
 
msgid "Gists"
 
msgstr "Gists"
 

	
 
msgid "All Public Gists"
 
msgstr "すべての公開 Gists"
 

	
 
msgid "My Public Gists"
 
msgstr "公開 Gists"
 

	
 
msgid "My Private Gists"
 
msgstr "非公開 Gists"
 

	
 
msgid "Search in repositories"
 
msgstr "リポジトリから検索"
 

	
 
msgid "My Pull Requests"
 
msgstr "私のプルリクエスト"
 

	
 
msgid "Not Logged In"
 
msgstr "ログインしていません"
 

	
 
msgid "Login to Your Account"
 
msgstr "あなたのアカウントにログイン"
 

	
 
msgid "Log Out"
 
msgstr "ログアウト"
 

	
 
msgid "Parent rev."
 
msgstr "親リビジョン"
 

	
 
msgid "Child rev."
 
msgstr "子リビジョン"
 

	
 
msgid "Create repositories"
 
msgstr "リポジトリを作成する"
 

	
 
msgid "Select this option to allow repository creation for this user"
 
msgstr ""
 
"ユーザーにリポジトリ作成を許可する場合はこのオプションを選んでください"
 

	
 
msgid "Create user groups"
 
msgstr "ユーザーグループを作成"
 

	
 
msgid "Select this option to allow user group creation for this user"
 
msgstr ""
 
"ユーザーにユーザーグループの作成を許可する場合はこのオプションを選んでくだ"
 
"さい"
 

	
 
msgid "Fork repositories"
 
msgstr "リポジトリをフォークする"
 

	
 
msgid "Select this option to allow repository forking for this user"
 
msgstr ""
 
"ユーザーにリポジトリのフォークを許可する場合はこのオプションを選んでくださ"
 
"い"
 

	
 
msgid "Show"
 
msgstr "表示"
 

	
 
msgid "No permissions defined yet"
 
msgstr "まだ権限設定がありません"
 

	
 
msgid "Permission"
 
msgstr "権限"
 

	
 
msgid "Edit Permission"
 
msgstr "権限を編集"
 

	
 
msgid "No permission defined"
 
msgstr "権限が設定されていません"
 

	
 
msgid "Submitting ..."
 
msgstr "送信中..."
 

	
 
msgid "Add Another Comment"
 
msgstr "別のコメントを追加"
 

	
 
msgid "Stop following this repository"
 
msgstr "このリポジトリのフォローをやめる"
 

	
 
msgid "Start following this repository"
 
msgstr "このリポジトリのフォローする"
 

	
 
msgid "Group"
 
msgstr "グループ"
 

	
 
msgid "Loading ..."
 
msgstr "読み込み中..."
 

	
 
msgid "loading ..."
 
msgstr "読み込み中..."
 

	
 
msgid "Search truncated"
 
msgstr "検索結果は省略されています"
 

	
 
msgid "No matching files"
 
msgstr "マッチするファイルはありません"
 

	
 
msgid "Open New Pull Request from {0}"
 
msgstr "新しいプルリクエストを{0}から作成"
 

	
 
msgid "Open New Pull Request for {0} &rarr; {1}"
 
msgstr "{0} &rarr; {1}から新しいプルリクエストを作成する"
 

	
 
msgid "Show Selected Changesets {0} &rarr; {1}"
 
msgstr "選択したチェンジセット{0} &rarr; {0}を表示"
 

	
 
msgid "Collapse Diff"
 
msgstr "差分をたたむ"
 

	
 
msgid "Expand Diff"
 
msgstr "差分を表示"
 

	
 
msgid "No revisions"
kallithea/i18n/ru/LC_MESSAGES/kallithea.po
Show inline comments
 
@@ -1902,769 +1902,769 @@ msgid ""
 
"Set or revoke permission to all children of that group, including non-"
 
"private repositories and other groups if selected."
 
msgstr ""
 
"Установить или отозвать права всех дочерних элементов этой группы, "
 
"включая публичные репозитории и другие группы, если они выбраны."
 

	
 
msgid "Remove this group"
 
msgstr "Удалить группу"
 

	
 
msgid "Confirm to delete this group"
 
msgstr "Подтвердите удаление этой группы пользователей"
 

	
 
msgid "Repository group %s"
 
msgstr "Группа репозиториев %s"
 

	
 
msgid "Repository Groups Administration"
 
msgstr "Администрирование групп репозиториев"
 

	
 
msgid "Number of Top-level Repositories"
 
msgstr "Число репозиториев верхнего уровня"
 

	
 
msgid "Clone remote repository"
 
msgstr "Клонировать удалённый репозиторий"
 

	
 
msgid ""
 
"Optional: URL of a remote repository. If set, the repository will be "
 
"created as a clone from this URL."
 
msgstr ""
 
"Опционально: URL удалённого репозитория. Если параметр задан, то будет "
 
"создан клон репозитория, расположенного по этому адресу."
 

	
 
msgid ""
 
"Keep it short and to the point. Use a README file for longer descriptions."
 
msgstr ""
 
"Короткое и осмысленное. Для развернутого описания используйте файл README."
 

	
 
msgid "Optionally select a group to put this repository into."
 
msgstr "Опционально выбрать группу, в которую поместить данный репозиторий."
 

	
 
msgid "Type of repository to create."
 
msgstr "Тип создаваемого репозитория."
 

	
 
msgid "Landing revision"
 
msgstr "Ревизия для выгрузки"
 

	
 
msgid ""
 
"Default revision for files page, downloads, full text search index and "
 
"readme generation"
 
msgstr ""
 
"Ревизия по умолчанию для страницы файлов, загрузки, полнотекстовый "
 
"поисковый индекс и генерация readme"
 

	
 
msgid "%s Creating Repository"
 
msgstr "Создание репозитория %s"
 

	
 
msgid "Creating repository"
 
msgstr "Создание репозитория"
 

	
 
msgid ""
 
"Repository \"%(repo_name)s\" is being created, you will be redirected "
 
"when this process is finished.repo_name"
 
msgstr ""
 
"Репозиторий «%(repo_name)s» создаётся. Вы будете перенаправлены, когда "
 
"процесс завершится."
 

	
 
msgid ""
 
"We're sorry but error occurred during this operation. Please check your "
 
"Kallithea server logs, or contact administrator."
 
msgstr ""
 
"К сожалению, во время данной операции произошла ошибка. Пожалуйста, "
 
"проверьте журнал сервера Kallithea или свяжитесь с администратором."
 

	
 
msgid "%s Repository Settings"
 
msgstr "Настройки репозитория %s"
 

	
 
msgid "Extra Fields"
 
msgstr "Дополнительные поля"
 

	
 
msgid "Remote"
 
msgstr "Удалённый репозиторий"
 

	
 
msgid "Statistics"
 
msgstr "Статистика"
 

	
 
msgid "Parent"
 
msgstr "Родительская группа"
 

	
 
msgid "Set"
 
msgstr "Набор"
 

	
 
msgid "Manually set this repository as a fork of another from the list."
 
msgstr "Вручную задать этот репозиторий форком репозитория из этого списка."
 

	
 
msgid "Public Journal Visibility"
 
msgstr "Доступ к публичному журналу"
 

	
 
msgid "Remove from public journal"
 
msgstr "Удалить из общедоступного журнала"
 

	
 
msgid "Add to Public Journal"
 
msgstr "Добавить в публичный журнал"
 

	
 
msgid ""
 
"All actions done in this repository will be visible to everyone in the "
 
"public journal."
 
msgstr ""
 
"Все производимые с этим репозиторием действия будут отображаться в "
 
"публичном журнале."
 

	
 
msgid "Confirm to delete this repository: %s"
 
msgstr "Подтвердите удаление этого репозитория: %s"
 

	
 
msgid "Delete this Repository"
 
msgstr "Удалить этот репозиторий"
 

	
 
msgid "This repository has %s fork"
 
msgid_plural "This repository has %s forks"
 
msgstr[0] "Данный репозиторий имеет %s форк"
 
msgstr[1] "Данный репозиторий имеет %s форка"
 
msgstr[2] "Данный репозиторий имеет %s форков"
 

	
 
msgid "Detach forks"
 
msgstr "Отделить форки"
 

	
 
msgid "Delete forks"
 
msgstr "Удалить форки"
 

	
 
msgid ""
 
"The deleted repository will be moved away and hidden until the "
 
"administrator expires it. The administrator can both permanently delete "
 
"it or restore it."
 
msgstr ""
 
"Удаляемый репозиторий будет перемещён и скрыт на срок, определяемый "
 
"администратором. Администратор может либо удалить, либо восстановить "
 
"репозиторий."
 

	
 
msgid "Label"
 
msgstr "Имя"
 

	
 
msgid "Key"
 
msgstr "Ключ"
 

	
 
msgid "Confirm to delete this field: %s"
 
msgstr "Подтвердите удаление этого поля: %s"
 

	
 
msgid "New field key"
 
msgstr "Ключ"
 

	
 
msgid "New field label"
 
msgstr "Имя поля"
 

	
 
msgid "Enter short label"
 
msgstr "Введите краткое имя поля"
 

	
 
msgid "New field description"
 
msgstr "Описание поля"
 

	
 
msgid "Enter description of a field"
 
msgstr "Введите описание поля"
 

	
 
msgid "Extra fields are disabled."
 
msgstr "Дополнительные поля отключены."
 

	
 
msgid "Private Repository"
 
msgstr "Приватный репозиторий"
 

	
 
msgid "Fork of repository"
 
msgstr "Форк репозитория"
 

	
 
msgid "Remote repository URL"
 
msgstr "Ссылка на удалённый репозиторий"
 

	
 
msgid "Pull Changes from Remote Repository"
 
msgstr "Изменения из удалённого репозитория"
 

	
 
msgid "Confirm to pull changes from remote repository."
 
msgstr "Подтвердите применение изменений из удалённого репозитория."
 

	
 
msgid "This repository does not have a remote repository URL."
 
msgstr "Данный репозиторий не имеет URL удалённого репозитория."
 

	
 
msgid "Permanent URL"
 
msgstr "Постоянный URL"
 

	
 
msgid ""
 
"In case this repository is renamed or moved into another group the "
 
"repository URL changes.\n"
 
"                               Using the above permanent URL guarantees "
 
"that this repository always will be accessible on that URL.\n"
 
"                               This is useful for CI systems, or any "
 
"other cases that you need to hardcode the URL into a 3rd party service."
 
msgstr ""
 
"В случае, когда репозиторий переименовывается или перемещается в другую "
 
"группу, URL репозитория изменяется.\n"
 
"                               Использование постоянного URL гарантирует, "
 
"что данный репозиторий всегда будет доступен по этому URL.\n"
 
"                               Это может быть полезно в CI-системах, или "
 
"в любом другом случае, требующем встраивания URL в код ПО."
 

	
 
msgid "Remote repository"
 
msgstr "Удалённый репозиторий"
 

	
 
msgid "Repository URL"
 
msgstr "URL репозитория"
 

	
 
msgid ""
 
"Optional: URL of a remote repository. If set, the repository can be "
 
"pulled from this URL."
 
msgstr ""
 
"Опционально: URL удалённого репозитория. Если задан, то репозиторий можно "
 
"получить по заданному адресу."
 

	
 
msgid "Default revision for files page, downloads, whoosh and readme"
 
msgstr ""
 
"Ревизия по умолчанию, из которой будет производиться выгрузка файлов при "
 
"скачивании"
 

	
 
msgid "Type name of user"
 
msgstr "Введите имя пользователя"
 

	
 
msgid "Change owner of this repository."
 
msgstr "Изменить владельца репозитория."
 

	
 
msgid "Processed commits"
 
msgstr "Обработанные фиксации"
 

	
 
msgid "Processed progress"
 
msgstr "Обработанный прогресс"
 

	
 
msgid "Reset Statistics"
 
msgstr "Сброс статистики"
 

	
 
msgid "Confirm to remove current statistics."
 
msgstr "Подтвердите сброс статистики."
 

	
 
msgid "Repositories Administration"
 
msgstr "Администрирование репозиториев"
 

	
 
msgid "State"
 
msgstr "Состояние"
 

	
 
msgid "Settings Administration"
 
msgstr "Администрирование настроек"
 

	
 
msgid "VCS"
 
msgstr "Контроль версий"
 

	
 
msgid "Remap and Rescan"
 
msgstr "Пересканирование"
 

	
 
msgid "Visual"
 
msgstr "Вид"
 

	
 
msgid "Hooks"
 
msgstr "Хуки"
 

	
 
msgid "Full Text Search"
 
msgstr "Полнотекстовый поиск"
 

	
 
msgid "System Info"
 
msgstr "О системе"
 

	
 
msgid "Send test email to"
 
msgstr "Отправлять пробное сообщение на адрес"
 

	
 
msgid "Send"
 
msgstr "Отправить"
 

	
 
msgid "Site branding"
 
msgstr "Заголовок сайта"
 

	
 
msgid "Set a custom title for your Kallithea Service."
 
msgstr "Задать другое имя для Kallithea Service."
 

	
 
msgid "HTTP authentication realm"
 
msgstr "Приветствие для HTTP-аутентификации"
 

	
 
msgid "HTML/JavaScript/CSS customization block"
 
msgstr "Блок редактирования HTML/JavaScript/CSS"
 

	
 
msgid ""
 
"HTML (possibly with                         JavaScript and/or CSS) that "
 
"will be added to the bottom                         of every page. This "
 
"can be used for web analytics                         systems, but also "
 
"to                         perform instance-specific customizations like "
 
"adding a                         project banner at the top of every page."
 
msgstr ""
 
"Код HTML (можно с                         JavaScript и/или CSS), который "
 
"будет добавлен внизу                         каждой страницы. Может "
 
"использоваться для размещения                         веб-аналитики, но "
 
"также                         и для создания индивидуальных "
 
"модификаций,                         например, для размещения баннера "
 
"проекта                         на каждой странице."
 

	
 
msgid "ReCaptcha public key"
 
msgstr "Открытый ключ reCaptcha"
 

	
 
msgid "Public key for reCaptcha system."
 
msgstr "Открытый ключ системы reCaptcha."
 

	
 
msgid "ReCaptcha private key"
 
msgstr "Закрытый ключ reCaptcha"
 

	
 
msgid ""
 
"Private key for reCaptcha system. Setting this value will enable captcha "
 
"on registration."
 
msgstr ""
 
"Закрытый ключ системы reCaptcha. Задание этого значения включит капчу при "
 
"регистрации."
 

	
 
msgid "Save Settings"
 
msgstr "Сохранить настройки"
 

	
 
msgid "Built-in Mercurial Hooks (Read-Only)"
 
msgstr "Встроенные хуки Mercurial (только чтение)"
 

	
 
msgid "Custom Hooks"
 
msgstr "Пользовательские хуки"
 

	
 
msgid ""
 
"Hooks can be used to trigger actions on certain events such as push / "
 
"pull. They can trigger Python functions or external applications."
 
msgstr ""
 
"Хуки используются для активации действий при определённых событиях, "
 
"например, push/pull-запросах. Могут активироваться функции Python либо "
 
"внешние приложения."
 

	
 
msgid "Failed to remove hook"
 
msgstr "Не удалось удалить хук"
 

	
 
msgid "Rescan options"
 
msgstr "Опции пересканирования"
 

	
 
msgid "Delete records of missing repositories"
 
msgstr "Удалить записи об отсутствующих репозиториях"
 

	
 
msgid ""
 
"Check this option to remove all comments, pull requests and other records "
 
"related to repositories that no longer exist in the filesystem."
 
msgstr ""
 
"Отметьте для удаления всех комментариев, pull-запросов и других записей, "
 
"связанных с репозиториями, которые больше не существуют в файловой "
 
"системе."
 

	
 
msgid "Invalidate cache for all repositories"
 
msgstr "Сбросить кэш для всех репозиториев"
 

	
 
msgid "Check this to reload data and clear cache keys for all repositories."
 
msgstr ""
 
"Отметьте, чтобы перезагрузить данные и очистить ключи кэша у всех "
 
"репозиториев."
 

	
 
msgid "Install Git hooks"
 
msgstr "Установить хуки Git"
 

	
 
msgid ""
 
"Verify if Kallithea's Git hooks are installed for each repository. "
 
"Current hooks will be updated to the latest version."
 
msgstr ""
 
"Проверяет установку Git хуков от Kallithea у каждого репозитория. Текущие "
 
"хуки будут обновлены до последней версии."
 

	
 
msgid "Overwrite existing Git hooks"
 
msgstr "Перезаписать существующие хуки"
 

	
 
msgid ""
 
"If installing Git hooks, overwrite any existing hooks, even if they do "
 
"not seem to come from Kallithea. WARNING: This operation will destroy any "
 
"custom git hooks you may have deployed by hand!"
 
msgstr ""
 
"Перезаписывает все существующие хуки при установке хуков Git, даже если "
 
"они не поставляются с Kallithea. ПРЕДУПРЕЖДЕНИЕ: это действие уничтожит "
 
"любые Git хуки, которые могли быть созданы вручную!"
 

	
 
msgid "Rescan Repositories"
 
msgstr "Пересканировать репозитории"
 

	
 
msgid "Index build option"
 
msgstr "Опции создания индекса"
 

	
 
msgid "Build from scratch"
 
msgstr "Пересобрать"
 

	
 
msgid ""
 
"This option completely reindexeses all of the repositories for proper "
 
"This option completely reindexes all of the repositories for proper "
 
"fulltext search capabilities."
 
msgstr ""
 
"Эта опция полностью переиндексирует все репозитории для корректной работы "
 
"полнотекстового поиска."
 

	
 
msgid "Reindex"
 
msgstr "Перестроить индекс"
 

	
 
msgid "Checking for updates..."
 
msgstr "Поиск обновлений..."
 

	
 
msgid "Kallithea version"
 
msgstr "Версия Kallithea"
 

	
 
msgid "Kallithea configuration file"
 
msgstr "Конфиг. Kallithea"
 

	
 
msgid "Python version"
 
msgstr "Версия Python"
 

	
 
msgid "Platform"
 
msgstr "Платформа"
 

	
 
msgid "Git version"
 
msgstr "Версия Git"
 

	
 
msgid "Git path"
 
msgstr "Путь к Git"
 

	
 
msgid "Python Packages"
 
msgstr "Пакеты Python"
 

	
 
msgid "Show repository size after push"
 
msgstr "Показывать размер репозитория после отправки"
 

	
 
msgid "Update repository after push (hg update)"
 
msgstr "Обновлять репозиторий после отправки (hg update)"
 

	
 
msgid "Mercurial extensions"
 
msgstr "Расширения Mercurial"
 

	
 
msgid "Enable largefiles extension"
 
msgstr "Включить поддержку больших файлов"
 

	
 
msgid "Location of repositories"
 
msgstr "Местонахождение репозиториев"
 

	
 
msgid ""
 
"Click to unlock. You must restart Kallithea in order to make this setting "
 
"take effect."
 
msgstr ""
 
"Нажмите для разблокирования. Изменения вступят в силу после перезагрузки "
 
"Kallithea."
 

	
 
msgid ""
 
"Filesystem location where repositories are stored. After changing this "
 
"value, a restart and rescan of the repository folder are both required."
 
msgstr ""
 
"Путь к репозиториям в файловой системе. После изменения значения "
 
"требуется перезапуск и пересканирование папки с репозиториями."
 

	
 
msgid "General"
 
msgstr "Главное"
 

	
 
msgid "Use repository extra fields"
 
msgstr "Использовать дополнительные поля в репозиториях"
 

	
 
msgid "Allows storing additional customized fields per repository."
 
msgstr "Позволяет хранить дополнительные поля в репозиториях."
 

	
 
msgid "Show Kallithea version"
 
msgstr "Отображать версию Kallithea"
 

	
 
msgid ""
 
"Shows or hides a version number of Kallithea displayed in the footer."
 
msgstr "Показывает или скрывает версию Kallithea внизу страницы."
 

	
 
msgid "Show user Gravatars"
 
msgstr "Отображать Gravatars пользователя"
 

	
 
msgid ""
 
"Gravatar URL allows you to use another avatar server application.\n"
 
"                                                        The following "
 
"variables of the URL will be replaced accordingly.\n"
 
"                                                        {scheme}    "
 
"'http' or 'https' sent from running Kallithea server,\n"
 
"                                                        {email}     user "
 
"email,\n"
 
"                                                        {md5email}  md5 "
 
"hash of the user email (like at gravatar.com),\n"
 
"                                                        {size}      size "
 
"of the image that is expected from the server application,\n"
 
"                                                        {netloc}    "
 
"network location/server host of running Kallithea server"
 
msgstr ""
 
"Поле Gravatar URL позволяет использовать любой другой сервис аватаров.\n"
 
"                                                        В URL можно "
 
"использовать следующие переменные:\n"
 
"                                                        {scheme}    "
 
"используемый протокол, 'http' или 'https',\n"
 
"                                                        {email}     e-"
 
"mail пользователя,\n"
 
"                                                        {md5email}  хэш "
 
"md5 адреса почты пользователя (как на gravatar.com),\n"
 
"                                                        {size}      "
 
"ожидаемый размер изображения,\n"
 
"                                                        {netloc}    "
 
"сетевой путь/адрес хоста сервера Kallithea"
 

	
 
msgid "HTTP Clone URL"
 
msgstr "Ссылка для клонирования по HTTP"
 

	
 
msgid ""
 
"Schema of clone URL construction eg. '{scheme}://{user}@{netloc}/"
 
"{repo}'.\n"
 
"                                                    The following "
 
"variables are available:\n"
 
"                                                    {scheme} 'http' or "
 
"'https' sent from running Kallithea server,\n"
 
"                                                    {user}   current user "
 
"username,\n"
 
"                                                    {netloc} network "
 
"location/server host of running Kallithea server,\n"
 
"                                                    {repo}   full "
 
"repository name,\n"
 
"                                                    {repoid} ID of "
 
"repository, can be used to construct clone-by-id,\n"
 
"                                                    {system_user}  name "
 
"of the Kallithea system user,\n"
 
"                                                    {hostname}  server "
 
"hostname\n"
 
"                                                    "
 
msgstr ""
 
"Схема URL для клонирования, например: '{scheme}://{user}@{netloc}/"
 
"{repo}'.\n"
 
"                                                    Доступны следующие "
 
"переменные:\n"
 
"                                                    {scheme} используемый "
 
"протокол, 'http' or 'https',\n"
 
"                                                    {user}   имя текущего "
 
"пользователя,\n"
 
"                                                    {netloc} сетевой путь/"
 
"адрес хоста сервера Kallithea,\n"
 
"                                                    {repo}   полное имя "
 
"репозитория,\n"
 
"                                                    {repoid} ID "
 
"репозитория, может применяться для клонирования по идентификатору,\n"
 
"                                                    {system_user}  имя "
 
"пользователя Kallithea в системе,\n"
 
"                                                    {hostname}  имя хоста "
 
"севера\n"
 
"                                                    "
 

	
 
msgid "SSH Clone URL"
 
msgstr "Ссылка для клонирования по SSH"
 

	
 
msgid ""
 
"Schema for constructing SSH clone URL, eg. 'ssh://{system_user}"
 
"@{hostname}/{repo}'."
 
msgstr ""
 
"Схема URL для клонирования по SSH, например: 'ssh://{system_user}"
 
"@{hostname}/{repo}'."
 

	
 
msgid "Repository page size"
 
msgstr "Размер страницы репозитория"
 

	
 
msgid ""
 
"Number of items displayed in the repository pages before pagination is "
 
"shown."
 
msgstr ""
 
"Количество элементов на странице репозитория до появления нумерации "
 
"страниц."
 

	
 
msgid "Admin page size"
 
msgstr "Размер страницы администратора"
 

	
 
msgid ""
 
"Number of items displayed in the admin pages grids before pagination is "
 
"shown."
 
msgstr ""
 
"Количество элементов в сетке страницы администратора до появления "
 
"нумерации страниц."
 

	
 
msgid "Icons"
 
msgstr "Иконки"
 

	
 
msgid "Show public repository icon on repositories"
 
msgstr "Показывать иконки публичных репозиториев"
 

	
 
msgid "Show private repository icon on repositories"
 
msgstr "Показывать иконки приватных репозиториев"
 

	
 
msgid "Show public/private icons next to repository names."
 
msgstr "Показывать иконки публичных репозиториев."
 

	
 
msgid "Meta Tagging"
 
msgstr "Метатегирование"
 

	
 
msgid ""
 
"Parses meta tags from the repository description field and turns them "
 
"into colored tags."
 
msgstr ""
 
"Анализирует мета-теги в поле описания репозитория и отображает их в виде "
 
"цветных тегов."
 

	
 
msgid "Stylify recognised meta tags:"
 
msgstr "Стилизовать обнаруженные мета-теги:"
 

	
 
msgid "Add user group"
 
msgstr "Добавить группу пользователей"
 

	
 
msgid "User Groups"
 
msgstr "Группы пользователей"
 

	
 
msgid "Add User Group"
 
msgstr "Добавить группу пользователей"
 

	
 
msgid "Short, optional description for this user group."
 
msgstr "Краткое, опциональное описание этой группы."
 

	
 
msgid "Active"
 
msgstr "Активный"
 

	
 
msgid "%s user group settings"
 
msgstr "Настройки группы %s"
 

	
 
msgid "Show Members"
 
msgstr "Участники"
 

	
 
msgid "User Group: %s"
 
msgstr "Группа пользователей: %s"
 

	
 
msgid "Members"
 
msgstr "Участники"
 

	
 
msgid "Confirm to delete this user group: %s"
 
msgstr "Подтвердите удаление следующей группы пользователей: %s"
 

	
 
msgid "Delete this user group"
 
msgstr "Удалить группу"
 

	
 
msgid "No members yet"
 
msgstr "Нет участников"
 

	
 
msgid "Chosen group members"
 
msgstr "Выбранные участники группы"
 

	
 
msgid "Available members"
 
msgstr "Доступные участники"
 

	
 
msgid "User Groups Administration"
 
msgstr "Администрирование групп пользователей"
 

	
 
msgid "Add user"
 
msgstr "Добавить пользователя"
 

	
 
msgid "Users"
 
msgstr "Пользователи"
 

	
 
msgid "Add User"
 
msgstr "Добавить пользователя"
 

	
 
msgid "Password confirmation"
 
msgstr "Подтверждение пароля"
 

	
 
msgid "%s user settings"
 
msgstr "Настройки пользователя %s"
 

	
 
msgid "Emails"
 
msgstr "Электронная почта"
 

	
 
msgid "User: %s"
 
msgstr "Пользователь: %s"
 

	
 
msgid "Source of Record"
 
msgstr "Источник записи"
 

	
 
msgid "Last Login"
 
msgstr "Последний вход"
 

	
 
msgid "Member of User Groups"
 
msgstr "Член группы"
 

	
 
msgid "Confirm to delete this user: %s"
 
msgstr "Подтвердите удаление пользователя %s"
 

	
 
msgid "Delete this user"
 
msgstr "Удалить пользователя"
 

	
 
msgid "Inherited from %s"
 
msgstr "Унаследовано от %s"
 

	
 
msgid "Name in Source of Record"
 
msgstr "Имя в источнике записи"
 

	
 
msgid "New password confirmation"
 
msgstr "Подтвердите новый пароль"
 

	
 
msgid "Users Administration"
 
msgstr "Администрирование пользователей"
 

	
 
msgid "Auth Type"
 
msgstr "Тип авторизации"
 

	
 
msgid "Server instance: %s"
 
msgstr "Экземпляр сервера: %s"
 

	
 
msgid "Support"
 
msgstr "Поддержка"
 

	
 
msgid "Mercurial repository"
 
msgstr "Репозиторий Mercurial"
 

	
 
msgid "Git repository"
 
msgstr "Git репозиторий"
 

	
 
msgid "Create Fork"
 
msgstr "Создать форк"
 

	
 
msgid "Summary"
 
msgstr "Общие сведения"
 

	
 
msgid "Changelog"
 
msgstr "История изменений"
 

	
 
msgid "Files"
 
msgstr "Файлы"
 

	
 
msgid "Show Pull Requests for %s"
 
msgstr "Показать pull-запросы для %s"
 

	
 
msgid "Pull Requests"
 
msgstr "Pull-запросы"
 

	
 
msgid "Options"
 
msgstr "Опции"
 

	
 
msgid "Compare Fork"
 
msgstr "Сравнить форки"
 

	
 
msgid "Compare"
 
msgstr "Сравнить"
 

	
 
msgid "Search"
 
msgstr "Поиск"
 

	
 
msgid "Follow"
 
msgstr "Подписаться"
 

	
 
msgid "Unfollow"
 
msgstr "Отписаться"
 

	
 
msgid "Fork"
 
msgstr "Форк"
 

	
 
msgid "Create Pull Request"
 
msgstr "Создать pull-запрос"
 

	
 
msgid "Switch To"
 
msgstr "Переключиться на"
 

	
 
msgid "No matches found"
 
msgstr "Совпадений не найдено"
 

	
 
msgid "Show recent activity"
 
msgstr "Показать последнюю активность"
 

	
 
msgid "Public journal"
 
msgstr "Общедоступный журнал"
 

	
 
msgid "Show public gists"
 
msgstr "Показать публичные записи"
 

	
 
msgid "Gists"
 
msgstr "Gist"
 

	
 
msgid "All Public Gists"
 
msgstr "Все публичные Gist-записи"
 

	
 
msgid "My Public Gists"
 
msgstr "Мои публичные Gist-записи"
 

	
 
msgid "My Private Gists"
 
msgstr "Мои приватные Gist-записи"
kallithea/i18n/uk/LC_MESSAGES/kallithea.po
Show inline comments
 
@@ -996,755 +996,755 @@ msgid "Group name"
 
msgstr "Назва групи"
 

	
 
msgid "Group parent"
 
msgstr "Батьківська група"
 

	
 
msgid "Copy parent group permissions"
 
msgstr "Копіювання дозволів батьківської групи"
 

	
 
msgid "Copy permission set from parent repository group."
 
msgstr "Скопіюйте набір дозволів із батьківської групи репозиторію."
 

	
 
msgid "Add Child Group"
 
msgstr "Додати Дочіру групу"
 

	
 
msgid "Settings"
 
msgstr "Параметри"
 

	
 
msgid "Advanced"
 
msgstr "Додатково"
 

	
 
msgid "Permissions"
 
msgstr "Дозволи"
 

	
 
msgid "Repository Group: %s"
 
msgstr "Група репозиторію: %s"
 

	
 
msgid "Top level repositories"
 
msgstr "Репозиторії верхнього рівня"
 

	
 
msgid "Total repositories"
 
msgstr "Всього репозиторіїв"
 

	
 
msgid "Children groups"
 
msgstr "Дочірні групи"
 

	
 
msgid "Created on"
 
msgstr "Створено о"
 

	
 
msgid "Delete this repository group"
 
msgstr "Видалити цю групу репозиторіїв"
 

	
 
msgid "Not visible"
 
msgstr "Не видно"
 

	
 
msgid "Visible"
 
msgstr "Видно"
 

	
 
msgid "Add repos"
 
msgstr "Додати репозиторій"
 

	
 
msgid "Add/Edit groups"
 
msgstr "Додавання/редагування груп"
 

	
 
msgid "User/User Group"
 
msgstr "Група користувачів/користувачів"
 

	
 
msgid "Default"
 
msgstr "За промовчанням"
 

	
 
msgid "Revoke"
 
msgstr "Відкликати"
 

	
 
msgid "Add new"
 
msgstr "Додати новий"
 

	
 
msgid "Apply to children"
 
msgstr "Застосовувати до дочірніх"
 

	
 
msgid "Both"
 
msgstr "Обидва"
 

	
 
msgid ""
 
"Set or revoke permission to all children of that group, including non-"
 
"private repositories and other groups if selected."
 
msgstr ""
 
"Встановіть або скасуйте дозвіл для всіх дітей цієї групи, включно з "
 
"неприватними репозиторіями та іншими групами, якщо вони вибрані."
 

	
 
msgid "Remove this group"
 
msgstr "Видалити цю групу"
 

	
 
msgid "Confirm to delete this group"
 
msgstr "Підтвердіть, щоб видалити цю групу"
 

	
 
msgid "Repository group %s"
 
msgstr "Група репозиторію: %s"
 

	
 
msgid "Repository Groups Administration"
 
msgstr "Адміністрування Груп Репозиторіїв"
 

	
 
msgid "Number of Top-level Repositories"
 
msgstr "Кількість репозиторіїв верхнього рівня"
 

	
 
msgid "Clone remote repository"
 
msgstr "Клонувати віддалений репозиторій"
 

	
 
msgid "Optionally select a group to put this repository into."
 
msgstr "За бажанням виберіть групу, в яку буде розміщено цей репозиторій."
 

	
 
msgid "Type of repository to create."
 
msgstr "Тип сховища для створення."
 

	
 
msgid "Landing revision"
 
msgstr "Цільова редакція"
 

	
 
msgid ""
 
"Default revision for files page, downloads, full text search index and "
 
"readme generation"
 
msgstr ""
 
"Стандартна редакція для файлів сторінок, завантажень, повнотекстового "
 
"індексу пошуку та генерації readme"
 

	
 
msgid "%s Creating Repository"
 
msgstr "%s створення репозиторію"
 

	
 
msgid "Creating repository"
 
msgstr "Створення репозиторію"
 

	
 
msgid ""
 
"Repository \"%(repo_name)s\" is being created, you will be redirected "
 
"when this process is finished.repo_name"
 
msgstr ""
 
"Репозиторій \"%(repo_name)s\" створюється, ви будете переспрямовані, коли "
 
"цей процес буде завершено.repo_name"
 

	
 
msgid ""
 
"We're sorry but error occurred during this operation. Please check your "
 
"Kallithea server logs, or contact administrator."
 
msgstr ""
 
"Вибачте, але помилка сталася під час виконання цієї операції. Будь ласка, "
 
"перевірте журнали сервера Kallithea або зверніться до адміністратора."
 

	
 
msgid "%s Repository Settings"
 
msgstr "Параметри репозиторію %s"
 

	
 
msgid "Extra Fields"
 
msgstr "Додаткові поля"
 

	
 
msgid "Remote"
 
msgstr "Віддалений"
 

	
 
msgid "Statistics"
 
msgstr "Статистика"
 

	
 
msgid "Parent"
 
msgstr "Батьківський"
 

	
 
msgid "Set"
 
msgstr "Набір"
 

	
 
msgid "Manually set this repository as a fork of another from the list."
 
msgstr "Вручну встановити цей репозиторій як відгалуження іншого зі списку."
 

	
 
msgid "Public Journal Visibility"
 
msgstr "Видимість публічного журналу"
 

	
 
msgid "Remove from public journal"
 
msgstr "Видалити з публічного журналу"
 

	
 
msgid "Add to Public Journal"
 
msgstr "Додати до публічного журналу"
 

	
 
msgid ""
 
"All actions done in this repository will be visible to everyone in the "
 
"public journal."
 
msgstr ""
 
"Усі дії, зроблені в цьому репозиторії, будуть видимими для всіх у "
 
"публічному журналі."
 

	
 
msgid "Confirm to delete this repository: %s"
 
msgstr "Підтвердити видалення цього сховища: %s"
 

	
 
msgid "Delete this Repository"
 
msgstr "Видалити цей репозиторій"
 

	
 
msgid "Detach forks"
 
msgstr "Від'єднати forks"
 

	
 
msgid "Delete forks"
 
msgstr "Видалити forks"
 

	
 
msgid "Label"
 
msgstr "Мітка"
 

	
 
msgid "Key"
 
msgstr "Ключ"
 

	
 
msgid "Confirm to delete this field: %s"
 
msgstr "Підтвердити видалення цього поля: %s"
 

	
 
msgid "New field key"
 
msgstr "Новий ключ поля"
 

	
 
msgid "New field label"
 
msgstr "Нова мітка поля"
 

	
 
msgid "Enter short label"
 
msgstr "Введіть коротку мітку"
 

	
 
msgid "New field description"
 
msgstr "Опис нового поля"
 

	
 
msgid "Enter description of a field"
 
msgstr "Введіть опис поля"
 

	
 
msgid "Extra fields are disabled."
 
msgstr "Додаткові поля вимкнено."
 

	
 
msgid "Private Repository"
 
msgstr "Приватний Репозиторій"
 

	
 
msgid "Fork of repository"
 
msgstr "Форк репозиторію"
 

	
 
msgid "Remote repository URL"
 
msgstr "URL-адреса віддаленого сховища"
 

	
 
msgid "Pull Changes from Remote Repository"
 
msgstr "Витягнути зміни з віддаленого сховища"
 

	
 
msgid "Confirm to pull changes from remote repository."
 
msgstr "Підтвердьте, щоб витягнути зміни з віддаленого сховища."
 

	
 
msgid "This repository does not have a remote repository URL."
 
msgstr "У цьому сховищі немає URL-адреси віддаленого сховища."
 

	
 
msgid "Remote repository"
 
msgstr "Віддалений репозиторій"
 

	
 
msgid "Repository URL"
 
msgstr "URL репозиторію"
 

	
 
msgid ""
 
"Optional: URL of a remote repository. If set, the repository can be "
 
"pulled from this URL."
 
msgstr ""
 
"Опціонально: URL-адреса віддаленого сховища. Якщо встановлено, сховище "
 
"можна витягнути з цієї URL-адреси."
 

	
 
msgid "Type name of user"
 
msgstr "Введіть ім'я користувача"
 

	
 
msgid "Change owner of this repository."
 
msgstr "Змінити власника цього сховища."
 

	
 
msgid "Processed commits"
 
msgstr "Оброблені коміти"
 

	
 
msgid "Processed progress"
 
msgstr "Оброблений прогрес"
 

	
 
msgid "Reset Statistics"
 
msgstr "Скинути статистику"
 

	
 
msgid "Confirm to remove current statistics."
 
msgstr "Підтвердьте видалення поточної статистики."
 

	
 
msgid "Repositories Administration"
 
msgstr "Адміністрування Репозиторіїв"
 

	
 
msgid "State"
 
msgstr "Стан"
 

	
 
msgid "Settings Administration"
 
msgstr "Адміністрування параметрів"
 

	
 
msgid "VCS"
 
msgstr "VCS"
 

	
 
msgid "Remap and Rescan"
 
msgstr "Ремап та Рескан"
 

	
 
msgid "Visual"
 
msgstr "Візуальний"
 

	
 
msgid "Hooks"
 
msgstr "Хуки"
 

	
 
msgid "Full Text Search"
 
msgstr "Повнотекстовий пошук"
 

	
 
msgid "System Info"
 
msgstr "Інформація про систему"
 

	
 
msgid "Send test email to"
 
msgstr "Надіслати тестовий лист на адресу"
 

	
 
msgid "Send"
 
msgstr "Надіслати"
 

	
 
msgid "Site branding"
 
msgstr "Брендинг сайту"
 

	
 
msgid "Set a custom title for your Kallithea Service."
 
msgstr "Встановіть власну назву для Сервісу Kallithea."
 

	
 
msgid "HTTP authentication realm"
 
msgstr "Область автентифікації HTTP"
 

	
 
msgid "HTML/JavaScript/CSS customization block"
 
msgstr "HTML/JavaScript/CSS блок налаштування"
 

	
 
msgid "ReCaptcha public key"
 
msgstr "ReCaptcha публічний ключ"
 

	
 
msgid "Public key for reCaptcha system."
 
msgstr "Публічний ключ для системи reCaptcha."
 

	
 
msgid "ReCaptcha private key"
 
msgstr "Приватний ключ ReCaptcha"
 

	
 
msgid ""
 
"Private key for reCaptcha system. Setting this value will enable captcha "
 
"on registration."
 
msgstr ""
 
"Приватний ключ для системи reCaptcha. Встановлення цього значення "
 
"дозволить вмикнути капчу при реєстрації."
 

	
 
msgid "Save Settings"
 
msgstr "Зберегти налаштування"
 

	
 
msgid "Built-in Mercurial Hooks (Read-Only)"
 
msgstr "Вбудовані хуки Mercurial (лише для читання)"
 

	
 
msgid "Custom Hooks"
 
msgstr "Користувацькі хуки"
 

	
 
msgid "Failed to remove hook"
 
msgstr "Не вдалося видалити хук"
 

	
 
msgid "Rescan options"
 
msgstr "Параметри пересканування"
 

	
 
msgid "Delete records of missing repositories"
 
msgstr "Видалення записів відсутніх репозиторіїв"
 

	
 
msgid ""
 
"Check this option to remove all comments, pull requests and other records "
 
"related to repositories that no longer exist in the filesystem."
 
msgstr ""
 
"Позначте цей пункт, щоб видалити всі коментарі, запити на пул-реквести та "
 
"інші записи, пов'язані з репозиторіями, які більше не існують в файловій "
 
"системі."
 

	
 
msgid "Invalidate cache for all repositories"
 
msgstr "Скинути кеш для всіх репозиторіїв"
 

	
 
msgid "Check this to reload data and clear cache keys for all repositories."
 
msgstr ""
 
"Відмітьте це, щоб перезавантажити дані і очистити ключі кешу для всіх "
 
"репозиторіїв."
 

	
 
msgid "Install Git hooks"
 
msgstr "Встановити Git хуки"
 

	
 
msgid ""
 
"Verify if Kallithea's Git hooks are installed for each repository. "
 
"Current hooks will be updated to the latest version."
 
msgstr ""
 
"Перевірити, чи є в Git хуки для кожного репозиторію. Поточні хуки буде "
 
"оновлено до останньої версії."
 

	
 
msgid "Overwrite existing Git hooks"
 
msgstr "Перезаписати існуючі хуки Git"
 

	
 
msgid ""
 
"If installing Git hooks, overwrite any existing hooks, even if they do "
 
"not seem to come from Kallithea. WARNING: This operation will destroy any "
 
"custom git hooks you may have deployed by hand!"
 
msgstr ""
 
"При установці Git хуків, перезаписати будь-які існуючі хуки, навіть якщо "
 
"вони, здається, не приходять з Каллітея. Увага: ця операція знищить будь-"
 
"які користувацькі хуки Git які ви, можливо, розгорнули вручну!"
 

	
 
msgid "Rescan Repositories"
 
msgstr "Пересканувати Репозиторії"
 

	
 
msgid "Index build option"
 
msgstr "Параметри побудови індексу"
 

	
 
msgid "Build from scratch"
 
msgstr "Побудувати з нуля"
 

	
 
msgid ""
 
"This option completely reindexeses all of the repositories for proper "
 
"This option completely reindexes all of the repositories for proper "
 
"fulltext search capabilities."
 
msgstr ""
 
"Цей варіант повністю переіндексує репозиторії для правильного "
 
"функціонування повнотекстового пошуку."
 

	
 
msgid "Reindex"
 
msgstr "Переіндексувати"
 

	
 
msgid "Checking for updates..."
 
msgstr "Перевірка оновлень..."
 

	
 
msgid "Kallithea version"
 
msgstr "Версія Kallithea"
 

	
 
msgid "Kallithea configuration file"
 
msgstr "Файл конфігурації Kallithea"
 

	
 
msgid "Python version"
 
msgstr "Версія Python"
 

	
 
msgid "Platform"
 
msgstr "Платформа"
 

	
 
msgid "Git version"
 
msgstr "Git версія"
 

	
 
msgid "Git path"
 
msgstr "Git шлях"
 

	
 
msgid "Python Packages"
 
msgstr "Пакети Python"
 

	
 
msgid "Show repository size after push"
 
msgstr "Показати розмір сховища після push"
 

	
 
msgid "Update repository after push (hg update)"
 
msgstr "Оновлення репозиторію після push (hg update)"
 

	
 
msgid "Mercurial extensions"
 
msgstr "Mercurial  розширення"
 

	
 
msgid "Enable largefiles extension"
 
msgstr "Увімкнути розширення largefiles"
 

	
 
msgid "Location of repositories"
 
msgstr "Розташування репозиторіїв"
 

	
 
msgid ""
 
"Click to unlock. You must restart Kallithea in order to make this setting "
 
"take effect."
 
msgstr ""
 
"Клацніть, щоб розблокувати. Ви повинні перезапустити Kallithea для того, "
 
"щоб ця настройка набула чинності."
 

	
 
msgid "General"
 
msgstr "Загальні"
 

	
 
msgid "Use repository extra fields"
 
msgstr "Використовувати додаткові поля сховища"
 

	
 
msgid "Allows storing additional customized fields per repository."
 
msgstr "Дозволяє зберігати додаткові настроювані поля для кожного сховища."
 

	
 
msgid "Show Kallithea version"
 
msgstr "Показати версію Kallithea"
 

	
 
msgid ""
 
"Shows or hides a version number of Kallithea displayed in the footer."
 
msgstr ""
 
"Показує або приховує номер версії Kallithea, відображений у нижньому "
 
"колонтитулі."
 

	
 
msgid "Show user Gravatars"
 
msgstr "Показати Gravatars користувача"
 

	
 
msgid "Repository page size"
 
msgstr "Розмір сторінки репозиторію"
 

	
 
msgid ""
 
"Number of items displayed in the repository pages before pagination is "
 
"shown."
 
msgstr ""
 
"Кількість елементів, що відображаються на сторінках сховища перед "
 
"показаним нумерацією."
 

	
 
msgid "Admin page size"
 
msgstr "Розмір адмін сторінки"
 

	
 
msgid ""
 
"Number of items displayed in the admin pages grids before pagination is "
 
"shown."
 
msgstr ""
 
"Кількість елементів, що відображаються в сітках адміністратора сторінки "
 
"до відображення нумерації."
 

	
 
msgid "Icons"
 
msgstr "Іконки"
 

	
 
msgid "Show public repository icon on repositories"
 
msgstr "Показати піктограму загальнодоступного сховища на сховищах"
 

	
 
msgid "Show private repository icon on repositories"
 
msgstr "Показати значок приватної репозиторію на репозиторіїв"
 

	
 
msgid "Show public/private icons next to repository names."
 
msgstr "Показати публічні/приватні значки поруч із назвами сховищ."
 

	
 
msgid "Meta Tagging"
 
msgstr "Мета-теги"
 

	
 
msgid "Active"
 
msgstr "Активний"
 

	
 
msgid "Files"
 
msgstr "Файли"
 

	
 
msgid "Pull Requests"
 
msgstr "Запити Pull Requests"
 

	
 
msgid "Options"
 
msgstr "Параметри"
 

	
 
msgid "Compare Fork"
 
msgstr "Порівняти Вилки"
 

	
 
msgid "Compare"
 
msgstr "Порівняти"
 

	
 
msgid "Search"
 
msgstr "Пошук"
 

	
 
msgid "Follow"
 
msgstr "Слідувати"
 

	
 
msgid "Unfollow"
 
msgstr "Не слідкувати"
 

	
 
msgid "Fork"
 
msgstr "Форк"
 

	
 
msgid "Create Pull Request"
 
msgstr "Створити Pull-Запит"
 

	
 
msgid "Switch To"
 
msgstr "Переключитися на"
 

	
 
msgid "No matches found"
 
msgstr "Збігів не знайдено"
 

	
 
msgid "Show recent activity"
 
msgstr "Показати недавню активність"
 

	
 
msgid "Public journal"
 
msgstr "Публічний журнал"
 

	
 
msgid "Gists"
 
msgstr "Gists"
 

	
 
msgid "Search in repositories"
 
msgstr "Пошук в репозиторіях"
 

	
 
msgid "Login to Your Account"
 
msgstr "Увійти в свій аккаунт"
 

	
 
msgid "Forgot password?"
 
msgstr "Забули пароль?"
 

	
 
msgid "Don't have an account?"
 
msgstr "Не маєте облікового запису?"
 

	
 
msgid "Log Out"
 
msgstr "Вийти"
 

	
 
msgid "Create repositories"
 
msgstr "Створення репозиторіїв"
 

	
 
msgid "Create user groups"
 
msgstr "Створення груп користувачів"
 

	
 
msgid "Show"
 
msgstr "Показати"
 

	
 
msgid "No permissions defined yet"
 
msgstr "Ще не визначено жодних дозволів"
 

	
 
msgid "Permission"
 
msgstr "Права"
 

	
 
msgid "Edit Permission"
 
msgstr "Змінити права"
 

	
 
msgid "Retry"
 
msgstr "Повторити"
 

	
 
msgid "Submitting ..."
 
msgstr "Надсилання…"
 

	
 
msgid "Unable to post"
 
msgstr "Не вдається опублікувати"
 

	
 
msgid "Add Another Comment"
 
msgstr "Додати ще один коментар"
 

	
 
msgid "Group"
 
msgstr "Група"
 

	
 
msgid "Loading ..."
 
msgstr "Завантаження..."
 

	
 
msgid "loading ..."
 
msgstr "завантаження..."
 

	
 
msgid "Search truncated"
 
msgstr "Пошук усічений"
 

	
 
msgid "No matching files"
 
msgstr "Немає відповідних файлів"
 

	
 
msgid "Collapse Diff"
 
msgstr "Згорнути відмінності"
 

	
 
msgid "Expand Diff"
 
msgstr "Розгорнути відмінність"
 

	
 
msgid "No revisions"
 
msgstr "Немає змін"
 

	
 
msgid "Failed to revoke permission"
 
msgstr "Не вдалося відкликати дозвіл"
 

	
 
msgid "Select changeset"
 
msgstr "Виберіть набір змін"
 

	
 
msgid "Specify changeset"
 
msgstr "Укажіть набір змін"
 

	
 
msgid "Click to sort ascending"
 
msgstr "Натисніть для сортування за зростанням"
 

	
 
msgid "Click to sort descending"
 
msgstr "Натисніть для сортування за спаданням"
 

	
 
msgid "No records found."
 
msgstr "Записів не знайдено."
 

	
 
msgid "Data error."
 
msgstr "Помилка даних."
 

	
 
msgid "Loading..."
 
msgstr "Завантаження..."
 

	
 
msgid "Clear selection"
 
msgstr "Зняти позначення"
 

	
 
msgid "There are no changes yet"
 
msgstr "Поки що немає змін"
 

	
 
msgid "Removed"
 
msgstr "Вилучено"
 

	
 
msgid "Changed"
 
msgstr "Змінено"
 

	
 
msgid "Added"
 
msgstr "Додано"
 

	
 
msgid "Expand commit message"
 
msgstr "Розгорнути повідомлення про фіксацію"
 

	
 
msgid "%s comments"
 
msgstr "%s коментарів"
 

	
 
msgid "Bookmark %s"
 
msgstr "Закладка %s"
 

	
 
msgid "Tag %s"
 
msgstr "Тег %s"
 

	
 
msgid "Branch %s"
 
msgstr "Branch %s"
 

	
 
msgid "%s Changeset"
 
msgstr "%s Changeset"
 

	
 
msgid "Changeset status"
 
msgstr "Стан набору змін"
 

	
 
msgid "Merge"
 
msgstr "Злити"
 

	
 
msgid "Replaced by:"
 
msgstr "Замінено на:"
 

	
 
msgid "Show full diff anyway"
 
msgstr "Все одно Відображати всі відмінності"
 

	
 
msgid "comment"
 
msgstr "коментар"
 

	
 
msgid "No title"
 
msgstr "Без назви"
 

	
 
msgid "Status change:"
 
msgstr "Зміна статусу:"
 

	
 
msgid "files"
 
msgstr "файли"
 

	
 
msgid "Show more"
 
msgstr "Показати більше"
 

	
 
msgid "files changed"
 
msgstr "файли змінено"
 

	
 
msgid "files removed"
 
msgstr "вилучені файли"
 

	
 
msgid "commit"
 
msgstr "Фіксація"
 

	
 
msgid "file added"
 
msgstr "файл додано"
 

	
 
msgid "file changed"
 
msgstr "файл змінено"
 

	
 
msgid "file removed"
 
msgstr "файл видалено"
 

	
 
msgid "Fork of"
 
msgstr "Відгалуження з"
 

	
 
msgid "Clone from"
 
msgstr "Клонувати з"
 

	
 
msgid "Clone URL"
 
msgstr "URL клону"
 

	
 
msgid "Trending files"
 
msgstr "Популярні файли"
 

	
 
msgid "Download"
 
msgstr "Завантажити"
 

	
 
msgid "There are no downloads yet"
 
msgstr "Завантажень немає"
 

	
 
msgid "Downloads are disabled for this repository"
 
msgstr "Завантаження відключені для цього репозиторію"
 

	
 
msgid "Download as zip"
 
msgstr "Скачати як zip"
 

	
 
msgid "With subrepos"
 
msgstr "З підрепо"
 

	
 
msgid "Feed"
 
msgstr "Канал"
 

	
 
msgid "Latest Changes"
 
msgstr "Останні зміни"
 

	
 
msgid "Quick Start"
 
msgstr "Швидкий старт"
 

	
 
msgid "Add or upload files directly via Kallithea"
 
msgstr "Додайте або завантажте файли безпосередньо через Kallithea"
 

	
 
msgid "Existing repository?"
 
msgstr "Існуючий репозиторій?"
kallithea/templates/admin/settings/settings_search.html
Show inline comments
 
${h.form(url('admin_settings_search'), method='post')}
 
    <div class="form">
 
            <div class="form-group">
 
                <label class="control-label">${_('Index build option')}:</label>
 
                <div>
 
                    <div class="checkbox">
 
                        <label>
 
                            ${h.checkbox('full_index',True)}
 
                            ${_('Build from scratch')}
 
                        </label>
 
                    </div>
 
                    <span class="help-block">${_('This option completely reindexeses all of the repositories for proper fulltext search capabilities.')}</span>
 
                    <span class="help-block">${_('This option completely reindexes all of the repositories for proper fulltext search capabilities.')}</span>
 
                </div>
 
            </div>
 

	
 
            <div class="form-group">
 
                <div class="buttons">
 
                    ${h.submit('reindex',_('Reindex'),class_="btn btn-default")}
 
                </div>
 
            </div>
 
    </div>
 
${h.end_form()}
kallithea/templates/changelog/changelog_table.html
Show inline comments
 
## Render changelog table with id 'changesets' with the range of changesets,
 
## statuses, and comments.
 
## Optionally, pass a js snippet to run whenever a table resize is triggered.
 
<%def name="changelog(repo_name, cs_range, cs_statuses, cs_comments, show_checkbox=False, show_branch=True, show_index=False, resize_js='')">
 
    <% num_cs = len(cs_range) %>
 
    <table class="table" id="changesets">
 
    <tbody>
 
      %for cnt,cs in enumerate(cs_range):
 
      <tr id="chg_${cnt+1}" class="${'mergerow' if len(cs.parents) > 1 else ''}">
 
        %if show_checkbox:
 
        <td class="checkbox-column">
 
          ${h.checkbox(cs.raw_id,class_="changeset_range")}
 
        </td>
 
        %endif
 
        %if show_index:
 
        <td class="changeset-logical-index">
 
          <%
 
              index = num_cs - cnt
 
              if index == 1:
 
                  title = _('First (oldest) changeset in this list')
 
              elif index == num_cs:
 
                  title = _('Last (most recent) changeset in this list')
 
              else:
 
                  title = _('Position in this list of changesets')
 
          %>
 
          <span data-toggle="tooltip" title="${title}">
 
            ${index}
 
          </span>
 
        </td>
 
        %endif
 
        <td class="status">
 
          %if cs_statuses.get(cs.raw_id):
 
            %if cs_statuses.get(cs.raw_id)[2]:
 
              <a data-toggle="tooltip"
 
                  title="${_('Changeset status: %s by %s\nClick to open associated pull request %s') % (cs_statuses.get(cs.raw_id)[1], cs_statuses.get(cs.raw_id)[5].username, cs_statuses.get(cs.raw_id)[4])}"
 
                  href="${h.url('pullrequest_show',repo_name=cs_statuses.get(cs.raw_id)[3],pull_request_id=cs_statuses.get(cs.raw_id)[2])}">
 
                <i class="icon-circle changeset-status-${cs_statuses.get(cs.raw_id)[0]}"></i>
 
              </a>
 
            %else:
 
              <a data-toggle="tooltip"
 
                  title="${_('Changeset status: %s by %s') % (cs_statuses.get(cs.raw_id)[1], cs_statuses.get(cs.raw_id)[5].username)}"
 
                  href="${cs_comments[cs.raw_id][0].url()}">
 
                <i class="icon-circle changeset-status-${cs_statuses.get(cs.raw_id)[0]}"></i>
 
              </a>
 
            %endif
 
          %endif
 
        </td>
 
        <td class="author" data-toggle="tooltip" title="${cs.author}">
 
          ${h.gravatar(h.email_or_none(cs.author), size=16)}
 
          <span class="user">${h.person(cs.author)}</span>
 
        </td>
 
        <td class="hash">
 
          ${h.link_to(h.show_id(cs),h.url('changeset_home',repo_name=repo_name,revision=cs.raw_id), class_='changeset_hash')}
 
        </td>
 
        <td class="date">
 
          <div data-toggle="tooltip" title="${h.fmt_date(cs.date)}">${h.age(cs.date,True)}</div>
 
        </td>
 
        <% message_lines = cs.message.splitlines() %>
 
        <% message_lines = cs.message.strip().splitlines() or [_("(No commit message)")] %>
 
        %if len(message_lines) > 1:
 
        <td class="expand_commit" title="${_('Expand commit message')}">
 
          <i class="icon-align-left"></i>
 
        </td>
 
        %else:
 
        <td class="expand_commit"></td>
 
        %endif
 
        <td class="mid">
 
          <div class="log-container">
 
            <div class="message">
 
              <div class="message-firstline">${h.urlify_text(message_lines[0], c.repo_name,h.url('changeset_home',repo_name=repo_name,revision=cs.raw_id))}</div>
 
              %if len(message_lines) > 1:
 
              <div class="message-full hidden">${h.urlify_text(cs.message, repo_name)}</div>
 
              %endif
 
            </div>
 
            <div class="extra-container">
 
              %if cs_comments.get(cs.raw_id):
 
                <a class="comments-container comments-cnt" href="${cs_comments[cs.raw_id][0].url()}" data-toggle="tooltip" title="${_('%s comments') % len(cs_comments[cs.raw_id])}">${len(cs_comments[cs.raw_id])}<i class="icon-comment-discussion"></i>
 
                </a>
 
              %endif
 
              %for book in cs.bookmarks:
 
                <span class="label label-bookmark" title="${_('Bookmark %s') % book}">${h.link_to(book,h.url('changeset_home',repo_name=repo_name,revision=cs.raw_id))}</span>
 
              %endfor
 
              %for tag in cs.tags:
 
                <span class="label label-tag" title="${_('Tag %s') % tag}">${h.link_to(tag,h.url('changeset_home',repo_name=repo_name,revision=cs.raw_id))}</span>
 
              %endfor
 
              %if cs.bumped:
 
                <span class="label label-bumped" title="Bumped">Bumped</span>
 
              %endif
 
              %if cs.divergent:
 
                <span class="label label-divergent" title="Divergent">Divergent</span>
 
              %endif
 
              %if cs.extinct:
 
                <span class="label label-extinct" title="Extinct">Extinct</span>
 
              %endif
 
              %if cs.unstable:
 
                <span class="label label-unstable" title="Unstable">Unstable</span>
 
              %endif
 
              %if cs.phase:
 
                <span class="label label-phase" title="Phase">${cs.phase}</span>
 
              %endif
 
              %if show_branch:
 
                %for branch in cs.branches:
 
                  <span class="label label-branch" title="${_('Branch %s' % branch)}">${h.link_to(branch,h.url('changelog_home',repo_name=repo_name,branch=branch))}</span>
 
                %endfor
 
              %endif
 
            </div>
 
          </div>
 
        </td>
 
      </tr>
 
      %endfor
 
    </tbody>
 
    </table>
 

	
 
<script>
 
  'use strict';
 
  $(document).ready(function() {
 
    $('#changesets .expand_commit').on('click',function(){
 
      $(this).next('.mid').find('.message > div').toggleClass('hidden');
 
      ${resize_js};
 
    });
 
  });
 
</script>
 
</%def>
kallithea/templates/pullrequests/pullrequest_show.html
Show inline comments
 
<%inherit file="/base/base.html"/>
 

	
 
<%namespace name="comment" file="/changeset/changeset_file_comment.html"/>
 

	
 
<%block name="title">
 
    ${_('%s Pull Request %s') % (c.repo_name, c.pull_request.nice_id())}
 
</%block>
 

	
 
<%def name="breadcrumbs_links()">
 
    ${_('Pull request %s from %s#%s') % (c.pull_request.nice_id(), c.pull_request.org_repo.repo_name, c.cs_branch_name)}
 
</%def>
 

	
 
<%block name="header_menu">
 
    ${self.menu('repositories')}
 
</%block>
 

	
 
<%def name="main()">
 
<% editable = not c.pull_request.is_closed() and (h.HasPermissionAny('hg.admin')() or h.HasRepoPermissionLevel('admin')(c.repo_name) or c.pull_request.owner_id == request.authuser.user_id) %>
 
${self.repo_context_bar('showpullrequest')}
 
<div class="panel panel-primary">
 
  <div class="panel-heading clearfix">
 
    ${self.breadcrumbs()}
 
  </div>
 

	
 
  ${h.form(url('pullrequest_post', repo_name=c.repo_name, pull_request_id=c.pull_request.pull_request_id), method='post', id='pull_request_form',class_='panel-body')}
 
    <div class="form pr-box pull-left">
 
      <div class="pr-details-title ${'closed' if c.pull_request.is_closed() else ''}">
 
        <h3>
 
          ${_('Title')}: ${h.urlify_text(c.pull_request.title, c.pull_request.org_repo.repo_name)}
 
          %if c.pull_request.is_closed():
 
              (${_('Closed')})
 
          %endif
 
        </h3>
 
      </div>
 
      <div id="pr-summary">
 

	
 
        <div class="pr-not-edit form-group">
 
            <label>${_('Description')}:
 
            %if editable:
 
            <div id="pr-edit-btn">
 
              <a class="btn btn-default btn-xs" onclick="$('.pr-do-edit').show();$('.pr-not-edit').hide()">${_("Edit")}</a>
 
            </div>
 
            %endif
 
            </label>
 
            <div>
 
              <div class="formatted-fixed">${h.urlify_text(c.pull_request.description, c.pull_request.org_repo.repo_name)}</div>
 
            </div>
 
        </div>
 

	
 
        %if editable:
 
        <div class="pr-do-edit form-group" style="display:none">
 
              <label for="pullrequest_title">${_('Title')}:</label>
 
              <div>
 
                  ${h.text('pullrequest_title',class_='form-control',value=c.pull_request.title,placeholder=_('Summarize the changes'))}
 
              </div>
 
        </div>
 

	
 
        <div class="pr-do-edit form-group" style="display:none">
 
              <label for="pullrequest_desc">${_('Description')}:</label>
 
              <div>
 
                  ${h.textarea('pullrequest_desc',content=c.pull_request.description,placeholder=_('Write a short description on this pull request'),class_='form-control')}
 
              </div>
 
        </div>
 
        %endif
 

	
 
        <div class="form-group">
 
          <label>${_('Voting Result')}:</label>
 
          <div>
 
            %if c.current_voting_result:
 
              <i class="icon-circle changeset-status-${c.current_voting_result}" title="${_('Pull request status calculated from votes')}"></i>
 
              <span class="changeset-status-lbl" data-toggle="tooltip" title="${_('Pull request status calculated from votes')}">
 
                %if c.pull_request.is_closed():
 
                    ${_('Closed')},
 
                %endif
 
                ${h.changeset_status_lbl(c.current_voting_result)}
 
              </span>
 
            %endif
 
          </div>
 
        </div>
 
        <div class="form-group">
 
          <label>${_('Origin')}:</label>
 
          <div>
 
            <div>
 
              ${h.link_to_ref(c.pull_request.org_repo.repo_name, c.cs_ref_type, c.cs_ref_name, c.cs_rev)}
 
              %if c.cs_ref_type != 'branch':
 
                ${_('on')} ${h.link_to_ref(c.pull_request.org_repo.repo_name, 'branch', c.cs_branch_name)}
 
              %endif
 
            </div>
 
          </div>
 
        </div>
 
        <div class="form-group">
 
          <label>${_('Target')}:</label>
 
          <div>
 
            %if c.is_range:
 
              ${_("This is just a range of changesets and doesn't have a target or a real merge ancestor.")}
 
            %else:
 
              ${h.link_to_ref(c.pull_request.other_repo.repo_name, c.a_ref_type, c.a_ref_name)}
 
              ## we don't know other rev - c.a_rev is ancestor and not necessarily on other_name_branch branch
 
            %endif
 
          </div>
 
        </div>
 
        <div class="form-group">
 
          <label>${_('Pull changes')}:</label>
 
          <div>
 
            %if c.cs_ranges:
 
              <div>
 
               ## TODO: use cs_ranges[-1] or org_ref_parts[1] in both cases?
 
               %if c.pull_request.org_repo.repo_type == 'hg':
 
                 <span>hg pull ${c.pull_request.org_repo.clone_url(clone_uri_tmpl=c.clone_uri_tmpl)} -r ${c.cs_ranges[-1].short_id}</span>
 
               %elif c.pull_request.org_repo.repo_type == 'git':
 
                 <span>git pull ${c.pull_request.org_repo.clone_url(clone_uri_tmpl=c.clone_uri_tmpl)} ${c.pull_request.org_ref_parts[1]}</span>
 
               %endif
 
              </div>
 
            %endif
 
          </div>
 
        </div>
 
        <div class="form-group">
 
          <label>${_('Created on')}:</label>
 
          <div>
 
              <div>${h.fmt_date(c.pull_request.created_on)}</div>
 
          </div>
 
        </div>
 
        <div class="form-group">
 
          <label>${_('Owner')}:</label>
 
          <div class="pr-not-edit">
 
                  ${h.gravatar_div(c.pull_request.owner.email, size=20)}
 
                  <span>${c.pull_request.owner.full_name_and_username}</span><br/>
 
                  <span><a href="mailto:${c.pull_request.owner.email}">${c.pull_request.owner.email}</a></span><br/>
 
          </div>
 
          <div class="pr-do-edit" style="display:none">
 
               ${h.text('owner', class_='form-control', value=c.pull_request.owner.username, placeholder=_('Type name of user'))}
 
          </div>
 
        </div>
 

	
 
        <div class="form-group">
 
          <label>${_('Next iteration')}:</label>
 
            <div>
 
              <p>${c.update_msg}</p>
 
              %if c.avail_cs:
 
              <div id="updaterevs" class="clearfix">
 
                <div id="updaterevs-graph">
 
                  <canvas id="avail_graph_canvas"></canvas>
 
                </div>
 
                <table class="table" id="updaterevs-table">
 
                  %for cnt, cs in enumerate(c.avail_cs):
 
                    <tr id="chg_available_${cnt+1}" class="${'mergerow' if len(cs.parents) > 1 and not (editable and cs.revision in c.avail_revs) else ''}">
 
                      %if c.cs_ranges and cs.revision == c.cs_ranges[-1].revision:
 
                        %if editable:
 
                        <td>
 
                            ${h.radio(name='updaterev', value='', checked=True)}
 
                        </td>
 
                        %endif
 
                        <td colspan="4"><span>${_("Current revision - no change")}</span></td>
 
                      %else:
 
                        %if editable:
 
                        <td>
 
                          ${h.radio(name='updaterev', value=cs.raw_id, style=None if cs.revision in c.avail_revs else 'visibility: hidden')}
 
                        </td>
 
                        %endif
 
                        <td><span data-toggle="tooltip" title="${h.age(cs.date)}">${cs.date}</span></td>
 
                        <td>${h.link_to(h.show_id(cs),h.url('changeset_home',repo_name=c.cs_repo.repo_name,revision=cs.raw_id), class_='changeset_hash')}</td>
 
                        <td>
 
                          <div class="pull-right">
 
                            %for tag in cs.tags:
 
                              <span class="label label-tag" title="${_('Tag %s') % tag}">
 
                                ${h.link_to(tag,h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id))}
 
                              </span>
 
                            %endfor
 
                          </div>
 
                          <div class="message">${h.urlify_text(cs.message.splitlines()[0], c.repo_name)}</div>
 
                          <div class="message">${h.urlify_text(cs.message.strip().split('\n')[0] or _("(No commit message)"), c.repo_name)}</div>
 
                        </td>
 
                      %endif
 
                    </tr>
 
                  %endfor
 
                </table>
 
              </div>
 
              <div class="alert alert-info">${_("Pull request iterations do not change content once created. Select a revision to create a new iteration.")}</div>
 
              %endif
 
              %if c.update_msg_other:
 
                <div class="alert alert-info">${c.update_msg_other}</div>
 
              %endif
 
            </div>
 
        </div>
 
        %if editable:
 
        <div class="form-group">
 
          <div class="buttons">
 
            ${h.submit('pr-form-save',_('Save Changes'),class_="btn btn-default btn-sm")}
 
            ${h.submit('pr-form-clone',_('Create New Iteration with Changes'),class_="btn btn-default btn-sm",disabled='disabled')}
 
            ${h.reset('pr-form-reset',_('Cancel Changes'),class_="btn btn-default btn-sm")}
 
          </div>
 
        </div>
 
        %endif
 
      </div>
 
    </div>
 
    ## REVIEWERS
 
    <div class="pr-reviewers-box pull-left">
 
        <h4 class="pr-details-title">${_('Reviewers')}</h4>
 
        <div id="reviewers">
 
          ## members goes here !
 
          <div>
 
            %for member,status in c.pull_request_reviewers:
 
              <input type="hidden" value="${member.user_id}" name="org_review_members" />
 
            %endfor
 
            <ul id="review_members" class="list-unstyled">
 
            %for member,status in c.pull_request_reviewers:
 
              ## WARNING: the HTML below is duplicate with
 
              ## kallithea/public/js/base.js
 
              ## If you change something here it should be reflected in the template too.
 
              <li id="reviewer_${member.user_id}">
 
                <span class="reviewers_member">
 
                  <input type="hidden" value="${member.user_id}" name="review_members" />
 
                  <span class="reviewer_status" data-toggle="tooltip" title="${h.changeset_status_lbl(status)}">
 
                      <i class="icon-circle changeset-status-${status}"></i>
 
                  </span>
 
                  ${h.gravatar(member.email, size=14)}
 
                  <span>
 
                    ${member.full_name_and_username}
 
                    %if c.pull_request.owner_id == member.user_id:
 
                      (${_('Owner')})
 
                    %endif
 
                  </span>
 
                  %if editable:
 
                  <a href="#" class="reviewer_member_remove" onclick="removeReviewMember(${member.user_id})" title="${_('Remove reviewer')}">
 
                      <i class="icon-minus-circled"></i>
 
                  </a>
 
                  %endif
 
                </span>
 
              </li>
 
            %endfor
 
            </ul>
 
          </div>
 
          %if editable:
 
          <div>
 
             ${h.text('user', class_='form-control',placeholder=_('Type name of reviewer to add'))}
 
          </div>
 
          %endif
 
        </div>
 

	
 
        %if not c.pull_request_reviewers:
 
        <h4>${_('Potential Reviewers')}</h4>
 
        <div>
 
          <div>
 
            ${_('Click to add the repository owner as reviewer:')}
 
          </div>
 
          <ul class="list-unstyled">
 
            %for u in [c.pull_request.other_repo.owner]:
 
              <li>
 
                <a class="btn btn-default btn-xs missing_reviewer missing_reviewer_${u.user_id}"
 
                  href="#"
 
                  data-user_id="${u.user_id}"
 
                  data-fname="${u.name}"
 
                  data-lname="${u.lastname}"
 
                  data-nname="${u.username}"
 
                  data-gravatar_lnk="${h.gravatar_url(u.email, size=28, default='default')}"
 
                  data-gravatar_size="14"
 
                  title="Click to add reviewer to the list, then Save Changes."><i class="icon-plus"></i>${u.full_name}</a>
 
              </li>
 
            %endfor
 
          </ul>
 
        </div>
 
        %endif
 
    </div>
 
  ${h.end_form()}
 
</div>
 

	
 
<div class="panel panel-primary">
 
    <div class="panel-heading clearfix">
 
      <div class="panel-title">${_('Pull Request Content')}</div>
 
    </div>
 
    <div class="panel-body">
 
        <div>
 
            <div id="changeset_compare_view_content">
 
              <h5>
 
                  ${comment.comment_count(c.inline_cnt, len(c.comments))}
 
              </h5>
 
              ##CS
 
              <h5>
 
                ${ungettext('Showing %s commit','Showing %s commits', len(c.cs_ranges)) % len(c.cs_ranges)}
 
              </h5>
 
              <%include file="/compare/compare_cs.html" />
 

	
 
              <h5>
 
              ${_('Common ancestor')}:
 
              ${h.link_to(h.short_id(c.a_rev),h.url('changeset_home',repo_name=c.a_repo.repo_name,revision=c.a_rev), class_="changeset_hash")}
 
              </h5>
 

	
 
              ## FILES
 
              <h5>
 
              % if c.limited_diff:
 
                  ${ungettext('%s file changed', '%s files changed', len(c.file_diff_data)) % len(c.file_diff_data)}:
 
              % else:
 
                  ${ungettext('%s file changed with %s insertions and %s deletions','%s files changed with %s insertions and %s deletions', len(c.file_diff_data)) % (len(c.file_diff_data),c.lines_added,c.lines_deleted)}:
 
              %endif
 
              </h5>
 
              <div class="cs_files">
 
                %if not c.file_diff_data:
 
                   <span class="text-muted">${_('No files')}</span>
 
                %endif
 
                %for fid, url_fid, op, a_path, path, diff, stats in c.file_diff_data:
 
                    <div class="cs_${op} clearfix">
 
                      <span class="node">
 
                          <i class="icon-diff-${op}"></i>
 
                          ${h.link_to(path, '#%s' % fid)}
 
                      </span>
 
                      <div class="changes">${h.fancy_file_stats(stats)}</div>
 
                    </div>
 
                %endfor
 
                %if c.limited_diff:
 
                  <h5>${_('Changeset was too big and was cut off...')} <a href="${h.url.current(fulldiff=1, **request.GET.mixed())}">${_('Show full diff anyway')}</a></h5>
 
                %endif
 
              </div>
 
            </div>
 
        </div>
 
    </div>
 
    <script>
 
    'use strict';
 
    // TODO: switch this to pyroutes
 
    var AJAX_COMMENT_URL = ${h.js(url('pullrequest_comment',repo_name=c.repo_name,pull_request_id=c.pull_request.pull_request_id))};
 
    var AJAX_COMMENT_DELETE_URL = ${h.js(url('pullrequest_comment_delete',repo_name=c.repo_name,comment_id='__COMMENT_ID__'))};
 

	
 
    pyroutes.register('pullrequest_comment', ${h.js(url('pullrequest_comment',repo_name='%(repo_name)s',pull_request_id='%(pull_request_id)s'))}, ['repo_name', 'pull_request_id']);
 
    pyroutes.register('pullrequest_comment_delete', ${h.js(url('pullrequest_comment_delete',repo_name='%(repo_name)s',comment_id='%(comment_id)s'))}, ['repo_name', 'comment_id']);
 

	
 
    </script>
 

	
 
    ## diff block
 
    <div class="panel-body">
 
    <div class="commentable-diff">
 
    <%namespace name="diff_block" file="/changeset/diff_block.html"/>
 
    ${diff_block.diff_block_js()}
 
    ${diff_block.diff_block(c.a_repo.repo_name, c.a_ref_type, c.a_ref_name, c.a_rev,
 
                            c.cs_repo.repo_name, c.cs_ref_type, c.cs_ref_name, c.cs_rev, c.file_diff_data)}
 
    % if c.limited_diff:
 
      <h4>${_('Changeset was too big and was cut off...')} <a href="${h.url.current(fulldiff=1, **request.GET.mixed())}">${_('Show full diff anyway')}</a></h4>
 
    % endif
 
    </div>
 

	
 
    ## template for inline comment form
 
    ${comment.comment_inline_form()}
 

	
 
    ## render comments and inlines
 
    ${comment.generate_comments()}
 

	
 
    ## main comment form and it status
 
    ${comment.comments(change_status=c.allowed_to_change_status)}
 

	
 
    <script>
 
      'use strict';
 
      $(document).ready(function(){
 
          PullRequestAutoComplete($('#user'));
 
          SimpleUserAutoComplete($('#owner'));
 

	
 
          $('.code-difftable').on('click', '.add-bubble', function(){
 
              show_comment_form($(this));
 
          });
 

	
 
          var avail_jsdata = ${h.js(c.avail_jsdata)};
 
          var avail_r = new BranchRenderer('avail_graph_canvas', 'updaterevs-table', 'chg_available_');
 
          avail_r.render(avail_jsdata);
 

	
 
          $(window).resize(function(){
 
              avail_r.render(avail_jsdata);
 
          });
 

	
 
          move_comments($(".comments .comments-list-chunk"));
 

	
 
          $('#updaterevs input').change(function(e){
 
              var update = !!e.target.value;
 
              $('#pr-form-save').prop('disabled',update);
 
              $('#pr-form-clone').prop('disabled',!update);
 
          });
 
          var $org_review_members = $('#review_members').clone();
 
          $('#pr-form-reset').click(function(){
 
              $('.pr-do-edit').hide();
 
              $('.pr-not-edit').show();
 
              $('#pr-form-save').prop('disabled',false);
 
              $('#pr-form-clone').prop('disabled',true);
 
              $('#review_members').html($org_review_members);
 
          });
 

	
 
          // hack: re-navigate to target after JS is done ... if a target is set and setting href thus won't reload
 
          if (window.location.hash != "") {
 
              window.location.href = window.location.href;
 
          }
 

	
 
          $('.missing_reviewer').click(function(){
 
            var $this = $(this);
 
            addReviewMember($this.data('user_id'), $this.data('fname'), $this.data('lname'), $this.data('nname'), $this.data('gravatar_lnk'), $this.data('gravatar_size'));
 
          });
 
      });
 
    </script>
 
    </div>
 

	
 
</div>
 

	
 
</%def>
0 comments (0 inline, 0 general)