Localisation support (foreign languages)

Post Reply
VK3KYY
Posts: 7437
Joined: Sat Nov 16, 2019 3:25 am
Location: Melbourne, Australia

Localisation support (foreign languages)

Post by VK3KYY » Thu Nov 28, 2019 10:37 am

Guys

I've just pushed new source code for the developers that will support multiple languages via a "Language" menu

This is not 100% complete yet, but for those who would like to translate to another language, this is the data structure

The text in quotes e.g. "English" or "Battery" etc is the text that should be translated
Text like %s %d %c etc are special characters for substitution with other texts and numbers etc so should not be changed

The width of the screen is normally 16 characters, so menu names etc can not be longer than that.

Some texts need to be shorter e.g. "Rx only" as this is part of the Channel details screen.

I have not had time to work out the maximum length of every text, but if you look at the existing user interface it is not difficult to calculate how many characters will fit in each location.

Note 1. I have not yet translated some things on the Channel Details screen for CTCSS frequency, or the DMR Filtering settings

However it is probably 90% of the total texts used in the radio.

Note 2. The CPS screen messages are sent from the CPS and I will need to handle those by changes to the CPS.

Code: Select all

{
.LANGUAGE_NAME 		= "English",
.language			= "Language",
.menu				= "Menu",
.credits			= "Credits",
.zone				= "Zone",
.rssi				= "RSSI",
.battery			= "Battery",
.contacts			= "Contacts",
.firmware_info		= "Firmware info",
.last_heard			= "Last heard",
.options			= "Options",
.display_options	= "Display options",
.channel_details	= "Channel details",
.new_contact		= "New contact",
.contact_list		= "Contact list",
.hotspot_mode		= "Hotspot mode",
.contact_details	= "Contact Details",
.batteryVoltage		= "%d.%dV",
.built				= "Built",
.built				= "Built",
.zones				= "Zones",
.keypad_locked		= "Keypad locked",
.press_blue_plus_star	= "Press Blue +*",
.to_unlock			= "to unlock",
.unlocked			= "Unlocked",
.power_off			= "Power Off...",
.error				= "ERROR",
.rx_only			= "Rx only",
.out_of_band		= "OUT OF BAND",
.timeout			= "TIMEOUT",
.tg_entry			= "TG entry",
.pc_entry			= "PC entry",
.user_dmr_id		= "User DMR ID",
.contact 			= "Contact",
.displayRxFreq		= "%d.%05d MHz",
.accept_call		=  "Accept call?",
.private_call		= "Private call",
.squelch			= "Squelch",
.vfoRxFreq			= "%cR %d.%05d MHz",
.vfoTxFreq			= "%cT %d.%05d MHz",
.vfoEnterFreq		= "%c%c%c.%c%c%c%c%c MHz",
.quick_menu 		= "Quick Menu",
.filter				= "Filter:%s",
.all_channels		= "All Channels",
.gotoChannel		= "Goto %d",
.scan				= "Scan",
.channelToVfo		= "Channel --> VFO",
.vfoToChannel		= "VFO --> Channel",
.group				= "Group",
.private			= "Private",
.all				= "All",
.type				= "Type:",
.timeSlot			= "Timeslot",
.none				= "none",
.contact_saved		= "Contact saved",
.duplicate			=  "Duplicate",
.tg					= "TG",
.pc					= "PC",
.ts					= "TS",
.mode				= "Mode",
.colour_code		= "Color Code",
.n_a				= "N/A",
.channelDetailsRx	= "Rx:%d.%05dMHz",
.channelDetailsTx	= "Tx:%d.%05dMHz",
.bandwidth			= "Bandwidth",
.stepFreq				= "Step:%d.%02dkHz",
.tot				= "TOT",
.off				= "Off",
.skip				= "Skip",
.yes				= "Yes",
.no					= "No",
.rx_group			= "Rx Grp",
};

User avatar
YT5HOK
Posts: 213
Joined: Sat Nov 16, 2019 11:36 am
Location: Belgrade, KN04FR

Re: Localistion support (foreign languages)

Post by YT5HOK » Thu Nov 28, 2019 12:34 pm

I could translate to Serbian language, just tell me can I use " š ", " đ ", " č ", " ć ", " ž " letters, does the font used have those?

OH1E
Posts: 96
Joined: Sat Nov 16, 2019 8:59 am

Re: Localistion support (foreign languages)

Post by OH1E » Thu Nov 28, 2019 1:47 pm

i can work with Finnish translation, but needed too special characters like "ä" and "ö"

DG3GSP
Posts: 153
Joined: Sun Nov 17, 2019 9:30 am
Location: Southern Germany

Re: Localistion support (foreign languages)

Post by DG3GSP » Thu Nov 28, 2019 3:42 pm

I would translate to german. Same question for special characters like "ä", "ö" and "ü"

User avatar
F1RMB
Posts: 2488
Joined: Sat Nov 16, 2019 5:42 am
Location: Grenoble, France

Re: Localistion support (foreign languages)

Post by F1RMB » Thu Nov 28, 2019 3:47 pm

Hi,

I'm working on that too. Fonts will be updated as well.

Cheers.
---
Daniel

HI8NLO
Posts: 18
Joined: Tue Nov 19, 2019 11:55 pm

Re: Localistion support (foreign languages)

Post by HI8NLO » Thu Nov 28, 2019 4:05 pm

Quick question. When pushing a new language, do you want us to ask for a pull request on the github repository or do you prefer that it's sent as an attachment through this forum?

Thanks

DG3GSP
Posts: 153
Joined: Sun Nov 17, 2019 9:30 am
Location: Southern Germany

Re: Localistion support (foreign languages)

Post by DG3GSP » Thu Nov 28, 2019 4:24 pm

Hi Daniel,

good news - Thanks :)

Enclosed my first version:

Code: Select all

{
.LANGUAGE_NAME 		= "Deutsch",
.language			= "Sprache",
.menu				= "Menü",
.credits			= "Mitwirkende",
.zone				= "Zone",
.rssi				= "Feldstärke",
.battery			= "Batterie",
.contacts			= "Kontakte",
.firmware_info		= "Firmware Info",
.last_heard			= "Zuletzt gehört",
.options			= "Einstellungen",
.display_options	= "Display Optionen",
.channel_details	= "Kanal Details",
.new_contact		= "Neuer Kontakt",
.contact_list		= "Kontaktliste",
.hotspot_mode		= "Hotspot-Modus",
.contact_details	= "Kontakt Details",
.batteryVoltage		= "%d.%dV",
.built				= "Erstellt",
.built				= "Erstellt",
.zones				= "Zonen",
.keypad_locked		= "Tasten gesperrt",
.press_blue_plus_star	= "Blaue Taste +*",
.to_unlock			= "zum entsperren",
.unlocked			= "Entsperrt",
.power_off			= "Schalte aus...",
.error				= "FEHLER",
.rx_only			= "Nur Rx",
.out_of_band		= "AUSSER BAND",
.timeout			= "Zeit abgelaufen",
.tg_entry			= "TG Eingabe",
.pc_entry			= "PC Eingabe",
.user_dmr_id		= "Benutzer ID",
.contact 			= "Kontakt",
.displayRxFreq		= "%d.%05d MHz",
.accept_call		= "Ruf annehmen?",
.private_call		= "Privater Ruf",
.squelch			= "Rauschsperre",
.vfoRxFreq			= "%cR %d.%05d MHz",
.vfoTxFreq			= "%cT %d.%05d MHz",
.vfoEnterFreq		= "%c%c%c.%c%c%c%c%c MHz",
.quick_menu 		= "Schnell Menü",
.filter				= "Filter:%s",
.all_channels		= "Alle Kanäle",
.gotoChannel		= "Gehe zu %d",
.scan				= "Scan",
.channelToVfo		= "Kanal --> VFO",
.vfoToChannel		= "VFO --> Kanal",
.group				= "Gruppe",
.private			= "Privat",
.all				= "Alle",
.type				= "Type:",
.timeSlot			= "Zeitschlitz",
.none				= "kein",
.contact_saved		= "Kontakt gesp.",
.duplicate			=  "Duplikat",
.tg					= "TG",
.pc					= "PC",
.ts					= "TS",
.mode				= "Modus",
.colour_code		= "Color Code",
.n_a				= "N/A",
.channelDetailsRx	= "Rx:%d.%05dMHz",
.channelDetailsTx	= "Tx:%d.%05dMHz",
.bandwidth			= "Bandbreite",
.stepFreq			= "Step:%d.%02dkHz",
.tot				= "TOT",
.off				= "Aus",
.skip				= "Überspringen",
.yes				= "Ja",
.no					= "Nein",
.rx_group			= "Rx Gruppe",
};

User avatar
CT4TX
Posts: 3
Joined: Sat Nov 16, 2019 9:47 am

Re: Localistion support (foreign languages)

Post by CT4TX » Thu Nov 28, 2019 5:45 pm

Code: Select all

.LANGUAGE_NAME 		= "Portugues",
.language			= "Lingua",
.menu				= "Menu",
.credits			= "Creditos",
.zone				= "Zona",
.rssi				= "RSSI",
.battery			= "Bateria",
.contacts			= "Contactos",
.firmware_info		= "Versao Firmware",
.last_heard			= "Ultimo ouvido",
.options			= "Opcoes",
.display_options	= "Opcoes Visor",
.channel_details	= "Detalhes Canal",
.new_contact		= "Contacto Novo",
.contact_list		= "Lista Contactos",
.hotspot_mode		= "Modo Hotspot",
.contact_details	= "Detalhes Contato",
.batteryVoltage		= "%d.%dV",
.built				= "Compilado",
.built				= "Compilado",
.zones				= "Zonas",
.keypad_locked		= "TeclasBloqueadas",
.press_blue_plus_star="Prima Azul + *",
.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			= "Entrar TG",
.pc_entry			= "Entrar PC",
.user_dmr_id		= "DMRID Utilizador",
.contact 			= "Contacto",
.displayRxFreq		= "%d.%05d MHz",
.accept_call		= "Aceitar Chamada?",
.private_call		= "Chamada Privada",
.squelch			= "Squelch",
.vfoRxFreq			= "%cR %d.%05d MHz",
.vfoTxFreq			= "%cT %d.%05d MHz",
.vfoEnterFreq		= "%c%c%c.%c%c%c%c%c MHz",
.quick_menu 		= "Menu Rapido",
.filter				= "Filtro:%s",
.all_channels		= "Todos os Canais",
.gotoChannel		= "Ir Canal %d",
.scan				= "Busca",
.channelToVfo		= "Canal --> VFO",
.vfoToChannel		= "VFO --> Canal",
.group				= "Grupo",
.private			= "Privado",
.all				= "Todos",
.type				= "Tipo:",
.timeSlot			= "TimeSlot",
.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",
.channelDetailsRx	= "Rx:%d.%05dMHz",
.channelDetailsTx	= "Tx:%d.%05dMHz",
.bandwidth			= "LarguraBanda",
.stepFreq			= "Passo:%d.%02dkHz",
.tot				= "TOT",
.off				= "Off",
.skip				= "Ignorar",
.yes				= "Sim",
.no					= "Nao",
.rx_group			= "Rx Grp",
.on					= "Ligado",
.timeout_beep		= "Beep timeout",
.factory_reset		= "Reset Fabrica",
.calibration		= "Calibracao",
.band_limits		= "Limites banda",
.beep_volume		= "Volume Beep",
.dmr_mic_gain		= "Ganho Micro DMR",
.key_long			= "Key long:%1d.%1ds",
.key_repeat			= "Key rpt:%1d.%1ds",
.dmr_filter_timeout	= "Filtro DMR",
Last edited by CT4TX on Fri Nov 29, 2019 3:41 pm, edited 3 times in total.

VK3KYY
Posts: 7437
Joined: Sat Nov 16, 2019 3:25 am
Location: Melbourne, Australia

Re: Localistion support (foreign languages)

Post by VK3KYY » Thu Nov 28, 2019 7:24 pm

I will include those languages and produce a test version

Note. Until the font is updated, the accented characters will render as a question mark.

So either I change them to an unaccented character

DG3GSP
Posts: 153
Joined: Sun Nov 17, 2019 9:30 am
Location: Southern Germany

Re: Localistion support (foreign languages)

Post by DG3GSP » Thu Nov 28, 2019 7:46 pm

Here is a non accented version for tests:

Code: Select all

{
.LANGUAGE_NAME 		= "Deutsch",
.language			= "Sprache",
.menu				= "Menue",
.credits			= "Mitwirkende",
.zone				= "Zone",
.rssi				= "Feldstaerke",
.battery			= "Batterie",
.contacts			= "Kontakte",
.firmware_info		= "Firmware Info",
.last_heard			= "Zuletzt gehoert",
.options			= "Einstellungen",
.display_options	= "Display Optionen",
.channel_details	= "Kanal Details",
.new_contact		= "Neuer Kontakt",
.contact_list		= "Kontaktliste",
.hotspot_mode		= "Hotspot-Modus",
.contact_details	= "Kontakt Details",
.batteryVoltage		= "%d.%dV",
.built				= "Erstellt",
.built				= "Erstellt",
.zones				= "Zonen",
.keypad_locked		= "Tasten gesperrt",
.press_blue_plus_star	= "Blaue Taste +*",
.to_unlock			= "zum entsperren",
.unlocked			= "Entsperrt",
.power_off			= "Schalte aus...",
.error				= "FEHLER",
.rx_only			= "Nur Rx",
.out_of_band		= "AUSSER BAND",
.timeout			= "Zeit abgelaufen",
.tg_entry			= "TG Eingabe",
.pc_entry			= "PC Eingabe",
.user_dmr_id		= "Benutzer ID",
.contact 			= "Kontakt",
.displayRxFreq		= "%d.%05d MHz",
.accept_call		= "Ruf annehmen?",
.private_call		= "Privater Ruf",
.squelch			= "Rauschsperre",
.vfoRxFreq			= "%cR %d.%05d MHz",
.vfoTxFreq			= "%cT %d.%05d MHz",
.vfoEnterFreq		= "%c%c%c.%c%c%c%c%c MHz",
.quick_menu 		= "Schnell Menue",
.filter				= "Filter:%s",
.all_channels		= "Alle Kanaele",
.gotoChannel		= "Gehe zu %d",
.scan				= "Scan",
.channelToVfo		= "Kanal --> VFO",
.vfoToChannel		= "VFO --> Kanal",
.group				= "Gruppe",
.private			= "Privat",
.all				= "Alle",
.type				= "Type:",
.timeSlot			= "Zeitschlitz",
.none				= "kein",
.contact_saved		= "Kontakt gesp.",
.duplicate			=  "Duplikat",
.tg					= "TG",
.pc					= "PC",
.ts					= "TS",
.mode				= "Modus",
.colour_code		= "Color Code",
.n_a				= "N/A",
.channelDetailsRx	= "Rx:%d.%05dMHz",
.channelDetailsTx	= "Tx:%d.%05dMHz",
.bandwidth			= "Bandbreite",
.stepFreq			= "Step:%d.%02dkHz",
.tot				= "TOT",
.off				= "Aus",
.skip				= "Ueberspringen",
.yes				= "Ja",
.no					= "Nein",
.rx_group			= "Rx Gruppe",
};

Post Reply