This diff has been collapsed as it changes many lines, (644 lines changed) Show them Hide them | |||||
@@ -0,0 +1,644 | |||||
|
1 | _gloc_rule_default: '|n| n==1 ? "" : "_plural" ' | |||
|
2 | ||||
|
3 | actionview_datehelper_select_day_prefix: | |||
|
4 | actionview_datehelper_select_month_names: Gener,Febrer,Març,Abril,Maig,Juny,Juliol,Agost,Setembre,Octubre,Novembre,Desembre | |||
|
5 | actionview_datehelper_select_month_names_abbr: Gen,Feb,Mar,Abr,Mai,Jun,Jul,Ago,Set,Oct,Nov,Dec | |||
|
6 | actionview_datehelper_select_month_prefix: | |||
|
7 | actionview_datehelper_select_year_prefix: | |||
|
8 | actionview_datehelper_time_in_words_day: 1 dia | |||
|
9 | actionview_datehelper_time_in_words_day_plural: %d dies | |||
|
10 | actionview_datehelper_time_in_words_hour_about: aproximadament una hora | |||
|
11 | actionview_datehelper_time_in_words_hour_about_plural: aproximadament %d hores | |||
|
12 | actionview_datehelper_time_in_words_hour_about_single: aproximadament una hora | |||
|
13 | actionview_datehelper_time_in_words_minute: 1 minut | |||
|
14 | actionview_datehelper_time_in_words_minute_half: mig minut | |||
|
15 | actionview_datehelper_time_in_words_minute_less_than: "menys d'un minut" | |||
|
16 | actionview_datehelper_time_in_words_minute_plural: %d minuts | |||
|
17 | actionview_datehelper_time_in_words_minute_single: 1 minut | |||
|
18 | actionview_datehelper_time_in_words_second_less_than: "menys d'un segon" | |||
|
19 | actionview_datehelper_time_in_words_second_less_than_plural: menys de %d segons | |||
|
20 | actionview_instancetag_blank_option: Seleccioneu | |||
|
21 | ||||
|
22 | activerecord_error_inclusion: no està inclòs a la llista | |||
|
23 | activerecord_error_exclusion: està reservat | |||
|
24 | activerecord_error_invalid: no és vàlid | |||
|
25 | activerecord_error_confirmation: la confirmació no coincideix | |||
|
26 | activerecord_error_accepted: "s'ha d'acceptar" | |||
|
27 | activerecord_error_empty: no pot estar buit | |||
|
28 | activerecord_error_blank: no pot estar en blanc | |||
|
29 | activerecord_error_too_long: és massa llarg | |||
|
30 | activerecord_error_too_short: és massa curt | |||
|
31 | activerecord_error_wrong_length: la longitud és incorrecta | |||
|
32 | activerecord_error_taken: "ja s'està utilitzant" | |||
|
33 | activerecord_error_not_a_number: no és un número | |||
|
34 | activerecord_error_not_a_date: no és una data vàlida | |||
|
35 | activerecord_error_greater_than_start_date: ha de ser superior que la data inicial | |||
|
36 | activerecord_error_not_same_project: no pertany al mateix projecte | |||
|
37 | activerecord_error_circular_dependency: Aquesta relació crearia una dependència circular | |||
|
38 | ||||
|
39 | general_fmt_age: %d any | |||
|
40 | general_fmt_age_plural: %d anys | |||
|
41 | general_fmt_date: %%d/%%m/%%Y | |||
|
42 | general_fmt_datetime: %%d/%%m/%%Y %%H:%%M | |||
|
43 | general_fmt_datetime_short: %%d/%%m %%H:%%M | |||
|
44 | general_fmt_time: %%H:%%M | |||
|
45 | general_text_No: 'No' | |||
|
46 | general_text_Yes: 'Si' | |||
|
47 | general_text_no: 'no' | |||
|
48 | general_text_yes: 'si' | |||
|
49 | general_lang_name: 'Català' | |||
|
50 | general_csv_separator: ';' | |||
|
51 | general_csv_decimal_separator: ',' | |||
|
52 | general_csv_encoding: ISO-8859-15 | |||
|
53 | general_pdf_encoding: ISO-8859-15 | |||
|
54 | general_day_names: Dilluns,Dimarts,Dimecres,Dijous,Divendres,Dissabte,Diumenge | |||
|
55 | general_first_day_of_week: '1' | |||
|
56 | ||||
|
57 | notice_account_updated: "El compte s'ha actualitzat correctament." | |||
|
58 | notice_account_invalid_creditentials: Usuari o contrasenya invàlid | |||
|
59 | notice_account_password_updated: "La contrasenya s'ha modificat correctament." | |||
|
60 | notice_account_wrong_password: Contrasenya incorrecta | |||
|
61 | 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." | |||
|
62 | notice_account_unknown_email: Usuari desconegut. | |||
|
63 | notice_can_t_change_password: "Aquest compte utilitza una font d'autenticació externa. No és possible canviar la contrasenya." | |||
|
64 | notice_account_lost_email_sent: "S'ha enviat un correu electrònic amb instruccions per a seleccionar una contrasenya nova." | |||
|
65 | notice_account_activated: "El compte s'ha activat. Ara podeu entrar." | |||
|
66 | notice_successful_create: "S'ha creat correctament." | |||
|
67 | notice_successful_update: "S'ha modificat correctament." | |||
|
68 | notice_successful_delete: "S'ha suprimit correctament." | |||
|
69 | notice_successful_connection: "S'ha connectat correctament." | |||
|
70 | notice_file_not_found: "La pàgina a la que intenteu accedir no existeix o s'ha suprimit." | |||
|
71 | notice_locking_conflict: Un altre usuari ha actualitzat les dades. | |||
|
72 | notice_not_authorized: No teniu permís per a accedir a aquesta pàgina. | |||
|
73 | notice_email_sent: "S'ha enviat un correu electrònic a %s" | |||
|
74 | notice_email_error: "S'ha produït un error en enviar el correu (%s)" | |||
|
75 | notice_feeds_access_key_reseted: "S'ha reiniciat la clau d'accés del RSS." | |||
|
76 | notice_failed_to_save_issues: "No s'han pogut desar %s assumptes de %d seleccionats: %s." | |||
|
77 | notice_no_issue_selected: "No s'ha seleccionat cap assumpte. Activeu els assumptes que voleu editar." | |||
|
78 | notice_account_pending: "S'ha creat el compte i ara està pendent de l'aprovació de l'administrador." | |||
|
79 | notice_default_data_loaded: "S'ha carregat correctament la configuració predeterminada." | |||
|
80 | ||||
|
81 | error_can_t_load_default_data: "No s'ha pogut carregar la configuració predeterminada: %s" | |||
|
82 | error_scm_not_found: "No s'ha trobat l'entrada o la revisió en el dipòsit." | |||
|
83 | error_scm_command_failed: "S'ha produït un error en intentar accedir al dipòsit: %s" | |||
|
84 | error_scm_annotate: "L'entrada no existeix o no s'ha pogut anotar." | |||
|
85 | error_issue_not_found_in_project: "No s'ha trobat l'assumpte o no pertany a aquest projecte" | |||
|
86 | ||||
|
87 | mail_subject_lost_password: Contrasenya de %s | |||
|
88 | mail_body_lost_password: "Per a canviar la contrasenya, feu clic en l'enllaç següent:" | |||
|
89 | mail_subject_register: Activació del compte de %s | |||
|
90 | mail_body_register: "Per a activar el compte, feu clic en l'enllaç següent:" | |||
|
91 | mail_body_account_information_external: Podeu utilitzar el compte «%s» per a entrar. | |||
|
92 | mail_body_account_information: Informació del compte | |||
|
93 | mail_subject_account_activation_request: "Sol·licitud d'activació del compte de %s" | |||
|
94 | mail_body_account_activation_request: "S'ha registrat un usuari nou (%s). El seu compte està pendent d'aprovació:" | |||
|
95 | mail_subject_reminder: "%d assumptes venceran els següents %d dies" | |||
|
96 | mail_body_reminder: "%d assumptes que teniu assignades venceran els següents %d dies:" | |||
|
97 | ||||
|
98 | gui_validation_error: 1 error | |||
|
99 | gui_validation_error_plural: %d errors | |||
|
100 | ||||
|
101 | field_name: Nom | |||
|
102 | field_description: Descripció | |||
|
103 | field_summary: Resum | |||
|
104 | field_is_required: Necessari | |||
|
105 | field_firstname: Nom | |||
|
106 | field_lastname: Cognom | |||
|
107 | field_mail: Correu electrònic | |||
|
108 | field_filename: Fitxer | |||
|
109 | field_filesize: Mida | |||
|
110 | field_downloads: Baixades | |||
|
111 | field_author: Autor | |||
|
112 | field_created_on: Creat | |||
|
113 | field_updated_on: Actualitzat | |||
|
114 | field_field_format: Format | |||
|
115 | field_is_for_all: Per a tots els projectes | |||
|
116 | field_possible_values: Valores possibles | |||
|
117 | field_regexp: Expressió regular | |||
|
118 | field_min_length: Longitud mínima | |||
|
119 | field_max_length: Longitud màxima | |||
|
120 | field_value: Valor | |||
|
121 | field_category: Categoria | |||
|
122 | field_title: Títol | |||
|
123 | field_project: Projecte | |||
|
124 | field_issue: Assumpte | |||
|
125 | field_status: Estat | |||
|
126 | field_notes: Notes | |||
|
127 | field_is_closed: Assumpte tancat | |||
|
128 | field_is_default: Estat predeterminat | |||
|
129 | field_tracker: Seguidor | |||
|
130 | field_subject: Tema | |||
|
131 | field_due_date: Data de venciment | |||
|
132 | field_assigned_to: Assignat a | |||
|
133 | field_priority: Prioritat | |||
|
134 | field_fixed_version: Versió objectiu | |||
|
135 | field_user: Usuari | |||
|
136 | field_role: Rol | |||
|
137 | field_homepage: Pàgina web | |||
|
138 | field_is_public: Públic | |||
|
139 | field_parent: Subprojecte de | |||
|
140 | field_is_in_chlog: Assumptes mostrats en el registre de canvis | |||
|
141 | field_is_in_roadmap: Assumptes mostrats en la planificació | |||
|
142 | field_login: Entrada | |||
|
143 | field_mail_notification: Notificacions per correu electrònic | |||
|
144 | field_admin: Administrador | |||
|
145 | field_last_login_on: Última connexió | |||
|
146 | field_language: Idioma | |||
|
147 | field_effective_date: Data | |||
|
148 | field_password: Contrasenya | |||
|
149 | field_new_password: Contrasenya nova | |||
|
150 | field_password_confirmation: Confirmació | |||
|
151 | field_version: Versió | |||
|
152 | field_type: Tipus | |||
|
153 | field_host: Ordinador | |||
|
154 | field_port: Port | |||
|
155 | field_account: Compte | |||
|
156 | field_base_dn: Base DN | |||
|
157 | field_attr_login: "Atribut d'entrada" | |||
|
158 | field_attr_firstname: Atribut del nom | |||
|
159 | field_attr_lastname: Atribut del cognom | |||
|
160 | field_attr_mail: Atribut del correu electrònic | |||
|
161 | field_onthefly: "Creació de l'usuari «al vol»" | |||
|
162 | field_start_date: Inici | |||
|
163 | field_done_ratio: %% realitzat | |||
|
164 | field_auth_source: "Mode d'autenticació" | |||
|
165 | field_hide_mail: "Oculta l'adreça de correu electrònic" | |||
|
166 | field_comment: Comentari | |||
|
167 | field_url: URL | |||
|
168 | field_start_page: Pàgina inicial | |||
|
169 | field_subproject: Subprojecte | |||
|
170 | field_hours: Hores | |||
|
171 | field_activity: Activitat | |||
|
172 | field_spent_on: Data | |||
|
173 | field_identifier: Identificador | |||
|
174 | field_is_filter: "S'ha utilitzat com a filtre" | |||
|
175 | field_issue_to_id: Assumpte relacionat | |||
|
176 | field_delay: Retard | |||
|
177 | field_assignable: Es poden assignar assumptes a aquest rol | |||
|
178 | field_redirect_existing_links: Redirigeix els enllaços existents | |||
|
179 | field_estimated_hours: Temps previst | |||
|
180 | field_column_names: Columnes | |||
|
181 | field_time_zone: Zona horària | |||
|
182 | field_searchable: Es pot cercar | |||
|
183 | field_default_value: Valor predeterminat | |||
|
184 | field_comments_sorting: Mostra els comentaris | |||
|
185 | field_parent_title: Pàgina pare | |||
|
186 | ||||
|
187 | setting_app_title: "Títol de l'aplicació" | |||
|
188 | setting_app_subtitle: "Subtítol de l'aplicació" | |||
|
189 | setting_welcome_text: Text de benvinguda | |||
|
190 | setting_default_language: Idioma predeterminat | |||
|
191 | setting_login_required: Es necessita autenticació | |||
|
192 | setting_self_registration: Registre automàtic | |||
|
193 | setting_attachment_max_size: Mida màxima dels adjunts | |||
|
194 | setting_issues_export_limit: "Límit d'exportació d'assumptes" | |||
|
195 | setting_mail_from: "Adreça de correu electrònic d'emissió" | |||
|
196 | setting_bcc_recipients: Vincula els destinataris de les còpies amb carbó (bcc) | |||
|
197 | setting_host_name: "Nom de l'ordinador" | |||
|
198 | setting_text_formatting: Format del text | |||
|
199 | setting_wiki_compression: "Comprimeix l'historial del wiki" | |||
|
200 | setting_feeds_limit: Límit de contingut del canal | |||
|
201 | setting_default_projects_public: Els projectes nous són públics per defecte | |||
|
202 | setting_autofetch_changesets: Omple automàticament les publicacions | |||
|
203 | setting_sys_api_enabled: Habilita el WS per a la gestió del dipòsit | |||
|
204 | setting_commit_ref_keywords: Paraules claus per a la referència | |||
|
205 | setting_commit_fix_keywords: Paraules claus per a la correcció | |||
|
206 | setting_autologin: Entrada automàtica | |||
|
207 | setting_date_format: Format de la data | |||
|
208 | setting_time_format: Format de hora | |||
|
209 | setting_cross_project_issue_relations: "Permet les relacions d'assumptes entre projectes" | |||
|
210 | setting_issue_list_default_columns: "Columnes mostrades per defecte en la llista d'assumptes" | |||
|
211 | setting_repositories_encodings: Codificacions del dipòsit | |||
|
212 | setting_emails_footer: Peu dels correus electrònics | |||
|
213 | setting_protocol: Protocol | |||
|
214 | setting_per_page_options: Opcions dels objectes per pàgina | |||
|
215 | setting_user_format: "Format de com mostrar l'usuari" | |||
|
216 | setting_activity_days_default: "Dies a mostrar l'activitat del projecte" | |||
|
217 | setting_display_subprojects_issues: "Mostra els assumptes d'un subprojecte en el projecte pare per defecte" | |||
|
218 | setting_enabled_scm: "Habilita l'SCM" | |||
|
219 | setting_mail_handler_api_enabled: "Habilita el WS per correus electrònics d'entrada" | |||
|
220 | setting_mail_handler_api_key: Clau API | |||
|
221 | ||||
|
222 | project_module_issue_tracking: "Seguidor d'assumptes" | |||
|
223 | project_module_time_tracking: Seguidor de temps | |||
|
224 | project_module_news: Noticies | |||
|
225 | project_module_documents: Documents | |||
|
226 | project_module_files: Fitxers | |||
|
227 | project_module_wiki: Wiki | |||
|
228 | project_module_repository: Dipòsit | |||
|
229 | project_module_boards: Taulers | |||
|
230 | ||||
|
231 | label_user: Usuari | |||
|
232 | label_user_plural: Usuaris | |||
|
233 | label_user_new: Usuari nou | |||
|
234 | label_project: Projecte | |||
|
235 | label_project_new: Projecte nou | |||
|
236 | label_project_plural: Projectes | |||
|
237 | label_project_all: Tots els projectes | |||
|
238 | label_project_latest: Els últims projectes | |||
|
239 | label_issue: Assumpte | |||
|
240 | label_issue_new: Assumpte nou | |||
|
241 | label_issue_plural: Assumptes | |||
|
242 | label_issue_view_all: Visualitza tots els assumptes | |||
|
243 | label_issues_by: Assumptes per %s | |||
|
244 | label_issue_added: Assumpte afegit | |||
|
245 | label_issue_updated: Assumpte actualitzat | |||
|
246 | label_document: Document | |||
|
247 | label_document_new: Document nou | |||
|
248 | label_document_plural: Documents | |||
|
249 | label_document_added: Document afegit | |||
|
250 | label_role: Rol | |||
|
251 | label_role_plural: Rols | |||
|
252 | label_role_new: Rol nou | |||
|
253 | label_role_and_permissions: Rols i permisos | |||
|
254 | label_member: Membre | |||
|
255 | label_member_new: Membre nou | |||
|
256 | label_member_plural: Membres | |||
|
257 | label_tracker: Seguidor | |||
|
258 | label_tracker_plural: Seguidors | |||
|
259 | label_tracker_new: Seguidor nou | |||
|
260 | label_workflow: Flux de treball | |||
|
261 | label_issue_status: "Estat de l'assumpte" | |||
|
262 | label_issue_status_plural: "Estats de l'assumpte" | |||
|
263 | label_issue_status_new: Estat nou | |||
|
264 | label_issue_category: "Categoria de l'assumpte" | |||
|
265 | label_issue_category_plural: "Categories de l'assumpte" | |||
|
266 | label_issue_category_new: Categoria nova | |||
|
267 | label_custom_field: Camp personalitzat | |||
|
268 | label_custom_field_plural: Camps personalitzats | |||
|
269 | label_custom_field_new: Camp personalitzat nou | |||
|
270 | label_enumerations: Enumeracions | |||
|
271 | label_enumeration_new: Valor nou | |||
|
272 | label_information: Informació | |||
|
273 | label_information_plural: Informació | |||
|
274 | label_please_login: Entreu | |||
|
275 | label_register: Registre | |||
|
276 | label_password_lost: Contrasenya perduda | |||
|
277 | label_home: Inici | |||
|
278 | label_my_page: La meva pàgina | |||
|
279 | label_my_account: El meu compte | |||
|
280 | label_my_projects: Els meus projectes | |||
|
281 | label_administration: Administració | |||
|
282 | label_login: Entra | |||
|
283 | label_logout: Surt | |||
|
284 | label_help: Ajuda | |||
|
285 | label_reported_issues: Assumptes informats | |||
|
286 | label_assigned_to_me_issues: Assumptes assignats a mi | |||
|
287 | label_last_login: Última connexió | |||
|
288 | label_last_updates: Última actualització | |||
|
289 | label_last_updates_plural: %d última actualització | |||
|
290 | label_registered_on: Informat el | |||
|
291 | label_activity: Activitat | |||
|
292 | label_overall_activity: Activitat global | |||
|
293 | label_new: Nou | |||
|
294 | label_logged_as: Heu entrat com a | |||
|
295 | label_environment: Entorn | |||
|
296 | label_authentication: Autenticació | |||
|
297 | label_auth_source: "Mode d'autenticació" | |||
|
298 | label_auth_source_new: "Mode d'autenticació nou" | |||
|
299 | label_auth_source_plural: "Modes d'autenticació" | |||
|
300 | label_subproject_plural: Subprojectes | |||
|
301 | label_and_its_subprojects: %s i els seus subprojectes | |||
|
302 | label_min_max_length: Longitud mín - max | |||
|
303 | label_list: Llist | |||
|
304 | label_date: Data | |||
|
305 | label_integer: Enter | |||
|
306 | label_float: Flotant | |||
|
307 | label_boolean: Booleà | |||
|
308 | label_string: Text | |||
|
309 | label_text: Text llarg | |||
|
310 | label_attribute: Atribut | |||
|
311 | label_attribute_plural: Atributs | |||
|
312 | label_download: %d baixada | |||
|
313 | label_download_plural: %d baixades | |||
|
314 | label_no_data: Sense dades a mostrar | |||
|
315 | label_change_status: "Canvia l'estat" | |||
|
316 | label_history: Historial | |||
|
317 | label_attachment: Fitxer | |||
|
318 | label_attachment_new: Fitxer nou | |||
|
319 | label_attachment_delete: Suprimeix el fitxer | |||
|
320 | label_attachment_plural: Fitxers | |||
|
321 | label_file_added: Fitxer afegit | |||
|
322 | label_report: Informe | |||
|
323 | label_report_plural: Informes | |||
|
324 | label_news: Noticies | |||
|
325 | label_news_new: Afegeix noticies | |||
|
326 | label_news_plural: Noticies | |||
|
327 | label_news_latest: Últimes noticies | |||
|
328 | label_news_view_all: Visualitza totes les noticies | |||
|
329 | label_news_added: Noticies afegides | |||
|
330 | label_change_log: Registre de canvis | |||
|
331 | label_settings: Paràmetres | |||
|
332 | label_overview: Resum | |||
|
333 | label_version: Versió | |||
|
334 | label_version_new: Versió nova | |||
|
335 | label_version_plural: Versions | |||
|
336 | label_confirmation: Confirmació | |||
|
337 | label_export_to: 'També disponible a:' | |||
|
338 | label_read: Llegeix... | |||
|
339 | label_public_projects: Projectes públics | |||
|
340 | label_open_issues: obert | |||
|
341 | label_open_issues_plural: oberts | |||
|
342 | label_closed_issues: tancat | |||
|
343 | label_closed_issues_plural: tancats | |||
|
344 | label_total: Total | |||
|
345 | label_permissions: Permisos | |||
|
346 | label_current_status: Estat actual | |||
|
347 | label_new_statuses_allowed: Nous estats autoritzats | |||
|
348 | label_all: tots | |||
|
349 | label_none: cap | |||
|
350 | label_nobody: ningú | |||
|
351 | label_next: Següent | |||
|
352 | label_previous: Anterior | |||
|
353 | label_used_by: Utilitzat per | |||
|
354 | label_details: Detalls | |||
|
355 | label_add_note: Afegeix una nota | |||
|
356 | label_per_page: Per pàgina | |||
|
357 | label_calendar: Calendari | |||
|
358 | label_months_from: mesos des de | |||
|
359 | label_gantt: Gantt | |||
|
360 | label_internal: Intern | |||
|
361 | label_last_changes: últims %d canvis | |||
|
362 | label_change_view_all: Visualitza tots els canvis | |||
|
363 | label_personalize_page: Personalitza aquesta pàgina | |||
|
364 | label_comment: Comentari | |||
|
365 | label_comment_plural: Comentaris | |||
|
366 | label_comment_add: Afegeix un comentari | |||
|
367 | label_comment_added: Comentari afegit | |||
|
368 | label_comment_delete: Suprimeix comentaris | |||
|
369 | label_query: Consulta personalitzada | |||
|
370 | label_query_plural: Consultes personalitzades | |||
|
371 | label_query_new: Consulta nova | |||
|
372 | label_filter_add: Afegeix un filtre | |||
|
373 | label_filter_plural: Filtres | |||
|
374 | label_equals: és | |||
|
375 | label_not_equals: no és | |||
|
376 | label_in_less_than: en menys de | |||
|
377 | label_in_more_than: en més de | |||
|
378 | label_in: en | |||
|
379 | label_today: avui | |||
|
380 | label_all_time: tot el temps | |||
|
381 | label_yesterday: ahir | |||
|
382 | label_this_week: aquesta setmana | |||
|
383 | label_last_week: "l'última setmana" | |||
|
384 | label_last_n_days: els últims %d dies | |||
|
385 | label_this_month: aquest més | |||
|
386 | label_last_month: "l'últim més" | |||
|
387 | label_this_year: aquest any | |||
|
388 | label_date_range: Abast de les dates | |||
|
389 | label_less_than_ago: fa menys de | |||
|
390 | label_more_than_ago: fa més de | |||
|
391 | label_ago: fa | |||
|
392 | label_contains: conté | |||
|
393 | label_not_contains: no conté | |||
|
394 | label_day_plural: dies | |||
|
395 | label_repository: Dipòsit | |||
|
396 | label_repository_plural: Dipòsits | |||
|
397 | label_browse: Navega | |||
|
398 | label_modification: %d canvi | |||
|
399 | label_modification_plural: %d canvis | |||
|
400 | label_revision: Revisió | |||
|
401 | label_revision_plural: Revisions | |||
|
402 | label_associated_revisions: Revisions associades | |||
|
403 | label_added: afegit | |||
|
404 | label_modified: modificat | |||
|
405 | label_deleted: suprimit | |||
|
406 | label_latest_revision: Última revisió | |||
|
407 | label_latest_revision_plural: Últimes revisions | |||
|
408 | label_view_revisions: Visualitza les revisions | |||
|
409 | label_max_size: Mida màxima | |||
|
410 | label_on: 'de' | |||
|
411 | label_sort_highest: Mou a la part superior | |||
|
412 | label_sort_higher: Mou cap amunt | |||
|
413 | label_sort_lower: Mou cap avall | |||
|
414 | label_sort_lowest: Mou a la part inferior | |||
|
415 | label_roadmap: Planificació | |||
|
416 | label_roadmap_due_in: Venç en | |||
|
417 | label_roadmap_overdue: %s tard | |||
|
418 | label_roadmap_no_issues: No hi ha assumptes per a aquesta versió | |||
|
419 | label_search: Cerca | |||
|
420 | label_result_plural: Resultats | |||
|
421 | label_all_words: Totes les paraules | |||
|
422 | label_wiki: Wiki | |||
|
423 | label_wiki_edit: Edició wiki | |||
|
424 | label_wiki_edit_plural: Edicions wiki | |||
|
425 | label_wiki_page: Pàgina wiki | |||
|
426 | label_wiki_page_plural: Pàgines wiki | |||
|
427 | label_index_by_title: Índex per títol | |||
|
428 | label_index_by_date: Índex per data | |||
|
429 | label_current_version: Versió actual | |||
|
430 | label_preview: Previsualització | |||
|
431 | label_feed_plural: Canals | |||
|
432 | label_changes_details: Detalls de tots els canvis | |||
|
433 | label_issue_tracking: "Seguiment d'assumptes" | |||
|
434 | label_spent_time: Temps invertit | |||
|
435 | label_f_hour: %.2f hora | |||
|
436 | label_f_hour_plural: %.2f hores | |||
|
437 | label_time_tracking: Temps de seguiment | |||
|
438 | label_change_plural: Canvis | |||
|
439 | label_statistics: Estadístiques | |||
|
440 | label_commits_per_month: Publicacions per mes | |||
|
441 | label_commits_per_author: Publicacions per autor | |||
|
442 | label_view_diff: Visualitza les diferències | |||
|
443 | label_diff_inline: en línia | |||
|
444 | label_diff_side_by_side: costat per costat | |||
|
445 | label_options: Opcions | |||
|
446 | label_copy_workflow_from: Copia el flux de treball des de | |||
|
447 | label_permissions_report: Informe de permisos | |||
|
448 | label_watched_issues: Assumptes vigilats | |||
|
449 | label_related_issues: Assumptes relacionats | |||
|
450 | label_applied_status: Estat aplicat | |||
|
451 | label_loading: "S'està carregant..." | |||
|
452 | label_relation_new: Relació nova | |||
|
453 | label_relation_delete: Suprimeix la relació | |||
|
454 | label_relates_to: relacionat amb | |||
|
455 | label_duplicates: duplicats | |||
|
456 | label_duplicated_by: duplicat per | |||
|
457 | label_blocks: bloqueja | |||
|
458 | label_blocked_by: bloquejats per | |||
|
459 | label_precedes: anterior a | |||
|
460 | label_follows: posterior a | |||
|
461 | label_end_to_start: final al començament | |||
|
462 | label_end_to_end: final al final | |||
|
463 | label_start_to_start: començament al començament | |||
|
464 | label_start_to_end: començament al final | |||
|
465 | label_stay_logged_in: "Manté l'entrada en" | |||
|
466 | label_disabled: inhabilitat | |||
|
467 | label_show_completed_versions: Mostra les versions completes | |||
|
468 | label_me: jo mateix | |||
|
469 | label_board: Fòrum | |||
|
470 | label_board_new: Fòrum nou | |||
|
471 | label_board_plural: Fòrums | |||
|
472 | label_topic_plural: Temes | |||
|
473 | label_message_plural: Missatges | |||
|
474 | label_message_last: Últim missatge | |||
|
475 | label_message_new: Missatge nou | |||
|
476 | label_message_posted: Missatge afegit | |||
|
477 | label_reply_plural: Respostes | |||
|
478 | label_send_information: "Envia la informació del compte a l'usuari" | |||
|
479 | label_year: Any | |||
|
480 | label_month: Mes | |||
|
481 | label_week: Setmana | |||
|
482 | label_date_from: Des de | |||
|
483 | label_date_to: A | |||
|
484 | label_language_based: "Basat en l'idioma de l'usuari" | |||
|
485 | label_sort_by: Ordena per %s | |||
|
486 | label_send_test_email: Envia un correu electrònic de prova | |||
|
487 | label_feeds_access_key_created_on: "Clau d'accés del RSS creada fa %s" | |||
|
488 | label_module_plural: Mòduls | |||
|
489 | label_added_time_by: Afegit per %s fa %s | |||
|
490 | label_updated_time: Actualitzat fa %s | |||
|
491 | label_jump_to_a_project: Salta al projecte... | |||
|
492 | label_file_plural: Fitxers | |||
|
493 | label_changeset_plural: Conjunt de canvis | |||
|
494 | label_default_columns: Columnes predeterminades | |||
|
495 | label_no_change_option: (sense canvis) | |||
|
496 | label_bulk_edit_selected_issues: Edita en bloc els assumptes seleccionats | |||
|
497 | label_theme: Tema | |||
|
498 | label_default: Predeterminat | |||
|
499 | label_search_titles_only: Cerca només en els títols | |||
|
500 | label_user_mail_option_all: "Per qualsevol esdeveniment en tots els meus projectes" | |||
|
501 | label_user_mail_option_selected: "Per qualsevol esdeveniment en els projectes seleccionats..." | |||
|
502 | label_user_mail_option_none: "Només per les coses que vigilo o hi estic implicat" | |||
|
503 | label_user_mail_no_self_notified: "No vull ser notificat pels canvis que faig jo mateix" | |||
|
504 | label_registration_activation_by_email: activació del compte per correu electrònic | |||
|
505 | label_registration_manual_activation: activació del compte manual | |||
|
506 | label_registration_automatic_activation: activació del compte automàtica | |||
|
507 | label_display_per_page: 'Per pàgina: %s' | |||
|
508 | label_age: Edat | |||
|
509 | label_change_properties: Canvia les propietats | |||
|
510 | label_general: General | |||
|
511 | label_more: Més | |||
|
512 | label_scm: SCM | |||
|
513 | label_plugins: Connectors | |||
|
514 | label_ldap_authentication: Autenticació LDAP | |||
|
515 | label_downloads_abbr: Baixades | |||
|
516 | label_optional_description: Descripció opcional | |||
|
517 | label_add_another_file: Afegeix un altre fitxer | |||
|
518 | label_preferences: Preferències | |||
|
519 | label_chronological_order: En ordre cronològic | |||
|
520 | label_reverse_chronological_order: En ordre cronològic invers | |||
|
521 | label_planning: Planificació | |||
|
522 | label_incoming_emails: "Correu electrònics d'entrada" | |||
|
523 | label_generate_key: Genera una clau | |||
|
524 | label_issue_watchers: Vigilants | |||
|
525 | ||||
|
526 | button_login: Entra | |||
|
527 | button_submit: Tramet | |||
|
528 | button_save: Desa | |||
|
529 | button_check_all: Activa-ho tot | |||
|
530 | button_uncheck_all: Desactiva-ho tot | |||
|
531 | button_delete: Suprimeix | |||
|
532 | button_create: Crea | |||
|
533 | button_test: Test | |||
|
534 | button_edit: Edit | |||
|
535 | button_add: Afegeix | |||
|
536 | button_change: Canvia | |||
|
537 | button_apply: Aplica | |||
|
538 | button_clear: Neteja | |||
|
539 | button_lock: Bloca | |||
|
540 | button_unlock: Desbloca | |||
|
541 | button_download: Baixa | |||
|
542 | button_list: Llista | |||
|
543 | button_view: Visualitza | |||
|
544 | button_move: Mou | |||
|
545 | button_back: Enrere | |||
|
546 | button_cancel: Cancel·la | |||
|
547 | button_activate: Activa | |||
|
548 | button_sort: Ordena | |||
|
549 | button_log_time: "Hora d'entrada" | |||
|
550 | button_rollback: Torna a aquesta versió | |||
|
551 | button_watch: Vigila | |||
|
552 | button_unwatch: No vigilis | |||
|
553 | button_reply: Resposta | |||
|
554 | button_archive: Arxiva | |||
|
555 | button_unarchive: Desarxiva | |||
|
556 | button_reset: Reinicia | |||
|
557 | button_rename: Reanomena | |||
|
558 | button_change_password: Canvia la contrasenya | |||
|
559 | button_copy: Copia | |||
|
560 | button_annotate: Anota | |||
|
561 | button_update: Actualitza | |||
|
562 | button_configure: Configura | |||
|
563 | ||||
|
564 | status_active: actiu | |||
|
565 | status_registered: informat | |||
|
566 | status_locked: bloquejat | |||
|
567 | ||||
|
568 | text_select_mail_notifications: "Seleccioneu les accions per les quals s'hauria d'enviar una notificació per correu electrònic." | |||
|
569 | text_regexp_info: ex. ^[A-Z0-9]+$ | |||
|
570 | text_min_max_length_info: 0 significa sense restricció | |||
|
571 | text_project_destroy_confirmation: Segur que voleu suprimir aquest projecte i les dades relacionades? | |||
|
572 | text_subprojects_destroy_warning: "També seran suprimits els seus subprojectes: %s." | |||
|
573 | text_workflow_edit: Seleccioneu un rol i un seguidor per a editar el flux de treball | |||
|
574 | text_are_you_sure: Segur? | |||
|
575 | text_journal_changed: canviat des de %s a %s | |||
|
576 | text_journal_set_to: establert a %s | |||
|
577 | text_journal_deleted: suprimit | |||
|
578 | text_tip_task_begin_day: "tasca que s'inicia aquest dia" | |||
|
579 | text_tip_task_end_day: tasca que finalitza aquest dia | |||
|
580 | text_tip_task_begin_end_day: "tasca que s'inicia i finalitza aquest dia" | |||
|
581 | 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." | |||
|
582 | text_caracters_maximum: %d caràcters com a màxim. | |||
|
583 | text_caracters_minimum: Com a mínim ha de tenir %d caràcters. | |||
|
584 | text_length_between: Longitud entre %d i %d caràcters. | |||
|
585 | text_tracker_no_workflow: "No s'ha definit cap flux de treball per a aquest seguidor" | |||
|
586 | text_unallowed_characters: Caràcters no permesos | |||
|
587 | text_comma_separated: Es permeten valors múltiples (separats per una coma). | |||
|
588 | text_issues_ref_in_commit_messages: Referència i soluciona els assumptes en els missatges publicats | |||
|
589 | text_issue_added: "L'assumpte %s ha sigut informat per %s." | |||
|
590 | text_issue_updated: "L'assumpte %s ha sigut actualitzat per %s." | |||
|
591 | text_wiki_destroy_confirmation: Segur que voleu suprimir aquest wiki i tots els seus continguts? | |||
|
592 | text_issue_category_destroy_question: Alguns assumptes (%d) estan assignats a aquesta categoria. Què voleu fer? | |||
|
593 | text_issue_category_destroy_assignments: Suprimeix les assignacions de la categoria | |||
|
594 | text_issue_category_reassign_to: Torna a assignar els assumptes a aquesta categoria | |||
|
595 | 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)." | |||
|
596 | 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." | |||
|
597 | text_load_default_configuration: Carrega la configuració predeterminada | |||
|
598 | text_status_changed_by_changeset: Aplicat en el conjunt de canvis %s. | |||
|
599 | text_issues_destroy_confirmation: "Segur que voleu suprimir els assumptes seleccionats?" | |||
|
600 | text_select_project_modules: "Seleccioneu els mòduls a habilitar per a aquest projecte:" | |||
|
601 | text_default_administrator_account_changed: "S'ha canviat el compte d'administrador predeterminat" | |||
|
602 | text_file_repository_writable: Es pot escriure en el dipòsit de fitxers | |||
|
603 | text_rmagick_available: RMagick disponible (opcional) | |||
|
604 | text_destroy_time_entries_question: "S'han informat %.02f hores en els assumptes que aneu a suprimir. Què voleu fer?" | |||
|
605 | text_destroy_time_entries: Suprimeix les hores informades | |||
|
606 | text_assign_time_entries_to_project: Assigna les hores informades al projecte | |||
|
607 | text_reassign_time_entries: 'Torna a assignar les hores informades a aquest assumpte:' | |||
|
608 | text_user_wrote: '%s va escriure:' | |||
|
609 | text_enumeration_destroy_question: '%d objectes estan assignats a aquest valor.' | |||
|
610 | text_enumeration_category_reassign_to: 'Torna a assignar-los a aquest valor:' | |||
|
611 | 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." | |||
|
612 | ||||
|
613 | default_role_manager: Gestor | |||
|
614 | default_role_developper: Desenvolupador | |||
|
615 | default_role_reporter: Informador | |||
|
616 | default_tracker_bug: Error | |||
|
617 | default_tracker_feature: Característica | |||
|
618 | default_tracker_support: Suport | |||
|
619 | default_issue_status_new: Nou | |||
|
620 | default_issue_status_assigned: Assignat | |||
|
621 | default_issue_status_resolved: Resolt | |||
|
622 | default_issue_status_feedback: Comentaris | |||
|
623 | default_issue_status_closed: Tancat | |||
|
624 | default_issue_status_rejected: Rebutjat | |||
|
625 | default_doc_category_user: "Documentació d'usuari" | |||
|
626 | default_doc_category_tech: Documentació tècnica | |||
|
627 | default_priority_low: Baixa | |||
|
628 | default_priority_normal: Normal | |||
|
629 | default_priority_high: Alta | |||
|
630 | default_priority_urgent: Urgent | |||
|
631 | default_priority_immediate: Immediata | |||
|
632 | default_activity_design: Disseny | |||
|
633 | default_activity_development: Desenvolupament | |||
|
634 | ||||
|
635 | enumeration_issue_priorities: Prioritat dels assumptes | |||
|
636 | enumeration_doc_categories: Categories del document | |||
|
637 | enumeration_activities: Activitats (seguidor de temps) | |||
|
638 | button_quote: Quote | |||
|
639 | setting_sequential_project_identifiers: Generate sequential project identifiers | |||
|
640 | notice_unable_delete_version: Unable to delete version. | |||
|
641 | field_comments: Comment | |||
|
642 | setting_commit_logs_encoding: Commit messages encoding | |||
|
643 | label_renamed: renamed | |||
|
644 | label_copied: copied |
1 | NO CONTENT: new file 100644, binary diff hidden |
|
NO CONTENT: new file 100644, binary diff hidden |
1 | NO CONTENT: new file 100644, binary diff hidden |
|
NO CONTENT: new file 100644, binary diff hidden |
1 | NO CONTENT: new file 100644, binary diff hidden |
|
NO CONTENT: new file 100644, binary diff hidden |
1 | NO CONTENT: new file 100644, binary diff hidden |
|
NO CONTENT: new file 100644, binary diff hidden |
1 | NO CONTENT: new file 100644, binary diff hidden |
|
NO CONTENT: new file 100644, binary diff hidden |
1 | NO CONTENT: new file 100644, binary diff hidden |
|
NO CONTENT: new file 100644, binary diff hidden |
1 | NO CONTENT: new file 100644, binary diff hidden |
|
NO CONTENT: new file 100644, binary diff hidden |
1 | NO CONTENT: new file 100644, binary diff hidden |
|
NO CONTENT: new file 100644, binary diff hidden |
@@ -0,0 +1,127 | |||||
|
1 | // ** I18N | |||
|
2 | ||||
|
3 | // Calendar EN language | |||
|
4 | // Author: Mihai Bazon, <mihai_bazon@yahoo.com> | |||
|
5 | // Encoding: any | |||
|
6 | // Distributed under the same terms as the calendar itself. | |||
|
7 | ||||
|
8 | // For translators: please use UTF-8 if possible. We strongly believe that | |||
|
9 | // Unicode is the answer to a real internationalized world. Also please | |||
|
10 | // include your contact information in the header, as can be seen above. | |||
|
11 | ||||
|
12 | // full day names | |||
|
13 | Calendar._DN = new Array | |||
|
14 | ("Diumenge", | |||
|
15 | "Dilluns", | |||
|
16 | "Dimarts", | |||
|
17 | "Dimecres", | |||
|
18 | "Dijous", | |||
|
19 | "Divendres", | |||
|
20 | "Dissabte", | |||
|
21 | "Diumenge"); | |||
|
22 | ||||
|
23 | // Please note that the following array of short day names (and the same goes | |||
|
24 | // for short month names, _SMN) isn't absolutely necessary. We give it here | |||
|
25 | // for exemplification on how one can customize the short day names, but if | |||
|
26 | // they are simply the first N letters of the full name you can simply say: | |||
|
27 | // | |||
|
28 | // Calendar._SDN_len = N; // short day name length | |||
|
29 | // Calendar._SMN_len = N; // short month name length | |||
|
30 | // | |||
|
31 | // If N = 3 then this is not needed either since we assume a value of 3 if not | |||
|
32 | // present, to be compatible with translation files that were written before | |||
|
33 | // this feature. | |||
|
34 | ||||
|
35 | // short day names | |||
|
36 | Calendar._SDN = new Array | |||
|
37 | ("dg", | |||
|
38 | "dl", | |||
|
39 | "dt", | |||
|
40 | "dc", | |||
|
41 | "dj", | |||
|
42 | "dv", | |||
|
43 | "ds", | |||
|
44 | "dg"); | |||
|
45 | ||||
|
46 | // First day of the week. "0" means display Sunday first, "1" means display | |||
|
47 | // Monday first, etc. | |||
|
48 | Calendar._FD = 0; | |||
|
49 | ||||
|
50 | // full month names | |||
|
51 | Calendar._MN = new Array | |||
|
52 | ("Gener", | |||
|
53 | "Febrer", | |||
|
54 | "Març", | |||
|
55 | "Abril", | |||
|
56 | "Maig", | |||
|
57 | "Juny", | |||
|
58 | "Juliol", | |||
|
59 | "Agost", | |||
|
60 | "Setembre", | |||
|
61 | "Octubre", | |||
|
62 | "Novembre", | |||
|
63 | "Desembre"); | |||
|
64 | ||||
|
65 | // short month names | |||
|
66 | Calendar._SMN = new Array | |||
|
67 | ("Gen", | |||
|
68 | "Feb", | |||
|
69 | "Mar", | |||
|
70 | "Abr", | |||
|
71 | "Mai", | |||
|
72 | "Jun", | |||
|
73 | "Jul", | |||
|
74 | "Ago", | |||
|
75 | "Set", | |||
|
76 | "Oct", | |||
|
77 | "Nov", | |||
|
78 | "Des"); | |||
|
79 | ||||
|
80 | // tooltips | |||
|
81 | Calendar._TT = {}; | |||
|
82 | Calendar._TT["INFO"] = "Quant al calendari"; | |||
|
83 | ||||
|
84 | Calendar._TT["ABOUT"] = | |||
|
85 | "Selector DHTML de data/hora\n" + | |||
|
86 | "(c) dynarch.com 2002-2005 / Autor: Mihai Bazon\n" + // don't translate this this ;-) | |||
|
87 | "Per a aconseguir l'última versió visiteu: http://www.dynarch.com/projects/calendar/\n" + | |||
|
88 | "Distribuït sota la llicència GNU LGPL. Vegeu http://gnu.org/licenses/lgpl.html per a més detalls." + | |||
|
89 | "\n\n" + | |||
|
90 | "Selecció de la data:\n" + | |||
|
91 | "- Utilitzeu els botons \xab, \xbb per a seleccionar l'any\n" + | |||
|
92 | "- Utilitzeu els botons " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " per a selecciona el mes\n" + | |||
|
93 | "- Mantingueu premut el botó del ratolí sobre qualsevol d'aquests botons per a uns selecció més ràpida."; | |||
|
94 | Calendar._TT["ABOUT_TIME"] = "\n\n" + | |||
|
95 | "Selecció de l'hora:\n" + | |||
|
96 | "- Feu clic en qualsevol part de l'hora per a incrementar-la\n" + | |||
|
97 | "- o premeu majúscules per a disminuir-la\n" + | |||
|
98 | "- o feu clic i arrossegueu per a una selecció més ràpida."; | |||
|
99 | ||||
|
100 | Calendar._TT["PREV_YEAR"] = "Any anterior (mantenir per menú)"; | |||
|
101 | Calendar._TT["PREV_MONTH"] = "Mes anterior (mantenir per menú)"; | |||
|
102 | Calendar._TT["GO_TODAY"] = "Anar a avui"; | |||
|
103 | Calendar._TT["NEXT_MONTH"] = "Mes següent (mantenir per menú)"; | |||
|
104 | Calendar._TT["NEXT_YEAR"] = "Any següent (mantenir per menú)"; | |||
|
105 | Calendar._TT["SEL_DATE"] = "Sel·lecciona data"; | |||
|
106 | Calendar._TT["DRAG_TO_MOVE"] = "Arrossega per a moure"; | |||
|
107 | Calendar._TT["PART_TODAY"] = " (avui)"; | |||
|
108 | ||||
|
109 | // the following is to inform that "%s" is to be the first day of week | |||
|
110 | // %s will be replaced with the day name. | |||
|
111 | Calendar._TT["DAY_FIRST"] = "Primer mostra el %s"; | |||
|
112 | ||||
|
113 | // This may be locale-dependent. It specifies the week-end days, as an array | |||
|
114 | // of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1 | |||
|
115 | // means Monday, etc. | |||
|
116 | Calendar._TT["WEEKEND"] = "0,6"; | |||
|
117 | ||||
|
118 | Calendar._TT["CLOSE"] = "Tanca"; | |||
|
119 | Calendar._TT["TODAY"] = "Avui"; | |||
|
120 | Calendar._TT["TIME_PART"] = "(Majúscules-)Feu clic o arrossegueu per a canviar el valor"; | |||
|
121 | ||||
|
122 | // date formats | |||
|
123 | Calendar._TT["DEF_DATE_FORMAT"] = "%d-%m-%Y"; | |||
|
124 | Calendar._TT["TT_DATE_FORMAT"] = "%A, %e de %B de %Y"; | |||
|
125 | ||||
|
126 | Calendar._TT["WK"] = "set"; | |||
|
127 | Calendar._TT["TIME"] = "Hora:"; |
@@ -0,0 +1,16 | |||||
|
1 | jsToolBar.strings = {}; | |||
|
2 | jsToolBar.strings['Strong'] = 'Negreta'; | |||
|
3 | jsToolBar.strings['Italic'] = 'Cursiva'; | |||
|
4 | jsToolBar.strings['Underline'] = 'Subratllat'; | |||
|
5 | jsToolBar.strings['Deleted'] = 'Barrat'; | |||
|
6 | jsToolBar.strings['Code'] = 'Codi en línia'; | |||
|
7 | jsToolBar.strings['Heading 1'] = 'Encapçalament 1'; | |||
|
8 | jsToolBar.strings['Heading 2'] = 'Encapçalament 2'; | |||
|
9 | jsToolBar.strings['Heading 3'] = 'Encapçalament 3'; | |||
|
10 | jsToolBar.strings['Unordered list'] = 'Llista sense ordre'; | |||
|
11 | jsToolBar.strings['Ordered list'] = 'Llista ordenada'; | |||
|
12 | jsToolBar.strings['Quote'] = 'Cometes'; | |||
|
13 | jsToolBar.strings['Unquote'] = 'Sense cometes'; | |||
|
14 | jsToolBar.strings['Preformatted text'] = 'Text formatat'; | |||
|
15 | jsToolBar.strings['Wiki link'] = 'Enllaça a una pàgina Wiki'; | |||
|
16 | jsToolBar.strings['Image'] = 'Imatge'; |
@@ -118,11 +118,6 class RepositoriesController < ApplicationController | |||||
118 | def revision |
|
118 | def revision | |
119 | @changeset = @repository.changesets.find_by_revision(@rev) |
|
119 | @changeset = @repository.changesets.find_by_revision(@rev) | |
120 | raise ChangesetNotFound unless @changeset |
|
120 | raise ChangesetNotFound unless @changeset | |
121 | @changes_count = @changeset.changes.size |
|
|||
122 | @changes_pages = Paginator.new self, @changes_count, 150, params['page'] |
|
|||
123 | @changes = @changeset.changes.find(:all, |
|
|||
124 | :limit => @changes_pages.items_per_page, |
|
|||
125 | :offset => @changes_pages.current.offset) |
|
|||
126 |
|
121 | |||
127 | respond_to do |format| |
|
122 | respond_to do |format| | |
128 | format.html |
|
123 | format.html |
@@ -32,6 +32,74 module RepositoriesHelper | |||||
32 | end |
|
32 | end | |
33 | end |
|
33 | end | |
34 |
|
34 | |||
|
35 | def render_changeset_changes | |||
|
36 | changes = @changeset.changes.find(:all, :limit => 1000, :order => 'path').collect do |change| | |||
|
37 | case change.action | |||
|
38 | when 'A' | |||
|
39 | # Detects moved/copied files | |||
|
40 | if !change.from_path.blank? | |||
|
41 | change.action = @changeset.changes.detect {|c| c.action == 'D' && c.path == change.from_path} ? 'R' : 'C' | |||
|
42 | end | |||
|
43 | change | |||
|
44 | when 'D' | |||
|
45 | @changeset.changes.detect {|c| c.from_path == change.path} ? nil : change | |||
|
46 | else | |||
|
47 | change | |||
|
48 | end | |||
|
49 | end.compact | |||
|
50 | ||||
|
51 | tree = { } | |||
|
52 | changes.each do |change| | |||
|
53 | p = tree | |||
|
54 | dirs = change.path.to_s.split('/').select {|d| !d.blank?} | |||
|
55 | dirs.each do |dir| | |||
|
56 | p[:s] ||= {} | |||
|
57 | p = p[:s] | |||
|
58 | p[dir] ||= {} | |||
|
59 | p = p[dir] | |||
|
60 | end | |||
|
61 | p[:c] = change | |||
|
62 | end | |||
|
63 | ||||
|
64 | render_changes_tree(tree[:s]) | |||
|
65 | end | |||
|
66 | ||||
|
67 | def render_changes_tree(tree) | |||
|
68 | return '' if tree.nil? | |||
|
69 | ||||
|
70 | output = '' | |||
|
71 | output << '<ul>' | |||
|
72 | tree.keys.sort.each do |file| | |||
|
73 | s = !tree[file][:s].nil? | |||
|
74 | c = tree[file][:c] | |||
|
75 | ||||
|
76 | style = 'change' | |||
|
77 | style << ' folder' if s | |||
|
78 | style << " change-#{c.action}" if c | |||
|
79 | ||||
|
80 | text = h(file) | |||
|
81 | unless c.nil? | |||
|
82 | path_param = to_path_param(@repository.relative_path(c.path)) | |||
|
83 | text = link_to(text, :controller => 'repositories', | |||
|
84 | :action => 'entry', | |||
|
85 | :id => @project, | |||
|
86 | :path => path_param, | |||
|
87 | :rev => @changeset.revision) unless s || c.action == 'D' | |||
|
88 | text << " - #{c.revision}" unless c.revision.blank? | |||
|
89 | text << ' (' + link_to('diff', :controller => 'repositories', | |||
|
90 | :action => 'diff', | |||
|
91 | :id => @project, | |||
|
92 | :path => path_param, | |||
|
93 | :rev => @changeset.revision) + ') ' if c.action == 'M' | |||
|
94 | text << ' ' + content_tag('span', c.from_path, :class => 'copied-from') unless c.from_path.blank? | |||
|
95 | end | |||
|
96 | output << "<li class='#{style}'>#{text}</li>" | |||
|
97 | output << render_changes_tree(tree[file][:s]) if s | |||
|
98 | end | |||
|
99 | output << '</ul>' | |||
|
100 | output | |||
|
101 | end | |||
|
102 | ||||
35 | def to_utf8(str) |
|
103 | def to_utf8(str) | |
36 | return str if /\A[\r\n\t\x20-\x7e]*\Z/n.match(str) # for us-ascii |
|
104 | return str if /\A[\r\n\t\x20-\x7e]*\Z/n.match(str) # for us-ascii | |
37 | @encodings ||= Setting.repositories_encodings.split(',').collect(&:strip) |
|
105 | @encodings ||= Setting.repositories_encodings.split(',').collect(&:strip) |
@@ -19,6 +19,6 | |||||
19 | <h3><%= l(:label_query_plural) %></h3> |
|
19 | <h3><%= l(:label_query_plural) %></h3> | |
20 |
|
20 | |||
21 | <% sidebar_queries.each do |query| -%> |
|
21 | <% sidebar_queries.each do |query| -%> | |
22 | <%= link_to query.name, :query_id => query %><br /> |
|
22 | <%= link_to query.name, :controller => 'issues', :action => 'index', :project_id => @project, :query_id => query %><br /> | |
23 | <% end -%> |
|
23 | <% end -%> | |
24 | <% end -%> |
|
24 | <% end -%> |
@@ -36,33 +36,19 | |||||
36 | <% end %> |
|
36 | <% end %> | |
37 |
|
37 | |||
38 | <h3><%= l(:label_attachment_plural) %></h3> |
|
38 | <h3><%= l(:label_attachment_plural) %></h3> | |
39 | <div style="float:right;"> |
|
39 | <ul id="changes-legend"> | |
40 | <div class="square action_A"></div> <div style="float:left;"><%= l(:label_added) %> </div> |
|
40 | <li class="change change-A"><%= l(:label_added) %></li> | |
41 |
< |
|
41 | <li class="change change-M"><%= l(:label_modified) %></li> | |
42 | <div class="square action_D"></div> <div style="float:left;"><%= l(:label_deleted) %> </div> |
|
42 | <li class="change change-C"><%= l(:label_copied) %></li> | |
43 | </div> |
|
43 | <li class="change change-R"><%= l(:label_renamed) %></li> | |
|
44 | <li class="change change-D"><%= l(:label_deleted) %></li> | |||
|
45 | </ul> | |||
|
46 | ||||
44 | <p><%= link_to(l(:label_view_diff), :action => 'diff', :id => @project, :path => "", :rev => @changeset.revision) if @changeset.changes.any? %></p> |
|
47 | <p><%= link_to(l(:label_view_diff), :action => 'diff', :id => @project, :path => "", :rev => @changeset.revision) if @changeset.changes.any? %></p> | |
45 | <table class="list"> |
|
48 | ||
46 | <tbody> |
|
49 | <div class="changeset-changes"> | |
47 |
<% |
|
50 | <%= render_changeset_changes %> | |
48 | <tr class="<%= cycle 'odd', 'even' %>"> |
|
51 | </div> | |
49 | <td><div class="square action_<%= change.action %>"></div> |
|
|||
50 | <% if change.action == "D" -%> |
|
|||
51 | <%= change.path -%> |
|
|||
52 | <% else -%> |
|
|||
53 | <%= link_to change.path, :action => 'entry', :id => @project, :path => to_path_param(change.relative_path), :rev => @changeset.revision -%> |
|
|||
54 | <% end -%> |
|
|||
55 | <%= "(#{change.revision})" unless change.revision.blank? %></td> |
|
|||
56 | <td align="right"> |
|
|||
57 | <% if change.action == "M" %> |
|
|||
58 | <%= link_to l(:label_view_diff), :action => 'diff', :id => @project, :path => to_path_param(change.relative_path), :rev => @changeset.revision %> |
|
|||
59 | <% end %> |
|
|||
60 | </td> |
|
|||
61 | </tr> |
|
|||
62 | <% end %> |
|
|||
63 | </tbody> |
|
|||
64 | </table> |
|
|||
65 | <p class="pagination"><%= pagination_links_full @changes_pages %></p> |
|
|||
66 |
|
52 | |||
67 | <% content_for :header_tags do %> |
|
53 | <% content_for :header_tags do %> | |
68 | <%= stylesheet_link_tag "scm" %> |
|
54 | <%= stylesheet_link_tag "scm" %> |
@@ -1,13 +1,51 | |||||
1 | #!/usr/bin/ruby |
|
1 | #!/usr/bin/ruby | |
2 |
|
2 | |||
3 | # rdm-mailhandler |
|
3 | # == Synopsis | |
|
4 | # | |||
4 | # Reads an email from standard input and forward it to a Redmine server |
|
5 | # Reads an email from standard input and forward it to a Redmine server | |
5 | # Can be used from a remote mail server |
|
6 | # through a HTTP request. | |
|
7 | # | |||
|
8 | # == Usage | |||
|
9 | # | |||
|
10 | # rdm-mailhandler [options] --url=<Redmine URL> --key=<API key> | |||
|
11 | # | |||
|
12 | # == Arguments | |||
|
13 | # | |||
|
14 | # -u, --url URL of the Redmine server | |||
|
15 | # -k, --key Redmine API key | |||
|
16 | # | |||
|
17 | # General options: | |||
|
18 | # -h, --help show this help | |||
|
19 | # -v, --verbose show extra information | |||
|
20 | # -V, --version show version information and exit | |||
|
21 | # | |||
|
22 | # Issue attributes control options: | |||
|
23 | # -p, --project=PROJECT identifier of the target project | |||
|
24 | # -t, --tracker=TRACKER name of the target tracker | |||
|
25 | # --category=CATEGORY name of the target category | |||
|
26 | # --priority=PRIORITY name of the target priority | |||
|
27 | # -o, --allow-override=ATTRS allow email content to override attributes | |||
|
28 | # specified by previous options | |||
|
29 | # ATTRS is a comma separated list of attributes | |||
|
30 | # | |||
|
31 | # == Examples | |||
|
32 | # No project specified. Emails MUST contain the 'Project' keyword: | |||
|
33 | # | |||
|
34 | # rdm-mailhandler --url http://redmine.domain.foo --key secret | |||
|
35 | # | |||
|
36 | # Fixed project and default tracker specified, but emails can override | |||
|
37 | # both tracker and priority attributes using keywords: | |||
|
38 | # | |||
|
39 | # rdm-mailhandler --url https://domain.foo/redmine --key secret \\ | |||
|
40 | # --project foo \\ | |||
|
41 | # --tracker bug \\ | |||
|
42 | # --allow-override tracker,priority | |||
6 |
|
43 | |||
7 | require 'net/http' |
|
44 | require 'net/http' | |
8 | require 'net/https' |
|
45 | require 'net/https' | |
9 | require 'uri' |
|
46 | require 'uri' | |
10 | require 'getoptlong' |
|
47 | require 'getoptlong' | |
|
48 | require 'rdoc/usage' | |||
11 |
|
49 | |||
12 | module Net |
|
50 | module Net | |
13 | class HTTPS < HTTP |
|
51 | class HTTPS < HTTP | |
@@ -31,15 +69,15 class RedmineMailHandler | |||||
31 | self.issue_attributes = {} |
|
69 | self.issue_attributes = {} | |
32 |
|
70 | |||
33 | opts = GetoptLong.new( |
|
71 | opts = GetoptLong.new( | |
34 | [ '--help', '-h', GetoptLong::NO_ARGUMENT ], |
|
72 | [ '--help', '-h', GetoptLong::NO_ARGUMENT ], | |
35 | [ '--version', '-V', GetoptLong::NO_ARGUMENT ], |
|
73 | [ '--version', '-V', GetoptLong::NO_ARGUMENT ], | |
36 | [ '--verbose', '-v', GetoptLong::NO_ARGUMENT ], |
|
74 | [ '--verbose', '-v', GetoptLong::NO_ARGUMENT ], | |
37 | [ '--url', '-u', GetoptLong::REQUIRED_ARGUMENT ], |
|
75 | [ '--url', '-u', GetoptLong::REQUIRED_ARGUMENT ], | |
38 | [ '--key', '-k', GetoptLong::REQUIRED_ARGUMENT], |
|
76 | [ '--key', '-k', GetoptLong::REQUIRED_ARGUMENT], | |
39 | [ '--project', '-p', GetoptLong::REQUIRED_ARGUMENT ], |
|
77 | [ '--project', '-p', GetoptLong::REQUIRED_ARGUMENT ], | |
40 | [ '--tracker', '-t', GetoptLong::REQUIRED_ARGUMENT], |
|
78 | [ '--tracker', '-t', GetoptLong::REQUIRED_ARGUMENT], | |
41 | [ '--category', GetoptLong::REQUIRED_ARGUMENT], |
|
79 | [ '--category', GetoptLong::REQUIRED_ARGUMENT], | |
42 | [ '--priority', GetoptLong::REQUIRED_ARGUMENT], |
|
80 | [ '--priority', GetoptLong::REQUIRED_ARGUMENT], | |
43 | [ '--allow-override', '-o', GetoptLong::REQUIRED_ARGUMENT] |
|
81 | [ '--allow-override', '-o', GetoptLong::REQUIRED_ARGUMENT] | |
44 | ) |
|
82 | ) | |
45 |
|
83 | |||
@@ -62,7 +100,7 class RedmineMailHandler | |||||
62 | end |
|
100 | end | |
63 | end |
|
101 | end | |
64 |
|
102 | |||
65 | usage if url.nil? |
|
103 | RDoc.usage if url.nil? | |
66 | end |
|
104 | end | |
67 |
|
105 | |||
68 | def submit(email) |
|
106 | def submit(email) | |
@@ -74,48 +112,14 class RedmineMailHandler | |||||
74 | debug "Posting to #{uri}..." |
|
112 | debug "Posting to #{uri}..." | |
75 | response = Net::HTTPS.post_form(URI.parse(uri), data) |
|
113 | response = Net::HTTPS.post_form(URI.parse(uri), data) | |
76 | debug "Response received: #{response.code}" |
|
114 | debug "Response received: #{response.code}" | |
77 | response.code == 201 ? 0 : 1 |
|
115 | ||
|
116 | puts "Request was denied by your Redmine server. " + | |||
|
117 | "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' | |||
|
118 | response.code == '201' ? 0 : 1 | |||
78 | end |
|
119 | end | |
79 |
|
120 | |||
80 | private |
|
121 | private | |
81 |
|
122 | |||
82 | def usage |
|
|||
83 | puts <<-USAGE |
|
|||
84 | Usage: rdm-mailhandler [options] --url=<Redmine URL> --key=<API key> |
|
|||
85 | Reads an email from standard input and forward it to a Redmine server |
|
|||
86 |
|
||||
87 | Required: |
|
|||
88 | -u, --url URL of the Redmine server |
|
|||
89 | -k, --key Redmine API key |
|
|||
90 |
|
||||
91 | General options: |
|
|||
92 | -h, --help show this help |
|
|||
93 | -v, --verbose show extra information |
|
|||
94 | -V, --version show version information and exit |
|
|||
95 |
|
||||
96 | Issue attributes control options: |
|
|||
97 | -p, --project=PROJECT identifier of the target project |
|
|||
98 | -t, --tracker=TRACKER name of the target tracker |
|
|||
99 | --category=CATEGORY name of the target category |
|
|||
100 | --priority=PRIORITY name of the target priority |
|
|||
101 | -o, --allow-override=ATTRS allow email content to override attributes |
|
|||
102 | specified by previous options |
|
|||
103 | ATTRS is a comma separated list of attributes |
|
|||
104 |
|
||||
105 | Examples: |
|
|||
106 | # No project specified. Emails MUST contain the 'Project' keyword: |
|
|||
107 | rdm-mailhandler --url http://redmine.domain.foo --key secret |
|
|||
108 |
|
||||
109 | # Fixed project and default tracker specified, but emails can override |
|
|||
110 | # both tracker and priority attributes: |
|
|||
111 | rdm-mailhandler --url https://domain.foo/redmine --key secret \\ |
|
|||
112 | --project foo \\ |
|
|||
113 | --tracker bug \\ |
|
|||
114 | --allow-override tracker,priority |
|
|||
115 | USAGE |
|
|||
116 | exit |
|
|||
117 | end |
|
|||
118 |
|
||||
119 | def debug(msg) |
|
123 | def debug(msg) | |
120 | puts msg if verbose |
|
124 | puts msg if verbose | |
121 | end |
|
125 | end |
@@ -2,15 +2,15 | |||||
2 |
|
2 | |||
3 | # == Synopsis |
|
3 | # == Synopsis | |
4 | # |
|
4 | # | |
5 |
# reposman: manages your |
|
5 | # reposman: manages your repositories with Redmine | |
6 | # |
|
6 | # | |
7 | # == Usage |
|
7 | # == Usage | |
8 | # |
|
8 | # | |
9 | # reposman [OPTIONS...] -s [DIR] -r [HOST] |
|
9 | # reposman [OPTIONS...] -s [DIR] -r [HOST] | |
10 | # |
|
10 | # | |
11 | # Examples: |
|
11 | # Examples: | |
12 | # reposman --svn-dir=/var/svn --redmine-host=redmine.example.net |
|
12 | # reposman --svn-dir=/var/svn --redmine-host=redmine.example.net --scm subversion | |
13 |
# reposman -s /var/ |
|
13 | # reposman -s /var/git -r redmine.example.net -u http://svn.example.net --scm git | |
14 | # |
|
14 | # | |
15 | # == Arguments (mandatory) |
|
15 | # == Arguments (mandatory) | |
16 | # |
|
16 | # | |
@@ -24,7 +24,12 | |||||
24 | # |
|
24 | # | |
25 | # -o, --owner=OWNER owner of the repository. using the rails login |
|
25 | # -o, --owner=OWNER owner of the repository. using the rails login | |
26 | # allow user to browse the repository within |
|
26 | # allow user to browse the repository within | |
27 | # Redmine even for private project |
|
27 | # Redmine even for private project. If you want to share repositories | |
|
28 | # through Redmine.pm, you need to use the apache owner. | |||
|
29 | # --scm=SCM the kind of SCM repository you want to create (and register) in | |||
|
30 | # Redmine (default: Subversion). reposman is able to create Git | |||
|
31 | # and Subversion repositories. For all other kind (Bazaar, | |||
|
32 | # Darcs, Filesystem, Mercurial) you must specify a --command option | |||
28 | # -u, --url=URL the base url Redmine will use to access your |
|
33 | # -u, --url=URL the base url Redmine will use to access your | |
29 | # repositories. This option is used to automatically |
|
34 | # repositories. This option is used to automatically | |
30 | # register the repositories in Redmine. The project |
|
35 | # register the repositories in Redmine. The project | |
@@ -35,13 +40,8 | |||||
35 | # the repositories in Redmine |
|
40 | # the repositories in Redmine | |
36 | # -c, --command=COMMAND use this command instead of "svnadmin create" to |
|
41 | # -c, --command=COMMAND use this command instead of "svnadmin create" to | |
37 | # create a repository. This option can be used to |
|
42 | # create a repository. This option can be used to | |
38 |
# create |
|
43 | # create repositories other than subversion and git kind. | |
39 | # --scm SCM vendor used to register the repository in |
|
44 | # This command override the default creation for git and subversion. | |
40 | # Redmine (default: Subversion). Can be one of the |
|
|||
41 | # other supported SCM: Bazaar, Darcs, Filesystem, |
|
|||
42 | # Git, Mercurial (case sensitive). |
|
|||
43 | # This option should be used when both options --url |
|
|||
44 | # and --command are used. |
|
|||
45 | # -f, --force force repository creation even if the project |
|
45 | # -f, --force force repository creation even if the project | |
46 | # repository is already declared in Redmine |
|
46 | # repository is already declared in Redmine | |
47 | # -t, --test only show what should be done |
|
47 | # -t, --test only show what should be done | |
@@ -49,6 +49,11 | |||||
49 | # -v, --verbose verbose |
|
49 | # -v, --verbose verbose | |
50 | # -V, --version print version and exit |
|
50 | # -V, --version print version and exit | |
51 | # -q, --quiet no log |
|
51 | # -q, --quiet no log | |
|
52 | # | |||
|
53 | # == References | |||
|
54 | # | |||
|
55 | # You can find more information on the redmine's wiki : http://www.redmine.org/wiki/redmine/HowTos | |||
|
56 | ||||
52 |
|
57 | |||
53 | require 'getoptlong' |
|
58 | require 'getoptlong' | |
54 | require 'rdoc/usage' |
|
59 | require 'rdoc/usage' | |
@@ -82,16 +87,38 $svn_owner = 'root' | |||||
82 | $use_groupid = true |
|
87 | $use_groupid = true | |
83 | $svn_url = false |
|
88 | $svn_url = false | |
84 | $test = false |
|
89 | $test = false | |
85 | $command = "svnadmin create" |
|
|||
86 | $force = false |
|
90 | $force = false | |
87 | $scm = 'Subversion' |
|
91 | $scm = 'Subversion' | |
88 |
|
92 | |||
89 | def log(text,level=0, exit=false) |
|
93 | def log(text,level=0, exit=false) | |
90 |
|
|
94 | puts text unless $quiet or level > $verbose | |
91 | puts text |
|
|||
92 | exit 1 if exit |
|
95 | exit 1 if exit | |
93 | end |
|
96 | end | |
94 |
|
97 | |||
|
98 | def system_or_raise(command) | |||
|
99 | raise "\"#{command}\" failed" unless system command | |||
|
100 | end | |||
|
101 | ||||
|
102 | module SCM | |||
|
103 | ||||
|
104 | module Subversion | |||
|
105 | def self.create(path) | |||
|
106 | system_or_raise "svnadmin create #{path}" | |||
|
107 | end | |||
|
108 | end | |||
|
109 | ||||
|
110 | module Git | |||
|
111 | def self.create(path) | |||
|
112 | Dir.mkdir path | |||
|
113 | Dir.chdir(path) do | |||
|
114 | system_or_raise "git --bare init --shared" | |||
|
115 | system_or_raise "git-update-server-info" | |||
|
116 | end | |||
|
117 | end | |||
|
118 | end | |||
|
119 | ||||
|
120 | end | |||
|
121 | ||||
95 | begin |
|
122 | begin | |
96 | opts.each do |opt, arg| |
|
123 | opts.each do |opt, arg| | |
97 | case opt |
|
124 | case opt | |
@@ -99,7 +126,7 begin | |||||
99 | when '--redmine-host'; $redmine_host = arg.dup |
|
126 | when '--redmine-host'; $redmine_host = arg.dup | |
100 | when '--owner'; $svn_owner = arg.dup; $use_groupid = false; |
|
127 | when '--owner'; $svn_owner = arg.dup; $use_groupid = false; | |
101 | when '--url'; $svn_url = arg.dup |
|
128 | when '--url'; $svn_url = arg.dup | |
102 | when '--scm'; $scm = arg.dup; log("Invalid SCM: #{$scm}", 0, true) unless SUPPORTED_SCM.include?($scm) |
|
129 | when '--scm'; $scm = arg.dup.capitalize; log("Invalid SCM: #{$scm}", 0, true) unless SUPPORTED_SCM.include?($scm) | |
103 | when '--command'; $command = arg.dup |
|
130 | when '--command'; $command = arg.dup | |
104 | when '--verbose'; $verbose += 1 |
|
131 | when '--verbose'; $verbose += 1 | |
105 | when '--test'; $test = true |
|
132 | when '--test'; $test = true | |
@@ -117,12 +144,15 if $test | |||||
117 | log("running in test mode") |
|
144 | log("running in test mode") | |
118 | end |
|
145 | end | |
119 |
|
146 | |||
120 | # Make sure command is overridden if SCM vendor is not Subversion |
|
147 | # Make sure command is overridden if SCM vendor is not handled internally (for the moment Subversion and Git) | |
121 | if $scm != 'Subversion' && $command == 'svnadmin create' |
|
148 | if $command.nil? | |
122 | log("Please use --command option to specify how to create a #{$scm} repository.", 0, true) |
|
149 | begin | |
|
150 | scm_module = SCM.const_get($scm) | |||
|
151 | rescue | |||
|
152 | log("Please use --command option to specify how to create a #{$scm} repository.", 0, true) | |||
|
153 | end | |||
123 | end |
|
154 | end | |
124 |
|
155 | |||
125 |
|
||||
126 | $svn_url += "/" if $svn_url and not $svn_url.match(/\/$/) |
|
156 | $svn_url += "/" if $svn_url and not $svn_url.match(/\/$/) | |
127 |
|
157 | |||
128 | if ($redmine_host.empty? or $repos_base.empty?) |
|
158 | if ($redmine_host.empty? or $repos_base.empty?) | |
@@ -231,8 +261,11 projects.each do |project| | |||||
231 |
|
261 | |||
232 | begin |
|
262 | begin | |
233 | set_owner_and_rights(project, repos_path) do |
|
263 | set_owner_and_rights(project, repos_path) do | |
234 | command = "#{$command} #{repos_path}" |
|
264 | if scm_module.nil? | |
235 | raise "#{command} failed" unless system( command ) |
|
265 | system_or_raise "#{$command} #{repos_path}" | |
|
266 | else | |||
|
267 | scm_module.create(repos_path) | |||
|
268 | end | |||
236 | end |
|
269 | end | |
237 | rescue => e |
|
270 | rescue => e | |
238 | log("\tunable to create #{repos_path} : #{e}\n") |
|
271 | log("\tunable to create #{repos_path} : #{e}\n") |
@@ -638,3 +638,5 setting_commit_logs_encoding: Commit messages encoding | |||||
638 | button_quote: Quote |
|
638 | button_quote: Quote | |
639 | setting_sequential_project_identifiers: Generate sequential project identifiers |
|
639 | setting_sequential_project_identifiers: Generate sequential project identifiers | |
640 | notice_unable_delete_version: Unable to delete version |
|
640 | notice_unable_delete_version: Unable to delete version | |
|
641 | label_renamed: renamed | |||
|
642 | label_copied: copied |
@@ -643,3 +643,5 setting_commit_logs_encoding: Commit messages encoding | |||||
643 | button_quote: Quote |
|
643 | button_quote: Quote | |
644 | setting_sequential_project_identifiers: Generate sequential project identifiers |
|
644 | setting_sequential_project_identifiers: Generate sequential project identifiers | |
645 | notice_unable_delete_version: Unable to delete version |
|
645 | notice_unable_delete_version: Unable to delete version | |
|
646 | label_renamed: renamed | |||
|
647 | label_copied: copied |
@@ -640,3 +640,5 setting_commit_logs_encoding: Commit messages encoding | |||||
640 | button_quote: Quote |
|
640 | button_quote: Quote | |
641 | setting_sequential_project_identifiers: Generate sequential project identifiers |
|
641 | setting_sequential_project_identifiers: Generate sequential project identifiers | |
642 | notice_unable_delete_version: Unable to delete version |
|
642 | notice_unable_delete_version: Unable to delete version | |
|
643 | label_renamed: renamed | |||
|
644 | label_copied: copied |
@@ -639,3 +639,5 setting_commit_logs_encoding: Commit messages encoding | |||||
639 | button_quote: Quote |
|
639 | button_quote: Quote | |
640 | setting_sequential_project_identifiers: Generate sequential project identifiers |
|
640 | setting_sequential_project_identifiers: Generate sequential project identifiers | |
641 | notice_unable_delete_version: Unable to delete version |
|
641 | notice_unable_delete_version: Unable to delete version | |
|
642 | label_renamed: renamed | |||
|
643 | label_copied: copied |
@@ -405,6 +405,8 label_revision_plural: Revisions | |||||
405 | label_associated_revisions: Associated revisions |
|
405 | label_associated_revisions: Associated revisions | |
406 | label_added: added |
|
406 | label_added: added | |
407 | label_modified: modified |
|
407 | label_modified: modified | |
|
408 | label_copied: copied | |||
|
409 | label_renamed: renamed | |||
408 | label_deleted: deleted |
|
410 | label_deleted: deleted | |
409 | label_latest_revision: Latest revision |
|
411 | label_latest_revision: Latest revision | |
410 | label_latest_revision_plural: Latest revisions |
|
412 | label_latest_revision_plural: Latest revisions |
@@ -641,3 +641,5 setting_commit_logs_encoding: Codificación de los mensajes de commit | |||||
641 | button_quote: Quote |
|
641 | button_quote: Quote | |
642 | setting_sequential_project_identifiers: Generate sequential project identifiers |
|
642 | setting_sequential_project_identifiers: Generate sequential project identifiers | |
643 | notice_unable_delete_version: Unable to delete version |
|
643 | notice_unable_delete_version: Unable to delete version | |
|
644 | label_renamed: renamed | |||
|
645 | label_copied: copied |
@@ -638,3 +638,5 button_quote: Quote | |||||
638 | setting_sequential_project_identifiers: Generate sequential project identifiers |
|
638 | setting_sequential_project_identifiers: Generate sequential project identifiers | |
639 | setting_commit_logs_encoding: Commit messages encoding |
|
639 | setting_commit_logs_encoding: Commit messages encoding | |
640 | notice_unable_delete_version: Unable to delete version |
|
640 | notice_unable_delete_version: Unable to delete version | |
|
641 | label_renamed: renamed | |||
|
642 | label_copied: copied |
@@ -404,6 +404,8 label_revision_plural: Révisions | |||||
404 | label_associated_revisions: Révisions associées |
|
404 | label_associated_revisions: Révisions associées | |
405 | label_added: ajouté |
|
405 | label_added: ajouté | |
406 | label_modified: modifié |
|
406 | label_modified: modifié | |
|
407 | label_copied: copié | |||
|
408 | label_renamed: renommé | |||
407 | label_deleted: supprimé |
|
409 | label_deleted: supprimé | |
408 | label_latest_revision: Dernière révision |
|
410 | label_latest_revision: Dernière révision | |
409 | label_latest_revision_plural: Dernières révisions |
|
411 | label_latest_revision_plural: Dernières révisions |
@@ -638,3 +638,5 setting_commit_logs_encoding: Commit messages encoding | |||||
638 | button_quote: Quote |
|
638 | button_quote: Quote | |
639 | setting_sequential_project_identifiers: Generate sequential project identifiers |
|
639 | setting_sequential_project_identifiers: Generate sequential project identifiers | |
640 | notice_unable_delete_version: Unable to delete version |
|
640 | notice_unable_delete_version: Unable to delete version | |
|
641 | label_renamed: renamed | |||
|
642 | label_copied: copied |
@@ -638,4 +638,6 label_issue_watchers: Megfigyelők | |||||
638 | setting_commit_logs_encoding: Commit üzenetek kódlapja |
|
638 | setting_commit_logs_encoding: Commit üzenetek kódlapja | |
639 | button_quote: Idézet |
|
639 | button_quote: Idézet | |
640 | setting_sequential_project_identifiers: Szekvenciális projekt azonosítók generálása |
|
640 | setting_sequential_project_identifiers: Szekvenciális projekt azonosítók generálása | |
641 |
notice_unable_delete_version: |
|
641 | notice_unable_delete_version: A verziót nem lehet törölni | |
|
642 | label_renamed: renamed | |||
|
643 | label_copied: copied |
@@ -638,3 +638,5 setting_commit_logs_encoding: Commit messages encoding | |||||
638 | button_quote: Quote |
|
638 | button_quote: Quote | |
639 | setting_sequential_project_identifiers: Generate sequential project identifiers |
|
639 | setting_sequential_project_identifiers: Generate sequential project identifiers | |
640 | notice_unable_delete_version: Unable to delete version |
|
640 | notice_unable_delete_version: Unable to delete version | |
|
641 | label_renamed: renamed | |||
|
642 | label_copied: copied |
@@ -639,3 +639,5 setting_commit_logs_encoding: Commit messages encoding | |||||
639 | button_quote: Quote |
|
639 | button_quote: Quote | |
640 | setting_sequential_project_identifiers: Generate sequential project identifiers |
|
640 | setting_sequential_project_identifiers: Generate sequential project identifiers | |
641 | notice_unable_delete_version: Unable to delete version |
|
641 | notice_unable_delete_version: Unable to delete version | |
|
642 | label_renamed: renamed | |||
|
643 | label_copied: copied |
@@ -638,3 +638,5 setting_commit_logs_encoding: Commit messages encoding | |||||
638 | button_quote: Quote |
|
638 | button_quote: Quote | |
639 | setting_sequential_project_identifiers: Generate sequential project identifiers |
|
639 | setting_sequential_project_identifiers: Generate sequential project identifiers | |
640 | notice_unable_delete_version: Unable to delete version |
|
640 | notice_unable_delete_version: Unable to delete version | |
|
641 | label_renamed: renamed | |||
|
642 | label_copied: copied |
@@ -640,3 +640,5 setting_commit_logs_encoding: Commit pranėšimų koduotė | |||||
640 | setting_sequential_project_identifiers: Generate sequential project identifiers |
|
640 | setting_sequential_project_identifiers: Generate sequential project identifiers | |
641 | button_quote: Quote |
|
641 | button_quote: Quote | |
642 | notice_unable_delete_version: Unable to delete version |
|
642 | notice_unable_delete_version: Unable to delete version | |
|
643 | label_renamed: renamed | |||
|
644 | label_copied: copied |
@@ -639,3 +639,5 setting_commit_logs_encoding: Commit messages encoding | |||||
639 | button_quote: Quote |
|
639 | button_quote: Quote | |
640 | setting_sequential_project_identifiers: Generate sequential project identifiers |
|
640 | setting_sequential_project_identifiers: Generate sequential project identifiers | |
641 | notice_unable_delete_version: Unable to delete version |
|
641 | notice_unable_delete_version: Unable to delete version | |
|
642 | label_renamed: renamed | |||
|
643 | label_copied: copied |
@@ -639,3 +639,5 setting_commit_logs_encoding: Commit messages encoding | |||||
639 | button_quote: Quote |
|
639 | button_quote: Quote | |
640 | setting_sequential_project_identifiers: Generate sequential project identifiers |
|
640 | setting_sequential_project_identifiers: Generate sequential project identifiers | |
641 | notice_unable_delete_version: Unable to delete version |
|
641 | notice_unable_delete_version: Unable to delete version | |
|
642 | label_renamed: renamed | |||
|
643 | label_copied: copied |
@@ -638,3 +638,5 setting_commit_logs_encoding: Commit messages encoding | |||||
638 | button_quote: Quote |
|
638 | button_quote: Quote | |
639 | setting_sequential_project_identifiers: Generate sequential project identifiers |
|
639 | setting_sequential_project_identifiers: Generate sequential project identifiers | |
640 | notice_unable_delete_version: Unable to delete version |
|
640 | notice_unable_delete_version: Unable to delete version | |
|
641 | label_renamed: renamed | |||
|
642 | label_copied: copied |
@@ -639,3 +639,5 enumeration_issue_priorities: Prioridade das tarefas | |||||
639 | enumeration_doc_categories: Categorias de documento |
|
639 | enumeration_doc_categories: Categorias de documento | |
640 | enumeration_activities: Atividades (time tracking) |
|
640 | enumeration_activities: Atividades (time tracking) | |
641 | notice_unable_delete_version: Unable to delete version |
|
641 | notice_unable_delete_version: Unable to delete version | |
|
642 | label_renamed: renamed | |||
|
643 | label_copied: copied |
@@ -638,3 +638,5 setting_commit_logs_encoding: Commit messages encoding | |||||
638 | button_quote: Quote |
|
638 | button_quote: Quote | |
639 | setting_sequential_project_identifiers: Generate sequential project identifiers |
|
639 | setting_sequential_project_identifiers: Generate sequential project identifiers | |
640 | notice_unable_delete_version: Unable to delete version |
|
640 | notice_unable_delete_version: Unable to delete version | |
|
641 | label_renamed: renamed | |||
|
642 | label_copied: copied |
@@ -638,3 +638,5 setting_commit_logs_encoding: Commit messages encoding | |||||
638 | button_quote: Quote |
|
638 | button_quote: Quote | |
639 | setting_sequential_project_identifiers: Generate sequential project identifiers |
|
639 | setting_sequential_project_identifiers: Generate sequential project identifiers | |
640 | notice_unable_delete_version: Unable to delete version |
|
640 | notice_unable_delete_version: Unable to delete version | |
|
641 | label_renamed: renamed | |||
|
642 | label_copied: copied |
@@ -31,10 +31,10 activerecord_error_accepted: необходимо принять | |||||
31 | activerecord_error_blank: необходимо заполнить |
|
31 | activerecord_error_blank: необходимо заполнить | |
32 | activerecord_error_circular_dependency: Такая связь приведет к циклической зависимости |
|
32 | activerecord_error_circular_dependency: Такая связь приведет к циклической зависимости | |
33 | activerecord_error_confirmation: ошибка в подтверждении |
|
33 | activerecord_error_confirmation: ошибка в подтверждении | |
34 |
activerecord_error_empty: необходимо заполнить |
|
34 | activerecord_error_empty: необходимо заполнить | |
35 |
activerecord_error_exclusion: зарезервировано |
|
35 | activerecord_error_exclusion: зарезервировано | |
36 | activerecord_error_greater_than_start_date: должна быть позднее даты начала |
|
36 | activerecord_error_greater_than_start_date: должна быть позднее даты начала | |
37 |
activerecord_error_inclusion: нет в списке |
|
37 | activerecord_error_inclusion: нет в списке | |
38 | activerecord_error_invalid: неверное значение |
|
38 | activerecord_error_invalid: неверное значение | |
39 | activerecord_error_not_a_date: дата недействительна |
|
39 | activerecord_error_not_a_date: дата недействительна | |
40 | activerecord_error_not_a_number: не является числом |
|
40 | activerecord_error_not_a_number: не является числом | |
@@ -76,7 +76,7 button_sort: Сортировать | |||||
76 | button_submit: Принять |
|
76 | button_submit: Принять | |
77 | button_test: Проверить |
|
77 | button_test: Проверить | |
78 | button_unarchive: Разархивировать |
|
78 | button_unarchive: Разархивировать | |
79 |
button_uncheck_all: Очистить |
|
79 | button_uncheck_all: Очистить | |
80 | button_unlock: Разблокировать |
|
80 | button_unlock: Разблокировать | |
81 | button_unwatch: Не следить |
|
81 | button_unwatch: Не следить | |
82 | button_update: Обновить |
|
82 | button_update: Обновить | |
@@ -85,13 +85,13 button_watch: Следить | |||||
85 |
|
85 | |||
86 | default_activity_design: Проектирование |
|
86 | default_activity_design: Проектирование | |
87 | default_activity_development: Разработка |
|
87 | default_activity_development: Разработка | |
88 |
default_doc_category_tech: Техническая документация |
|
88 | default_doc_category_tech: Техническая документация | |
89 | default_doc_category_user: Документация пользователя |
|
89 | default_doc_category_user: Документация пользователя | |
90 | default_issue_status_assigned: Назначен |
|
90 | default_issue_status_assigned: Назначен | |
91 | default_issue_status_closed: Закрыт |
|
91 | default_issue_status_closed: Закрыт | |
92 |
default_issue_status_feedback: Обратная связь |
|
92 | default_issue_status_feedback: Обратная связь | |
93 | default_issue_status_new: Новый |
|
93 | default_issue_status_new: Новый | |
94 |
default_issue_status_rejected: Отказ |
|
94 | default_issue_status_rejected: Отказ | |
95 | default_issue_status_resolved: Заблокирован |
|
95 | default_issue_status_resolved: Заблокирован | |
96 | default_priority_high: Высокий |
|
96 | default_priority_high: Высокий | |
97 | default_priority_immediate: Немедленный |
|
97 | default_priority_immediate: Немедленный | |
@@ -113,7 +113,7 error_can_t_load_default_data: "Конфигурация по умолчанию | |||||
113 | error_issue_not_found_in_project: Задача не была найдена или не прикреплена к этому проекту |
|
113 | error_issue_not_found_in_project: Задача не была найдена или не прикреплена к этому проекту | |
114 | error_scm_annotate: "Данные отсутствуют или не могут быть подписаны." |
|
114 | error_scm_annotate: "Данные отсутствуют или не могут быть подписаны." | |
115 | error_scm_command_failed: "Ошибка доступа к хранилищу: %s" |
|
115 | error_scm_command_failed: "Ошибка доступа к хранилищу: %s" | |
116 |
error_scm_not_found: Хранили |
|
116 | error_scm_not_found: Хранилище не содержит записи и/или исправления. | |
117 |
|
117 | |||
118 | field_account: Учетная запись |
|
118 | field_account: Учетная запись | |
119 | field_activity: Деятельность |
|
119 | field_activity: Деятельность | |
@@ -132,7 +132,7 field_column_names: Колонки | |||||
132 | field_comments_sorting: Отображение комментариев |
|
132 | field_comments_sorting: Отображение комментариев | |
133 | field_comments: Комментарий |
|
133 | field_comments: Комментарий | |
134 | field_created_on: Создан |
|
134 | field_created_on: Создан | |
135 |
field_default_value: Значение по умолчанию |
|
135 | field_default_value: Значение по умолчанию | |
136 | field_delay: Отложить |
|
136 | field_delay: Отложить | |
137 | field_description: Описание |
|
137 | field_description: Описание | |
138 | field_done_ratio: Готовность в %% |
|
138 | field_done_ratio: Готовность в %% | |
@@ -173,17 +173,17 field_new_password: Новый пароль | |||||
173 | field_notes: Примечания |
|
173 | field_notes: Примечания | |
174 | field_onthefly: Создание пользователя на лету |
|
174 | field_onthefly: Создание пользователя на лету | |
175 | field_parent_title: Родительская страница |
|
175 | field_parent_title: Родительская страница | |
176 |
field_parent: Родительский проект |
|
176 | field_parent: Родительский проект | |
177 | field_password_confirmation: Подтверждение |
|
177 | field_password_confirmation: Подтверждение | |
178 | field_password: Пароль |
|
178 | field_password: Пароль | |
179 | field_port: Порт |
|
179 | field_port: Порт | |
180 |
field_possible_values: Возможные значения |
|
180 | field_possible_values: Возможные значения | |
181 | field_priority: Приоритет |
|
181 | field_priority: Приоритет | |
182 | field_project: Проект |
|
182 | field_project: Проект | |
183 | field_redirect_existing_links: Перенаправить существующие ссылки |
|
183 | field_redirect_existing_links: Перенаправить существующие ссылки | |
184 | field_regexp: Регулярное выражение |
|
184 | field_regexp: Регулярное выражение | |
185 | field_role: Роль |
|
185 | field_role: Роль | |
186 |
field_searchable: Доступно для поиска |
|
186 | field_searchable: Доступно для поиска | |
187 | field_spent_on: Дата |
|
187 | field_spent_on: Дата | |
188 | field_start_date: Начало |
|
188 | field_start_date: Начало | |
189 | field_start_page: Стартовая страница |
|
189 | field_start_page: Стартовая страница | |
@@ -212,7 +212,7 general_fmt_age_plural5: %d гг. | |||||
212 | general_fmt_age_plural: %d лет |
|
212 | general_fmt_age_plural: %d лет | |
213 | general_fmt_date: %%d.%%m.%%Y |
|
213 | general_fmt_date: %%d.%%m.%%Y | |
214 | general_fmt_datetime: %%d.%%m.%%Y %%I:%%M %%p |
|
214 | general_fmt_datetime: %%d.%%m.%%Y %%I:%%M %%p | |
215 |
general_fmt_datetime_short: %%d %%b, %%H:%%M |
|
215 | general_fmt_datetime_short: %%d %%b, %%H:%%M | |
216 | general_fmt_time: %%H:%%M |
|
216 | general_fmt_time: %%H:%%M | |
217 | general_lang_name: 'Russian (Русский)' |
|
217 | general_lang_name: 'Russian (Русский)' | |
218 | general_pdf_encoding: UTF-8 |
|
218 | general_pdf_encoding: UTF-8 | |
@@ -228,11 +228,11 gui_validation_error_plural: %d ошибок | |||||
228 |
|
228 | |||
229 | label_activity: Активность |
|
229 | label_activity: Активность | |
230 | label_add_another_file: Добавить ещё один файл |
|
230 | label_add_another_file: Добавить ещё один файл | |
231 |
label_added_time_by: Добав |
|
231 | label_added_time_by: Добавил(а) %s %s назад | |
232 | label_added: добавлено |
|
232 | label_added: добавлено | |
233 | label_add_note: Добавить замечание |
|
233 | label_add_note: Добавить замечание | |
234 | label_administration: Администрирование |
|
234 | label_administration: Администрирование | |
235 |
label_age: Возраст |
|
235 | label_age: Возраст | |
236 | label_ago: дней(я) назад |
|
236 | label_ago: дней(я) назад | |
237 | label_all_time: всё время |
|
237 | label_all_time: всё время | |
238 | label_all_words: Все слова |
|
238 | label_all_words: Все слова | |
@@ -251,8 +251,8 label_authentication: Аутентификация | |||||
251 | label_auth_source_new: Новый режим аутентификации |
|
251 | label_auth_source_new: Новый режим аутентификации | |
252 | label_auth_source_plural: Режимы аутентификации |
|
252 | label_auth_source_plural: Режимы аутентификации | |
253 | label_auth_source: Режим аутентификации |
|
253 | label_auth_source: Режим аутентификации | |
254 |
label_blocked_by: заблокировано |
|
254 | label_blocked_by: заблокировано | |
255 |
label_blocks: блокирует |
|
255 | label_blocks: блокирует | |
256 | label_board_new: Новый форум |
|
256 | label_board_new: Новый форум | |
257 | label_board_plural: Форумы |
|
257 | label_board_plural: Форумы | |
258 | label_board: Форум |
|
258 | label_board: Форум | |
@@ -266,10 +266,10 label_change_log: Журнал изменений | |||||
266 | label_change_plural: Правки |
|
266 | label_change_plural: Правки | |
267 | label_change_properties: Изменить свойства |
|
267 | label_change_properties: Изменить свойства | |
268 | label_changes_details: Подробности по всем изменениям |
|
268 | label_changes_details: Подробности по всем изменениям | |
269 |
label_changeset_plural: |
|
269 | label_changeset_plural: Хранилище | |
270 | label_change_status: Изменить статус |
|
270 | label_change_status: Изменить статус | |
271 | label_change_view_all: Просмотреть все изменения |
|
271 | label_change_view_all: Просмотреть все изменения | |
272 |
label_chronological_order: В хронологическом порядке |
|
272 | label_chronological_order: В хронологическом порядке | |
273 | label_closed_issues_plural2: закрыто |
|
273 | label_closed_issues_plural2: закрыто | |
274 | label_closed_issues_plural5: закрыто |
|
274 | label_closed_issues_plural5: закрыто | |
275 | label_closed_issues_plural: закрыто |
|
275 | label_closed_issues_plural: закрыто | |
@@ -285,7 +285,7 label_commits_per_author: Изменений на пользователя | |||||
285 | label_commits_per_month: Изменений в месяц |
|
285 | label_commits_per_month: Изменений в месяц | |
286 | label_confirmation: Подтверждение |
|
286 | label_confirmation: Подтверждение | |
287 | label_contains: содержит |
|
287 | label_contains: содержит | |
288 |
label_copy_workflow_from: Скопировать последовательность действий из |
|
288 | label_copy_workflow_from: Скопировать последовательность действий из | |
289 | label_current_status: Текущий статус |
|
289 | label_current_status: Текущий статус | |
290 | label_current_version: Текущая версия |
|
290 | label_current_version: Текущая версия | |
291 | label_custom_field_new: Новое настраиваемое поле |
|
291 | label_custom_field_new: Новое настраиваемое поле | |
@@ -363,7 +363,7 label_issue_status: Статус задачи | |||||
363 | label_issue_tracking: Ситуация по задачам |
|
363 | label_issue_tracking: Ситуация по задачам | |
364 | label_issue_updated: Задача обновлена |
|
364 | label_issue_updated: Задача обновлена | |
365 | label_issue_view_all: Просмотреть все задачи |
|
365 | label_issue_view_all: Просмотреть все задачи | |
366 |
label_issue_watchers: |
|
366 | label_issue_watchers: Наблюдатели | |
367 | label_issue: Задача |
|
367 | label_issue: Задача | |
368 | label_jump_to_a_project: Перейти к проекту... |
|
368 | label_jump_to_a_project: Перейти к проекту... | |
369 | label_language_based: На основе языка |
|
369 | label_language_based: На основе языка | |
@@ -379,7 +379,7 label_last_week: последняя неделю | |||||
379 | label_latest_revision_plural: Последние редакции |
|
379 | label_latest_revision_plural: Последние редакции | |
380 | label_latest_revision: Последняя редакция |
|
380 | label_latest_revision: Последняя редакция | |
381 | label_ldap_authentication: Авторизация с помощью LDAP |
|
381 | label_ldap_authentication: Авторизация с помощью LDAP | |
382 |
label_less_than_ago: менее, чем дней(я) назад |
|
382 | label_less_than_ago: менее, чем дней(я) назад | |
383 | label_list: Список |
|
383 | label_list: Список | |
384 | label_loading: Загрузка... |
|
384 | label_loading: Загрузка... | |
385 | label_logged_as: Вошел как |
|
385 | label_logged_as: Вошел как | |
@@ -396,14 +396,14 label_message_posted: Сообщение добавлено | |||||
396 | label_me: мне |
|
396 | label_me: мне | |
397 | label_min_max_length: Минимальная - максимальная длина |
|
397 | label_min_max_length: Минимальная - максимальная длина | |
398 | label_modification: %d изменение |
|
398 | label_modification: %d изменение | |
399 |
label_modification_plural2: %d изменени |
|
399 | label_modification_plural2: %d изменения | |
400 | label_modification_plural5: %d изменений |
|
400 | label_modification_plural5: %d изменений | |
401 | label_modification_plural: %d изменений |
|
401 | label_modification_plural: %d изменений | |
402 | label_modified: изменено |
|
402 | label_modified: изменено | |
403 | label_module_plural: Модули |
|
403 | label_module_plural: Модули | |
404 | label_months_from: месяцев(ца) с |
|
404 | label_months_from: месяцев(ца) с | |
405 | label_month: Месяц |
|
405 | label_month: Месяц | |
406 |
label_more_than_ago: более, чем дней(я) назад |
|
406 | label_more_than_ago: более, чем дней(я) назад | |
407 | label_more: Больше |
|
407 | label_more: Больше | |
408 | label_my_account: Моя учетная запись |
|
408 | label_my_account: Моя учетная запись | |
409 | label_my_page: Моя страница |
|
409 | label_my_page: Моя страница | |
@@ -420,7 +420,7 label_next: Следующий | |||||
420 | label_nobody: никто |
|
420 | label_nobody: никто | |
421 | label_no_change_option: (Нет изменений) |
|
421 | label_no_change_option: (Нет изменений) | |
422 | label_no_data: Нет данных для отображения |
|
422 | label_no_data: Нет данных для отображения | |
423 |
label_none: отсутствует |
|
423 | label_none: отсутствует | |
424 | label_not_contains: не содержит |
|
424 | label_not_contains: не содержит | |
425 | label_not_equals: не соответствует |
|
425 | label_not_equals: не соответствует | |
426 | label_on: 'из' |
|
426 | label_on: 'из' | |
@@ -432,7 +432,7 label_optional_description: Описание (опционально) | |||||
432 | label_options: Опции |
|
432 | label_options: Опции | |
433 | label_overall_activity: Сводная активность |
|
433 | label_overall_activity: Сводная активность | |
434 | label_overview: Просмотр |
|
434 | label_overview: Просмотр | |
435 |
label_password_lost: Восстановление пароля |
|
435 | label_password_lost: Восстановление пароля | |
436 | label_permissions_report: Отчет о правах доступа |
|
436 | label_permissions_report: Отчет о правах доступа | |
437 | label_permissions: Права доступа |
|
437 | label_permissions: Права доступа | |
438 | label_per_page: На страницу |
|
438 | label_per_page: На страницу | |
@@ -456,7 +456,7 label_query_new: Новый запрос | |||||
456 | label_query_plural: Сохраненные запросы |
|
456 | label_query_plural: Сохраненные запросы | |
457 | label_query: Сохраненный запрос |
|
457 | label_query: Сохраненный запрос | |
458 | label_read: Чтение... |
|
458 | label_read: Чтение... | |
459 |
label_registered_on: Зарегистрирован(а) |
|
459 | label_registered_on: Зарегистрирован(а) | |
460 | label_register: Регистрация |
|
460 | label_register: Регистрация | |
461 | label_registration_activation_by_email: активация учетных записей по email |
|
461 | label_registration_activation_by_email: активация учетных записей по email | |
462 | label_registration_automatic_activation: автоматическая активация учетных записей |
|
462 | label_registration_automatic_activation: автоматическая активация учетных записей | |
@@ -475,7 +475,7 label_result_plural: Результаты | |||||
475 | label_reverse_chronological_order: В обратном порядке |
|
475 | label_reverse_chronological_order: В обратном порядке | |
476 | label_revision_plural: Редакции |
|
476 | label_revision_plural: Редакции | |
477 | label_revision: Редакция |
|
477 | label_revision: Редакция | |
478 |
label_roadmap_due_in: Вовремя |
|
478 | label_roadmap_due_in: Вовремя | |
479 | label_roadmap_no_issues: Нет задач для данной версии |
|
479 | label_roadmap_no_issues: Нет задач для данной версии | |
480 | label_roadmap_overdue: %s опоздание |
|
480 | label_roadmap_overdue: %s опоздание | |
481 | label_roadmap: Оперативный план |
|
481 | label_roadmap: Оперативный план | |
@@ -499,7 +499,7 label_spent_time: Затраченное время | |||||
499 | label_start_to_end: с начала к концу |
|
499 | label_start_to_end: с начала к концу | |
500 | label_start_to_start: с начала к началу |
|
500 | label_start_to_start: с начала к началу | |
501 | label_statistics: Статистика |
|
501 | label_statistics: Статистика | |
502 |
label_stay_logged_in: Оставаться в системе |
|
502 | label_stay_logged_in: Оставаться в системе | |
503 | label_string: Текст |
|
503 | label_string: Текст | |
504 | label_subproject_plural: Подпроекты |
|
504 | label_subproject_plural: Подпроекты | |
505 | label_text: Длинный текст |
|
505 | label_text: Длинный текст | |
@@ -529,7 +529,7 label_version_plural: Версии | |||||
529 | label_version: Версия |
|
529 | label_version: Версия | |
530 | label_view_diff: Просмотреть отличия |
|
530 | label_view_diff: Просмотреть отличия | |
531 | label_view_revisions: Просмотреть редакции |
|
531 | label_view_revisions: Просмотреть редакции | |
532 |
label_watched_issues: Отслеживаемые задачи |
|
532 | label_watched_issues: Отслеживаемые задачи | |
533 | label_week: Неделя |
|
533 | label_week: Неделя | |
534 | label_wiki_edit_plural: Редактирования Wiki |
|
534 | label_wiki_edit_plural: Редактирования Wiki | |
535 | label_wiki_edit: Редактирование Wiki |
|
535 | label_wiki_edit: Редактирование Wiki | |
@@ -545,18 +545,18 mail_body_account_information_external: Вы можете использоват | |||||
545 | mail_body_account_information: Информация о Вашей учетной записи |
|
545 | mail_body_account_information: Информация о Вашей учетной записи | |
546 | mail_body_lost_password: 'Для изменения пароля зайдите по следующей ссылке:' |
|
546 | mail_body_lost_password: 'Для изменения пароля зайдите по следующей ссылке:' | |
547 | mail_body_register: 'Для активации учетной записи зайдите по следующей ссылке:' |
|
547 | mail_body_register: 'Для активации учетной записи зайдите по следующей ссылке:' | |
548 |
mail_body_reminder: "%d назначенных на |
|
548 | mail_body_reminder: "%d назначенных на Вас задач на следующие %d дней:" | |
549 | mail_subject_account_activation_request: Запрос на активацию пользователя в системе %s |
|
549 | mail_subject_account_activation_request: Запрос на активацию пользователя в системе %s | |
550 | mail_subject_lost_password: Ваш %s пароль |
|
550 | mail_subject_lost_password: Ваш %s пароль | |
551 | mail_subject_register: Активация учетной записи %s |
|
551 | mail_subject_register: Активация учетной записи %s | |
552 |
mail_subject_reminder: "%d назначенных на |
|
552 | mail_subject_reminder: "%d назначенных на Вас задач в ближайшие дни" | |
553 |
|
553 | |||
554 | notice_account_activated: Ваша учетная запись активирована. Вы можете войти. |
|
554 | notice_account_activated: Ваша учетная запись активирована. Вы можете войти. | |
555 | notice_account_invalid_creditentials: Неправильное имя пользователя или пароль |
|
555 | notice_account_invalid_creditentials: Неправильное имя пользователя или пароль | |
556 | notice_account_lost_email_sent: Вам отправлено письмо с инструкциями по выбору нового пароля. |
|
556 | notice_account_lost_email_sent: Вам отправлено письмо с инструкциями по выбору нового пароля. | |
557 | notice_account_password_updated: Пароль успешно обновлен. |
|
557 | notice_account_password_updated: Пароль успешно обновлен. | |
558 | notice_account_pending: "Ваша учетная запись уже создан и ожидает подтверждения администратора." |
|
558 | notice_account_pending: "Ваша учетная запись уже создана и ожидает подтверждения администратора." | |
559 |
notice_account_register_done: Учетная запись успешно создана. Для активации Вашей учетной записи зайдите по ссылке, которая выслана |
|
559 | notice_account_register_done: Учетная запись успешно создана. Для активации Вашей учетной записи зайдите по ссылке, которая выслана Вам по электронной почте. | |
560 | notice_account_unknown_email: Неизвестный пользователь. |
|
560 | notice_account_unknown_email: Неизвестный пользователь. | |
561 | notice_account_updated: Учетная запись успешно обновлена. |
|
561 | notice_account_updated: Учетная запись успешно обновлена. | |
562 | notice_account_wrong_password: Неверный пароль |
|
562 | notice_account_wrong_password: Неверный пароль | |
@@ -569,14 +569,14 notice_feeds_access_key_reseted: Ваш ключ доступа RSS был пе | |||||
569 | notice_file_not_found: Страница, на которую Вы пытаетесь зайти, не существует или удалена. |
|
569 | notice_file_not_found: Страница, на которую Вы пытаетесь зайти, не существует или удалена. | |
570 | notice_locking_conflict: Информация обновлена другим пользователем. |
|
570 | notice_locking_conflict: Информация обновлена другим пользователем. | |
571 | notice_no_issue_selected: "Не выбрано ни одной задачи! Пожалуйста, отметьте задачи, которые Вы хотите отредактировать." |
|
571 | notice_no_issue_selected: "Не выбрано ни одной задачи! Пожалуйста, отметьте задачи, которые Вы хотите отредактировать." | |
572 |
notice_not_authorized: У |
|
572 | notice_not_authorized: У Вас нет прав для посещения данной страницы. | |
573 | notice_successful_connection: Подключение успешно установлено. |
|
573 | notice_successful_connection: Подключение успешно установлено. | |
574 | notice_successful_create: Создание успешно завершено. |
|
574 | notice_successful_create: Создание успешно завершено. | |
575 | notice_successful_delete: Удаление успешно завершено. |
|
575 | notice_successful_delete: Удаление успешно завершено. | |
576 | notice_successful_update: Обновление успешно завершено. |
|
576 | notice_successful_update: Обновление успешно завершено. | |
577 | notice_unable_delete_version: Невозможно удалить версию. |
|
577 | notice_unable_delete_version: Невозможно удалить версию. | |
578 |
|
578 | |||
579 |
project_module_boards: Форумы |
|
579 | project_module_boards: Форумы | |
580 | project_module_documents: Документы |
|
580 | project_module_documents: Документы | |
581 | project_module_files: Файлы |
|
581 | project_module_files: Файлы | |
582 | project_module_issue_tracking: Задачи |
|
582 | project_module_issue_tracking: Задачи | |
@@ -586,14 +586,14 project_module_time_tracking: Учет времени | |||||
586 | project_module_wiki: Wiki |
|
586 | project_module_wiki: Wiki | |
587 |
|
587 | |||
588 | setting_activity_days_default: Количество дней, отображаемых в Активности |
|
588 | setting_activity_days_default: Количество дней, отображаемых в Активности | |
589 |
setting_app_subtitle: Подзаголовок приложения |
|
589 | setting_app_subtitle: Подзаголовок приложения | |
590 | setting_app_title: Название приложения |
|
590 | setting_app_title: Название приложения | |
591 | setting_attachment_max_size: Максимальный размер вложения |
|
591 | setting_attachment_max_size: Максимальный размер вложения | |
592 | setting_autofetch_changesets: Автоматически следить за изменениями хранилища |
|
592 | setting_autofetch_changesets: Автоматически следить за изменениями хранилища | |
593 | setting_autologin: Автоматический вход |
|
593 | setting_autologin: Автоматический вход | |
594 | setting_bcc_recipients: Использовать скрытые списки (bcc) |
|
594 | setting_bcc_recipients: Использовать скрытые списки (bcc) | |
595 | setting_commit_fix_keywords: Назначение ключевых слов |
|
595 | setting_commit_fix_keywords: Назначение ключевых слов | |
596 |
setting_commit_logs_encoding: Кодировка |
|
596 | setting_commit_logs_encoding: Кодировка комментариев в хранилище | |
597 | setting_commit_ref_keywords: Ключевые слова для поиска |
|
597 | setting_commit_ref_keywords: Ключевые слова для поиска | |
598 | setting_cross_project_issue_relations: Разрешить пересечение задач по проектам |
|
598 | setting_cross_project_issue_relations: Разрешить пересечение задач по проектам | |
599 | setting_date_format: Формат даты |
|
599 | setting_date_format: Формат даты | |
@@ -617,15 +617,15 setting_self_registration: Возможна саморегистрация | |||||
617 | setting_sequential_project_identifiers: Генерировать последовательные идентификаторы проектов |
|
617 | setting_sequential_project_identifiers: Генерировать последовательные идентификаторы проектов | |
618 | setting_sys_api_enabled: Разрешить WS для управления хранилищем |
|
618 | setting_sys_api_enabled: Разрешить WS для управления хранилищем | |
619 | setting_text_formatting: Форматирование текста |
|
619 | setting_text_formatting: Форматирование текста | |
620 |
setting_time_format: Формат времени |
|
620 | setting_time_format: Формат времени | |
621 | setting_user_format: Формат отображения имени |
|
621 | setting_user_format: Формат отображения имени | |
622 | setting_welcome_text: Текст приветствия |
|
622 | setting_welcome_text: Текст приветствия | |
623 | setting_wiki_compression: Сжатие истории Wiki |
|
623 | setting_wiki_compression: Сжатие истории Wiki | |
624 |
|
624 | |||
625 | status_active: активен |
|
625 | status_active: активен | |
626 | status_locked: закрыт |
|
626 | status_locked: закрыт | |
627 |
|
||||
628 | status_registered: зарегистрирован |
|
627 | status_registered: зарегистрирован | |
|
628 | ||||
629 | text_are_you_sure: Подтвердите |
|
629 | text_are_you_sure: Подтвердите | |
630 | text_assign_time_entries_to_project: Прикрепить зарегистрированное время к проекту |
|
630 | text_assign_time_entries_to_project: Прикрепить зарегистрированное время к проекту | |
631 | text_caracters_maximum: Максимум %d символов(а). |
|
631 | text_caracters_maximum: Максимум %d символов(а). | |
@@ -640,7 +640,7 text_enumeration_destroy_question: '%d объект(а,ов) связаны с | |||||
640 | text_file_repository_writable: Хранилище с доступом на запись |
|
640 | text_file_repository_writable: Хранилище с доступом на запись | |
641 | text_issue_added: По задаче %s был создан отчет (%s). |
|
641 | text_issue_added: По задаче %s был создан отчет (%s). | |
642 | text_issue_category_destroy_assignments: Удалить назначения категории |
|
642 | text_issue_category_destroy_assignments: Удалить назначения категории | |
643 |
text_issue_category_destroy_question: Несколько задач (%d) назначено в данную категорию. Что |
|
643 | text_issue_category_destroy_question: Несколько задач (%d) назначено в данную категорию. Что Вы хотите предпринять? | |
644 | text_issue_category_reassign_to: Переназначить задачи для данной категории |
|
644 | text_issue_category_reassign_to: Переназначить задачи для данной категории | |
645 | text_issues_destroy_confirmation: 'Вы уверены, что хотите удалить выбранные задачи?' |
|
645 | text_issues_destroy_confirmation: 'Вы уверены, что хотите удалить выбранные задачи?' | |
646 | text_issues_ref_in_commit_messages: Сопоставление и изменение статуса задач исходя из текста сообщений |
|
646 | text_issues_ref_in_commit_messages: Сопоставление и изменение статуса задач исходя из текста сообщений | |
@@ -666,7 +666,9 text_tip_task_begin_end_day: начало задачи и окончание е | |||||
666 | text_tip_task_end_day: дата завершения задачи |
|
666 | text_tip_task_end_day: дата завершения задачи | |
667 | text_tracker_no_workflow: Для этого трекера последовательность действий не определена |
|
667 | text_tracker_no_workflow: Для этого трекера последовательность действий не определена | |
668 | text_unallowed_characters: Запрещенные символы |
|
668 | text_unallowed_characters: Запрещенные символы | |
669 |
text_user_mail_option: "Для невыбранных проектов, Вы будете получать уведомления только о том что просматриваете или в чем участвуете (например, вопросы автором которых |
|
669 | text_user_mail_option: "Для невыбранных проектов, Вы будете получать уведомления только о том что просматриваете или в чем участвуете (например, вопросы, автором которых Вы являетесь или которые Вам назначены)." | |
670 | text_user_wrote: '%s написал(а):' |
|
670 | text_user_wrote: '%s написал(а):' | |
671 |
text_wiki_destroy_confirmation: Вы уверены, что хотите удалить данную |
|
671 | text_wiki_destroy_confirmation: Вы уверены, что хотите удалить данную Wiki и все содержимое? | |
672 | text_workflow_edit: Выберите роль и трекер для редактирования последовательности состояний |
|
672 | text_workflow_edit: Выберите роль и трекер для редактирования последовательности состояний | |
|
673 | label_renamed: renamed | |||
|
674 | label_copied: copied |
@@ -639,3 +639,5 setting_commit_logs_encoding: Commit messages encoding | |||||
639 | button_quote: Quote |
|
639 | button_quote: Quote | |
640 | setting_sequential_project_identifiers: Generate sequential project identifiers |
|
640 | setting_sequential_project_identifiers: Generate sequential project identifiers | |
641 | notice_unable_delete_version: Unable to delete version |
|
641 | notice_unable_delete_version: Unable to delete version | |
|
642 | label_renamed: renamed | |||
|
643 | label_copied: copied |
@@ -639,3 +639,5 setting_commit_logs_encoding: Commit messages encoding | |||||
639 | button_quote: Quote |
|
639 | button_quote: Quote | |
640 | setting_sequential_project_identifiers: Generate sequential project identifiers |
|
640 | setting_sequential_project_identifiers: Generate sequential project identifiers | |
641 | notice_unable_delete_version: Unable to delete version |
|
641 | notice_unable_delete_version: Unable to delete version | |
|
642 | label_renamed: renamed | |||
|
643 | label_copied: copied |
@@ -641,3 +641,5 setting_commit_logs_encoding: Commit messages encoding | |||||
641 | button_quote: Quote |
|
641 | button_quote: Quote | |
642 | setting_sequential_project_identifiers: Generate sequential project identifiers |
|
642 | setting_sequential_project_identifiers: Generate sequential project identifiers | |
643 | notice_unable_delete_version: Unable to delete version |
|
643 | notice_unable_delete_version: Unable to delete version | |
|
644 | label_renamed: renamed | |||
|
645 | label_copied: copied |
@@ -639,3 +639,5 setting_mail_handler_api_key: API key | |||||
639 | setting_commit_logs_encoding: Commit messages encoding |
|
639 | setting_commit_logs_encoding: Commit messages encoding | |
640 | general_csv_decimal_separator: '.' |
|
640 | general_csv_decimal_separator: '.' | |
641 | notice_unable_delete_version: Unable to delete version |
|
641 | notice_unable_delete_version: Unable to delete version | |
|
642 | label_renamed: renamed | |||
|
643 | label_copied: copied |
@@ -640,3 +640,5 setting_commit_logs_encoding: Commit messages encoding | |||||
640 | button_quote: Quote |
|
640 | button_quote: Quote | |
641 | setting_sequential_project_identifiers: Generate sequential project identifiers |
|
641 | setting_sequential_project_identifiers: Generate sequential project identifiers | |
642 | notice_unable_delete_version: Unable to delete version |
|
642 | notice_unable_delete_version: Unable to delete version | |
|
643 | label_renamed: renamed | |||
|
644 | label_copied: copied |
@@ -77,6 +77,7 notice_failed_to_save_issues: " %d 個項目儲存失敗 (總共選取 %d 個項 | |||||
77 | notice_no_issue_selected: "未選擇任何項目!請勾選您想要編輯的項目。" |
|
77 | notice_no_issue_selected: "未選擇任何項目!請勾選您想要編輯的項目。" | |
78 | notice_account_pending: "您的帳號已經建立,正在等待管理員的審核。" |
|
78 | notice_account_pending: "您的帳號已經建立,正在等待管理員的審核。" | |
79 | notice_default_data_loaded: 預設組態已載入成功。 |
|
79 | notice_default_data_loaded: 預設組態已載入成功。 | |
|
80 | notice_unable_delete_version: 無法刪除版本。 | |||
80 |
|
81 | |||
81 | error_can_t_load_default_data: "無法載入預設組態: %s" |
|
82 | error_can_t_load_default_data: "無法載入預設組態: %s" | |
82 | error_scm_not_found: SCM 儲存庫中找不到這個專案或版本。 |
|
83 | error_scm_not_found: SCM 儲存庫中找不到這個專案或版本。 | |
@@ -638,4 +639,5 default_activity_development: 開發 | |||||
638 | enumeration_issue_priorities: 項目優先權 |
|
639 | enumeration_issue_priorities: 項目優先權 | |
639 | enumeration_doc_categories: 文件分類 |
|
640 | enumeration_doc_categories: 文件分類 | |
640 | enumeration_activities: 活動 (時間追蹤) |
|
641 | enumeration_activities: 活動 (時間追蹤) | |
641 | notice_unable_delete_version: Unable to delete version |
|
642 | label_renamed: renamed | |
|
643 | label_copied: copied |
@@ -77,6 +77,7 notice_failed_to_save_issues: "%d 个问题保存失败(共选择 %d 个问题 | |||||
77 | notice_no_issue_selected: "未选择任何问题!请选择您要编辑的问题。" |
|
77 | notice_no_issue_selected: "未选择任何问题!请选择您要编辑的问题。" | |
78 | notice_account_pending: "您的帐号已被成功创建,正在等待管理员的审核。" |
|
78 | notice_account_pending: "您的帐号已被成功创建,正在等待管理员的审核。" | |
79 | notice_default_data_loaded: 成功载入默认设置。 |
|
79 | notice_default_data_loaded: 成功载入默认设置。 | |
|
80 | notice_unable_delete_version: 无法删除版本 | |||
80 |
|
81 | |||
81 | error_can_t_load_default_data: "无法载入默认设置:%s" |
|
82 | error_can_t_load_default_data: "无法载入默认设置:%s" | |
82 | error_scm_not_found: "版本库中不存在该条目和(或)其修订版本。" |
|
83 | error_scm_not_found: "版本库中不存在该条目和(或)其修订版本。" | |
@@ -219,6 +220,7 setting_display_subprojects_issues: 在项目页面上默认显示子项目的 | |||||
219 | setting_enabled_scm: 启用 SCM |
|
220 | setting_enabled_scm: 启用 SCM | |
220 | setting_mail_handler_api_enabled: 启用用于接收邮件的Web Service |
|
221 | setting_mail_handler_api_enabled: 启用用于接收邮件的Web Service | |
221 | setting_mail_handler_api_key: API key |
|
222 | setting_mail_handler_api_key: API key | |
|
223 | setting_sequential_project_identifiers: 顺序产生项目标识 | |||
222 |
|
224 | |||
223 | project_module_issue_tracking: 问题跟踪 |
|
225 | project_module_issue_tracking: 问题跟踪 | |
224 | project_module_time_tracking: 时间跟踪 |
|
226 | project_module_time_tracking: 时间跟踪 | |
@@ -561,6 +563,7 button_copy: 复制 | |||||
561 | button_annotate: 追溯 |
|
563 | button_annotate: 追溯 | |
562 | button_update: 更新 |
|
564 | button_update: 更新 | |
563 | button_configure: 配置 |
|
565 | button_configure: 配置 | |
|
566 | button_quote: 引用 | |||
564 |
|
567 | |||
565 | status_active: 活动的 |
|
568 | status_active: 活动的 | |
566 | status_registered: 已注册 |
|
569 | status_registered: 已注册 | |
@@ -636,6 +639,5 default_activity_development: 开发 | |||||
636 | enumeration_issue_priorities: 问题优先级 |
|
639 | enumeration_issue_priorities: 问题优先级 | |
637 | enumeration_doc_categories: 文档类别 |
|
640 | enumeration_doc_categories: 文档类别 | |
638 | enumeration_activities: 活动(时间跟踪) |
|
641 | enumeration_activities: 活动(时间跟踪) | |
639 | button_quote: Quote |
|
642 | label_renamed: renamed | |
640 | setting_sequential_project_identifiers: Generate sequential project identifiers |
|
643 | label_copied: copied | |
641 | notice_unable_delete_version: Unable to delete version |
|
@@ -788,10 +788,10 class RedCloth3 < String | |||||
788 | ": |
|
788 | ": | |
789 | ([\w\/]\S+?) # $url |
|
789 | ([\w\/]\S+?) # $url | |
790 | (\/)? # $slash |
|
790 | (\/)? # $slash | |
791 |
([^\w\/;]*?) |
|
791 | ([^\w\=\/;\(\)]*?) # $post | |
792 | (?=<|\s|$) |
|
792 | (?=<|\s|$) | |
793 | /x |
|
793 | /x | |
794 |
|
794 | #" | ||
795 | def inline_textile_link( text ) |
|
795 | def inline_textile_link( text ) | |
796 | text.gsub!( LINK_RE ) do |m| |
|
796 | text.gsub!( LINK_RE ) do |m| | |
797 | pre,atts,text,title,url,slash,post = $~[1..7] |
|
797 | pre,atts,text,title,url,slash,post = $~[1..7] | |
@@ -799,6 +799,12 class RedCloth3 < String | |||||
799 | url, url_title = check_refs( url ) |
|
799 | url, url_title = check_refs( url ) | |
800 | title ||= url_title |
|
800 | title ||= url_title | |
801 |
|
801 | |||
|
802 | # Idea below : an URL with unbalanced parethesis and | |||
|
803 | # ending by ')' is put into external parenthesis | |||
|
804 | if ( url[-1]==?) and ((url.count("(") - url.count(")")) < 0 ) ) | |||
|
805 | url=url[0..-2] # discard closing parenth from url | |||
|
806 | post = ")"+post # add closing parenth to post | |||
|
807 | end | |||
802 | atts = pba( atts ) |
|
808 | atts = pba( atts ) | |
803 | atts = " href=\"#{ url }#{ slash }\"#{ atts }" |
|
809 | atts = " href=\"#{ url }#{ slash }\"#{ atts }" | |
804 | atts << " title=\"#{ title }\"" if title |
|
810 | atts << " title=\"#{ title }\"" if title |
@@ -144,7 +144,7 module Redmine | |||||
144 | (\S+?) # url |
|
144 | (\S+?) # url | |
145 | (\/)? # slash |
|
145 | (\/)? # slash | |
146 | ) |
|
146 | ) | |
147 | ([^\w\=\/;]*?) # post |
|
147 | ([^\w\=\/;\(\)]*?) # post | |
148 | (?=<|\s|$) |
|
148 | (?=<|\s|$) | |
149 | }x unless const_defined?(:AUTO_LINK_RE) |
|
149 | }x unless const_defined?(:AUTO_LINK_RE) | |
150 |
|
150 | |||
@@ -156,7 +156,13 module Redmine | |||||
156 | # don't replace URL's that are already linked |
|
156 | # don't replace URL's that are already linked | |
157 | # and URL's prefixed with ! !> !< != (textile images) |
|
157 | # and URL's prefixed with ! !> !< != (textile images) | |
158 | all |
|
158 | all | |
159 |
else |
|
159 | else | |
|
160 | # Idea below : an URL with unbalanced parethesis and | |||
|
161 | # ending by ')' is put into external parenthesis | |||
|
162 | if ( url[-1]==?) and ((url.count("(") - url.count(")")) < 0 ) ) | |||
|
163 | url=url[0..-2] # discard closing parenth from url | |||
|
164 | post = ")"+post # add closing parenth to post | |||
|
165 | end | |||
160 | %(#{leading}<a class="external" href="#{proto=="www."?"http://www.":proto}#{url}">#{proto + url}</a>#{post}) |
|
166 | %(#{leading}<a class="external" href="#{proto=="www."?"http://www.":proto}#{url}">#{proto + url}</a>#{post}) | |
161 | end |
|
167 | end | |
162 | end |
|
168 | end |
@@ -582,7 +582,6 vertical-align: middle; | |||||
582 | .icon-mypage { background-image: url(../images/user_page.png); } |
|
582 | .icon-mypage { background-image: url(../images/user_page.png); } | |
583 | .icon-admin { background-image: url(../images/admin.png); } |
|
583 | .icon-admin { background-image: url(../images/admin.png); } | |
584 | .icon-projects { background-image: url(../images/projects.png); } |
|
584 | .icon-projects { background-image: url(../images/projects.png); } | |
585 | .icon-logout { background-image: url(../images/logout.png); } |
|
|||
586 | .icon-help { background-image: url(../images/help.png); } |
|
585 | .icon-help { background-image: url(../images/help.png); } | |
587 | .icon-attachment { background-image: url(../images/attachment.png); } |
|
586 | .icon-attachment { background-image: url(../images/attachment.png); } | |
588 | .icon-index { background-image: url(../images/index.png); } |
|
587 | .icon-index { background-image: url(../images/index.png); } |
@@ -60,15 +60,9 | |||||
60 | .jstb_del { |
|
60 | .jstb_del { | |
61 | background-image: url(../images/jstoolbar/bt_del.png); |
|
61 | background-image: url(../images/jstoolbar/bt_del.png); | |
62 | } |
|
62 | } | |
63 | .jstb_quote { |
|
|||
64 | background-image: url(../images/jstoolbar/bt_quote.png); |
|
|||
65 | } |
|
|||
66 | .jstb_code { |
|
63 | .jstb_code { | |
67 | background-image: url(../images/jstoolbar/bt_code.png); |
|
64 | background-image: url(../images/jstoolbar/bt_code.png); | |
68 | } |
|
65 | } | |
69 | .jstb_br { |
|
|||
70 | background-image: url(../images/jstoolbar/bt_br.png); |
|
|||
71 | } |
|
|||
72 | .jstb_h1 { |
|
66 | .jstb_h1 { | |
73 | background-image: url(../images/jstoolbar/bt_h1.png); |
|
67 | background-image: url(../images/jstoolbar/bt_h1.png); | |
74 | } |
|
68 | } |
@@ -1,4 +1,32 | |||||
1 |
|
1 | |||
|
2 | div.changeset-changes ul { margin: 0; padding: 0; } | |||
|
3 | div.changeset-changes ul > ul { margin-left: 18px; padding: 0; } | |||
|
4 | ||||
|
5 | li.change { | |||
|
6 | list-style-type:none; | |||
|
7 | background-image: url(../images/bullet_black.png); | |||
|
8 | background-position: 1px 1px; | |||
|
9 | background-repeat: no-repeat; | |||
|
10 | padding-top: 1px; | |||
|
11 | padding-bottom: 1px; | |||
|
12 | padding-left: 20px; | |||
|
13 | margin: 0; | |||
|
14 | } | |||
|
15 | li.change.folder { background-image: url(../images/folder_open.png); } | |||
|
16 | li.change.folder.change-A { background-image: url(../images/folder_open_add.png); } | |||
|
17 | li.change.folder.change-M { background-image: url(../images/folder_open_orange.png); } | |||
|
18 | li.change.change-A { background-image: url(../images/bullet_add.png); } | |||
|
19 | li.change.change-M { background-image: url(../images/bullet_orange.png); } | |||
|
20 | li.change.change-C { background-image: url(../images/bullet_blue.png); } | |||
|
21 | li.change.change-R { background-image: url(../images/bullet_purple.png); } | |||
|
22 | li.change.change-D { background-image: url(../images/bullet_delete.png); } | |||
|
23 | ||||
|
24 | li.change .copied-from { font-style: italic; color: #999; font-size: 0.9em; } | |||
|
25 | li.change .copied-from:before { content: " - "} | |||
|
26 | ||||
|
27 | #changes-legend { float: right; font-size: 0.8em; margin: 0; } | |||
|
28 | #changes-legend li { float: left; background-position: 5px 0; } | |||
|
29 | ||||
2 | table.filecontent { border: 1px solid #ccc; border-collapse: collapse; width:98%; } |
|
30 | table.filecontent { border: 1px solid #ccc; border-collapse: collapse; width:98%; } | |
3 | table.filecontent th { border: 1px solid #ccc; background-color: #eee; } |
|
31 | table.filecontent th { border: 1px solid #ccc; background-color: #eee; } | |
4 | table.filecontent th.filename { background-color: #e4e4d4; text-align: left; padding: 0.2em;} |
|
32 | table.filecontent th.filename { background-color: #e4e4d4; text-align: left; padding: 0.2em;} |
@@ -125,16 +125,18 class RepositoriesSubversionControllerTest < Test::Unit::TestCase | |||||
125 | get :revision, :id => 1, :rev => 2 |
|
125 | get :revision, :id => 1, :rev => 2 | |
126 | assert_response :success |
|
126 | assert_response :success | |
127 | assert_template 'revision' |
|
127 | assert_template 'revision' | |
128 |
assert_tag :tag => ' |
|
128 | assert_tag :tag => 'ul', | |
129 |
:child => { :tag => ' |
|
129 | :child => { :tag => 'li', | |
130 | # link to the entry at rev 2 |
|
130 | # link to the entry at rev 2 | |
131 | :child => { :tag => 'a', :attributes => {:href => 'repositories/entry/ecookbook/test/some/path/in/the/repo?rev=2'}, |
|
131 | :child => { :tag => 'a', | |
132 |
|
|
132 | :attributes => {:href => '/repositories/entry/ecookbook/test/some/path/in/the/repo?rev=2'}, | |
133 |
|
|
133 | :content => 'repo', | |
134 | :child => { :tag => 'td', |
|
134 | # link to partial diff | |
135 |
|
|
135 | :sibling => { :tag => 'a', | |
136 |
|
|
136 | :attributes => { :href => '/repositories/diff/ecookbook/test/some/path/in/the/repo?rev=2' } | |
137 | } |
|
137 | } | |
|
138 | } | |||
|
139 | } | |||
138 | end |
|
140 | end | |
139 |
|
141 | |||
140 | def test_revision_with_repository_pointing_to_a_subdirectory |
|
142 | def test_revision_with_repository_pointing_to_a_subdirectory | |
@@ -145,11 +147,18 class RepositoriesSubversionControllerTest < Test::Unit::TestCase | |||||
145 | get :revision, :id => 1, :rev => 2 |
|
147 | get :revision, :id => 1, :rev => 2 | |
146 | assert_response :success |
|
148 | assert_response :success | |
147 | assert_template 'revision' |
|
149 | assert_template 'revision' | |
148 |
assert_tag :tag => ' |
|
150 | assert_tag :tag => 'ul', | |
149 |
:child => { :tag => ' |
|
151 | :child => { :tag => 'li', | |
150 | :child => { :tag => 'td', |
|
152 | # link to the entry at rev 2 | |
151 | :child => { :tag => 'a', :attributes => { :href => '/repositories/diff/ecookbook/path/in/the/repo?rev=2' } } |
|
153 | :child => { :tag => 'a', | |
152 | } |
|
154 | :attributes => {:href => '/repositories/entry/ecookbook/path/in/the/repo?rev=2'}, | |
|
155 | :content => 'repo', | |||
|
156 | # link to partial diff | |||
|
157 | :sibling => { :tag => 'a', | |||
|
158 | :attributes => { :href => '/repositories/diff/ecookbook/path/in/the/repo?rev=2' } | |||
|
159 | } | |||
|
160 | } | |||
|
161 | } | |||
153 | end |
|
162 | end | |
154 |
|
163 | |||
155 | def test_diff |
|
164 | def test_diff |
@@ -38,10 +38,18 class ApplicationHelperTest < HelperTestCase | |||||
38 | 'This is a link: http://foo.bar.' => 'This is a link: <a class="external" href="http://foo.bar">http://foo.bar</a>.', |
|
38 | 'This is a link: http://foo.bar.' => 'This is a link: <a class="external" href="http://foo.bar">http://foo.bar</a>.', | |
39 | 'A link (eg. http://foo.bar).' => 'A link (eg. <a class="external" href="http://foo.bar">http://foo.bar</a>).', |
|
39 | 'A link (eg. http://foo.bar).' => 'A link (eg. <a class="external" href="http://foo.bar">http://foo.bar</a>).', | |
40 | '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>.', |
|
40 | '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>.', | |
|
41 | 'http://www.foo.bar/Test_(foobar)' => '<a class="external" href="http://www.foo.bar/Test_(foobar)">http://www.foo.bar/Test_(foobar)</a>', | |||
|
42 | '(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>)', | |||
|
43 | '(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>)', | |||
|
44 | '(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>).', | |||
|
45 | '(see "inline link":http://www.foo.bar/Test_(foobar))' => '(see <a href="http://www.foo.bar/Test_(foobar)" class="external">inline link</a>)', | |||
|
46 | '(see "inline link":http://www.foo.bar/Test)' => '(see <a href="http://www.foo.bar/Test" class="external">inline link</a>)', | |||
|
47 | '(see "inline link":http://www.foo.bar/Test).' => '(see <a href="http://www.foo.bar/Test" class="external">inline link</a>).', | |||
41 | 'www.foo.bar' => '<a class="external" href="http://www.foo.bar">www.foo.bar</a>', |
|
48 | 'www.foo.bar' => '<a class="external" href="http://www.foo.bar">www.foo.bar</a>', | |
42 | 'http://foo.bar/page?p=1&t=z&s=' => '<a class="external" href="http://foo.bar/page?p=1&t=z&s=">http://foo.bar/page?p=1&t=z&s=</a>', |
|
49 | 'http://foo.bar/page?p=1&t=z&s=' => '<a class="external" href="http://foo.bar/page?p=1&t=z&s=">http://foo.bar/page?p=1&t=z&s=</a>', | |
43 | 'http://foo.bar/page#125' => '<a class="external" href="http://foo.bar/page#125">http://foo.bar/page#125</a>', |
|
50 | 'http://foo.bar/page#125' => '<a class="external" href="http://foo.bar/page#125">http://foo.bar/page#125</a>', | |
44 | 'http://foo@www.bar.com' => '<a class="external" href="http://foo@www.bar.com">http://foo@www.bar.com</a>', |
|
51 | 'http://foo@www.bar.com' => '<a class="external" href="http://foo@www.bar.com">http://foo@www.bar.com</a>', | |
|
52 | 'http://foo:bar@www.bar.com' => '<a class="external" href="http://foo:bar@www.bar.com">http://foo:bar@www.bar.com</a>', | |||
45 | 'ftp://foo.bar' => '<a class="external" href="ftp://foo.bar">ftp://foo.bar</a>', |
|
53 | 'ftp://foo.bar' => '<a class="external" href="ftp://foo.bar">ftp://foo.bar</a>', | |
46 | } |
|
54 | } | |
47 | to_test.each { |text, result| assert_equal "<p>#{result}</p>", textilizable(text) } |
|
55 | to_test.each { |text, result| assert_equal "<p>#{result}</p>", textilizable(text) } |
General Comments 0
You need to be logged in to leave comments.
Login now