FreeTRX/MDUV380_firmware/application/include/user_interface/languages/portuguese.h
Marcus Kida 31c31df861 DMR text messages (SMS): ETSI/Motorola-TMS messaging on the radio
Full messaging support, implemented fresh in three layers:

- dmrDataProtocol: pure short-data codec (CSBK preamble, data/response
  headers, IP/UDP/TMS payload, ETSI CRCs) validated against on-air
  captures by a host-side test suite. Transmits Motorola TMS (UDP 4007),
  receives TMS and Anytone/"DMR standard" (UDP 5016).
- smsCore/smsStorage: TX queue with wait-for-channel and delivery
  confirmation (response PDU / ACK, resend prompt on timeout), ISR-side
  block assembly with layout auto-detection (confirmed/unconfirmed,
  rate-1/2 and full 18-byte rate-3/4 blocks), delivery reports to
  senders that request them, and a checksummed message store in SPI
  flash at 0xC00000 (inbox + sent, 8 each; 8 quick texts).
- UI: Messages hub (main menu or long-press GREEN), keypad compose with
  multi-tap (160 chars), inbox/sent/view with reply-resend-delete,
  quick-text picker/editor, options (Wait for ACK, My ID only), and an
  incoming-message popup with chime. Strings in all 20 languages.

The HR-C6000 does the BPTC/FEC; the driver streams 12-byte logical
bursts through the existing TX state machine (repeater wake included),
locks out PTT during a send, and leaves hotspot mode untouched.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-13 16:52:54 +02:00

357 lines
16 KiB
C
Raw Blame History

/* -*- coding: windows-1252-unix; -*- */
/*
* Copyright (C) 2019-2025 Roger Clark, VK3KYY / G4KYF
*
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the distribution.
*
* 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* 4. Use of this source code or binary releases for commercial purposes is strictly forbidden. This includes, without limitation,
* incorporation in a commercial product or incorporation into a product or project which allows commercial use.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
/*
* Translators: CT4TX, CT1HSN
*
*
* Rev: 2
*/
#ifndef USER_INTERFACE_LANGUAGES_PORTUGUESE_H_
#define USER_INTERFACE_LANGUAGES_PORTUGUESE_H_
/********************************************************************
*
* VERY IMPORTANT.
* This file should not be saved with UTF-8 encoding
* Use Notepad++ on Windows with ANSI encoding
* or emacs on Linux with windows-1252-unix encoding
*
********************************************************************/
#if defined(PLATFORM_GD77) || defined(PLATFORM_GD77S) || defined(PLATFORM_DM1801) || defined(PLATFORM_DM1801A) || defined(PLATFORM_RD5R)
__attribute__((section(".upper_text")))
#endif
const stringsTable_t portuguesLanguage =
{
.magicNumber = { LANGUAGE_TAG_MAGIC_NUMBER, LANGUAGE_TAG_VERSION },
.LANGUAGE_NAME = "Portugues",
.menu = "Menu",
.credits = "Creditos",
.zone = "Zona",
.rssi = "RSSI",
.battery = "Bateria",
.contacts = "Contactos",
.last_heard = "Ultima escutada",
.firmware_info = "Versao Firmware",
.options = "Opcoes",
.display_options = "Opcoes Visor",
.sound_options = "Sound options", // MaxLen: 16
.channel_details = "Detalhes Canal",
.language = "Lingua",
.new_contact = "Contacto Novo",
.dmr_contacts = "DMR contacts", // MaxLen: 16
.contact_details = "Detalhes Contato",
.hotspot_mode = "Hotspot",
.built = "Built",
.zones = "Zonas",
.keypad = "Teclado",
.ptt = "PTT",
.locked = "Bloqueado",
.press_sk2_plus_star ="Prima SK2 + *",
.to_unlock = "Para Desbloquear",
.unlocked = "Desbloqueado",
.power_off = "Desligar...",
.error = "ERRO",
.rx_only = "Apenas Rx",
.out_of_band = "FORA DA BANDA",
.timeout = "TEMPO ESGOTADO",
.tg_entry = "Entrada TG",
.pc_entry = "Entrada PC",
.user_dmr_id = "DMRID Utilizador",
.contact = "Contacto",
.accept_call = "Aceitar Chamada?",
.private_call = "Chamada Privada",
.squelch = "Squelch",
.quick_menu = "Menu R<>pido",
.filter = "Filtro",
.all_channels = "Todos os Canais",
.gotoChannel = "Ir para",
.scan = "Busca",
.channelToVfo = "Canal --> VFO",
.vfoToChannel = "VFO --> Canal",
.vfoToNewChannel = "VFO --> Novo Can",
.group = "Grupo",
.private = "Privado",
.all = "Todos",
.type = "Tipo",
.timeSlot = "Intervalo Tempo", // Too long
.none = "Nenhum",
.contact_saved = "Contacto Gravado",
.duplicate = "Duplicado",
.tg = "TG",
.pc = "PC",
.ts = "TS",
.mode = "Mode",
.colour_code = "Codigo de cores",
.n_a = "N/A",
.bandwidth = "BW", // MaxLen: 16 (with ':' + .n_a, "25kHz" or "12.5kHz")
.stepFreq = "Passo",
.tot = "TOT",
.off = "Off",
.zone_skip = "Z Ignorar",
.all_skip = "A Ignorar",
.yes = "Sim",
.no = "Nao",
.tg_list = "TG Lst",
.on = "On",
.timeout_beep = "Beep timeout",
.list_full = "List full",
.dmr_cc_scan = "CC Scan", // MaxLen: 12 (with ':' + settings: .on or .off)
.band_limits = "Limites banda",
.beep_volume = "Volume beep",
.dmr_mic_gain = "Micro DMR",
.fm_mic_gain = "Micro FM", // MaxLen: 16 (with ':' + 0..31)
.key_long = "Key long",
.key_repeat = "Key rpt",
.dmr_filter_timeout = "Filtro DMR",
.brightness = "Brilho",
.brightness_off = "Min bright",
.contrast = "Contraste",
.screen_invert = "Invertido",
.screen_normal = "Normal",
.backlight_timeout = "Timeout",
.scan_delay = "Scan delay",
.yes___in_uppercase = "SIM",
.no___in_uppercase = "N<EFBFBD>O",
.DISMISS = "DISPENSAR",
.scan_mode = "Scan mode",
.hold = "Hold",
.pause = "Pause",
.list_empty = "List empty",
.delete_contact_qm = "Delete contact?",
.contact_deleted = "Contact deleted",
.contact_used = "Contact used",
.in_tg_list = "na lista TG",
.select_tx = "Select TX",
.edit_contact = "Edit Contact",
.delete_contact = "Delete Contact",
.group_call = "Group Call",
.all_call = "All Call",
.tone_scan = "Tone scan",//// MaxLen: 16
.low_battery = "LOW BATTERY !!!",//// MaxLen: 16
.Auto = "Auto", // MaxLen 16 (with .mode + ':')
.manual = "Manual", // MaxLen 16 (with .mode + ':')
.ptt_toggle = "PTT toggle", // MaxLen 16 (with ':' + .on or .off)
.private_call_handling = "Handle PC", // MaxLen 16 (with ':' + .on ot .off)
.stop = "Stop", // Maxlen 16 (with ':' + .scan_mode)
.one_line = "1 line", // MaxLen 16 (with ':' + .contact)
.two_lines = "2 lines", // MaxLen 16 (with ':' + .contact)
.new_channel = "Canal novo", // MaxLen: 16, leave room for a space and four channel digits after
.priority_order = "Order", // MaxLen 16 (with ':' + 'Cc/DB/TA')
.dmr_beep = "DMR beep", // MaxLen 16 (with ':' + .star/.stop/.both/.none)
.start = "Start", // MaxLen 16 (with ':' + .dmr_beep)
.both = "Both", // MaxLen 16 (with ':' + .dmr_beep)
.vox_threshold = "VOX Thres.", // MaxLen 16 (with ':' + .off or 1..30)
.vox_tail = "VOX Tail", // MaxLen 16 (with ':' + .n_a or '0.0s')
.audio_prompt = "Prompt",// Maxlen 16 (with ':' + .silent, .beep or .voice_prompt_level_1)
.silent = "Silent", // Maxlen 16 (with ':' + audio_prompt)
.rx_beep = "RX beep", // MaxLen 16 (with ':' + .carrier/.talker/.both/.none)
.beep = "Beep", // Maxlen 16 (with ':' + audio_prompt)
.voice_prompt_level_1 = "Voice", // Maxlen 16 (with ':' + audio_prompt, satellite "mode")
.transmitTalkerAliasTS1 = "TA Tx TS1", // Maxlen 16 (with ':' + .on or .off)
.squelch_VHF = "VHF Squelch",// Maxlen 16 (with ':' + XX%)
.squelch_220 = "220 Squelch",// Maxlen 16 (with ':' + XX%)
.squelch_UHF = "UHF Squelch", // Maxlen 16 (with ':' + XX%)
.display_screen_invert = "Color" , // Maxlen 16 (with ':' + .screen_normal or .screen_invert)
.openGD77 = "OpenGD77",// Do not translate
.talkaround = "Talkaround", // Maxlen 16 (with ':' + .on , .off or .n_a)
.APRS = "APRS", // Maxlen 16 (with ':' + .transmitTalkerAliasTS1 or transmitTalkerAliasTS2)
.no_keys = "No Keys", // Maxlen 16 (with ':' + audio_prompt)
.gitCommit = "Git commit",
.voice_prompt_level_2 = "Voice L2", // Maxlen 16 (with ':' + audio_prompt)
.voice_prompt_level_3 = "Voice L3", // Maxlen 16 (with ':' + audio_prompt)
.dmr_filter = "DMR Filter",// MaxLen: 12 (with ':' + settings: "TG" or "Ct" or "TGL")
.talker = "Talker",
.dmr_ts_filter = "TS Filter", // MaxLen: 12 (with ':' + settings: .on or .off)
.dtmf_contact_list = "FM DTMF contacts", // Maxlen: 16
.channel_power = "Ch Power", //Displayed as "Ch Power:" + .from_master or "Ch Power:"+ power text e.g. "Power:500mW" . Max total length 16
.from_master = "Master",// Displayed if per-channel power is not enabled the .channel_power
.set_quickkey = "Set Quickkey", // MaxLen: 16
.dual_watch = "Dual Watch", // MaxLen: 16
.info = "Info", // MaxLen: 16 (with ':' + .off or.ts or .pwr or .both)
.pwr = "Pwr",
.user_power = "User Power",
.temperature = "Temperature", // MaxLen: 16 (with ':' + .celcius or .fahrenheit)
.celcius = "<EFBFBD>C",
.seconds = "seconds",
.radio_info = "Radio infos",
.temperature_calibration = "Temp Cal",
.pin_code = "Pin Code",
.please_confirm = "Please confirm", // MaxLen: 15
.vfo_freq_bind_mode = "Freq. Bind",
.overwrite_qm = "Overwrite ?", //Maxlen: 14 chars
.eco_level = "Eco Level",
.buttons = "Buttons",
.leds = "LEDs",
.scan_dwell_time = "Scan dwell",
.battery_calibration = "Batt. Cal",
.low = "Low",
.high = "High",
.dmr_id = "DMR ID",
.scan_on_boot = "Scan On Boot",
.dtmf_entry = "DTMF entry",
.name = "Name",
.carrier = "Carrier",
.zone_empty = "Zone empty", // Maxlen: 12 chars.
.time = "Time",
.uptime = "Uptime",
.hours = "Hours",
.minutes = "Minutes",
.satellite = "Satellite",
.alarm_time = "Alarm time",
.location = "Location",
.date = "Date",
.timeZone = "Timezone",
.suspend = "Suspend",
.pass = "Pass", // For satellite screen
.elevation = "El",
.azimuth = "Az",
.inHHMMSS = "in",
.predicting = "Predicting",
.maximum = "Max",
.satellite_short = "Sat",
.use_location_short = "Location", // MaxLen: 16 (with ':' + .yes or .no)
.UTC = "UTC",
.symbols = "NSEW", // symbols: N,S,E,W
.not_set = "NOT SET",
.general_options = "General options",
.radio_options = "Radio options",
.auto_night = "Auto night", // MaxLen: 16 (with .on or .off)
.dmr_rx_agc = "DMR Rx AGC",
.speaker_click_suppress = "Click Suppr.",
.gps = "GPS",
.end_only = "End only",
.dmr_crc = "DMR crc",
.eco = "Eco",
.safe_power_on = "Safe Pwr-On", // MaxLen: 16 (with ':' + .on or .off)
.auto_power_off = "APO", // MaxLen: 16 (with ':' + __._h or .no)
.apo_with_rf = "APO with RF", // MaxLen: 16 (with ':' + .yes or .no or .n_a)
.brightness_night = "Nite bright", // MaxLen: 16 (with ':' + 0..100 + %)
.freq_set_VHF = "Freq VHF",
.gps_acquiring = "Acquiring",
.altitude = "Alt",
.calibration = "Calibration",
.freq_set_UHF = "Freq UHF",
.cal_frequency = "Freq",
.cal_pwr = "Power level",
.pwr_set = "Power Adjust",
.factory_reset = "Factory Reset",
.rx_tune = "Rx Tuning",
.transmitTalkerAliasTS2 = "TA Tx TS2", // Maxlen 16 (with ':' + .ta_text, 'APRS' , .both or .off)
.ta_text = "Text",
.daytime_theme_day = "Day theme", // MaxLen: 16
.daytime_theme_night = "Night theme", // MaxLen: 16
.theme_chooser = "Theme chooser", // Maxlen: 16
.theme_options = "Theme options",
.theme_fg_default = "Text Default", // MaxLen: 16 (+ colour rect)
.theme_bg = "Background", // MaxLen: 16 (+ colour rect)
.theme_fg_decoration = "Decoration", // MaxLen: 16 (+ colour rect)
.theme_fg_text_input = "Text input", // MaxLen: 16 (+ colour rect)
.theme_fg_splashscreen = "Foregr. boot", // MaxLen: 16 (+ colour rect)
.theme_bg_splashscreen = "Backgr. boot", // MaxLen: 16 (+ colour rect)
.theme_fg_notification = "Text notif.", // MaxLen: 16 (+ colour rect)
.theme_fg_warning_notification = "Warning notif.", // MaxLen: 16 (+ colour rect)
.theme_fg_error_notification = "Error notif", // MaxLen: 16 (+ colour rect)
.theme_bg_notification = "Backgr. notif", // MaxLen: 16 (+ colour rect)
.theme_fg_menu_name = "Menu name", // MaxLen: 16 (+ colour rect)
.theme_bg_menu_name = "Menu name bkg", // MaxLen: 16 (+ colour rect)
.theme_fg_menu_item = "Menu item", // MaxLen: 16 (+ colour rect)
.theme_fg_menu_item_selected = "Menu highlight", // MaxLen: 16 (+ colour rect)
.theme_fg_options_value = "Option value", // MaxLen: 16 (+ colour rect)
.theme_fg_header_text = "Header text", // MaxLen: 16 (+ colour rect)
.theme_bg_header_text = "Header text bkg", // MaxLen: 16 (+ colour rect)
.theme_fg_rssi_bar = "RSSI bar", // MaxLen: 16 (+ colour rect)
.theme_fg_rssi_bar_s9p = "RSSI bar S9+", // Maxlen: 16 (+colour rect)
.theme_fg_channel_name = "Channel name", // MaxLen: 16 (+ colour rect)
.theme_fg_channel_contact = "Contact", // MaxLen: 16 (+ colour rect)
.theme_fg_channel_contact_info = "Contact info", // MaxLen: 16 (+ colour rect)
.theme_fg_zone_name = "Zone name", // MaxLen: 16 (+ colour rect)
.theme_fg_rx_freq = "RX freq", // MaxLen: 16 (+ colour rect)
.theme_fg_tx_freq = "TX freq", // MaxLen: 16 (+ colour rect)
.theme_fg_css_sql_values = "CSS/SQL values", // MaxLen: 16 (+ colour rect)
.theme_fg_tx_counter = "TX counter", // MaxLen: 16 (+ colour rect)
.theme_fg_polar_drawing = "Polar", // MaxLen: 16 (+ colour rect)
.theme_fg_satellite_colour = "Sat. spot", // MaxLen: 16 (+ colour rect)
.theme_fg_gps_number = "GPS number", // MaxLen: 16 (+ colour rect)
.theme_fg_gps_colour = "GPS spot", // MaxLen: 16 (+ colour rect)
.theme_fg_bd_colour = "BeiDou spot", // MaxLen: 16 (+ colour rect)
.theme_colour_picker_red = "Red", // MaxLen 16 (with ':' + 3 digits value)
.theme_colour_picker_green = "Green", // MaxLen 16 (with ':' + 3 digits value)
.theme_colour_picker_blue = "Blue", // MaxLen 16 (with ':' + 3 digits value)
.volume = "Volume", // MaxLen: 8
.roaming = "Roaming", // MaxLen 16 (with ':' + .on or .off)
.show_distance = "Show dist", // MaxLen 16 (with ':' + .on or .off)
.aprs_options = "APRS options", // MaxLen 16
.aprs_smart = "Smart", // MaxLen 16 (with ':' + .mode)
.aprs_channel = "Channel", // MaxLen 16 (with ':' + .location)
.aprs_decay = "Decay", // MaxLen 16 (with ':' + .on or .off)
.aprs_compress = "Compress", // MaxLen 16 (with ':' + .on or .off)
.aprs_interval = "Interval", // MaxLen 16 (with ':' + 0.2..60 + 'min')
.aprs_message_interval = "Msg Interval", // MaxLen 16 (with ':' + 3..30)
.aprs_slow_rate = "Slow Rate", // MaxLen 16 (with ':' + 1..100 + 'min')
.aprs_fast_rate = "Fast Rate", // MaxLen 16 (with ':' + 10..180 + 's')
.aprs_low_speed = "Low Speed", // MaxLen 16 (with ':' + 2..30 + 'km/h')
.aprs_high_speed = "Hi Speed", // MaxLen 16 (with ':' + 2..90 + 'km/h')
.aprs_turn_angle = "T. Angle", // MaxLen 16 (with ':' + 5..90 + '<27>')
.aprs_turn_slope = "T. Slope", // MaxLen 16 (with ':' + 1..255 + '<27>/v')
.aprs_turn_time = "T. Time", // MaxLen 16 (with ':' + 5..180 + 's')
.auto_lock = "Auto lock", // MaxLen 16 (with ':' + .off or 0.5..15 (.5 step) + 'min')
.trackball = "Trackball", // MaxLen 16 (with ':' + .on or .off)
.dmr_force_dmo = "Force DMO", // MaxLen 16 (with ':' + .n_a or .on or .off)
.tx_inhibit = "TX Inhibit", // MaxLen 16 (with ':' + .on or .off)
.latitude_short = "Lat", // MaxLen: 16 (with ':' + latitude value)
.longitude_short = "Lon", // MaxLen: 16 (with ':' + longitude value)
.text_size = "Text size",//MaxLen: 16 (with ':' + 1 digit)
.last_talker = "Last talker", // MaxLen: 16 (with ':' + .off or 2 digits value + 's')
.mute = "Mute", // MaxLen: 16 (with ':' + .on or .off)
.delete_channel = "Apagar canal", // MaxLen: 16
.keep_one_channel = "Manter 1 canal", // MaxLen: 16
.messages = "Mensagens", // MaxLen: 16
.new_message = "Nova mensagem", // MaxLen: 16
.inbox = "Recebidas", // MaxLen: 16
.sent_box = "Enviadas", // MaxLen: 16
.quick_text = "Texto r<>pido", // MaxLen: 16
.send_to = "Enviar para", // MaxLen: 16
.sms_sending = "Enviando", // MaxLen: 16
.sms_sent = "Enviada", // MaxLen: 16
.sms_delivered = "Entregue", // MaxLen: 16
.sms_no_ack = "Sem ACK", // MaxLen: 16
.sms_resend = "Reenviar?", // MaxLen: 16
.sms_channel_busy = "Canal ocupado", // MaxLen: 16
.sms_wait_for_ack = "Esperar ACK", // MaxLen: 16
.sms_own_id_only = "S<EFBFBD> meu ID", // MaxLen: 16
.message_from = "Mensagem de", // MaxLen: 16
.delete_message = "Apagar msg?", // MaxLen: 16
};
/********************************************************************
*
* VERY IMPORTANT.
* This file should not be saved with UTF-8 encoding
* Use Notepad++ on Windows with ANSI encoding
* or emacs on Linux with windows-1252-unix encoding
*
********************************************************************/
#endif /* USER_INTERFACE_LANGUAGES_PORTUGUESE_H_ */