Skip to content
UI

Writing

How to write interface text in Zenox products, from button labels to error messages.

Interface text is part of the design. A label that names the wrong thing or an error that does not say how to fix it costs the user as much as a broken control. These rules apply to every string a Zenox product shows, in English, Portuguese and Spanish alike, and to the defaults the library’s patterns ship with.

Voice and tone

Zenox users investigate threats and fix exposures, often under time pressure. Write like a competent colleague: direct, calm and specific.

  • Direct. Lead with what matters. Cut words that do not change the meaning.
  • Calm. State severity as a fact; never add alarm the data does not carry. No exclamation points.
  • Specific. Name the object and the number: “3 domains expire this week”, not “Some items need attention”.
  • Respectful. Never blame the user, never joke about a failure, never call a task “simple”.
Too formal Too casual Right
The requested operation could not be completed due to insufficient permissions. Oops, you can’t do that! You don’t have permission to delete assets. Ask a tenant admin.
Please be advised that the scan has been successfully scheduled. Scan’s all set, you’re good to go. Scan scheduled for 02:00

Plain language

  • Prefer short sentences and common words. If a sentence needs a second read, split it.
  • Use one term for one concept, everywhere. If the product calls it an alert, it is never also a notification, an event or a finding on the next screen.
  • Spell out acronyms at first use unless the audience uses them daily (IP, URL, CVE, DNS do not need it; “EASM” in onboarding text does).
  • No idioms, metaphors or slang. They do not translate and do not help the reader.
  • No judgments about effort or speed: drop “simply”, “just”, “easily”, “quickly”. What is easy for one person is not for another.
  • Software does not want, think or see. “The scan found 4 open ports”, not “The scanner thinks there are 4 open ports”. Established terms such as “ingest” are fine.
  • Name the thing. “Select the Domain field”, not “Select it”.

Voice, tense and mood

  • Use the active voice and the present tense: “Zenox checks the certificate every hour.”
  • Use the imperative for instructions: “Enter a domain.” Not “You should enter a domain.”
  • Use the passive voice when naming the actor would blame the user: “The file couldn’t be uploaded”, not “You uploaded an invalid file”.
  • Use the future tense only for something that will happen at a known time: “The report will be sent at 08:00.”

Capitalization

Sentence case for everything: page and dialog titles, buttons, tabs, menu items, labels, column headers, toasts. Capitalize only the first word and proper nouns.

Right Wrong
Create alert rule Create Alert Rule
Last seen Last Seen
Connect Microsoft Entra ID Connect microsoft entra id
  • Product, company and standard names keep their own capitalization: Zenox, Vydar, Tellyu, Microsoft Entra ID, CVE-2024-3400.
  • Never type text in capitals. The only uppercase in the interface is the caption style (text-xs font-semibold uppercase tracking-widest), applied with CSS, for short group labels such as sidebar sections.

Punctuation and symbols

Mark Rule
Period End full sentences with one: descriptions, helper text, message bodies. No period on titles, labels, buttons, menu items, tabs, column headers, placeholders, toast titles or empty-state titles.
Colon No colon after a form label: the label sits above the field. Use one only to join a label and a value on one line (“Owner: Security team”) and to introduce a list.
Comma Use the serial comma in English lists: “domains, hosts, and certificates”.
Hyphen Join compound adjectives before a noun: “case-sensitive value”, “high-severity alerts”. No spaces around it.
Dashes No em or en dashes in interface text. Split the sentence or use a comma. Write ranges with words: “10 to 20”.
Ellipsis Not in buttons, menu items, labels or placeholders, and not to show progress: loading is a Spinner or a Skeleton.
Exclamation point Never.
Question mark Only in a confirmation title that asks for a decision: “Delete asset vpn-01?”
Quotation marks Straight double quotes (") around names the user typed or chose, inside a sentence: Rule "Leaked credentials" was deleted. Not around IDs, dates, numbers or UI labels, and never for emphasis.
Parentheses Avoid them in labels and buttons. Never write plurals as “(s)”.
Slash In sentences, write the word you mean: “Linux or Windows”. A spaced slash may join two distinct values in a narrow column header: “City / Country”.
Ampersand Write “and”. Keep & only inside a proper name.
Apostrophe Contractions are fine in English (“can’t”, “don’t”). Do not make product names possessive: “the Vydar dashboard”, not “Vydar’s dashboard”.

Numbers, dates and values

Numbers, dates, times, identifiers and empty values follow Data display: absolute times in the user’s time zone, numbers through the locale’s formatters, and a muted dash for an empty value.

Word choice

Use the same verb for the same action across every product and language. The Portuguese and Spanish columns are the reference for the products’ translation files.

English Portuguese Spanish Use for Not
Create Criar Crear Making a new object and saving it Add (for new objects), New (as a button)
Add Adicionar Agregar Putting an existing thing into a list or group: add a member, add a domain to a scope Create
Edit Editar Editar Changing an existing object Modify, Update (as a button)
Save Salvar Guardar Keeping changes to an existing object Apply (in forms)
Apply Aplicar Aplicar Applying filters or settings that affect a view Save
Submit Enviar Enviar Sending something into a review or workflow Send (unless it is a message)
Cancel Cancelar Cancelar Leaving a task without keeping changes Abort, Dismiss
Close Fechar Cerrar Closing something that changed nothing (a details panel, an error dialog) OK
Delete Excluir Eliminar Destroying something that was saved Remove, Erase; “Deletar”, “Apagar”
Remove Remover Quitar Taking something out of a list without destroying it Delete
Discard Descartar Descartar Throwing away unsaved changes or a draft Delete
Duplicate Duplicar Duplicar Creating a new object from an existing one Copy, Clone
Copy Copiar Copiar Copying a value to the clipboard Duplicate
Export Exportar Exportar Producing a file: “Export to CSV”, “Export to PDF” Download (as a button), product names
Try again Tentar novamente Reintentar Retrying a failed request Retry, Reload
Clear Limpar Limpiar Removing applied filters or a typed value Reset (unless restoring defaults)
Show more / Show less Mostrar mais / menos Mostrar más / menos Expanding and collapsing a list See more, Expand
Sign in / Sign out Entrar / Sair Iniciar sesión / Cerrar sesión Starting and ending a session Log in, Login, Log out
  • “OK” only acknowledges information. Never pair a question with OK and Cancel, or with Yes and No: name the action instead.
  • Say “please” only when you are making the user wait or redo work, and not in every message.
  • Do not say “successfully” (“com sucesso”, “con éxito”) in a success message: the message itself says it worked.

Text in components

Element Rule Example
Button A verb, plus the object when it is not obvious. One to three words. Create rule, Export to CSV
Link Describe the destination. A link that reads “Learn more” alone says nothing to a screen reader. Learn about detection rules
Page title The object or the task, as a noun phrase. Alerts, Detection rules
Dialog title What happens, or the question to answer. Invite member, Delete asset vpn-01?
Field label A noun phrase naming the value. Never a sentence, never a colon. Domain, Notification email
Placeholder An example of the expected format, only when it helps. Never a replacement for the label; it disappears as the user types. No period. acme.com
Helper text One sentence about format, limits or consequences, with a period. Separate several domains with commas.
Tooltip The name of an icon-only control, or one short sentence of help. Copy, Refresh
Tab, menu item A noun or a short verb phrase, sentence case. Overview, Export to PDF
Column header Singular when each row has one value, plural when a cell lists several. Owner, Tags
Badge, status One or two words, a state not a sentence. Resolved, In progress

Messages

Every message answers up to three questions, in this order: what happened, why, and what the user can do. Skip the “why” when it does not help them act.

Type Write Example
Success A short past-tense statement, the object first. No period, no “successfully”. Asset deleted, 12 alerts resolved
Error What went wrong and what to do, in full sentences. No error codes or stack traces in the text: put them in a “Details” section or in the logs. The report couldn’t be generated. Try again in a few minutes.
Field error How to fix the value, not that it is wrong. Enter a domain, such as acme.com.
Required field Name the field. Domain is required.
Warning The consequence, then the choice. 3 of 12 alerts are already closed and won’t change. Resolve the other 9?
Confirmation Title: the question, naming the object. Body: what changes and whether it can be undone. Button: the same verb as the title. Delete asset vpn-01? / Its findings and history are deleted too. This can’t be undone. / Delete asset
Information Context the user should know before acting, one or two sentences. Results include assets discovered in the last 30 days.

Never show a raw backend message to the user: it can carry internal details or personal data. Map known errors to written messages and fall back to a generic one. When an unexpected error may reach support, show the request ID as a copyable value under the message (“Reference: 7f3a9c”), so support can find the request in the logs.

Writing for translation

Every Zenox interface ships in English, Portuguese and Spanish.

  • Keep a message in one string, with named variables: "{count} alerts resolved". Never build a sentence by joining fragments; word order changes between languages.
  • Write singular and plural as separate strings, chosen by count. Never “(s)”.
  • Leave room: Portuguese and Spanish run about 30% longer than English. Do not size a button or a column to the English text.
  • Do not put a variable where its grammar depends on the word (gender, articles). Write a separate message for each case instead.
  • Quote names the user typed so the sentence stays readable in every language.