FreeTRX/MDUV380_firmware/application/include/user_interface/languages/french.h
Marcus Kida a8c2038552 Channels: translate the add/delete menu strings; flash.sh rebuilds packs
Add delete_channel and keep_one_channel to the language table (after mute) and
fill all 20 language files (13 translated, English fallback for the rest), with
correct single-byte ISO-8859 accents. Wire them into the Delete Channel label,
confirmation and last-channel guard. The new strings land on empty voice-table
slots, so they play as silence (no crash, no .vpr regeneration).

flash.sh now always rebuilds the .gla language packs so edits to the language
files are actually picked up (previously a stale pack was re-flashed).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 12:47:27 +02:00

341 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: F1CXG, F1RMB
*
*
* Rev: 4
*/
#ifndef USER_INTERFACE_LANGUAGES_FRENCH_H_
#define USER_INTERFACE_LANGUAGES_FRENCH_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 frenchLanguage =
{
.magicNumber = { LANGUAGE_TAG_MAGIC_NUMBER, LANGUAGE_TAG_VERSION },
.LANGUAGE_NAME = "Fran<EFBFBD>ais",
.menu = "Menu",
.credits = "Cr<EFBFBD>dits",
.zone = "Zone",
.rssi = "RSSI",
.battery = "Batterie",
.contacts = "Contacts",
.last_heard = "Derniers re<72>us",
.firmware_info = "Info firmware",
.options = "Options",
.display_options = "Affichage",
.sound_options = "Audio", // MaxLen: 16
.channel_details = "D<EFBFBD>tails canal",
.language = "Langue",
.new_contact = "Nouv. contact",
.dmr_contacts = "Contacts DMR", // MaxLen: 16
.contact_details = "D<EFBFBD>tails contact",
.hotspot_mode = "Hotspot",
.built = "Cr<EFBFBD><EFBFBD>",
.zones = "Zones",
.keypad = "Clavier",
.ptt = "PTT",
.locked = "Verrouill<EFBFBD>",
.press_sk2_plus_star = "Pressez SK2 + *",
.to_unlock = "pour d<>verr.",
.unlocked = "D<EFBFBD>verrouill<EFBFBD>",
.power_off = "Extinction...",
.error = "ERREUR",
.rx_only = "RX uniqmnt.",
.out_of_band = "HORS BANDE",
.timeout = "TIMEOUT",
.tg_entry = "Entrez TG",
.pc_entry = "Entrez PC",
.user_dmr_id = "DMR ID perso.",
.contact = "Contact",
.accept_call = "R<EFBFBD>pondre <20>",
.private_call = "Appel priv<69>",
.squelch = "Squelch",
.quick_menu = "Menu rapide",
.filter = "Filtre",
.all_channels = "Tous canaux",
.gotoChannel = "Aller",
.scan = "Scan",
.channelToVfo = "Canal --> VFO",
.vfoToChannel = "VFO --> Canal",
.vfoToNewChannel = "VFO --> Nv. Can.", // MaxLen: 16
.group = "Groupe",
.private = "Priv<EFBFBD>",
.all = "Tous",
.type = "Type",
.timeSlot = "Timeslot",
.none = "Aucun",
.contact_saved = "Contact sauv<75>",
.duplicate = "Dupliqu<EFBFBD>",
.tg = "TG",
.pc = "PC",
.ts = "TS",
.mode = "Mode",
.colour_code = "Code couleur",
.n_a = "ND",
.bandwidth = "BW", // MaxLen: 16 (with ':' + .n_a, "25kHz" or "12.5kHz")
.stepFreq = "Pas",
.tot = "TOT",
.off = "Off",
.zone_skip = "Saut zone",
.all_skip = "Saut Tous Cx",
.yes = "Oui",
.no = "Non",
.tg_list = "Lst TG",
.on = "On",
.timeout_beep = "Bip timeout",
.list_full = "Liste pleine",
.dmr_cc_scan = "Scan CC", // MaxLen: 12 (with ':' + settings: .on or .off)
.band_limits = "Lim. bandes",
.beep_volume = "Vol. bip",
.dmr_mic_gain = "DMR mic",
.fm_mic_gain = "FM mic", // MaxLen: 16 (with ':' + 0..31)
.key_long = "Appui long",
.key_repeat = "R<EFBFBD>p<EFBFBD>t<EFBFBD>",
.dmr_filter_timeout = "Tps filtre",
.brightness = "R<EFBFBD>tro <20>cl.",
.brightness_off = "<EFBFBD>cl. min",
.contrast = "Contraste",
.screen_invert = "Invers<EFBFBD>",
.screen_normal = "Normal",
.backlight_timeout = "Timeout",
.scan_delay = "D<EFBFBD>lai scan",
.yes___in_uppercase = "OUI",
.no___in_uppercase = "NON",
.DISMISS = "CACHER",
.scan_mode = "Mode scan",
.hold = "Bloque",
.pause = "Pause",
.list_empty = "Liste vide",
.delete_contact_qm = "Efface contact ?",
.contact_deleted = "Contact effac<61>",
.contact_used = "Contact utilis<69>",
.in_tg_list = "ds la liste TG",
.select_tx = "Select<EFBFBD> TX",
.edit_contact = "<EFBFBD>dite contact",
.delete_contact = "Efface contact",
.group_call = "Appel de groupe",
.all_call = "All Call",
.tone_scan = "Scan tons",
.low_battery = "BATT. FAIBLE !!!",//// MaxLen: 16
.Auto = "Auto", // MaxLen 16 (with .mode + ':')
.manual = "Manuel", // MaxLen 16 (with .mode + ':') }
.ptt_toggle = "Bascule PTT", // MaxLen 16 (with ':' + .on or .off)
.private_call_handling = "Filtre PC", // MaxLen 16 (with ':' + .on ot .off)
.stop = "Arr<EFBFBD>t", // Maxlen 16 (with ':' + .scan_mode)
.one_line = "1 ligne", // MaxLen 16 (with ':' + .contact)
.two_lines = "2 lignes", // MaxLen 16 (with ':' + .contact)
.new_channel = "Nouv. canal", // MaxLen: 16, leave room for a space and four channel digits after
.priority_order = "Ordre", // MaxLen 16 (with ':' + 'Cc/DB/TA')
.dmr_beep = "Bip TX", // MaxLen 16 (with ':' + .star/.stop/.both/.none)
.start = "D<EFBFBD>but", // MaxLen 16 (with ':' + .dmr_beep)
.both = "Les deux", // MaxLen 16 (with ':' + .dmr_beep)
.vox_threshold = "Seuil VOX", // MaxLen 16 (with ':' + .off or 1..30)
.vox_tail = "Queue VOX", // MaxLen 16 (with ':' + .n_a or '0.0s')
.audio_prompt = "Prompt",// Maxlen 16 (with ':' + .silent, .beep or .voice_prompt_level_1)
.silent = "Silence", // Maxlen 16 (with ':' + audio_prompt)
.rx_beep = "Bip RX", // MaxLen 16 (with ':' + .carrier/.talker/.both/.none)
.beep = "Bip", // Maxlen 16 (with ':' + audio_prompt)
.voice_prompt_level_1 = "Voix", // Maxlen 16 (with ':' + audio_prompt, satellite "mode")
.transmitTalkerAliasTS1 = "TX TA TS1", // Maxlen 16 (with ':' + .on or .off)
.squelch_VHF = "Squelch VHF",// Maxlen 16 (with ':' + XX%)
.squelch_220 = "Squelch 220",// Maxlen 16 (with ':' + XX%)
.squelch_UHF = "Squelch UHF", // Maxlen 16 (with ':' + XX%)
.display_screen_invert = "<EFBFBD>cran" , // 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 = "s/touches", // Maxlen 16 (with ':' + audio_prompt)
.gitCommit = "Commit Git",
.voice_prompt_level_2 = "Voix L2", // Maxlen 16 (with ':' + audio_prompt)
.voice_prompt_level_3 = "Voix L3", // Maxlen 16 (with ':' + audio_prompt)
.dmr_filter = "Filtre DMR",// MaxLen: 12 (with ':' + settings: "TG" or "Ct" or "TGL")
.talker = "Talker",
.dmr_ts_filter = "Filtre TS", // MaxLen: 12 (with ':' + settings: .on or .off)
.dtmf_contact_list = "Contacts DTMF FM", // Maxlen: 16
.channel_power = "Pce canal", //Displayed as "Ch Power:" + .from_master or "Ch Power:"+ power text e.g. "Power:500mW" . Max total length 16
.from_master = "Ma<EFBFBD>tre",// Displayed if per-channel power is not enabled the .channel_power
.set_quickkey = "D<EFBFBD>fini Quickkey", // MaxLen: 16
.dual_watch = "Double veille", // MaxLen: 16
.info = "Info", // MaxLen: 16 (with ':' + .off or.ts or .pwr or .both)
.pwr = "Puissance",
.user_power = "Pce perso.", // MaxLen: 16 (with ':' + 0..4100)
.temperature = "Temperature", // MaxLen: 16 (with ':' + .celcius or .fahrenheit)
.celcius = "<EFBFBD>C",
.seconds = "secondes",
.radio_info = "Infos radio",
.temperature_calibration = "<EFBFBD>tal. t<>",
.pin_code = "Code Pin",
.please_confirm = "Confirmez", // MaxLen: 15
.vfo_freq_bind_mode = "Freq. li<6C>es",
.overwrite_qm = "<EFBFBD>craser ?", //Maxlen: 14 chars
.eco_level = "Niveau eco",
.buttons = "Boutons",
.leds = "DELs",
.scan_dwell_time = "Dur<EFBFBD>e scan",
.battery_calibration = "<EFBFBD>tal. bat.",
.low = "Bas",
.high = "Haut",
.dmr_id = "DMR ID",
.scan_on_boot = "Scan au d<>m.",
.dtmf_entry = "Entrez DTMF",
.name = "Nom",
.carrier = "Porteuse",
.zone_empty = "Zone vide", // Maxlen: 12 chars.
.time = "Heure",
.uptime = "En funct. depuis",
.hours = "Heures",
.minutes = "Minutes",
.satellite = "Satellite",
.alarm_time = "Heure alarme",
.location = "Emplacement",
.date = "Date",
.timeZone = "Fuseau",
.suspend = "Veille",
.pass = "Passe", // For satellite screen
.elevation = "El",
.azimuth = "Az",
.inHHMMSS = "ds",
.predicting = "Pr<EFBFBD>diction",
.maximum = "Max",
.satellite_short = "Sat",
.use_location_short = "Location", // MaxLen: 16 (with ':' + .yes or .no)
.UTC = "UTC",
.symbols = "NSEO", // symbols: N,S,E,W
.not_set = "NON D<>FINI",
.general_options = "G<EFBFBD>n<EFBFBD>rales",
.radio_options = "Radio",
.auto_night = "Nuit auto", // MaxLen: 16 (with .on or .off)
.dmr_rx_agc = "AGC RX DMR",
.speaker_click_suppress = "Suppr. clic",
.gps = "GPS",
.end_only = "Fin seul.",
.dmr_crc = "CRC DMR",
.eco = "Eco",
.safe_power_on = "S<EFBFBD>cu. allum.", // MaxLen: 16 (with ':' + .on or .off)
.auto_power_off = "APO", // MaxLen: 16 (with ':' + __._h or .no)
.apo_with_rf = "APO avec RF", // MaxLen: 16 (with ':' + .yes or .no or .n_a)<29>t Auto" // MaxLen: 16 (with ':' + 30/60/90/120/180 or .no)
.brightness_night = "<EFBFBD>cl. nuit", // MaxLen: 16 (with ':' + 0..100 + %)
.freq_set_VHF = "Freq VHF",
.gps_acquiring = "Acquisition",
.altitude = "Alt",
.calibration = "<EFBFBD>talonnage radio",
.freq_set_UHF = "Freq UHF",
.cal_frequency = "Freq",
.cal_pwr = "Niv. puiss.",
.pwr_set = "R<EFBFBD>glage",
.factory_reset = "R<EFBFBD>Z usine",
.rx_tune = "RX tuning",
.transmitTalkerAliasTS2 = "TX TA TS2", // Maxlen 16 (with ':' + .ta_text, 'APRS' , .both or .off)
.ta_text = "Texte",
.daytime_theme_day = "Th<EFBFBD>me de jour", // MaxLen: 16
.daytime_theme_night = "Th<EFBFBD>me de nuit", // MaxLen: 16
.theme_chooser = "S<EFBFBD>lect<EFBFBD> du th<74>me", // Maxlen: 16
.theme_options = "Th<EFBFBD>me",
.theme_fg_default = "Texte d<>faut", // MaxLen: 16 (+ colour rect)
.theme_bg = "Fond", // MaxLen: 16 (+ colour rect)
.theme_fg_decoration = "D<EFBFBD>coration", // MaxLen: 16 (+ colour rect)
.theme_fg_text_input = "Texte saisies", // MaxLen: 16 (+ colour rect)
.theme_fg_splashscreen = "1er-plan boot", // MaxLen: 16 (+ colour rect)
.theme_bg_splashscreen = "Fond boot", // MaxLen: 16 (+ colour rect)
.theme_fg_notification = "Texte notif.", // MaxLen: 16 (+ colour rect)
.theme_fg_warning_notification = "Alarme notif.", // MaxLen: 16 (+ colour rect)
.theme_fg_error_notification = "Erreur notif.", // MaxLen: 16 (+ colour rect)
.theme_bg_notification = "Fond notif.", // MaxLen: 16 (+ colour rect)
.theme_fg_menu_name = "Nom menu", // MaxLen: 16 (+ colour rect)
.theme_bg_menu_name = "Fond nom menu", // MaxLen: 16 (+ colour rect)
.theme_fg_menu_item = "Item menu", // MaxLen: 16 (+ colour rect)
.theme_fg_menu_item_selected = "S<EFBFBD>lect<EFBFBD> menu", // MaxLen: 16 (+ colour rect)
.theme_fg_options_value = "Valeur option", // MaxLen: 16 (+ colour rect)
.theme_fg_header_text = "Texte ent<6E>te", // MaxLen: 16 (+ colour rect)
.theme_bg_header_text = "Fond ent<6E>te", // MaxLen: 16 (+ colour rect)
.theme_fg_rssi_bar = "Barre RSSI", // MaxLen: 16 (+ colour rect)
.theme_fg_rssi_bar_s9p = "Barre RSSI S9+", // Maxlen: 16 (+colour rect)
.theme_fg_channel_name = "Nom canal", // MaxLen: 16 (+ colour rect)
.theme_fg_channel_contact = "Contact", // MaxLen: 16 (+ colour rect)
.theme_fg_channel_contact_info = "Info contact", // MaxLen: 16 (+ colour rect)
.theme_fg_zone_name = "Nom zone", // MaxLen: 16 (+ colour rect)
.theme_fg_rx_freq = "Fr<EFBFBD>q. RX", // MaxLen: 16 (+ colour rect)
.theme_fg_tx_freq = "Fr<EFBFBD>q. TX", // MaxLen: 16 (+ colour rect)
.theme_fg_css_sql_values = "Valeurs CSS/SQL", // MaxLen: 16 (+ colour rect)
.theme_fg_tx_counter = "Compteur TX", // MaxLen: 16 (+ colour rect)
.theme_fg_polar_drawing = "Polaire", // MaxLen: 16 (+ colour rect)
.theme_fg_satellite_colour = "Point sat.", // MaxLen: 16 (+ colour rect)
.theme_fg_gps_number = "Num<EFBFBD>ro GPS", // MaxLen: 16 (+ colour rect)
.theme_fg_gps_colour = "Point GPS", // MaxLen: 16 (+ colour rect)
.theme_fg_bd_colour = "Point BeiDou", // MaxLen: 16 (+ colour rect)
.theme_colour_picker_red = "Rouge", // MaxLen 16 (with ':' + 3 digits value)
.theme_colour_picker_green = "Vert", // MaxLen 16 (with ':' + 3 digits value)
.theme_colour_picker_blue = "Bleu", // MaxLen 16 (with ':' + 3 digits value)
.volume = "Volume", // MaxLen: 8
.roaming = "Itin<EFBFBD>rance", // MaxLen 16 (with ':' + .on or .off)
.show_distance = "Aff dist.", // MaxLen 16 (with ':' + .on or .off)
.aprs_options = "APRS", // MaxLen 16
.aprs_smart = "Smart", // MaxLen 16 (with ':' + .mode)
.aprs_channel = "Canal", // 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 = "Interval msg", // 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 = "Verr. auto", // 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 = "Inhiber TX", // MaxLen 16 (with ':' + .on or .off)
.latitude_short = "Lat", // MaxLen: 16 (with ':' + latitude value)
.longitude_short = "Lon", // MaxLen: 16 (with ':' + longitude value)
.text_size = "Taille texte",//MaxLen: 16 (with ':' + 1 digit)
.last_talker = "Der. locut.", // MaxLen: 16 (with ':' + .off or 2 digits value + 's')
.mute = "Sourdine", // MaxLen: 16 (with ':' + .on or .off)
.delete_channel = "Effacer canal", // MaxLen: 16
.keep_one_channel = "Garder 1 canal", // 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_FRENCH_H_ */