1
0
mirror of https://github.com/meineerde/redmine.git synced 2026-03-11 03:33:07 +00:00

r18596@gaspard (orig r1860): nbc | 2008-09-14 21:03:46 +0200

bugfix
 r18597@gaspard (orig r1861):  winterheart | 2008-09-15 17:14:34 +0200
 #1902, translation for zh-tw
 r18598@gaspard (orig r1862):  winterheart | 2008-09-15 17:16:53 +0200
 #1907, translation for zh
 r18599@gaspard (orig r1863):  winterheart | 2008-09-15 17:19:51 +0200
 fixed #1905, patch for Hungarian language
 r18600@gaspard (orig r1864):  winterheart | 2008-09-15 17:22:53 +0200
 Minor typo, fixed #1897, thank Denis Tomashenko for reporting.
 r18601@gaspard (orig r1865):  winterheart | 2008-09-15 18:07:30 +0200
 Catalan translation (#1822), thanks to Joan Duran for contribuition. Some strings has wrong quoting, I fixed that.
 r18602@gaspard (orig r1866):  nbc | 2008-09-15 21:37:43 +0200
 * reposman can create git repository with "--scm git" option
 * light refactoring
 r18603@gaspard (orig r1867):  jplang | 2008-09-16 23:54:53 +0200
 Use RDoc.usage
 r18604@gaspard (orig r1868):  jplang | 2008-09-16 23:56:02 +0200
 mailhandler: fixes exit status and adds an explicit message if response code is 403.
 r18605@gaspard (orig r1869):  winterheart | 2008-09-17 17:31:35 +0200
 Patch #1909, updates for ru.yml
 r18606@gaspard (orig r1870):  jplang | 2008-09-17 18:39:23 +0200
 Render the commit changes list as a tree (#1896).
 r18607@gaspard (orig r1871):  jplang | 2008-09-17 18:48:04 +0200
 Fixed: http links containing parentheses fail to reder correctly (#1591). Patch by Paul Rivier.
 r18608@gaspard (orig r1872):  jplang | 2008-09-17 19:18:05 +0200
 Removes unused image references in stylesheets (#1914).
 r18609@gaspard (orig r1873):  jplang | 2008-09-17 19:23:08 +0200
 Fixed custom query sidebar links broken by r1797 (#1899).


git-svn-id: http://redmine.rubyforge.org/svn/branches/nbc@1874 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Nicolas Chuche 2008-09-17 18:42:46 +00:00
parent e5aed8b912
commit 54433282d3
52 changed files with 1155 additions and 176 deletions

View File

@ -118,11 +118,6 @@ class RepositoriesController < ApplicationController
def revision
@changeset = @repository.changesets.find_by_revision(@rev)
raise ChangesetNotFound unless @changeset
@changes_count = @changeset.changes.size
@changes_pages = Paginator.new self, @changes_count, 150, params['page']
@changes = @changeset.changes.find(:all,
:limit => @changes_pages.items_per_page,
:offset => @changes_pages.current.offset)
respond_to do |format|
format.html

View File

@ -32,6 +32,74 @@ module RepositoriesHelper
end
end
def render_changeset_changes
changes = @changeset.changes.find(:all, :limit => 1000, :order => 'path').collect do |change|
case change.action
when 'A'
# Detects moved/copied files
if !change.from_path.blank?
change.action = @changeset.changes.detect {|c| c.action == 'D' && c.path == change.from_path} ? 'R' : 'C'
end
change
when 'D'
@changeset.changes.detect {|c| c.from_path == change.path} ? nil : change
else
change
end
end.compact
tree = { }
changes.each do |change|
p = tree
dirs = change.path.to_s.split('/').select {|d| !d.blank?}
dirs.each do |dir|
p[:s] ||= {}
p = p[:s]
p[dir] ||= {}
p = p[dir]
end
p[:c] = change
end
render_changes_tree(tree[:s])
end
def render_changes_tree(tree)
return '' if tree.nil?
output = ''
output << '<ul>'
tree.keys.sort.each do |file|
s = !tree[file][:s].nil?
c = tree[file][:c]
style = 'change'
style << ' folder' if s
style << " change-#{c.action}" if c
text = h(file)
unless c.nil?
path_param = to_path_param(@repository.relative_path(c.path))
text = link_to(text, :controller => 'repositories',
:action => 'entry',
:id => @project,
:path => path_param,
:rev => @changeset.revision) unless s || c.action == 'D'
text << " - #{c.revision}" unless c.revision.blank?
text << ' (' + link_to('diff', :controller => 'repositories',
:action => 'diff',
:id => @project,
:path => path_param,
:rev => @changeset.revision) + ') ' if c.action == 'M'
text << ' ' + content_tag('span', c.from_path, :class => 'copied-from') unless c.from_path.blank?
end
output << "<li class='#{style}'>#{text}</li>"
output << render_changes_tree(tree[file][:s]) if s
end
output << '</ul>'
output
end
def to_utf8(str)
return str if /\A[\r\n\t\x20-\x7e]*\Z/n.match(str) # for us-ascii
@encodings ||= Setting.repositories_encodings.split(',').collect(&:strip)

View File

@ -19,6 +19,6 @@
<h3><%= l(:label_query_plural) %></h3>
<% sidebar_queries.each do |query| -%>
<%= link_to query.name, :query_id => query %><br />
<%= link_to query.name, :controller => 'issues', :action => 'index', :project_id => @project, :query_id => query %><br />
<% end -%>
<% end -%>

View File

@ -36,33 +36,19 @@
<% end %>
<h3><%= l(:label_attachment_plural) %></h3>
<div style="float:right;">
<div class="square action_A"></div> <div style="float:left;"><%= l(:label_added) %>&nbsp;</div>
<div class="square action_M"></div> <div style="float:left;"><%= l(:label_modified) %>&nbsp;</div>
<div class="square action_D"></div> <div style="float:left;"><%= l(:label_deleted) %>&nbsp;</div>
</div>
<ul id="changes-legend">
<li class="change change-A"><%= l(:label_added) %></li>
<li class="change change-M"><%= l(:label_modified) %></li>
<li class="change change-C"><%= l(:label_copied) %></li>
<li class="change change-R"><%= l(:label_renamed) %></li>
<li class="change change-D"><%= l(:label_deleted) %></li>
</ul>
<p><%= link_to(l(:label_view_diff), :action => 'diff', :id => @project, :path => "", :rev => @changeset.revision) if @changeset.changes.any? %></p>
<table class="list">
<tbody>
<% @changes.each do |change| %>
<tr class="<%= cycle 'odd', 'even' %>">
<td><div class="square action_<%= change.action %>"></div>
<% if change.action == "D" -%>
<%= change.path -%>
<% else -%>
<%= link_to change.path, :action => 'entry', :id => @project, :path => to_path_param(change.relative_path), :rev => @changeset.revision -%>
<% end -%>
<%= "(#{change.revision})" unless change.revision.blank? %></td>
<td align="right">
<% if change.action == "M" %>
<%= link_to l(:label_view_diff), :action => 'diff', :id => @project, :path => to_path_param(change.relative_path), :rev => @changeset.revision %>
<% end %>
</td>
</tr>
<% end %>
</tbody>
</table>
<p class="pagination"><%= pagination_links_full @changes_pages %></p>
<div class="changeset-changes">
<%= render_changeset_changes %>
</div>
<% content_for :header_tags do %>
<%= stylesheet_link_tag "scm" %>

View File

@ -1,13 +1,51 @@
#!/usr/bin/ruby
# rdm-mailhandler
# == Synopsis
#
# Reads an email from standard input and forward it to a Redmine server
# Can be used from a remote mail server
# through a HTTP request.
#
# == Usage
#
# rdm-mailhandler [options] --url=<Redmine URL> --key=<API key>
#
# == Arguments
#
# -u, --url URL of the Redmine server
# -k, --key Redmine API key
#
# General options:
# -h, --help show this help
# -v, --verbose show extra information
# -V, --version show version information and exit
#
# Issue attributes control options:
# -p, --project=PROJECT identifier of the target project
# -t, --tracker=TRACKER name of the target tracker
# --category=CATEGORY name of the target category
# --priority=PRIORITY name of the target priority
# -o, --allow-override=ATTRS allow email content to override attributes
# specified by previous options
# ATTRS is a comma separated list of attributes
#
# == Examples
# No project specified. Emails MUST contain the 'Project' keyword:
#
# rdm-mailhandler --url http://redmine.domain.foo --key secret
#
# Fixed project and default tracker specified, but emails can override
# both tracker and priority attributes using keywords:
#
# rdm-mailhandler --url https://domain.foo/redmine --key secret \\
# --project foo \\
# --tracker bug \\
# --allow-override tracker,priority
require 'net/http'
require 'net/https'
require 'uri'
require 'getoptlong'
require 'rdoc/usage'
module Net
class HTTPS < HTTP
@ -31,15 +69,15 @@ class RedmineMailHandler
self.issue_attributes = {}
opts = GetoptLong.new(
[ '--help', '-h', GetoptLong::NO_ARGUMENT ],
[ '--version', '-V', GetoptLong::NO_ARGUMENT ],
[ '--verbose', '-v', GetoptLong::NO_ARGUMENT ],
[ '--url', '-u', GetoptLong::REQUIRED_ARGUMENT ],
[ '--key', '-k', GetoptLong::REQUIRED_ARGUMENT],
[ '--project', '-p', GetoptLong::REQUIRED_ARGUMENT ],
[ '--tracker', '-t', GetoptLong::REQUIRED_ARGUMENT],
[ '--category', GetoptLong::REQUIRED_ARGUMENT],
[ '--priority', GetoptLong::REQUIRED_ARGUMENT],
[ '--help', '-h', GetoptLong::NO_ARGUMENT ],
[ '--version', '-V', GetoptLong::NO_ARGUMENT ],
[ '--verbose', '-v', GetoptLong::NO_ARGUMENT ],
[ '--url', '-u', GetoptLong::REQUIRED_ARGUMENT ],
[ '--key', '-k', GetoptLong::REQUIRED_ARGUMENT],
[ '--project', '-p', GetoptLong::REQUIRED_ARGUMENT ],
[ '--tracker', '-t', GetoptLong::REQUIRED_ARGUMENT],
[ '--category', GetoptLong::REQUIRED_ARGUMENT],
[ '--priority', GetoptLong::REQUIRED_ARGUMENT],
[ '--allow-override', '-o', GetoptLong::REQUIRED_ARGUMENT]
)
@ -62,7 +100,7 @@ class RedmineMailHandler
end
end
usage if url.nil?
RDoc.usage if url.nil?
end
def submit(email)
@ -74,48 +112,14 @@ class RedmineMailHandler
debug "Posting to #{uri}..."
response = Net::HTTPS.post_form(URI.parse(uri), data)
debug "Response received: #{response.code}"
response.code == 201 ? 0 : 1
puts "Request was denied by your Redmine server. " +
"Please, make sure that 'WS for incoming emails' is enabled in application settings and that you provided the correct API key." if response.code == '403'
response.code == '201' ? 0 : 1
end
private
def usage
puts <<-USAGE
Usage: rdm-mailhandler [options] --url=<Redmine URL> --key=<API key>
Reads an email from standard input and forward it to a Redmine server
Required:
-u, --url URL of the Redmine server
-k, --key Redmine API key
General options:
-h, --help show this help
-v, --verbose show extra information
-V, --version show version information and exit
Issue attributes control options:
-p, --project=PROJECT identifier of the target project
-t, --tracker=TRACKER name of the target tracker
--category=CATEGORY name of the target category
--priority=PRIORITY name of the target priority
-o, --allow-override=ATTRS allow email content to override attributes
specified by previous options
ATTRS is a comma separated list of attributes
Examples:
# No project specified. Emails MUST contain the 'Project' keyword:
rdm-mailhandler --url http://redmine.domain.foo --key secret
# Fixed project and default tracker specified, but emails can override
# both tracker and priority attributes:
rdm-mailhandler --url https://domain.foo/redmine --key secret \\
--project foo \\
--tracker bug \\
--allow-override tracker,priority
USAGE
exit
end
def debug(msg)
puts msg if verbose
end

View File

@ -2,15 +2,15 @@
# == Synopsis
#
# reposman: manages your svn repositories with Redmine
# reposman: manages your repositories with Redmine
#
# == Usage
#
# reposman [OPTIONS...] -s [DIR] -r [HOST]
#
# Examples:
# reposman --svn-dir=/var/svn --redmine-host=redmine.example.net
# reposman -s /var/svn -r redmine.example.net -u http://svn.example.net
# reposman --svn-dir=/var/svn --redmine-host=redmine.example.net --scm subversion
# reposman -s /var/git -r redmine.example.net -u http://svn.example.net --scm git
#
# == Arguments (mandatory)
#
@ -24,7 +24,12 @@
#
# -o, --owner=OWNER owner of the repository. using the rails login
# allow user to browse the repository within
# Redmine even for private project
# Redmine even for private project. If you want to share repositories
# through Redmine.pm, you need to use the apache owner.
# --scm=SCM the kind of SCM repository you want to create (and register) in
# Redmine (default: Subversion). reposman is able to create Git
# and Subversion repositories. For all other kind (Bazaar,
# Darcs, Filesystem, Mercurial) you must specify a --command option
# -u, --url=URL the base url Redmine will use to access your
# repositories. This option is used to automatically
# register the repositories in Redmine. The project
@ -35,13 +40,8 @@
# the repositories in Redmine
# -c, --command=COMMAND use this command instead of "svnadmin create" to
# create a repository. This option can be used to
# create non-subversion repositories
# --scm SCM vendor used to register the repository in
# Redmine (default: Subversion). Can be one of the
# other supported SCM: Bazaar, Darcs, Filesystem,
# Git, Mercurial (case sensitive).
# This option should be used when both options --url
# and --command are used.
# create repositories other than subversion and git kind.
# This command override the default creation for git and subversion.
# -f, --force force repository creation even if the project
# repository is already declared in Redmine
# -t, --test only show what should be done
@ -49,6 +49,11 @@
# -v, --verbose verbose
# -V, --version print version and exit
# -q, --quiet no log
#
# == References
#
# You can find more information on the redmine's wiki : http://www.redmine.org/wiki/redmine/HowTos
require 'getoptlong'
require 'rdoc/usage'
@ -82,16 +87,38 @@ $svn_owner = 'root'
$use_groupid = true
$svn_url = false
$test = false
$command = "svnadmin create"
$force = false
$scm = 'Subversion'
def log(text,level=0, exit=false)
return if $quiet or level > $verbose
puts text
puts text unless $quiet or level > $verbose
exit 1 if exit
end
def system_or_raise(command)
raise "\"#{command}\" failed" unless system command
end
module SCM
module Subversion
def self.create(path)
system_or_raise "svnadmin create #{path}"
end
end
module Git
def self.create(path)
Dir.mkdir path
Dir.chdir(path) do
system_or_raise "git --bare init --shared"
system_or_raise "git-update-server-info"
end
end
end
end
begin
opts.each do |opt, arg|
case opt
@ -99,7 +126,7 @@ begin
when '--redmine-host'; $redmine_host = arg.dup
when '--owner'; $svn_owner = arg.dup; $use_groupid = false;
when '--url'; $svn_url = arg.dup
when '--scm'; $scm = arg.dup; log("Invalid SCM: #{$scm}", 0, true) unless SUPPORTED_SCM.include?($scm)
when '--scm'; $scm = arg.dup.capitalize; log("Invalid SCM: #{$scm}", 0, true) unless SUPPORTED_SCM.include?($scm)
when '--command'; $command = arg.dup
when '--verbose'; $verbose += 1
when '--test'; $test = true
@ -117,12 +144,15 @@ if $test
log("running in test mode")
end
# Make sure command is overridden if SCM vendor is not Subversion
if $scm != 'Subversion' && $command == 'svnadmin create'
log("Please use --command option to specify how to create a #{$scm} repository.", 0, true)
# Make sure command is overridden if SCM vendor is not handled internally (for the moment Subversion and Git)
if $command.nil?
begin
scm_module = SCM.const_get($scm)
rescue
log("Please use --command option to specify how to create a #{$scm} repository.", 0, true)
end
end
$svn_url += "/" if $svn_url and not $svn_url.match(/\/$/)
if ($redmine_host.empty? or $repos_base.empty?)
@ -231,8 +261,11 @@ projects.each do |project|
begin
set_owner_and_rights(project, repos_path) do
command = "#{$command} #{repos_path}"
raise "#{command} failed" unless system( command )
if scm_module.nil?
system_or_raise "#{$command} #{repos_path}"
else
scm_module.create(repos_path)
end
end
rescue => e
log("\tunable to create #{repos_path} : #{e}\n")

View File

@ -638,3 +638,5 @@ setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
setting_sequential_project_identifiers: Generate sequential project identifiers
notice_unable_delete_version: Unable to delete version
label_renamed: renamed
label_copied: copied

644
lang/ca.yml Normal file
View File

@ -0,0 +1,644 @@
_gloc_rule_default: '|n| n==1 ? "" : "_plural" '
actionview_datehelper_select_day_prefix:
actionview_datehelper_select_month_names: Gener,Febrer,Març,Abril,Maig,Juny,Juliol,Agost,Setembre,Octubre,Novembre,Desembre
actionview_datehelper_select_month_names_abbr: Gen,Feb,Mar,Abr,Mai,Jun,Jul,Ago,Set,Oct,Nov,Dec
actionview_datehelper_select_month_prefix:
actionview_datehelper_select_year_prefix:
actionview_datehelper_time_in_words_day: 1 dia
actionview_datehelper_time_in_words_day_plural: %d dies
actionview_datehelper_time_in_words_hour_about: aproximadament una hora
actionview_datehelper_time_in_words_hour_about_plural: aproximadament %d hores
actionview_datehelper_time_in_words_hour_about_single: aproximadament una hora
actionview_datehelper_time_in_words_minute: 1 minut
actionview_datehelper_time_in_words_minute_half: mig minut
actionview_datehelper_time_in_words_minute_less_than: "menys d'un minut"
actionview_datehelper_time_in_words_minute_plural: %d minuts
actionview_datehelper_time_in_words_minute_single: 1 minut
actionview_datehelper_time_in_words_second_less_than: "menys d'un segon"
actionview_datehelper_time_in_words_second_less_than_plural: menys de %d segons
actionview_instancetag_blank_option: Seleccioneu
activerecord_error_inclusion: no està inclòs a la llista
activerecord_error_exclusion: està reservat
activerecord_error_invalid: no és vàlid
activerecord_error_confirmation: la confirmació no coincideix
activerecord_error_accepted: "s'ha d'acceptar"
activerecord_error_empty: no pot estar buit
activerecord_error_blank: no pot estar en blanc
activerecord_error_too_long: és massa llarg
activerecord_error_too_short: és massa curt
activerecord_error_wrong_length: la longitud és incorrecta
activerecord_error_taken: "ja s'està utilitzant"
activerecord_error_not_a_number: no és un número
activerecord_error_not_a_date: no és una data vàlida
activerecord_error_greater_than_start_date: ha de ser superior que la data inicial
activerecord_error_not_same_project: no pertany al mateix projecte
activerecord_error_circular_dependency: Aquesta relació crearia una dependència circular
general_fmt_age: %d any
general_fmt_age_plural: %d anys
general_fmt_date: %%d/%%m/%%Y
general_fmt_datetime: %%d/%%m/%%Y %%H:%%M
general_fmt_datetime_short: %%d/%%m %%H:%%M
general_fmt_time: %%H:%%M
general_text_No: 'No'
general_text_Yes: 'Si'
general_text_no: 'no'
general_text_yes: 'si'
general_lang_name: 'Català'
general_csv_separator: ';'
general_csv_decimal_separator: ','
general_csv_encoding: ISO-8859-15
general_pdf_encoding: ISO-8859-15
general_day_names: Dilluns,Dimarts,Dimecres,Dijous,Divendres,Dissabte,Diumenge
general_first_day_of_week: '1'
notice_account_updated: "El compte s'ha actualitzat correctament."
notice_account_invalid_creditentials: Usuari o contrasenya invàlid
notice_account_password_updated: "La contrasenya s'ha modificat correctament."
notice_account_wrong_password: Contrasenya incorrecta
notice_account_register_done: "El compte s'ha creat correctament. Per a activar el compte, feu clic en l'enllaç que us han enviat per correu electrònic."
notice_account_unknown_email: Usuari desconegut.
notice_can_t_change_password: "Aquest compte utilitza una font d'autenticació externa. No és possible canviar la contrasenya."
notice_account_lost_email_sent: "S'ha enviat un correu electrònic amb instruccions per a seleccionar una contrasenya nova."
notice_account_activated: "El compte s'ha activat. Ara podeu entrar."
notice_successful_create: "S'ha creat correctament."
notice_successful_update: "S'ha modificat correctament."
notice_successful_delete: "S'ha suprimit correctament."
notice_successful_connection: "S'ha connectat correctament."
notice_file_not_found: "La pàgina a la que intenteu accedir no existeix o s'ha suprimit."
notice_locking_conflict: Un altre usuari ha actualitzat les dades.
notice_not_authorized: No teniu permís per a accedir a aquesta pàgina.
notice_email_sent: "S'ha enviat un correu electrònic a %s"
notice_email_error: "S'ha produït un error en enviar el correu (%s)"
notice_feeds_access_key_reseted: "S'ha reiniciat la clau d'accés del RSS."
notice_failed_to_save_issues: "No s'han pogut desar %s assumptes de %d seleccionats: %s."
notice_no_issue_selected: "No s'ha seleccionat cap assumpte. Activeu els assumptes que voleu editar."
notice_account_pending: "S'ha creat el compte i ara està pendent de l'aprovació de l'administrador."
notice_default_data_loaded: "S'ha carregat correctament la configuració predeterminada."
error_can_t_load_default_data: "No s'ha pogut carregar la configuració predeterminada: %s"
error_scm_not_found: "No s'ha trobat l'entrada o la revisió en el dipòsit."
error_scm_command_failed: "S'ha produït un error en intentar accedir al dipòsit: %s"
error_scm_annotate: "L'entrada no existeix o no s'ha pogut anotar."
error_issue_not_found_in_project: "No s'ha trobat l'assumpte o no pertany a aquest projecte"
mail_subject_lost_password: Contrasenya de %s
mail_body_lost_password: "Per a canviar la contrasenya, feu clic en l'enllaç següent:"
mail_subject_register: Activació del compte de %s
mail_body_register: "Per a activar el compte, feu clic en l'enllaç següent:"
mail_body_account_information_external: Podeu utilitzar el compte «%s» per a entrar.
mail_body_account_information: Informació del compte
mail_subject_account_activation_request: "Sol·licitud d'activació del compte de %s"
mail_body_account_activation_request: "S'ha registrat un usuari nou (%s). El seu compte està pendent d'aprovació:"
mail_subject_reminder: "%d assumptes venceran els següents %d dies"
mail_body_reminder: "%d assumptes que teniu assignades venceran els següents %d dies:"
gui_validation_error: 1 error
gui_validation_error_plural: %d errors
field_name: Nom
field_description: Descripció
field_summary: Resum
field_is_required: Necessari
field_firstname: Nom
field_lastname: Cognom
field_mail: Correu electrònic
field_filename: Fitxer
field_filesize: Mida
field_downloads: Baixades
field_author: Autor
field_created_on: Creat
field_updated_on: Actualitzat
field_field_format: Format
field_is_for_all: Per a tots els projectes
field_possible_values: Valores possibles
field_regexp: Expressió regular
field_min_length: Longitud mínima
field_max_length: Longitud màxima
field_value: Valor
field_category: Categoria
field_title: Títol
field_project: Projecte
field_issue: Assumpte
field_status: Estat
field_notes: Notes
field_is_closed: Assumpte tancat
field_is_default: Estat predeterminat
field_tracker: Seguidor
field_subject: Tema
field_due_date: Data de venciment
field_assigned_to: Assignat a
field_priority: Prioritat
field_fixed_version: Versió objectiu
field_user: Usuari
field_role: Rol
field_homepage: Pàgina web
field_is_public: Públic
field_parent: Subprojecte de
field_is_in_chlog: Assumptes mostrats en el registre de canvis
field_is_in_roadmap: Assumptes mostrats en la planificació
field_login: Entrada
field_mail_notification: Notificacions per correu electrònic
field_admin: Administrador
field_last_login_on: Última connexió
field_language: Idioma
field_effective_date: Data
field_password: Contrasenya
field_new_password: Contrasenya nova
field_password_confirmation: Confirmació
field_version: Versió
field_type: Tipus
field_host: Ordinador
field_port: Port
field_account: Compte
field_base_dn: Base DN
field_attr_login: "Atribut d'entrada"
field_attr_firstname: Atribut del nom
field_attr_lastname: Atribut del cognom
field_attr_mail: Atribut del correu electrònic
field_onthefly: "Creació de l'usuari «al vol»"
field_start_date: Inici
field_done_ratio: %% realitzat
field_auth_source: "Mode d'autenticació"
field_hide_mail: "Oculta l'adreça de correu electrònic"
field_comment: Comentari
field_url: URL
field_start_page: Pàgina inicial
field_subproject: Subprojecte
field_hours: Hores
field_activity: Activitat
field_spent_on: Data
field_identifier: Identificador
field_is_filter: "S'ha utilitzat com a filtre"
field_issue_to_id: Assumpte relacionat
field_delay: Retard
field_assignable: Es poden assignar assumptes a aquest rol
field_redirect_existing_links: Redirigeix els enllaços existents
field_estimated_hours: Temps previst
field_column_names: Columnes
field_time_zone: Zona horària
field_searchable: Es pot cercar
field_default_value: Valor predeterminat
field_comments_sorting: Mostra els comentaris
field_parent_title: Pàgina pare
setting_app_title: "Títol de l'aplicació"
setting_app_subtitle: "Subtítol de l'aplicació"
setting_welcome_text: Text de benvinguda
setting_default_language: Idioma predeterminat
setting_login_required: Es necessita autenticació
setting_self_registration: Registre automàtic
setting_attachment_max_size: Mida màxima dels adjunts
setting_issues_export_limit: "Límit d'exportació d'assumptes"
setting_mail_from: "Adreça de correu electrònic d'emissió"
setting_bcc_recipients: Vincula els destinataris de les còpies amb carbó (bcc)
setting_host_name: "Nom de l'ordinador"
setting_text_formatting: Format del text
setting_wiki_compression: "Comprimeix l'historial del wiki"
setting_feeds_limit: Límit de contingut del canal
setting_default_projects_public: Els projectes nous són públics per defecte
setting_autofetch_changesets: Omple automàticament les publicacions
setting_sys_api_enabled: Habilita el WS per a la gestió del dipòsit
setting_commit_ref_keywords: Paraules claus per a la referència
setting_commit_fix_keywords: Paraules claus per a la correcció
setting_autologin: Entrada automàtica
setting_date_format: Format de la data
setting_time_format: Format de hora
setting_cross_project_issue_relations: "Permet les relacions d'assumptes entre projectes"
setting_issue_list_default_columns: "Columnes mostrades per defecte en la llista d'assumptes"
setting_repositories_encodings: Codificacions del dipòsit
setting_emails_footer: Peu dels correus electrònics
setting_protocol: Protocol
setting_per_page_options: Opcions dels objectes per pàgina
setting_user_format: "Format de com mostrar l'usuari"
setting_activity_days_default: "Dies a mostrar l'activitat del projecte"
setting_display_subprojects_issues: "Mostra els assumptes d'un subprojecte en el projecte pare per defecte"
setting_enabled_scm: "Habilita l'SCM"
setting_mail_handler_api_enabled: "Habilita el WS per correus electrònics d'entrada"
setting_mail_handler_api_key: Clau API
project_module_issue_tracking: "Seguidor d'assumptes"
project_module_time_tracking: Seguidor de temps
project_module_news: Noticies
project_module_documents: Documents
project_module_files: Fitxers
project_module_wiki: Wiki
project_module_repository: Dipòsit
project_module_boards: Taulers
label_user: Usuari
label_user_plural: Usuaris
label_user_new: Usuari nou
label_project: Projecte
label_project_new: Projecte nou
label_project_plural: Projectes
label_project_all: Tots els projectes
label_project_latest: Els últims projectes
label_issue: Assumpte
label_issue_new: Assumpte nou
label_issue_plural: Assumptes
label_issue_view_all: Visualitza tots els assumptes
label_issues_by: Assumptes per %s
label_issue_added: Assumpte afegit
label_issue_updated: Assumpte actualitzat
label_document: Document
label_document_new: Document nou
label_document_plural: Documents
label_document_added: Document afegit
label_role: Rol
label_role_plural: Rols
label_role_new: Rol nou
label_role_and_permissions: Rols i permisos
label_member: Membre
label_member_new: Membre nou
label_member_plural: Membres
label_tracker: Seguidor
label_tracker_plural: Seguidors
label_tracker_new: Seguidor nou
label_workflow: Flux de treball
label_issue_status: "Estat de l'assumpte"
label_issue_status_plural: "Estats de l'assumpte"
label_issue_status_new: Estat nou
label_issue_category: "Categoria de l'assumpte"
label_issue_category_plural: "Categories de l'assumpte"
label_issue_category_new: Categoria nova
label_custom_field: Camp personalitzat
label_custom_field_plural: Camps personalitzats
label_custom_field_new: Camp personalitzat nou
label_enumerations: Enumeracions
label_enumeration_new: Valor nou
label_information: Informació
label_information_plural: Informació
label_please_login: Entreu
label_register: Registre
label_password_lost: Contrasenya perduda
label_home: Inici
label_my_page: La meva pàgina
label_my_account: El meu compte
label_my_projects: Els meus projectes
label_administration: Administració
label_login: Entra
label_logout: Surt
label_help: Ajuda
label_reported_issues: Assumptes informats
label_assigned_to_me_issues: Assumptes assignats a mi
label_last_login: Última connexió
label_last_updates: Última actualització
label_last_updates_plural: %d última actualització
label_registered_on: Informat el
label_activity: Activitat
label_overall_activity: Activitat global
label_new: Nou
label_logged_as: Heu entrat com a
label_environment: Entorn
label_authentication: Autenticació
label_auth_source: "Mode d'autenticació"
label_auth_source_new: "Mode d'autenticació nou"
label_auth_source_plural: "Modes d'autenticació"
label_subproject_plural: Subprojectes
label_and_its_subprojects: %s i els seus subprojectes
label_min_max_length: Longitud mín - max
label_list: Llist
label_date: Data
label_integer: Enter
label_float: Flotant
label_boolean: Booleà
label_string: Text
label_text: Text llarg
label_attribute: Atribut
label_attribute_plural: Atributs
label_download: %d baixada
label_download_plural: %d baixades
label_no_data: Sense dades a mostrar
label_change_status: "Canvia l'estat"
label_history: Historial
label_attachment: Fitxer
label_attachment_new: Fitxer nou
label_attachment_delete: Suprimeix el fitxer
label_attachment_plural: Fitxers
label_file_added: Fitxer afegit
label_report: Informe
label_report_plural: Informes
label_news: Noticies
label_news_new: Afegeix noticies
label_news_plural: Noticies
label_news_latest: Últimes noticies
label_news_view_all: Visualitza totes les noticies
label_news_added: Noticies afegides
label_change_log: Registre de canvis
label_settings: Paràmetres
label_overview: Resum
label_version: Versió
label_version_new: Versió nova
label_version_plural: Versions
label_confirmation: Confirmació
label_export_to: 'També disponible a:'
label_read: Llegeix...
label_public_projects: Projectes públics
label_open_issues: obert
label_open_issues_plural: oberts
label_closed_issues: tancat
label_closed_issues_plural: tancats
label_total: Total
label_permissions: Permisos
label_current_status: Estat actual
label_new_statuses_allowed: Nous estats autoritzats
label_all: tots
label_none: cap
label_nobody: ningú
label_next: Següent
label_previous: Anterior
label_used_by: Utilitzat per
label_details: Detalls
label_add_note: Afegeix una nota
label_per_page: Per pàgina
label_calendar: Calendari
label_months_from: mesos des de
label_gantt: Gantt
label_internal: Intern
label_last_changes: últims %d canvis
label_change_view_all: Visualitza tots els canvis
label_personalize_page: Personalitza aquesta pàgina
label_comment: Comentari
label_comment_plural: Comentaris
label_comment_add: Afegeix un comentari
label_comment_added: Comentari afegit
label_comment_delete: Suprimeix comentaris
label_query: Consulta personalitzada
label_query_plural: Consultes personalitzades
label_query_new: Consulta nova
label_filter_add: Afegeix un filtre
label_filter_plural: Filtres
label_equals: és
label_not_equals: no és
label_in_less_than: en menys de
label_in_more_than: en més de
label_in: en
label_today: avui
label_all_time: tot el temps
label_yesterday: ahir
label_this_week: aquesta setmana
label_last_week: "l'última setmana"
label_last_n_days: els últims %d dies
label_this_month: aquest més
label_last_month: "l'últim més"
label_this_year: aquest any
label_date_range: Abast de les dates
label_less_than_ago: fa menys de
label_more_than_ago: fa més de
label_ago: fa
label_contains: conté
label_not_contains: no conté
label_day_plural: dies
label_repository: Dipòsit
label_repository_plural: Dipòsits
label_browse: Navega
label_modification: %d canvi
label_modification_plural: %d canvis
label_revision: Revisió
label_revision_plural: Revisions
label_associated_revisions: Revisions associades
label_added: afegit
label_modified: modificat
label_deleted: suprimit
label_latest_revision: Última revisió
label_latest_revision_plural: Últimes revisions
label_view_revisions: Visualitza les revisions
label_max_size: Mida màxima
label_on: 'de'
label_sort_highest: Mou a la part superior
label_sort_higher: Mou cap amunt
label_sort_lower: Mou cap avall
label_sort_lowest: Mou a la part inferior
label_roadmap: Planificació
label_roadmap_due_in: Venç en
label_roadmap_overdue: %s tard
label_roadmap_no_issues: No hi ha assumptes per a aquesta versió
label_search: Cerca
label_result_plural: Resultats
label_all_words: Totes les paraules
label_wiki: Wiki
label_wiki_edit: Edició wiki
label_wiki_edit_plural: Edicions wiki
label_wiki_page: Pàgina wiki
label_wiki_page_plural: Pàgines wiki
label_index_by_title: Índex per títol
label_index_by_date: Índex per data
label_current_version: Versió actual
label_preview: Previsualització
label_feed_plural: Canals
label_changes_details: Detalls de tots els canvis
label_issue_tracking: "Seguiment d'assumptes"
label_spent_time: Temps invertit
label_f_hour: %.2f hora
label_f_hour_plural: %.2f hores
label_time_tracking: Temps de seguiment
label_change_plural: Canvis
label_statistics: Estadístiques
label_commits_per_month: Publicacions per mes
label_commits_per_author: Publicacions per autor
label_view_diff: Visualitza les diferències
label_diff_inline: en línia
label_diff_side_by_side: costat per costat
label_options: Opcions
label_copy_workflow_from: Copia el flux de treball des de
label_permissions_report: Informe de permisos
label_watched_issues: Assumptes vigilats
label_related_issues: Assumptes relacionats
label_applied_status: Estat aplicat
label_loading: "S'està carregant..."
label_relation_new: Relació nova
label_relation_delete: Suprimeix la relació
label_relates_to: relacionat amb
label_duplicates: duplicats
label_duplicated_by: duplicat per
label_blocks: bloqueja
label_blocked_by: bloquejats per
label_precedes: anterior a
label_follows: posterior a
label_end_to_start: final al començament
label_end_to_end: final al final
label_start_to_start: començament al començament
label_start_to_end: començament al final
label_stay_logged_in: "Manté l'entrada en"
label_disabled: inhabilitat
label_show_completed_versions: Mostra les versions completes
label_me: jo mateix
label_board: Fòrum
label_board_new: Fòrum nou
label_board_plural: Fòrums
label_topic_plural: Temes
label_message_plural: Missatges
label_message_last: Últim missatge
label_message_new: Missatge nou
label_message_posted: Missatge afegit
label_reply_plural: Respostes
label_send_information: "Envia la informació del compte a l'usuari"
label_year: Any
label_month: Mes
label_week: Setmana
label_date_from: Des de
label_date_to: A
label_language_based: "Basat en l'idioma de l'usuari"
label_sort_by: Ordena per %s
label_send_test_email: Envia un correu electrònic de prova
label_feeds_access_key_created_on: "Clau d'accés del RSS creada fa %s"
label_module_plural: Mòduls
label_added_time_by: Afegit per %s fa %s
label_updated_time: Actualitzat fa %s
label_jump_to_a_project: Salta al projecte...
label_file_plural: Fitxers
label_changeset_plural: Conjunt de canvis
label_default_columns: Columnes predeterminades
label_no_change_option: (sense canvis)
label_bulk_edit_selected_issues: Edita en bloc els assumptes seleccionats
label_theme: Tema
label_default: Predeterminat
label_search_titles_only: Cerca només en els títols
label_user_mail_option_all: "Per qualsevol esdeveniment en tots els meus projectes"
label_user_mail_option_selected: "Per qualsevol esdeveniment en els projectes seleccionats..."
label_user_mail_option_none: "Només per les coses que vigilo o hi estic implicat"
label_user_mail_no_self_notified: "No vull ser notificat pels canvis que faig jo mateix"
label_registration_activation_by_email: activació del compte per correu electrònic
label_registration_manual_activation: activació del compte manual
label_registration_automatic_activation: activació del compte automàtica
label_display_per_page: 'Per pàgina: %s'
label_age: Edat
label_change_properties: Canvia les propietats
label_general: General
label_more: Més
label_scm: SCM
label_plugins: Connectors
label_ldap_authentication: Autenticació LDAP
label_downloads_abbr: Baixades
label_optional_description: Descripció opcional
label_add_another_file: Afegeix un altre fitxer
label_preferences: Preferències
label_chronological_order: En ordre cronològic
label_reverse_chronological_order: En ordre cronològic invers
label_planning: Planificació
label_incoming_emails: "Correu electrònics d'entrada"
label_generate_key: Genera una clau
label_issue_watchers: Vigilants
button_login: Entra
button_submit: Tramet
button_save: Desa
button_check_all: Activa-ho tot
button_uncheck_all: Desactiva-ho tot
button_delete: Suprimeix
button_create: Crea
button_test: Test
button_edit: Edit
button_add: Afegeix
button_change: Canvia
button_apply: Aplica
button_clear: Neteja
button_lock: Bloca
button_unlock: Desbloca
button_download: Baixa
button_list: Llista
button_view: Visualitza
button_move: Mou
button_back: Enrere
button_cancel: Cancel·la
button_activate: Activa
button_sort: Ordena
button_log_time: "Hora d'entrada"
button_rollback: Torna a aquesta versió
button_watch: Vigila
button_unwatch: No vigilis
button_reply: Resposta
button_archive: Arxiva
button_unarchive: Desarxiva
button_reset: Reinicia
button_rename: Reanomena
button_change_password: Canvia la contrasenya
button_copy: Copia
button_annotate: Anota
button_update: Actualitza
button_configure: Configura
status_active: actiu
status_registered: informat
status_locked: bloquejat
text_select_mail_notifications: "Seleccioneu les accions per les quals s'hauria d'enviar una notificació per correu electrònic."
text_regexp_info: ex. ^[A-Z0-9]+$
text_min_max_length_info: 0 significa sense restricció
text_project_destroy_confirmation: Segur que voleu suprimir aquest projecte i les dades relacionades?
text_subprojects_destroy_warning: "També seran suprimits els seus subprojectes: %s."
text_workflow_edit: Seleccioneu un rol i un seguidor per a editar el flux de treball
text_are_you_sure: Segur?
text_journal_changed: canviat des de %s a %s
text_journal_set_to: establert a %s
text_journal_deleted: suprimit
text_tip_task_begin_day: "tasca que s'inicia aquest dia"
text_tip_task_end_day: tasca que finalitza aquest dia
text_tip_task_begin_end_day: "tasca que s'inicia i finalitza aquest dia"
text_project_identifier_info: "Es permeten lletres en minúscules (a-z), números i guions.<br />Un cop desat, l'identificador no es pot modificar."
text_caracters_maximum: %d caràcters com a màxim.
text_caracters_minimum: Com a mínim ha de tenir %d caràcters.
text_length_between: Longitud entre %d i %d caràcters.
text_tracker_no_workflow: "No s'ha definit cap flux de treball per a aquest seguidor"
text_unallowed_characters: Caràcters no permesos
text_comma_separated: Es permeten valors múltiples (separats per una coma).
text_issues_ref_in_commit_messages: Referència i soluciona els assumptes en els missatges publicats
text_issue_added: "L'assumpte %s ha sigut informat per %s."
text_issue_updated: "L'assumpte %s ha sigut actualitzat per %s."
text_wiki_destroy_confirmation: Segur que voleu suprimir aquest wiki i tots els seus continguts?
text_issue_category_destroy_question: Alguns assumptes (%d) estan assignats a aquesta categoria. Què voleu fer?
text_issue_category_destroy_assignments: Suprimeix les assignacions de la categoria
text_issue_category_reassign_to: Torna a assignar els assumptes a aquesta categoria
text_user_mail_option: "Per als projectes no seleccionats, només rebreu notificacions sobre les coses que vigileu o que hi esteu implicat (ex. assumptes que en sou l'autor o hi esteu assignat)."
text_no_configuration_data: "Encara no s'han configurat els rols, seguidors, estats de l'assumpte i flux de treball.\nÉs altament recomanable que carregueu la configuració predeterminada. Podreu modificar-la un cop carregada."
text_load_default_configuration: Carrega la configuració predeterminada
text_status_changed_by_changeset: Aplicat en el conjunt de canvis %s.
text_issues_destroy_confirmation: "Segur que voleu suprimir els assumptes seleccionats?"
text_select_project_modules: "Seleccioneu els mòduls a habilitar per a aquest projecte:"
text_default_administrator_account_changed: "S'ha canviat el compte d'administrador predeterminat"
text_file_repository_writable: Es pot escriure en el dipòsit de fitxers
text_rmagick_available: RMagick disponible (opcional)
text_destroy_time_entries_question: "S'han informat %.02f hores en els assumptes que aneu a suprimir. Què voleu fer?"
text_destroy_time_entries: Suprimeix les hores informades
text_assign_time_entries_to_project: Assigna les hores informades al projecte
text_reassign_time_entries: 'Torna a assignar les hores informades a aquest assumpte:'
text_user_wrote: '%s va escriure:'
text_enumeration_destroy_question: '%d objectes estan assignats a aquest valor.'
text_enumeration_category_reassign_to: 'Torna a assignar-los a aquest valor:'
text_email_delivery_not_configured: "El lliurament per correu electrònic no està configurat i les notificacions estan inhabilitades.\nConfigureu el servidor SMTP a config/email.yml i reinicieu l'aplicació per habilitar-lo."
default_role_manager: Gestor
default_role_developper: Desenvolupador
default_role_reporter: Informador
default_tracker_bug: Error
default_tracker_feature: Característica
default_tracker_support: Suport
default_issue_status_new: Nou
default_issue_status_assigned: Assignat
default_issue_status_resolved: Resolt
default_issue_status_feedback: Comentaris
default_issue_status_closed: Tancat
default_issue_status_rejected: Rebutjat
default_doc_category_user: "Documentació d'usuari"
default_doc_category_tech: Documentació tècnica
default_priority_low: Baixa
default_priority_normal: Normal
default_priority_high: Alta
default_priority_urgent: Urgent
default_priority_immediate: Immediata
default_activity_design: Disseny
default_activity_development: Desenvolupament
enumeration_issue_priorities: Prioritat dels assumptes
enumeration_doc_categories: Categories del document
enumeration_activities: Activitats (seguidor de temps)
button_quote: Quote
setting_sequential_project_identifiers: Generate sequential project identifiers
notice_unable_delete_version: Unable to delete version.
field_comments: Comment
setting_commit_logs_encoding: Commit messages encoding
label_renamed: renamed
label_copied: copied

View File

@ -643,3 +643,5 @@ setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
setting_sequential_project_identifiers: Generate sequential project identifiers
notice_unable_delete_version: Unable to delete version
label_renamed: renamed
label_copied: copied

View File

@ -640,3 +640,5 @@ setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
setting_sequential_project_identifiers: Generate sequential project identifiers
notice_unable_delete_version: Unable to delete version
label_renamed: renamed
label_copied: copied

View File

@ -639,3 +639,5 @@ setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
setting_sequential_project_identifiers: Generate sequential project identifiers
notice_unable_delete_version: Unable to delete version
label_renamed: renamed
label_copied: copied

View File

@ -405,6 +405,8 @@ label_revision_plural: Revisions
label_associated_revisions: Associated revisions
label_added: added
label_modified: modified
label_copied: copied
label_renamed: renamed
label_deleted: deleted
label_latest_revision: Latest revision
label_latest_revision_plural: Latest revisions

View File

@ -641,3 +641,5 @@ setting_commit_logs_encoding: Codificación de los mensajes de commit
button_quote: Quote
setting_sequential_project_identifiers: Generate sequential project identifiers
notice_unable_delete_version: Unable to delete version
label_renamed: renamed
label_copied: copied

View File

@ -638,3 +638,5 @@ button_quote: Quote
setting_sequential_project_identifiers: Generate sequential project identifiers
setting_commit_logs_encoding: Commit messages encoding
notice_unable_delete_version: Unable to delete version
label_renamed: renamed
label_copied: copied

View File

@ -404,6 +404,8 @@ label_revision_plural: Révisions
label_associated_revisions: Révisions associées
label_added: ajouté
label_modified: modifié
label_copied: copié
label_renamed: renommé
label_deleted: supprimé
label_latest_revision: Dernière révision
label_latest_revision_plural: Dernières révisions

View File

@ -638,3 +638,5 @@ setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
setting_sequential_project_identifiers: Generate sequential project identifiers
notice_unable_delete_version: Unable to delete version
label_renamed: renamed
label_copied: copied

View File

@ -638,4 +638,6 @@ label_issue_watchers: Megfigyelők
setting_commit_logs_encoding: Commit üzenetek kódlapja
button_quote: Idézet
setting_sequential_project_identifiers: Szekvenciális projekt azonosítók generálása
notice_unable_delete_version: Unable to delete version
notice_unable_delete_version: A verziót nem lehet törölni
label_renamed: renamed
label_copied: copied

View File

@ -638,3 +638,5 @@ setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
setting_sequential_project_identifiers: Generate sequential project identifiers
notice_unable_delete_version: Unable to delete version
label_renamed: renamed
label_copied: copied

View File

@ -639,3 +639,5 @@ setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
setting_sequential_project_identifiers: Generate sequential project identifiers
notice_unable_delete_version: Unable to delete version
label_renamed: renamed
label_copied: copied

View File

@ -638,3 +638,5 @@ setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
setting_sequential_project_identifiers: Generate sequential project identifiers
notice_unable_delete_version: Unable to delete version
label_renamed: renamed
label_copied: copied

View File

@ -640,3 +640,5 @@ setting_commit_logs_encoding: Commit pranėšimų koduotė
setting_sequential_project_identifiers: Generate sequential project identifiers
button_quote: Quote
notice_unable_delete_version: Unable to delete version
label_renamed: renamed
label_copied: copied

View File

@ -639,3 +639,5 @@ setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
setting_sequential_project_identifiers: Generate sequential project identifiers
notice_unable_delete_version: Unable to delete version
label_renamed: renamed
label_copied: copied

View File

@ -639,3 +639,5 @@ setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
setting_sequential_project_identifiers: Generate sequential project identifiers
notice_unable_delete_version: Unable to delete version
label_renamed: renamed
label_copied: copied

View File

@ -638,3 +638,5 @@ setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
setting_sequential_project_identifiers: Generate sequential project identifiers
notice_unable_delete_version: Unable to delete version
label_renamed: renamed
label_copied: copied

View File

@ -639,3 +639,5 @@ enumeration_issue_priorities: Prioridade das tarefas
enumeration_doc_categories: Categorias de documento
enumeration_activities: Atividades (time tracking)
notice_unable_delete_version: Unable to delete version
label_renamed: renamed
label_copied: copied

View File

@ -638,3 +638,5 @@ setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
setting_sequential_project_identifiers: Generate sequential project identifiers
notice_unable_delete_version: Unable to delete version
label_renamed: renamed
label_copied: copied

View File

@ -638,3 +638,5 @@ setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
setting_sequential_project_identifiers: Generate sequential project identifiers
notice_unable_delete_version: Unable to delete version
label_renamed: renamed
label_copied: copied

View File

@ -31,10 +31,10 @@ activerecord_error_accepted: необходимо принять
activerecord_error_blank: необходимо заполнить
activerecord_error_circular_dependency: Такая связь приведет к циклической зависимости
activerecord_error_confirmation: ошибка в подтверждении
activerecord_error_empty: необходимо заполнить
activerecord_error_exclusion: зарезервировано
activerecord_error_empty: необходимо заполнить
activerecord_error_exclusion: зарезервировано
activerecord_error_greater_than_start_date: должна быть позднее даты начала
activerecord_error_inclusion: нет в списке
activerecord_error_inclusion: нет в списке
activerecord_error_invalid: неверное значение
activerecord_error_not_a_date: дата недействительна
activerecord_error_not_a_number: не является числом
@ -76,7 +76,7 @@ button_sort: Сортировать
button_submit: Принять
button_test: Проверить
button_unarchive: Разархивировать
button_uncheck_all: Очистить
button_uncheck_all: Очистить
button_unlock: Разблокировать
button_unwatch: Не следить
button_update: Обновить
@ -85,13 +85,13 @@ button_watch: Следить
default_activity_design: Проектирование
default_activity_development: Разработка
default_doc_category_tech: Техническая документация
default_doc_category_tech: Техническая документация
default_doc_category_user: Документация пользователя
default_issue_status_assigned: Назначен
default_issue_status_closed: Закрыт
default_issue_status_feedback: Обратная связь
default_issue_status_feedback: Обратная связь
default_issue_status_new: Новый
default_issue_status_rejected: Отказ
default_issue_status_rejected: Отказ
default_issue_status_resolved: Заблокирован
default_priority_high: Высокий
default_priority_immediate: Немедленный
@ -113,7 +113,7 @@ error_can_t_load_default_data: "Конфигурация по умолчанию
error_issue_not_found_in_project: Задача не была найдена или не прикреплена к этому проекту
error_scm_annotate: "Данные отсутствуют или не могут быть подписаны."
error_scm_command_failed: "Ошибка доступа к хранилищу: %s"
error_scm_not_found: Хранилилище не содержит записи и/или исправления.
error_scm_not_found: Хранилище не содержит записи и/или исправления.
field_account: Учетная запись
field_activity: Деятельность
@ -132,7 +132,7 @@ field_column_names: Колонки
field_comments_sorting: Отображение комментариев
field_comments: Комментарий
field_created_on: Создан
field_default_value: Значение по умолчанию
field_default_value: Значение по умолчанию
field_delay: Отложить
field_description: Описание
field_done_ratio: Готовность в %%
@ -173,17 +173,17 @@ field_new_password: Новый пароль
field_notes: Примечания
field_onthefly: Создание пользователя на лету
field_parent_title: Родительская страница
field_parent: Родительский проект
field_parent: Родительский проект
field_password_confirmation: Подтверждение
field_password: Пароль
field_port: Порт
field_possible_values: Возможные значения
field_possible_values: Возможные значения
field_priority: Приоритет
field_project: Проект
field_redirect_existing_links: Перенаправить существующие ссылки
field_regexp: Регулярное выражение
field_role: Роль
field_searchable: Доступно для поиска
field_searchable: Доступно для поиска
field_spent_on: Дата
field_start_date: Начало
field_start_page: Стартовая страница
@ -212,7 +212,7 @@ general_fmt_age_plural5: %d гг.
general_fmt_age_plural: %d лет
general_fmt_date: %%d.%%m.%%Y
general_fmt_datetime: %%d.%%m.%%Y %%I:%%M %%p
general_fmt_datetime_short: %%d %%b, %%H:%%M
general_fmt_datetime_short: %%d %%b, %%H:%%M
general_fmt_time: %%H:%%M
general_lang_name: 'Russian (Русский)'
general_pdf_encoding: UTF-8
@ -228,11 +228,11 @@ gui_validation_error_plural: %d ошибок
label_activity: Активность
label_add_another_file: Добавить ещё один файл
label_added_time_by: Добавлено %s %s назад
label_added_time_by: Добавил(а) %s %s назад
label_added: добавлено
label_add_note: Добавить замечание
label_administration: Администрирование
label_age: Возраст
label_age: Возраст
label_ago: дней(я) назад
label_all_time: всё время
label_all_words: Все слова
@ -251,8 +251,8 @@ label_authentication: Аутентификация
label_auth_source_new: Новый режим аутентификации
label_auth_source_plural: Режимы аутентификации
label_auth_source: Режим аутентификации
label_blocked_by: заблокировано
label_blocks: блокирует
label_blocked_by: заблокировано
label_blocks: блокирует
label_board_new: Новый форум
label_board_plural: Форумы
label_board: Форум
@ -266,10 +266,10 @@ label_change_log: Журнал изменений
label_change_plural: Правки
label_change_properties: Изменить свойства
label_changes_details: Подробности по всем изменениям
label_changeset_plural: Наборы изменений
label_changeset_plural: Хранилище
label_change_status: Изменить статус
label_change_view_all: Просмотреть все изменения
label_chronological_order: В хронологическом порядке
label_chronological_order: В хронологическом порядке
label_closed_issues_plural2: закрыто
label_closed_issues_plural5: закрыто
label_closed_issues_plural: закрыто
@ -285,7 +285,7 @@ label_commits_per_author: Изменений на пользователя
label_commits_per_month: Изменений в месяц
label_confirmation: Подтверждение
label_contains: содержит
label_copy_workflow_from: Скопировать последовательность действий из
label_copy_workflow_from: Скопировать последовательность действий из
label_current_status: Текущий статус
label_current_version: Текущая версия
label_custom_field_new: Новое настраиваемое поле
@ -363,7 +363,7 @@ label_issue_status: Статус задачи
label_issue_tracking: Ситуация по задачам
label_issue_updated: Задача обновлена
label_issue_view_all: Просмотреть все задачи
label_issue_watchers: Следящие
label_issue_watchers: Наблюдатели
label_issue: Задача
label_jump_to_a_project: Перейти к проекту...
label_language_based: На основе языка
@ -379,7 +379,7 @@ label_last_week: последняя неделю
label_latest_revision_plural: Последние редакции
label_latest_revision: Последняя редакция
label_ldap_authentication: Авторизация с помощью LDAP
label_less_than_ago: менее, чем дней(я) назад
label_less_than_ago: менее, чем дней(я) назад
label_list: Список
label_loading: Загрузка...
label_logged_as: Вошел как
@ -396,14 +396,14 @@ label_message_posted: Сообщение добавлено
label_me: мне
label_min_max_length: Минимальная - максимальная длина
label_modification: %d изменение
label_modification_plural2: %d изменений
label_modification_plural2: %d изменения
label_modification_plural5: %d изменений
label_modification_plural: %d изменений
label_modified: изменено
label_module_plural: Модули
label_months_from: месяцев(ца) с
label_month: Месяц
label_more_than_ago: более, чем дней(я) назад
label_more_than_ago: более, чем дней(я) назад
label_more: Больше
label_my_account: Моя учетная запись
label_my_page: Моя страница
@ -420,7 +420,7 @@ label_next: Следующий
label_nobody: никто
label_no_change_option: (Нет изменений)
label_no_data: Нет данных для отображения
label_none: отсутствует
label_none: отсутствует
label_not_contains: не содержит
label_not_equals: не соответствует
label_on: 'из'
@ -432,7 +432,7 @@ label_optional_description: Описание (опционально)
label_options: Опции
label_overall_activity: Сводная активность
label_overview: Просмотр
label_password_lost: Восстановление пароля
label_password_lost: Восстановление пароля
label_permissions_report: Отчет о правах доступа
label_permissions: Права доступа
label_per_page: На страницу
@ -456,7 +456,7 @@ label_query_new: Новый запрос
label_query_plural: Сохраненные запросы
label_query: Сохраненный запрос
label_read: Чтение...
label_registered_on: Зарегистрирован(а)
label_registered_on: Зарегистрирован(а)
label_register: Регистрация
label_registration_activation_by_email: активация учетных записей по email
label_registration_automatic_activation: автоматическая активация учетных записей
@ -475,7 +475,7 @@ label_result_plural: Результаты
label_reverse_chronological_order: В обратном порядке
label_revision_plural: Редакции
label_revision: Редакция
label_roadmap_due_in: Вовремя
label_roadmap_due_in: Вовремя
label_roadmap_no_issues: Нет задач для данной версии
label_roadmap_overdue: %s опоздание
label_roadmap: Оперативный план
@ -499,7 +499,7 @@ label_spent_time: Затраченное время
label_start_to_end: с начала к концу
label_start_to_start: с начала к началу
label_statistics: Статистика
label_stay_logged_in: Оставаться в системе
label_stay_logged_in: Оставаться в системе
label_string: Текст
label_subproject_plural: Подпроекты
label_text: Длинный текст
@ -529,7 +529,7 @@ label_version_plural: Версии
label_version: Версия
label_view_diff: Просмотреть отличия
label_view_revisions: Просмотреть редакции
label_watched_issues: Отслеживаемые задачи
label_watched_issues: Отслеживаемые задачи
label_week: Неделя
label_wiki_edit_plural: Редактирования Wiki
label_wiki_edit: Редактирование Wiki
@ -545,18 +545,18 @@ mail_body_account_information_external: Вы можете использоват
mail_body_account_information: Информация о Вашей учетной записи
mail_body_lost_password: 'Для изменения пароля зайдите по следующей ссылке:'
mail_body_register: 'Для активации учетной записи зайдите по следующей ссылке:'
mail_body_reminder: "%d назначенных на вас задач на следующие %d дней:"
mail_body_reminder: "%d назначенных на Вас задач на следующие %d дней:"
mail_subject_account_activation_request: Запрос на активацию пользователя в системе %s
mail_subject_lost_password: Ваш %s пароль
mail_subject_register: Активация учетной записи %s
mail_subject_reminder: "%d назначенных на вас задач в ближайшие дни"
mail_subject_reminder: "%d назначенных на Вас задач в ближайшие дни"
notice_account_activated: Ваша учетная запись активирована. Вы можете войти.
notice_account_invalid_creditentials: Неправильное имя пользователя или пароль
notice_account_lost_email_sent: Вам отправлено письмо с инструкциями по выбору нового пароля.
notice_account_password_updated: Пароль успешно обновлен.
notice_account_pending: "Ваша учетная запись уже создан и ожидает подтверждения администратора."
notice_account_register_done: Учетная запись успешно создана. Для активации Вашей учетной записи зайдите по ссылке, которая выслана вам по электронной почте.
notice_account_pending: "Ваша учетная запись уже создана и ожидает подтверждения администратора."
notice_account_register_done: Учетная запись успешно создана. Для активации Вашей учетной записи зайдите по ссылке, которая выслана Вам по электронной почте.
notice_account_unknown_email: Неизвестный пользователь.
notice_account_updated: Учетная запись успешно обновлена.
notice_account_wrong_password: Неверный пароль
@ -569,14 +569,14 @@ notice_feeds_access_key_reseted: Ваш ключ доступа RSS был пе
notice_file_not_found: Страница, на которую Вы пытаетесь зайти, не существует или удалена.
notice_locking_conflict: Информация обновлена другим пользователем.
notice_no_issue_selected: "Не выбрано ни одной задачи! Пожалуйста, отметьте задачи, которые Вы хотите отредактировать."
notice_not_authorized: У вас нет прав для посещения данной страницы.
notice_not_authorized: У Вас нет прав для посещения данной страницы.
notice_successful_connection: Подключение успешно установлено.
notice_successful_create: Создание успешно завершено.
notice_successful_delete: Удаление успешно завершено.
notice_successful_update: Обновление успешно завершено.
notice_unable_delete_version: Невозможно удалить версию.
project_module_boards: Форумы
project_module_boards: Форумы
project_module_documents: Документы
project_module_files: Файлы
project_module_issue_tracking: Задачи
@ -586,14 +586,14 @@ project_module_time_tracking: Учет времени
project_module_wiki: Wiki
setting_activity_days_default: Количество дней, отображаемых в Активности
setting_app_subtitle: Подзаголовок приложения
setting_app_subtitle: Подзаголовок приложения
setting_app_title: Название приложения
setting_attachment_max_size: Максимальный размер вложения
setting_autofetch_changesets: Автоматически следить за изменениями хранилища
setting_autologin: Автоматический вход
setting_bcc_recipients: Использовать скрытые списки (bcc)
setting_commit_fix_keywords: Назначение ключевых слов
setting_commit_logs_encoding: Кодировка добавляемых сообщений
setting_commit_logs_encoding: Кодировка комментариев в хранилище
setting_commit_ref_keywords: Ключевые слова для поиска
setting_cross_project_issue_relations: Разрешить пересечение задач по проектам
setting_date_format: Формат даты
@ -617,15 +617,15 @@ setting_self_registration: Возможна саморегистрация
setting_sequential_project_identifiers: Генерировать последовательные идентификаторы проектов
setting_sys_api_enabled: Разрешить WS для управления хранилищем
setting_text_formatting: Форматирование текста
setting_time_format: Формат времени
setting_time_format: Формат времени
setting_user_format: Формат отображения имени
setting_welcome_text: Текст приветствия
setting_wiki_compression: Сжатие истории Wiki
status_active: активен
status_locked: закрыт
status_registered: зарегистрирован
text_are_you_sure: Подтвердите
text_assign_time_entries_to_project: Прикрепить зарегистрированное время к проекту
text_caracters_maximum: Максимум %d символов(а).
@ -640,7 +640,7 @@ text_enumeration_destroy_question: '%d объект(а,ов) связаны с
text_file_repository_writable: Хранилище с доступом на запись
text_issue_added: По задаче %s был создан отчет (%s).
text_issue_category_destroy_assignments: Удалить назначения категории
text_issue_category_destroy_question: Несколько задач (%d) назначено в данную категорию. Что вы хотите предпринять?
text_issue_category_destroy_question: Несколько задач (%d) назначено в данную категорию. Что Вы хотите предпринять?
text_issue_category_reassign_to: Переназначить задачи для данной категории
text_issues_destroy_confirmation: 'Вы уверены, что хотите удалить выбранные задачи?'
text_issues_ref_in_commit_messages: Сопоставление и изменение статуса задач исходя из текста сообщений
@ -666,7 +666,9 @@ text_tip_task_begin_end_day: начало задачи и окончание е
text_tip_task_end_day: дата завершения задачи
text_tracker_no_workflow: Для этого трекера последовательность действий не определена
text_unallowed_characters: Запрещенные символы
text_user_mail_option: "Для невыбранных проектов, Вы будете получать уведомления только о том что просматриваете или в чем участвуете (например, вопросы автором которых вы являетесь или которые вам назначены)."
text_user_mail_option: "Для невыбранных проектов, Вы будете получать уведомления только о том что просматриваете или в чем участвуете (например, вопросы, автором которых Вы являетесь или которые Вам назначены)."
text_user_wrote: '%s написал(а):'
text_wiki_destroy_confirmation: Вы уверены, что хотите удалить данную вики и все содержимое?
text_wiki_destroy_confirmation: Вы уверены, что хотите удалить данную Wiki и все содержимое?
text_workflow_edit: Выберите роль и трекер для редактирования последовательности состояний
label_renamed: renamed
label_copied: copied

View File

@ -639,3 +639,5 @@ setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
setting_sequential_project_identifiers: Generate sequential project identifiers
notice_unable_delete_version: Unable to delete version
label_renamed: renamed
label_copied: copied

View File

@ -639,3 +639,5 @@ setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
setting_sequential_project_identifiers: Generate sequential project identifiers
notice_unable_delete_version: Unable to delete version
label_renamed: renamed
label_copied: copied

View File

@ -641,3 +641,5 @@ setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
setting_sequential_project_identifiers: Generate sequential project identifiers
notice_unable_delete_version: Unable to delete version
label_renamed: renamed
label_copied: copied

View File

@ -639,3 +639,5 @@ setting_mail_handler_api_key: API key
setting_commit_logs_encoding: Commit messages encoding
general_csv_decimal_separator: '.'
notice_unable_delete_version: Unable to delete version
label_renamed: renamed
label_copied: copied

View File

@ -640,3 +640,5 @@ setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
setting_sequential_project_identifiers: Generate sequential project identifiers
notice_unable_delete_version: Unable to delete version
label_renamed: renamed
label_copied: copied

View File

@ -77,6 +77,7 @@ notice_failed_to_save_issues: " %d 個項目儲存失敗 (總共選取 %d 個項
notice_no_issue_selected: "未選擇任何項目!請勾選您想要編輯的項目。"
notice_account_pending: "您的帳號已經建立,正在等待管理員的審核。"
notice_default_data_loaded: 預設組態已載入成功。
notice_unable_delete_version: 無法刪除版本。
error_can_t_load_default_data: "無法載入預設組態: %s"
error_scm_not_found: SCM 儲存庫中找不到這個專案或版本。
@ -638,4 +639,5 @@ default_activity_development: 開發
enumeration_issue_priorities: 項目優先權
enumeration_doc_categories: 文件分類
enumeration_activities: 活動 (時間追蹤)
notice_unable_delete_version: Unable to delete version
label_renamed: renamed
label_copied: copied

View File

@ -77,6 +77,7 @@ notice_failed_to_save_issues: "%d 个问题保存失败(共选择 %d 个问题
notice_no_issue_selected: "未选择任何问题!请选择您要编辑的问题。"
notice_account_pending: "您的帐号已被成功创建,正在等待管理员的审核。"
notice_default_data_loaded: 成功载入默认设置。
notice_unable_delete_version: 无法删除版本
error_can_t_load_default_data: "无法载入默认设置:%s"
error_scm_not_found: "版本库中不存在该条目和(或)其修订版本。"
@ -219,6 +220,7 @@ setting_display_subprojects_issues: 在项目页面上默认显示子项目的
setting_enabled_scm: 启用 SCM
setting_mail_handler_api_enabled: 启用用于接收邮件的Web Service
setting_mail_handler_api_key: API key
setting_sequential_project_identifiers: 顺序产生项目标识
project_module_issue_tracking: 问题跟踪
project_module_time_tracking: 时间跟踪
@ -561,6 +563,7 @@ button_copy: 复制
button_annotate: 追溯
button_update: 更新
button_configure: 配置
button_quote: 引用
status_active: 活动的
status_registered: 已注册
@ -636,6 +639,5 @@ default_activity_development: 开发
enumeration_issue_priorities: 问题优先级
enumeration_doc_categories: 文档类别
enumeration_activities: 活动(时间跟踪)
button_quote: Quote
setting_sequential_project_identifiers: Generate sequential project identifiers
notice_unable_delete_version: Unable to delete version
label_renamed: renamed
label_copied: copied

View File

@ -788,10 +788,10 @@ class RedCloth3 < String
":
([\w\/]\S+?) # $url
(\/)? # $slash
([^\w\/;]*?) # $post
([^\w\=\/;\(\)]*?) # $post
(?=<|\s|$)
/x
#"
def inline_textile_link( text )
text.gsub!( LINK_RE ) do |m|
pre,atts,text,title,url,slash,post = $~[1..7]
@ -799,6 +799,12 @@ class RedCloth3 < String
url, url_title = check_refs( url )
title ||= url_title
# Idea below : an URL with unbalanced parethesis and
# ending by ')' is put into external parenthesis
if ( url[-1]==?) and ((url.count("(") - url.count(")")) < 0 ) )
url=url[0..-2] # discard closing parenth from url
post = ")"+post # add closing parenth to post
end
atts = pba( atts )
atts = " href=\"#{ url }#{ slash }\"#{ atts }"
atts << " title=\"#{ title }\"" if title

View File

@ -144,7 +144,7 @@ module Redmine
(\S+?) # url
(\/)? # slash
)
([^\w\=\/;]*?) # post
([^\w\=\/;\(\)]*?) # post
(?=<|\s|$)
}x unless const_defined?(:AUTO_LINK_RE)
@ -156,7 +156,13 @@ module Redmine
# don't replace URL's that are already linked
# and URL's prefixed with ! !> !< != (textile images)
all
else
else
# Idea below : an URL with unbalanced parethesis and
# ending by ')' is put into external parenthesis
if ( url[-1]==?) and ((url.count("(") - url.count(")")) < 0 ) )
url=url[0..-2] # discard closing parenth from url
post = ")"+post # add closing parenth to post
end
%(#{leading}<a class="external" href="#{proto=="www."?"http://www.":proto}#{url}">#{proto + url}</a>#{post})
end
end

Binary file not shown.

After

Width:  |  Height:  |  Size: 286 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 289 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 308 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 294 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@ -0,0 +1,127 @@
// ** I18N
// Calendar EN language
// Author: Mihai Bazon, <mihai_bazon@yahoo.com>
// Encoding: any
// Distributed under the same terms as the calendar itself.
// For translators: please use UTF-8 if possible. We strongly believe that
// Unicode is the answer to a real internationalized world. Also please
// include your contact information in the header, as can be seen above.
// full day names
Calendar._DN = new Array
("Diumenge",
"Dilluns",
"Dimarts",
"Dimecres",
"Dijous",
"Divendres",
"Dissabte",
"Diumenge");
// Please note that the following array of short day names (and the same goes
// for short month names, _SMN) isn't absolutely necessary. We give it here
// for exemplification on how one can customize the short day names, but if
// they are simply the first N letters of the full name you can simply say:
//
// Calendar._SDN_len = N; // short day name length
// Calendar._SMN_len = N; // short month name length
//
// If N = 3 then this is not needed either since we assume a value of 3 if not
// present, to be compatible with translation files that were written before
// this feature.
// short day names
Calendar._SDN = new Array
("dg",
"dl",
"dt",
"dc",
"dj",
"dv",
"ds",
"dg");
// First day of the week. "0" means display Sunday first, "1" means display
// Monday first, etc.
Calendar._FD = 0;
// full month names
Calendar._MN = new Array
("Gener",
"Febrer",
"Març",
"Abril",
"Maig",
"Juny",
"Juliol",
"Agost",
"Setembre",
"Octubre",
"Novembre",
"Desembre");
// short month names
Calendar._SMN = new Array
("Gen",
"Feb",
"Mar",
"Abr",
"Mai",
"Jun",
"Jul",
"Ago",
"Set",
"Oct",
"Nov",
"Des");
// tooltips
Calendar._TT = {};
Calendar._TT["INFO"] = "Quant al calendari";
Calendar._TT["ABOUT"] =
"Selector DHTML de data/hora\n" +
"(c) dynarch.com 2002-2005 / Autor: Mihai Bazon\n" + // don't translate this this ;-)
"Per a aconseguir l'última versió visiteu: http://www.dynarch.com/projects/calendar/\n" +
"Distribuït sota la llicència GNU LGPL. Vegeu http://gnu.org/licenses/lgpl.html per a més detalls." +
"\n\n" +
"Selecció de la data:\n" +
"- Utilitzeu els botons \xab, \xbb per a seleccionar l'any\n" +
"- Utilitzeu els botons " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " per a selecciona el mes\n" +
"- Mantingueu premut el botó del ratolí sobre qualsevol d'aquests botons per a uns selecció més ràpida.";
Calendar._TT["ABOUT_TIME"] = "\n\n" +
"Selecció de l'hora:\n" +
"- Feu clic en qualsevol part de l'hora per a incrementar-la\n" +
"- o premeu majúscules per a disminuir-la\n" +
"- o feu clic i arrossegueu per a una selecció més ràpida.";
Calendar._TT["PREV_YEAR"] = "Any anterior (mantenir per menú)";
Calendar._TT["PREV_MONTH"] = "Mes anterior (mantenir per menú)";
Calendar._TT["GO_TODAY"] = "Anar a avui";
Calendar._TT["NEXT_MONTH"] = "Mes següent (mantenir per menú)";
Calendar._TT["NEXT_YEAR"] = "Any següent (mantenir per menú)";
Calendar._TT["SEL_DATE"] = "Sel·lecciona data";
Calendar._TT["DRAG_TO_MOVE"] = "Arrossega per a moure";
Calendar._TT["PART_TODAY"] = " (avui)";
// the following is to inform that "%s" is to be the first day of week
// %s will be replaced with the day name.
Calendar._TT["DAY_FIRST"] = "Primer mostra el %s";
// This may be locale-dependent. It specifies the week-end days, as an array
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
// means Monday, etc.
Calendar._TT["WEEKEND"] = "0,6";
Calendar._TT["CLOSE"] = "Tanca";
Calendar._TT["TODAY"] = "Avui";
Calendar._TT["TIME_PART"] = "(Majúscules-)Feu clic o arrossegueu per a canviar el valor";
// date formats
Calendar._TT["DEF_DATE_FORMAT"] = "%d-%m-%Y";
Calendar._TT["TT_DATE_FORMAT"] = "%A, %e de %B de %Y";
Calendar._TT["WK"] = "set";
Calendar._TT["TIME"] = "Hora:";

View File

@ -0,0 +1,16 @@
jsToolBar.strings = {};
jsToolBar.strings['Strong'] = 'Negreta';
jsToolBar.strings['Italic'] = 'Cursiva';
jsToolBar.strings['Underline'] = 'Subratllat';
jsToolBar.strings['Deleted'] = 'Barrat';
jsToolBar.strings['Code'] = 'Codi en línia';
jsToolBar.strings['Heading 1'] = 'Encapçalament 1';
jsToolBar.strings['Heading 2'] = 'Encapçalament 2';
jsToolBar.strings['Heading 3'] = 'Encapçalament 3';
jsToolBar.strings['Unordered list'] = 'Llista sense ordre';
jsToolBar.strings['Ordered list'] = 'Llista ordenada';
jsToolBar.strings['Quote'] = 'Cometes';
jsToolBar.strings['Unquote'] = 'Sense cometes';
jsToolBar.strings['Preformatted text'] = 'Text formatat';
jsToolBar.strings['Wiki link'] = 'Enllaça a una pàgina Wiki';
jsToolBar.strings['Image'] = 'Imatge';

View File

@ -582,7 +582,6 @@ vertical-align: middle;
.icon-mypage { background-image: url(../images/user_page.png); }
.icon-admin { background-image: url(../images/admin.png); }
.icon-projects { background-image: url(../images/projects.png); }
.icon-logout { background-image: url(../images/logout.png); }
.icon-help { background-image: url(../images/help.png); }
.icon-attachment { background-image: url(../images/attachment.png); }
.icon-index { background-image: url(../images/index.png); }

View File

@ -60,15 +60,9 @@
.jstb_del {
background-image: url(../images/jstoolbar/bt_del.png);
}
.jstb_quote {
background-image: url(../images/jstoolbar/bt_quote.png);
}
.jstb_code {
background-image: url(../images/jstoolbar/bt_code.png);
}
.jstb_br {
background-image: url(../images/jstoolbar/bt_br.png);
}
.jstb_h1 {
background-image: url(../images/jstoolbar/bt_h1.png);
}

View File

@ -1,4 +1,32 @@
div.changeset-changes ul { margin: 0; padding: 0; }
div.changeset-changes ul > ul { margin-left: 18px; padding: 0; }
li.change {
list-style-type:none;
background-image: url(../images/bullet_black.png);
background-position: 1px 1px;
background-repeat: no-repeat;
padding-top: 1px;
padding-bottom: 1px;
padding-left: 20px;
margin: 0;
}
li.change.folder { background-image: url(../images/folder_open.png); }
li.change.folder.change-A { background-image: url(../images/folder_open_add.png); }
li.change.folder.change-M { background-image: url(../images/folder_open_orange.png); }
li.change.change-A { background-image: url(../images/bullet_add.png); }
li.change.change-M { background-image: url(../images/bullet_orange.png); }
li.change.change-C { background-image: url(../images/bullet_blue.png); }
li.change.change-R { background-image: url(../images/bullet_purple.png); }
li.change.change-D { background-image: url(../images/bullet_delete.png); }
li.change .copied-from { font-style: italic; color: #999; font-size: 0.9em; }
li.change .copied-from:before { content: " - "}
#changes-legend { float: right; font-size: 0.8em; margin: 0; }
#changes-legend li { float: left; background-position: 5px 0; }
table.filecontent { border: 1px solid #ccc; border-collapse: collapse; width:98%; }
table.filecontent th { border: 1px solid #ccc; background-color: #eee; }
table.filecontent th.filename { background-color: #e4e4d4; text-align: left; padding: 0.2em;}

View File

@ -125,16 +125,18 @@ class RepositoriesSubversionControllerTest < Test::Unit::TestCase
get :revision, :id => 1, :rev => 2
assert_response :success
assert_template 'revision'
assert_tag :tag => 'tr',
:child => { :tag => 'td',
assert_tag :tag => 'ul',
:child => { :tag => 'li',
# link to the entry at rev 2
:child => { :tag => 'a', :attributes => {:href => 'repositories/entry/ecookbook/test/some/path/in/the/repo?rev=2'},
:content => %r{/test/some/path/in/the/repo} }
},
:child => { :tag => 'td',
# link to partial diff
:child => { :tag => 'a', :attributes => { :href => '/repositories/diff/ecookbook/test/some/path/in/the/repo?rev=2' } }
}
:child => { :tag => 'a',
:attributes => {:href => '/repositories/entry/ecookbook/test/some/path/in/the/repo?rev=2'},
:content => 'repo',
# link to partial diff
:sibling => { :tag => 'a',
:attributes => { :href => '/repositories/diff/ecookbook/test/some/path/in/the/repo?rev=2' }
}
}
}
end
def test_revision_with_repository_pointing_to_a_subdirectory
@ -145,11 +147,18 @@ class RepositoriesSubversionControllerTest < Test::Unit::TestCase
get :revision, :id => 1, :rev => 2
assert_response :success
assert_template 'revision'
assert_tag :tag => 'tr',
:child => { :tag => 'td', :content => %r{/test/some/path/in/the/repo} },
:child => { :tag => 'td',
:child => { :tag => 'a', :attributes => { :href => '/repositories/diff/ecookbook/path/in/the/repo?rev=2' } }
}
assert_tag :tag => 'ul',
:child => { :tag => 'li',
# link to the entry at rev 2
:child => { :tag => 'a',
:attributes => {:href => '/repositories/entry/ecookbook/path/in/the/repo?rev=2'},
:content => 'repo',
# link to partial diff
:sibling => { :tag => 'a',
:attributes => { :href => '/repositories/diff/ecookbook/path/in/the/repo?rev=2' }
}
}
}
end
def test_diff

View File

@ -38,10 +38,18 @@ class ApplicationHelperTest < HelperTestCase
'This is a link: http://foo.bar.' => 'This is a link: <a class="external" href="http://foo.bar">http://foo.bar</a>.',
'A link (eg. http://foo.bar).' => 'A link (eg. <a class="external" href="http://foo.bar">http://foo.bar</a>).',
'http://foo.bar/foo.bar#foo.bar.' => '<a class="external" href="http://foo.bar/foo.bar#foo.bar">http://foo.bar/foo.bar#foo.bar</a>.',
'http://www.foo.bar/Test_(foobar)' => '<a class="external" href="http://www.foo.bar/Test_(foobar)">http://www.foo.bar/Test_(foobar)</a>',
'(see inline link : http://www.foo.bar/Test_(foobar))' => '(see inline link : <a class="external" href="http://www.foo.bar/Test_(foobar)">http://www.foo.bar/Test_(foobar)</a>)',
'(see inline link : http://www.foo.bar/Test)' => '(see inline link : <a class="external" href="http://www.foo.bar/Test">http://www.foo.bar/Test</a>)',
'(see inline link : http://www.foo.bar/Test).' => '(see inline link : <a class="external" href="http://www.foo.bar/Test">http://www.foo.bar/Test</a>).',
'(see "inline link":http://www.foo.bar/Test_(foobar))' => '(see <a href="http://www.foo.bar/Test_(foobar)" class="external">inline link</a>)',
'(see "inline link":http://www.foo.bar/Test)' => '(see <a href="http://www.foo.bar/Test" class="external">inline link</a>)',
'(see "inline link":http://www.foo.bar/Test).' => '(see <a href="http://www.foo.bar/Test" class="external">inline link</a>).',
'www.foo.bar' => '<a class="external" href="http://www.foo.bar">www.foo.bar</a>',
'http://foo.bar/page?p=1&t=z&s=' => '<a class="external" href="http://foo.bar/page?p=1&#38;t=z&#38;s=">http://foo.bar/page?p=1&#38;t=z&#38;s=</a>',
'http://foo.bar/page#125' => '<a class="external" href="http://foo.bar/page#125">http://foo.bar/page#125</a>',
'http://foo@www.bar.com' => '<a class="external" href="http://foo@www.bar.com">http://foo@www.bar.com</a>',
'http://foo:bar@www.bar.com' => '<a class="external" href="http://foo:bar@www.bar.com">http://foo:bar@www.bar.com</a>',
'ftp://foo.bar' => '<a class="external" href="ftp://foo.bar">ftp://foo.bar</a>',
}
to_test.each { |text, result| assert_equal "<p>#{result}</p>", textilizable(text) }