'int', FIELD_STRING => 'string', FIELD_TEXT => 'text', FIELD_BOOL => 'bool', FIELD_DROPDOWN => 'dropdown', FIELD_DATE => 'date'); var $profile_cache = array(); var $options_lang = array(); /** * Assign editable fields to template, mode can be profile (for profile change) or register (for registration) * Called by ucp_profile and ucp_register * @access public */ function generate_profile_fields($mode, $lang_id) { global $db, $template, $auth; $sql_where = ''; switch ($mode) { case 'register': // If the field is required we show it on the registration page $sql_where .= ' AND f.field_show_on_reg = 1'; break; case 'profile': // Show hidden fields to moderators/admins if (!$auth->acl_gets('a_', 'm_') && !$auth->acl_getf_global('m_')) { $sql_where .= ' AND f.field_show_profile = 1'; } break; default: trigger_error('Wrong profile mode specified', E_USER_ERROR); break; } $sql = 'SELECT l.*, f.* FROM ' . PROFILE_LANG_TABLE . ' l, ' . PROFILE_FIELDS_TABLE . " f WHERE f.field_active = 1 $sql_where AND l.lang_id = $lang_id AND l.field_id = f.field_id ORDER BY f.field_order"; $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) { // Return templated field $tpl_snippet = $this->process_field_row('change', $row); // Some types are multivalue, we can't give them a field_id as we would not know which to pick $type = (int) $row['field_type']; $template->assign_block_vars('profile_fields', array( 'LANG_NAME' => $row['lang_name'], 'LANG_EXPLAIN' => $row['lang_explain'], 'FIELD' => $tpl_snippet, 'FIELD_ID' => ($type == FIELD_DATE || ($type == FIELD_BOOL && $row['field_length'] == '1')) ? '' : 'pf_' . $row['field_ident'], 'S_REQUIRED' => ($row['field_required']) ? true : false) ); } $db->sql_freeresult($result); } /** * Validate entered profile field data * @access public */ function validate_profile_field($field_type, &$field_value, $field_data) { switch ($field_type) { case FIELD_DATE: $field_validate = explode('-', $field_value); $day = (isset($field_validate[0])) ? (int) $field_validate[0] : 0; $month = (isset($field_validate[1])) ? (int) $field_validate[1] : 0; $year = (isset($field_validate[2])) ? (int) $field_validate[2] : 0; if ((!$day || !$month || !$year) && !$field_data['field_required']) { return false; } if ((!$day || !$month || !$year) && $field_data['field_required']) { return 'FIELD_REQUIRED'; } if ($day < 0 || $day > 31 || $month < 0 || $month > 12 || ($year < 1901 && $year > 0) || $year > gmdate('Y', time()) + 50) { return 'FIELD_INVALID_DATE'; } if (checkdate($month, $day, $year) === false) { return 'FIELD_INVALID_DATE'; } break; case FIELD_BOOL: $field_value = (bool) $field_value; if (!$field_value && $field_data['field_required']) { return 'FIELD_REQUIRED'; } break; case FIELD_INT: if (trim($field_value) === '' && !$field_data['field_required']) { return false; } $field_value = (int) $field_value; if ($field_value < $field_data['field_minlen']) { return 'FIELD_TOO_SMALL'; } else if ($field_value > $field_data['field_maxlen']) { return 'FIELD_TOO_LARGE'; } break; case FIELD_DROPDOWN: $field_value = (int) $field_value; if ($field_value == $field_data['field_novalue'] && $field_data['field_required']) { return 'FIELD_REQUIRED'; } break; case FIELD_STRING: case FIELD_TEXT: if (trim($field_value) === '' && !$field_data['field_required']) { return false; } else if (trim($field_value) === '' && $field_data['field_required']) { return 'FIELD_REQUIRED'; } if ($field_data['field_minlen'] && utf8_strlen($field_value) < $field_data['field_minlen']) { return 'FIELD_TOO_SHORT'; } else if ($field_data['field_maxlen'] && utf8_strlen($field_value) > $field_data['field_maxlen']) { return 'FIELD_TOO_LONG'; } if (!empty($field_data['field_validation']) && $field_data['field_validation'] != '.*') { $field_validate = ($field_type == FIELD_STRING) ? $field_value : bbcode_nl2br($field_value); if (!preg_match('#^' . str_replace('\\\\', '\\', $field_data['field_validation']) . '$#i', $field_validate)) { return 'FIELD_INVALID_CHARS'; } } break; } return false; } /** * Build profile cache, used for display * @access private */ function build_cache() { global $db, $user, $auth; $this->profile_cache = array(); // Display hidden/no_view fields for admin/moderator $sql = 'SELECT l.*, f.* FROM ' . PROFILE_LANG_TABLE . ' l, ' . PROFILE_FIELDS_TABLE . ' f WHERE l.lang_id = ' . $user->get_iso_lang_id() . ' AND f.field_active = 1 ' . ((!$auth->acl_gets('a_', 'm_') && !$auth->acl_getf_global('m_')) ? ' AND f.field_hide = 0 ' : '') . ' AND f.field_no_view = 0 AND l.field_id = f.field_id ORDER BY f.field_order'; $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) { $this->profile_cache[$row['field_ident']] = $row; } $db->sql_freeresult($result); } /** * Get language entries for options and store them here for later use */ function get_option_lang($field_id, $lang_id, $field_type, $preview) { global $db; if ($preview) { $lang_options = (!is_array($this->vars['lang_options'])) ? explode("\n", $this->vars['lang_options']) : $this->vars['lang_options']; foreach ($lang_options as $num => $var) { $this->options_lang[$field_id][$lang_id][($num + 1)] = $var; } } else { $sql = 'SELECT option_id, lang_value FROM ' . PROFILE_FIELDS_LANG_TABLE . " WHERE field_id = $field_id AND lang_id = $lang_id AND field_type = $field_type ORDER BY option_id"; $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) { $this->options_lang[$field_id][$lang_id][($row['option_id'] + 1)] = $row['lang_value']; } $db->sql_freeresult($result); } } /** * Submit profile field for validation * @access public */ function submit_cp_field($mode, $lang_id, &$cp_data, &$cp_error) { global $auth, $db, $user; $sql_where = ''; switch ($mode) { case 'register': // If the field is required we show it on the registration page $sql_where .= ' AND f.field_show_on_reg = 1'; break; case 'profile': // Show hidden fields to moderators/admins if (!$auth->acl_gets('a_', 'm_') && !$auth->acl_getf_global('m_')) { $sql_where .= ' AND f.field_show_profile = 1'; } break; default: trigger_error('Wrong profile mode specified', E_USER_ERROR); break; } $sql = 'SELECT l.*, f.* FROM ' . PROFILE_LANG_TABLE . ' l, ' . PROFILE_FIELDS_TABLE . " f WHERE l.lang_id = $lang_id AND f.field_active = 1 $sql_where AND l.field_id = f.field_id ORDER BY f.field_order"; $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) { $cp_data['pf_' . $row['field_ident']] = $this->get_profile_field($row); $check_value = $cp_data['pf_' . $row['field_ident']]; if (($cp_result = $this->validate_profile_field($row['field_type'], $check_value, $row)) !== false) { // If not and only showing common error messages, use this one $error = ''; switch ($cp_result) { case 'FIELD_INVALID_DATE': case 'FIELD_REQUIRED': $error = sprintf($user->lang[$cp_result], $row['lang_name']); break; case 'FIELD_TOO_SHORT': case 'FIELD_TOO_SMALL': $error = sprintf($user->lang[$cp_result], $row['lang_name'], $row['field_minlen']); break; case 'FIELD_TOO_LONG': case 'FIELD_TOO_LARGE': $error = sprintf($user->lang[$cp_result], $row['lang_name'], $row['field_maxlen']); break; case 'FIELD_INVALID_CHARS': switch ($row['field_validation']) { case '[0-9]+': $error = sprintf($user->lang[$cp_result . '_NUMBERS_ONLY'], $row['lang_name']); break; case '[\w]+': $error = sprintf($user->lang[$cp_result . '_ALPHA_ONLY'], $row['lang_name']); break; case '[\w_\+\. \-\[\]]+': $error = sprintf($user->lang[$cp_result . '_SPACERS_ONLY'], $row['lang_name']); break; } break; } if ($error != '') { $cp_error[] = $error; } } } $db->sql_freeresult($result); } /** * Update profile field data directly */ function update_profile_field_data($user_id, &$cp_data) { global $db; if (!sizeof($cp_data)) { return; } switch ($db->sql_layer) { case 'oracle': case 'firebird': case 'postgres': $right_delim = $left_delim = '"'; break; case 'sqlite': case 'mssql': case 'mssql_odbc': case 'mssqlnative': $right_delim = ']'; $left_delim = '['; break; case 'mysql': case 'mysql4': case 'mysqli': $right_delim = $left_delim = '`'; break; } // use new array for the UPDATE; changes in the key do not affect the original array $cp_data_sql = array(); foreach ($cp_data as $key => $value) { // Firebird is case sensitive with delimiter $cp_data_sql[$left_delim . (($db->sql_layer == 'firebird' || $db->sql_layer == 'oracle') ? strtoupper($key) : $key) . $right_delim] = $value; } $sql = 'UPDATE ' . PROFILE_FIELDS_DATA_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $cp_data_sql) . " WHERE user_id = $user_id"; $db->sql_query($sql); if (!$db->sql_affectedrows()) { $cp_data_sql['user_id'] = (int) $user_id; $db->sql_return_on_error(true); $sql = 'INSERT INTO ' . PROFILE_FIELDS_DATA_TABLE . ' ' . $db->sql_build_array('INSERT', $cp_data_sql); $db->sql_query($sql); $db->sql_return_on_error(false); } } /** * Assign fields to template, used for viewprofile, viewtopic and memberlist (if load setting is enabled) * This is directly connected to the user -> mode == grab is to grab the user specific fields, mode == show is for assigning the row to the template * @access public */ function generate_profile_fields_template($mode, $user_id = 0, $profile_row = false) { global $db; if ($mode == 'grab') { if (!is_array($user_id)) { $user_id = array($user_id); } if (!sizeof($this->profile_cache)) { $this->build_cache(); } if (!sizeof($user_id)) { return array(); } $sql = 'SELECT * FROM ' . PROFILE_FIELDS_DATA_TABLE . ' WHERE ' . $db->sql_in_set('user_id', array_map('intval', $user_id)); $result = $db->sql_query($sql); $field_data = array(); while ($row = $db->sql_fetchrow($result)) { $field_data[$row['user_id']] = $row; } $db->sql_freeresult($result); $user_fields = array(); // Go through the fields in correct order foreach (array_keys($this->profile_cache) as $used_ident) { foreach ($field_data as $user_id => $row) { $user_fields[$user_id][$used_ident]['value'] = $row['pf_' . $used_ident]; $user_fields[$user_id][$used_ident]['data'] = $this->profile_cache[$used_ident]; } } return $user_fields; } else if ($mode == 'show') { // $profile_row == $user_fields[$row['user_id']]; $tpl_fields = array(); $tpl_fields['row'] = $tpl_fields['blockrow'] = array(); foreach ($profile_row as $ident => $ident_ary) { $value = $this->get_profile_value($ident_ary); if ($value === NULL) { continue; } $tpl_fields['row'] += array( 'PROFILE_' . strtoupper($ident) . '_VALUE' => $value, 'PROFILE_' . strtoupper($ident) . '_TYPE' => $ident_ary['data']['field_type'], 'PROFILE_' . strtoupper($ident) . '_NAME' => $ident_ary['data']['lang_name'], 'PROFILE_' . strtoupper($ident) . '_EXPLAIN'=> $ident_ary['data']['lang_explain'], 'S_PROFILE_' . strtoupper($ident) => true ); $tpl_fields['blockrow'][] = array( 'PROFILE_FIELD_VALUE' => $value, 'PROFILE_FIELD_TYPE' => $ident_ary['data']['field_type'], 'PROFILE_FIELD_NAME' => $ident_ary['data']['lang_name'], 'PROFILE_FIELD_EXPLAIN' => $ident_ary['data']['lang_explain'], 'S_PROFILE_' . strtoupper($ident) => true ); } return $tpl_fields; } else { trigger_error('Wrong mode for custom profile', E_USER_ERROR); } } /** * Get Profile Value for display */ function get_profile_value($ident_ary) { $value = $ident_ary['value']; $field_type = $ident_ary['data']['field_type']; switch ($this->profile_types[$field_type]) { case 'int': if ($value === '') { return NULL; } return (int) $value; break; case 'string': case 'text': if (!$value) { return NULL; } $value = make_clickable($value); $value = censor_text($value); $value = bbcode_nl2br($value); return $value; break; // case 'datetime': case 'date': $date = explode('-', $value); $day = (isset($date[0])) ? (int) $date[0] : 0; $month = (isset($date[1])) ? (int) $date[1] : 0; $year = (isset($date[2])) ? (int) $date[2] : 0; if (!$day && !$month && !$year) { return NULL; } else if ($day && $month && $year) { global $user; // d/m/y 00:00 GMT isn't necessarily on the same d/m/y in the user's timezone, so add the timezone seconds return $user->format_date(gmmktime(0, 0, 0, $month, $day, $year) + $user->timezone + $user->dst, $user->lang['DATE_FORMAT'], true); } return $value; break; case 'dropdown': $field_id = $ident_ary['data']['field_id']; $lang_id = $ident_ary['data']['lang_id']; if (!isset($this->options_lang[$field_id][$lang_id])) { $this->get_option_lang($field_id, $lang_id, FIELD_DROPDOWN, false); } if ($value == $ident_ary['data']['field_novalue']) { return NULL; } $value = (int) $value; // User not having a value assigned if (!isset($this->options_lang[$field_id][$lang_id][$value])) { return NULL; } return $this->options_lang[$field_id][$lang_id][$value]; break; case 'bool': $field_id = $ident_ary['data']['field_id']; $lang_id = $ident_ary['data']['lang_id']; if (!isset($this->options_lang[$field_id][$lang_id])) { $this->get_option_lang($field_id, $lang_id, FIELD_BOOL, false); } if ($ident_ary['data']['field_length'] == 1) { return (isset($this->options_lang[$field_id][$lang_id][(int) $value])) ? $this->options_lang[$field_id][$lang_id][(int) $value] : NULL; } else if (!$value) { return NULL; } else { return $this->options_lang[$field_id][$lang_id][(int) ($value) + 1]; } break; default: trigger_error('Unknown profile type', E_USER_ERROR); break; } } /** * Get field value for registration/profile * @access private */ function get_var($field_validation, &$profile_row, $default_value, $preview) { global $user; $profile_row['field_ident'] = (isset($profile_row['var_name'])) ? $profile_row['var_name'] : 'pf_' . $profile_row['field_ident']; $user_ident = $profile_row['field_ident']; // checkbox - only testing for isset if ($profile_row['field_type'] == FIELD_BOOL && $profile_row['field_length'] == 2) { $value = (isset($_REQUEST[$profile_row['field_ident']])) ? true : ((!isset($user->profile_fields[$user_ident]) || $preview) ? $default_value : $user->profile_fields[$user_ident]); } else if ($profile_row['field_type'] == FIELD_INT) { if (isset($_REQUEST[$profile_row['field_ident']])) { $value = ($_REQUEST[$profile_row['field_ident']] === '') ? NULL : request_var($profile_row['field_ident'], $default_value); } else { if (!$preview && array_key_exists($user_ident, $user->profile_fields) && is_null($user->profile_fields[$user_ident])) { $value = NULL; } else if (!isset($user->profile_fields[$user_ident]) || $preview) { $value = $default_value; } else { $value = $user->profile_fields[$user_ident]; } } return (is_null($value) || $value === '') ? '' : (int) $value; } else { $value = (isset($_REQUEST[$profile_row['field_ident']])) ? request_var($profile_row['field_ident'], $default_value, true) : ((!isset($user->profile_fields[$user_ident]) || $preview) ? $default_value : $user->profile_fields[$user_ident]); if (gettype($value) == 'string') { $value = utf8_normalize_nfc($value); } } switch ($field_validation) { case 'int': return (int) $value; break; } return $value; } /** * Process int-type * @access private */ function generate_int($profile_row, $preview = false) { global $template; $profile_row['field_value'] = $this->get_var('int', $profile_row, $profile_row['field_default_value'], $preview); $template->assign_block_vars($this->profile_types[$profile_row['field_type']], array_change_key_case($profile_row, CASE_UPPER)); } /** * Process date-type * @access private */ function generate_date($profile_row, $preview = false) { global $user, $template; $profile_row['field_ident'] = (isset($profile_row['var_name'])) ? $profile_row['var_name'] : 'pf_' . $profile_row['field_ident']; $user_ident = $profile_row['field_ident']; $now = getdate(); if (!isset($_REQUEST[$profile_row['field_ident'] . '_day'])) { if ($profile_row['field_default_value'] == 'now') { $profile_row['field_default_value'] = sprintf('%2d-%2d-%4d', $now['mday'], $now['mon'], $now['year']); } list($day, $month, $year) = explode('-', ((!isset($user->profile_fields[$user_ident]) || $preview) ? $profile_row['field_default_value'] : $user->profile_fields[$user_ident])); } else { if ($preview && $profile_row['field_default_value'] == 'now') { $profile_row['field_default_value'] = sprintf('%2d-%2d-%4d', $now['mday'], $now['mon'], $now['year']); list($day, $month, $year) = explode('-', ((!isset($user->profile_fields[$user_ident]) || $preview) ? $profile_row['field_default_value'] : $user->profile_fields[$user_ident])); } else { $day = request_var($profile_row['field_ident'] . '_day', 0); $month = request_var($profile_row['field_ident'] . '_month', 0); $year = request_var($profile_row['field_ident'] . '_year', 0); } } $profile_row['s_day_options'] = ''; for ($i = 1; $i < 32; $i++) { $profile_row['s_day_options'] .= '"; } $profile_row['s_month_options'] = ''; for ($i = 1; $i < 13; $i++) { $profile_row['s_month_options'] .= '"; } $profile_row['s_year_options'] = ''; for ($i = $now['year'] - 100; $i <= $now['year'] + 100; $i++) { $profile_row['s_year_options'] .= '"; } unset($now); $profile_row['field_value'] = 0; $template->assign_block_vars($this->profile_types[$profile_row['field_type']], array_change_key_case($profile_row, CASE_UPPER)); } /** * Process bool-type * @access private */ function generate_bool($profile_row, $preview = false) { global $template; $value = $this->get_var('int', $profile_row, $profile_row['field_default_value'], $preview); $profile_row['field_value'] = $value; $template->assign_block_vars($this->profile_types[$profile_row['field_type']], array_change_key_case($profile_row, CASE_UPPER)); if ($profile_row['field_length'] == 1) { if (!isset($this->options_lang[$profile_row['field_id']][$profile_row['lang_id']]) || !sizeof($this->options_lang[$profile_row['field_id']][$profile_row['lang_id']])) { $this->get_option_lang($profile_row['field_id'], $profile_row['lang_id'], FIELD_BOOL, $preview); } foreach ($this->options_lang[$profile_row['field_id']][$profile_row['lang_id']] as $option_id => $option_value) { $template->assign_block_vars('bool.options', array( 'OPTION_ID' => $option_id, 'CHECKED' => ($value == $option_id) ? ' checked="checked"' : '', 'VALUE' => $option_value) ); } } } /** * Process string-type * @access private */ function generate_string($profile_row, $preview = false) { global $template; $profile_row['field_value'] = $this->get_var('string', $profile_row, $profile_row['lang_default_value'], $preview); $template->assign_block_vars($this->profile_types[$profile_row['field_type']], array_change_key_case($profile_row, CASE_UPPER)); } /** * Process text-type * @access private */ function generate_text($profile_row, $preview = false) { global $template; global $user, $phpEx, $phpbb_root_path; $field_length = explode('|', $profile_row['field_length']); $profile_row['field_rows'] = $field_length[0]; $profile_row['field_cols'] = $field_length[1]; $profile_row['field_value'] = $this->get_var('string', $profile_row, $profile_row['lang_default_value'], $preview); $template->assign_block_vars($this->profile_types[$profile_row['field_type']], array_change_key_case($profile_row, CASE_UPPER)); } /** * Process dropdown-type * @access private */ function generate_dropdown($profile_row, $preview = false) { global $user, $template; $value = $this->get_var('int', $profile_row, $profile_row['field_default_value'], $preview); if (!isset($this->options_lang[$profile_row['field_id']]) || !isset($this->options_lang[$profile_row['field_id']][$profile_row['lang_id']]) || !sizeof($this->options_lang[$profile_row['field_id']][$profile_row['lang_id']])) { $this->get_option_lang($profile_row['field_id'], $profile_row['lang_id'], FIELD_DROPDOWN, $preview); } $profile_row['field_value'] = $value; $template->assign_block_vars($this->profile_types[$profile_row['field_type']], array_change_key_case($profile_row, CASE_UPPER)); foreach ($this->options_lang[$profile_row['field_id']][$profile_row['lang_id']] as $option_id => $option_value) { $template->assign_block_vars('dropdown.options', array( 'OPTION_ID' => $option_id, 'SELECTED' => ($value == $option_id) ? ' selected="selected"' : '', 'VALUE' => $option_value) ); } } /** * Return Templated value/field. Possible values for $mode are: * change == user is able to set/enter profile values; preview == just show the value * @access private */ function process_field_row($mode, $profile_row) { global $template; $preview = ($mode == 'preview') ? true : false; // set template filename $template->set_filenames(array( 'cp_body' => 'custom_profile_fields.html') ); // empty previously filled blockvars foreach ($this->profile_types as $field_case => $field_type) { $template->destroy_block_vars($field_type); } // Assign template variables $type_func = 'generate_' . $this->profile_types[$profile_row['field_type']]; $this->$type_func($profile_row, $preview); // Return templated data return $template->assign_display('cp_body'); } /** * Build Array for user insertion into custom profile fields table */ function build_insert_sql_array($cp_data) { global $db, $user, $auth; $sql_not_in = array(); foreach ($cp_data as $key => $null) { $sql_not_in[] = (strncmp($key, 'pf_', 3) === 0) ? substr($key, 3) : $key; } $sql = 'SELECT f.field_type, f.field_ident, f.field_default_value, l.lang_default_value FROM ' . PROFILE_LANG_TABLE . ' l, ' . PROFILE_FIELDS_TABLE . ' f WHERE l.lang_id = ' . $user->get_iso_lang_id() . ' ' . ((sizeof($sql_not_in)) ? ' AND ' . $db->sql_in_set('f.field_ident', $sql_not_in, true) : '') . ' AND l.field_id = f.field_id'; $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) { if ($row['field_default_value'] == 'now' && $row['field_type'] == FIELD_DATE) { $now = getdate(); $row['field_default_value'] = sprintf('%2d-%2d-%4d', $now['mday'], $now['mon'], $now['year']); } $cp_data['pf_' . $row['field_ident']] = (in_array($row['field_type'], array(FIELD_TEXT, FIELD_STRING))) ? $row['lang_default_value'] : $row['field_default_value']; } $db->sql_freeresult($result); return $cp_data; } /** * Get profile field value on submit * @access private */ function get_profile_field($profile_row) { global $phpbb_root_path, $phpEx; global $config; $var_name = 'pf_' . $profile_row['field_ident']; switch ($profile_row['field_type']) { case FIELD_DATE: if (!isset($_REQUEST[$var_name . '_day'])) { if ($profile_row['field_default_value'] == 'now') { $now = getdate(); $profile_row['field_default_value'] = sprintf('%2d-%2d-%4d', $now['mday'], $now['mon'], $now['year']); } list($day, $month, $year) = explode('-', $profile_row['field_default_value']); } else { $day = request_var($var_name . '_day', 0); $month = request_var($var_name . '_month', 0); $year = request_var($var_name . '_year', 0); } $var = sprintf('%2d-%2d-%4d', $day, $month, $year); break; case FIELD_BOOL: // Checkbox if ($profile_row['field_length'] == 2) { $var = (isset($_REQUEST[$var_name])) ? 1 : 0; } else { $var = request_var($var_name, (int) $profile_row['field_default_value']); } break; case FIELD_STRING: case FIELD_TEXT: $var = utf8_normalize_nfc(request_var($var_name, (string) $profile_row['field_default_value'], true)); break; case FIELD_INT: if (isset($_REQUEST[$var_name]) && $_REQUEST[$var_name] === '') { $var = NULL; } else { $var = request_var($var_name, (int) $profile_row['field_default_value']); } break; case FIELD_DROPDOWN: $var = request_var($var_name, (int) $profile_row['field_default_value']); break; default: $var = request_var($var_name, $profile_row['field_default_value']); break; } return $var; } } /** * Custom Profile Fields ACP * @package phpBB3 */ class custom_profile_admin extends custom_profile { var $vars = array(); /** * Return possible validation options */ function validate_options() { global $user; $validate_ary = array('CHARS_ANY' => '.*', 'NUMBERS_ONLY' => '[0-9]+', 'ALPHA_ONLY' => '[\w]+', 'ALPHA_SPACERS' => '[\w_\+\. \-\[\]]+'); $validate_options = ''; foreach ($validate_ary as $lang => $value) { $selected = ($this->vars['field_validation'] == $value) ? ' selected="selected"' : ''; $validate_options .= ''; } return $validate_options; } /** * Get string options for second step in ACP */ function get_string_options() { global $user; $options = array( 0 => array('TITLE' => $user->lang['FIELD_LENGTH'], 'FIELD' => ''), 1 => array('TITLE' => $user->lang['MIN_FIELD_CHARS'], 'FIELD' => ''), 2 => array('TITLE' => $user->lang['MAX_FIELD_CHARS'], 'FIELD' => ''), 3 => array('TITLE' => $user->lang['FIELD_VALIDATION'], 'FIELD' => '') ); return $options; } /** * Get text options for second step in ACP */ function get_text_options() { global $user; $options = array( 0 => array('TITLE' => $user->lang['FIELD_LENGTH'], 'FIELD' => ' ' . $user->lang['ROWS'] . '
' . $user->lang['COLUMNS'] . ' '), 1 => array('TITLE' => $user->lang['MIN_FIELD_CHARS'], 'FIELD' => ''), 2 => array('TITLE' => $user->lang['MAX_FIELD_CHARS'], 'FIELD' => ''), 3 => array('TITLE' => $user->lang['FIELD_VALIDATION'], 'FIELD' => '') ); return $options; } /** * Get int options for second step in ACP */ function get_int_options() { global $user; $options = array( 0 => array('TITLE' => $user->lang['FIELD_LENGTH'], 'FIELD' => ''), 1 => array('TITLE' => $user->lang['MIN_FIELD_NUMBER'], 'FIELD' => ''), 2 => array('TITLE' => $user->lang['MAX_FIELD_NUMBER'], 'FIELD' => ''), 3 => array('TITLE' => $user->lang['DEFAULT_VALUE'], 'FIELD' => '') ); return $options; } /** * Get bool options for second step in ACP */ function get_bool_options() { global $user, $config, $lang_defs; $default_lang_id = $lang_defs['iso'][$config['default_lang']]; $profile_row = array( 'var_name' => 'field_default_value', 'field_id' => 1, 'lang_name' => $this->vars['lang_name'], 'lang_explain' => $this->vars['lang_explain'], 'lang_id' => $default_lang_id, 'field_default_value' => $this->vars['field_default_value'], 'field_ident' => 'field_default_value', 'field_type' => FIELD_BOOL, 'field_length' => $this->vars['field_length'], 'lang_options' => $this->vars['lang_options'] ); $options = array( 0 => array('TITLE' => $user->lang['FIELD_TYPE'], 'EXPLAIN' => $user->lang['BOOL_TYPE_EXPLAIN'], 'FIELD' => ''), 1 => array('TITLE' => $user->lang['DEFAULT_VALUE'], 'FIELD' => $this->process_field_row('preview', $profile_row)) ); return $options; } /** * Get dropdown options for second step in ACP */ function get_dropdown_options() { global $user, $config, $lang_defs; $default_lang_id = $lang_defs['iso'][$config['default_lang']]; $profile_row[0] = array( 'var_name' => 'field_default_value', 'field_id' => 1, 'lang_name' => $this->vars['lang_name'], 'lang_explain' => $this->vars['lang_explain'], 'lang_id' => $default_lang_id, 'field_default_value' => $this->vars['field_default_value'], 'field_ident' => 'field_default_value', 'field_type' => FIELD_DROPDOWN, 'lang_options' => $this->vars['lang_options'] ); $profile_row[1] = $profile_row[0]; $profile_row[1]['var_name'] = 'field_novalue'; $profile_row[1]['field_ident'] = 'field_novalue'; $profile_row[1]['field_default_value'] = $this->vars['field_novalue']; $options = array( 0 => array('TITLE' => $user->lang['DEFAULT_VALUE'], 'FIELD' => $this->process_field_row('preview', $profile_row[0])), 1 => array('TITLE' => $user->lang['NO_VALUE_OPTION'], 'EXPLAIN' => $user->lang['NO_VALUE_OPTION_EXPLAIN'], 'FIELD' => $this->process_field_row('preview', $profile_row[1])) ); return $options; } /** * Get date options for second step in ACP */ function get_date_options() { global $user, $config, $lang_defs; $default_lang_id = $lang_defs['iso'][$config['default_lang']]; $profile_row = array( 'var_name' => 'field_default_value', 'lang_name' => $this->vars['lang_name'], 'lang_explain' => $this->vars['lang_explain'], 'lang_id' => $default_lang_id, 'field_default_value' => $this->vars['field_default_value'], 'field_ident' => 'field_default_value', 'field_type' => FIELD_DATE, 'field_length' => $this->vars['field_length'] ); $always_now = request_var('always_now', -1); if ($always_now == -1) { $s_checked = ($this->vars['field_default_value'] == 'now') ? true : false; } else { $s_checked = ($always_now) ? true : false; } $options = array( 0 => array('TITLE' => $user->lang['DEFAULT_VALUE'], 'FIELD' => $this->process_field_row('preview', $profile_row)), 1 => array('TITLE' => $user->lang['ALWAYS_TODAY'], 'FIELD' => ''), ); return $options; } } ?>> 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632
# translation of pt_BR.po to Brazilian portuguese
# translation of pt_BR.po to
# tradução de DrakX-pt_BR.po para Português do Brasil
# DRAKX PT_BR PO FILE
# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
# Lisiane Sztoltz Teixeira <lisiane@mandriva.com>
#
# Andrei Bosco Bezerra Torres <andrei_bosco@yahoo.com.br>, 2000, 2003.
# Bruno Dorfman Buys <brunobuys@zipmail.com.br>, 2002.
# Tiago da Cruz Bezerra <tiagocruz18@uol.com.br>,2002 2003, 2004.
# Ricardo de Castilho <cast_brasil@ig.com.br>, 2003.
# Carlinhos Cecconi <carlinux@terra.com.br>, 2003, 2004.
# Deivi Lopes Kuhn <deivikuhn@yahoo.com.br>, 2003, 2004.
# Cristiano Otto Von Trompczynski <cris@mandriva.com>, 2005.
# Arthur R. Mello <renato@conectiva.com.br>, 2005.
# Arthur Renato Mello <renato@conectiva.com.br>, 2005.
# Felipe Arruda <felipemiguel@gmail.com>, 2006, 2007, 2008.
# Sergio Rafael Lemke <sergio@mandriva.com.br>, 2009.
msgid ""
msgstr ""
"Project-Id-Version: pt_BR\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-02-13 16:29+0100\n"
"PO-Revision-Date: 2009-01-13 18:34-0200\n"
"Last-Translator: Sergio Rafael Lemke <sergio@mandriva.com.br>\n"
"Language-Team: Brazilian portuguese <en@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms:  nplurals=2; plural=(n > 1);\n"

#: any.pm:109
#, c-format
msgid "Do you have further supplementary media?"
msgstr "Você tem alguma mídia suplementar adicional?"

#. -PO: keep the double empty lines between sections, this is formatted a la LaTeX
#: any.pm:112
#, c-format
msgid ""
"The following media have been found and will be used during install: %s.\n"
"\n"
"\n"
"Do you have a supplementary installation medium to configure?"
msgstr ""
"A mídia a seguir foi encontrada e será usada durante a instalação: %s.\n"
"\n"
"\n"
"Você deseja configurar alguma mídia suplementar?"

#: any.pm:120
#, c-format
msgid "CD-ROM"
msgstr "CD-ROM"

#: any.pm:121
#, c-format
msgid "Network (HTTP)"
msgstr "Rede (HTTP)"

#: any.pm:122
#, c-format
msgid "Network (FTP)"
msgstr "Rede (FTP)"

#: any.pm:123
#, c-format
msgid "Network (NFS)"
msgstr "Rede (NFS)"

#: any.pm:163
#, c-format
msgid "URL of the mirror?"
msgstr "URL do Servidor?"

#: any.pm:169
#, c-format
msgid "URL must start with ftp:// or http://"
msgstr "URL deve começar com ftp:// ou http://"

#: any.pm:180
#, c-format
msgid ""
"Contacting Mandriva Linux web site to get the list of available mirrors..."
msgstr ""
"Contactando o site da Mandriva Linux para pegar a lista de servidores "
"disponíveis..."

#: any.pm:185
#, c-format
msgid ""
"Failed contacting Mandriva Linux web site to get the list of available "
"mirrors"
msgstr ""
"Falha contactando o site do Mandriva Linux em busca da lista de servidores "
"disponíveis"

#: any.pm:195
#, c-format
msgid "Choose a mirror from which to get the packages"
msgstr "Escolha um servidor de onde pegar os pacotes "

#: any.pm:225
#, c-format
msgid "NFS setup"
msgstr "Configuração NFS"

#: any.pm:226
#, c-format
msgid "Please enter the hostname and directory of your NFS media"
msgstr "Por favor, entre o nome do servidor e o diretório da sua mídia NFS"

#: any.pm:230
#, c-format
msgid "Hostname missing"
msgstr "Nome da máquina faltando"

#: any.pm:231
#, c-format
msgid "Directory must begin with \"/\""
msgstr "O diretório deve começar com \"/\""

#: any.pm:235
#, c-format
msgid "Hostname of the NFS mount ?"
msgstr "Nome do servidor do ponto de montagem NFS"

#: any.pm:236
#, c-format
msgid "Directory"
msgstr "Diretório"

#: any.pm:258
#, c-format
msgid "Supplementary"
msgstr "Adicional"

#: any.pm:293
#, c-format
msgid ""
"Can't find a package list file on this mirror. Make sure the location is "
"correct."
msgstr ""
"Não encontro uma lista de pacotes neste servidor. Verifique se a localização "
"está correta."

#: any.pm:328
#, c-format
msgid "Looking at packages already installed..."
msgstr "Procurando por pacotes já instalados..."

#: any.pm:335
#, c-format
msgid "Removing packages prior to upgrade..."
msgstr "Removendo pacotes antes da atualização..."

#: any.pm:377
#, c-format
msgid "Finding packages to upgrade..."
msgstr "Procurando pacotes para atualizar..."

#: any.pm:389
#, c-format
msgid ""
"You have decided to upgrade your system to %s. KDE 3.5 has been detected\n"
"on your system. This installer cannot preserve KDE 3.5 in an upgrade. If you "
"choose to proceed, \n"
"KDE 4 will replace KDE 3, and you will lose your personal KDE configuration "
"settings. \n"
"To upgrade with KDE 3.5 and your personal settings preserved, \n"
"please reboot your system and upgrade using the Mandriva update applet."
msgstr ""
"Você decidiu atualizar o seu sistema para o %s. O KDE 3.5 foi detectado no "
"seu sistema.\n"
"Este instalador não pode preservar o KDE 3.5 durante a atualização. Se você "
"optar por proceder, \n"
"o KDE 4 substituirá o KDE 3, e você perderá as configurações pessoais do "
"KDE. \n"
"Para atualizar e manter o KDE 3.5 e suas configurações pessoais, por favor "
"reinicie o seu sistema\n"
"e faça a tualização utilizando o applet da Mandriva."

#: any.pm:394 steps_interactive.pm:1125
#, c-format
msgid "Reboot"
msgstr "Reiniciar"

#: any.pm:394
#, c-format
msgid "Proceed"
msgstr "Proceder"

#. -PO: keep the double empty lines between sections, this is formatted a la LaTeX
#: any.pm:584
#, c-format
msgid ""
"The following packages will be removed to allow upgrading your system: %s\n"
"\n"
"\n"
"Do you really want to remove these packages?\n"
msgstr ""
"Os seguintes pacotes serão removidos para permitir a atualização do seu\n"
"sistema: %s\n"
"\n"
"\n"
"Você realmente quer remover estes pacotes?\n"

#: any.pm:803
#, c-format
msgid "Error reading file %s"
msgstr "Erro ao ler o arquivo %s"

#: any.pm:1010
#, c-format
msgid "The following disk(s) were renamed:"
msgstr "O(s) seguinte(s) disco(s) foi renomeado:"

#: any.pm:1012
#, c-format
msgid "%s (previously named as %s)"
msgstr "%s (previamente nomeado como %s)"

#: any.pm:1069
#, c-format
msgid "HTTP"
msgstr "HTTP"

#: any.pm:1069
#, c-format
msgid "FTP"
msgstr "FTP"

#: any.pm:1069
#, c-format
msgid "NFS"
msgstr "NFS"

#: any.pm:1088 steps_interactive.pm:954
#, c-format
msgid "Network"
msgstr "Rede"

#: any.pm:1092
#, c-format
msgid "Please choose a media"
msgstr "Por favor, escolha uma mídia"

#: any.pm:1108
#, c-format
msgid "File already exists. Overwrite it?"
msgstr "O arquivo já existe. Sobrescrevê-lo?"

#: any.pm:1112
#, c-format
msgid "Permission denied"
msgstr "Permissão negada"

#: any.pm:1160
#, c-format
msgid "Bad NFS name"
msgstr "Nome NFS inválido"

#: any.pm:1181
#, c-format
msgid "Bad media %s"
msgstr "Mídia %s ruim"

#: any.pm:1224
#, c-format
msgid "Can not make screenshots before partitioning"
msgstr "Não foi possível capturar telas antes de particionar"

#: any.pm:1232
#, c-format
msgid "Screenshots will be available after install in %s"
msgstr "As captura de tela estarão disponíveis depois da instalação em %s"

#: gtk.pm:130
#, c-format
msgid "Installation"
msgstr "Instalação"

#: gtk.pm:134 share/meta-task/compssUsers.pl:44
#, c-format
msgid "Configuration"
msgstr "Configuração"

#: install2.pm:168
#, c-format
msgid "You must also format %s"
msgstr "Você também deve formatar %s"

#: interactive.pm:16
#, c-format
msgid ""
"Some hardware on your computer needs ``proprietary'' drivers to work.\n"
"You can find some information about them at: %s"
msgstr ""
"Algum hardware no seu computador precisa de drivers 'proprietários' \n"
"para funcionar. Você pode encontrar informações sobre eles em: %s"

#: interactive.pm:22
#, c-format
msgid "Bringing up the network"
msgstr "Ativando a rede"

#: interactive.pm:27
#, c-format
msgid "Bringing down the network"
msgstr "Desativando a rede"

#: media.pm:422
#, c-format
msgid "Please wait, retrieving file"
msgstr "Por favor aguarde, obtendo o arquivo"

#: media.pm:705 media.pm:716
#, c-format
msgid "Downloading file %s..."
msgstr "Baixando arquivo %s..."

#: media.pm:808
#, c-format
msgid "Copying some packages on disks for future use"
msgstr "Copiando alguns pacotes em disco para uso posterior"

#: media.pm:861
#, c-format
msgid "Copying in progress"
msgstr "Cópia em progresso"

#: pkgs.pm:29
#, c-format
msgid "must have"
msgstr "precisa ter"

#: pkgs.pm:30
#, c-format
msgid "important"
msgstr "importante"

#: pkgs.pm:31
#, c-format
msgid "very nice"
msgstr "muito bom"

#: pkgs.pm:32
#, c-format
msgid "nice"
msgstr "bom"

#: pkgs.pm:33
#, c-format
msgid "maybe"
msgstr "talvez"

#: pkgs.pm:253
#, c-format
msgid ""
"Some packages requested by %s cannot be installed:\n"
"%s"
msgstr ""
"Alguns pacotes requeridos por %s não podem ser instalados:\n"
"%s"

#: share/meta-task/compssUsers.pl:13
#, c-format
msgid "Workstation"
msgstr "Estação de Trabalho"

#: share/meta-task/compssUsers.pl:15
#, c-format
msgid "Office Workstation"
msgstr "Estação de Trabalho de Escritório"

#: share/meta-task/compssUsers.pl:17
#, c-format
msgid ""
"Office programs: wordprocessors (OpenOffice.org Writer, Kword), spreadsheets "
"(OpenOffice.org Calc, Kspread), PDF viewers, etc"
msgstr ""
"Programas de escritório: processadores de texto (OpenOffice.org Writer, "
"Kword), tabelas (OpenOffice.org Calc, Kspread), visualizadores PDF, etc."

#: share/meta-task/compssUsers.pl:18
#, c-format
msgid ""
"Office programs: wordprocessors (kword, abiword), spreadsheets (kspread, "
"gnumeric), pdf viewers, etc"
msgstr ""
"Programas de escritório: processadores de texto (Kword, Abiword), tabelas "
"(Kspread, Gnumeric), visualizadores PDF, etc"

#: share/meta-task/compssUsers.pl:23
#, c-format
msgid "Game station"
msgstr "Estação de Jogos"

#: share/meta-task/compssUsers.pl:24
#, c-format
msgid "Amusement programs: arcade, boards, strategy, etc"
msgstr "Programas de entretenimento: arcade, tabuleiro, estratégia, etc."

#: share/meta-task/compssUsers.pl:27
#, c-format
msgid "Multimedia station"
msgstr "Estação de Multimídia"

#: share/meta-task/compssUsers.pl:28
#, c-format
msgid "Sound and video playing/editing programs"
msgstr "Programas de edição/reprodução de som e vídeo"

#: share/meta-task/compssUsers.pl:33
#, c-format
msgid "Internet station"
msgstr "Estação de Internet"

#: share/meta-task/compssUsers.pl:34
#, c-format
msgid ""
"Set of tools to read and send mail and news (mutt, tin..) and to browse the "
"Web"
msgstr ""
"Conjunto de ferramentas para ler e enviar mensagens e notícias (mutt, "
"tin...) e para navegar na Web."

#: share/meta-task/compssUsers.pl:39
#, c-format
msgid "Network Computer (client)"
msgstr "Computador de rede (cliente)"

#: share/meta-task/compssUsers.pl:40
#, c-format
msgid "Clients for different protocols including ssh"
msgstr "Clientes para diferentes protocolos, incluindo ssh"

#: share/meta-task/compssUsers.pl:45
#, c-format
msgid "Tools to ease the configuration of your computer"
msgstr "Ferramentas para facilitar a configuração do seu computador"

#: share/meta-task/compssUsers.pl:49
#, c-format
msgid "Console Tools"
msgstr "Ferramentas de Console"

#: share/meta-task/compssUsers.pl:50
#, c-format
msgid "Editors, shells, file tools, terminals"
msgstr "Editores, shells, ferramentas de arquivos, terminais"

#: share/meta-task/compssUsers.pl:54 share/meta-task/compssUsers.pl:156
#: share/meta-task/compssUsers.pl:158
#, c-format
msgid "Development"
msgstr "Desenvolvimento"

#: share/meta-task/compssUsers.pl:55 share/meta-task/compssUsers.pl:159
#, c-format
msgid "C and C++ development libraries, programs and include files"
msgstr "Bibliotecas de desenvolvimento C e C++, programas e arquivos include"

#: share/meta-task/compssUsers.pl:58 share/meta-task/compssUsers.pl:163
#, c-format
msgid "Documentation"
msgstr "Documentação"

#: share/meta-task/compssUsers.pl:59 share/meta-task/compssUsers.pl:164
#, c-format
msgid "Books and Howto's on Linux and Free Software"
msgstr "Livros, documentos e tutoriais sobre Linux e Software Livre"

#: share/meta-task/compssUsers.pl:63 share/meta-task/compssUsers.pl:167
#, c-format
msgid "LSB"
msgstr "LSB"

#: share/meta-task/compssUsers.pl:64 share/meta-task/compssUsers.pl:168
#, c-format
msgid "Linux Standard Base. Third party applications support"
msgstr "Linux Standard Base. Suporte a aplicativos de terceiros"

#: share/meta-task/compssUsers.pl:73
#, c-format
msgid "Web Server"
msgstr "Servidor Web"

#: share/meta-task/compssUsers.pl:74
#, c-format
msgid "Apache"
msgstr "Apache"

#: share/meta-task/compssUsers.pl:77
#, c-format
msgid "Groupware"
msgstr "Groupware"

#: share/meta-task/compssUsers.pl:78
#, c-format
msgid "Kolab Server"
msgstr "Servidor Kolab"

#: share/meta-task/compssUsers.pl:81 share/meta-task/compssUsers.pl:122
#, c-format
msgid "Firewall/Router"
msgstr "Firewall/Roteador"

#: share/meta-task/compssUsers.pl:82 share/meta-task/compssUsers.pl:123
#, c-format
msgid "Internet gateway"
msgstr "Gateway Internet"

#: share/meta-task/compssUsers.pl:85
#, c-format
msgid "Mail/News"
msgstr "E-mail/Notícias"

#: share/meta-task/compssUsers.pl:86
#, c-format
msgid "Postfix mail server, Inn news server"
msgstr "Servidor de e-mail Postfix, servidor de notícias Inn"

#: share/meta-task/compssUsers.pl:89
#, c-format
msgid "Directory Server"
msgstr "Servidor de Diretório"

#: share/meta-task/compssUsers.pl:93
#, c-format
msgid "FTP Server"
msgstr "Servidor FTP"

#: share/meta-task/compssUsers.pl:94
#, c-format
msgid "ProFTPd"
msgstr "ProFTPd"

#: share/meta-task/compssUsers.pl:97
#, c-format
msgid "DNS/NIS"
msgstr "DNS/NIS"

#: share/meta-task/compssUsers.pl:98
#, c-format
msgid "Domain Name and Network Information Server"
msgstr ""
"Servidor de Nomes do Domínio (DNS) e Servidor de Informações de Rede (NIS)"

#: share/meta-task/compssUsers.pl:101
#, c-format
msgid "File and Printer Sharing Server"
msgstr "Servidor de Compartilhamento de Impressoras e Arquivos"

#: share/meta-task/compssUsers.pl:102
#, c-format
msgid "NFS Server, Samba server"
msgstr "Servidor NFS, Servidor Samba"

#: share/meta-task/compssUsers.pl:105 share/meta-task/compssUsers.pl:118
#, c-format
msgid "Database"
msgstr "Banco de dados"

#: share/meta-task/compssUsers.pl:106
#, c-format
msgid "PostgreSQL and MySQL Database Server"
msgstr "Servidor de banco de dados PostgreSQL e MySQL"

#: share/meta-task/compssUsers.pl:110
#, c-format
msgid "Web/FTP"
msgstr "Web/FTP"

#: share/meta-task/compssUsers.pl:111
#, c-format
msgid "Apache, Pro-ftpd"
msgstr "Apache, Pro-ftpd"

#: share/meta-task/compssUsers.pl:114
#, c-format
msgid "Mail"
msgstr "E-mail"

#: share/meta-task/compssUsers.pl:115
#, c-format
msgid "Postfix mail server"
msgstr "Servidor de e-mail Postfix"

#: share/meta-task/compssUsers.pl:119
#, c-format
msgid "PostgreSQL or MySQL database server"
msgstr "Servidor de banco de dados PostgreSQL ou MySQL"

#: share/meta-task/compssUsers.pl:126
#, c-format
msgid "Network Computer server"
msgstr "Servidor de Rede"

#: share/meta-task/compssUsers.pl:127
#, c-format
msgid "NFS server, SMB server, Proxy server, ssh server"
msgstr "Servidor NFS, servidor SMB, servidor Proxy, servidor SSH"

#: share/meta-task/compssUsers.pl:133
#, c-format
msgid "Graphical Environment"
msgstr "Ambiente Gráfico"

#: share/meta-task/compssUsers.pl:135
#, c-format
msgid "KDE Workstation"
msgstr "Estação de Trabalho KDE"

#: share/meta-task/compssUsers.pl:136
#, c-format
msgid ""
"The K Desktop Environment, the basic graphical environment with a collection "
"of accompanying tools"
msgstr ""
"O ambiente de trabalho KDE, sua área de trabalho básica acompanhada por uma "
"coleção extra de ferramentas"

#: share/meta-task/compssUsers.pl:140
#, c-format
msgid "GNOME Workstation"
msgstr "Estação de Trabalho GNOME"

#: share/meta-task/compssUsers.pl:141
#, c-format
msgid ""
"A graphical environment with user-friendly set of applications and desktop "
"tools"
msgstr ""
"Um ambiente gráfico com um conjunto de aplicativos e ferramentas amigáveis"

#: share/meta-task/compssUsers.pl:145
#, fuzzy, c-format
msgid "LXDE Desktop"
msgstr "Desktop KDE"

#: share/meta-task/compssUsers.pl:149
#, c-format
msgid "Other Graphical Desktops"
msgstr "Outros ambientes de Área de trabalho"

#: share/meta-task/compssUsers.pl:150
#, c-format
msgid "Window Maker, Enlightenment, Fvwm, etc"
msgstr "Window Maker, Enlightenment, Fvwm, etc"

#: share/meta-task/compssUsers.pl:173
#, c-format
msgid "Utilities"
msgstr "Utilitários"

#: share/meta-task/compssUsers.pl:175 share/meta-task/compssUsers.pl:176
#, c-format
msgid "SSH Server"
msgstr "Servidor SSH"

#: share/meta-task/compssUsers.pl:180
#, c-format
msgid "Webmin"
msgstr "Webmin"

#: share/meta-task/compssUsers.pl:181
#, c-format
msgid "Webmin Remote Configuration Server"
msgstr "Servidor de Configuração Remota Webmin"

#: share/meta-task/compssUsers.pl:185
#, c-format
msgid "Network Utilities/Monitoring"
msgstr "Utilitários de Rede/Monitoramento"

#: share/meta-task/compssUsers.pl:186
#, c-format
msgid "Monitoring tools, processes accounting, tcpdump, nmap, ..."
msgstr ""
"Ferramentas de monitoração, contabilização de processos, tcpdump, nmap, ..."

#: share/meta-task/compssUsers.pl:190
#, c-format
msgid "Mandriva Wizards"
msgstr "Assistentes Mandriva"

#: share/meta-task/compssUsers.pl:191
#, c-format
msgid "Wizards to configure server"
msgstr "Assistentes para configurar o servidor"

#: steps.pm:85
#, c-format
msgid ""
"An error occurred, but I do not know how to handle it nicely.\n"
"Continue at your own risk."
msgstr ""
"Um erro ocorreu, mas não é possível tratá-lo.\n"
"Continue por sua própria conta e risco."

#: steps.pm:442
#, c-format
msgid ""
"Some important packages did not get installed properly.\n"
"Either your cdrom drive or your cdrom is defective.\n"
"Check the cdrom on an installed computer using \"rpm -qpl media/main/*.rpm"
"\"\n"
msgstr ""
"Alguns pacotes importantes não foram instalados corretamente.\n"
" O seu drive de CD-ROM ou o seu CD-ROM estão defeituosos.\n"
" Verifique o CD-ROM em um computador instalado, usando \"rpm -qpl media/main/"
"*.rpm\"\n"

#: steps_auto_install.pm:71 steps_stdio.pm:27
#, c-format
msgid "Entering step `%s'\n"
msgstr "Entrando no passo `%s'\n"

#: steps_curses.pm:22
#, c-format
msgid "Mandriva Linux Installation %s"
msgstr "Instalação do Mandriva Linux %s"

#: steps_curses.pm:32
#, c-format
msgid "<Tab>/<Alt-Tab> between elements"
msgstr "<Tab>/<Alt-Tab> move entre elementos"

#: steps_gtk.pm:89
#, c-format
msgid "Xorg server is slow to start. Please wait..."
msgstr "O servidor Xorg leva algum tempo para iniciar. Favor esperar..."

#: steps_gtk.pm:203
#, c-format
msgid ""
"Your system is low on resources. You may have some problem installing\n"
"Mandriva Linux. If that occurs, you can try a text install instead. For "
"this,\n"
"press `F1' when booting on CDROM, then enter `text'."
msgstr ""
"Seu sistema está com poucos recursos. Você pode ter algum problema na\n"
"instalação do Mandriva Linux. Se isso ocorrer, você pode tentar instalar "
"usando o\n"
"modo texto. Para isso, aperte 'F1' na tela de inicialização e escreva 'text'."

#: steps_gtk.pm:236
#, c-format
msgid "Install Mandriva KDE Desktop"
msgstr "Instalar Desktop Mandriva KDE"

#: steps_gtk.pm:237
#, c-format
msgid "Install Mandriva GNOME Desktop"
msgstr "Instalar Desktop Mandriva GNOME"

#: steps_gtk.pm:238
#, c-format
msgid "Custom install"
msgstr "Instalação personalizada"

#: steps_gtk.pm:259
#, c-format
msgid "KDE Desktop"
msgstr "Desktop KDE"

#: steps_gtk.pm:260
#, c-format
msgid "GNOME Desktop"
msgstr "Desktop GNOME"

#: steps_gtk.pm:261
#, c-format
msgid "Custom Desktop"
msgstr "Desktop personalizado"

#: steps_gtk.pm:267
#, c-format
msgid "Here's a preview of the '%s' desktop."
msgstr "Aqui está uma prévia do desktop '%s'."

#: steps_gtk.pm:295
#, c-format
msgid "Click on images in order to see a bigger preview"
msgstr "Clique nas imagens para ampliar-las"

#: steps_gtk.pm:313 steps_interactive.pm:625 steps_list.pm:30
#, c-format
msgid "Package Group Selection"
msgstr "Seleção de Grupo de Pacotes"

#: steps_gtk.pm:334 steps_interactive.pm:642
#, c-format
msgid "Individual package selection"
msgstr "Seleção individual de pacotes"

#: steps_gtk.pm:358 steps_interactive.pm:566
#, c-format
msgid "Total size: %d / %d MB"
msgstr "Tamanho total: %d / %d MB"

#: steps_gtk.pm:401
#, c-format
msgid "Bad package"
msgstr "Pacote defeituoso"

#: steps_gtk.pm:403
#, c-format
msgid "Version: "
msgstr "Versão: "

#: steps_gtk.pm:404
#, c-format
msgid "Size: "
msgstr "Tamanho:"

#: steps_gtk.pm:404
#, c-format
msgid "%d KB\n"
msgstr "%d KB\n"

#: steps_gtk.pm:405
#, c-format
msgid "Importance: "
msgstr "Importância:"

#: steps_gtk.pm:439
#, c-format
msgid "You can not select/unselect this package"
msgstr "Você não pode selecionar/desmarcar este pacote"

#: steps_gtk.pm:443
#, c-format
msgid "due to missing %s"
msgstr "devido a falta de %s"

#: steps_gtk.pm:444
#, c-format
msgid "due to unsatisfied %s"
msgstr "devido a %s não-satisfeito(a)"

#: steps_gtk.pm:445
#, c-format
msgid "trying to promote %s"
msgstr "tentando promover %s"

#: steps_gtk.pm:446
#, c-format
msgid "in order to keep %s"
msgstr "a fim de manter %s"

#: steps_gtk.pm:451
#, c-format
msgid ""
"You can not select this package as there is not enough space left to install "
"it"
msgstr ""
"Você não pode selecionar esse pacote pois não existe espaço livre para "
"instalá-lo"

#: steps_gtk.pm:454
#, c-format
msgid "The following packages are going to be installed"
msgstr "Os seguintes pacotes serão instalados"

#: steps_gtk.pm:455
#, c-format
msgid "The following packages are going to be removed"
msgstr "Os seguintes pacotes serão removidos"

#: steps_gtk.pm:480
#, c-format
msgid "This is a mandatory package, it can not be unselected"
msgstr "Esse é um pacote obrigatório, e não pode ser desmarcado"

#: steps_gtk.pm:482
#, c-format
msgid "You can not unselect this package. It is already installed"
msgstr "Você não pode desmarcar esse pacote. Ele já está instalado"

#: steps_gtk.pm:484
#, c-format
msgid "You can not unselect this package. It must be upgraded"
msgstr "Você não pode desmarcar este pacote. Ele precisa ser atualizado"

#: steps_gtk.pm:488
#, c-format
msgid "Show automatically selected packages"
msgstr "Mostrar automaticamente os pacotes selecionados"

#: steps_gtk.pm:494
#, c-format
msgid "Install"
msgstr "Instalar"

#: steps_gtk.pm:497
#, c-format
msgid "Load/Save selection"
msgstr "Carregar/Salvar seleção"

#: steps_gtk.pm:498
#, c-format
msgid "Updating package selection"
msgstr "Atualizando seleção de pacotes"

#: steps_gtk.pm:503
#, c-format
msgid "Minimal install"
msgstr "Instalação mínima"

#: steps_gtk.pm:516
#, c-format
msgid "Software Management"
msgstr "Gerenciamento de Software"

#: steps_gtk.pm:516 steps_interactive.pm:451
#, c-format
msgid "Choose the packages you want to install"
msgstr "Escolha os pacotes que você quer instalar"

#: steps_gtk.pm:533 steps_interactive.pm:656 steps_list.pm:32
#, c-format
msgid "Installing"
msgstr "Instalando"

#: steps_gtk.pm:562
#, c-format
msgid "No details"
msgstr "Sem detalhes"

#: steps_gtk.pm:577
#, c-format
msgid "Time remaining:"
msgstr "Tempo restante:"

#: steps_gtk.pm:578
#, c-format
msgid "(estimating...)"
msgstr "(estimando...)"

#: steps_gtk.pm:604
#, c-format
msgid "%d package"
msgid_plural "%d packages"
msgstr[0] "%d pacote"
msgstr[1] "%d pacotes"

#: steps_gtk.pm:650 steps_interactive.pm:819 steps_list.pm:43
#, c-format
msgid "Summary"
msgstr "Resumo"

#: steps_gtk.pm:669
#, c-format
msgid "Configure"
msgstr "Configurar"

#: steps_gtk.pm:686 steps_interactive.pm:815 steps_interactive.pm:966
#, c-format
msgid "not configured"
msgstr "não configurado"

#: steps_gtk.pm:720
#, c-format
msgid "Media Selection"
msgstr "Seleção de Mídia"

#: steps_gtk.pm:729 steps_interactive.pm:334
#, c-format
msgid ""
"The following installation media have been found.\n"
"If you want to skip some of them, you can unselect them now."
msgstr ""
"As seguintes mídias de instalação foram encontradas.\n"
"Se você deseja ignorar alguma delas, você pode desmarcá-las agora."

#: steps_gtk.pm:745 steps_interactive.pm:340
#, c-format
msgid ""
"You have the option to copy the contents of the CDs onto the hard drive "
"before installation.\n"
"It will then continue from the hard drive and the packages will remain "
"available once the system is fully installed."
msgstr ""
"Você pode copiar o conteúdo dos CDs para o seu disco rígido antes da "
"instalação.\n"
"A instalação irá continuar a partir do seu disco rígido e os pacotes "
"continuarão disponíveis após a instalação ser finalizada."

#: steps_gtk.pm:747 steps_interactive.pm:342
#, c-format
msgid "Copy whole CDs"
msgstr "Copiar todos os CDs"

#: steps_interactive.pm:39
#, c-format
msgid "An error occurred"
msgstr "Ocorreu um erro"

#: steps_interactive.pm:104
#, c-format
msgid "Please choose your keyboard layout"
msgstr "Por favor, escolha o layout do seu teclado"

#: steps_interactive.pm:108
#, c-format
msgid "Here is the full list of available keyboards:"
msgstr "Aqui está a lista completa dos teclados disponíveis:"

#: steps_interactive.pm:139
#, c-format
msgid "Install/Upgrade"
msgstr "Instalar/Atualizar"

#: steps_interactive.pm:143
#, c-format
msgid "Is this an install or an upgrade?"
msgstr "Esta é uma instalação ou atualização?"

#: steps_interactive.pm:145
#, c-format
msgid ""
"_: This is a noun:\n"
"Install"
msgstr "Instalação"

#: steps_interactive.pm:147
#, c-format
msgid "Upgrade %s"
msgstr "Atualizar %s"

#: steps_interactive.pm:151
#, c-format
msgid "Upgrade from a 32bit to a 64bit distribution is not supported"
msgstr "A atualização de distribuição 32 bits para 64 bits não é suportada"

#: steps_interactive.pm:155
#, c-format
msgid "Upgrade from a 64bit to a 32bit distribution is not supported"
msgstr "A atualização de distribuição 64 bits para 32 bits não é suportada"

#: steps_interactive.pm:174
#, c-format
msgid "Encryption key for %s"
msgstr "Chave de criptografia para %s"

#: steps_interactive.pm:207
#, c-format
msgid "Cancel installation, reboot system"
msgstr "Cancelar instalação, reiniciar o sistema"

#: steps_interactive.pm:208
#, c-format
msgid "New Installation"
msgstr "Nova Instalação"

#: steps_interactive.pm:209
#, c-format
msgid "Upgrade previous installation (not recommended)"
msgstr "Atualizar instalação anterior (não recomendado)"

#: steps_interactive.pm:213
#, c-format
msgid ""
"Installer has detected that your installed Mandriva Linux system could not\n"
"safely be upgraded to %s.\n"
"\n"
"New installation replacing your previous one is recommended.\n"
"\n"
"Warning : you should backup all your personal data before choosing \"New\n"
"Installation\"."
msgstr ""
"O instalador detectou que o seu sistema Mandriva Linux pode não ser\n"
"atualizado com segurança para %s.\n"
"\n"
"É recomendada uma nova instalação substituindo a anterior.\n"
"\n"
"Atenção: você deve salvar todos os seus dados pessoais antes de escolher "
"\"Nova\n"
"Instalação\"."

#: steps_interactive.pm:255
#, c-format
msgid "IDE"
msgstr "IDE"

#: steps_interactive.pm:255
#, c-format
msgid "Configuring IDE"
msgstr "Configurando IDE"

#: steps_interactive.pm:292
#, c-format
msgid ""
"No free space for 1MB bootstrap! Install will continue, but to boot your "
"system, you'll need to create the bootstrap partition in DiskDrake"
msgstr ""
"Sem espaço livre para bootstrap de 1MB! A instalação continuará, mas para "
"poder iniciar seu sistema você precisará criar uma partição bootstrap no "
"DiskDrake"

#: steps_interactive.pm:297
#, c-format
msgid ""
"You'll need to create a PPC PReP Boot bootstrap! Install will continue, but "
"to boot your system, you'll need to create the bootstrap partition in "
"DiskDrake"
msgstr ""
"Você precisará criar um PPC PReP Boot bootstrap! O instalador irá continuar, "
"mas para iniciar seu sistema, você precisa criar uma partição bootstrap no "
"DiskDrake."

#: steps_interactive.pm:378
#, c-format
msgid ""
"Change your Cd-Rom!\n"
"Please insert the Cd-Rom labelled \"%s\" in your drive and press Ok when "
"done.\n"
"If you do not have it, press Cancel to avoid installation from this Cd-Rom."
msgstr ""
"Mude o seu CD-ROM\n"
"\n"
"Por favor, insira o CD-ROM chamado \"%s\" no seu drive e clique em Ok quando "
"estiver pronto.\n"
"Se você não o tiver em mãos, clique em Cancelar para evitar a instalação "
"desse CD-ROM."

#: steps_interactive.pm:408
#, c-format
msgid "Looking for available packages..."
msgstr "Procurando por pacotes disponíveis..."

#: steps_interactive.pm:416
#, c-format
msgid ""
"Your system does not have enough space left for installation or upgrade (%"
"dMB > %dMB)"
msgstr ""
"Seu sistema não possui espaço suficiente para a instalação ou atualização (%"
"dMB > %dMB)"

#: steps_interactive.pm:463
#, c-format
msgid ""
"Please choose load or save package selection.\n"
"The format is the same as auto_install generated files."
msgstr ""
"Por favor, escolha entre carregar ou salvar a seleção de pacotes. \n"
"O formato é o mesmo que os arquivos gerados pelo auto_install."

#: steps_interactive.pm:465
#, c-format
msgid "Load"
msgstr "Carregar"

#: steps_interactive.pm:465
#, c-format
msgid "Save"
msgstr "Salvar"

#: steps_interactive.pm:473
#, c-format
msgid "Bad file"
msgstr "Arquivo corrompido"

#: steps_interactive.pm:489
#, c-format
msgid "KDE"
msgstr "KDE"

#: steps_interactive.pm:490
#, c-format
msgid "GNOME"
msgstr "GNOME"

#: steps_interactive.pm:493
#, c-format
msgid "Desktop Selection"
msgstr "Seleção de Desktop"

#: steps_interactive.pm:494
#, c-format
msgid "You can choose your workstation desktop profile."
msgstr "Você pode escolher seu perfil de estação de trabalho."

#: steps_interactive.pm:580
#, c-format
msgid "Selected size is larger than available space"
msgstr "O tamanho escolhido é maior que o espaço disponível"

#: steps_interactive.pm:595
#, c-format
msgid "Type of install"
msgstr "Tipo de instalação"

#: steps_interactive.pm:596
#, c-format
msgid ""
"You have not selected any group of packages.\n"
"Please choose the minimal installation you want:"
msgstr ""
"Você não selecionou nenhum grupo de pacotes.\n"
"Por favor, escolha a instalação mínima que deseja:"

#: steps_interactive.pm:601
#, c-format
msgid "With X"
msgstr "Com X"

#: steps_interactive.pm:602
#, c-format
msgid "With basic documentation (recommended!)"
msgstr "Com documentação básica (recomendado)"

#: steps_interactive.pm:603
#, c-format
msgid "Truly minimal install (especially no urpmi)"
msgstr "Instalação mínima (sem o uprmi)"

#: steps_interactive.pm:657
#, c-format
msgid "Preparing installation"
msgstr "Preparando a instalação"

#: steps_interactive.pm:665
#, c-format
msgid "Installing package %s"
msgstr "Instalando o pacote %s"

#: steps_interactive.pm:689
#, c-format
msgid "There was an error ordering packages:"
msgstr "Houve um erro durante a ordenação dos pacotes:"

#: steps_interactive.pm:689
#, c-format
msgid "Go on anyway?"
msgstr "Continuar mesmo assim?"

#: steps_interactive.pm:693
#, c-format
msgid "Retry"
msgstr "Tentar Novamente"

#: steps_interactive.pm:694
#, c-format
msgid "Skip this package"
msgstr "Pular este pacote"

#: steps_interactive.pm:695
#, c-format
msgid "Skip all packages from medium \"%s\""
msgstr "Pular todos os pacotes da mídia \"%s\""

#: steps_interactive.pm:696
#, c-format
msgid "Go back to media and packages selection"
msgstr "Voltar para a seleção de mídia e de pacotes"

#: steps_interactive.pm:699
#, c-format
msgid "There was an error installing package %s."
msgstr "Houve um erro durante a instalação do pacote %s."

#: steps_interactive.pm:718
#, c-format
msgid "Post-install configuration"
msgstr "Configuração pós-instalação"

#: steps_interactive.pm:725
#, c-format
msgid "Please ensure the Update Modules media is in drive %s"
msgstr ""
"Por favor, certifique-se de que a mídia Atualizar Módulos está no drive %s"

#: steps_interactive.pm:753 steps_list.pm:47
#, c-format
msgid "Updates"
msgstr "Atualizações"

#: steps_interactive.pm:754
#, c-format
msgid ""
"You now have the opportunity to download updated packages. These packages\n"
"have been updated after the distribution was released. They may\n"
"contain security or bug fixes.\n"
"\n"
"To download these packages, you will need to have a working Internet \n"
"connection.\n"
"\n"
"Do you want to install the updates?"
msgstr ""
"Agora você tem a oportunidade de baixar os pacotes atualizados. Estes "
"pacotes\n"
"foram atualizados após o lançamento de sua distribuição. Eles podem conter\n"
"atualizações de segurança ou correções de falhas.\n"
"\n"
"Para baixar estes pacotes, você precisa ter uma conexão com a internet\n"
"funcionando.\n"
"\n"
"Você deseja instalar estas atualizações?"

#: steps_interactive.pm:861
#, c-format
msgid "%s on %s"
msgstr "%s em %s"

#: steps_interactive.pm:894 steps_interactive.pm:901 steps_interactive.pm:914
#: steps_interactive.pm:931 steps_interactive.pm:946
#, c-format
msgid "Hardware"
msgstr "Hardware"

#: steps_interactive.pm:915 steps_interactive.pm:932
#, c-format
msgid "Sound card"
msgstr "Placa de som"

#: steps_interactive.pm:935
#, c-format
msgid "Do you have an ISA sound card?"
msgstr "Você tem alguma placa de som ISA?"

#: steps_interactive.pm:937
#, c-format
msgid ""
"Run \"alsaconf\" or \"sndconfig\" after installation to configure your sound "
"card"
msgstr ""
"Execute \"alsaconf\"ou \"sndconfig\" após a instalação para configurar sua "
"placa de som"

#: steps_interactive.pm:939
#, c-format
msgid "No sound card detected. Try \"harddrake\" after installation"
msgstr ""
"Nenhuma placa de som detectada. Tente o \"harddrake\" após a instalação"

#: steps_interactive.pm:947
#, c-format
msgid "Graphical interface"
msgstr "Interface gráfica"

#: steps_interactive.pm:953 steps_interactive.pm:964
#, c-format
msgid "Network & Internet"
msgstr "Rede & Internet"

#: steps_interactive.pm:965
#, c-format
msgid "Proxies"
msgstr "Proxies"

#: steps_interactive.pm:966
#, c-format
msgid "configured"
msgstr "configurado"

#: steps_interactive.pm:976
#, c-format
msgid "Security Level"
msgstr "Nível de Segurança"

#: steps_interactive.pm:995
#, c-format
msgid "Firewall"
msgstr "Firewall"

#: steps_interactive.pm:999
#, c-format
msgid "activated"
msgstr "ativado"

#: steps_interactive.pm:999
#, c-format
msgid "disabled"
msgstr "desativado"

#: steps_interactive.pm:1013
#, c-format
msgid "You have not configured X. Are you sure you really want this?"
msgstr "Você não configurou o sistema X. Você quer realmente deixar assim?"

#: steps_interactive.pm:1041
#, c-format
msgid "Preparing bootloader..."
msgstr "Preparando gerenciador de inicialização..."

#: steps_interactive.pm:1042
#, c-format
msgid "Be patient, this may take a while..."
msgstr "Seja paciente, isto pode demorar um pouco..."

#: steps_interactive.pm:1053
#, c-format
msgid ""
"You appear to have an OldWorld or Unknown machine, the yaboot bootloader "
"will not work for you. The install will continue, but you'll need to use "
"BootX or some other means to boot your machine. The kernel argument for the "
"root fs is: root=%s"
msgstr ""
"Você parece ter uma máquina muito antiga ou desconhecida, e o gerenciador de "
"inicialização yaboot não funcionará para você. A instalação continuará, mas "
"você precisará usar o BootX ou outros meios para inicializar sua máquina. O "
"argumento do kernel para o sistema de arquivos raiz é: root=%s"

#: steps_interactive.pm:1067
#, c-format
msgid ""
"In this security level, access to the files in the Windows partition is "
"restricted to the administrator."
msgstr ""
"Neste nível de segurança, o acesso aos arquivos em partições Windows é "
"restrita apenas para o administrador."

#: steps_interactive.pm:1099
#, c-format
msgid "Insert a blank floppy in drive %s"
msgstr "Insira um disquete vazio no drive %s"

#: steps_interactive.pm:1101
#, c-format
msgid "Creating auto install floppy..."
msgstr "Criando disquete de instalação automática..."

#: steps_interactive.pm:1112
#, c-format
msgid ""
"Some steps are not completed.\n"
"\n"
"Do you really want to quit now?"
msgstr ""
"Alguns passos não foram completados.\n"
"\n"
"Você realmente quer sair agora?"

#: steps_interactive.pm:1122
#, c-format
msgid "Congratulations"
msgstr "Parabéns"

#. -PO: please keep the following messages very short: they must fit in the left list of the installer!!!
#: steps_list.pm:16
#, c-format
msgid ""
"_: Keep these entry short\n"
"Language"
msgstr "Idioma"

#: steps_list.pm:16 steps_list.pm:23
#, c-format
msgid "Localization"
msgstr "Localização"

#: steps_list.pm:17
#, c-format
msgid ""
"_: Keep these entry short\n"
"License"
msgstr "Licença"

#: steps_list.pm:18
#, c-format
msgid ""
"_: Keep these entry short\n"
"Mouse"
msgstr "Mouse"

#: steps_list.pm:19 steps_list.pm:20
#, c-format
msgid ""
"_: Keep these entry short\n"
"Hard drive detection"
msgstr "Detecção de discos rígidos"

#: steps_list.pm:21 steps_list.pm:22
#, c-format
msgid ""
"_: Keep these entry short\n"
"Installation class"
msgstr "Classe de instalação"

#: steps_list.pm:23
#, c-format
msgid ""
"_: Keep these entry short\n"
"Keyboard"
msgstr "Teclado"

#: steps_list.pm:24
#, c-format
msgid ""
"_: Keep these entry short\n"
"Security"
msgstr "Segurança"

#: steps_list.pm:25
#, c-format
msgid ""
"_: Keep these entry short\n"
"Partitioning"
msgstr "Particionamento"

#: steps_list.pm:27 steps_list.pm:28
#, c-format
msgid ""
"_: Keep these entry short\n"
"Formatting"
msgstr "Formatando"

#: steps_list.pm:29
#, c-format
msgid ""
"_: Keep these entry short\n"
"Choosing packages"
msgstr "Escolhendo pacotes"

#: steps_list.pm:31
#, c-format
msgid ""
"_: Keep these entry short\n"
"Installing"
msgstr "Instalando"

#: steps_list.pm:34
#, c-format
msgid ""
"_: Keep these entry short\n"
"Users"
msgstr "Usuários"

#: steps_list.pm:36 steps_list.pm:37
#, c-format
msgid ""
"_: Keep these entry short\n"
"Networking"
msgstr "Rede"

#: steps_list.pm:38 steps_list.pm:39
#, c-format
msgid ""
"_: Keep these entry short\n"
"Bootloader"
msgstr "Inicialização"

#: steps_list.pm:40 steps_list.pm:41
#, c-format
msgid ""
"_: Keep these entry short\n"
"Configure X"
msgstr "Configurar X"

#: steps_list.pm:42
#, c-format
msgid ""
"_: Keep these entry short\n"
"Summary"
msgstr "Resumo"

#: steps_list.pm:44 steps_list.pm:45
#, c-format
msgid ""
"_: Keep these entry short\n"
"Services"
msgstr "Serviços"

#: steps_list.pm:46
#, c-format
msgid ""
"_: Keep these entry short\n"
"Updates"
msgstr "Atualizações"

#: steps_list.pm:48
#, c-format
msgid ""
"_: Keep these entry short\n"
"Exit"
msgstr "Sair"

#: ../../advertising/IM_flash.pl:1
#, c-format
msgid "Your desktop on a USB key"
msgstr "Seu desktop em um Pendrive USB"

#: ../../advertising/IM_free09.pl:1
#, c-format
msgid "The 100%% open source Mandriva Linux distribution"
msgstr "A distribuição Mandriva Linux 100%% open source"

#: ../../advertising/IM_one09.pl:1
#, c-format
msgid "Explore Linux easily with Mandriva One"
msgstr "Explore facilmente o Linux com o Mandriva One"

#: ../../advertising/IM_pwp09.pl:1
#, c-format
msgid "A full Mandriva Linux desktop, with support"
msgstr "Um Desktop Mandriva Linux completo, com suporte"

#: ../../advertising/IM_range09.pl:1
#, c-format
msgid "Mandriva: distributions for everybody's needs"
msgstr "Mandriva: distribuições para todas as necessidades"

#~ msgid ""
#~ "You have selected the following server(s): %s\n"
#~ "\n"
#~ "\n"
#~ "These servers are activated by default. They do not have any known "
#~ "security\n"
#~ "issues, but some new ones could be found. In that case, you must make "