l10n: add .gitattributes to simplify location filtering

To simplify the location filtering process for l10n contributors when committing po/XX.po files, add filter attributes for selected PO files to the repository. This ensures all contributors automatically get the same filter configuration without manual setup in .git/info/attributes. The default filter (gettext-no-location) is applied to all .po files except: - Legacy, unmaintained PO files that still contain location comments. Leaving the filter off avoids index vs working-tree discrepancies for these files. The CI pipeline will report an error when future updates touch these legacy files. - Some PO files use a different filter that strips only line numbers from location comments while keeping filenames. Contributors still need to manually define the filter drivers via git-config as documented in po/README.md. Four PO files that use location filtering (po/ca.po, po/es.po, po/ga.po, po/ru.po) were batch-modified so their on-disk format matches the filter output (e.g. line wrapping), avoiding index vs working-tree mismatch. Additionally, po/README.md has been reorganized: the material on preparing location-less PO files for commit has been moved from "Updating a XX.po file" to a separate "Preparing a XX.po file for commit" section. This prevents AI agents from introducing unrelated operations when updating PO files. Signed-off-by: Jiang Xin <worldhello.net@gmail.com>

Jiang Xin committed Feb 4, 2026 at 11:39 UTC 3a14bcfec8cd606371e0e1bd0054bbe22f539cb1
6 files changed +161 -119
po/.gitattributes new
+35
@@ -0,0 +1,35 @@
1 +# Git Attributes for PO Files
2 +#
3 +# This file configures Git filters to automatically strip location information
4 +# from PO files when committing, producing cleaner diffs and saving repository
5 +# space.
6 +#
7 +# Two filter types are used:
8 +# 1. gettext-no-location: Strips both filenames and line numbers
9 +# (e.g., removes "#: main.c:123" entirely)
10 +# 2. gettext-no-line-number: Preserves filenames but removes line numbers, which
11 +# requires gettext 0.20 or higher
12 +# (e.g., "#: main.c:123" becomes "#: main.c")
13 +#
14 +# See `po/README.md` for instructions on setting up the required filter drivers.
15 +
16 +# Default: Strip the whole location comments for all .po files
17 +*.po filter=gettext-no-location
18 +
19 +# Legacy, unmaintained PO files: filter disabled to avoid index vs
20 +# working-tree mismatch (these files still have location comments).
21 +el.po -filter
22 +is.po -filter
23 +it.po -filter
24 +ko.po -filter
25 +pl.po -filter
26 +pt_PT.po -filter
27 +
28 +# These files use gettext-no-line-number (keep filenames, strip line
29 +# numbers). The choice is per l10n team preference. Requires gettext 0.20+.
30 +# The only benefit is locating source files from location comments when
31 +# the .po file is not updated from the POT via make po-update.
32 +ca.po filter=gettext-no-line-number
33 +id.po filter=gettext-no-line-number
34 +zh_CN.po filter=gettext-no-line-number
35 +zh_TW.po filter=gettext-no-line-number
po/README.md
+39 -32
@@ -159,38 +159,6 @@ It will:
159 and these location lines will help translation tools to locate
160 translation context easily.
161
162 -Once you are done testing the translation (see below), it's better
163 -to commit a location-less "po/XX.po" file to save repository space
164 -and make a user-friendly patch for review.
165 -
166 -To save a location-less "po/XX.po" automatically in repository, you
167 -can:
168 -
169 -First define a new attribute for "po/XX.po" by appending the following
170 -line in ".git/info/attributes":
171 -
172 -```
173 -/po/XX.po filter=gettext-no-location
174 -```
175 -
176 -Then define the driver for the "gettext-no-location" clean filter to
177 -strip out both filenames and locations from the contents as follows:
178 -
179 -```shell
180 -git config --global filter.gettext-no-location.clean \
181 - "msgcat --no-location -"
182 -```
183 -
184 -For users who have gettext version 0.20 or higher, it is also possible
185 -to define a clean filter to preserve filenames but not locations:
186 -
187 -```shell
188 -git config --global filter.gettext-no-location.clean \
189 - "msgcat --add-location=file -"
190 -```
191 -
192 -You're now ready to ask the l10n coordinator to pull from you.
193 -
162
163 ## Fuzzy translation
164
@@ -229,6 +197,45 @@ git-po-helper check-commits <rev-list-opts>
197 ```
198
199
200 +## Preparing a "XX.po" file for commit
201 +
202 +Once you are done testing the translation, it's better to commit a
203 +location-less "po/XX.po" file to save repository space and make a
204 +user-friendly patch for review.
205 +
206 +To save a location-less "po/XX.po" automatically in the repository,
207 +follow these steps:
208 +
209 +First, check which filter is configured for your "po/XX.po" file:
210 +
211 +```
212 +git check-attr filter po/XX.po
213 +```
214 +
215 +The filter configuration is defined in the "po/.gitattributes" file.
216 +
217 +Then define the driver for the filter. Most languages use the
218 +"gettext-no-location" clean filter, which strips out both filenames and line
219 +numbers from location comments. To set this up, run the following command:
220 +
221 +```shell
222 +git config --global filter.gettext-no-location.clean \
223 + "msgcat --no-location -"
224 +```
225 +
226 +Some PO files use the "gettext-no-line-number" clean filter, which keeps
227 +filenames but strips line numbers. This filter requires gettext 0.20 or
228 +later. The only benefit is being able to locate source files from location
229 +comments when the .po file is not updated from the POT via `make po-update`.
230 +
231 +```shell
232 +git config --global filter.gettext-no-line-number.clean \
233 + "msgcat --add-location=file -"
234 +```
235 +
236 +You're now ready to ask the l10n coordinator to pull from you.
237 +
238 +
239 ## Marking strings for translation
240
241 (This is done by the core developers).
po/ca.po
+24 -24
@@ -512,8 +512,8 @@ msgstr ""
512 #, c-format
513 msgid "Discard mode change from index and worktree [y,n,q,a,d%s,?]? "
514 msgstr ""
515 -"Descarta el canvi de mode de l'índex i de l'arbre de treball [y,n,q,a,d"
516 -"%s,?]? "
515 +"Descarta el canvi de mode de l'índex i de l'arbre de treball "
516 +"[y,n,q,a,d%s,?]? "
517
518 #: add-patch.c
519 #, c-format
@@ -3879,11 +3879,11 @@ msgstr "HEAD no trobat sota refs/heads!"
3879
3880 #: builtin/branch.c
3881 msgid ""
3882 -"branch with --recurse-submodules can only be used if submodule."
3883 -"propagateBranches is enabled"
3882 +"branch with --recurse-submodules can only be used if "
3883 +"submodule.propagateBranches is enabled"
3884 msgstr ""
3885 -"la branca amb --recurse-submodules només es pot utilitzar si submodule."
3886 -"propagateBranches està habilitat"
3885 +"la branca amb --recurse-submodules només es pot utilitzar si "
3886 +"submodule.propagateBranches està habilitat"
3887
3888 #: builtin/branch.c
3889 msgid "--recurse-submodules can only be used to create branches"
@@ -7983,11 +7983,11 @@ msgstr "el protocol no admet --negotiate-only, se surt"
7983
7984 #: builtin/fetch.c
7985 msgid ""
7986 -"--filter can only be used with the remote configured in extensions."
7987 -"partialclone"
7986 +"--filter can only be used with the remote configured in "
7987 +"extensions.partialclone"
7988 msgstr ""
7989 -"--filter només es pot utilitzar amb el remot configurat en extensions."
7990 -"partialclone"
7989 +"--filter només es pot utilitzar amb el remot configurat en "
7990 +"extensions.partialclone"
7991
7992 #: builtin/fetch.c
7993 msgid "--atomic can only be used when fetching from one remote"
@@ -11436,8 +11436,8 @@ msgid ""
11436 "| -C) <object>] [<object>] [-e]"
11437 msgstr ""
11438 "git notes [--ref <referència-notes>] add [-f] [--allow-empty] [--"
11439 -"[no-]separator|--separator=<salt-paràgraf>] [--[no-]stripspace] [-m <msg> | -"
11440 -"F <fitxer> | (-c | -C) <objecte>] [<objecte>]"
11439 +"[no-]separator|--separator=<salt-paràgraf>] [--[no-]stripspace] [-m <msg> | "
11440 +"-F <fitxer> | (-c | -C) <objecte>] [<objecte>]"
11441
11442 #: builtin/notes.c
11443 msgid "git notes [--ref <notes-ref>] copy [-f] <from-object> <to-object>"
@@ -11451,8 +11451,8 @@ msgid ""
11451 "| -C) <object>] [<object>] [-e]"
11452 msgstr ""
11453 "git notes [--ref <referència-notes>] append [--allow-empty] [--"
11454 -"[no-]separator|--separator=<salt-paràgraf>] [--[no-]stripspace] [-m <msg> | -"
11455 -"F <fitxer> | (-c | -C) <objecte>] [<objecte>] [-e]"
11454 +"[no-]separator|--separator=<salt-paràgraf>] [--[no-]stripspace] [-m <msg> | "
11455 +"-F <fitxer> | (-c | -C) <objecte>] [<objecte>] [-e]"
11456
11457 #: builtin/notes.c
11458 msgid "git notes [--ref <notes-ref>] edit [--allow-empty] [<object>]"
@@ -13231,8 +13231,8 @@ msgstr "--empty=ask és obslolet; utilitzeu '--empty=stop' en el seu lloc."
13231 #: builtin/rebase.c
13232 #, c-format
13233 msgid ""
13234 -"unrecognized empty type '%s'; valid values are \"drop\", \"keep\", and \"stop"
13235 -"\"."
13234 +"unrecognized empty type '%s'; valid values are \"drop\", \"keep\", and "
13235 +"\"stop\"."
13236 msgstr ""
13237 "tipus buit «%s» no reconegut; els valors vàlids són \"drop\", \"keep\" i "
13238 "\"stop\"."
@@ -14440,8 +14440,8 @@ msgid ""
14440 msgstr ""
14441 "Els reempaquetaments incrementals són incompatibles amb els índexs de mapes "
14442 "de bits. Useu\n"
14443 -"--no-write-bitmap-index o inhabiliteu el paràmetre de configuració pack."
14444 -"writeBitmaps."
14443 +"--no-write-bitmap-index o inhabiliteu el paràmetre de configuració "
14444 +"pack.writeBitmaps."
14445
14446 #: builtin/repack.c
14447 msgid "could not start pack-objects to repack promisor objects"
@@ -19350,11 +19350,11 @@ msgstr ""
19350 #: commit-graph.c
19351 #, c-format
19352 msgid ""
19353 -"attempting to write a commit-graph, but 'commitGraph."
19354 -"changedPathsVersion' (%d) is not supported"
19353 +"attempting to write a commit-graph, but 'commitGraph.changedPathsVersion' "
19354 +"(%d) is not supported"
19355 msgstr ""
19356 -"s'ha intentat escriure un graf de comissió, però no s'admet 'commitGraph."
19357 -"changedPathsVersion' (%d)"
19356 +"s'ha intentat escriure un graf de comissió, però no s'admet "
19357 +"'commitGraph.changedPathsVersion' (%d)"
19358
19359 #: commit-graph.c
19360 msgid "too many commits to write graph"
@@ -22940,8 +22940,8 @@ msgstr "el fitxer de l'índex multipaquet %s és massa petit"
22940 #, c-format
22941 msgid "multi-pack-index signature 0x%08x does not match signature 0x%08x"
22942 msgstr ""
22943 -"la signatura de l'índex multipaquet 0x%08x no coincideix amb la signatura 0x"
22944 -"%08x"
22943 +"la signatura de l'índex multipaquet 0x%08x no coincideix amb la signatura "
22944 +"0x%08x"
22945
22946 #: midx.c
22947 #, c-format
po/es.po
+17 -17
@@ -391,8 +391,8 @@ msgstr ""
391 #, c-format, perl-format
392 msgid "Apply mode change to index and worktree [y,n,q,a,d%s,?]? "
393 msgstr ""
394 -"¿Aplicar cambio de modo para el índice y el árbol de trabajo [y,n,q,a,"
395 -"d%s,?]? "
394 +"¿Aplicar cambio de modo para el índice y el árbol de trabajo "
395 +"[y,n,q,a,d%s,?]? "
396
397 #, c-format, perl-format
398 msgid "Apply deletion to index and worktree [y,n,q,a,d%s,?]? "
@@ -2294,9 +2294,9 @@ msgid ""
2294 "=<term>] [--no-checkout] [--first-parent] [<bad> [<good>...]] [--] "
2295 "[<paths>...]"
2296 msgstr ""
2297 -"git bisect--helper --bisect-start [--term-{new,bad}=<término> --term-{old,"
2298 -"good}=<término>] [--no-checkout] [--first-parent] [<malo> [<bueno>...]] [--] "
2299 -"[<rutas>...]"
2297 +"git bisect--helper --bisect-start [--term-{new,bad}=<término> --term-"
2298 +"{old,good}=<término>] [--no-checkout] [--first-parent] [<malo> [<bueno>...]] "
2299 +"[--] [<rutas>...]"
2300
2301 msgid "git bisect--helper --bisect-state (bad|new) [<rev>]"
2302 msgstr "git bisect--helper --bisect-state (bad|new) [<rev>]"
@@ -2983,11 +2983,11 @@ msgid "HEAD not found below refs/heads!"
2983 msgstr "¡HEAD no encontrado dentro de refs/heads!"
2984
2985 msgid ""
2986 -"branch with --recurse-submodules can only be used if submodule."
2987 -"propagateBranches is enabled"
2986 +"branch with --recurse-submodules can only be used if "
2987 +"submodule.propagateBranches is enabled"
2988 msgstr ""
2989 -"branch con --recurse-submodules solo se puede usar si submodule."
2990 -"propagateBranches está habilitado"
2989 +"branch con --recurse-submodules solo se puede usar si "
2990 +"submodule.propagateBranches está habilitado"
2991
2992 msgid "--recurse-submodules can only be used to create branches"
2993 msgstr "--recurse-submodules solo se puede usar para crear ramas"
@@ -5983,11 +5983,11 @@ msgid "protocol does not support --negotiate-only, exiting"
5983 msgstr "el protocolo no soporta --negotiate-only, saliendo"
5984
5985 msgid ""
5986 -"--filter can only be used with the remote configured in extensions."
5987 -"partialclone"
5986 +"--filter can only be used with the remote configured in "
5987 +"extensions.partialclone"
5988 msgstr ""
5989 -"--filter solo puede ser usado con el remoto configurado en extensions."
5990 -"partialclone"
5989 +"--filter solo puede ser usado con el remoto configurado en "
5990 +"extensions.partialclone"
5991
5992 msgid "--atomic can only be used when fetching from one remote"
5993 msgstr "--atomic solo se puede usar cuando se busca desde un control remoto"
@@ -8914,8 +8914,8 @@ msgstr "objeto esperado en el desplazamiento %<PRIuMAX> en el paquete %s"
8914
8915 msgid "disabling bitmap writing, packs are split due to pack.packSizeLimit"
8916 msgstr ""
8917 -"deshabilitando escritura bitmap, paquetes son divididos debido a pack."
8918 -"packSizeLimit"
8917 +"deshabilitando escritura bitmap, paquetes son divididos debido a "
8918 +"pack.packSizeLimit"
8919
8920 msgid "Writing objects"
8921 msgstr "Escribiendo objetos"
@@ -9489,8 +9489,8 @@ msgstr ""
9489 msgid ""
9490 "\n"
9491 "To avoid automatically configuring upstream branches when their name\n"
9492 -"doesn't match the local branch, see option 'simple' of branch."
9493 -"autoSetupMerge\n"
9492 +"doesn't match the local branch, see option 'simple' of "
9493 +"branch.autoSetupMerge\n"
9494 "in 'git help config'.\n"
9495 msgstr ""
9496 "\n"
po/ga.po
+32 -32
@@ -382,8 +382,8 @@ msgstr "Caitheamh breisiú ó innéacs agus crann oibre [y, n, q, a, d %s,?]? "
382 #, c-format
383 msgid "Discard this hunk from index and worktree [y,n,q,a,d%s,?]? "
384 msgstr ""
385 -"An bhfuil an píosa beag seo le fáil réidh ón innéacs agus ón gcrann oibre [y,"
386 -"n,q,a,d%s,?]? "
385 +"An bhfuil an píosa beag seo le fáil réidh ón innéacs agus ón gcrann oibre "
386 +"[y,n,q,a,d%s,?]? "
387
388 msgid ""
389 "y - discard this hunk from index and worktree\n"
@@ -402,8 +402,8 @@ msgstr ""
402 #, c-format
403 msgid "Apply mode change to index and worktree [y,n,q,a,d%s,?]? "
404 msgstr ""
405 -"Cuir athrú mód i bhfeidhm ar an innéacs agus ar an gcrann oibre [y,n,q,a,"
406 -"d%s,?]? "
405 +"Cuir athrú mód i bhfeidhm ar an innéacs agus ar an gcrann oibre "
406 +"[y,n,q,a,d%s,?]? "
407
408 #, c-format
409 msgid "Apply deletion to index and worktree [y,n,q,a,d%s,?]? "
@@ -413,14 +413,14 @@ msgstr ""
413 #, c-format
414 msgid "Apply addition to index and worktree [y,n,q,a,d%s,?]? "
415 msgstr ""
416 -"Cuir an breiseán i bhfeidhm ar an innéacs agus ar an gcrann oibre [y,n,q,a,"
417 -"d%s,?]? "
416 +"Cuir an breiseán i bhfeidhm ar an innéacs agus ar an gcrann oibre "
417 +"[y,n,q,a,d%s,?]? "
418
419 #, c-format
420 msgid "Apply this hunk to index and worktree [y,n,q,a,d%s,?]? "
421 msgstr ""
422 -"Cuir an píosa seo i bhfeidhm ar an innéacs agus ar an gcrann oibre [y,n,q,a,"
423 -"d%s,?]? "
422 +"Cuir an píosa seo i bhfeidhm ar an innéacs agus ar an gcrann oibre "
423 +"[y,n,q,a,d%s,?]? "
424
425 msgid ""
426 "y - apply this hunk to index and worktree\n"
@@ -3114,11 +3114,11 @@ msgid "HEAD not found below refs/heads!"
3114 msgstr "Ní fhaightear CEAD thíos na refs/heads!"
3115
3116 msgid ""
3117 -"branch with --recurse-submodules can only be used if submodule."
3118 -"propagateBranches is enabled"
3117 +"branch with --recurse-submodules can only be used if "
3118 +"submodule.propagateBranches is enabled"
3119 msgstr ""
3120 -"ní féidir brainse le --recurse-submodules a úsáid ach amháin má tá submodule."
3121 -"propagateBranches cumasaithe"
3120 +"ní féidir brainse le --recurse-submodules a úsáid ach amháin má tá "
3121 +"submodule.propagateBranches cumasaithe"
3122
3123 msgid "--recurse-submodules can only be used to create branches"
3124 msgstr "Ní féidir --recurse-submodules a úsáid ach chun brainsí a chruthú"
@@ -6034,8 +6034,8 @@ msgid ""
6034 "'strip-if-invalid' is not a valid mode for git fast-export with --signed-"
6035 "commits=<mode>"
6036 msgstr ""
6037 -"'strip-if-invalid' ní mód bailí é seo le haghaidh easpórtáil le haghaidh git fast-export le --signed-"
6038 -"commits=<mód>"
6037 +"'strip-if-invalid' ní mód bailí é seo le haghaidh easpórtáil le haghaidh git "
6038 +"fast-export le --signed-commits=<mód>"
6039
6040 #, c-format
6041 msgid ""
@@ -6067,8 +6067,8 @@ msgid ""
6067 "'strip-if-invalid' is not a valid mode for git fast-export with --signed-"
6068 "tags=<mode>"
6069 msgstr ""
6070 -"'strip-if-invalid' ní mód bailí é seo le haghaidh git fast-export le --signed-"
6071 -"tags=<mode>"
6070 +"'strip-if-invalid' ní mód bailí é seo le haghaidh git fast-export le --"
6071 +"signed-tags=<mode>"
6072
6073 #, c-format
6074 msgid ""
@@ -7048,8 +7048,8 @@ msgid "protocol does not support --negotiate-only, exiting"
7048 msgstr "ní thacaíonn an prótacal le --negotiate-only, ag scoir"
7049
7050 msgid ""
7051 -"--filter can only be used with the remote configured in extensions."
7052 -"partialclone"
7051 +"--filter can only be used with the remote configured in "
7052 +"extensions.partialclone"
7053 msgstr ""
7054 "--filter Ní féidir ach an scagaire a úsáid ach leis an iargúlta cumraithe in "
7055 "extensions.partialclone"
@@ -7584,8 +7584,8 @@ msgstr "Theip ar 'git multi-pack-index repack'"
7584 msgid ""
7585 "skipping incremental-repack task because core.multiPackIndex is disabled"
7586 msgstr ""
7587 -"ag scipeáil an tasc athphacála incriminteach mar go bhfuil core."
7588 -"multiPackIndex díchumasaithe"
7587 +"ag scipeáil an tasc athphacála incriminteach mar go bhfuil "
7588 +"core.multiPackIndex díchumasaithe"
7589
7590 msgid "failed to perform geometric repack"
7591 msgstr "theip ar athphacáil gheoiméadrach a dhéanamh"
@@ -10097,8 +10097,8 @@ msgstr ""
10097
10098 msgid "disabling bitmap writing, packs are split due to pack.packSizeLimit"
10099 msgstr ""
10100 -"scríobh bitmap a dhíchumasú, roinntear pacáistí mar gheall ar pack."
10101 -"packSizeLimit"
10100 +"scríobh bitmap a dhíchumasú, roinntear pacáistí mar gheall ar "
10101 +"pack.packSizeLimit"
10102
10103 msgid "Writing objects"
10104 msgstr "Rudaí a scríobh"
@@ -11904,8 +11904,8 @@ msgid ""
11904 msgstr ""
11905 "Tá tagairtí contrártha sa\n"
11906 "tagarmharc sprice nua ag an gcianrialtán atá tú ag iarraidh a athainmniú. Is "
11907 -"dóichí gur mar gheall ar iarracht a dhéanamh cianrialtán a neadú ann féin, e."
11908 -"g. trí 'tuismitheoir' a athainmniú go 'tuismitheoir/leanbh'\n"
11907 +"dóichí gur mar gheall ar iarracht a dhéanamh cianrialtán a neadú ann féin, "
11908 +"e.g. trí 'tuismitheoir' a athainmniú go 'tuismitheoir/leanbh'\n"
11909 "nó trí chianrialtán a dhí-neadú, e.g. an bealach eile.\n"
11910 "\n"
11911 "Más amhlaidh atá, is féidir leat é seo a réiteach tríd an\n"
@@ -16114,11 +16114,11 @@ msgstr ""
16114
16115 #, c-format
16116 msgid ""
16117 -"attempting to write a commit-graph, but 'commitGraph."
16118 -"changedPathsVersion' (%d) is not supported"
16117 +"attempting to write a commit-graph, but 'commitGraph.changedPathsVersion' "
16118 +"(%d) is not supported"
16119 msgstr ""
16120 -"ag iarraidh commit-graph a scríobh, ach tá 'commitGraph."
16121 -"changedPathsVersion' (%d) ní thacaítear leis"
16120 +"ag iarraidh commit-graph a scríobh, ach tá 'commitGraph.changedPathsVersion' "
16121 +"(%d) ní thacaítear leis"
16122
16123 msgid "too many commits to write graph"
16124 msgstr "an iomarca gealltanais graf a scríobh"
@@ -18266,8 +18266,8 @@ msgid ""
18266 "given pattern contains NULL byte (via -f <file>). This is only supported "
18267 "with -P under PCRE v2"
18268 msgstr ""
18269 -"tá byte NULL (trí -f<file>) i bpatrún tugtha. Ní thacaítear leis seo ach le -"
18270 -"P faoi PCRE v2"
18269 +"tá byte NULL (trí -f<file>) i bpatrún tugtha. Ní thacaítear leis seo ach le "
18270 +"-P faoi PCRE v2"
18271
18272 #, c-format
18273 msgid "'%s': unable to read %s"
@@ -18433,8 +18433,8 @@ msgid ""
18433 msgstr ""
18434 "Rinneadh neamhaird ar an gcroca '%s' toisc nach bhfuil sé socraithe mar "
18435 "infheidhmithe.\n"
18436 -"Is féidir leat an rabhadh seo a dhíchumasú le `git config set advice."
18437 -"ignoredHook false `."
18436 +"Is féidir leat an rabhadh seo a dhíchumasú le `git config set "
18437 +"advice.ignoredHook false `."
18438
18439 msgid "not a git repository"
18440 msgstr "ní stór git é"
po/ru.po
+14 -14
@@ -369,8 +369,8 @@ msgstr ""
369 #, c-format
370 msgid "Discard mode change from index and worktree [y,n,q,a,d%s,?]? "
371 msgstr ""
372 -"Отменить изменения режима доступа в индексе и рабочем каталоге [y,n,q,a,"
373 -"d%s,?]? "
372 +"Отменить изменения режима доступа в индексе и рабочем каталоге "
373 +"[y,n,q,a,d%s,?]? "
374
375 #, c-format
376 msgid "Discard deletion from index and worktree [y,n,q,a,d%s,?]? "
@@ -400,8 +400,8 @@ msgstr ""
400 #, c-format
401 msgid "Apply mode change to index and worktree [y,n,q,a,d%s,?]? "
402 msgstr ""
403 -"Применить изменения режима доступа к индексу и рабочему каталогу [y,n,q,a,"
404 -"d%s,?]? "
403 +"Применить изменения режима доступа к индексу и рабочему каталогу "
404 +"[y,n,q,a,d%s,?]? "
405
406 #, c-format
407 msgid "Apply deletion to index and worktree [y,n,q,a,d%s,?]? "
@@ -2966,8 +2966,8 @@ msgid "HEAD not found below refs/heads!"
2966 msgstr "HEAD не найден в refs/heads!"
2967
2968 msgid ""
2969 -"branch with --recurse-submodules can only be used if submodule."
2970 -"propagateBranches is enabled"
2969 +"branch with --recurse-submodules can only be used if "
2970 +"submodule.propagateBranches is enabled"
2971 msgstr ""
2972
2973 msgid "--recurse-submodules can only be used to create branches"
@@ -3997,8 +3997,8 @@ msgid ""
3997 "clean.requireForce defaults to true and neither -i, -n, nor -f given; "
3998 "refusing to clean"
3999 msgstr ""
4000 -"clean.requireForce установлен по умолчанию как true и ни одна из опций -i, -"
4001 -"n или -f не указана; отказ очистки"
4000 +"clean.requireForce установлен по умолчанию как true и ни одна из опций -i, "
4001 +"-n или -f не указана; отказ очистки"
4002
4003 msgid "-x and -X cannot be used together"
4004 msgstr "нельзя использовать одновременно -x и -X"
@@ -5890,8 +5890,8 @@ msgid "protocol does not support --negotiate-only, exiting"
5890 msgstr ""
5891
5892 msgid ""
5893 -"--filter can only be used with the remote configured in extensions."
5894 -"partialclone"
5893 +"--filter can only be used with the remote configured in "
5894 +"extensions.partialclone"
5895 msgstr ""
5896
5897 msgid "--atomic can only be used when fetching from one remote"
@@ -8385,8 +8385,8 @@ msgstr "Каталог %s в индексе и не является подмо
8385
8386 msgid "Please stage your changes to .gitmodules or stash them to proceed"
8387 msgstr ""
8388 -"Чтобы продолжить, проиндексируйте или спрячьте ваши изменения в файле ."
8389 -"gitmodules"
8388 +"Чтобы продолжить, проиндексируйте или спрячьте ваши изменения в "
8389 +"файле .gitmodules"
8390
8391 #, c-format
8392 msgid "%.*s is in index"
@@ -16134,8 +16134,8 @@ msgid ""
16134 msgstr ""
16135 "Перехватчик «%s» был проигнорирован, так как он не установлен как "
16136 "исполняемый.\n"
16137 -"Вы можете отключить это предупреждение с помощью команды «git config advice."
16138 -"ignoredHook false»."
16137 +"Вы можете отключить это предупреждение с помощью команды «git config "
16138 +"advice.ignoredHook false»."
16139
16140 #, c-format
16141 msgid "argument to --packfile must be a valid hash (got '%s')"