French translation

Hello,

I send some of the template with translation done in french, though I am not sure how to send the proper format so I will only send text and someone tell me how to send the proper translation.

Also even though I read the instructions and guide line, I still have some questionning this is where I wrote ?? because I am not sure if this is code or text that need to be translated.

Sorry about all the missing info but at least, I think it is a start !

{
	"app": {
		"compact-mode": "Mode Compact",
		"download-the-latest-version": "Télécharger la dernière version",
		"latest-version": "Dernière version",
		"offline": "Hors ligne",
		"online": "En ligne",
		"special_thanks_to": "Remerciements spéciaux à",
		"update-available": "Une mise Ă  jour est disponible",
		"version": "Version",
		"written_by": "Écrit par",
		"your-version": "Votre version"
	},
	"buttons": {
		"about": "Ă€ propos",
		"action": "Action | Actions",
		"cancel": "Annuler",
		"clear": "Effacer",
		"delete": "Supprimer",
		"duplicate": "Dupliquer",
		"edit": "Éditer",
		"enter-callsign": "Entrer un @:fields.callsign",
		"export": "Exporter",
		"expanded-mode": "Mode Ă©tendu",
		"enable-extended-keyboard": "Clavier Ă©tendu",
		"help": "Aide",
		"new-logbook": "Nouveau registre",
		"lookup": "Rechercher",
		"lookup-all": "Rechercher tout",
		"lookup-callsigns": "Rechercher des indicatifs",
		"new": "Nouveau",
		"now": "Maintenant",
		"notifications": "Notifications",
		"ok": "OK",
		"save": "Sauvegarder",
		"settings": "RĂ©glages",
		"support-and-requests": "Assistance et demandes"
	},
	
	"empty-states": {
		"titles": {
			"a-lot-of-space": "C'est beaucoup d'espace !",
			"set-up-camp": "Vous avez installé le camp !",
			"offline": "Il semble que vous soyez hors ligne.",
			"what-a-view": "Quelle vue!"
		},
		"empty-logbooks": "Il semble que vous n'ayez aucun registre. Pour commencer, il vous suffit de @:buttons.new-logbook button.",
		"your-qsos": "Vos QSO apparaîtront ici. Passez à l'antenne !",
		"tables": {
			"qsos": "Aucun QSO correspondant à vos critères de recherche n'a été trouvé."
		}
	},
	
	"fields": {
		"band": "Bande",
		"callsign": "Indicatif",
		"category": "Catégorie",
		"class": "Classe",
		"club-callsign": "Indicatif du club",
		"comments": "Commentaires",
		"county": "Comté",
		"cq-zone": "Zone CQ",
		"date": "Date",
		"date-created": "@:fields.date Créé",
		"frequency": "Fréquence",
		"grid": "Grid",
		"itu-zone": "Zone ITU",
		"latitude": "Latitude",
		"longitude": "Longitude",
		"mode": "Mode",
		"my": "Mon",
		"my-callsign": "@:fields.my @:fields.callsign",
		"my-category": "@:fields.my @:fields.category",
		"my-class": "Ma Classe",
		"my-county": "@:fields.my @:fields.county",
		"my-grid": "Mon grid", 
		"my-information": "Mon Information",
		"my-park": "@:fields.my @:fields.park",
		"my-section": "@:fields.my @:fields.section",
		"my-state": "Mon État",
		"my-summit": "Mon Sommet",
		"my-qth": "QTH",
		"notes": "Notes",
		"operator": "Opérateur",
		"park": "Parc",
		"power": "Puissance",
		"rst-rcvd": "RST Reçu",
		"rst-received": "RST Reçu",
		"rst-sent": "RST Envoyé",
		"section": "Section",
		"signal-and-exchange": "Signal & Échange",
		"template": "Modèle | Modèles",
		"their": "Leur",
		"their-callsign": "@:fields.their @:fields.callsign",
		"their-category": "Leur Catégorie",
		"their-class": "Leur Classe",
		"their-county": "Leur @:fields.county",
		"their-grid": "Leur @:fields.grid",
		"their-information": "Leur Information",
		"their-park": "@:fields.their @:fields.park",
		"their-park-description": "Séparées par des virgules",
		"their-section": "Leur Section",
		"their-state": "État",
		"their-summit": "Leur Sommet",
		"their-qth": "QTH",
		"their-name": "Leur nom", 
		"time": "Heure",
		"time-on": "Il est temps",
		"title": "Titre",
		"transmit_power": "Puissance de Transmission",
		"tx_power": "Puissance TX",
		"total-entries": "Entrées totales",
		"update-qsos": "Mettre les QSO Ă  jour",
		"validations": {
			"callsign-required": "L'indicatif est requis",
			"band-required": "La bande est requise",
			"band-does-not-match-frequency": "La bande ne correspond pas à la fréquence",
			"frequency-required": "La fréquence est requise",
			"non-itu-frequency": "Fréquence en dehors de la plage ITU",
			"logbook-title-required": "Le titre du registre est requis",
			"mode-required": "Le mode est requis"			
		}
	},

	"logbook": "Registre | Registres",

	"messages": {
		"are-you-sure": "Êtes-vous sûr?",
		"delete-logbook-text": "Cela supprimera le registre et tous les QSO qui lui sont associés. \n Impossible d'annuler",
		"delete-qso-text": "La suppression de ce QSO avec {callsign} ne peut pas être annulée.",
		"delete-profile-text": "La suppression de ce profil est irréversible."
	},

	"qso": "QSO | QSOs",
	"edit-qso": "Modifier un QSO",

	"profiles": {
		"callsign": "@:fields.callsign",
		"create-new-profile": "Créer un nouveau profil",
		"default-template": "Modèle par défaut",
		"default-lookup-service": "Service de recherche par défaut",
		"edit-current-profile": "Modifier le profil actuel",
		"edit-profile": "Editer le profil",
		"first-name": "Prénom",
		"hamqth-password": "Mot de passe HamQTH",
		"hamqth-username": "Nom d'utilisateur HamQTH",
		"language": "Langue",
		"last-name": "Nom de famille",
		"messages": {
			"first-time-setup": "Configurons votre premier profil",
			"select-your-language": "Choisissez votre langue",
			"validations": {
				"callsign-required": "L'indicatif est requis",
				"language-required": "La langue est requise",
				"invalid-qrz-credentials": "Nom d'utilisateur/mot de passe QRZ invalide",
				"invalid-hamqth-credentials": "Nom d'utilisateur/mot de passe HamQTH invalide"
			}
		},
		"new-profile": "Nouveau profile",
		"manage-profiles": "GĂ©rer les profils",
		"operator": "Opérateur",
		"profile": "Profile | Profiles",
		"qrz-password": "Mot de passe QRZ",
		"qrz-username": "Nom d'utilisateur QRZ"
	}
}





Ok I did not receive any input so I will try to ask all my questionning here :

“enter-callsign”: “Entrer un @:fields.callsign”, ?? what is @:fields.callsign ?

“empty-logbooks”: “Il semble que vous n’ayez aucun registre. Pour commencer, il vous suffit de @:buttons.new-logbook button.”, ?? what is @:buttons.new-logbook button

“date-created”: “@:fields.date Créé”, ?? what is @:fields.date in which way this is displayed ?

“my-callsign”: “@:fields.my @:fields.callsign”, ?? what are @:fields.my @:fields.callsign

“my-category”: “@:fields.my @:fields.category”, ?? what are @:fields.my @:fields.category

“my-county”: “@:fields.my @:fields.county”, ?? what are @:fields.my @:fields.county

“my-park”: “@:fields.my @:fields.park”, ?? what are @:fields.my @:fields.park

“my-section”: “@:fields.my @:fields.section”, ?? what are @:fields.my @:fields.section

“rst-rcvd”: “RST Reçu”,
“rst-received”: “RST Reçu”, ?? what is the difference between these two ?

“their-callsign”: “@:fields.their @:fields.callsign”, ?? what are @:fields.their @:fields.callsign

“their-county”: “Leur @:fields.county”, ?? what is @:fields.county

“their-grid”: “Leur @:fields.grid”, ?? what is @:fields.grid

“their-park”: “@:fields.their @:fields.park”, ?? what are @:fields.their @:fields.park

“their-park-description”: “Séparées par des virgules”, ?? template was displaying “Comma separated” was that the real translation for “their park description” ?

“delete-logbook-text”: “Cela supprimera le registre et tous les QSO qui lui sont associés. \n Impossible d’annuler”, what is the \n in the template ?

“delete-qso-text”: “La suppression de ce QSO avec {callsign} ne peut pas être annulée.”, ?? is {callsign} coding or need to be translated ?

“callsign”: “@:fields.callsign”, ?? what is @:fields.callsign

Thank you for your help so I can sort out what I am missing…

How can I try my translation in the program ? does it need to be recompile before by you guys or I can put that coding inside a file and test it out myself ?

Some of my questions are in regard of the environment the text is used, I would need to see as words have different meaning in different situations.

Thank you !

1 Like

This is how the translation library I use, can re-use keys @: are placeholders. So in this case in the fields section you added "callsign": "Indicatif", which means “enter-callsign”: “Entrer un @:fields.callsign” will stick Indicatif into the place of @:fields.callsign, resulting in Entere un Indicatif

I really that this may be confusing, and in most cases might not work how I’ve set it up for language other than English. If you want, you can ignore them and just provide a translation, so my-callsign”: “@:fields.my @:fields.callsign” becomes my-callsign”: “My Callsign".

I’ll updated the provided template to make it easer.

1 Like

Template has been updated: Translation Template

1 Like

Ok thank you for the precisions.

I have redone the french translation with the simplified template.

{
	"app": {
		"compact-mode": "Mode Compact",
		"download-the-latest-version": "Télécharger la dernière version",
		"latest-version": "Dernière version",
		"offline": "Hors ligne",
		"online": "En ligne",
		"special_thanks_to": "Remerciements spéciaux à",
		"update-available": "Une mise Ă  jour est disponible",
		"version": "Version",
		"written_by": "Écrit par",
		"your-version": "Votre version"
	},
	"buttons": {
		"about": "Ă€ propos",
		"action": "Action | Actions",
		"cancel": "Annuler",
		"clear": "Effacer",
		"delete": "Supprimer",
		"duplicate": "Dupliquer",
		"edit": "Éditer",
		"enter-callsign": "Entrer un Indicatif",
		"export": "Exporter",
		"expanded-mode": "Mode Ă©tendu",
		"enable-extended-keyboard": "Clavier Ă©tendu",
		"help": "Aide",
		"new-logbook": "Nouveau registre",
		"lookup": "Rechercher",
		"lookup-all": "Rechercher tout",
		"lookup-callsigns": "Rechercher des indicatifs",
		"new": "Nouveau",
		"now": "Maintenant",
		"notifications": "Notifications",
		"ok": "OK",
		"save": "Sauvegarder",
		"settings": "RĂ©glages",
		"support-and-requests": "Assistance et demandes"
	},
	
	"empty-states": {
		"titles": {
			"a-lot-of-space": "C'est beaucoup d'espace !",
			"set-up-camp": "Vous avez installé le camp !",
			"offline": "Il semble que vous soyez hors ligne.",
			"what-a-view": "Quelle vue!"
		},
		"empty-logbooks": "Il semble que vous n'ayez aucun registre. Pour commencer, il vous suffit d'appuyer sur le bouton Nouveau Registre.",
		"your-qsos": "Vos QSO apparaîtront ici. Passez à l'antenne !",
		"tables": {
			"qsos": "Aucun QSO correspondant à vos critères de recherche n'a été trouvé."
		}
	},
	
	"fields": {
		"band": "Bande",
		"callsign": "Indicatif",
		"category": "Catégorie",
		"class": "Classe",
		"club-callsign": "Indicatif du club",
		"comments": "Commentaires",
		"county": "Comté",
		"cq-zone": "Zone CQ",
		"date": "Date",
		"date-created": "Date Créé",
		"frequency": "Fréquence",
		"grid": "Grid",
		"itu-zone": "Zone ITU",
		"latitude": "Latitude",
		"longitude": "Longitude",
		"mode": "Mode",
		"my": "Mon",
		"my-callsign": "Mon Indicatif",
		"my-category": "Ma Catégorie",
		"my-class": "Ma Classe",
		"my-county": "Mon Comté",
		"my-grid": "Mon Grid", 
		"my-information": "Mon Information",
		"my-park": "Mon Parc",
		"my-section": "Ma Section",
		"my-state": "Mon État",
		"my-summit": "Mon Sommet",
		"my-qth": "QTH",
		"notes": "Notes",
		"operator": "Opérateur",
		"park": "Parc",
		"power": "Puissance",
		"rst-rcvd": "RST Reçu",
		"rst-received": "RST Reçu",
		"rst-sent": "RST Envoyé",
		"section": "Section",
		"signal-and-exchange": "Signal & Échange",
		"template": "Modèle | Modèles",
		"their": "Leur",
		"their-callsign": "Leur Indicatif",
		"their-category": "Leur Catégorie",
		"their-class": "Leur Classe",
		"their-county": "Leur Comté",
		"their-grid": "Leur Grid",
		"their-information": "Leur Information",
		"their-park": "Leur Parc",
		"their-park-description": "Séparées par des virgules",
		"their-section": "Leur Section",
		"their-state": "Leur État",
		"their-summit": "Leur Sommet",
		"their-qth": "Leur QTH",
		"their-name": "Leur nom", 
		"time": "Heure",
		"time-on": "Il est temps",
		"title": "Titre",
		"transmit_power": "Puissance de Transmission",
		"tx_power": "Puissance TX",
		"total-entries": "Entrées totales",
		"update-qsos": "Mettre les QSO Ă  jour",
		"validations": {
			"callsign-required": "L'indicatif est requis",
			"band-required": "La bande est requise",
			"band-does-not-match-frequency": "La bande ne correspond pas à la fréquence",
			"frequency-required": "La fréquence est requise",
			"non-itu-frequency": "Fréquence en dehors de la plage ITU",
			"logbook-title-required": "Le titre du registre est requis",
			"mode-required": "Le mode est requis"			
		}
	},


	"logbook": "Registre | Registres",

	"messages": {
		"are-you-sure": "Êtes-vous sûr?",
		"delete-logbook-text": "Cela supprimera le registre et tous les QSO qui lui sont associés. \n Impossible d'annuler",
		"delete-qso-text": "La suppression de ce QSO avec {callsign} ne peut pas être annulée.",
		"delete-profile-text": "La suppression de ce profil est irréversible."
	},

	"qso": "QSO | QSOs",
	"edit-qso": "Éditer un QSO",

	"profiles": {
		"callsign": "Indicatif",
		"create-new-profile": "Créer un nouveau profil",
		"default-template": "Modèle par défaut",
		"default-lookup-service": "Service de recherche par défaut",
		"edit-current-profile": "Modifier le profil actuel",
		"edit-profile": "Editer le profil",
		"first-name": "Prénom",
		"hamqth-password": "Mot de passe HamQTH",
		"hamqth-username": "Nom d'utilisateur HamQTH",
		"language": "Langue",
		"last-name": "Nom de famille",
		"messages": {
			"first-time-setup": "Configurons votre premier profil",
			"select-your-language": "Choisissez votre langue",
			"validations": {
				"callsign-required": "L'indicatif est requis",
				"language-required": "La langue est requise",
				"invalid-qrz-credentials": "Nom d'utilisateur/mot de passe QRZ invalide",
				"invalid-hamqth-credentials": "Nom d'utilisateur/mot de passe HamQTH invalide"
			}
		},
		"new-profile": "Nouveau profile",
		"manage-profiles": "GĂ©rer les profils",
		"operator": "Opérateur",
		"profile": "Profile | Profiles",
		"qrz-password": "Mot de passe QRZ",
		"qrz-username": "Nom d'utilisateur QRZ"
	}
}

So in french there is gender. MON indicatif, MA catégorie, MA classe which might cause an issue with your programming as in english it is not the case, il will be MY callsign, MY cathegory.

If “my”: “Mon”, that could cause a translation issue with some words in french that are masculine or feminine words. The possessive adjective before that word might become MA instead of MON.

I would also like to understand what is the difference between those two translations ?

what does the \n stand for ?

how come “their park description” translation is “comma separated” ?? which is Séparés par des virgules in french.

Thank you for clarifying !!

1 Like

Somewhere, Displaying RST Received was too long, and I noticed other loggers used RCVD to shorten the word. Reçu is perfectly short so those can both just stay as if you have them.

It’s a "newline’ character - it creates a break to the next lien when displaying the text. Probably unnecessary on my part, I’m usually pretty good about not having markup or other characters in translation files.

I should change that label as I see it doesn’t make sense. It’s the placeholder text for the Their Park input:

Screen Shot 2022-05-03 at 8.16.09 AM

Thanks Jarrett for the precisions.

I think the translation is ok beside some word have gender so I am not sure how this will be handled in your app.

Is there a way I can test what it will look like in the PC app or it need to be recompiled ?

Thank you !

Here is a build of the lastest version, with your translation file available. To change your language to French, you’ll need to edit your profile and select French from the language dropdown and save it.

1 Like

ok I will try it out and see how it looks and if there are some things to adjust !

thank you !

ok here is what I cought at first glance :

image

that last one could be changed to “générique”.

image

that one should be Entrer un Indicatif

See what you can do !

I’ll post if I find something else.

Thank you !

1 Like