Fixed determination of a multi-part browser language such as pt-br.
[timetracker.git] / WEB-INF / resources / pt-br.lang.php
1 <?php
2 // +----------------------------------------------------------------------+
3 // | Anuko Time Tracker
4 // +----------------------------------------------------------------------+
5 // | Copyright (c) Anuko International Ltd. (https://www.anuko.com)
6 // +----------------------------------------------------------------------+
7 // | LIBERAL FREEWARE LICENSE: This source code document may be used
8 // | by anyone for any purpose, and freely redistributed alone or in
9 // | combination with other software, provided that the license is obeyed.
10 // |
11 // | There are only two ways to violate the license:
12 // |
13 // | 1. To redistribute this code in source form, with the copyright
14 // |    notice or license removed or altered. (Distributing in compiled
15 // |    forms without embedded copyright notices is permitted).
16 // |
17 // | 2. To redistribute modified versions of this code in *any* form
18 // |    that bears insufficient indications that the modifications are
19 // |    not the work of the original author(s).
20 // |
21 // | This license applies to this document only, not any other software
22 // | that it may be combined with.
23 // |
24 // +----------------------------------------------------------------------+
25 // | Contributors:
26 // | https://www.anuko.com/time_tracker/credits.htm
27 // +----------------------------------------------------------------------+
28
29 // Note: escape apostrophes with THREE backslashes, like here:  choisir l\\\'option.
30 // Other characters (such as double-quotes in http links, etc.) do not have to be escaped.
31 // Note to translators: Please use proper capitalization rules for your language.
32
33 $i18n_language = 'Português do Brasil';
34 $i18n_months = array('Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro');
35 $i18n_weekdays = array('Domingo', 'Segunda-feira', 'Terça-feira', 'Quarta-feira', 'Quinta-feira', 'Sexta-feira', 'Sábado');
36 $i18n_weekdays_short = array('Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab');
37 // format mm/dd
38 $i18n_holidays = array('01/01', '04/21', '05/01', '09/07', '10/12', '11/15', '12/25');
39 $i18n_key_words = array(
40
41 // Menus.
42 'menu.login' => 'Login',
43 'menu.logout' => 'Logout',
44 // TODO: Translate the following:
45 // 'menu.forum' => 'Forum',
46 'menu.help' => 'Ajuda',
47 'menu.create_team' => 'Criar organização', // TODO: is this good? An organization may have multiple teams in TT.
48 'menu.profile' => 'Perfil',
49 'menu.time' => 'Tempo',
50 'menu.expenses' => 'Gastos',
51 'menu.reports' => 'Relatórios',
52 'menu.charts' => 'Gráficos',
53 'menu.projects' => 'Projetos',
54 'menu.tasks' => 'Tarefas',
55 'menu.users' => 'Usuários',
56 'menu.teams' => 'Organização',
57 'menu.export' => 'Exportar',
58 'menu.clients' => 'Clientes',
59 'menu.options' => 'Opções',
60
61 // Footer - strings on the bottom of most pages.
62 'footer.contribute_msg' => 'Você pode contribuir com o Time Tracker de várias maneiras.',
63 'footer.credits' => 'Créditos',
64 'footer.license' => 'Licença',
65 'footer.improve' => 'Contribuir',
66
67 // Error messages.
68 'error.access_denied' => 'Acesso negado.',
69 'error.sys' => 'Erro no sistema.',
70 'error.db' => 'Erro no banco de dados.',
71 'error.field' => 'Dados incorretos "{0}".',
72 'error.empty' => 'Campo "{0}" está vazio.',
73 'error.not_equal' => 'Campo "{0}" é diferente do campo "{1}".',
74 'error.interval' => 'Intervalo incorreto.',
75 'error.project' => 'Selecione projeto.',
76 // TODO: translate the following:
77 // 'error.task' => 'Select task.',
78 'error.client' => 'Selecione cliente.',
79 // TODO: translate the following:
80 // 'error.report' => 'Select report.',
81 'error.auth' => 'Usuário ou senha incorretos.',
82 'error.user_exists' => 'Já existe usuário com este login.',
83 'error.project_exists' => 'Já existe projeto com este nome.',
84 // TODO: translate the following:
85 // 'error.task_exists' => 'Task with this name already exists.',
86 'error.client_exists' => 'Já existe cliente com este nome.',
87 // TODO: translate the following:
88 // 'error.invoice_exists' => 'Invoice with this number already exists.',
89 // 'error.no_invoiceable_items' => 'There are no invoiceable items.',
90 // 'error.no_login' => 'No user with this login.',
91 'error.no_teams' => 'Sua base de dados está vazia. Entre como admin e crie uma organização nova.',
92 // TODO: translate the following:
93 // 'error.upload' => 'File upload error.',
94 'error.range_locked' => 'Período está bloqueado.',
95 'error.mail_send' => 'Erro enviando o e-mail.',
96 'error.no_email' => 'Não há e-mail associado a este login.',
97 'error.uncompleted_exists' => 'Entrada incompleta existente. Feche ou remova-a.',
98 'error.goto_uncompleted' => 'Ir até entrada incompleta.',
99 // TODO: translate the following:
100 // 'error.overlap' => 'Time interval overlaps with existing records.',
101 // 'error.future_date' => 'Date is in future.',
102
103 // Labels for buttons.
104 'button.login' => 'Login',
105 'button.now' => 'Agora',
106 'button.save' => 'Salvar',
107 // TODO: translate the following:
108 // 'button.copy' => 'Copy',
109 'button.cancel' => 'Cancelar',
110 'button.submit' => 'Enviar',
111 // TODO: translate the following:
112 // 'button.add_user' => 'Add user',
113 'button.add_project' => 'Adicionar projeto',
114 // TODO: translate the following:
115 // 'button.add_task' => 'Add task',
116 'button.add_client' => 'Adicionar cliente',
117 // TODO: translate the following:
118 // 'button.add_invoice' => 'Add invoice',
119 // 'button.add_option' => 'Add option',
120 'button.add' => 'Adicionar',
121 'button.generate' => 'Criar',
122 'button.reset_password' => 'Resetar senha',
123 'button.send' => 'Enviar',
124 'button.send_by_email' => 'Enviar por e-mail',
125 'button.create_team' => 'Criar organização',
126 'button.export' => 'Exportar organização',
127 'button.import' => 'Importar organização',
128 'button.close' => 'Fechar',
129 // TODO: translate the following:
130 // 'button.stop' => 'Stop',
131
132 // Labels for controls on forms. Labels in this section are used on multiple forms.
133 'label.team_name' => 'Nome da organização',
134 // TODO: translate the following:
135 // 'label.address' => 'Address',
136 'label.currency' => 'Moeda',
137 'label.manager_name' => 'Nome do gerente',
138 'label.manager_login' => 'Login do gerente',
139 'label.person_name' => 'Nome',
140 'label.thing_name' => 'Nome',
141 'label.login' => 'Login',
142 'label.password' => 'Senha',
143 'label.confirm_password' => 'Confirme a senha',
144 'label.email' => 'E-mail',
145 'label.date' => 'Data',
146 'label.start_date' => 'Data inicial',
147 'label.end_date' => 'Data final',
148 'label.user' => 'Usuário',
149 // TODO: translate the following:
150 // 'label.users' => 'Users',
151 'label.client' => 'Cliente',
152 // TODO: translate the following:
153 // 'label.clients' => 'Clients',
154 // 'label.option' => 'Option',
155 'label.invoice' => 'Fatura',
156 'label.project' => 'Projeto',
157 'label.projects' => 'Projetos',
158 // TODO: translate the following:
159 // 'label.task' => 'Task',
160 // 'label.tasks' => 'Tasks',
161 // 'label.description' => 'Description',
162 'label.start' => 'Início',
163 'label.finish' => 'Fim',
164 'label.duration' => 'Duração',
165 'label.note' => 'Anotação',
166 // TODO: translate the following:
167 // 'label.item' => 'Item',
168 // 'label.cost' => 'Cost',
169 'label.week_total' => 'Total semanal',
170 // TODO: translate the following:
171 // 'label.day_total' => 'Day total',
172 'label.today' => 'Hoje',
173 // TODO: translate the following:
174 // 'label.total_hours' => 'Total hours',
175 // 'label.total_cost' => 'Total cost',
176 // 'label.view' => 'View',
177 'label.edit' => 'Editar',
178 'label.delete' => 'Apagar',
179 // TODO: translate the following:
180 // 'label.configure' => 'Configure',
181 'label.select_all' => 'Selecionar todos',
182 'label.select_none' => 'Desmarcar todos',
183 'label.id' => 'ID',
184 'label.language' => 'Idioma',
185 // TODO: translate the following:
186 // 'label.decimal_mark' => 'Decimal mark',
187 'label.date_format' => 'Formato da data',
188 'label.time_format' => 'Formato da hora',
189 'label.week_start' => 'Primeiro dia da semana',
190 'label.comment' => 'Anotação',
191 'label.status' => 'Status',
192 // TODO: translate the following:
193 // 'label.tax' => 'Tax', // This means "value added tax (VAT)", or "general sales tax (GST)" - something that is added on top of the total.
194 'label.subtotal' => 'Subtotal',
195 // TODO: translate the following:
196 // 'label.total' => 'Total',
197 // 'label.client_name' => 'Client name',
198 // 'label.client_address' => 'Client address',
199 'label.or' => 'ou',
200 // TODO: translate the following:
201 // 'label.error' => 'Error',
202 'label.ldap_hint' => 'Entre com o seu <b>login do Windows</b> e <b>senha</b> nos campos abaixo.',
203 'label.required_fields' => '* - campos obrigatórios',
204 'label.on_behalf' => 'em nome de',
205 'label.role_manager' => '(gerente)',
206 'label.role_comanager' => '(coordenador)',
207 'label.role_admin' => '(administrador)',
208 'label.page' => 'Página',
209 // Labels for plugins (extensions to Time Tracker that provide additional features).
210 // TODO: translate the following:
211 // 'label.custom_fields' => 'Custom fields',
212 // 'label.type' => 'Type',
213 // 'label.type_dropdown' => 'dropdown',
214 // 'label.type_text' => 'text',
215 // 'label.required' => 'Required',
216 'label.fav_report' => 'Relatório favorito',
217 // TODO: translate the following:
218 // 'label.cron_schedule' => 'Cron schedule',
219 // 'label.what_is_it' => 'What is it?',
220
221 // Form titles.
222 'title.login' => 'Login',
223 'title.teams' => 'Organizações',
224 // TODO: translate the following:
225 // 'title.create_team' => 'Creating Team',
226 // 'title.edit_team' => 'Editing Team',
227 // 'title.delete_team' => 'Deleting Team',
228 // 'title.reset_password' => 'Resetting Password',
229 // 'title.change_password' => 'Changing Password',
230 // 'title.time' => 'Time',
231 'title.edit_time_record' => 'Editando entrada de hora',
232 'title.delete_time_record' => 'Apagando entrada de hora',
233 // TODO: translate the following:
234 // 'title.expenses' => 'Expenses',
235 // 'title.edit_expense' => 'Editing Expense Item',
236 // 'title.delete_expense' => 'Deleting Expense Item',
237 'title.reports' => 'Relatórios',
238 // 'title.report' => 'Report',
239 // 'title.send_report' => 'Sending Report',
240 'title.invoice' => 'Fatura',
241 // 'title.send_invoice' => 'Sending Invoice',
242 // 'title.charts' => 'Charts',
243 'title.projects' => 'Projetos',
244 'title.add_project' => 'Adicionando projeto',
245 'title.edit_project' => 'Editando projeto',
246 'title.delete_project' => 'Apagando projeto',
247 // TODO: translate the following:
248 // 'title.tasks' => 'Tasks',
249 // 'title.add_task' => 'Adding Task',
250 // 'title.edit_task' => 'Editing Task',
251 // 'title.delete_task' => 'Deleting Task',
252 // 'title.users' => 'Users',
253 'title.add_user' => 'Adicionando usuário',
254 'title.edit_user' => 'Editando usuário',
255 'title.delete_user' => 'Apagando usuário',
256 'title.clients' => 'Clientes',
257 'title.add_client' => 'Adicionando cliente',
258 'title.edit_client' => 'Editando cliente',
259 'title.delete_client' => 'Apagando cliente',
260 // TODO: translate the following:
261 // 'title.invoices' => 'Invoices',
262 // 'title.add_invoice' => 'Adding Invoice',
263 // 'title.view_invoice' => 'Viewing Invoice',
264 // 'title.delete_invoice' => 'Deleting Invoice',
265 // 'title.notifications' => 'Notifications',
266 // 'title.add_notification' => 'Adding Notification',
267 // 'title.edit_notification' => 'Editing Notification',
268 // 'title.delete_notification' => 'Deleting Notification',
269 // 'title.export' => 'Exporting Team Data',
270 // 'title.import' => 'Importing Team Data',
271 'title.options' => 'Opções',
272 'title.profile' => 'Perfil',
273 // TODO: translate the following:
274 // 'title.cf_custom_fields' => 'Custom Fields',
275 // 'title.cf_add_custom_field' => 'Adding Custom Field',
276 // 'title.cf_edit_custom_field' => 'Editing Custom Field',
277 // 'title.cf_delete_custom_field' => 'Deleting Custom Field',
278 // 'title.cf_dropdown_options' => 'Dropdown Options',
279 // 'title.cf_add_dropdown_option' => 'Adding Option',
280 // 'title.cf_edit_dropdown_option' => 'Editing Option',
281 // 'title.cf_delete_dropdown_option' => 'Deleting Option',
282 // NOTE TO TRANSLATORS: Locking is a feature to lock records from modifications (ex: weekly on Mondays we lock all previous weeks).
283 // It is also a name for the Locking plugin on the Team profile page.
284 // 'title.locking' => 'Locking',
285
286 // Section for common strings inside combo boxes on forms. Strings shared between forms shall be placed here.
287 // Strings that are used in a single form must go to the specific form section.
288 'dropdown.all' => '--- todos ---',
289 'dropdown.no' => '--- não ---',
290 'dropdown.this_day' => 'este dia',
291 'dropdown.this_week' => 'esta semana',
292 'dropdown.last_week' => 'última semana',
293 'dropdown.this_month' => 'este mês',
294 'dropdown.last_month' => 'último mês',
295 'dropdown.this_year' => 'este ano',
296 // TODO: translate the following:
297 // 'dropdown.all_time' => 'all time',
298 // 'dropdown.projects' => 'projects',
299 // 'dropdown.tasks' => 'tasks',
300 // 'dropdown.clients' => 'clients',
301 'dropdown.select' => '--- selecione ---',
302 'dropdown.select_invoice' => '--- selecione fatura ---',
303 'dropdown.status_active' => 'ativo',
304 // TODO: translate the following:
305 // 'dropdown.status_inactive' => 'inactive',
306 // 'dropdown.delete'=>'delete',
307 // 'dropdown.do_not_delete'=>'do not delete',
308
309
310 // Below is a section for strings that are used on individual forms. When a string is used only on one form it should be placed here.
311 // One exception is for closely related forms such as "Time" and "Editing Time Record" with similar controls. In such cases
312 // a string can be defined on the main form and used on related forms. The reasoning for this is to make translation effort easier.
313 // Strings that are used on multiple unrelated forms should be placed in shared sections such as label.<stringname>, etc.
314
315 // Login form. See example at https://timetracker.anuko.com/login.php.
316 'form.login.forgot_password' => 'Esqueceu a senha?',
317 'form.login.about' =>'Anuko <a href="https://www.anuko.com/lp/tt_2.htm" target="_blank">Time Tracker</a> é um sistema, simples, de fácil uso, de código aberto, de rastreamento do tempo.',
318
319 // Resetting Password form. See example at https://timetracker.anuko.com/password_reset.php.
320 // TODO: translate the following:
321 // 'form.reset_password.message' => 'Password reset request sent by email.',
322 // 'form.reset_password.email_subject' => 'Anuko Time Tracker password reset request',
323 'form.reset_password.email_body' => "Prezado usuário,\n\nAlguém, possivelmente você, solicitou o reset da sua senha do Anuko Time Tracker. Entre nete link para resetar a sua senha.\n\n%s\n\nAnuko Time Tracker é um sistema, simples, de fácil uso, de código abertois, de rastreamento do tempo. Visite https://www.anuko.com para mais informações.\n\n",
324
325 // Changing Password form. See example at https://timetracker.anuko.com/password_change.php?ref=1.
326 'form.change_password.tip' => 'Entre com a nova senha e clique em Salvar.',
327
328 // Time form. See example at https://timetracker.anuko.com/time.php.
329 // TODO: translate the following:
330 // 'form.time.duration_format' => '(hh:mm or 0.0h)',
331 'form.time.billable' => 'Faturável',
332 'form.time.uncompleted' => 'Incompleta',
333
334 // Editing Time Record form. See example at https://timetracker.anuko.com/time_edit.php (get there by editing an uncompleted time record).
335 'form.time_edit.uncompleted' => 'Eesta entrada foi salva somente com hora de início. Não é um erro.',
336
337 // Reports form. See example at https://timetracker.anuko.com/reports.php
338 'form.reports.save_as_favorite' => 'Guardar como favorito',
339 'form.reports.confirm_delete' => 'Tem certeza que deseja remover este relatório dos favoritos?',
340 'form.reports.include_records' => 'Incluir entradas',
341 'form.reports.include_billable' => 'faturável',
342 'form.reports.include_not_billable' => 'não faturável',
343 // 'form.reports.include_invoiced' => 'invoiced',
344 // 'form.reports.include_not_invoiced' => 'not invoiced',
345 'form.reports.select_period' => 'Selecione o período de tempo',
346 'form.reports.set_period' => 'ou selecionar datas',
347 'form.reports.show_fields' => 'Exibir campos',
348 'form.reports.group_by' => 'Agrupar por',
349 'form.reports.group_by_no' => '--- sem agrupar ---',
350 'form.reports.group_by_date' => 'data',
351 'form.reports.group_by_user' => 'usuário',
352 // 'form.reports.group_by_client' => 'client',
353 'form.reports.group_by_project' => 'projeto',
354 // TODO: translate the following:
355 // 'form.reports.group_by_task' => 'task',
356 'form.reports.totals_only' => 'Somente totais',
357
358 // Report form. See example at https://timetracker.anuko.com/report.php
359 // (after generating a report at https://timetracker.anuko.com/reports.php).
360 'form.report.export' => 'Exportar',
361
362 // Invoice form. See example at https://timetracker.anuko.com/invoice.php
363 // (you can get to this form after generating a report).
364 'form.invoice.number' => 'Número da fatura',
365 'form.invoice.person' => 'Pessoa',
366 // 'form.invoice.invoice_to_delete' => 'Invoice to delete',
367 // 'form.invoice.invoice_entries' => 'Invoice entries',
368
369 // Charts form. See example at https://timetracker.anuko.com/charts.php
370 // TODO: translate the following:
371 // 'form.charts.interval' => 'Interval',
372 // 'form.charts.chart' => 'Chart',
373
374 // Projects form. See example at https://timetracker.anuko.com/projects.php
375 // TODO: translate the following:
376 // 'form.projects.active_projects' => 'Active Projects',
377 // 'form.projects.inactive_projects' => 'Inactive Projects',
378
379 // Tasks form. See example at https://timetracker.anuko.com/tasks.php
380 // TODO: translate the following:
381 // 'form.tasks.active_tasks' => 'Active Tasks',
382 // 'form.tasks.inactive_tasks' => 'Inactive Tasks',
383
384 // Users form. See example at https://timetracker.anuko.com/users.php
385 // TODO: translate the following:
386 // 'form.users.active_users' => 'Active Users',
387 // 'form.users.inactive_users' => 'Inactive Users',
388 'form.users.role' => 'Papel',
389 'form.users.manager' => 'Gerente',
390 'form.users.comanager' => 'Coordenador',
391 'form.users.rate' => 'Honorário',
392 // 'form.users.default_rate' => 'Default hourly rate',
393
394 // Client delete form. See example at https://timetracker.anuko.com/client_delete.php
395 // TODO: translate the following:
396 // 'form.client.client_to_delete' => 'Client to delete',
397 // 'form.client.client_entries' => 'Client entries',
398
399 // Clients form. See example at https://timetracker.anuko.com/clients.php
400 // TODO: translate the following:
401 // 'form.clients.active_clients' => 'Active Clients',
402 // 'form.clients.inactive_clients' => 'Inactive Clients',
403
404 // Strings for Exporting Team Data form. See example at https://timetracker.anuko.com/export.php
405 'form.export.hint' => 'Você pode exportar todos os dados da organização para um arquivo xml. Isto pode ser útil se você estiver migrando os dados para um servidor próprio.',
406 'form.export.compression' => 'Compressão',
407 'form.export.compression_none' => 'nenhuma',
408 'form.export.compression_bzip' => 'bzip',
409
410 // Strings for Importing Team Data form. See example at https://timetracker.anuko.com/imort.php (login as admin first).
411 'form.import.hint' => 'Importar dados de organização de um arquivo xml.',
412 'form.import.file' => 'Selecionar arquivo',
413 'form.import.success' => 'Importação realizada com sucesso.',
414
415 // Teams form. See example at https://timetracker.anuko.com/admin_teams.php (login as admin first).
416 'form.teams.hint' =>  'Crie uma nova organização fazendo uma nova conta de gerente.<br>você também pode importar os dados de um arquivo xml de outro servidor Anuko Time Tracker (não havendo colisão de usuários).',
417
418 // Profile form. See example at https://timetracker.anuko.com/profile_edit.php.
419 // TODO: translate the following:
420 // 'form.profile.12_hours' => '12 hours',
421 // 'form.profile.24_hours' => '24 hours',
422 // 'form.profile.tracking_mode' => 'Tracking mode',
423 // 'form.profile.mode_time' => 'time',
424 // 'form.profile.mode_projects' => 'projects',
425 // 'form.profile.mode_projects_and_tasks' => 'projects and tasks',
426 // 'form.profile.record_type' => 'Record type',
427 // 'form.profile.type_all' => 'all',
428 // 'form.profile.type_start_finish' => 'start and finish',
429 // 'form.profile.type_duration' => 'duration',
430 // 'form.profile.plugins' => 'Plugins',
431
432 // Mail form. See example at https://timetracker.anuko.com/report_send.php when emailing a report.
433 'form.mail.from' => 'De',
434 'form.mail.to' => 'Para',
435 'form.mail.cc' => 'Cc',
436 'form.mail.subject' => 'Assunto',
437 // 'form.mail.report_subject' => 'Time Tracker Report',
438 'form.mail.footer' => 'Anuko Time Tracker é um sistema, simples, de fácil uso, de código aberto,<br>de rastreamento do tempo. Visite <a href="https://www.anuko.com">www.anuko.com</a> para mais informações.',
439 // 'form.mail.report_sent' => 'Report sent.',
440 'form.mail.invoice_sent' => 'Fatura enviada.',
441 );