Benedikt Meurer | 625c4bc | 2024-07-19 12:33:13 | [diff] [blame] | 1 | # How to write UI text |
| 2 | |
| 3 | [TOC] |
| 4 | |
| 5 | ## Checklist |
| 6 | |
| 7 | For every CL that adds or changes UI texts in the Chrome DevTools front-end, use |
| 8 | this checklist to make sure that the new or changed strings meet the basic |
| 9 | requirements for good UX writing. |
| 10 | |
| 11 | ### General |
| 12 | |
| 13 | * Give the right info at the right time and place |
| 14 | * Don't write more than 1 sentence but if you do, break up text into sections, lists, tooltips, and <u>Learn more</u> links |
| 15 | * Be friendly but not ridiculous |
Benedikt Meurer | 50042c9 | 2024-08-21 07:57:01 | [diff] [blame] | 16 | * ✔️ `This API lets you collect data about what your users like.` |
| 17 | * ❌ `Dude! This API is totally awesome!` |
| 18 | * ❌ `This API may enable the acquisition of information pertaining to user preferences.` |
Benedikt Meurer | 625c4bc | 2024-07-19 12:33:13 | [diff] [blame] | 19 | |
| 20 | ### Patterns |
| 21 | |
| 22 | * Follow the |
| 23 | [F pattern](https://m3.material.io/foundations/content-design/style-guide/ux-writing-best-practices#3a833840-43db-4f6e-8133-c4665c17d176) |
| 24 | * One sentence, one idea |
| 25 | * "To get what you want, do this" |
Benedikt Meurer | 50042c9 | 2024-08-21 07:57:01 | [diff] [blame] | 26 | * ✔️ `To save changes, drop a folder here` |
| 27 | * ❌ `Drop in a folder to add to Workspace (what's a Workspace?)` |
Benedikt Meurer | 625c4bc | 2024-07-19 12:33:13 | [diff] [blame] | 28 | * "Do this to recover" |
Benedikt Meurer | 50042c9 | 2024-08-21 07:57:01 | [diff] [blame] | 29 | * ✔️ `Shorten filename to 64 characters or less` |
| 30 | * ❌ `Invalid filename` |
Benedikt Meurer | 625c4bc | 2024-07-19 12:33:13 | [diff] [blame] | 31 | |
| 32 | ### Mechanics |
| 33 | |
| 34 | * Say “you” |
| 35 | * [Look up](https://translate.google.com) short synonyms |
Benedikt Meurer | 50042c9 | 2024-08-21 07:57:01 | [diff] [blame] | 36 | * ✔️ `Keep, more, stop, get, send, add, fit, …` |
| 37 | * ❌ `Preserve, additional, prevent, receive, submit, create, …` |
Benedikt Meurer | 625c4bc | 2024-07-19 12:33:13 | [diff] [blame] | 38 | * Cut, cut, cut |
Benedikt Meurer | 50042c9 | 2024-08-21 07:57:01 | [diff] [blame] | 39 | * ❌ `Please, sorry, very, strongly, seamless, awesome, there is, there are, fast, quick, …` |
Benedikt Meurer | 625c4bc | 2024-07-19 12:33:13 | [diff] [blame] | 40 | * Use active voice |
Benedikt Meurer | 50042c9 | 2024-08-21 07:57:01 | [diff] [blame] | 41 | * ✔️ `DevTools loaded source maps` |
| 42 | * ❌ `Source maps were loaded by DevTools` |
Benedikt Meurer | 625c4bc | 2024-07-19 12:33:13 | [diff] [blame] | 43 | * Use [contractions](https://developers.google.com/style/contractions) but avoid [Latin abbreviations](https://m3.material.io/foundations/content-design/style-guide/ux-writing-best-practices#98d02949-1933-49df-b136-f7b72620b950) |
Benedikt Meurer | 50042c9 | 2024-08-21 07:57:01 | [diff] [blame] | 44 | * ✔️ `Can’t, don’t, isn’t, for example, that is, and more` |
| 45 | * ❌ `Cannot, do not, is not, e.g., i.e., etc.` |
Benedikt Meurer | 625c4bc | 2024-07-19 12:33:13 | [diff] [blame] | 46 | * Use simple and common terms |
Benedikt Meurer | 50042c9 | 2024-08-21 07:57:01 | [diff] [blame] | 47 | * ✔️ `Website, page, extension, function` |
| 48 | * ❌ `Debug target, debuggee, content script, call frame` |
Benedikt Meurer | 625c4bc | 2024-07-19 12:33:13 | [diff] [blame] | 49 | |
| 50 | ### Cosmetics |
| 51 | |
| 52 | * Use sentence-case, not Title-Case (see [Capitalization guidelines](#capitalization-guidelines) below). |
Benedikt Meurer | 50042c9 | 2024-08-21 07:57:01 | [diff] [blame] | 53 | * ✔️ `Periodic background sync` |
| 54 | * ❌ `Periodic Background Sync` |
Benedikt Meurer | 625c4bc | 2024-07-19 12:33:13 | [diff] [blame] | 55 | * Punctuate consistently |
| 56 | * Use serial comma: A, B, and C |
| 57 | * Skip periods in case of a single sentence |
| 58 | * Don't spell out numbers |
Benedikt Meurer | 50042c9 | 2024-08-21 07:57:01 | [diff] [blame] | 59 | * ✔️ `1, 2, 3, …` |
| 60 | * ❌ `One, two, three, …` |
Benedikt Meurer | 625c4bc | 2024-07-19 12:33:13 | [diff] [blame] | 61 | * Use just 2 types of links: <u>Learn more</u> and the |
| 62 | [GM3 `Help` icon](https://fonts.corp.google.com/icons?selected=Google+Symbols:help). |
| 63 | |
| 64 | |
| 65 | ## Capitalization guidelines |
| 66 | |
| 67 | ### Capitalize product names |
| 68 | |
| 69 | Capitalize [product names](https://developers.google.com/style/product-names#capitalize), |
| 70 | web API names, but not [feature names](https://developers.google.com/style/product-names#feature-names). |
| 71 | |
Benedikt Meurer | 50042c9 | 2024-08-21 07:57:01 | [diff] [blame] | 72 | * ✔️ `Chrome DevTools (product) lets you debug Background Fetch API (web API) by logging background fetch (feature) events.` |
| 73 | * ❌ `Chrome devtools lets you debug background fetch API by logging Background Fetch events.` |
Benedikt Meurer | 625c4bc | 2024-07-19 12:33:13 | [diff] [blame] | 74 | |
| 75 | ### Use sentence case |
| 76 | |
| 77 | Use sentence case in [UI element names](https://m3.material.io/foundations/content-design/style-guide/ux-writing-best-practices#fc5c2a78-f4bf-4d42-bdac-42ff80391129) as well as [titles and headings in text](https://developers.google.com/style/capitalization#capitalization-in-titles-and-headings). |
| 78 | |
| 79 | That is, capitalize only the first word in the title, the first word in a |
| 80 | subheading after a colon, and any proper nouns or other terms that are |
| 81 | always capitalized a certain way. |
| 82 | |
| 83 | *** aside |
| 84 | Examples: **Network request blocking**, **Blocked response cookies** |
| 85 | *** |
| 86 | |
| 87 | ### Spell UI elements in text |
| 88 | |
| 89 | When mentioning [UI elements in text](https://developers.google.com/style/ui-elements#formatting), |
| 90 | spell their names in bold and exactly as they are spelled, including |
| 91 | capitalization, which should be in sentence case. |
| 92 | |
| 93 | *** aside |
| 94 | Example: Open the **Network request blocking** panel. |
| 95 | *** |
| 96 | |
| 97 | If an element doesn't have a |
| 98 | name however, <em>don't</em> capitalize its term and <em>don't</em> spell it in |
| 99 | bold. |
| 100 | |
| 101 | *** aside |
| 102 | Example: A filter bar at the top of the **Network** panel, not ~~the **Filter** bar~~. |
| 103 | *** |
| 104 | |
| 105 | *** note |
| 106 | **Tip:** You can "stack" navigation paths in text regardless of element type. |
| 107 | For example: |
| 108 | |
| 109 | In **Settings** > **Preferences** > **Appearance** > **Panel layout**, |
| 110 | select `auto`. |
| 111 | |
| 112 | That was [Panel] > [Tab] > [Section] > [Drop-down menu]. |
| 113 | *** |
| 114 | |
| 115 | ## Resources |
| 116 | |
| 117 | 1. How to write UI texts |
| 118 | ([slides](https://docs.google.com/presentation/d/1AfsX0JaMd1iBNH1WL2dMswXLuhGSU5j2cyAEHkJpoNA?resourcekey=0-cfKK72Q_tV8-uakhzuVx-g), |
| 119 | [recording](https://drive.google.com/file/d/19wOnbZHvXhH-tQLuE0M2B9fQMjosLC9O?resourcekey=0-FBrvUvnWMq0Wa98vkea9-A)) |
| 120 | |