Michael J Gruber <git@xxxxxxxxx> writes: > Traditionally, reflog messages were never translated, in particular not > on storage. True, and it must (unfortunately) stay to be the way, because tools (like @{-<n>} syntax) expect to be able to parse out what we write. > Due to the switch of more parts of git to the sequencer, old changes in > the sequencer code may lead to recent changes in git's behaviour. E.g.: > c28cbc5ea6 ("sequencer: mark action_name() for translation", 2016-10-21) > marked several uses of `action_name()` for translation. Recently, this > lead to a partially translated reflog: > > `rebase: fast-forward` is translated (e.g. in de to `Rebase: Vorspulen`) > whereas other reflog entries such as `rebase (pick):` remain > untranslated as they should be. > > Change the relevant line in the sequencer so that this reflog entry > remains untranslated, as well. Good move, I would have to say X-<. In the longer term, we need to transition to a new version of reflog message, where "git reflog" output can (meaning: with an option) or does (meaning: by default) show localized message, but the internal machinery as well as scripts can ask to see an untranslated message. We would need to teach the reflog machinery to understand a reflog message specially formatted (e.g. with an unusual prefix like "::v2::"), from which both untranslated and translated messages can be parsed out or generated. Codepaths that write reflog messages may need to be adjusted to send both versions to the ref machinery. Looking at recent reflog entries I happen to have in "git reflog --format="%gs" HEAD@{now}" checkout: moving from 219fe53025fdf5c3fb79d289a36eb2cad3f38a04 to master checkout: moving from master to next^0 commit (amend): fsmonitor: option to allow fsmonitor to run against network-mounted repos checkout: moving from d5eaf969c17c196268d9db7af50f6767ec3a3d0a to ed/fsmonitor-on-network-disk am: fsmonitor: option to allow fsmonitor to run against network-mounted repos merge @{-1}: Merge made by the 'ort' strategy. checkout: moving from ll/disk-usage-humanise to seen am: rev-list: support human-readable output for `--disk-usage` checkout: moving from master to ll/disk-usage-humanise one relatively easy way to do so may be to store the printf-like format string, possibly limiting to %s and nothing else, e.g. "checkout: moving from %s to %s" "am: %s" "merge %s: Merge made by the '%s' strategy" together with the parameters to fill in these %s blanks, as a N-tuple of strings, i.e. ("checkout: moving from %s to %s", "219fe53025fdf5c3fb79d289a36eb2cad3f38a04", "master") and then serialize them into a single long string (with that special prefix to allow us notice the format). But I'll leave the details of how the new format can be made to allow storing raw and translated messages. The review thread of this patch is not a good place or time to discuss it. Thanks.