On Mon, Jun 8, 2020 at 3:38 PM Shourya Shukla <shouryashukla.oo@xxxxxxxxx> wrote: > On 08/06 02:23, Eric Sunshine wrote: > > Although this change seems to increase the "sentence lego quotient", it > > should be reasonably safe, as the reason for removal is a distinct > > clause, not strictly related to the prefix. Moreover, the "worktrees" in > > "Removing worktrees/%s:" is a path literal which ought not be localized, > > so by factoring it out, we can more easily avoid exposing that path > > fragment to translators. > > Could you explain the above paragraph just a bit more? The English is > confusing me a bit. Which part is confusing you? The "sentence lego" bit or the bit about not wanting translators touching a path literal? Or something else? The path element bit is easy: A literal path, such as ".git/worktrees/foo" should not be translated to a user's local language. Sentence lego refers to the process of composing text from several pieces. Doing so can make it difficult for a translator to localize it to a particular language because the standalone pieces don't necessarily provide sufficient context for a proper translation. For instance, this example is from [1]: Translatable strings should be entire sentences. It is often not possible to translate single verbs or adjectives in a substitutable way. printf ("File %s is %s protected", filename, rw ? "write" : "read"); Most translators will not look at the source and will thus only see the string "File %s is %s protected", which is unintelligible. Change this to printf (rw ? "File %s is write protected" : "File %s is read protected", filename); This way the translator will not only understand the message, she will also be able to find the appropriate grammatical construction. A French translator for example translates "write protected" like "protected against writing". [1]: https://www.gnu.org/software/gettext/manual/html_node/Preparing-Strings.html