Changeset - aa3e860a1fe0
[Not reviewed]
Merge default
0 10 0
Mads Kiilerich (mads) - 5 years ago 2020-12-21 01:19:49
mads@kiilerich.com
Merge stable
5 files changed:
0 comments (0 inline, 0 general)
kallithea/controllers/api/api.py
Show inline comments
 
@@ -501,1711 +501,1711 @@ class ApiController(JSONRPCController):
 
                extern_name=extern_name
 
            )
 
            meta.Session().commit()
 
            return dict(
 
                msg='created new user `%s`' % username,
 
                user=user.get_api_data()
 
            )
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            raise JSONRPCError('failed to create user `%s`' % (username,))
 

	
 
    @HasPermissionAnyDecorator('hg.admin')
 
    def update_user(self, userid, username=None,
 
                    email=None, password=None,
 
                    firstname=None, lastname=None,
 
                    active=None, admin=None,
 
                    extern_type=None, extern_name=None):
 
        """
 
        updates given user if such user exists. This command can
 
        be executed only using api_key belonging to user with admin rights.
 

	
 
        :param userid: userid to update
 
        :type userid: str or int
 
        :param username: new username
 
        :type username: str or int
 
        :param email: email
 
        :type email: str
 
        :param password: password
 
        :type password: Optional(str)
 
        :param firstname: firstname
 
        :type firstname: Optional(str)
 
        :param lastname: lastname
 
        :type lastname: Optional(str)
 
        :param active: active
 
        :type active: Optional(bool)
 
        :param admin: admin
 
        :type admin: Optional(bool)
 
        :param extern_name:
 
        :type extern_name: Optional(str)
 
        :param extern_type:
 
        :type extern_type: Optional(str)
 

	
 

	
 
        OUTPUT::
 

	
 
            id : <id_given_in_input>
 
            result: {
 
                      "msg" : "updated user ID:<userid> <username>",
 
                      "user": <user_object>,
 
                    }
 
            error:  null
 

	
 
        ERROR OUTPUT::
 

	
 
          id : <id_given_in_input>
 
          result : null
 
          error :  {
 
            "failed to update user `<username>`"
 
          }
 

	
 
        """
 

	
 
        user = get_user_or_error(userid)
 

	
 
        # only non optional arguments will be stored in updates
 
        updates = {}
 

	
 
        try:
 

	
 
            store_update(updates, username, 'username')
 
            store_update(updates, password, 'password')
 
            store_update(updates, email, 'email')
 
            store_update(updates, firstname, 'name')
 
            store_update(updates, lastname, 'lastname')
 
            store_update(updates, active, 'active')
 
            store_update(updates, admin, 'admin')
 
            store_update(updates, extern_name, 'extern_name')
 
            store_update(updates, extern_type, 'extern_type')
 

	
 
            user = UserModel().update_user(user, **updates)
 
            meta.Session().commit()
 
            return dict(
 
                msg='updated user ID:%s %s' % (user.user_id, user.username),
 
                user=user.get_api_data()
 
            )
 
        except DefaultUserException:
 
            log.error(traceback.format_exc())
 
            raise JSONRPCError('editing default user is forbidden')
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            raise JSONRPCError('failed to update user `%s`' % (userid,))
 

	
 
    @HasPermissionAnyDecorator('hg.admin')
 
    def delete_user(self, userid):
 
        """
 
        deletes given user if such user exists. This command can
 
        be executed only using api_key belonging to user with admin rights.
 

	
 
        :param userid: user to delete
 
        :type userid: str or int
 

	
 
        OUTPUT::
 

	
 
            id : <id_given_in_input>
 
            result: {
 
                      "msg" : "deleted user ID:<userid> <username>",
 
                      "user": null
 
                    }
 
            error:  null
 

	
 
        ERROR OUTPUT::
 

	
 
          id : <id_given_in_input>
 
          result : null
 
          error :  {
 
            "failed to delete user ID:<userid> <username>"
 
          }
 

	
 
        """
 
        user = get_user_or_error(userid)
 

	
 
        try:
 
            UserModel().delete(userid)
 
            meta.Session().commit()
 
            return dict(
 
                msg='deleted user ID:%s %s' % (user.user_id, user.username),
 
                user=None
 
            )
 
        except Exception:
 

	
 
            log.error(traceback.format_exc())
 
            raise JSONRPCError('failed to delete user ID:%s %s'
 
                               % (user.user_id, user.username))
 

	
 
    # permission check inside
 
    def get_user_group(self, usergroupid):
 
        """
 
        Gets an existing user group. This command can be executed only using api_key
 
        belonging to user with admin rights or user who has at least
 
        read access to user group.
 

	
 
        :param usergroupid: id of user_group to edit
 
        :type usergroupid: str or int
 

	
 
        OUTPUT::
 

	
 
            id : <id_given_in_input>
 
            result : None if group not exist
 
                     {
 
                       "users_group_id" : "<id>",
 
                       "group_name" :     "<groupname>",
 
                       "active":          "<bool>",
 
                       "members" :  [<user_obj>,...]
 
                     }
 
            error : null
 

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

	
 
        data = user_group.get_api_data()
 
        return data
 

	
 
    # permission check inside
 
    def get_user_groups(self):
 
        """
 
        Lists all existing user groups. This command can be executed only using
 
        api_key belonging to user with admin rights or user who has at least
 
        read access to user group.
 

	
 

	
 
        OUTPUT::
 

	
 
            id : <id_given_in_input>
 
            result : [<user_group_obj>,...]
 
            error : null
 
        """
 

	
 
        return [
 
            user_group.get_api_data()
 
            for user_group in UserGroupList(db.UserGroup.query().all(), perm_level='read')
 
        ]
 

	
 
    @HasPermissionAnyDecorator('hg.admin', 'hg.usergroup.create.true')
 
    def create_user_group(self, group_name, description='',
 
                          owner=None, active=True):
 
        """
 
        Creates new user group. This command can be executed only using api_key
 
        belonging to user with admin rights or an user who has create user group
 
        permission
 

	
 
        :param group_name: name of new user group
 
        :type group_name: str
 
        :param description: group description
 
        :type description: str
 
        :param owner: owner of group. If not passed apiuser is the owner
 
        :type owner: Optional(str or int)
 
        :param active: group is active
 
        :type active: Optional(bool)
 

	
 
        OUTPUT::
 

	
 
            id : <id_given_in_input>
 
            result: {
 
                      "msg": "created new user group `<groupname>`",
 
                      "user_group": <user_group_object>
 
                    }
 
            error:  null
 

	
 
        ERROR OUTPUT::
 

	
 
          id : <id_given_in_input>
 
          result : null
 
          error :  {
 
            "user group `<group name>` already exist"
 
            or
 
            "failed to create group `<group name>`"
 
          }
 

	
 
        """
 

	
 
        if UserGroupModel().get_by_name(group_name):
 
            raise JSONRPCError("user group `%s` already exist" % (group_name,))
 

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

	
 
            owner = get_user_or_error(owner)
 
            ug = UserGroupModel().create(name=group_name, description=description,
 
                                         owner=owner, active=active)
 
            meta.Session().commit()
 
            return dict(
 
                msg='created new user group `%s`' % group_name,
 
                user_group=ug.get_api_data()
 
            )
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            raise JSONRPCError('failed to create group `%s`' % (group_name,))
 

	
 
    # permission check inside
 
    def update_user_group(self, usergroupid, group_name=None,
 
                          description=None, owner=None,
 
                          active=None):
 
        """
 
        Updates given usergroup.  This command can be executed only using api_key
 
        belonging to user with admin rights or an admin of given user group
 

	
 
        :param usergroupid: id of user group to update
 
        :type usergroupid: str or int
 
        :param group_name: name of new user group
 
        :type group_name: str
 
        :param description: group description
 
        :type description: str
 
        :param owner: owner of group.
 
        :type owner: Optional(str or int)
 
        :param active: group is active
 
        :type active: Optional(bool)
 

	
 
        OUTPUT::
 

	
 
          id : <id_given_in_input>
 
          result : {
 
            "msg": 'updated user group ID:<user group id> <user group name>',
 
            "user_group": <user_group_object>
 
          }
 
          error :  null
 

	
 
        ERROR OUTPUT::
 

	
 
          id : <id_given_in_input>
 
          result : null
 
          error :  {
 
            "failed to update user group `<user group name>`"
 
          }
 

	
 
        """
 
        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,))
 

	
 
        if owner is not None:
 
            owner = get_user_or_error(owner)
 

	
 
        updates = {}
 
        store_update(updates, group_name, 'users_group_name')
 
        store_update(updates, description, 'user_group_description')
 
        store_update(updates, owner, 'owner')
 
        store_update(updates, active, 'users_group_active')
 
        try:
 
            UserGroupModel().update(user_group, updates)
 
            meta.Session().commit()
 
            return dict(
 
                msg='updated user group ID:%s %s' % (user_group.users_group_id,
 
                                                     user_group.users_group_name),
 
                user_group=user_group.get_api_data()
 
            )
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            raise JSONRPCError('failed to update user group `%s`' % (usergroupid,))
 

	
 
    # permission check inside
 
    def delete_user_group(self, usergroupid):
 
        """
 
        Delete given user group by user group id or name.
 
        This command can be executed only using api_key
 
        belonging to user with admin rights or an admin of given user group
 

	
 
        :param usergroupid:
 
        :type usergroupid: int
 

	
 
        OUTPUT::
 

	
 
          id : <id_given_in_input>
 
          result : {
 
            "msg": "deleted user group ID:<user_group_id> <user_group_name>"
 
          }
 
          error :  null
 

	
 
        ERROR OUTPUT::
 

	
 
          id : <id_given_in_input>
 
          result : null
 
          error :  {
 
            "failed to delete user group ID:<user_group_id> <user_group_name>"
 
            or
 
            "RepoGroup assigned to <repo_groups_list>"
 
          }
 

	
 
        """
 
        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:
 
            UserGroupModel().delete(user_group)
 
            meta.Session().commit()
 
            return dict(
 
                msg='deleted user group ID:%s %s' %
 
                    (user_group.users_group_id, user_group.users_group_name),
 
                user_group=None
 
            )
 
        except UserGroupsAssignedException as e:
 
            log.error(traceback.format_exc())
 
            raise JSONRPCError(str(e))
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            raise JSONRPCError('failed to delete user group ID:%s %s' %
 
                               (user_group.users_group_id,
 
                                user_group.users_group_name)
 
                               )
 

	
 
    # permission check inside
 
    def add_user_to_user_group(self, usergroupid, userid):
 
        """
 
        Adds a user to a user group. If user exists in that 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:
 
        :type usergroupid: int
 
        :param userid:
 
        :type userid: int
 

	
 
        OUTPUT::
 

	
 
          id : <id_given_in_input>
 
          result : {
 
              "success": True|False # depends on if member is in group
 
              "msg": "added member `<username>` to user group `<groupname>` |
 
                      User is already in that group"
 

	
 
          }
 
          error :  null
 

	
 
        ERROR OUTPUT::
 

	
 
          id : <id_given_in_input>
 
          result : null
 
          error :  {
 
            "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,
 
                          description=None,
 
                          owner=None,
 
                          parent=None):
 
        repo_group = get_repo_group_or_error(repogroupid)
 

	
 
        updates = {}
 
        try:
 
            store_update(updates, group_name, 'group_name')
 
            store_update(updates, description, 'group_description')
 
            store_update(updates, owner, 'owner')
 
            store_update(updates, parent, 'parent_group')
 
            repo_group = RepoGroupModel().update(repo_group, updates)
 
            meta.Session().commit()
 
            return dict(
 
                msg='updated repository group ID:%s %s' % (repo_group.group_id,
 
                                                           repo_group.group_name),
 
                repo_group=repo_group.get_api_data()
 
            )
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            raise JSONRPCError('failed to update repository group `%s`'
 
                               % (repogroupid,))
 

	
 
    @HasPermissionAnyDecorator('hg.admin')
 
    def delete_repo_group(self, repogroupid):
 
        """
 

	
 
        :param repogroupid: name or id of repository group
 
        :type repogroupid: str or int
 

	
 
        OUTPUT::
 

	
 
          id : <id_given_in_input>
 
          result : {
 
            'msg': 'deleted repo group ID:<repogroupid> <repogroupname>
 
            'repo_group': null
 
          }
 
          error :  null
 

	
 
        ERROR OUTPUT::
 

	
 
          id : <id_given_in_input>
 
          result : null
 
          error :  {
 
            "failed to delete repo group ID:<repogroupid> <repogroupname>"
 
          }
 

	
 
        """
 
        repo_group = get_repo_group_or_error(repogroupid)
 

	
 
        try:
 
            RepoGroupModel().delete(repo_group)
 
            meta.Session().commit()
 
            return dict(
 
                msg='deleted repo group ID:%s %s' %
 
                    (repo_group.group_id, repo_group.group_name),
 
                repo_group=None
 
            )
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            raise JSONRPCError('failed to delete repo group ID:%s %s' %
 
                               (repo_group.group_id, repo_group.group_name)
 
                               )
 

	
 
    # permission check inside
 
    def grant_user_permission_to_repo_group(self, repogroupid, userid,
 
                                            perm, apply_to_children='none'):
 
        """
 
        Grant permission for user on given repository group, or update existing
 
        one if found. This command can be executed only using api_key belonging
 
        to user with admin rights, or user who has admin right to given repository
 
        group.
 

	
 
        :param repogroupid: name or id of repository group
 
        :type repogroupid: str or int
 
        :param userid:
 
        :param perm: (group.(none|read|write|admin))
 
        :type perm: str
 
        :param apply_to_children: 'none', 'repos', 'groups', 'all'
 
        :type apply_to_children: str
 

	
 
        OUTPUT::
 

	
 
            id : <id_given_in_input>
 
            result: {
 
                      "msg" : "Granted perm: `<perm>` (recursive:<apply_to_children>) for user: `<username>` in repo group: `<repo_group_name>`",
 
                      "success": true
 
                    }
 
            error:  null
 

	
 
        ERROR OUTPUT::
 

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

	
 
        """
 

	
 
        repo_group = get_repo_group_or_error(repogroupid)
 

	
 
        if not HasPermissionAny('hg.admin')():
 
            if not HasRepoGroupPermissionLevel('admin')(repo_group.group_name):
 
                raise JSONRPCError('repository group `%s` does not exist' % (repogroupid,))
 

	
 
        user = get_user_or_error(userid)
 
        perm = get_perm_or_error(perm, prefix='group.')
 

	
 
        try:
 
            RepoGroupModel().add_permission(repo_group=repo_group,
 
                                            obj=user,
 
                                            obj_type="user",
 
                                            perm=perm,
 
                                            recursive=apply_to_children)
 
            meta.Session().commit()
 
            return dict(
 
                msg='Granted perm: `%s` (recursive:%s) for user: `%s` in repo group: `%s`' % (
 
                    perm.permission_name, apply_to_children, user.username, repo_group.name
 
                ),
 
                success=True
 
            )
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            raise JSONRPCError(
 
                'failed to edit permission for user: `%s` in repo group: `%s`' % (
 
                    userid, repo_group.name))
 

	
 
    # permission check inside
 
    def revoke_user_permission_from_repo_group(self, repogroupid, userid,
 
                                               apply_to_children='none'):
 
        """
 
        Revoke permission for user on given repository group. This command can
 
        be executed only using api_key belonging to user with admin rights, or
 
        user who has admin right to given repository group.
 

	
 
        :param repogroupid: name or id of repository group
 
        :type repogroupid: str or int
 
        :param userid:
 
        :type userid:
 
        :param apply_to_children: 'none', 'repos', 'groups', 'all'
 
        :type apply_to_children: str
 

	
 
        OUTPUT::
 

	
 
            id : <id_given_in_input>
 
            result: {
 
                      "msg" : "Revoked perm (recursive:<apply_to_children>) for user: `<username>` in repo group: `<repo_group_name>`",
 
                      "success": true
 
                    }
 
            error:  null
 

	
 
        ERROR OUTPUT::
 

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

	
 
        """
 

	
 
        repo_group = get_repo_group_or_error(repogroupid)
 

	
 
        if not HasPermissionAny('hg.admin')():
 
            if not HasRepoGroupPermissionLevel('admin')(repo_group.group_name):
 
                raise JSONRPCError('repository group `%s` does not exist' % (repogroupid,))
 

	
 
        user = get_user_or_error(userid)
 

	
 
        try:
 
            RepoGroupModel().delete_permission(repo_group=repo_group,
 
                                               obj=user,
 
                                               obj_type="user",
 
                                               recursive=apply_to_children)
 

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

	
 
    # permission check inside
 
    def grant_user_group_permission_to_repo_group(
 
            self, repogroupid, usergroupid, perm,
 
            apply_to_children='none'):
 
        """
 
        Grant permission for user group on given repository group, or update
 
        existing one if found. This command can be executed only using
 
        api_key belonging to user with admin rights, or user who has admin
 
        right to given repository group.
 

	
 
        :param repogroupid: name or id of repository group
 
        :type repogroupid: str or int
 
        :param usergroupid: id of usergroup
 
        :type usergroupid: str or int
 
        :param perm: (group.(none|read|write|admin))
 
        :type perm: str
 
        :param apply_to_children: 'none', 'repos', 'groups', 'all'
 
        :type apply_to_children: str
 

	
 
        OUTPUT::
 

	
 
          id : <id_given_in_input>
 
          result : {
 
            "msg" : "Granted perm: `<perm>` (recursive:<apply_to_children>) for user group: `<usersgroupname>` in repo group: `<repo_group_name>`",
 
            "success": true
 

	
 
          }
 
          error :  null
 

	
 
        ERROR OUTPUT::
 

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

	
 
        """
 
        repo_group = get_repo_group_or_error(repogroupid)
 
        perm = get_perm_or_error(perm, prefix='group.')
 
        user_group = get_user_group_or_error(usergroupid)
 
        if not HasPermissionAny('hg.admin')():
 
            if not HasRepoGroupPermissionLevel('admin')(repo_group.group_name):
 
                raise JSONRPCError(
 
                    'repository group `%s` does not exist' % (repogroupid,))
 

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

	
 
        try:
 
            RepoGroupModel().add_permission(repo_group=repo_group,
 
                                            obj=user_group,
 
                                            obj_type="user_group",
 
                                            perm=perm,
 
                                            recursive=apply_to_children)
 
            meta.Session().commit()
 
            return dict(
 
                msg='Granted perm: `%s` (recursive:%s) for user group: `%s` in repo group: `%s`' % (
 
                    perm.permission_name, apply_to_children,
 
                    user_group.users_group_name, repo_group.name
 
                ),
 
                success=True
 
            )
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            raise JSONRPCError(
 
                'failed to edit permission for user group: `%s` in '
 
                'repo group: `%s`' % (
 
                    usergroupid, repo_group.name
 
                )
 
            )
 

	
 
    # permission check inside
 
    def revoke_user_group_permission_from_repo_group(
 
            self, repogroupid, usergroupid,
 
            apply_to_children='none'):
 
        """
 
        Revoke permission for user group on given repository. This command can be
 
        executed only using api_key belonging to user with admin rights, or
 
        user who has admin right to given repository group.
 

	
 
        :param repogroupid: name or id of repository group
 
        :type repogroupid: str or int
 
        :param usergroupid:
 
        :param apply_to_children: 'none', 'repos', 'groups', 'all'
 
        :type apply_to_children: str
 

	
 
        OUTPUT::
 

	
 
            id : <id_given_in_input>
 
            result: {
 
                      "msg" : "Revoked perm (recursive:<apply_to_children>) for user group: `<usersgroupname>` in repo group: `<repo_group_name>`",
 
                      "success": true
 
                    }
 
            error:  null
 

	
 
        ERROR OUTPUT::
 

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

	
 

	
 
        """
 
        repo_group = get_repo_group_or_error(repogroupid)
 
        user_group = get_user_group_or_error(usergroupid)
 
        if not HasPermissionAny('hg.admin')():
 
            if not HasRepoGroupPermissionLevel('admin')(repo_group.group_name):
 
                raise JSONRPCError(
 
                    'repository group `%s` does not exist' % (repogroupid,))
 

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

	
 
        try:
 
            RepoGroupModel().delete_permission(repo_group=repo_group,
 
                                               obj=user_group,
 
                                               obj_type="user_group",
 
                                               recursive=apply_to_children)
 
            meta.Session().commit()
 
            return dict(
 
                msg='Revoked perm (recursive:%s) for user group: `%s` in repo group: `%s`' % (
 
                    apply_to_children, user_group.users_group_name, repo_group.name
 
                ),
 
                success=True
 
            )
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            raise JSONRPCError(
 
                'failed to edit permission for user group: `%s` in repo group: `%s`' % (
 
                    user_group.users_group_name, repo_group.name
 
                )
 
            )
 

	
 
    def get_gist(self, gistid):
 
        """
 
        Get given gist by id
 

	
 
        :param gistid: id of private or public gist
 
        :type gistid: str
 
        """
 
        gist = get_gist_or_error(gistid)
 
        if not HasPermissionAny('hg.admin')():
 
            if gist.owner_id != request.authuser.user_id:
 
                raise JSONRPCError('gist `%s` does not exist' % (gistid,))
 
        return gist.get_api_data()
 

	
 
    def get_gists(self, userid=None):
 
        """
 
        Get all gists for given user. If userid is empty returned gists
 
        are for user who called the api
 

	
 
        :param userid: user to get gists for
 
        :type userid: Optional(str or int)
 
        """
 
        if not HasPermissionAny('hg.admin')():
 
            # make sure normal user does not pass someone else userid,
 
            # he is not allowed to do that
 
            if userid is not None and userid != request.authuser.user_id:
 
                raise JSONRPCError(
 
                    'userid is not the same as your user'
 
                )
 

	
 
        if userid is None:
 
            user_id = request.authuser.user_id
 
        else:
 
            user_id = get_user_or_error(userid).user_id
 

	
 
        return [
 
            gist.get_api_data()
 
            for gist in db.Gist().query()
 
                .filter_by(is_expired=False)
 
                .filter(db.Gist.owner_id == user_id)
 
                .order_by(db.Gist.created_on.desc())
 
        ]
 

	
 
    def create_gist(self, files, owner=None,
 
                    gist_type=db.Gist.GIST_PUBLIC, lifetime=-1,
 
                    description=''):
 

	
 
        """
 
        Creates new Gist
 

	
 
        :param files: files to be added to gist
 
            {'filename': {'content':'...', 'lexer': null},
 
             'filename2': {'content':'...', 'lexer': null}}
 
        :type files: dict
 
        :param owner: gist owner, defaults to api method caller
 
        :type owner: Optional(str or int)
 
        :param gist_type: type of gist 'public' or 'private'
 
        :type gist_type: Optional(str)
kallithea/i18n/de/LC_MESSAGES/kallithea.po
Show inline comments
 
@@ -1279,1312 +1279,1312 @@ msgstr ""
 

	
 
msgid "here"
 
msgstr "hier"
 

	
 
msgid "Gist description ..."
 
msgstr "Gist Beschreibung ..."
 

	
 
msgid "Gist lifetime"
 
msgstr "Gist Lebenszeit"
 

	
 
msgid "Expires"
 
msgstr "Verfällt"
 

	
 
msgid "Update Gist"
 
msgstr "Gist aktualisieren"
 

	
 
msgid "Cancel"
 
msgstr "Abbrechen"
 

	
 
msgid "Private Gists for User %s"
 
msgstr "Privater Gist für Benutzer %s"
 

	
 
msgid "Public Gists for User %s"
 
msgstr "Öffentlicher Gist für Benutzer %s"
 

	
 
msgid "Public Gists"
 
msgstr "Öffentliche Gists"
 

	
 
msgid "Create New Gist"
 
msgstr "Neuen Gist erstellen"
 

	
 
msgid "Created"
 
msgstr "Erstellt"
 

	
 
msgid "There are no gists yet"
 
msgstr "Bisher sind keine Gists vorhanden"
 

	
 
msgid "New Gist"
 
msgstr "Neuer Gist"
 

	
 
msgid "Create Private Gist"
 
msgstr "Privaten Gist erstellen"
 

	
 
msgid "Create Public Gist"
 
msgstr "Öffentlichen Gist erstellen"
 

	
 
msgid "Reset"
 
msgstr "Zurücksetzen"
 

	
 
msgid "Gist"
 
msgstr "Gist"
 

	
 
msgid "URL"
 
msgstr "URL"
 

	
 
msgid "Public Gist"
 
msgstr "Öffentlicher Gist"
 

	
 
msgid "Private Gist"
 
msgstr "Privater Gist"
 

	
 
msgid "Delete"
 
msgstr "Löschen"
 

	
 
msgid "Confirm to delete this Gist"
 
msgstr "Löschen des Gists bestätigen"
 

	
 
msgid "Edit"
 
msgstr "Bearbeiten"
 

	
 
msgid "Show as Raw"
 
msgstr "Als Raw anzeigen"
 

	
 
msgid "created"
 
msgstr "erstellt"
 

	
 
msgid "Show as raw"
 
msgstr "Als Raw anzeigen"
 

	
 
msgid "My Account"
 
msgstr "Mein Account"
 

	
 
msgid "Profile"
 
msgstr "Profil"
 

	
 
msgid "Email Addresses"
 
msgstr "E-Mail-Adressen"
 

	
 
msgid "API Keys"
 
msgstr "API Keys"
 

	
 
msgid "Owned Repositories"
 
msgstr "Eigene Repositories"
 

	
 
msgid "Watched Repositories"
 
msgstr "Beobachtete Repositories"
 

	
 
msgid "Show Permissions"
 
msgstr "Berechtigungen anzeigen"
 

	
 
msgid "Built-in"
 
msgstr "Mitgeliefert"
 

	
 
msgid "Confirm to reset this API key: %s"
 
msgstr "Zurücksetzen des API-Schlüssels \"%s\" bestätigen"
 

	
 
msgid "Expired"
 
msgstr "Verfallen"
 

	
 
msgid "Confirm to remove this API key: %s"
 
msgstr "Entfernen des API-Schlüssels \"%s\" bestätigen"
 

	
 
msgid "Remove"
 
msgstr "Entfernen"
 

	
 
msgid "No additional API keys specified"
 
msgstr "Keine weiteren API-Schlüssel angegeben"
 

	
 
msgid "New API key"
 
msgstr "Neuer API-Schlüssel"
 

	
 
msgid "Add"
 
msgstr "Hinzufügen"
 

	
 
msgid ""
 
"\n"
 
"API keys are used to let scripts or services access %s using your\n"
 
"account, as if you had provided the script or service with your actual\n"
 
"password.\n"
 
msgstr ""
 
"\n"
 
"API-Schlüssel werden verwendet, um Skripten oder Diensten denselben\n"
 
"Zugang zu %s zu gewähren, den Sie mit Eingabe Ihres Passworts\n"
 
"erlangen würden.\n"
 

	
 
msgid ""
 
"\n"
 
"Like passwords, API keys should therefore never be shared with others,\n"
 
"nor passed to untrusted scripts or services. If such sharing should\n"
 
"happen anyway, reset the API key on this page to prevent further use.\n"
 
msgstr ""
 
"\n"
 
"Ebenso wie Passworte, sollten API-Schlüssel somit niemals mit anderen\n"
 
"geteilt oder von nicht-vertrauenswürdigen Skripten oder Diensten\n"
 
"verwendet werden. Falls ein solcher Zugriff zwischenzeitlich passiert "
 
"sein\n"
 
"sollte, dann können Sie hier den API-Schlüssel zurücksetzen, um weiteren\n"
 
"Missbrauchen zu verhindern.\n"
 

	
 
msgid "Primary"
 
msgstr "Primär"
 

	
 
msgid "Confirm to delete this email: %s"
 
msgstr "Löschen der E-Mail „%s“ bestätigen"
 

	
 
msgid "No additional emails specified."
 
msgstr "Keine weiteren E-Mails spezifiziert."
 

	
 
msgid "New email address"
 
msgstr "Neue E-Mailadresse"
 

	
 
msgid "Change Your Account Password"
 
msgstr "Passwort des Benutzerkontos ändern"
 

	
 
msgid "Current password"
 
msgstr "Aktuelles Passwort"
 

	
 
msgid "New password"
 
msgstr "Neues Passwort"
 

	
 
msgid "Confirm new password"
 
msgstr "Bestätige neues Passwort"
 

	
 
msgid ""
 
"This account is managed with %s and the password cannot be changed here"
 
msgstr ""
 
"Dieser Account wird mit %s verwaltet - daher kann das Passwort nicht "
 
"geändert werden"
 

	
 
msgid "Gravatar"
 
msgstr "Gravatar"
 

	
 
msgid "Change %s avatar at"
 
msgstr "Benutzerbild %s ändern unter"
 

	
 
msgid "Avatars are disabled"
 
msgstr "Avatare sind deaktiviert"
 

	
 
msgid "Repositories You Own"
 
msgstr "Repositories in Ihrem Besitz"
 

	
 
msgid "Name"
 
msgstr "Name"
 

	
 
msgid "Repositories You are Watching"
 
msgstr "Repositories, denen Sie folgen"
 

	
 
msgid "Default Permissions"
 
msgstr "Standardrechte"
 

	
 
msgid "Global"
 
msgstr "Global"
 

	
 
msgid "IP Whitelist"
 
msgstr "IP Whitelist"
 

	
 
msgid "Anonymous access"
 
msgstr "Anonymer Zugang"
 

	
 
msgid ""
 
"Allow access to Kallithea without needing to log in. Anonymous users use "
 
"%s user permissions."
 
msgstr ""
 
"Unauthentifizierten Zugriff auf Kallithea erlauben. Anonyme Benutzer "
 
"verwenden %s Benutzerrechte."
 

	
 
msgid ""
 
"All default permissions on each repository will be reset to chosen "
 
"permission, note that all custom default permission on repositories will "
 
"be lost"
 
msgstr ""
 
"Alle Standardrechte jedes Repositorys werden auf die gewählten Rechte "
 
"gesetzt. Beachten Sie, dass alle spezifischen Standardrechte der "
 
"Repositories verloren gehen"
 

	
 
msgid "Apply to all existing repositories"
 
msgstr "Auf alle bestehenden Repositories anwenden"
 

	
 
msgid "Permissions for the Default user on new repositories."
 
msgstr "Berechtigungen für neue Repositories des Vorgabe-Benutzers."
 

	
 
msgid "Repository group"
 
msgstr "Repository Gruppe"
 

	
 
msgid ""
 
"All default permissions on each repository group will be reset to chosen "
 
"permission, note that all custom default permission on repository groups "
 
"will be lost"
 
msgstr ""
 
"Alle Standardrechte jeder Repositorygruppe werden auf die gewählten "
 
"Rechte gesetzt. Beachten Sie, dass all spezifischen Standardrechte der "
 
"Repositorygruppen verloren gehen"
 

	
 
msgid "Apply to all existing repository groups"
 
msgstr "Auf alle bestehenden Repository-Gruppen anwenden"
 

	
 
msgid "Permissions for the Default user on new repository groups."
 
msgstr "Berechtigungen des Vorgabe-Benutzers für neue Repository-Gruppen."
 

	
 
msgid "User group"
 
msgstr "Benutzergruppe"
 

	
 
msgid ""
 
"All default permissions on each user group will be reset to chosen "
 
"permission, note that all custom default permission on user groups will "
 
"be lost"
 
msgstr ""
 
"Alle Vorgabe-Berechtigungen jeder Benutzergruppe werden auf die gewählten "
 
"Berechtigungen zurückgesetzt. Beachten Sie, dass dabei alle Anpassungen "
 
"von Vorgabe-Berechtigungen für Benutzergruppen verloren gehen"
 

	
 
msgid "Apply to all existing user groups"
 
msgstr "Auf alle bestehenden Benutzergruppen anwenden"
 

	
 
msgid "Permissions for the Default user on new user groups."
 
msgstr "Berechtigungen für neue Benutzergruppen des den Vorgabe-Benutzer."
 

	
 
msgid "Top level repository creation"
 
msgstr "Erstellung eines übergeordneten Repositories"
 

	
 
msgid ""
 
"Enable this to allow non-admins to create repositories at the top level."
 
msgstr ""
 
"Aktiviere dies, damit Nicht-Administratoren Repositories auf der obersten "
 
"Ebene erstellen können."
 

	
 
msgid ""
 
"Note: This will also give all users API access to create repositories "
 
"everywhere. That might change in future versions."
 
msgstr ""
 
"Hinweis: dadurch erhalten auch alle Benutzer API-Zugriff, um überall "
 
"Repositories zu erstellen. Das kann sich in zukünftigen Versionen ändern."
 

	
 
msgid "Repository creation with group write access"
 
msgstr "Repository-Erstellung mit Gruppen-Schreibzugriff"
 

	
 
msgid ""
 
"With this, write permission to a repository group allows creating "
 
"repositories inside that group. Without this, group write permissions "
 
"mean nothing."
 
msgstr ""
 
"Falls aktiv, gewährt dies das Recht zum Erzeugen von Repositories in "
 
"einer Repository-Gruppe. Falls inaktiv, sind Gruppen-"
 
"Schreibberechtigungen wirkungslos."
 

	
 
msgid "User group creation"
 
msgstr "Benutzergruppen Erstellung"
 

	
 
msgid "Enable this to allow non-admins to create user groups."
 
msgstr ""
 
"Aktivieren Sie dies, damit Nicht-Administratoren Benutzergruppen "
 
"erstellen können."
 

	
 
msgid "Repository forking"
 
msgstr "Repository-forking"
 

	
 
msgid "Enable this to allow non-admins to fork repositories."
 
msgstr ""
 
"Aktivieren Sie dies, um Nichtadministratoren zu erlauben, Repositories zu "
 
"forken."
 

	
 
msgid "Registration"
 
msgstr "Registrierung"
 

	
 
msgid "All IP addresses are allowed."
 
msgstr "Alle IP-Adressen sind zulässig."
 

	
 
msgid "New IP address"
 
msgstr "Neue IP-Adresse"
 

	
 
msgid "Repository Groups"
 
msgstr "Repositorygruppen"
 

	
 
msgid "Group name"
 
msgstr "Gruppen name"
 

	
 
msgid "Group parent"
 
msgstr "Übergeordnete Gruppe"
 

	
 
msgid "Copy parent group permissions"
 
msgstr "Rechte der übergeordneten Gruppe kopieren"
 

	
 
msgid "Copy permission set from parent repository group."
 
msgstr "Rechte der übergeordneten Repositorygruppe kopieren."
 

	
 
msgid "%s Repository Group Settings"
 
msgstr "%s Einstellungen für Repositorygruppen"
 

	
 
msgid "Add Child Group"
 
msgstr "Untergruppe hinzufügen"
 

	
 
msgid "Settings"
 
msgstr "Einstellungen"
 

	
 
msgid "Advanced"
 
msgstr "Erweitert"
 

	
 
msgid "Permissions"
 
msgstr "Rechte"
 

	
 
msgid "Repository Group: %s"
 
msgstr "Repositorygruppe: %s"
 

	
 
msgid "Top level repositories"
 
msgstr "Repositories oberster Ebene"
 

	
 
msgid "Total repositories"
 
msgstr "Alle Repositories"
 

	
 
msgid "Children groups"
 
msgstr "Untergruppen"
 

	
 
msgid "Created on"
 
msgstr "Erstellt am"
 

	
 
msgid "Confirm to delete this group: %s with %s repository"
 
msgid_plural "Confirm to delete this group: %s with %s repositories"
 
msgstr[0] "Löschen der Gruppe bestätigen: %s mit %s Repository"
 
msgstr[1] "Löschen der Gruppe bestätigen: %s mit %s Repositories"
 

	
 
msgid "Delete this repository group"
 
msgstr "Diese Repositorygruppe löschen"
 

	
 
msgid "Not visible"
 
msgstr "Nicht sichtbar"
 

	
 
msgid "Visible"
 
msgstr "Sichtbar"
 

	
 
msgid "Add/Edit groups"
 
msgstr "Benutzergruppen hinzufügen oder ändern"
 

	
 
msgid "Default"
 
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"
 
msgstr "Datei löschen"
 

	
 
msgid "%s author"
 
msgid_plural "%s authors"
 
msgstr[0] "%s Autor"
 
msgstr[1] "%s Autoren"
 

	
 
msgid "Go Back"
 
msgstr "Zurück"
 

	
 
msgid "Private"
 
msgstr "Privat"
 

	
 
msgid "Copy permissions"
 
msgstr "Berechtigungen kopieren"
 

	
 
msgid "ATOM journal feed"
 
msgstr "ATOM Logbuch Feed"
 

	
 
msgid "RSS journal feed"
 
msgstr "RSS Logbuch Feed"
 

	
 
msgid "My Repositories"
 
msgstr "Meine Repositories"
 

	
 
msgid "ATOM public journal feed"
 
msgstr "ATOM Feed für das Öffentliche Logbuch"
 

	
 
msgid "RSS public journal feed"
 
msgstr "RSS Feed für das Öffentliche Logbuch"
 

	
 
msgid "New Pull Request"
 
msgstr "Neuer Pull Request"
 

	
 
msgid "Title"
 
msgstr "Titel"
 

	
 
msgid "Revision"
 
msgstr "Revision"
 

	
 
msgid "Age"
 
msgstr "Alter"
 

	
 
msgid "Delete Pull Request"
 
msgstr "Pull Request löschen"
 

	
 
msgid "Summarize the changes"
 
msgstr "Zusammenfassung der Änderungen"
 

	
 
msgid "on"
 
msgstr "in"
 

	
 
msgid "Cancel Changes"
 
msgstr "Änderungen verwerfen"
 

	
 
msgid "Remove reviewer"
 
msgstr "Reviewer entfernen"
 

	
 
msgid "Potential Reviewers"
 
msgstr "Potentielle Reviewer"
 

	
 
msgid "Pull Request Content"
 
msgstr "Inhalt des Pull Requests"
 

	
 
msgid "Pull Requests to '%s'"
 
msgstr "Pull Requests für '%s'"
 

	
 
msgid "Open New Pull Request"
 
msgstr "Einen neuen Pull Request eröffnen"
 

	
 
msgid "Show Pull Requests to %s"
 
msgstr "Zeige Pull Requests für '%s'"
 

	
 
msgid "Show Pull Requests from '%s'"
 
msgstr "Zeige Pull Requests von '%s'"
 

	
 
msgid "Pull Requests Created by Me"
 
msgstr "Von mir erstellte Pull Requests"
 

	
 
msgid "Search in All Repositories"
 
msgstr "Suche in allen Repositories"
 

	
 
msgid "Search term"
 
msgstr "Suchbegriff"
 

	
 
msgid "Search in"
 
msgstr "Suchen in"
 

	
 
msgid "File contents"
 
msgstr "Dateiinhalt"
 

	
 
msgid "Commit messages"
 
msgstr "Commit Nachrichten"
 

	
 
msgid "File names"
 
msgstr "Dateinamen"
 

	
 
msgid "Permission denied"
 
msgstr "Zugriff verweigert"
 

	
 
msgid "Enable"
 
msgstr "Aktiviere"
 

	
 
msgid "files"
 
msgstr "Dateien"
 

	
 
msgid "Show more"
 
msgstr "Mehr anzeigen"
 

	
 
msgid "commits"
 
msgstr "Commits"
 

	
 
msgid "files added"
 
msgstr "Dateien hinzugefügt"
 

	
 
msgid "files changed"
 
msgstr "Dateien geändert"
 

	
 
msgid "files removed"
 
msgstr "Dateien entfernt"
 

	
 
msgid "commit"
 
msgstr "Commit"
 

	
 
msgid "file added"
 
msgstr "Datei hinzugefügt"
 

	
 
msgid "file changed"
 
msgstr "Datei geändert"
 

	
 
msgid "file removed"
 
msgstr "Datei entfernt"
 

	
 
msgid "Clone from"
 
msgstr "Clone von"
 

	
 
msgid "Clone URL"
 
msgstr "Clone-URL"
 

	
 
msgid "Download as zip"
 
msgstr "Herunterladen als zip"
 

	
 
msgid "Feed"
 
msgstr "Feed"
 

	
 
msgid "Latest Changes"
 
msgstr "Letzte Änderungen"
 

	
 
msgid "Quick Start"
 
msgstr "Schnelleinstieg"
 

	
 
msgid "Add or upload files directly via Kallithea"
 
msgstr "Dateien direkt über Kallithea hinzufügen oder hochladen"
 

	
 
msgid "Readme file from revision %s:%s"
 
msgstr "Liesmich-Datei von Revision %s:%s"
 

	
 
msgid "Download %s as %s"
 
msgstr "%s als %s herunterladen"
kallithea/i18n/el/LC_MESSAGES/kallithea.po
Show inline comments
 
@@ -1436,1537 +1436,1537 @@ msgstr "Δημόσια Gists"
 

	
 
msgid "Create New Gist"
 
msgstr "Δημιουργία Νέου Gist"
 

	
 
msgid "Created"
 
msgstr "Δημιουργήθηκε"
 

	
 
msgid "There are no gists yet"
 
msgstr "Δεν υπάρχουν ακόμη gists"
 

	
 
msgid "New Gist"
 
msgstr "Νέο Gist"
 

	
 
msgid "Name this gist ..."
 
msgstr "Ονομάστε αυτό το gist..."
 

	
 
msgid "Create Private Gist"
 
msgstr "Δημιουργία Ιδιωτικού Gist"
 

	
 
msgid "Create Public Gist"
 
msgstr "Δημιουργία Δημόσιου Gist"
 

	
 
msgid "Reset"
 
msgstr "Επαναφορά"
 

	
 
msgid "Gist"
 
msgstr "Gist"
 

	
 
msgid "URL"
 
msgstr "URL"
 

	
 
msgid "Public Gist"
 
msgstr "Δημόσιο Gist"
 

	
 
msgid "Private Gist"
 
msgstr "Ιδιωτικό Gist"
 

	
 
msgid "Delete"
 
msgstr "Διαγραφή"
 

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

	
 
msgid "Edit"
 
msgstr "Επεξεργασία"
 

	
 
msgid "Show as Raw"
 
msgstr "Ακατέργαστη Εμφάνιση"
 

	
 
msgid "created"
 
msgstr "δημιουργήθηκε"
 

	
 
msgid "Show as raw"
 
msgstr "Ακατέργαστη εμφάνιση"
 

	
 
msgid "My Account"
 
msgstr "Ο Λογαριασμός Μου"
 

	
 
msgid "Profile"
 
msgstr "Προφίλ"
 

	
 
msgid "Email Addresses"
 
msgstr "Διευθύνσεις ηλεκτρονικού ταχυδρομείου"
 

	
 
msgid "SSH Keys"
 
msgstr "Κλειδιά SSH"
 

	
 
msgid "API Keys"
 
msgstr "Κλειδιά API"
 

	
 
msgid "Owned Repositories"
 
msgstr "Αποθετήρια που μου Ανήκουν"
 

	
 
msgid "Watched Repositories"
 
msgstr "Αποθετήρια που Παρακολουθώ"
 

	
 
msgid "Show Permissions"
 
msgstr "Εμφάνιση Δικαιωμάτων"
 

	
 
msgid "Built-in"
 
msgstr "Ενσωματωμένο"
 

	
 
msgid "Confirm to reset this API key: %s"
 
msgstr "Επιβεβαίωση για επαναφορά αυτού του κλειδιού API: %s"
 

	
 
msgid "Expired"
 
msgstr "Έληξε"
 

	
 
msgid "Confirm to remove this API key: %s"
 
msgstr "Επιβεβαίωση κατάργησης αυτού του κλειδιού API: %s"
 

	
 
msgid "Remove"
 
msgstr "Κατάργηση"
 

	
 
msgid "No additional API keys specified"
 
msgstr "Δεν έχουν καθοριστεί πρόσθετα κλειδιά API"
 

	
 
msgid "New API key"
 
msgstr "Νέο κλειδί API"
 

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

	
 
msgid ""
 
"\n"
 
"API keys are used to let scripts or services access %s using your\n"
 
"account, as if you had provided the script or service with your actual\n"
 
"password.\n"
 
msgstr ""
 
"\n"
 
"Τα κλειδιά API χρησιμοποιούνται για να επιτρέπουν προγράμματα ή υπηρεσίες "
 
"να έχουν πρόσβαση στο %s χρησιμοποιώντας το λογαριασμό σας, σαν να "
 
"παρείχατε στο πρόγραμμα ή την υπηρεσία, τον πραγματικό σας κωδικό "
 
"πρόσβασης.\n"
 

	
 
msgid ""
 
"\n"
 
"Like passwords, API keys should therefore never be shared with others,\n"
 
"nor passed to untrusted scripts or services. If such sharing should\n"
 
"happen anyway, reset the API key on this page to prevent further use.\n"
 
msgstr ""
 
"\n"
 
"Όπως οι κωδικοί πρόσβασης, τα κλειδιά API δεν πρέπει επομένως να "
 
"κοινοποιούνται ποτέ σε άλλους,\n"
 
"ούτε να μεταβιβάζονται σε μη αξιόπιστα προγράμματα ή υπηρεσίες. Εάν μια "
 
"τέτοια κοινοποίηση πρέπει\n"
 
"γίνει, επαναφέρετε το κλειδί API σε αυτήν τη σελίδα για να αποφύγετε "
 
"περαιτέρω χρήση.\n"
 

	
 
msgid "Primary"
 
msgstr "Πρωτεύων"
 

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

	
 
msgid "No additional emails specified."
 
msgstr "Δεν έχουν καθοριστεί πρόσθετα μηνύματα ηλεκτρονικού ταχυδρομείου."
 

	
 
msgid "New email address"
 
msgstr "Νέα διεύθυνση ηλεκτρονικού ταχυδρομείου"
 

	
 
msgid "Change Your Account Password"
 
msgstr "Αλλαγή του Κωδικού Πρόσβασης του Λογαριασμού σας"
 

	
 
msgid "Current password"
 
msgstr "Τρέχων κωδικός πρόσβασης"
 

	
 
msgid "New password"
 
msgstr "Νέος κωδικός πρόσβασης"
 

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

	
 
msgid ""
 
"This account is managed with %s and the password cannot be changed here"
 
msgstr ""
 
"Η διαχείριση αυτού του λογαριασμού γίνεται με %s και ο κωδικός πρόσβασης "
 
"δεν μπορεί να αλλάξει εδώ"
 

	
 
msgid "Current IP"
 
msgstr "Τρέχουσα IP"
 

	
 
msgid "Gravatar"
 
msgstr "Gravatar"
 

	
 
msgid "Change %s avatar at"
 
msgstr "Αλλαγή avatar %s στο"
 

	
 
msgid "Avatars are disabled"
 
msgstr "Τα Avatars είναι απενεργοποιημένα"
 

	
 
msgid "Repositories You Own"
 
msgstr "Αποθετήρια που σας ανήκουν"
 

	
 
msgid "Name"
 
msgstr "Όνομα"
 

	
 
msgid "Fingerprint"
 
msgstr "Αποτύπωμα"
 

	
 
msgid "Last Used"
 
msgstr "Τελευταία χρησιμοποιήθηκε"
 

	
 
msgid "Confirm to remove this SSH key: %s"
 
msgstr "Επιβεβαίωση κατάργησης αυτού του κλειδιού SSH: %s"
 

	
 
msgid "No SSH keys have been added"
 
msgstr "Δεν έχουν προστεθεί κλειδιά SSH"
 

	
 
msgid "New SSH key"
 
msgstr "Νέο κλειδί SSH"
 

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

	
 
msgid "Public key (contents of e.g. ~/.ssh/id_rsa.pub)"
 
msgstr "Δημόσιο κλειδί (περιεχόμενο π.χ. ~/.ssh/id_rsa.pub)"
 

	
 
msgid "Repositories You are Watching"
 
msgstr "Αποθετήρια που παρακολουθείτε"
 

	
 
msgid "Default Permissions"
 
msgstr "Προεπιλεγμένα Δικαιώματα"
 

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

	
 
msgid "IP Whitelist"
 
msgstr "Λίστα επιτρεπόμενων IP"
 

	
 
msgid "Anonymous access"
 
msgstr "Ανώνυμη πρόσβαση"
 

	
 
msgid "Allow anonymous access"
 
msgstr "Να επιτρέπεται η ανώνυμη πρόσβαση"
 

	
 
msgid ""
 
"Allow access to Kallithea without needing to log in. Anonymous users use "
 
"%s user permissions."
 
msgstr ""
 
"Να επιτρέπεται η πρόσβαση στην Καλλιθέα χωρίς να χρειάζεται να "
 
"συνδεθείτε. Οι ανώνυμοι χρήστες χρησιμοποιούν δικαιώματα χρήστη %s."
 

	
 
msgid ""
 
"All default permissions on each repository will be reset to chosen "
 
"permission, note that all custom default permission on repositories will "
 
"be lost"
 
msgstr ""
 
"Όλα τα προεπιλεγμένα δικαιώματα σε κάθε αποθετήριο θα επαναφερθούν στα "
 
"επιλεγμένα δικαιώματα. Σημειώστε ότι όλα τα προσαρμοσμένα προεπιλεγμένα "
 
"δικαιώματα στα αποθετήρια θα χαθούν"
 

	
 
msgid "Apply to all existing repositories"
 
msgstr "Εφαρμογή σε όλα τα υπάρχοντα αποθετήρια"
 

	
 
msgid "Permissions for the Default user on new repositories."
 
msgstr "Δικαιώματα για τον προεπιλεγμένο χρήστη σε νέα αποθετήρια."
 

	
 
msgid "Repository group"
 
msgstr "Ομάδα αποθετηρίου"
 

	
 
msgid ""
 
"All default permissions on each repository group will be reset to chosen "
 
"permission, note that all custom default permission on repository groups "
 
"will be lost"
 
msgstr ""
 
"Όλα τα προεπιλεγμένα δικαιώματα σε κάθε ομάδα αποθετηρίων θα επαναφερθούν "
 
"στα επιλεγμένα δικαιώματα. Σημειώστε ότι όλα τα προσαρμοσμένα "
 
"προεπιλεγμένα δικαιώματα στις ομάδες αποθετηρίων θα χαθούν"
 

	
 
msgid "Apply to all existing repository groups"
 
msgstr "Εφαρμογή σε όλες τις υπάρχουσες ομάδες αποθετηρίων"
 

	
 
msgid "Permissions for the Default user on new repository groups."
 
msgstr "Δικαιώματα για τον προεπιλεγμένο χρήστη σε νέες ομάδες αποθετηρίων."
 

	
 
msgid "User group"
 
msgstr "Ομάδα χρηστών"
 

	
 
msgid ""
 
"All default permissions on each user group will be reset to chosen "
 
"permission, note that all custom default permission on user groups will "
 
"be lost"
 
msgstr ""
 
"Όλα τα προεπιλεγμένα δικαιώματα σε κάθε ομάδα χρηστών θα επαναφερθούν στα "
 
"επιλεγμένα δικαιώματα. Σημειώστε ότι όλα τα προσαρμοσμένα προεπιλεγμένα "
 
"δικαιώματα στις ομάδες χρηστών θα χαθούν"
 

	
 
msgid "Apply to all existing user groups"
 
msgstr "Εφαρμογή σε όλες τις υπάρχουσες ομάδες χρηστών"
 

	
 
msgid "Permissions for the Default user on new user groups."
 
msgstr "Δικαιώματα για τον προεπιλεγμένο χρήστη σε νέες ομάδες χρηστών."
 

	
 
msgid "Top level repository creation"
 
msgstr "Δημιουργία αποθετηρίου ανώτατου επιπέδου"
 

	
 
msgid ""
 
"Enable this to allow non-admins to create repositories at the top level."
 
msgstr ""
 
"Ενεργοποιήστε αυτήν την επιλογή ώστε να επιτρέπεται σε μη διαχειριστές να "
 
"δημιουργούν αποθετήρια στο ανώτερο επίπεδο."
 

	
 
msgid ""
 
"Note: This will also give all users API access to create repositories "
 
"everywhere. That might change in future versions."
 
msgstr ""
 
"Σημείωση: Αυτό θα δώσει επίσης σε όλους τους χρήστες πρόσβαση API για τη "
 
"δημιουργία αποθετηρίων παντού. Αυτό μπορεί να αλλάξει σε μελλοντικές "
 
"εκδόσεις."
 

	
 
msgid "Repository creation with group write access"
 
msgstr "Δημιουργία αποθετηρίου με πρόσβαση εγγραφής ομάδας"
 

	
 
msgid ""
 
"With this, write permission to a repository group allows creating "
 
"repositories inside that group. Without this, group write permissions "
 
"mean nothing."
 
msgstr ""
 
"Με αυτό, η άδεια εγγραφής σε μια ομάδα αποθετηρίων επιτρέπει τη "
 
"δημιουργία αποθετηρίων εντός αυτής της ομάδας. Χωρίς αυτό, τα δικαιώματα "
 
"ομαδικής εγγραφής δεν σημαίνουν τίποτα."
 

	
 
msgid "User group creation"
 
msgstr "Δημιουργία ομάδας χρηστών"
 

	
 
msgid "Enable this to allow non-admins to create user groups."
 
msgstr ""
 
"Ενεργοποιήστε αυτήν την επιλογή για να επιτρέψετε σε μη διαχειριστές να "
 
"δημιουργούν ομάδες χρηστών."
 

	
 
msgid "Registration"
 
msgstr "Εγγραφή"
 

	
 
msgid "External auth account activation"
 
msgstr "Ενεργοποίηση λογαριασμού εξωτερικού ελέγχου"
 

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

	
 
msgid "All IP addresses are allowed."
 
msgstr "Επιτρέπονται όλες οι διευθύνσεις IP."
 

	
 
msgid "New IP address"
 
msgstr "Νέα διεύθυνση IP"
 

	
 
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"
 
msgstr[1] ""
 
"Επιβεβαίωση διαγραφής αυτής της ομάδας: %s με αποθετήρια δεδομένων %s"
 

	
 
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 ""
 
"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 "Δεν έχετε συνδεθεί"
 

	
 
msgid "Login to Your Account"
 
msgstr "Συνδεθείτε στο λογαριασμό σας"
 

	
 
msgid "Forgot password?"
 
msgstr "Ξεχάσατε τον κωδικό πρόσβασης;"
 

	
 
msgid "Don't have an 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 "Show"
 
msgstr "Εμφάνιση"
 

	
 
msgid "No permissions defined yet"
 
msgstr "Δεν έχουν οριστεί ακόμα δικαιώματα"
 

	
 
msgid "Permission"
 
msgstr "Δικαίωμα"
 

	
 
msgid "Edit Permission"
 
msgstr "Επεξεργασία Δικαιώματος"
 

	
 
msgid "No permission defined"
 
msgstr "Δεν έχει οριστεί κανένα δικαίωμα"
 

	
 
msgid "Retry"
 
msgstr "Επανάληψη"
 

	
 
msgid "Submitting ..."
 
msgstr "Υποβολή..."
 

	
 
msgid "Unable to post"
 
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; {1}"
 

	
 
msgid "Selection Link"
 
msgstr "Σύνδεσμος Επιλογής"
 

	
 
msgid "Collapse Diff"
 
msgstr "Σύμπτυξη Διαφοράς"
 

	
 
msgid "Expand Diff"
 
msgstr "Ανάπτυξη Διαφοράς"
 

	
 
msgid "No revisions"
 
msgstr "Χωρίς αναθεωρήσεις"
 

	
 
msgid "Type name of user or member to grant permission"
 
msgstr ""
 
"Πληκτρολογήστε το όνομα του χρήστη ή του μέλους για την εκχώρηση "
 
"δικαιωμάτων"
 

	
 
msgid "Failed to revoke permission"
 
msgstr "Απέτυχε η ανάκληση του δικαιωμάτος"
 

	
 
msgid "Confirm to revoke permission for {0}: {1} ?"
 
msgstr "Επιβεβαιώστε την ανάκληση του δικαιώματος για {0}: {1};"
 

	
 
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 "%s Changelog"
 
msgstr "%s Αρχείο καταγραφής αλλαγών"
 

	
 
msgid "showing %d out of %d revision"
 
msgid_plural "showing %d out of %d revisions"
 
msgstr[0] "εμφάνιση %d από %d αναθεώρηση"
 
msgstr[1] "εμφάνιση %d από %d αναθεώρησεις"
 

	
 
msgid "Clear selection"
 
msgstr "Καθαρισμός επιλογής"
 

	
 
msgid "Go to tip of repository"
 
msgstr "Μετάβαση στην κεφαλή του αποθετηρίου"
 

	
 
msgid "Branch filter:"
 
msgstr "Φίλτρο κλάδου:"
 

	
 
msgid "There are no changes yet"
 
msgstr "Δεν υπάρχουν αλλαγές ακόμα"
 

	
 
msgid "Removed"
 
msgstr "Αφαιρέθηκε"
 

	
 
msgid "Changed"
 
msgstr "Αλλάχτηκε"
 

	
 
msgid "Added"
 
msgstr "Προστέθηκε"
 

	
 
msgid "Affected %s files"
 
msgstr "Επηρεάστηκαν %s αρχεία"
 

	
 
msgid "First (oldest) changeset in this list"
 
msgstr "Πρώτο (παλαιότερο) σετ αλλαγών σε αυτήν τη λίστα"
 

	
 
msgid "Last (most recent) changeset in this list"
 
msgstr "Τελευταίο (πιο πρόσφατο) σετ αλλαγών σε αυτήν τη λίστα"
 

	
 
msgid "Position in this list of changesets"
 
msgstr "Θέση σε αυτήν τη λίστα των αλλαγών"
 

	
 
msgid ""
 
"Changeset status: %s by %s\n"
 
"Click to open associated pull request %s"
 
msgstr ""
 
"Κατάσταση συνόλου αλλαγών: %s από %s\n"
 
"Κάντε κλικ για να ανοίξετε το συσχετισμένο αίτημα έλξης %s"
 

	
 
msgid "Changeset status: %s by %s"
 
msgstr "Κατάσταση σετ αλλαγών: %s από %s"
 

	
 
msgid "Expand commit message"
 
msgstr "Ανάπτυξη μηνύματος commit"
 

	
 
msgid "%s comments"
 
msgstr "%s σχόλια"
 

	
 
msgid "Bookmark %s"
 
msgstr "Σελιδοδείκτης %s"
 

	
 
msgid "Tag %s"
 
msgstr "Ετικέτα %s"
 

	
 
msgid "Branch %s"
 
msgstr "Κλάδος %s"
 

	
 
msgid "%s Changeset"
 
msgstr "Σετ αλλαγών %s"
 

	
 
msgid "Changeset status"
 
msgstr "Κατάσταση σετ αλλαγών"
 

	
 
msgid "Raw diff"
 
msgstr "Ακατέργαστη διαφορά"
 

	
 
msgid "Patch diff"
 
msgstr "Διαφορά κώδικα"
 

	
 
msgid "Download diff"
 
msgstr "Λήψη διαφοράς"
 

	
 
msgid "Merge"
 
msgstr "Συγχώνευση"
 

	
 
msgid "Replaced by:"
 
msgstr "Αντικαταστάθηκε από:"
 

	
 
msgid "Preceded by:"
 
msgstr "Προηγείται από:"
 

	
 
msgid "%s file changed"
 
msgid_plural "%s files changed"
 
msgstr[0] "Άλλαξε %s αρχείο"
 
msgstr[1] "Άλλαξαν %s αρχεία"
 

	
 
msgid "%s file changed with %s insertions and %s deletions"
 
msgid_plural "%s files changed with %s insertions and %s deletions"
 
msgstr[0] "Άλλαξε %s αρχείο με %s εισαγωγές και %s διαγραφές"
 
msgstr[1] "Άλλαξαν %s αρχεία με %s εισαγωγές και %s διαγραφές"
 

	
 
msgid "Show full diff anyway"
 
msgstr "Εμφάνιση πλήρους διαφοράς ούτως ή άλλως"
 

	
 
msgid "comment"
 
msgstr "σχόλιο"
 

	
 
msgid "on pull request"
 
msgstr "κατόπιν αιτήματος έλξης"
 

	
 
msgid "No title"
 
msgstr "Χωρίς τίτλο"
 

	
 
msgid "on this changeset"
 
msgstr "σε αυτό το σετ αλλαγών"
 

	
 
msgid "Delete comment?"
 
msgstr "Διαγραφή σχολίου;"
 

	
 
msgid "Status change"
 
msgstr "Αλλαγή κατάστασης"
 

	
 
msgid "Comments are in plain text. Use @username to notify another user."
 
msgstr ""
 
"Τα σχόλια είναι σε απλό κείμενο. Χρησιμοποιήστε @username για να "
 
"ειδοποιήσετε έναν άλλο χρήστη."
 

	
 
msgid "Set changeset status"
 
msgstr "Ορισμός κατάστασης σετ αλλαγών"
 

	
 
msgid "Vote for pull request status"
 
msgstr "Ψηφοφορία για την κατάσταση του αιτήματος έλξης"
 

	
 
msgid "No change"
 
msgstr "Καμία αλλαγή"
 

	
 
msgid "Finish pull request"
 
msgstr "Τερματισμός αιτήματος έλξης"
 

	
 
msgid "Close"
 
msgstr "Κλείσιμο"
 

	
 
msgid "Comment"
 
msgstr "Σχολιασμός"
 

	
 
msgid "You need to be logged in to comment."
 
msgstr "Πρέπει να είστε συνδεδεμένος για να σχολιάσετε."
 

	
 
msgid "Login now"
 
msgstr "Συνδεθείτε τώρα"
 

	
 
msgid "Hide"
 
msgstr "Απόκρυψη"
 

	
 
msgid "%d comment"
 
msgid_plural "%d comments"
 
msgstr[0] "%d σχόλιο"
 
msgstr[1] "%d σχόλια"
 

	
 
msgid "%d inline"
 
msgid_plural "%d inline"
 
msgstr[0] "%d ενσωματωμένο"
 
msgstr[1] "%d ενσωματωμένα"
 

	
 
msgid "%d general"
 
msgid_plural "%d general"
 
msgstr[0] "%d γενικά"
 
msgstr[1] "%d γενικά"
 

	
 
msgid "%s Changesets"
 
msgstr "Σετ αλλαγών του %s"
 

	
 
msgid "Changeset status: %s"
 
msgstr "Κατάσταση σετ αλλαγών: %s"
 

	
 
msgid "Files affected"
 
msgstr "Αρχεία που επηρεάστηκαν"
 

	
 
msgid "No file before"
 
msgstr "Δεν υπάρχει αρχείο πριν"
 

	
 
msgid "File before"
 
msgstr "Αρχείο πριν"
 

	
 
msgid "Modified"
 
msgstr "Τροποποιημένο"
 

	
 
msgid "Deleted"
 
msgstr "Διαγράφηκε"
 

	
 
msgid "Renamed"
 
msgstr "Μετονομάστηκε"
 

	
 
msgid "Unknown operation: %r"
 
msgstr "Άγνωστη λειτουργία: %r"
 

	
 
msgid "No file after"
 
msgstr "Δεν υπάρχει αρχείο μετά"
 

	
 
msgid "File after"
 
msgstr "Αρχείο μετά"
 

	
 
msgid "Show full diff for this file"
 
msgstr "Εμφάνιση πλήρους διαφοράς για αυτό το αρχείο"
 

	
 
msgid "Show full side-by-side diff for this file"
 
msgstr "Εμφάνιση πλήρους διαφοράς δίπλα-δίπλα για αυτό το αρχείο"
 

	
 
msgid "Show inline comments"
 
msgstr "Εμφάνιση ενσωματωμένων σχολίων"
 

	
 
msgid "No changesets"
 
msgstr "Χωρίς σετ αλλαγών"
 

	
 
msgid "Criss cross merge situation with multiple merge ancestors detected!"
 
msgstr ""
 
"Εντοπίστηκε κατάσταση διασταυρούμενης συγχώνευσης με πολλούς προγόνους "
 
"συγχώνευσης!"
 

	
 
msgid ""
 
"Please merge the target branch to your branch before creating a pull "
 
"request."
 
msgstr ""
 
"Παρακαλώ συγχωνεύστε τον κλάδο-στόχο στον κλάδο σας πριν δημιουργήσετε "
 
"ένα αίτημα έλξης."
 

	
 
msgid "Merge Ancestor"
 
msgstr "Πρόγονος Συγχώνευσης"
 

	
 
msgid "Show merge diff"
 
msgstr "Εμφάνιση διαφοράς συγχώνευσης"
 

	
 
msgid "is"
 
msgstr "είναι"
 

	
 
msgid "%s changesets"
 
msgstr "%s σετ αλλαγών"
 

	
 
msgid "behind"
 
msgstr "πίσω"
 

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

	
 
msgid "Compare Revisions"
 
msgstr "Σύγκριση Αναθεωρήσεων"
 

	
 
msgid "Swap"
 
msgstr "Ανταλαγή"
kallithea/i18n/fr/LC_MESSAGES/kallithea.po
Show inline comments
 
@@ -1566,1537 +1566,1537 @@ msgstr "Gist privé"
 
msgid "Delete"
 
msgstr "Supprimer"
 

	
 
msgid "Confirm to delete this Gist"
 
msgstr "Confirmer la supprisson de ce gist"
 

	
 
msgid "Edit"
 
msgstr "Modifier"
 

	
 
msgid "Show as Raw"
 
msgstr "Montrer en brut"
 

	
 
msgid "created"
 
msgstr "créé"
 

	
 
msgid "Show as raw"
 
msgstr "Montrer en brut"
 

	
 
msgid "My Account"
 
msgstr "Mon compte"
 

	
 
msgid "Profile"
 
msgstr "Profil"
 

	
 
msgid "Email Addresses"
 
msgstr "Adresses e-mail"
 

	
 
msgid "SSH Keys"
 
msgstr "Clés SSH"
 

	
 
msgid "API Keys"
 
msgstr "Clés de l'API"
 

	
 
msgid "Owned Repositories"
 
msgstr "Dépôts possédés"
 

	
 
msgid "Watched Repositories"
 
msgstr "Dépôts surveillés"
 

	
 
msgid "Show Permissions"
 
msgstr "Afficher les permissions"
 

	
 
msgid "Built-in"
 
msgstr "Inclus"
 

	
 
msgid "Confirm to reset this API key: %s"
 
msgstr "Confirmer la remise à zéro de cette clé d'API : %s"
 

	
 
msgid "Expired"
 
msgstr "a expiré"
 

	
 
msgid "Confirm to remove this API key: %s"
 
msgstr "Confirmer la suppression de cette clé d'API : %s"
 

	
 
msgid "Remove"
 
msgstr "Supprimer"
 

	
 
msgid "No additional API keys specified"
 
msgstr "Pas de clés d'API supplémentaires spécifiées"
 

	
 
msgid "New API key"
 
msgstr "Nouvelle clé d'API"
 

	
 
msgid "Add"
 
msgstr "Ajouter"
 

	
 
msgid ""
 
"\n"
 
"API keys are used to let scripts or services access %s using your\n"
 
"account, as if you had provided the script or service with your actual\n"
 
"password.\n"
 
msgstr ""
 
"\n"
 
"Les clés API sont utilisées pour permettre à des scripts et des services "
 
"d'accéder à %s en utilisant votre compte, comme si vous aviez fourni "
 
"votre mot de passe à ces scripts ou services.\n"
 

	
 
msgid ""
 
"\n"
 
"Like passwords, API keys should therefore never be shared with others,\n"
 
"nor passed to untrusted scripts or services. If such sharing should\n"
 
"happen anyway, reset the API key on this page to prevent further use.\n"
 
msgstr ""
 
"\n"
 
"Comme les mots de passe, les clés API ne devraient donc jamais être "
 
"diffusées à des tiers, ni passés à des scripts ou services auxquels vous "
 
"ne faites pas confiance. Si cette diffusion a tout de même lieu, vous "
 
"pouvez réinitialiser la clé API sur cette page pour qu'elle ne puisse "
 
"plus être utilisée.\n"
 

	
 
msgid "Primary"
 
msgstr "Primaire"
 

	
 
msgid "Confirm to delete this email: %s"
 
msgstr "Veuillez confirmer la suppression de l’e-mail : %s"
 

	
 
msgid "No additional emails specified."
 
msgstr "Pas d'adresse e-mail supplémentaires spécifiées."
 

	
 
msgid "New email address"
 
msgstr "Nouvelle adresse e-mail"
 

	
 
msgid "Change Your Account Password"
 
msgstr "Changer le mot de passe de votre compte"
 

	
 
msgid "Current password"
 
msgstr "Mot de passe actuel"
 

	
 
msgid "New password"
 
msgstr "Nouveau mot de passe"
 

	
 
msgid "Confirm new password"
 
msgstr "Confirmer le nouveau mot de passe"
 

	
 
msgid ""
 
"This account is managed with %s and the password cannot be changed here"
 
msgstr ""
 
"Ce compte est géré avec %s et le mot de passe ne peut pas être changé ici"
 

	
 
msgid "Current IP"
 
msgstr "Adresse IP actuelle"
 

	
 
msgid "Gravatar"
 
msgstr "Gravatar"
 

	
 
msgid "Change %s avatar at"
 
msgstr "Changer l'avatar de %s sur"
 

	
 
msgid "Avatars are disabled"
 
msgstr "Les avatars sont désactivés"
 

	
 
msgid "Repositories You Own"
 
msgstr "Dépôts dont vous êtes le propriétaire"
 

	
 
msgid "Name"
 
msgstr "Nom"
 

	
 
msgid "Fingerprint"
 
msgstr "Empreinte"
 

	
 
msgid "Last Used"
 
msgstr "Dernière utilisation"
 

	
 
msgid "Confirm to remove this SSH key: %s"
 
msgstr "Confirmer la suppression de cette clé SSH : %s"
 

	
 
msgid "No SSH keys have been added"
 
msgstr "Aucune clé SSH n'a été ajoutée"
 

	
 
msgid "New SSH key"
 
msgstr "Nouvelle clé SSH"
 

	
 
msgid "Public key"
 
msgstr "Clé publique"
 

	
 
msgid "Public key (contents of e.g. ~/.ssh/id_rsa.pub)"
 
msgstr "Clé publique (contenus de par ex. ~/.ssh/id_rsa.pub)"
 

	
 
msgid "Repositories You are Watching"
 
msgstr "Dépôts que vous surveillez"
 

	
 
msgid "Default Permissions"
 
msgstr "Permissions par défaut"
 

	
 
msgid "Global"
 
msgstr "Global"
 

	
 
msgid "IP Whitelist"
 
msgstr "Liste blanche d'adresses IP"
 

	
 
msgid "Anonymous access"
 
msgstr "Accès anonyme"
 

	
 
msgid "Allow anonymous access"
 
msgstr "Permettre l'accès anonyme"
 

	
 
msgid ""
 
"Allow access to Kallithea without needing to log in. Anonymous users use "
 
"%s user permissions."
 
msgstr ""
 
"Autoriser l'accès à Kallithea sans le besoin de se connecter. Les "
 
"utilisateurs anonymes ont les permissions de l'utilisateur %s."
 

	
 
msgid ""
 
"All default permissions on each repository will be reset to chosen "
 
"permission, note that all custom default permission on repositories will "
 
"be lost"
 
msgstr ""
 
"Toutes les permissions par défaut de chaque dépôt vont être "
 
"réinitialisées aux valeurs choisies. Notez que toutes les permissions par "
 
"défaut personnalisées sur les dépôts seront perdues"
 

	
 
msgid "Apply to all existing repositories"
 
msgstr "Appliquer à tous les dépôts existants"
 

	
 
msgid "Permissions for the Default user on new repositories."
 
msgstr "Permissions pour l'utilisateur par défaut sur les nouveaux dépôts."
 

	
 
msgid "Repository group"
 
msgstr "Groupe de dépôt"
 

	
 
msgid ""
 
"All default permissions on each repository group will be reset to chosen "
 
"permission, note that all custom default permission on repository groups "
 
"will be lost"
 
msgstr ""
 
"Toutes les permissions par défaut de chaque groupe de dépôts vont être "
 
"réinitialisées aux valeurs choisies. Notez que toutes les permissions par "
 
"défaut personnalisées sur les groupes de dépôts seront perdues"
 

	
 
msgid "Apply to all existing repository groups"
 
msgstr "Appliquer à tous les groupes de dépôts existants"
 

	
 
msgid "Permissions for the Default user on new repository groups."
 
msgstr ""
 
"Permissions pour l'utilisateur par défaut sur les nouveaux groupes de "
 
"dépôts."
 

	
 
msgid "User group"
 
msgstr "Groupe d'utilisateurs"
 

	
 
msgid ""
 
"All default permissions on each user group will be reset to chosen "
 
"permission, note that all custom default permission on user groups will "
 
"be lost"
 
msgstr ""
 
"Toutes les permissions par défaut de chaque groupe d'utilisateurs vont "
 
"être réinitialisées aux valeurs choisies. Notez que toutes les "
 
"permissions par défaut personnalisées sur les groupes d'utilisateurs "
 
"seront perdues"
 

	
 
msgid "Apply to all existing user groups"
 
msgstr "Appliquer à tous les groupes d'utilisateurs existants"
 

	
 
msgid "Permissions for the Default user on new user groups."
 
msgstr ""
 
"Permissions pour l'utilisateur par défaut sur les nouveaux groupes "
 
"d'utilisateurs."
 

	
 
msgid "Top level repository creation"
 
msgstr "Création de dépôt de niveau supérieur"
 

	
 
msgid ""
 
"Enable this to allow non-admins to create repositories at the top level."
 
msgstr ""
 
"Activer pour autoriser les non-administrateurs à créer des dépôts au "
 
"niveau supérieur."
 

	
 
msgid ""
 
"Note: This will also give all users API access to create repositories "
 
"everywhere. That might change in future versions."
 
msgstr ""
 
"Note : Cela autorisera également tous les utilisateurs à utiliser l'API "
 
"pour créer des dépôts partout. Ce comportement peut changer dans des "
 
"versions futures."
 

	
 
msgid "Repository creation with group write access"
 
msgstr "Création de dépôts avec l'accès en écriture du groupe"
 

	
 
msgid ""
 
"With this, write permission to a repository group allows creating "
 
"repositories inside that group. Without this, group write permissions "
 
"mean nothing."
 
msgstr ""
 
"Avec ceci, le droit d'écriture dans un groupe de dépôt donne le droit de "
 
"créer des dépôts dans ce groupe. Sans ceci, le droit d'écriture pour les "
 
"groupes n'a pas d'impact."
 

	
 
msgid "User group creation"
 
msgstr "Création de groupes d'utilisateurs"
 

	
 
msgid "Enable this to allow non-admins to create user groups."
 
msgstr ""
 
"Activer pour autoriser les non-administrateurs à créer des groupes "
 
"d'utilisateurs."
 

	
 
msgid "Repository forking"
 
msgstr "Fork de dépôt"
 

	
 
msgid "Enable this to allow non-admins to fork repositories."
 
msgstr ""
 
"Activer pour autoriser les non-administrateurs à faire des fork de dépôt."
 

	
 
msgid "Registration"
 
msgstr "Enregistrement"
 

	
 
msgid "External auth account activation"
 
msgstr "Activation de l'authentification externe"
 

	
 
msgid "Confirm to delete this IP address: %s"
 
msgstr "Confirmer la suppression de cette adresse IP : %s"
 

	
 
msgid "All IP addresses are allowed."
 
msgstr "Toutes les adresses IP sont autorisées."
 

	
 
msgid "New IP address"
 
msgstr "Nouvelle adresse IP"
 

	
 
msgid "Repository Groups"
 
msgstr "Groupes de dépôts"
 

	
 
msgid "Group name"
 
msgstr "Nom de groupe"
 

	
 
msgid "Group parent"
 
msgstr "Parent du groupe"
 

	
 
msgid "Copy parent group permissions"
 
msgstr "Copier les permissions du groupe parent"
 

	
 
msgid "Copy permission set from parent repository group."
 
msgstr "Copier les permissions à partir du groupe de dépôts parent."
 

	
 
msgid "%s Repository Group Settings"
 
msgstr "Options du groupe de dépôts %s"
 

	
 
msgid "Add Child Group"
 
msgstr "Ajouter un groupe enfant"
 

	
 
msgid "Settings"
 
msgstr "Options"
 

	
 
msgid "Advanced"
 
msgstr "Avancé"
 

	
 
msgid "Permissions"
 
msgstr "Permissions"
 

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

	
 
msgid "Top level repositories"
 
msgstr "Dépôts de niveau supérieur"
 

	
 
msgid "Total repositories"
 
msgstr "Dépôts totaux"
 

	
 
msgid "Children groups"
 
msgstr "Groupes enfants"
 

	
 
msgid "Created on"
 
msgstr "Créé le"
 

	
 
msgid "Confirm to delete this group: %s with %s repository"
 
msgid_plural "Confirm to delete this group: %s with %s repositories"
 
msgstr[0] "Confirmer la suppression de ce groupe : %s avec %s dépôt"
 
msgstr[1] "Confirmer la suppression de ce groupe : %s avec %s dépôts"
 

	
 
msgid "Delete this repository group"
 
msgstr "Supprimer ce groupe de dépôts"
 

	
 
msgid "Not visible"
 
msgstr "Non visible"
 

	
 
msgid "Visible"
 
msgstr "Visible"
 

	
 
msgid "Add repos"
 
msgstr "Ajouter un dépôt"
 

	
 
msgid "Add/Edit groups"
 
msgstr "Ajouter/Modifier les groupes d'utilisateurs"
 

	
 
msgid "User/User Group"
 
msgstr "Utilisateur/groupe d'utilisateurs"
 

	
 
msgid "Default"
 
msgstr "Par défaut"
 

	
 
msgid "Revoke"
 
msgstr "Révoquer"
 

	
 
msgid "Add new"
 
msgstr "Ajouter un nouveau"
 

	
 
msgid "Apply to children"
 
msgstr "Appliquer aux enfants"
 

	
 
msgid "Both"
 
msgstr "Les deux"
 

	
 
msgid ""
 
"Set or revoke permission to all children of that group, including non-"
 
"private repositories and other groups if selected."
 
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 ""
 
"Sélectionner cette option pour autoriser cet utilisateur à forker des "
 
"dépôts"
 

	
 
msgid "Show"
 
msgstr "Afficher"
 

	
 
msgid "No permissions defined yet"
 
msgstr "Aucune permission définie pour l'instant"
 

	
 
msgid "Permission"
 
msgstr "Permission"
 

	
 
msgid "Edit Permission"
 
msgstr "Éditer"
 

	
 
msgid "No permission defined"
 
msgstr "Aucune permission définie"
 

	
 
msgid "Retry"
 
msgstr "Réessayer"
 

	
 
msgid "Submitting ..."
 
msgstr "Envoi…"
 

	
 
msgid "Unable to post"
 
msgstr "Impossible de publier"
 

	
 
msgid "Add Another Comment"
 
msgstr "Ajouter un autre commentaire"
 

	
 
msgid "Stop following this repository"
 
msgstr "Arrêter de suivre ce dépôt"
 

	
 
msgid "Start following this repository"
 
msgstr "Suivre ce dépôt"
 

	
 
msgid "Group"
 
msgstr "Groupe"
 

	
 
msgid "Loading ..."
 
msgstr "Chargement..."
 

	
 
msgid "loading ..."
 
msgstr "chargement..."
 

	
 
msgid "Search truncated"
 
msgstr "Recherche tronquée"
 

	
 
msgid "No matching files"
 
msgstr "Aucun fichier correspondant"
 

	
 
msgid "Open New Pull Request from {0}"
 
msgstr "Ouvrir une nouvelle requête de pull à partir de {0}"
 

	
 
msgid "Open New Pull Request for {0} &rarr; {1}"
 
msgstr "Ouvrir une nouvelle requête de pull pour {0} &rarr; {1}"
 

	
 
msgid "Show Selected Changesets {0} &rarr; {1}"
 
msgstr "Afficher les changesets sélectionnés {0} &rarr; {1}"
 

	
 
msgid "Selection Link"
 
msgstr "Lien vers la sélection"
 

	
 
msgid "Collapse Diff"
 
msgstr "Replier le Diff"
 

	
 
msgid "Expand Diff"
 
msgstr "Déplier le Diff"
 

	
 
msgid "No revisions"
 
msgstr "Aucune révision"
 

	
 
msgid "Type name of user or member to grant permission"
 
msgstr ""
 
"Saisir le nom de l'utilisateur ou du membre à qui donner l'autorisation"
 

	
 
msgid "Failed to revoke permission"
 
msgstr "Échec de la révocation de permission"
 

	
 
msgid "Confirm to revoke permission for {0}: {1} ?"
 
msgstr "Voulez-vous vraiment révoquer la permission pour {0} : {1} ?"
 

	
 
msgid "Select changeset"
 
msgstr "Sélectionner le changeset"
 

	
 
msgid "Specify changeset"
 
msgstr "Sélectionner le changeset"
 

	
 
msgid "Click to sort ascending"
 
msgstr "Tri ascendant"
 

	
 
msgid "Click to sort descending"
 
msgstr "Tri descendant"
 

	
 
msgid "No records found."
 
msgstr "Aucun élément n’a été trouvé."
 

	
 
msgid "Data error."
 
msgstr "Erreur d’intégrité des données."
 

	
 
msgid "Loading..."
 
msgstr "Chargement…"
 

	
 
msgid "%s Changelog"
 
msgstr "Historique de %s"
 

	
 
msgid "showing %d out of %d revision"
 
msgid_plural "showing %d out of %d revisions"
 
msgstr[0] "Affichage de %d révision sur %d"
 
msgstr[1] "Affichage de %d révisions sur %d"
 

	
 
msgid "Clear selection"
 
msgstr "Vider la sélection"
 

	
 
msgid "Go to tip of repository"
 
msgstr "Aller au sommet (tip) du dépôt"
 

	
 
msgid "Compare fork with %s"
 
msgstr "Comparer le fork avec %s"
 

	
 
msgid "Compare fork with parent repository (%s)"
 
msgstr "Comparer le fork avec le dépôt parent (%s)"
 

	
 
msgid "Branch filter:"
 
msgstr "Filtre de branche :"
 

	
 
msgid "There are no changes yet"
 
msgstr "Il n’y a aucun changement pour le moment"
 

	
 
msgid "Removed"
 
msgstr "Supprimé"
 

	
 
msgid "Changed"
 
msgstr "Modifié"
 

	
 
msgid "Added"
 
msgstr "Ajouté"
 

	
 
msgid "Affected %s files"
 
msgstr "%s fichiers affectés"
 

	
 
msgid "First (oldest) changeset in this list"
 
msgstr "Premier changeset dans cette liste (le plus vieux)"
 

	
 
msgid "Last (most recent) changeset in this list"
 
msgstr "Dernier changeset dans cette liste (le plus récent)"
 

	
 
msgid "Position in this list of changesets"
 
msgstr "Position dans cette liste de changesets"
 

	
 
msgid ""
 
"Changeset status: %s by %s\n"
 
"Click to open associated pull request %s"
 
msgstr ""
 
"Statut du changeset : %s par %s\n"
 
"Cliquer pour ouvrir la requête de pull %s associée"
 

	
 
msgid "Changeset status: %s by %s"
 
msgstr "Statut de changeset : %s par %s"
 

	
 
msgid "Expand commit message"
 
msgstr "Développer le message de commit"
 

	
 
msgid "%s comments"
 
msgstr "%s commentaires"
 

	
 
msgid "Bookmark %s"
 
msgstr "Marque-page %s"
 

	
 
msgid "Tag %s"
 
msgstr "Tag %s"
 

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

	
 
msgid "%s Changeset"
 
msgstr "Changeset de %s"
 

	
 
msgid "Changeset status"
 
msgstr "Statut du changeset"
 

	
 
msgid "Raw diff"
 
msgstr "Diff brut"
 

	
 
msgid "Patch diff"
 
msgstr "Diff patch"
 

	
 
msgid "Download diff"
 
msgstr "Télécharger le diff"
 

	
 
msgid "Merge"
 
msgstr "Fusion"
 

	
 
msgid "Grafted from:"
 
msgstr "Grafté depuis :"
 

	
 
msgid "Transplanted from:"
 
msgstr "Transplanté depuis :"
 

	
 
msgid "Replaced by:"
 
msgstr "Remplacé par :"
 

	
 
msgid "Preceded by:"
 
msgstr "Précédé par :"
 

	
 
msgid "%s file changed"
 
msgid_plural "%s files changed"
 
msgstr[0] "%s fichier changé"
 
msgstr[1] "%s fichiers changés"
 

	
 
msgid "%s file changed with %s insertions and %s deletions"
 
msgid_plural "%s files changed with %s insertions and %s deletions"
 
msgstr[0] "%s fichier changé avec %s insertions et %s suppressions"
 
msgstr[1] "%s fichiers changés avec %s insertions et %s suppressions"
 

	
 
msgid "Show full diff anyway"
 
msgstr "Afficher le diff complet quand même"
 

	
 
msgid "comment"
 
msgstr "commentaire"
 

	
 
msgid "on pull request"
 
msgstr "sur la requête de pull"
 

	
 
msgid "No title"
 
msgstr "Aucun titre"
 

	
 
msgid "on this changeset"
 
msgstr "sur ce changeset"
 

	
 
msgid "Delete comment?"
 
msgstr "Supprimer le commentaire ?"
 

	
 
msgid "Status change"
 
msgstr "Changement de statut"
 

	
 
msgid "Comments are in plain text. Use @username to notify another user."
 
msgstr ""
 
"Les commentaires sont en texte brut. Utilisez @nomutilisateur pour "
 
"envoyer une notification à un autre utilisateur."
 

	
 
msgid "Set changeset status"
 
msgstr "Modifier le statut du changeset"
 

	
 
msgid "Vote for pull request status"
 
msgstr "Voter pour le statut de la requête de pull"
 

	
 
msgid "No change"
 
msgstr "Aucun changement"
 

	
 
msgid "Finish pull request"
 
msgstr "Terminer la requête de pull"
 

	
 
msgid "Close"
 
msgstr "Fermer"
 

	
 
msgid "Comment"
 
msgstr "Commentaire"
 

	
 
msgid "You need to be logged in to comment."
 
msgstr "Vous devez être connecté pour poster des commentaires."
 

	
 
msgid "Login now"
 
msgstr "Se connecter maintenant"
 

	
 
msgid "Hide"
 
msgstr "Masquer"
 

	
 
msgid "%d comment"
 
msgid_plural "%d comments"
 
msgstr[0] "%d commentaire"
 
msgstr[1] "%d commentaires"
 

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

	
 
msgid "%d general"
 
msgid_plural "%d general"
 
msgstr[0] "%d général"
 
msgstr[1] "%d généraux"
 

	
 
msgid "%s Changesets"
 
msgstr "Changesets de %s"
 

	
 
msgid "Changeset status: %s"
 
msgstr "Statut de changeset : %s"
 

	
 
msgid "Files affected"
 
msgstr "Fichiers affectés"
 

	
 
msgid "No file before"
 
msgstr "Pas de fichier précédent"
 

	
 
msgid "File before"
 
msgstr "Fichier précédent"
 

	
 
msgid "Modified"
 
msgstr "Modifié"
 

	
 
msgid "Deleted"
 
msgstr "Supprimé"
 

	
 
msgid "Renamed"
 
msgstr "Renommé"
 

	
 
msgid "Unknown operation: %r"
 
msgstr "Opération inconnue : %r"
 

	
 
msgid "No file after"
 
msgstr "Aucun fichier suivant"
 

	
 
msgid "File after"
 
msgstr "Fichier suivant"
 

	
 
msgid "Show full diff for this file"
 
msgstr "Afficher le diff complet pour ce fichier"
 

	
 
msgid "Show full side-by-side diff for this file"
 
msgstr "Afficher le diff complet côte-à-côte pour ce fichier"
 

	
 
msgid "Show inline comments"
 
msgstr "Afficher les commentaires de ligne"
 

	
 
msgid "No changesets"
 
msgstr "Aucun changeset"
 

	
 
msgid "Criss cross merge situation with multiple merge ancestors detected!"
 
msgstr "Fusion croisée avec plusieurs ancêtres de fusion détectée !"
 

	
 
msgid ""
 
"Please merge the target branch to your branch before creating a pull "
 
"request."
 
msgstr ""
 
"Merci de fusionner la branche cible dans votre branche avant de créer une "
 
"requête de pull."
 

	
 
msgid "Merge Ancestor"
 
msgstr "Ancêtre de fusion"
 

	
 
msgid "Show merge diff"
 
msgstr "Afficher le diff de fusion"
 

	
 
msgid "is"
 
msgstr "est"
 

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

	
 
msgid "behind"
 
msgstr "derrière"
 

	
 
msgid "%s Compare"
 
msgstr "Comparaison de %s"
 

	
 
msgid "Compare Revisions"
 
msgstr "Comparer les révisions"
 

	
 
msgid "Swap"
 
msgstr "Échanger"
 

	
 
msgid "Compare revisions, branches, bookmarks, or tags."
 
msgstr "Comparer les révisions, les branches, les marque-pages ou les tags."
 

	
 
msgid "Showing %s commit"
 
msgid_plural "Showing %s commits"
 
msgstr[0] "Affichage de %s commit"
 
msgstr[1] "Affichage de %s commits"
 

	
 
msgid "Show full diff"
 
msgstr "Afficher le diff complet"
 

	
 
msgid "Public repository"
 
msgstr "Dépôt public"
 

	
 
msgid "Repository creation in progress..."
 
msgstr "Création du dépôt en cours..."
 

	
 
msgid "No changesets yet"
 
msgstr "Dépôt vide"
 

	
 
msgid "Subscribe to %s rss feed"
 
msgstr "S’abonner au flux RSS de %s"
kallithea/i18n/ja/LC_MESSAGES/kallithea.po
Show inline comments
 
@@ -994,1537 +994,1537 @@ msgstr "ログイン"
 
msgid "Log In to %s"
 
msgstr "%s へログイン"
 

	
 
msgid "Username"
 
msgstr "ユーザー名"
 

	
 
msgid "Password"
 
msgstr "パスワード"
 

	
 
msgid "Forgot your password ?"
 
msgstr "パスワードを忘れた?"
 

	
 
msgid "Don't have an account ?"
 
msgstr "アカウントを持っていない?"
 

	
 
msgid "Sign In"
 
msgstr "サインイン"
 

	
 
msgid "Password Reset"
 
msgstr "パスワードのリセット"
 

	
 
msgid "Reset Your Password to %s"
 
msgstr "%sのパスワードをリセット"
 

	
 
msgid "Reset Your Password"
 
msgstr "パスワードのリセット"
 

	
 
msgid "Email Address"
 
msgstr "メールアドレス"
 

	
 
msgid "Captcha"
 
msgstr "キャプチャ"
 

	
 
msgid "Send Password Reset Email"
 
msgstr "パスワードリセットメールを送信"
 

	
 
msgid ""
 
"A password reset link will be sent to the specified email address if it "
 
"is registered in the system."
 
msgstr ""
 
"システムに登録されている場合、パスワードリセットのリンクを指定されたメール"
 
"アドレスに送信します。"
 

	
 
msgid "New Password"
 
msgstr "新しいパスワード"
 

	
 
msgid "Confirm New Password"
 
msgstr "新しいパスワードの確認"
 

	
 
msgid "Sign Up"
 
msgstr "サインアップ"
 

	
 
msgid "Sign Up to %s"
 
msgstr "%s へサインアップ"
 

	
 
msgid "Re-enter password"
 
msgstr "パスワード再入力"
 

	
 
msgid "First Name"
 
msgstr "名前"
 

	
 
msgid "Last Name"
 
msgstr "名字"
 

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

	
 
msgid "Admin Journal"
 
msgstr "管理ジャーナル"
 

	
 
msgid "journal filter..."
 
msgstr "ジャーナルフィルタ..."
 

	
 
msgid "Filter"
 
msgstr "フィルター"
 

	
 
msgid "%s Entry"
 
msgid_plural "%s Entries"
 
msgstr[0] "%s 個のエントリ"
 

	
 
msgid "Action"
 
msgstr "アクション"
 

	
 
msgid "Date"
 
msgstr "日時"
 

	
 
msgid "From IP"
 
msgstr "アクセス元IPアドレス"
 

	
 
msgid "No actions yet"
 
msgstr "まだアクションがありません"
 

	
 
msgid "Authentication Settings"
 
msgstr "認証設定"
 

	
 
msgid "Authentication"
 
msgstr "認証"
 

	
 
msgid "Authentication Plugins"
 
msgstr "認証プラグイン"
 

	
 
msgid "Enabled Plugins"
 
msgstr "有効なプラグイン"
 

	
 
msgid ""
 
"Comma-separated list of plugins; Kallithea will try user authentication "
 
"in plugin order"
 
msgstr ""
 
"カンマ区切りのプラグインの一覧です。Kallitheaはプラグインの並び順でユー"
 
"ザー認証を試みます"
 

	
 
msgid "Available built-in plugins"
 
msgstr "有効な組み込みプラグイン"
 

	
 
msgid "Plugin"
 
msgstr "プラグイン"
 

	
 
msgid "Save"
 
msgstr "保存"
 

	
 
msgid "Repository Defaults"
 
msgstr "リポジトリのデフォルト設定"
 

	
 
msgid "Type"
 
msgstr "リポジトリの種別"
 

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

	
 
msgid ""
 
"Private repositories are only visible to people explicitly added as "
 
"collaborators."
 
msgstr ""
 
"非公開リポジトリはコラボレーターとして明示的に追加された人のみ閲覧できま"
 
"す。"
 

	
 
msgid "Enable statistics"
 
msgstr "統計を有効にする"
 

	
 
msgid "Enable statistics window on summary page."
 
msgstr "概要ページの統計ウィンドウを有効にします。"
 

	
 
msgid "Enable downloads"
 
msgstr "ダウンロードを有効にする"
 

	
 
msgid "Enable download menu on summary page."
 
msgstr "概要ページのダウンロードメニューを有効にします。"
 

	
 
msgid "Edit Gist"
 
msgstr "Gistを編集"
 

	
 
msgid ""
 
"Gist was updated since you started editing. Copy your changes and click "
 
"%(here)s to reload new version."
 
msgstr ""
 
"編集開始後にGistが更新されています。あなたの変更箇所をコピーしておき、 "
 
"%(here)s をクリックして新しいバージョンを読み込みなおしてください。"
 

	
 
msgid "Gist description ..."
 
msgstr "Gist の説明..."
 

	
 
msgid "Gist lifetime"
 
msgstr "Gist 有効期間"
 

	
 
msgid "Expires"
 
msgstr "失効"
 

	
 
msgid "Never"
 
msgstr "しない"
 

	
 
msgid "Update Gist"
 
msgstr "Gistを更新"
 

	
 
msgid "Cancel"
 
msgstr "キャンセル"
 

	
 
msgid "Private Gists for User %s"
 
msgstr "ユーザー %s の非公開 Gists"
 

	
 
msgid "Public Gists for User %s"
 
msgstr "ユーザー %s の公開 Gists"
 

	
 
msgid "Public Gists"
 
msgstr "公開 Gists"
 

	
 
msgid "Create New Gist"
 
msgstr "新しい Gist を作成"
 

	
 
msgid "Created"
 
msgstr "作成日"
 

	
 
msgid "There are no gists yet"
 
msgstr "まだgistがありません"
 

	
 
msgid "New Gist"
 
msgstr "Gistを新規作成"
 

	
 
msgid "Create Private Gist"
 
msgstr "非公開 Gist を作成"
 

	
 
msgid "Create Public Gist"
 
msgstr "公開 Gist を作成"
 

	
 
msgid "Reset"
 
msgstr "リセット"
 

	
 
msgid "Gist"
 
msgstr "Gist"
 

	
 
msgid "URL"
 
msgstr "URL"
 

	
 
msgid "Public Gist"
 
msgstr "公開 Gist"
 

	
 
msgid "Private Gist"
 
msgstr "非公開 Gist"
 

	
 
msgid "Delete"
 
msgstr "削除"
 

	
 
msgid "Confirm to delete this Gist"
 
msgstr "このGistを削除してもよろしいですか?"
 

	
 
msgid "Edit"
 
msgstr "編集"
 

	
 
msgid "Show as Raw"
 
msgstr "Raw形式で表示"
 

	
 
msgid "created"
 
msgstr "作成日"
 

	
 
msgid "Show as raw"
 
msgstr "Raw形式で表示"
 

	
 
msgid "My Account"
 
msgstr "アカウント"
 

	
 
msgid "Profile"
 
msgstr "プロフィール"
 

	
 
msgid "Email Addresses"
 
msgstr "メールアドレス"
 

	
 
msgid "API Keys"
 
msgstr "APIキー"
 

	
 
msgid "Owned Repositories"
 
msgstr "所有しているリポジトリ"
 

	
 
msgid "Watched Repositories"
 
msgstr "ウォッチ中のリポジトリ"
 

	
 
msgid "Show Permissions"
 
msgstr "権限の表示"
 

	
 
msgid "Built-in"
 
msgstr "ビルトイン"
 

	
 
msgid "Confirm to reset this API key: %s"
 
msgstr "このAPIキーをリセットしてもよろしいですか?: %s"
 

	
 
msgid "Expired"
 
msgstr "期限切れ"
 

	
 
msgid "Confirm to remove this API key: %s"
 
msgstr "このAPIキーを削除してもよろしいですか?: %s"
 

	
 
msgid "Remove"
 
msgstr "削除"
 

	
 
msgid "No additional API keys specified"
 
msgstr "API キーが指定されていません"
 

	
 
msgid "New API key"
 
msgstr "新しいAPIキー"
 

	
 
msgid "Add"
 
msgstr "追加"
 

	
 
msgid "Primary"
 
msgstr "プライマリ"
 

	
 
msgid "Confirm to delete this email: %s"
 
msgstr "このメールアドレスを削除してもよろしいですか? : %s"
 

	
 
msgid "No additional emails specified."
 
msgstr "追加のメールアドレスはありません。"
 

	
 
msgid "New email address"
 
msgstr "新しいメールアドレス"
 

	
 
msgid "Change Your Account Password"
 
msgstr "パスワードを変更してください"
 

	
 
msgid "Current password"
 
msgstr "現在のパスワード"
 

	
 
msgid "New password"
 
msgstr "新しいパスワード"
 

	
 
msgid "Confirm new password"
 
msgstr "新しいパスワードの確認"
 

	
 
msgid "Current IP"
 
msgstr "現在の IP アドレス"
 

	
 
msgid "Avatars are disabled"
 
msgstr "アバターは無効です"
 

	
 
msgid "Repositories You Own"
 
msgstr "あなたが所有者のリポジトリ"
 

	
 
msgid "Name"
 
msgstr "名前"
 

	
 
msgid "Repositories You are Watching"
 
msgstr "あなたがウォッチしているリポジトリ"
 

	
 
msgid "Default Permissions"
 
msgstr "デフォルトの権限"
 

	
 
msgid "Global"
 
msgstr "全般"
 

	
 
msgid "IP Whitelist"
 
msgstr "IPアドレスのホワイトリスト"
 

	
 
msgid "Anonymous access"
 
msgstr "匿名アクセス"
 

	
 
msgid ""
 
"All default permissions on each repository will be reset to chosen "
 
"permission, note that all custom default permission on repositories will "
 
"be lost"
 
msgstr ""
 
"選択したパーミッションで、各リポジトリのデフォルトパーミッションをリセット"
 
"します。各リポジトリの既存のカスタムデフォルトパーミッション設定は無くなる"
 
"ので注意してください"
 

	
 
msgid "Repository group"
 
msgstr "リポジトリグループ"
 

	
 
msgid ""
 
"All default permissions on each repository group will be reset to chosen "
 
"permission, note that all custom default permission on repository groups "
 
"will be lost"
 
msgstr ""
 
"選択したパーミッションで、各リポジトリグループのデフォルトパーミッションを"
 
"リセットします。各リポジトリグループの既存のカスタムデフォルトパーミッショ"
 
"ン設定は無くなるので注意してください"
 

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

	
 
msgid "Top level repository creation"
 
msgstr "トップレベルリポジトリの作成"
 

	
 
msgid "Repository creation with group write access"
 
msgstr "グループ書き込み権限でのリポジトリ作成"
 

	
 
msgid "User group creation"
 
msgstr "ユーザーグループ作成"
 

	
 
msgid "Repository forking"
 
msgstr "リポジトリのフォーク"
 

	
 
msgid "Registration"
 
msgstr "新規登録"
 

	
 
msgid "External auth account activation"
 
msgstr "外部認証アカウントのアクティベート"
 

	
 
msgid "Confirm to delete this IP address: %s"
 
msgstr "このIPアドレスを削除してもよろしいですか? : %s"
 

	
 
msgid "All IP addresses are allowed."
 
msgstr "すべてのIPアドレスが許可されています。"
 

	
 
msgid "New IP address"
 
msgstr "新しいIPアドレス"
 

	
 
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"
 
msgstr "リビジョンなし"
 

	
 
msgid "Failed to revoke permission"
 
msgstr "権限の取消に失敗しました"
 

	
 
msgid "Confirm to revoke permission for {0}: {1} ?"
 
msgstr "権限 {0}: {1} を取り消してもよろしいですか?"
 

	
 
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 "%s Changelog"
 
msgstr "%s チェンジログ"
 

	
 
msgid "showing %d out of %d revision"
 
msgid_plural "showing %d out of %d revisions"
 
msgstr[0] "%d / %d リビジョンを表示"
 

	
 
msgid "Clear selection"
 
msgstr "選択を解除"
 

	
 
msgid "Go to tip of repository"
 
msgstr "リポジトリの最新のリビジョン(tip)に移動"
 

	
 
msgid "Compare fork with %s"
 
msgstr "%s とフォークを比較"
 

	
 
msgid "Compare fork with parent repository (%s)"
 
msgstr "フォーク元(%s)と比較"
 

	
 
msgid "Branch filter:"
 
msgstr "ブランチフィルタ:"
 

	
 
msgid "There are no changes yet"
 
msgstr "まだ変更がありません"
 

	
 
msgid "Removed"
 
msgstr "削除"
 

	
 
msgid "Changed"
 
msgstr "変更"
 

	
 
msgid "Added"
 
msgstr "追加"
 

	
 
msgid "Affected %s files"
 
msgstr "%s ファイルに影響"
 

	
 
msgid "Expand commit message"
 
msgstr "コミットメッセージを展開"
 

	
 
msgid "Bookmark %s"
 
msgstr "ブックマーク %s"
 

	
 
msgid "Tag %s"
 
msgstr "タグ %s"
 

	
 
msgid "Branch %s"
 
msgstr "ブランチ %s"
 

	
 
msgid "%s Changeset"
 
msgstr "%s チェンジセット"
 

	
 
msgid "Changeset status"
 
msgstr "チェンジセットステータス"
 

	
 
msgid "Raw diff"
 
msgstr "diffとして差分を表示"
 

	
 
msgid "Patch diff"
 
msgstr "パッチとして差分を表示"
 

	
 
msgid "Download diff"
 
msgstr "差分をダウンロード"
 

	
 
msgid "Merge"
 
msgstr "マージ"
 

	
 
msgid "%s file changed"
 
msgid_plural "%s files changed"
 
msgstr[0] "%s ファイルに影響"
 

	
 
msgid "%s file changed with %s insertions and %s deletions"
 
msgid_plural "%s files changed with %s insertions and %s deletions"
 
msgstr[0] "%s ファイルに影響。 %s 個の追加と %s 個の削除"
 

	
 
msgid "Show full diff anyway"
 
msgstr "とにかくすべての差分を表示"
 

	
 
msgid "No title"
 
msgstr "No title"
 

	
 
msgid "Delete comment?"
 
msgstr "コメントを削除しますか?"
 

	
 
msgid "Status change"
 
msgstr "ステータスを変更"
 

	
 
msgid "Set changeset status"
 
msgstr "リビジョンステータスを設定"
 

	
 
msgid "Vote for pull request status"
 
msgstr "プルリクエストステータスの投票"
 

	
 
msgid "No change"
 
msgstr "変更なし"
 

	
 
msgid "Comment"
 
msgstr "コメント"
 

	
 
msgid "You need to be logged in to comment."
 
msgstr "コメントにはログインする必要があります。"
 

	
 
msgid "Login now"
 
msgstr "今すぐログインする"
 

	
 
msgid "Hide"
 
msgstr "隠す"
 

	
 
msgid "%d comment"
 
msgid_plural "%d comments"
 
msgstr[0] "%d 個のコメント"
 

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

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

	
 
msgid "%s Changesets"
 
msgstr "%s チェンジセット"
 

	
 
msgid "Changeset status: %s"
 
msgstr "チェンジセットステータス: %s"
 

	
 
msgid "Files affected"
 
msgstr "影響のあるファイル"
 

	
 
msgid "Deleted"
 
msgstr "削除"
 

	
 
msgid "Renamed"
 
msgstr "リネーム"
 

	
 
msgid "Show full diff for this file"
 
msgstr "このファイルのすべての差分を表示"
 

	
 
msgid "Show full side-by-side diff for this file"
 
msgstr "このファイルの差分を並べて表示"
 

	
 
msgid "Show inline comments"
 
msgstr "インラインコメントを表示"
 

	
 
msgid "No changesets"
 
msgstr "チェンジセットはありません"
 

	
 
msgid "Show merge diff"
 
msgstr "マージの差分を表示"
 

	
 
msgid "is"
 
msgstr "is"
 

	
 
msgid "%s changesets"
 
msgstr "%s チェンジセット"
 

	
 
msgid "behind"
 
msgstr "behind"
 

	
 
msgid "%s Compare"
 
msgstr "%s 比較"
 

	
 
msgid "Compare Revisions"
 
msgstr "リビジョンを比較"
 

	
 
msgid "Swap"
 
msgstr "入れ替え"
 

	
 
msgid "Compare revisions, branches, bookmarks, or tags."
 
msgstr "リビジョン、ブランチ、ブックマークもしくはタグの比較を行います。"
 

	
 
msgid "Showing %s commit"
 
msgid_plural "Showing %s commits"
 
msgstr[0] "%s コミットを表示"
 

	
 
msgid "Show full diff"
 
msgstr "すべての差分を表示"
 

	
 
msgid "Public repository"
 
msgstr "公開リポジトリ"
 

	
 
msgid "Repository creation in progress..."
 
msgstr "リポジトリを作成しています..."
 

	
 
msgid "No changesets yet"
 
msgstr "まだチェンジセットがありません"
 

	
 
msgid "Subscribe to %s rss feed"
 
msgstr "%s の RSS フィードを購読"
 

	
 
msgid "Subscribe to %s atom feed"
 
msgstr "%s の ATOM フィードを購読"
 

	
 
msgid "Creating"
 
msgstr "作成中"
 

	
 
msgid "Hello %s"
 
msgstr "こんにちは %s"
 

	
 
msgid "We have received a request to reset the password for your account."
 
msgstr "あなたのアカウントのパスワードリセットリクエストを受け取りました。"
 

	
 
msgid "To set a new password, click the following link"
 
msgstr "新しいパスワードを設定するために、次のリンクをクリックしてください"
 

	
 
msgid ""
 
"If it weren't you who requested the password reset, just disregard this "
 
"message."
 
msgstr ""
 
"パスワードリセットのリクエストをしていない場合、このメッセージは無視してく"
 
"ださい。"
 

	
 
msgid "%s File side-by-side diff"
 
msgstr "%s ファイルの差分を並べて表示"
 

	
 
msgid "File diff"
 
msgstr "ファイル差分"
 

	
 
msgid "%s File Diff"
 
msgstr "%s ファイル差分"
 

	
 
msgid "%s Files"
 
msgstr "%s ファイル"
 

	
 
msgid "%s Files Add"
 
msgstr "%s ファイルを追加"
 

	
 
msgid "Add New File"
 
msgstr "新しいファイルを追加"
 

	
 
msgid "Location"
 
msgstr "場所"
 

	
 
msgid "Enter filename..."
 
msgstr "ファイル名..."
 

	
 
msgid "or"
 
msgstr "または"
 

	
 
msgid "Upload File"
 
msgstr "アップロードファイル"
 

	
 
msgid "Create New File"
 
msgstr "新しいファイルを作成"
 

	
 
msgid "Commit Message"
 
msgstr "コミットメッセージ"
 

	
 
msgid "Commit Changes"
 
msgstr "変更をコミット"
 

	
 
msgid "Search File List"
 
msgstr "ファイル一覧を検索"
 

	
 
msgid "Loading file list..."
 
msgstr "ファイル一覧を読み込み中..."
 

	
 
msgid "Size"
 
msgstr "サイズ"
 

	
 
msgid "Last Revision"
 
msgstr "最後のリビジョン"
 

	
 
msgid "Last Modified"
 
msgstr "最終更新日"
 

	
 
msgid "Last Committer"
 
msgstr "最後の作成者"
 

	
 
msgid "%s Files Delete"
 
msgstr "%s のファイルを削除"
 

	
 
msgid "Delete file"
 
msgstr "ファイルを削除"
 

	
 
msgid "%s File Edit"
 
msgstr "%s のファイルを編集"
 

	
 
msgid "Edit file"
 
msgstr "ファイルを編集"
 

	
 
msgid "Show Annotation"
 
msgstr "アノテーションを表示"
 

	
 
msgid "Download as Raw"
 
msgstr "Raw形式でダウンロード"
 

	
 
msgid "Source"
 
msgstr "ソース"
 

	
 
msgid "%s author"
 
msgid_plural "%s authors"
 
msgstr[0] "%s 人の作成者"
 

	
 
msgid "Diff to Revision"
 
msgstr "このリビジョンとの差分"
 

	
 
msgid "Show at Revision"
 
msgstr "このリビジョンを表示"
 

	
 
msgid "Show Full History"
 
msgstr "全ての履歴を表示"
 

	
 
msgid "Show Authors"
 
msgstr "作成者を表示"
 

	
 
msgid "Show Source"
 
msgstr "ソースを表示"
 

	
 
msgid "Editing binary files not allowed"
 
msgstr "バイナリファイルの編集は行えません"
 

	
 
msgid "Editing files allowed only when on branch head revision"
 
msgstr "ファイル編集はブランチのヘッドリビジョンでのみ許可されています"
 

	
 
msgid "Deleting files allowed only when on branch head revision"
 
msgstr "ファイルの削除はブランチのヘッドリビジョンでのみ行えます"
 

	
 
msgid "Binary file (%s)"
 
msgstr "バイナリファイル (%s)"
 

	
 
msgid "annotation"
 
msgstr "アノテーション"
 

	
 
msgid "Go Back"
 
msgstr "戻る"
 

	
 
msgid "No files at given path"
 
msgstr "そのパスにはファイルはありません"
 

	
 
msgid "%s Followers"
 
msgstr "%s フォロワー"
 

	
 
msgid "Followers"
 
msgstr "フォロワー"
 

	
 
msgid "Started following -"
 
msgstr "フォロー開始日 -"
 

	
 
msgid "Fork repository %s"
 
msgstr "リポジトリ %s をフォーク"
 

	
 
msgid "Fork name"
 
msgstr "フォーク名"
 

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

	
 
msgid "Private"
 
msgstr "非公開"
 

	
 
msgid "Copy permissions"
 
msgstr "権限のコピー"

Changeset was too big and was cut off... Show full diff anyway

0 comments (0 inline, 0 general)