^SL - Set Mode and Language (for Real-Time Clock)
Chooses which moment the clock reports and which language its month and day names are printed in.
^SL answers two questions about a clock field that nothing else can. It
selects when the printer reads the time, and in which language it spells the
month and day names. The first answer matters only on a multi-copy run. The
default mode reads the clock once, as the format arrives, so every copy of a
hundred-label job carries the same timestamp. With T, the printer stamps each
copy as the copy reaches the print queue.
Syntax
^SLa,bSupport
Every documented parameter renders the same output Labelary produces.
Labelary renders this command.
Parameters
aClock modeoptional · one of a setWhich moment the clock reports: the parse of the format, its entry into the print queue, or the last tick of a fixed-resolution clock.
- Default
- S
- Invalid value
- not possible — any value is accepted. No mode changes a rendered label, because one render reads one instant (measured 2026-08-16).
- Test coverage
- No documented value is exercised by a test (S, T, 0, 1-999).
S- The time at
^XA, when the printer starts to format the label, so every copy carries the same time (default) T- The time read when the label enters the print queue, so it advances copy by copy
0- A one-second tolerance, on the enhanced clock of firmware V60.13.0.10 and above
1-999- The time at the last tick of a clock with this resolution, in seconds
bLanguageoptional · one of a setLanguage used for month and day names substituted into a ^FC field. Numbers 2 and 10 are the guide's two Spanish variants.
- Default
- 1 (English)
- Invalid value
- discarded, and the current value is kept. A number outside 1-20 keeps the language already set. An omitted or non-numeric argument resets to English (measured 2026-08-16).
- Test coverage
- Bounds pinned: past what the shape can hold (99999999999999999999). Values exercised: 3. Not exercised: 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20. The invalid-value rule is pinned by 2 tests.
1- English (default)
2- Spanish (Spanish 1 in the guide)
3- French
4- German
5- Italian
6- Norwegian
7- Portuguese
8- Swedish
9- Danish
10- Spanish (Spanish 2 in the guide)
11- Dutch
12- Finnish
13- Japanese
14- Korean
15- Simplified Chinese
16- Traditional Chinese
17- Russian
18- Polish
19- Czech
20- Romanian
Behavior
The guide requires ^SL before the first ^FO. The whole format reads the
setting, not one field, so one is enough.
The language reaches only the substituted parts of a field. It governs the month
and weekday names that %B, %A and their relatives expand to. The printer
prints the literal text around them byte for byte, so a French label still needs
French label text. Labelary renders %B %d, %Y under ^SLT,3 as novembre 12, 2023, and %A as dimanche (verified 2026-07-30).
One firmware rule sits behind the two modes and the numeric resolution. From
V60.13.0.10 the enhanced clock rejects a time field more than sixty seconds old,
and renders the image again instead. ^SLT and ^SL60 rely on that behavior. A
numeric argument sets that tolerance to a value other than sixty seconds, and
^SLS is the one mode that accepts a stale time. The guide warns that the same
timestamp, or a jump of several seconds, can still appear across labels on a
complex format at speed. The tolerance is a bound, not a guarantee.
Tested behavior
Differences from the specification
Labelary against the ZPL II guide
Where Labelary — our compatibility target — behaves differently from the printed specification.
- The 2006 guide's language list stops at 12, Finnish. Languages 13 to 20 (Japanese, Korean, Simplified and Traditional Chinese, Russian, Polish, Czech and Romanian) come from Labelary's reference and newer firmware. — not pinned by a test
- The guide gives
Sas the mode default; Labelary's reference states no default for the mode. — not pinned by a test
zpl.tools against the ZPL II guide
Where our renderer behaves differently from the specification.
- The guide's mode chooses which moment the printer reads. One render reads one instant, so every mode gives the same label. Labelary agrees (measured 2026-08-16). — not pinned by a test
Example
A French date field on a fixed clock, so the render is repeatable. Language 3 is French, and ^ST pins the moment:
^XA
^ST11,12,2023,22,50,00,M
^SLT,3
^FO40,40^A0N,40,40^FC%^FD%B %d, %Y^FS
^FO40,110^A0N,40,40^FC%^FD%A^FS
^XZ
Related commands
^FCField ClockMarks characters in the field data as real-time-clock placeholders.^STSet Date and Time (for Real-Time Clock)Sets the printer's primary clock to an explicit date and time.^SOSet Offset (for Real-Time Clock)Defines the secondary or tertiary clock as a fixed offset from the primary one, for a second time zone or an expiry date.^KDSelect Date and Time Format (for Real-Time Clock)Chooses the date and time layout on the printer's front panel and configuration labels.
^KD - Select Date and Time Format (for Real-Time Clock)
Chooses the date and time layout shown on the printer's front panel and on its configuration labels.
^SO - Set Offset (for Real-Time Clock)
Defines the secondary or tertiary clock as a fixed offset from the primary one, for printing a second time zone or an expiry date.