Make sure javascript login is internationalized
Make sure javascript login is internationalized

<?php <?php
/** /**
* Controller for login * Controller for login
* *
* @author Christopher Han <xiphux@gmail.com> * @author Christopher Han <xiphux@gmail.com>
* @copyright Copyright (c) 2012 Christopher Han * @copyright Copyright (c) 2012 Christopher Han
* @package GitPHP * @package GitPHP
* @subpackage Controller * @subpackage Controller
*/ */
class GitPHP_Controller_Login extends GitPHP_ControllerBase class GitPHP_Controller_Login extends GitPHP_ControllerBase
{ {
/** /**
* Flag whether login was successful * Flag whether login was successful
* *
* @var boolean|null * @var boolean|null
*/ */
protected $loginSuccess = null; protected $loginSuccess = null;
   
/** /**
* Initialize controller * Initialize controller
*/ */
public function Initialize() public function Initialize()
{ {
$this->InitializeConfig(); $this->InitializeConfig();
   
$this->InitializeResource(); $this->InitializeResource();
   
$this->InitializeUserList(); $this->InitializeUserList();
   
$this->EnableLogging(); $this->EnableLogging();
   
$this->InitializeSmarty(); $this->InitializeSmarty();
} }
   
/** /**
* Gets the template for this controller * Gets the template for this controller
* *
* @return string template filename * @return string template filename
*/ */
protected function GetTemplate() protected function GetTemplate()
{ {
return 'login.tpl'; return 'login.tpl';
} }
   
/** /**
* Gets the cache key for this controller * Gets the cache key for this controller
* *
* @return string cache key * @return string cache key
*/ */
protected function GetCacheKey() protected function GetCacheKey()
{ {
$key = (isset($this->params['username']) ? $this->params['username'] : '') . '|' . (isset($this->params['password']) ? $this->params['password'] : ''); $key = (isset($this->params['username']) ? $this->params['username'] : '') . '|' . (isset($this->params['password']) ? $this->params['password'] : '');
if (!empty($key)) if (!empty($key))
$key = sha1($key); $key = sha1($key);
return $key; return $key;
} }
   
/** /**
* Gets the name of this controller's action * Gets the name of this controller's action
* *
* @param boolean $local true if caller wants the localized action name * @param boolean $local true if caller wants the localized action name
* @return string action name * @return string action name
*/ */
public function GetName($local = false) public function GetName($local = false)
{ {
if ($local && $this->resource) { if ($local && $this->resource) {
return $this->resource->translate('login'); return $this->resource->translate('login');
} }
return 'login'; return 'login';
} }
   
/** /**
* Loads headers for this template * Loads headers for this template
*/ */
protected function LoadHeaders() protected function LoadHeaders()
{ {
if (isset($this->params['output']) && ($this->params['output'] == 'js')) { if (isset($this->params['output']) && ($this->params['output'] == 'js')) {
$this->headers[] = 'Content-Type: application/json'; $this->headers[] = 'Content-Type: application/json';
$this->DisableLogging(); $this->DisableLogging();
} }
   
if (!empty($_SESSION['gitphpuser'])) { if (!empty($_SESSION['gitphpuser'])) {
$user = $this->userList->GetUser($_SESSION['gitphpuser']); $user = $this->userList->GetUser($_SESSION['gitphpuser']);
if ($user) { if ($user) {
if (!(isset($this->params['output']) && ($this->params['output'] == 'js'))) { if (!(isset($this->params['output']) && ($this->params['output'] == 'js'))) {
if (!empty($this->params['redirect'])) if (!empty($this->params['redirect']))
$this->headers[] = 'Location: ' . $this->params['redirect']; $this->headers[] = 'Location: ' . $this->params['redirect'];
else else
$this->headers[] = 'Location: ' . $this->router->GetUrl(array(), true); $this->headers[] = 'Location: ' . $this->router->GetUrl(array(), true);
} }
$this->loginSuccess = true; $this->loginSuccess = true;
} else { } else {
unset($_SESSION['gitphpuser']); unset($_SESSION['gitphpuser']);
} }
} }
   
if (!(empty($this->params['username']) || empty($this->params['password']))) { if (!(empty($this->params['username']) || empty($this->params['password']))) {
$user = $this->userList->GetUser($this->params['username']); $user = $this->userList->GetUser($this->params['username']);
if ($user && ($this->params['password'] === $user->GetPassword())) { if ($user && ($this->params['password'] === $user->GetPassword())) {
$_SESSION['gitphpuser'] = $user->GetUsername(); $_SESSION['gitphpuser'] = $user->GetUsername();
if (!(isset($this->params['output']) && ($this->params['output'] == 'js'))) { if (!(isset($this->params['output']) && ($this->params['output'] == 'js'))) {
if (!empty($this->params['redirect'])) if (!empty($this->params['redirect']))
$this->headers[] = 'Location: ' . $this->params['redirect']; $this->headers[] = 'Location: ' . $this->params['redirect'];
else else
$this->headers[] = 'Location: ' . $this->router->GetUrl(array(), true); $this->headers[] = 'Location: ' . $this->router->GetUrl(array(), true);
} }
$this->loginSuccess = true; $this->loginSuccess = true;
} else { } else {
$this->loginSuccess = false; $this->loginSuccess = false;
} }
} }
} }
   
/** /**
* Loads data for this template * Loads data for this template
*/ */
protected function LoadData() protected function LoadData()
{ {
if (!(isset($this->params['output']) && ($this->params['output'] == 'js'))) { if (!(isset($this->params['output']) && ($this->params['output'] == 'js'))) {
if ($this->loginSuccess === false) { if ($this->loginSuccess === false) {
$this->tpl->assign('loginerror', 'Invalid username or password'); if ($this->resource) {
  $this->tpl->assign('loginerror', $this->resource->translate('Invalid username or password'));
  } else {
  $this->tpl->assign('loginerror', 'Invalid username or password');
  }
} }
if (!empty($this->params['redirect'])) { if (!empty($this->params['redirect'])) {
$this->tpl->assign('redirect', $this->params['redirect']); $this->tpl->assign('redirect', $this->params['redirect']);
} else if (!empty($_SERVER['HTTP_REFERER'])) { } else if (!empty($_SERVER['HTTP_REFERER'])) {
$this->tpl->assign('redirect', $_SERVER['HTTP_REFERER']); $this->tpl->assign('redirect', $_SERVER['HTTP_REFERER']);
} }
} }
} }
   
/** /**
* Renders the output * Renders the output
*/ */
public function Render() public function Render()
{ {
if (isset($this->params['output']) && ($this->params['output'] == 'js')) { if (isset($this->params['output']) && ($this->params['output'] == 'js')) {
$result = array(); $result = array();
if ($this->loginSuccess === true) if ($this->loginSuccess === true)
$result['success'] = true; $result['success'] = true;
else { else {
$result['success'] = false; $result['success'] = false;
if ($this->loginSuccess === false) if ($this->loginSuccess === false) {
$result['message'] = 'Invalid username or password'; if ($this->resource) {
  $result['message'] = $this->resource->translate('Invalid username or password');
  } else {
  $result['message'] = 'Invalid username or password';
  }
  }
} }
echo json_encode($result); echo json_encode($result);
return; return;
} }
   
if ($this->loginSuccess === true) if ($this->loginSuccess === true)
return; // logged in and redirected, don't render return; // logged in and redirected, don't render
   
return parent::Render(); return parent::Render();
} }
   
} }
   
/* /*
* GitPHP javascript login popup * GitPHP javascript login popup
* *
* @author Christopher Han <xiphux@gmail.com> * @author Christopher Han <xiphux@gmail.com>
* @copyright Copyright (c) 2012 Christopher Han * @copyright Copyright (c) 2012 Christopher Han
* @package GitPHP * @package GitPHP
* @subpackage Javascript * @subpackage Javascript
*/ */
   
define(['jquery', 'modules/geturl', 'qtip'], function($, url) { define(['jquery', 'modules/geturl', 'modules/resources', 'qtip'], function($, url, resources) {
return function(element) { return function(element) {
$(element).qtip({ $(element).qtip({
content: { content: {
text: function(api) { text: function(api) {
var container = $(document.createElement('div')); var container = $(document.createElement('div'));
var loginError = $(document.createElement('div')).addClass('loginError').addClass('error').css('padding-top', '0px'); var loginError = $(document.createElement('div')).addClass('loginError').addClass('error').css('padding-top', '0px');
var loginDiv = $(document.createElement('div')).addClass('loginForm'); var loginDiv = $(document.createElement('div')).addClass('loginForm');
var loginForm = $(document.createElement('form')) var loginForm = $(document.createElement('form'))
   
container.append(loginDiv); container.append(loginDiv);
loginDiv.append(loginForm); loginDiv.append(loginForm);
loginForm.append(loginError); loginForm.append(loginError);
   
var usernameDiv = $(document.createElement('div')).addClass('field'); var usernameDiv = $(document.createElement('div')).addClass('field');
var usernameLabel = $(document.createElement('label')).attr('for', 'username').text('username:'); var usernameLabel = $(document.createElement('label')).attr('for', 'username').text(resources.UsernameLabel);
var usernameField = $(document.createElement('input')).attr('type', 'text').attr('name', 'username'); var usernameField = $(document.createElement('input')).attr('type', 'text').attr('name', 'username');
usernameDiv.append(usernameLabel); usernameDiv.append(usernameLabel);
usernameDiv.append(usernameField); usernameDiv.append(usernameField);
loginForm.append(usernameDiv); loginForm.append(usernameDiv);
   
var passwordDiv = $(document.createElement('div')).addClass('field'); var passwordDiv = $(document.createElement('div')).addClass('field');
var passwordLabel = $(document.createElement('label')).attr('for', 'password').text('password:'); var passwordLabel = $(document.createElement('label')).attr('for', 'password').text(resources.PasswordLabel);
var passwordField = $(document.createElement('input')).attr('type', 'password').attr('name', 'password'); var passwordField = $(document.createElement('input')).attr('type', 'password').attr('name', 'password');
passwordDiv.append(passwordLabel); passwordDiv.append(passwordLabel);
passwordDiv.append(passwordField); passwordDiv.append(passwordField);
loginForm.append(passwordDiv); loginForm.append(passwordDiv);
   
var loginButton = $(document.createElement('input')).attr('type', 'submit').attr('value', 'login'); var loginButton = $(document.createElement('input')).attr('type', 'submit').attr('value', resources.Login);
loginForm.append(loginButton); loginForm.append(loginButton);
   
loginForm.bind('submit', function(event) { loginForm.bind('submit', function(event) {
var username = $('input[name=username]', this).val(); var username = $('input[name=username]', this).val();
var password = $('input[name=password]', this).val(); var password = $('input[name=password]', this).val();
var errorContainer = $('.loginError', this); var errorContainer = $('.loginError', this);
if (!username) { if (!username) {
errorContainer.text('Username is required'); errorContainer.text(resources.UsernameIsRequired);
return false; return false;
} }
if (!password) { if (!password) {
errorContainer.text('Password is required'); errorContainer.text(resources.PasswordIsRequired);
return false; return false;
} }
var inputs = $('input', this); var inputs = $('input', this);
$.ajax({ $.ajax({
url: url + '?a=login&o=js', url: url + '?a=login&o=js',
data: { data: {
a: 'login', a: 'login',
o: 'js', o: 'js',
username: username, username: username,
password: password password: password
}, },
type: 'post', type: 'post',
dataType: 'json', dataType: 'json',
success: function(data, status, jqXHR) { success: function(data, status, jqXHR) {
if (data) { if (data) {
if (data.success === true) { if (data.success === true) {
window.location.reload(); window.location.reload();
} else if (data.message) { } else if (data.message) {
errorContainer.text(data.message); errorContainer.text(data.message);
} else { } else {
errorContainer.text('Error while logging in'); errorContainer.text(resources.AnErrorOccurredWhileLoggingIn);
} }
} else { } else {
errorContainer.text('Error while logging in'); errorContainer.text(resources.AnErrorOccurredWhileLoggingIn);
} }
}, },
error: function(jqXHR, message) { error: function(jqXHR, message) {
errorContainer.text('Error while logging in'); errorContainer.text(resources.AnErrorOccurredWhileLoggingIn);
}, },
beforeSend: function() { beforeSend: function() {
inputs.attr('disabled', 'disabled'); inputs.attr('disabled', 'disabled');
}, },
complete: function() { complete: function() {
inputs.removeAttr('disabled'); inputs.removeAttr('disabled');
} }
}); });
   
return false; return false;
}); });
   
return container; return container;
}, },
title: { title: {
text: 'Login', text: resources.LoginTitle,
button: true button: true
} }
}, },
position: { position: {
my: 'center', my: 'center',
at: 'center', at: 'center',
target: $(window) target: $(window)
}, },
show: { show: {
event: 'click', event: 'click',
modal: { modal: {
on: true on: true
} }
}, },
hide: { hide: {
event: false event: false
}, },
style: { style: {
classes: 'ui-tooltip-light ui-tooltip-shadow' classes: 'ui-tooltip-light ui-tooltip-shadow'
}, },
events: { events: {
visible: function(event, api) { visible: function(event, api) {
$('input[name=username]', this).focus(); $('input[name=username]', this).focus();
} }
} }
}); });
$(element).click(function(event) { $(element).click(function(event) {
return false; return false;
}); });
}; };
}); });
   
# SOME DESCRIPTIVE TITLE. # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Christopher Han # Copyright (C) YEAR Christopher Han
# This file is distributed under the same license as the PACKAGE package. # This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
# #
#, fuzzy #, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: GitPHP 0.2.8\n" "Project-Id-Version: GitPHP 0.2.8\n"
"Report-Msgid-Bugs-To: xiphux@gmail.com\n" "Report-Msgid-Bugs-To: xiphux@gmail.com\n"
"POT-Creation-Date: 2012-10-13 16:53-0500\n" "POT-Creation-Date: 2012-10-13 23:16-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n" "Language: \n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
   
# Used as link to and title for page displaying a blob, which is what git calls a single file # Used as link to and title for page displaying a blob, which is what git calls a single file
#: templates/tag.tpl #: templates/tag.tpl
#: templates/blobdiff.tpl #: templates/blobdiff.tpl
#: templates/commit.tpl #: templates/commit.tpl
#: templates/taglist.tpl #: templates/taglist.tpl
#: templates/treelist.tpl #: templates/treelist.tpl
#: templates/searchfiles.tpl #: templates/searchfiles.tpl
#: templates/history.tpl #: templates/history.tpl
#: include/controller/Controller_Blob.class.php:55 #: include/controller/Controller_Blob.class.php:55
msgid "blob" msgid "blob"
msgstr "" msgstr ""
   
# Used as link to and title for the file history, which displays all commits that have modified a certain file # Used as link to and title for the file history, which displays all commits that have modified a certain file
#: templates/commit.tpl #: templates/commit.tpl
#: templates/treelist.tpl #: templates/treelist.tpl
#: templates/searchfiles.tpl #: templates/searchfiles.tpl
#: templates/blob.tpl #: templates/blob.tpl
#: include/controller/Controller_History.class.php:56 #: include/controller/Controller_History.class.php:56
msgid "history" msgid "history"
msgstr "" msgstr ""
   
# Used as title for and link to a list of files in a directory, which git calls a 'tree' # Used as title for and link to a list of files in a directory, which git calls a 'tree'
#: templates/search.tpl #: templates/search.tpl
#: templates/commit.tpl #: templates/commit.tpl
#: templates/headlist.tpl #: templates/headlist.tpl
#: templates/nav.tpl #: templates/nav.tpl
#: templates/treelist.tpl #: templates/treelist.tpl
#: templates/searchfiles.tpl #: templates/searchfiles.tpl
#: templates/log.tpl #: templates/log.tpl
#: templates/projectlist.tpl #: templates/projectlist.tpl
#: templates/shortloglist.tpl #: templates/shortloglist.tpl
#: include/controller/Controller_Tree.class.php:61 #: include/controller/Controller_Tree.class.php:61
msgid "tree" msgid "tree"
msgstr "" msgstr ""
   
# Used as link to download a copy of the files in a given commit # Used as link to download a copy of the files in a given commit
#: templates/search.tpl #: templates/search.tpl
#: templates/commit.tpl #: templates/commit.tpl
#: templates/taglist.tpl #: templates/taglist.tpl
#: templates/main.tpl #: templates/main.tpl
#: templates/treelist.tpl #: templates/treelist.tpl
#: templates/projectlist.tpl #: templates/projectlist.tpl
#: templates/shortloglist.tpl #: templates/shortloglist.tpl
#: include/controller/Controller_Snapshot.class.php:112 #: include/controller/Controller_Snapshot.class.php:112
msgid "snapshot" msgid "snapshot"
msgstr "" msgstr ""
   
# Used to label something stored in a git repository where the type of item - tag, blob, etc - isn't known # Used to label something stored in a git repository where the type of item - tag, blob, etc - isn't known
#: templates/tag.tpl #: templates/tag.tpl
msgid "object" msgid "object"
msgstr "" msgstr ""
   
# Used as link to and title for page displaying info about a single commit in the project # Used as link to and title for page displaying info about a single commit in the project
#: templates/tag.tpl #: templates/tag.tpl
#: templates/search.tpl #: templates/search.tpl
#: templates/commit.tpl #: templates/commit.tpl
#: templates/nav.tpl #: templates/nav.tpl
#: templates/taglist.tpl #: templates/taglist.tpl
#: templates/log.tpl #: templates/log.tpl
#: templates/history.tpl #: templates/history.tpl
#: templates/shortloglist.tpl #: templates/shortloglist.tpl
#: templates/projectbase.tpl #: templates/projectbase.tpl
#: include/controller/Controller_Commit.class.php:59 #: include/controller/Controller_Commit.class.php:59
msgid "commit" msgid "commit"
msgstr "" msgstr ""
   
# Used as link to and title for page displaying detailed info about a tag # Used as link to and title for page displaying detailed info about a tag
#: templates/tag.tpl #: templates/tag.tpl
#: templates/tagtip.tpl #: templates/tagtip.tpl
#: templates/taglist.tpl #: templates/taglist.tpl
#: include/controller/Controller_Tag.class.php:56 #: include/controller/Controller_Tag.class.php:56
msgid "tag" msgid "tag"
msgstr "" msgstr ""
   
# Used to label the author of the commit, and as a field to search # Used to label the author of the commit, and as a field to search
# The author is the person who wrote the changes in the commit # The author is the person who wrote the changes in the commit
#: templates/tag.tpl #: templates/tag.tpl
#: templates/commit.tpl #: templates/commit.tpl
#: templates/committip.tpl #: templates/committip.tpl
#: templates/projectbase.tpl #: templates/projectbase.tpl
msgid "author" msgid "author"
msgstr "" msgstr ""
   
# Used as a link to a plaintext version of a page # Used as a link to a plaintext version of a page
#: templates/blobdiff.tpl #: templates/blobdiff.tpl
#: templates/commit.tpl #: templates/commit.tpl
#: templates/blame.tpl #: templates/blame.tpl
#: templates/treelist.tpl #: templates/treelist.tpl
#: templates/commitdiff.tpl #: templates/commitdiff.tpl
#: templates/blob.tpl #: templates/blob.tpl
msgid "plain" msgid "plain"
msgstr "" msgstr ""
   
# Used as a link to a side-by-side version of a diff # Used as a link to a side-by-side version of a diff
#: templates/blobdiff.tpl #: templates/blobdiff.tpl
#: templates/commitdiff.tpl #: templates/commitdiff.tpl
msgid "side by side" msgid "side by side"
msgstr "" msgstr ""
   
# Used as a link to a unified version of a diff # Used as a link to a unified version of a diff
#: templates/blobdiff.tpl #: templates/blobdiff.tpl
#: templates/commitdiff.tpl #: templates/commitdiff.tpl
msgid "unified" msgid "unified"
msgstr "" msgstr ""
   
# Used as a link to the first page in a list of results # Used as a link to the first page in a list of results
#: templates/search.tpl #: templates/search.tpl
#: templates/tags.tpl #: templates/tags.tpl
#: templates/heads.tpl #: templates/heads.tpl
#: templates/searchfiles.tpl #: templates/searchfiles.tpl
#: templates/history.tpl #: templates/history.tpl
msgid "first" msgid "first"
msgstr "" msgstr ""
   
# Used as a link to the previous page in a list of results # Used as a link to the previous page in a list of results
#: templates/search.tpl #: templates/search.tpl
#: templates/tags.tpl #: templates/tags.tpl
#: templates/heads.tpl #: templates/heads.tpl
#: templates/searchfiles.tpl #: templates/searchfiles.tpl
#: templates/log.tpl #: templates/log.tpl
#: templates/history.tpl #: templates/history.tpl
#: templates/shortlog.tpl #: templates/shortlog.tpl
msgid "prev" msgid "prev"
msgstr "" msgstr ""
   
# Used as a link to the next page in a list of results # Used as a link to the next page in a list of results
#: templates/search.tpl #: templates/search.tpl
#: templates/tags.tpl #: templates/tags.tpl
#: templates/headlist.tpl #: templates/headlist.tpl
#: templates/taglist.tpl #: templates/taglist.tpl
#: templates/heads.tpl #: templates/heads.tpl
#: templates/searchfiles.tpl #: templates/searchfiles.tpl
#: templates/log.tpl #: templates/log.tpl
#: templates/history.tpl #: templates/history.tpl
#: templates/shortlog.tpl #: templates/shortlog.tpl
#: templates/shortloglist.tpl #: templates/shortloglist.tpl
msgid "next" msgid "next"
msgstr "" msgstr ""
   
# Used as link to and title for the full diff of all the changes in a commit # Used as link to and title for the full diff of all the changes in a commit
#: templates/search.tpl #: templates/search.tpl
#: templates/commit.tpl #: templates/commit.tpl
#: templates/nav.tpl #: templates/nav.tpl
#: templates/log.tpl #: templates/log.tpl
#: templates/history.tpl #: templates/history.tpl
#: templates/shortloglist.tpl #: templates/shortloglist.tpl
#: include/controller/Controller_Commitdiff.class.php:49 #: include/controller/Controller_Commitdiff.class.php:49
msgid "commitdiff" msgid "commitdiff"
msgstr "" msgstr ""
   
# Used to label the committer of the commit, and as a field to search # Used to label the committer of the commit, and as a field to search
# The committer is the person who put the commit into this project # The committer is the person who put the commit into this project
#: templates/commit.tpl #: templates/commit.tpl
#: templates/committip.tpl #: templates/committip.tpl
#: templates/projectbase.tpl #: templates/projectbase.tpl
msgid "committer" msgid "committer"
msgstr "" msgstr ""
   
# Used to label the parent of this commit # Used to label the parent of this commit
# The parent is the commit preceding this one in the project history # The parent is the commit preceding this one in the project history
#: templates/commit.tpl #: templates/commit.tpl
msgid "parent" msgid "parent"
msgstr "" msgstr ""
   
# Used to indicate the number of files changed in a commit # Used to indicate the number of files changed in a commit
# Comes before a list of files # Comes before a list of files
# %1: the number of files # %1: the number of files
#: templates/commit.tpl #: templates/commit.tpl
#: templates/commitdiff.tpl #: templates/commitdiff.tpl
msgid "%1 file changed:" msgid "%1 file changed:"
msgid_plural "%1 files changed:" msgid_plural "%1 files changed:"
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
   
# Used to indicate a new object was added with an access mode # Used to indicate a new object was added with an access mode
# %1: the type of object # %1: the type of object
# %2: the mode # %2: the mode
#: templates/commit.tpl #: templates/commit.tpl
msgid "new %1 with mode %2" msgid "new %1 with mode %2"
msgstr "" msgstr ""
   
# Used to indicate a new object was added # Used to indicate a new object was added
# %1: the type of object # %1: the type of object
#: templates/commit.tpl #: templates/commit.tpl
msgid "new %1" msgid "new %1"
msgstr "" msgstr ""
   
# Used to indicate an object was deleted # Used to indicate an object was deleted
# %1: the type of object # %1: the type of object
#: templates/commit.tpl #: templates/commit.tpl
msgid "deleted %1" msgid "deleted %1"
msgstr "" msgstr ""
   
# Used to indicate a file type changed, including original and new file modes # Used to indicate a file type changed, including original and new file modes
# (when both original and new files are regular files) # (when both original and new files are regular files)
# %1: the original file type # %1: the original file type
# %2: the new file type # %2: the new file type
# %3: the original file mode # %3: the original file mode
# %4: the new file mode # %4: the new file mode
#: templates/commit.tpl #: templates/commit.tpl
msgid "changed from %1 to %2 mode: %3 -> %4" msgid "changed from %1 to %2 mode: %3 -> %4"
msgstr "" msgstr ""
   
# Used to indicate a file type changed, with only new file mode # Used to indicate a file type changed, with only new file mode
# (when old file type wasn't a normal file) # (when old file type wasn't a normal file)
# %1: the original file type # %1: the original file type
# %2: the new file type # %2: the new file type
# %3: the original file mode # %3: the original file mode
# %4: the new file mode # %4: the new file mode
#: templates/commit.tpl #: templates/commit.tpl
msgid "changed from %1 to %2 mode: %3" msgid "changed from %1 to %2 mode: %3"
msgstr "" msgstr ""
   
# Used to indicate a file type changed # Used to indicate a file type changed
# %1: the original file type # %1: the original file type
# %2: the new file type # %2: the new file type
#: templates/commit.tpl #: templates/commit.tpl
msgid "changed from %1 to %2" msgid "changed from %1 to %2"
msgstr "" msgstr ""
   
# Used to indicate a file mode changed # Used to indicate a file mode changed
# %1: the original file mode # %1: the original file mode
# %2: the new file mode # %2: the new file mode
#: templates/commit.tpl #: templates/commit.tpl
msgid "changed mode: %1 -> %2" msgid "changed mode: %1 -> %2"
msgstr "" msgstr ""
   
# Used to indicate a file mode changed # Used to indicate a file mode changed
# %1: the new file mode # %1: the new file mode
#: templates/commit.tpl #: templates/commit.tpl
msgid "changed mode: %1" msgid "changed mode: %1"
msgstr "" msgstr ""
   
# Used to indicate a file mode changed # Used to indicate a file mode changed
#: templates/commit.tpl #: templates/commit.tpl
msgid "changed" msgid "changed"
msgstr "" msgstr ""
   
# Used as link to diff this file version with the previous version # Used as link to diff this file version with the previous version
#: templates/commit.tpl #: templates/commit.tpl
#: templates/history.tpl #: templates/history.tpl
msgid "diff" msgid "diff"
msgstr "" msgstr ""
   
# Used to indicate a file was moved and the file mode changed # Used to indicate a file was moved and the file mode changed
# This string should be HTML safe # This string should be HTML safe
# %1: the old file # %1: the old file
# %2: the similarity as a percent number # %2: the similarity as a percent number
# %3: the new file mode # %3: the new file mode
#: templates/commit.tpl #: templates/commit.tpl
msgid "moved from %1 with %2%% similarity, mode: %3" msgid "moved from %1 with %2%% similarity, mode: %3"
msgstr "" msgstr ""
   
# Used to indicate a file was moved # Used to indicate a file was moved
# This string should be HTML safe # This string should be HTML safe
# %1: the old file # %1: the old file
# %2: the similarity as a percent number # %2: the similarity as a percent number
#: templates/commit.tpl #: templates/commit.tpl
msgid "moved from %1 with %2%% similarity" msgid "moved from %1 with %2%% similarity"
msgstr "" msgstr ""
   
# Used as title for and link to the compact log view with one line abbreviated commits # Used as title for and link to the compact log view with one line abbreviated commits
#: templates/headlist.tpl #: templates/headlist.tpl
#: templates/nav.tpl #: templates/nav.tpl
#: templates/taglist.tpl #: templates/taglist.tpl
#: templates/title.tpl #: templates/title.tpl
#: templates/projectlist.tpl #: templates/projectlist.tpl
#: include/controller/Controller_Log.class.php:60 #: include/controller/Controller_Log.class.php:60
msgid "shortlog" msgid "shortlog"
msgstr "" msgstr ""
   
# Used as title for and link to log view with full commit messages # Used as title for and link to log view with full commit messages
#: templates/headlist.tpl #: templates/headlist.tpl
#: templates/nav.tpl #: templates/nav.tpl
#: templates/taglist.tpl #: templates/taglist.tpl
#: templates/projectlist.tpl #: templates/projectlist.tpl
#: include/controller/Controller_Log.class.php:65 #: include/controller/Controller_Log.class.php:65
msgid "log" msgid "log"
msgstr "" msgstr ""
   
# Used as title for and link to project summary page # Used as title for and link to project summary page
#: templates/nav.tpl #: templates/nav.tpl
#: templates/projectlist.tpl #: templates/projectlist.tpl
#: include/controller/Controller_Project.class.php:42 #: include/controller/Controller_Project.class.php:42
msgid "summary" msgid "summary"
msgstr "" msgstr ""
   
# Link back to the list of projects # Link back to the list of projects
#: templates/login.tpl #: templates/login.tpl
#: templates/main.tpl #: templates/main.tpl
#: templates/projectbase.tpl #: templates/projectbase.tpl
#: include/controller/ControllerBase.class.php:509 #: include/controller/ControllerBase.class.php:511
#: include/controller/Controller_ProjectList.class.php:76 #: include/controller/Controller_ProjectList.class.php:76
msgid "projects" msgid "projects"
msgstr "" msgstr ""
   
# Used as a search type, to search the contents of files in the project # Used as a search type, to search the contents of files in the project
#: templates/projectbase.tpl #: templates/projectbase.tpl
#: include/smartyplugins/function.localfiletype.php:29 #: include/smartyplugins/function.localfiletype.php:29
msgid "file" msgid "file"
msgstr "" msgstr ""
   
# Used as title for search page, and also is the label for the search box # Used as title for search page, and also is the label for the search box
#: templates/projectbase.tpl #: templates/projectbase.tpl
#: include/controller/Controller_Search.class.php:108 #: include/controller/Controller_Search.class.php:108
msgid "search" msgid "search"
msgstr "" msgstr ""
   
# Used as a link to the HEAD of a project for a log or file # Used as a link to the HEAD of a project for a log or file
# (note: HEAD is standard git terminology) # (note: HEAD is standard git terminology)
#: templates/blame.tpl #: templates/blame.tpl
#: templates/log.tpl #: templates/log.tpl
#: templates/shortlog.tpl #: templates/shortlog.tpl
#: templates/blob.tpl #: templates/blob.tpl
msgid "HEAD" msgid "HEAD"
msgstr "" msgstr ""
   
# Used to indicate the last change in a project # Used to indicate the last change in a project
# %1: the timestamp of the latest change # %1: the timestamp of the latest change
#: templates/log.tpl #: templates/log.tpl
msgid "Last change %1" msgid "Last change %1"
msgstr "" msgstr ""
   
# Message displayed when there are no commits in the project to display # Message displayed when there are no commits in the project to display
#: templates/log.tpl #: templates/log.tpl
#: templates/projectlist.tpl #: templates/projectlist.tpl
#: templates/shortloglist.tpl #: templates/shortloglist.tpl
msgid "No commits" msgid "No commits"
msgstr "" msgstr ""
   
# Used as link to diff this file version with the current file # Used as link to diff this file version with the current file
#: templates/history.tpl #: templates/history.tpl
msgid "diff to current" msgid "diff to current"
msgstr "" msgstr ""
   
# Used as link to and title for page showing all tags in a project # Used as link to and title for page showing all tags in a project
#: templates/title.tpl #: templates/title.tpl
#: include/controller/Controller_Tags.class.php:53 #: include/controller/Controller_Tags.class.php:53
msgid "tags" msgid "tags"
msgstr "" msgstr ""
   
# Used as link to and title for page showing all heads in a project # Used as link to and title for page showing all heads in a project
#: templates/title.tpl #: templates/title.tpl
#: include/controller/Controller_Heads.class.php:53 #: include/controller/Controller_Heads.class.php:53
msgid "heads" msgid "heads"
msgstr "" msgstr ""
   
# Used when diffing a file, to indicate that it's been deleted # Used when diffing a file, to indicate that it's been deleted
#: templates/commitdiff.tpl #: templates/commitdiff.tpl
msgid "(deleted)" msgid "(deleted)"
msgstr "" msgstr ""
   
# Used when diffing a file, to indicate that it's a new file # Used when diffing a file, to indicate that it's a new file
#: templates/commitdiff.tpl #: templates/commitdiff.tpl
msgid "(new)" msgid "(new)"
msgstr "" msgstr ""
   
# Used to label the project description # Used to label the project description
#: templates/project.tpl #: templates/project.tpl
msgid "description" msgid "description"
msgstr "" msgstr ""
   
# Used to label the project owner # Used to label the project owner
#: templates/project.tpl #: templates/project.tpl
msgid "owner" msgid "owner"
msgstr "" msgstr ""
   
# Used to label the time the project was last changed # Used to label the time the project was last changed
# (the time of the most recent commit) # (the time of the most recent commit)
#: templates/project.tpl #: templates/project.tpl
msgid "last change" msgid "last change"
msgstr "" msgstr ""
   
# Used to label the url that users can use to clone the project # Used to label the url that users can use to clone the project
#: templates/project.tpl #: templates/project.tpl
msgid "clone url" msgid "clone url"
msgstr "" msgstr ""
   
# Used to label the url that users can use to push commits to the project # Used to label the url that users can use to push commits to the project
#: templates/project.tpl #: templates/project.tpl
msgid "push url" msgid "push url"
msgstr "" msgstr ""
   
# Used as the header for the project name column # Used as the header for the project name column
#: templates/projectlist.tpl #: templates/projectlist.tpl
msgid "Project" msgid "Project"
msgstr "" msgstr ""
   
# Used as the header for the project description column # Used as the header for the project description column
#: templates/projectlist.tpl #: templates/projectlist.tpl
msgid "Description" msgid "Description"
msgstr "" msgstr ""
   
# Used as the header for the column showing the person that owns the project # Used as the header for the column showing the person that owns the project
#: templates/projectlist.tpl #: templates/projectlist.tpl
msgid "Owner" msgid "Owner"
msgstr "" msgstr ""
   
# Used as the header for the last change column # Used as the header for the last change column
# (how long ago was the last commit) # (how long ago was the last commit)
#: templates/projectlist.tpl #: templates/projectlist.tpl
msgid "Last Change" msgid "Last Change"
msgstr "" msgstr ""
   
# Used as the header for the actions column, which is a list of links users can use to jump to various parts of this project # Used as the header for the actions column, which is a list of links users can use to jump to various parts of this project
#: templates/projectlist.tpl #: templates/projectlist.tpl
msgid "Actions" msgid "Actions"
msgstr "" msgstr ""
   
# Message shown when there were no projects found to display # Message shown when there were no projects found to display
#: templates/projectlist.tpl #: templates/projectlist.tpl
msgid "No projects found" msgid "No projects found"
msgstr "" msgstr ""
   
# Used as link to and title for page displaying blame info (who last touched what line) in a file # Used as link to and title for page displaying blame info (who last touched what line) in a file
#: templates/blob.tpl #: templates/blob.tpl
#: include/controller/Controller_Blame.class.php:59 #: include/controller/Controller_Blame.class.php:59
msgid "blame" msgid "blame"
msgstr "" msgstr ""
   
# Error message when user tries to do an action that requires a project but a project isn't specified # Error message when user tries to do an action that requires a project but a project isn't specified
#: include/controller/Controller_Message.class.php:144 #: include/controller/Controller_Message.class.php:144
msgid "Project is required" msgid "Project is required"
msgstr "" msgstr ""
   
# Used as the title of the rss controller # Used as the title of the rss controller
# rss is a standard web feed format # rss is a standard web feed format
#: include/controller/Controller_Feed.class.php:77 #: include/controller/Controller_Feed.class.php:77
msgid "rss" msgid "rss"
msgstr "" msgstr ""
   
# Used as link to and title for a diff of a single file # Used as link to and title for a diff of a single file
#: include/controller/Controller_Blobdiff.class.php:45 #: include/controller/Controller_Blobdiff.class.php:45
msgid "blobdiff" msgid "blobdiff"
msgstr "" msgstr ""
   
# Error message when user tries to access a project that doesn't exist # Error message when user tries to access a project that doesn't exist
# %1$s: the project the user tried to access # %1$s: the project the user tried to access
#: include/controller/Controller_Message.class.php:138 #: include/controller/Controller_Message.class.php:138
#, php-format #, php-format
msgid "Invalid project %1$s" msgid "Invalid project %1$s"
msgstr "" msgstr ""
   
# Used as the title for the opml controller # Used as the title for the opml controller
# OPML is a standard XML outline format # OPML is a standard XML outline format
#: include/controller/Controller_ProjectList.class.php:66 #: include/controller/Controller_ProjectList.class.php:66
msgid "opml" msgid "opml"
msgstr "" msgstr ""
   
# Used as the title of the project index controller # Used as the title of the project index controller
#: include/controller/Controller_ProjectList.class.php:71 #: include/controller/Controller_ProjectList.class.php:71
msgid "project index" msgid "project index"
msgstr "" msgstr ""
   
# Error message when a user tries to search but searching has been disabled in the config # Error message when a user tries to search but searching has been disabled in the config
#: include/controller/Controller_Message.class.php:155 #: include/controller/Controller_Message.class.php:155
msgid "Search has been disabled" msgid "Search has been disabled"
msgstr "" msgstr ""
   
# Error message when a user tries to do a file search but searching files has been disabled in the config # Error message when a user tries to do a file search but searching files has been disabled in the config
#: include/controller/Controller_Message.class.php:151 #: include/controller/Controller_Message.class.php:151
msgid "File search has been disabled" msgid "File search has been disabled"
msgstr "" msgstr ""
   
# Error message when a user's search query is too short # Error message when a user's search query is too short
# %1$d: the minimum number of characters # %1$d: the minimum number of characters
#: include/controller/Controller_Message.class.php:168 #: include/controller/Controller_Message.class.php:168
#, php-format #, php-format
msgid "You must enter search text of at least %1$d character" msgid "You must enter search text of at least %1$d character"
msgid_plural "You must enter search text of at least %1$d characters" msgid_plural "You must enter search text of at least %1$d characters"
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
   
# Error message when the user enters an unsupported search type # Error message when the user enters an unsupported search type
#: include/controller/Controller_Message.class.php:162 #: include/controller/Controller_Message.class.php:162
msgid "Invalid search type" msgid "Invalid search type"
msgstr "" msgstr ""
   
# Error message when a user's search didn't produce any results # Error message when a user's search didn't produce any results
# %1$s: the user's search string # %1$s: the user's search string
#: templates/search.tpl #: templates/search.tpl
#: templates/searchfiles.tpl #: templates/searchfiles.tpl
#, php-format #, php-format
msgid "No matches for \"%1\"" msgid "No matches for \"%1\""
msgstr "" msgstr ""
   
# A type of filesystem object stored in a project # A type of filesystem object stored in a project
#: include/smartyplugins/function.localfiletype.php:41 #: include/smartyplugins/function.localfiletype.php:41
msgid "directory" msgid "directory"
msgstr "" msgstr ""
   
# A type of filesystem object stored in a project # A type of filesystem object stored in a project
#: include/smartyplugins/function.localfiletype.php:35 #: include/smartyplugins/function.localfiletype.php:35
msgid "symlink" msgid "symlink"
msgstr "" msgstr ""
   
# Used when an object is stored in a project but git doesn't know what type it is # Used when an object is stored in a project but git doesn't know what type it is
#: include/smartyplugins/function.localfiletype.php:47 #: include/smartyplugins/function.localfiletype.php:47
msgid "unknown" msgid "unknown"
msgstr "" msgstr ""
   
# Error message when user specifies a path for a project root or project, but the path given isn't a directory # Error message when user specifies a path for a project root or project, but the path given isn't a directory
# %1$s: the path the user specified # %1$s: the path the user specified
#: include/controller/Controller_Message.class.php:198 #: include/controller/Controller_Message.class.php:198
#, php-format #, php-format
msgid "%1$s is not a directory" msgid "%1$s is not a directory"
msgstr "" msgstr ""
   
# Error message when a path specified in the config is not a git repository # Error message when a path specified in the config is not a git repository
# %1$s: the specified path # %1$s: the specified path
#: include/controller/Controller_Message.class.php:210 #: include/controller/Controller_Message.class.php:210
#, php-format #, php-format
msgid "%1$s is not a git repository" msgid "%1$s is not a git repository"
msgstr "" msgstr ""
   
# Error message when a path specified is using '..' to break out of the project root (a hack attempt) # Error message when a path specified is using '..' to break out of the project root (a hack attempt)
# %1$s: The specified path # %1$s: The specified path
#: include/controller/Controller_Message.class.php:222 #: include/controller/Controller_Message.class.php:222
#, php-format #, php-format
msgid "%1$s is attempting directory traversal" msgid "%1$s is attempting directory traversal"
msgstr "" msgstr ""
   
# Error message when a path specified is outside of the project root # Error message when a path specified is outside of the project root
# %1$s: The specified path # %1$s: The specified path
#: include/controller/Controller_Message.class.php:228 #: include/controller/Controller_Message.class.php:228
#, php-format #, php-format
msgid "%1$s is outside of the projectroot" msgid "%1$s is outside of the projectroot"
msgstr "" msgstr ""
   
# Error message when user tries to specify a file with a list of the projects, but it isn't a file # Error message when user tries to specify a file with a list of the projects, but it isn't a file
# %1$s: the path the user specified # %1$s: the path the user specified
#: include/controller/Controller_Message.class.php:204 #: include/controller/Controller_Message.class.php:204
#, php-format #, php-format
msgid "%1$s is not a file" msgid "%1$s is not a file"
msgstr "" msgstr ""
   
# Error message when user tries to specify a file with a list of the projects, but the system can't read the file # Error message when user tries to specify a file with a list of the projects, but the system can't read the file
# %1$s: the file the user specified # %1$s: the file the user specified
#: include/controller/Controller_Message.class.php:216 #: include/controller/Controller_Message.class.php:216
#, php-format #, php-format
msgid "Failed to open project list file %1$s" msgid "Failed to open project list file %1$s"
msgstr "" msgstr ""
   
# Error message when a hash specified in a URL isn't a valid git hash # Error message when a hash specified in a URL isn't a valid git hash
# %1$s: the hash entered # %1$s: the hash entered
#: include/controller/Controller_Message.class.php:174 #: include/controller/Controller_Message.class.php:174
#, php-format #, php-format
msgid "Invalid hash %1$s" msgid "Invalid hash %1$s"
msgstr "" msgstr ""
   
# Used to represent an age in years # Used to represent an age in years
# %1$d: the number of years # %1$d: the number of years
#: include/smartyplugins/function.agestring.php:31 #: include/smartyplugins/function.agestring.php:31
#, php-format #, php-format
msgid "%1$d year ago" msgid "%1$d year ago"
msgid_plural "%1$d years ago" msgid_plural "%1$d years ago"
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
   
# Used to represent an age in months # Used to represent an age in months
# %1$d: the number of months # %1$d: the number of months
#: include/smartyplugins/function.agestring.php:39 #: include/smartyplugins/function.agestring.php:39
#, php-format #, php-format
msgid "%1$d month ago" msgid "%1$d month ago"
msgid_plural "%1$d months ago" msgid_plural "%1$d months ago"
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
   
# Used to represent an age in weeks # Used to represent an age in weeks
# %1$d: the number of weeks # %1$d: the number of weeks
#: include/smartyplugins/function.agestring.php:47 #: include/smartyplugins/function.agestring.php:47
#, php-format #, php-format
msgid "%1$d week ago" msgid "%1$d week ago"
msgid_plural "%1$d weeks ago" msgid_plural "%1$d weeks ago"
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
   
# Used to represent an age in days # Used to represent an age in days
# %1$d: the number of days # %1$d: the number of days
#: include/smartyplugins/function.agestring.php:55 #: include/smartyplugins/function.agestring.php:55
#, php-format #, php-format
msgid "%1$d day ago" msgid "%1$d day ago"
msgid_plural "%1$d days ago" msgid_plural "%1$d days ago"
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
   
# Used to represent an age in hours # Used to represent an age in hours
# %1$d: the number of hours # %1$d: the number of hours
#: include/smartyplugins/function.agestring.php:63 #: include/smartyplugins/function.agestring.php:63
#, php-format #, php-format
msgid "%1$d hour ago" msgid "%1$d hour ago"
msgid_plural "%1$d hours ago" msgid_plural "%1$d hours ago"
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
   
# Used to represent an age in minutes # Used to represent an age in minutes
# %1$d: the number of minutes # %1$d: the number of minutes
#: include/smartyplugins/function.agestring.php:71 #: include/smartyplugins/function.agestring.php:71
#, php-format #, php-format
msgid "%1$d min ago" msgid "%1$d min ago"
msgid_plural "%1$d min ago" msgid_plural "%1$d min ago"
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
   
# Used to represent an age in seconds # Used to represent an age in seconds
# %1$d: the number of seconds # %1$d: the number of seconds
#: include/smartyplugins/function.agestring.php:79 #: include/smartyplugins/function.agestring.php:79
#, php-format #, php-format
msgid "%1$d sec ago" msgid "%1$d sec ago"
msgid_plural "%1$d sec ago" msgid_plural "%1$d sec ago"
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
   
# Used to represent a modification time of right now # Used to represent a modification time of right now
#: include/smartyplugins/function.agestring.php:86 #: include/smartyplugins/function.agestring.php:86
msgid "right now" msgid "right now"
msgstr "" msgstr ""
   
# Error message when user hasn't defined a project root in the config # Error message when user hasn't defined a project root in the config
# "projectroot" refers to a root directory where the user's git projects are stored # "projectroot" refers to a root directory where the user's git projects are stored
#: include/controller/Controller_Message.class.php:186 #: include/controller/Controller_Message.class.php:186
msgid "A projectroot must be set in the config" msgid "A projectroot must be set in the config"
msgstr "" msgstr ""
   
# Caption for the rss button for a project # Caption for the rss button for a project
# rss is a standard web feed format # rss is a standard web feed format
#: templates/projectbase.tpl #: templates/projectbase.tpl
msgid "RSS" msgid "RSS"
msgstr "" msgstr ""
   
# Caption for the OPML button on the project list # Caption for the OPML button on the project list
# OPML is a standard XML outline format # OPML is a standard XML outline format
#: templates/projectlist.tpl #: templates/projectlist.tpl
msgid "OPML" msgid "OPML"
msgstr "" msgstr ""
   
# Caption for the button to get a plaintext list of projects # Caption for the button to get a plaintext list of projects
#: templates/projectlist.tpl #: templates/projectlist.tpl
msgid "TXT" msgid "TXT"
msgstr "" msgstr ""
   
# Label for the selected commit, when selecting commits to diff # Label for the selected commit, when selecting commits to diff
#: templates/log.tpl #: templates/log.tpl
#: templates/shortlog.tpl #: templates/shortlog.tpl
msgid "selected" msgid "selected"
msgstr "" msgstr ""
   
# Link to deselect the currently selected diff # Link to deselect the currently selected diff
#: templates/log.tpl #: templates/log.tpl
#: templates/shortlog.tpl #: templates/shortlog.tpl
#: templates/shortloglist.tpl #: templates/shortloglist.tpl
msgid "deselect" msgid "deselect"
msgstr "" msgstr ""
   
# Link beside commits - diffs this commit against the currently selected commit # Link beside commits - diffs this commit against the currently selected commit
#: templates/log.tpl #: templates/log.tpl
#: templates/shortloglist.tpl #: templates/shortloglist.tpl
msgid "diff with selected" msgid "diff with selected"
msgstr "" msgstr ""
   
# Link beside commits - selects this commit to be used in a diff # Link beside commits - selects this commit to be used in a diff
#: templates/log.tpl #: templates/log.tpl
#: templates/shortloglist.tpl #: templates/shortloglist.tpl
msgid "select for diff" msgid "select for diff"
msgstr "" msgstr ""
   
# Used as an alternate text on javascript "loading" images # Used as an alternate text on javascript "loading" images
#: templates/main.tpl #: templates/main.tpl
#: templates/projectlist.tpl #: templates/projectlist.tpl
msgid "Loading…" msgid "Loading…"
msgstr "" msgstr ""
   
# Used as a loading message while blame data is being pulled from the server # Used as a loading message while blame data is being pulled from the server
#: templates/main.tpl #: templates/main.tpl
msgid "Loading blame data…" msgid "Loading blame data…"
msgstr "" msgstr ""
   
# Used as a label by the language selector drop-down box # Used as a label by the language selector drop-down box
#: templates/main.tpl #: templates/main.tpl
msgid "language:" msgid "language:"
msgstr "" msgstr ""
   
# Used as a button by the language selector drop-down box to set the # Used as a button by the language selector drop-down box to set the
# language to the user's choice # language to the user's choice
#: templates/main.tpl #: templates/main.tpl
msgid "set" msgid "set"
msgstr "" msgstr ""
   
# Caption for the Atom button for a project # Caption for the Atom button for a project
# Atom is a standard web feed format # Atom is a standard web feed format
#: templates/projectbase.tpl #: templates/projectbase.tpl
msgid "Atom" msgid "Atom"
msgstr "" msgstr ""
   
# Used as the title of the Atom controller # Used as the title of the Atom controller
# Atom is a standard web feed format # Atom is a standard web feed format
#: include/controller/Controller_Feed.class.php:82 #: include/controller/Controller_Feed.class.php:82
msgid "atom" msgid "atom"
msgstr "" msgstr ""
   
# Used as an error message when memcache is turned # Used as an error message when memcache is turned
# on without the appropriate PHP extension installed # on without the appropriate PHP extension installed
#: include/controller/Controller_Message.class.php:192 #: include/controller/Controller_Message.class.php:192
msgid "" msgid ""
"The Memcached or Memcache PHP extension is required for Memcache support" "The Memcached or Memcache PHP extension is required for Memcache support"
msgstr "" msgstr ""
   
# Message when searching the project list, and nothing is found # Message when searching the project list, and nothing is found
# %1: the search string entered # %1: the search string entered
#: templates/main.tpl #: templates/main.tpl
#: templates/projectlist.tpl #: templates/projectlist.tpl
msgid "No matches found for \"%1\"" msgid "No matches found for \"%1\""
msgstr "" msgstr ""
   
# Label for the field to search the project list # Label for the field to search the project list
#: templates/projectlist.tpl #: templates/projectlist.tpl
msgid "Search projects" msgid "Search projects"
msgstr "" msgstr ""
   
# Error message displayed when the git executable isn't found or doesn't work # Error message displayed when the git executable isn't found or doesn't work
# %1$s: the git executable the system is trying to run # %1$s: the git executable the system is trying to run
# %2$s: the config value the user needs to set to specify the correct path # %2$s: the config value the user needs to set to specify the correct path
#: include/controller/Controller_Message.class.php:180 #: include/controller/Controller_Message.class.php:180
#, php-format #, php-format
msgid "" msgid ""
"Could not run the git executable \"%1$s\". You may need to set the \"%2$s\" " "Could not run the git executable \"%1$s\". You may need to set the \"%2$s\" "
"config value." "config value."
msgstr "" msgstr ""
   
# Link displayed in commitdiff view, when the user has filtered # Link displayed in commitdiff view, when the user has filtered
# the display to a single file using the list of changed files. # the display to a single file using the list of changed files.
# This will go back to showing all files in the commitdiff # This will go back to showing all files in the commitdiff
#: templates/commitdiff.tpl #: templates/commitdiff.tpl
msgid "(show all)" msgid "(show all)"
msgstr "" msgstr ""
   
# Message displayed when diffing two binary files. # Message displayed when diffing two binary files.
# %1$s: the filename of the first file # %1$s: the filename of the first file
# %2$s: the filename of the second file # %2$s: the filename of the second file
#: templates/blobdiff.tpl #: templates/blobdiff.tpl
#: templates/blobdiffplain.tpl #: templates/blobdiffplain.tpl
#: templates/commitdiff.tpl #: templates/commitdiff.tpl
#, php-format #, php-format
msgid "Binary files %1 and %2 differ" msgid "Binary files %1 and %2 differ"
msgstr "" msgstr ""
   
# Used to label the url of the website of the project # Used to label the url of the website of the project
#: templates/project.tpl #: templates/project.tpl
msgid "website" msgid "website"
msgstr "" msgstr ""
   
# This is the name of YOUR language, in your language. # This is the name of YOUR language, in your language.
# Don't just translate the word "English". # Don't just translate the word "English".
# This will be displayed as a choice in the language picker for your language. # This will be displayed as a choice in the language picker for your language.
# You want this in your native language so speakers of your language # You want this in your native language so speakers of your language
# will recognize it. For example, a french translation would translate # will recognize it. For example, a french translation would translate
# this as "Français". # this as "Français".
#: include/Resource.class.php:130 #: include/Resource.class.php:130
msgid "English" msgid "English"
msgstr "" msgstr ""
   
# Message when the config file failed to load # Message when the config file failed to load
# %1$s: the config file that we tried to load # %1$s: the config file that we tried to load
#: include/controller/Controller_Message.class.php:234 #: include/controller/Controller_Message.class.php:234
#, php-format #, php-format
msgid "Could not load config file %1$s" msgid "Could not load config file %1$s"
msgstr "" msgstr ""
   
# Used as a link to and title of the graph page # Used as a link to and title of the graph page
#: include/controller/Controller_Graph.class.php:56 #: include/controller/Controller_Graph.class.php:56
msgid "graph" msgid "graph"
msgstr "" msgstr ""
   
# Name of the commit activity graph # Name of the commit activity graph
#: templates/graph.tpl #: templates/graph.tpl
msgid "commit activity" msgid "commit activity"
msgstr "" msgstr ""
   
# Name of the language distribution graph # Name of the language distribution graph
#: templates/graph.tpl #: templates/graph.tpl
msgid "language distribution" msgid "language distribution"
msgstr "" msgstr ""
   
# Message displayed when an abbreviated hash is given # Message displayed when an abbreviated hash is given
# but it is ambiguous because there are multiple hashes # but it is ambiguous because there are multiple hashes
# in the system with this abbreviation # in the system with this abbreviation
#: include/controller/Controller_Message.class.php:240 #: include/controller/Controller_Message.class.php:240
#, php-format #, php-format
msgid "Ambiguous abbreviated hash %1$s" msgid "Ambiguous abbreviated hash %1$s"
msgstr "" msgstr ""
   
# Message displayed when a directory that doesn't exist # Message displayed when a directory that doesn't exist
# is specified # is specified
#: include/controller/Controller_Message.class.php:247 #: include/controller/Controller_Message.class.php:247
#, php-format #, php-format
msgid "Directory %1$s not found" msgid "Directory %1$s not found"
msgstr "" msgstr ""
   
# Message displayed when a file that doesn't exist is # Message displayed when a file that doesn't exist is
# specified # specified
#: include/controller/Controller_Message.class.php:254 #: include/controller/Controller_Message.class.php:254
#, php-format #, php-format
msgid "File %1$s not found" msgid "File %1$s not found"
msgstr "" msgstr ""
   
# Label for the username field on the login form # Label for the username field on the login form
#: templates/login.tpl #: templates/login.tpl
  #: templates/main.tpl
msgid "username:" msgid "username:"
msgstr "" msgstr ""
   
# Label for the password field on the login form # Label for the password field on the login form
#: templates/login.tpl #: templates/login.tpl
  #: templates/main.tpl
msgid "password:" msgid "password:"
msgstr "" msgstr ""
   
# Label for the link/button for a user to login to an account # Label for the link/button for a user to login to an account
#: templates/login.tpl #: templates/login.tpl
#: templates/main.tpl #: templates/main.tpl
#: include/controller/Controller_Login.class.php:67 #: include/controller/Controller_Login.class.php:67
msgid "login" msgid "login"
msgstr "" msgstr ""
   
# Label for the link for a user to log out of an account # Label for the link for a user to log out of an account
# %1: the account username # %1: the account username
#: templates/main.tpl #: templates/main.tpl
msgid "logout %1" msgid "logout %1"
msgstr "" msgstr ""
   
  # Error message that appears when there is a technical error
  # during login
  #: templates/main.tpl
  msgid "An error occurred while logging in"
  msgstr ""
   
  # Title of the login modal message box
  #: templates/main.tpl
  msgid "Login"
  msgstr ""
   
  # Error message when the username or the password is
  # invalid (login failure)
  #: include/controller/Controller_Login.class.php:122
  #: include/controller/Controller_Login.class.php:148
  msgid "Invalid username or password"
  msgstr ""
   
  # Error message when a username is not entered during login
  #: templates/main.tpl
  msgid "Username is required"
  msgstr ""
   
  # Error message when a password is not entered during login
  #: templates/main.tpl
  msgid "Password is required"
  msgstr ""
   
{* {*
* Main * Main
* *
* Main page template * Main page template
* *
* @author Christopher Han <xiphux@gmail.com> * @author Christopher Han <xiphux@gmail.com>
* @copyright Copyright (c) 2011 Christopher Han * @copyright Copyright (c) 2011 Christopher Han
* @packge GitPHP * @packge GitPHP
* @subpackage Template * @subpackage Template
*} *}
<!DOCTYPE html> <!DOCTYPE html>
<html lang="{$currentprimarylocale}"> <html lang="{$currentprimarylocale}">
<!-- gitphp web interface {$version}, (C) 2006-2011 Christopher Han <xiphux@gmail.com> --> <!-- gitphp web interface {$version}, (C) 2006-2011 Christopher Han <xiphux@gmail.com> -->
<head> <head>
<title> <title>
{block name=title} {block name=title}
{$pagetitle} {$pagetitle}
{/block} {/block}
</title> </title>
{block name=feeds} {block name=feeds}
{/block} {/block}
{block name=links} {block name=links}
{/block} {/block}
{if file_exists('css/gitphp.min.css')} {if file_exists('css/gitphp.min.css')}
<link rel="stylesheet" href="{$baseurl}/css/gitphp.min.css" type="text/css" /> <link rel="stylesheet" href="{$baseurl}/css/gitphp.min.css" type="text/css" />
{else} {else}
<link rel="stylesheet" href="{$baseurl}/css/gitphp.css" type="text/css" /> <link rel="stylesheet" href="{$baseurl}/css/gitphp.css" type="text/css" />
{/if} {/if}
{if file_exists("css/$stylesheet.min.css")} {if file_exists("css/$stylesheet.min.css")}
<link rel="stylesheet" href="{$baseurl}/css/{$stylesheet}.min.css" type="text/css" /> <link rel="stylesheet" href="{$baseurl}/css/{$stylesheet}.min.css" type="text/css" />
{else} {else}
<link rel="stylesheet" href="{$baseurl}/css/{$stylesheet}.css" type="text/css" /> <link rel="stylesheet" href="{$baseurl}/css/{$stylesheet}.css" type="text/css" />
{/if} {/if}
<link rel="stylesheet" href="{$baseurl}/css/ext/jquery.qtip.min.css" type="text/css" /> <link rel="stylesheet" href="{$baseurl}/css/ext/jquery.qtip.min.css" type="text/css" />
{block name=css} {block name=css}
{/block} {/block}
{if $javascript} {if $javascript}
<script type="text/javascript"> <script type="text/javascript">
var require = { var require = {
baseUrl: '{$baseurl}/js', baseUrl: '{$baseurl}/js',
paths: { paths: {
jquery: [ jquery: [
{if $googlejs} {if $googlejs}
'https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min', 'https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min',
{/if} {/if}
'ext/jquery-1.8.1.min' 'ext/jquery-1.8.1.min'
], ],
d3: 'ext/d3.v2.min', d3: 'ext/d3.v2.min',
qtip: 'ext/jquery.qtip.min', qtip: 'ext/jquery.qtip.min',
modernizr: 'ext/modernizr.custom' modernizr: 'ext/modernizr.custom'
}, },
config: { config: {
'modules/snapshotformats': { 'modules/snapshotformats': {
formats: { formats: {
{foreach from=$snapshotformats key=format item=extension name=formats} {foreach from=$snapshotformats key=format item=extension name=formats}
"{$format}": "{$extension}"{if !$smarty.foreach.formats.last},{/if} "{$format}": "{$extension}"{if !$smarty.foreach.formats.last},{/if}
{/foreach} {/foreach}
} }
}, },
{if $project} {if $project}
'modules/getproject': { 'modules/getproject': {
project: '{$project->GetProject()}' project: '{$project->GetProject()}'
}, },
{/if} {/if}
'modules/geturl': { 'modules/geturl': {
baseurl: '{$baseurl}/' baseurl: '{$baseurl}/'
}, },
'modules/resources': { 'modules/resources': {
resources: { resources: {
Loading: "{t escape='js'}Loading…{/t}", Loading: "{t escape='js'}Loading…{/t}",
LoadingBlameData: "{t escape='js'}Loading blame data…{/t}", LoadingBlameData: "{t escape='js'}Loading blame data…{/t}",
Snapshot: "{t escape='js'}snapshot{/t}", Snapshot: "{t escape='js'}snapshot{/t}",
NoMatchesFound: '{t escape=no}No matches found for "%1"{/t}' NoMatchesFound: '{t escape=no}No matches found for "%1"{/t}',
  UsernameLabel: "{t escape='js'}username:{/t}",
  PasswordLabel: "{t escape='js'}password:{/t}",
  Login: "{t escape='js'}login{/t}",
  AnErrorOccurredWhileLoggingIn: "{t escape='js'}An error occurred while logging in{/t}",
  LoginTitle: "{t escape='js'}Login{/t}",
  UsernameIsRequired: "{t escape='js'}Username is required{/t}",
  PasswordIsRequired: "{t escape='js'}Password is required{/t}"
} }
} }
} }
}; };
{block name=javascript} {block name=javascript}
{if file_exists('js/common.min.js')} {if file_exists('js/common.min.js')}
require.paths.common = 'common.min'; require.paths.common = 'common.min';
{/if} {/if}
require.deps = ['common']; require.deps = ['common'];
{/block} {/block}
</script> </script>
<script type="text/javascript" src="{$baseurl}/js/ext/require.js"></script> <script type="text/javascript" src="{$baseurl}/js/ext/require.js"></script>
{/if} {/if}
</head> </head>
<body> <body>
<div class="page_header"> <div class="page_header">
{if $loginenabled} {if $loginenabled}
<div class="login"> <div class="login">
{if $loggedinuser} {if $loggedinuser}
<a href="{geturl action=logout}" />{t 1=$loggedinuser}logout %1{/t}</a> <a href="{geturl action=logout}" />{t 1=$loggedinuser}logout %1{/t}</a>
{else if $action == 'login'} {else if $action == 'login'}
{t}login{/t} {t}login{/t}
{else} {else}
<a href="{geturl action=login}" class="loginLink" />{t}login{/t}</a> <a href="{geturl action=login}" class="loginLink" />{t}login{/t}</a>
{/if} {/if}
</div> </div>
{/if} {/if}
{if $supportedlocales} {if $supportedlocales}
<div class="lang_select"> <div class="lang_select">
<form action="{$requesturl}" method="get" id="frmLangSelect"> <form action="{$requesturl}" method="get" id="frmLangSelect">
<div> <div>
{foreach from=$requestvars key=var item=val} {foreach from=$requestvars key=var item=val}
{if $var != "l"} {if $var != "l"}
<input type="hidden" name="{$var}" value="{$val|escape}" /> <input type="hidden" name="{$var}" value="{$val|escape}" />
{/if} {/if}
{/foreach} {/foreach}
<label for="selLang">{t}language:{/t}</label> <label for="selLang">{t}language:{/t}</label>
<select name="l" id="selLang"> <select name="l" id="selLang">
{foreach from=$supportedlocales key=locale item=language} {foreach from=$supportedlocales key=locale item=language}
<option {if $locale == $currentlocale}selected="selected"{/if} value="{$locale}">{if $language}{$language} ({$locale}){else}{$locale}{/if}</option> <option {if $locale == $currentlocale}selected="selected"{/if} value="{$locale}">{if $language}{$language} ({$locale}){else}{$locale}{/if}</option>
{/foreach} {/foreach}
</select> </select>
<input type="submit" value="{t}set{/t}" id="btnLangSet" /> <input type="submit" value="{t}set{/t}" id="btnLangSet" />
</div> </div>
</form> </form>
</div> </div>
{/if} {/if}
{block name=header} {block name=header}
<a href="{geturl}">{if $homelink}{$homelink}{else}{t}projects{/t}{/if}</a> / <a href="{geturl}">{if $homelink}{$homelink}{else}{t}projects{/t}{/if}</a> /
{/block} {/block}
</div> </div>
{block name=main} {block name=main}
   
{/block} {/block}
<div class="page_footer"> <div class="page_footer">
{block name=footer} {block name=footer}
{/block} {/block}
</div> </div>
<div class="attr_footer"> <div class="attr_footer">
<a href="http://www.gitphp.org/" target="_blank">GitPHP by Chris Han</a> <a href="http://www.gitphp.org/" target="_blank">GitPHP by Chris Han</a>
</div> </div>
</body> </body>
</html> </html>
   
comments