Translation Template

Below is the template you can use for translations. The template is a JSON object, with the keys being what is passed to the translation function, and the value being the translated text. For instance:

# en.json

'hello': 'Hello',

# es.json

'hello': 'Hola',

A few notes

  • Values seperated by a pipe | are for pluralization, i.e. book | books or 'libro | libros
  • Values started with @: reference other fields. If this don’t make sense for your language or translate well, you can remove them and translate the string in it’s entirety.
  • If you don’t have a good translation, just leave the English version for now.
  • If there is a different term used in your language for ham-centric words or abbreviations (i.e ‘RST’, ‘Callsign’, etc.) please use those.
  • Thank you SO MUCH for taking the time to do this!


	"app": {
		"compact-mode": "Compact Mode",
		"download-the-latest-version": "Download the latest version",
		"latest-version": "Latest version",
		"offline": "Offline",
		"online": "Online",
		"special_thanks_to": "Special thanks to",
		"update-available": "An update is available",
		"version": "Version",
		"written_by": "Written by",
		"your-version": "Your version"
	"buttons": {
		"about": "About",
		"action": "Action | Actions",
		"cancel": "Cancel",
		"clear": "Clear",
		"delete": "Delete",
		"duplicate": "Duplicate",
		"edit": "Edit",
		"enter-callsign": "Enter callsign",
		"export": "Export",
		"expanded-mode": "Expanded Mode",
		"enable-extended-keyboard": "Extended Keyboard",
		"help": "Help",
		"new-logbook": "New Logbook",
		"lookup": "Lookup",
		"lookup-all": "Lookup All",
		"lookup-callsigns": "Lookup Callsigns",
		"new": "new",
		"now": "Now",
		"notifications": "Notifications",
		"ok": "OK",
		"save": "Save",
		"settings": "Settings",
		"support-and-requests": "Support & Requests"
	"empty-states": {
		"titles": {
			"a-lot-of-space": "That's a lot of Space!",
			"set-up-camp": "You've Set Up Camp!",
			"offline": "It looks like you're offline.",
			"what-a-view": "What a view!"
		"empty-logbooks": "It looks like you don't have any logbooks. To get started, simply the New Log Book button.",
		"your-qsos": "Your QSOs will show up here. Get on the air!",
		"tables": {
			"qsos": "No QSOs matching your search criteria were found."
	"fields": {
		"band": "band",
		"callsign": "Callsign",
		"category": "Category",
		"class": "Class",
		"club-callsign": "Club Callsign",
		"comments": "Comments",
		"county": "County",
		"cq-zone": "CQ Zone",
		"date": "Date",
		"date-created": "Date Created",
		"frequency": "Frequency",
		"grid": "Grid",
		"itu-zone": "ITU Zone",
		"latitude": "Latitude",
		"longitude": "Longitude",
		"mode": "mode",
		"my": "My",
		"my-callsign": "My Callsign",
		"my-category": "My Category",
		"my-class": "My Class",
		"my-county": "My County",
		"my-grid": "My Grid",
		"my-information": "My Information",
		"my-park": "My Park",
		"my-section": "My Section",
		"my-state": "My State",
		"my-summit": "My Summit",
		"my-qth": "QTH",
		"notes": "Notes",
		"operator": "Operator",
		"park": "Park",
		"power": "Power",
		"rst-rcvd": "RST Rcvd",
		"rst-received": "RST Received",
		"rst-sent": "RST Sent",
		"section": "Section",
		"signal-and-exchange": "Signal & Exchange",
		"template": "Template | Templates",
		"their": "Their",
		"their-callsign": "Their Callsign",
		"their-category": "Their Category",
		"their-class": "Their Class",
		"their-county": "Their County",
		"their-grid": "Their Grid",
		"their-information": "Their Information",
		"their-park": "Their Park",
		"their-park-description": "Comma separated",
		"their-section": "Their Section",
		"their-state": "State",
		"their-summit": "Their Summit",
		"their-qth": "QTH",
		"their-name": "Their name", 
		"time": "Time",
		"time-on": "Time On",
		"title": "Title",
		"transmit_power": "Transmit Power",
		"tx_power": "TX Power",
		"total-entries": "Total Entries",
		"update-qsos": "Update QSOs",
		"validations": {
			"callsign-required": "Callsign is required",
			"band-required": "Band is required",
			"band-does-not-match-frequency": "Band does not match freq",
			"frequency-required": "Frequency is required",
			"non-itu-frequency": "Freq outside ITU range",
			"logbook-title-required": "Logbook title is required",
			"mode-required": "Mode is required"			

	"logbook": "Logbook | Logbooks",

	"messages": {
		"are-you-sure": "Are you sure?",
		"delete-logbook-text": "This will delete this logbook and all QSOs associated with it. \n This cannot be undone",
		"delete-qso-text": "Deleting this QSO with {callsign} cannot be undone.",
		"delete-profile-text": "Deleting this Profile cannot be undone."

	"qso": "QSO | QSOs",
	"edit-qso": "Edit QSO",

	"profiles": {
		"callsign": "Callsign",
		"create-new-profile": "Create New Profile",
		"default-template": "Default Template",
		"default-lookup-service": "Default Lookup Service",
		"edit-current-profile": "Edit Current Profile",
		"edit-profile": "Edit Profile",
		"first-name": "First Name",
		"hamqth-password": "HamQTH Password",
		"hamqth-username": "HamQTH Username",
		"language": "Language",
		"last-name": "Last Name",
		"messages": {
			"first-time-setup": "Let's Set Up Your First Profile",
			"select-your-language": "Select your language",
			"validations": {
				"callsign-required": "Callsign is required",
				"language-required": "Language is required",
				"invalid-qrz-credentials": "Invalid QRZ username/password",
				"invalid-hamqth-credentials": "Invalid HamQTH username/password"
		"new-profile": "New Profile",
		"manage-profiles": "Manage Profiles",
		"operator": "Operator",
		"profile": "Profile | Profiles",
		"qrz-password": "QRZ Password",
		"qrz-username": "QRZ Username"

1 Like