This page lists specific formatting instructions for tldr
pages.
The basic format of each page should match the following template and have at most 8 command examples:
# command name
> Short, snappy command description.
> Preferably one line; two are acceptable if necessary.
> More information: <https://example.com/command_name/help/page>.
- Code description:
`command_name options`
- Code description:
`command_name options`
...
Example:
# krita
> A sketching and painting program designed for digital artists.
> See also: `gimp`.
> More information: <https://docs.krita.org/en/reference_manual/linux_command_line.html>.
- Start Krita:
`krita`
- Open specific files:
`krita {{path/to/image1 path/to/image2 ...}}`
- Start without a splash screen:
`krita --nosplash`
- Start with a specific workspace:
`krita --workspace {{Animation}}`
- Start in fullscreen mode:
`krita --fullscreen`
[!NOTE] The help page can be any documentation/project/tutorial page, not just a man page, but documentation pages are preferred.
There is a linter that enforces the format above. It is run automatically on every pull request, but you may install it to test your contributions locally before submitting them:
npm install --global tldr-lint
tldr-lint path/to/tldr_page.md
For other ways to use tldr-lint
, such as linting an entire directory, check out (what else!)
tldr tldr-lint
. Alternatively, you can also use its alias tldrl
.
Your client may be able to preview a page locally using the --render
flag:
tldr --render path/to/tldr_page.md
If a command can be called with alternative names (like vim
can be called by vi
), alias pages can be created to point the user to the original command name.
# command_name
> This command is an alias of `original-command-name`.
> More information: <https://example.com/original/command/help/page>.
- View documentation for the original command:
`tldr original_command_name`
Example:
# vi
> This command is an alias of `vim`.
- View documentation for the original command:
`tldr vim`
--help
rather than -h
) when they are cross-platform compatible (intended to work the same across multiple platforms).-h
).=
) to separate options from their arguments (i.e. use --opt arg
instead of --opt=arg
), unless the program does not support it.User-provided values should use the {{placeholder}}
syntax
in order to allow tldr
clients to highlight them.
Keep the following guidelines in mind when choosing placeholders:
{{path/to/source_file}}
or {{path/to/wallet.txt}}
.snake_case
for multi-word placeholders.iostat {{1..infinity}}
rather than iostat {{2}}
.
input swipe {{x_position}} {{y_position}} {{x_position}} {{y_position}} {{seconds}}
instead of input swipe {{-infinity..infinity}} {{-infinity..infinity}} {{-infinity..infinity}} {{-infinity..infinity}} {{1..infinity}}
.{{filename}}
when just file name is expected.{{path/to/<placeholder>}}
,
except when the location is implicit.get {{/path/to/remote_file}}
.{{path/to/file_or_directory}}
.unrar x {{path/to/compressed.rar}}
.{{.ext}}
, but only if an extension is required.
For instance, in find.md
's example "Find files by extension" (find {{path/to/root}} -name '{{*.ext}}'
)
using {{*.ext}}
explains the command without being unnecessarily specific;
while in wc -l {{path/to/file}}
using {{path/to/file}}
(without extension) is sufficient.{{placeholder1 placeholder2 ...}}
.
For instance, if multiple paths are expected {{path/to/directory1 path/to/directory2 ...}}
can be used.{{placeholder1|placeholder2|...}}
.
If there are more than 5 possible values use |...
after the last item.ellipsis
.It's up to the program to decide how to handle duplicating values, provided syntax tells no info about whether items are mutually exclusive or not.
ddrescue --force --no-scrape /dev/sda /dev/sdb
write ddrescue --force --no-scrape {{/dev/sdX}} {{/dev/sdY}}
and use the {{/dev/sdXY}}
placeholder for block devices instead of /dev/sda1
.In general, placeholders should make it as intuitive as possible to figure out how to use the command and fill it in with values.
Technical wording on description lines should use the backtick
syntax.
Use backticks on the following:
package.json
, /etc/package.json
..dll
.ls
.stdout
, stdin
, stderr
. Do not use the full names (e.g. standard output).A sketching and painting program designed for digital artists
instead of Krita is a sketching and painting program designed for digital artists
) unless the program name differs from the executable name (e.g. rg
and Ripgrep).Ripgrep is a recursive line-oriented search tool
instead of Ripgrep is a recursive line-oriented CLI search tool
).For example, when writing documentation for cd
, a tool to check out and work on a specific directory in the Terminal or Command Prompt, do not write a lengthy description such as:
> `cd` is a system tool, available in Windows, macOS, and Linux, to check out a specific directory to get things done in the Command Prompt, Terminal, and PowerShell.
It should instead be simplified to make it easier for everyone to read:
> Change the current working directory.
If you are afraid the commands may differ between platforms or operating systems (e.g. Windows vs macOS), most tldr pages clients will choose the most suitable version of the command.
In this case, the information of the Windows version of cd
(stored in pages/windows/cd.md
) will be displayed by default to Windows users, and a generic/common version (stored in pages/common/cd.md
) will be displayed for Linux, macOS, and other platforms.
When writing descriptions for command examples, check for any grammatical errors. Go to the specified directory
is preferred instead of:
Going to the specified directory
(should not be in present participle form)This command will go to the specified directory
(it is clear that this example works for this comment)Let's go to the specified directory!
Directory change
(use the active form instead of passive, if possible)For instance, instead of Listing all files:
, List all files:
can be be used as the example's description below:
- Listing all files:
`ls`
Delete the Git branches, tags and remotes.
The example above does not use a serial comma, so this could mean one of two things:
tags
and remotes
.This can be resolved by inserting a comma before the "and" or "or" in the final element in the list.
Delete the Git branches, tags, and remotes.
On the More information
link line, we prefer linking to the author's provided documentation of the command line reference or man page. When not available, use https://manned.org as the default fallback for all platforms (except osx
and some BSD platforms).
All links must be enclosed inside angular brackets (<
and >
) for proper rendering in clients.
We prefer translations to use the more information link of the English page by default.
When a utility or distribution has versioned links for the packages, we prefer linking to the most recent version of documentation (i.e. latest
) or none if the website automatically redirects to the latest version of the documentation.
For example, use:
When linking pages to the Microsoft Learn links, remove the locale from the address as the website will automatically redirect to the reader's preferred locale setting. For example, Use https://learn.microsoft.com/windows-server/administration/windows-commands/cd instead of https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/cd.
When Chinese words, Latin words and Arabic numerals are written in the same sentence, more attention must be paid to copywriting.
The following guidelines are applied to Chinese (zh
) and traditional Chinese (zh_TW
) pages:
Place one space before/after English words and numbers.
列出所有 docker 容器
rather than 列出所有docker容器
.宽度为 50 个字
rather than 宽度为50个字
.Place one space between numbers and units except degrees and percentages.
容量 50 MB
rather than 容量 50MB
.50°C
and 50%
rather than 50 °C
and 50 %
.No additional spaces before/after full-width punctuations.
开启 shell,进入交互模式
rather than 开启 shell ,进入交互模式
Use full-width punctuations except for long Latin clauses.
嗨,你好。
rather than 嗨, 你好.
Use a half-width punctuation to end a sentence when the last character is half-width.
将代码转化为 Python 3.
rather than 将代码转化为 Python 3。
Use precise form for technical terms, and do not use unofficial Chinese abbreviations.
Facebook
rather than facebook
, fb
or 脸书
.In order to maintain readability and normalization, please comply with the 6 rules above as much as possible when translating pages into Chinese.
For more information and examples of Chinese-specific rules, check out Chinese Copywriting Guidelines.
When translating pages to Indonesian, please keep in mind that we expect tldr
pages to be easy to read for both types of Indonesian audiences, which are:
unduh
for download
, awakutu
for debugging
, and muat ulang
for reboot
.
download
for download
, debugging
for debugging
, and reboot
for reboot
.The segmentation of these audiences is clearly noted on Firefox Public Data Report:
For most countries in the top 10, the majority (>90%) of users have their language set to the local language, with a notable exception in Indonesia, which has about 80% English (US) and 20% Indonesian.
First, command and example descriptions on pages in Indonesian must be written without using active verb forms (i.e. those with ber-
and me-
prefixes). This means that sentences such as:
Mengunduh sebuah file ke dalam suatu direktori (i.e. Downloading a file into a directory)
is considered incorrect. The correct form of the sentence should be:
Unduh sebuah file ke dalam suatu direktori
Second, we recommend using the following forms of technical terms to make translated pages easier to read for both types of Indonesian audiences. Some of them may be used as-is, but others must be rewritten using Indonesian standard terms.
English | Indonesian | Consideration(s) |
---|---|---|
App / Application | Aplikasi | The abbreviated word apl. is not common to some readers. |
Boot, Reboot | Muat, Muat ulang | These words are the same for load and reload . See notes on the bottom section. |
Client | Klien | |
Command-line | Command-line | Using the word as-is is preferred over baris perintah or alat berbasis mekanisme baris perintah (command-line tool ). |
Commit (Git) | Commit | |
Compile, Compiler | Kompilasikan, Pengompilasi | kompilasi is officially considered as noun. Requires a -kan suffix to convert into a verb. |
Debugger | Debugger | Preferred over pengawakutu (peng -awakutu ) which is unfamiliar to some readers. |
Device | Perangkat | Preferred over peranti . |
Disc | Disc | Preferred over cakram which is unfamiliar by some readers. Use specific words if possible (e.g. CD or DVD). |
Execute / Run (a program...) | Jalankan | Preferred over eksekusikan which is longer to read and write. |
File | File | Preferred over berkas which may be unfamiliar by some readers. |
Generate | Buat | Preferred over hasilkan . Example context: Buat laporan baru . |
Hardware | Perangkat Keras | Preferred over peranti . |
Image (as picture or visual image) | Gambar | Do not confuse with image as means of storage. |
Image (as means of storage, such as CD, ISO, and Docker) | Image | Another recommended word, citra , is not officially recognized for computing. |
Initialize, Reinitialize | Inisialisasikan, Inisialisasikan Ulang | The word inisialisasi is officially considered as noun. Requires a -kan suffix to convert into a verb. |
Interpreter | Interpreter | Preferred over penerjemah which is also commonly used to describe translator . |
Install, Reinstall | Pasang, Pasang Ulang | Preferred over instal which is not considered a standard word. |
Load, Reload | Muat, Muat ulang | These words are the same for boot and reboot . See notes in the bottom section. |
Options / Preferences (macOS) / Settings | Pengaturan | Preferred over opsi . |
Server | Server | Preferred over peladen or pelayan , which are less common when used in computing contexts. |
Service | Layanan | The Indonesian standard word is acceptable here. |
Shell (command-line interface) | Syel | The Indonesian standard word is acceptable here. |
Software | Perangkat Lunak | Preferred over peranti . |
Start, Restart | Mulai, Mulai Ulang / Nyalakan, Nyalakan Ulang | See notes on the bottom section. |
Update | Perbarui | Do not confuse with upgrade . |
Upgrade | Tingkatkan | Do not confuse with update . |
When translating sentences that contain the word boot
and load
together, please add the context of the item that is being booted and/or loaded, so the use of the muat
word may not be ambiguous. For example, when translating:
Load configuration from a specific file after reboot
Instead of translating the sentence into:
Muat konfigurasi dari file yang ditentukan setelah muat ulang
Add detailed contexts to remove ambiguity (notice the highligted word):
Muat konfigurasi dari file yang ditentukan setelah pengguna memuat ulang sistem operasi
Similarly, for the word start
/ mulai
Mulai proses server web (Start the web server process)
To ensure that the sentence may not be confused with start processing the web server
, you can use other words such as nyalakan
:
Nyalakan proses server web
Command and example descriptions on pages in French must use the third person singular present indicative tense (présent de l'indicatif à la troisième personne du singulier).
For example, use Extrait une archive
rather than Extraire une archive
or Extrais une archive
.