<feed xmlns='http://www.w3.org/2005/Atom'>
<title>sisudoc-spine-samples/org, branch main</title>
<subtitle>SiSU spine markup samples</subtitle>
<link rel='alternate' type='text/html' href='https://git.sisudoc.org/sisudoc-spine-samples/'/>
<entry>
<title>0.25.0</title>
<updated>2026-09-22T22:25:09+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-09-22T22:21:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sisudoc.org/sisudoc-spine-samples/commit/?id=7dd84020fff3c4708cd015e4302da6abbbcfe365'/>
<id>7dd84020fff3c4708cd015e4302da6abbbcfe365</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>tools: po-lint, structural checks on sisu markup</title>
<updated>2026-09-22T22:25:07+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-09-18T17:27:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sisudoc.org/sisudoc-spine-samples/commit/?id=8b31f52ccd56dbd823e8a3a489cf458d91b4fb3e'/>
<id>8b31f52ccd56dbd823e8a3a489cf458d91b4fb3e</id>
<content type='text'>
A translator working in a .po file is editing markup as well as prose,
and the ways that goes wrong are few and specific. Each rule was
measured against the nine languages here before being kept.

Errors, which change the document's structure and so its object
numbering:

  empty-after-trim  a whitespace-only msgstr. sisu reads a
                    whitespace-only line as blank, the paragraph
                    ceases to exist, and every object number after
                    it shifts. Leaving the msgstr empty is the fix:
                    untranslated falls back to the source text and
                    the object survives.
  heading-mismatch  heading markup on one side only, so a
                    paragraph becomes a heading and the document
                    grows a section the source does not have.
  blank-line        a blank line added or removed inside a msgstr,
                    splitting one object into two.
  yaml-key          a header entry whose yaml keys differ from the
                    source. The header is configuration: translate
                    the values, never the keys.

Warnings, which change what the text says or links to but not its shape:
a ${} substitution, a {text}#anchor target, or an inline markup count
differing between source and translation.

Fuzzy entries are skipped. Fuzzy already means not used and needing
review, and po4a will not put one in the output, so checking them
reports faults nobody relies on.

Over 6653 translated entries the errors fire twice, and both are real:
the ja msgstr of " " that costs two objects from ocn 818, and the pl
paragraph translated as "2~ Wcięcia" that becomes a heading.

Two rules needed calibrating rather than guessing. The anchor rule first
reported 293 by taking a full stop after a link as part of the anchor;
corrected it reports 69. The yaml-key rule first reported 20, every one
of them prose from the style guide reading "produces: *{foo}* or
!{foo}!", which any shape test takes for a key; it now applies only to a
master file's catalogue, where a document header is the only thing that
can appear.

Exit is 1 on any error and 0 otherwise, so it can gate a commit.

(assisted by Claude-Code)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
A translator working in a .po file is editing markup as well as prose,
and the ways that goes wrong are few and specific. Each rule was
measured against the nine languages here before being kept.

Errors, which change the document's structure and so its object
numbering:

  empty-after-trim  a whitespace-only msgstr. sisu reads a
                    whitespace-only line as blank, the paragraph
                    ceases to exist, and every object number after
                    it shifts. Leaving the msgstr empty is the fix:
                    untranslated falls back to the source text and
                    the object survives.
  heading-mismatch  heading markup on one side only, so a
                    paragraph becomes a heading and the document
                    grows a section the source does not have.
  blank-line        a blank line added or removed inside a msgstr,
                    splitting one object into two.
  yaml-key          a header entry whose yaml keys differ from the
                    source. The header is configuration: translate
                    the values, never the keys.

Warnings, which change what the text says or links to but not its shape:
a ${} substitution, a {text}#anchor target, or an inline markup count
differing between source and translation.

Fuzzy entries are skipped. Fuzzy already means not used and needing
review, and po4a will not put one in the output, so checking them
reports faults nobody relies on.

Over 6653 translated entries the errors fire twice, and both are real:
the ja msgstr of " " that costs two objects from ocn 818, and the pl
paragraph translated as "2~ Wcięcia" that becomes a heading.

Two rules needed calibrating rather than guessing. The anchor rule first
reported 293 by taking a full stop after a link as part of the anchor;
corrected it reports 69. The yaml-key rule first reported 20, every one
of them prose from the style guide reading "produces: *{foo}* or
!{foo}!", which any shape test takes for a key; it now applies only to a
master file's catalogue, where a document header is the only thing that
can appear.

Exit is 1 on any error and 0 otherwise, so it can gate a commit.

(assisted by Claude-Code)
</pre>
</div>
</content>
</entry>
<entry>
<title>0.24.0</title>
<updated>2026-09-22T21:58:18+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-09-17T16:36:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sisudoc.org/sisudoc-spine-samples/commit/?id=11cf425cefbed3f434171e3701bbae78580f9b8f'/>
<id>11cf425cefbed3f434171e3701bbae78580f9b8f</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>homepage, touch</title>
<updated>2026-09-10T15:03:42+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-09-10T14:58:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sisudoc.org/sisudoc-spine-samples/commit/?id=3458f7883e16918faf7db51748e4ab7898bf01b8'/>
<id>3458f7883e16918faf7db51748e4ab7898bf01b8</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>sisu_markup.sst modest update</title>
<updated>2026-09-10T00:59:38+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-09-10T00:59:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sisudoc.org/sisudoc-spine-samples/commit/?id=b2bcd9f6297b581f6b6db1d25e87e3c69c171894'/>
<id>b2bcd9f6297b581f6b6db1d25e87e3c69c171894</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>homepage description touch</title>
<updated>2026-05-28T17:16:27+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-05-28T17:16:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sisudoc.org/sisudoc-spine-samples/commit/?id=f245b1f010cff053df1192f0788b649158fc6999'/>
<id>f245b1f010cff053df1192f0788b649158fc6999</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>homepage reorganize/update - revisit</title>
<updated>2026-05-22T20:01:11+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-05-22T19:59:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sisudoc.org/sisudoc-spine-samples/commit/?id=424763ed06ca8820b287e92c56a1d6aaf97d42a4'/>
<id>424763ed06ca8820b287e92c56a1d6aaf97d42a4</id>
<content type='text'>
(assisted by Claude-Code)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
(assisted by Claude-Code)
</pre>
</div>
</content>
</entry>
<entry>
<title>org headers rearranged (&amp; odd hilighting issue)</title>
<updated>2026-05-04T18:31:26+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-05-04T18:28:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sisudoc.org/sisudoc-spine-samples/commit/?id=0ca1dec3490efd1b3b64351cf2dd51a85b8b49a6'/>
<id>0ca1dec3490efd1b3b64351cf2dd51a85b8b49a6</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>editorconfig added</title>
<updated>2026-04-30T01:39:34+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-04-30T00:53:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sisudoc.org/sisudoc-spine-samples/commit/?id=935340c927c12366db3cb34514726c374db2d264'/>
<id>935340c927c12366db3cb34514726c374db2d264</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>nix keeping: nix-shell, nix-build derivation.nix</title>
<updated>2026-04-11T01:18:31+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-04-11T01:18:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sisudoc.org/sisudoc-spine-samples/commit/?id=6cff0e3c0bea4e7bee304c411d63de26a6a9af05'/>
<id>6cff0e3c0bea4e7bee304c411d63de26a6a9af05</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
