Skip to content

l10n: add pt_BR translation - #933

Draft
Daniel-Pereira-Linux wants to merge 3 commits into
git-l10n:masterfrom
Daniel-Pereira-Linux:master
Draft

l10n: add pt_BR translation#933
Daniel-Pereira-Linux wants to merge 3 commits into
git-l10n:masterfrom
Daniel-Pereira-Linux:master

Conversation

@Daniel-Pereira-Linux

Copy link
Copy Markdown

This adds the initial core translations for pt_BR (Portuguese - Brazil).

The core strings have been translated and po/TEAMS updated with the team leader information.

@github-actions

github-actions Bot commented Aug 14, 2026

Copy link
Copy Markdown

Errors and warnings found by git-po-helper in workflow #1374:

ℹ️ Syntax check with msgfmt
    INFO    [pt_BR.po@0db7dd5]  6390 translated messages.
ℹ️ Syntax check with msgfmt
    INFO    [pt_BR.po@dbe0a5c]  6390 translated messages.
ℹ️ Syntax check with msgfmt
    INFO    [pt_BR.po@c482f4c]  6390 translated messages.
INFO: checking commits: 3 passed.
ℹ️ Download pot template
INFO: downloading pot file from https://github.com/git-l10n/pot-changes/raw/pot/master/po/git.pot
❌ Incomplete translations found
    ERROR   [pt_BR.po@0db7dd5]  3 new string(s) in POT file, but not in your PO file
    ERROR   [pt_BR.po@0db7dd5]  
    ERROR   [pt_BR.po@0db7dd5]    > POT file:git bisect run [--reset-when-f...
    ERROR   [pt_BR.po@0db7dd5]    > POT file:git bisect start [--term-(bad|...
    ERROR   [pt_BR.po@0db7dd5]    > POT file:invalid value for '--reset-whe...
    ERROR   [pt_BR.po@0db7dd5]  
    ERROR   [pt_BR.po@0db7dd5]  2 obsolete string(s) in your PO file, which must be removed
    ERROR   [pt_BR.po@0db7dd5]  
    ERROR   [pt_BR.po@0db7dd5]    > PO file:git bisect run <cmd> [<arg>......
    ERROR   [pt_BR.po@0db7dd5]    > PO file:git bisect start [--term-(bad|...
    ERROR   [pt_BR.po@0db7dd5]  
    ERROR   [pt_BR.po@0db7dd5]  You can download the latest POT file from:
    ERROR   [pt_BR.po@0db7dd5]  
    ERROR   [pt_BR.po@0db7dd5]  	https://github.com/git-l10n/pot-changes/raw/pot/master/po/git.pot
    ERROR   [pt_BR.po@0db7dd5]  
    ERROR   [pt_BR.po@0db7dd5]  Please rebase your branch to the latest upstream branch,
    ERROR   [pt_BR.po@0db7dd5]  run "git-po-helper update PO-FILE" to update your po file,
    ERROR   [pt_BR.po@0db7dd5]  and translate the new strings in it.
    ERROR   [pt_BR.po@0db7dd5]  
ERROR: check-commits command failed

@Daniel-Pereira-Linux
Daniel-Pereira-Linux force-pushed the master branch 2 times, most recently from 04081c9 to 6df955b Compare August 14, 2026 02:55
@Daniel-Pereira-Linux

Copy link
Copy Markdown
Author

Hello team!

This PR introduces the complete, initial version of the pt_BR (Portuguese - Brazil) localization for Git. I've translated all 6,386 strings to establish a solid foundation for the language.

While the translations might not be 100% perfect yet, my primary goal by stepping up as the language leader is to continuously organize, review, and refine the Portuguese translations over time, creating a great localized experience for Git users in Brazil.

I've successfully passed the git-po-helper checks. Please let me know if there's anything else required from my side to get this merged!

@jiangxin

Copy link
Copy Markdown
Member

Hi Daniel,

Impressive work — thanks for turning this around so quickly, and for getting the git-po-helper checks green.

On timing: according to Junio's release calendar (https://tinyurl.com/gitcal), the l10n merge window opens in about four weeks, and I plan to merge your PR after v2.56.0-rc2. In the meantime I'll keep updating the master branch of git-po, so new and changed strings will keep arriving — please re-run make po-update PO_FILE=po/pt_BR.po and translate the new entries as they appear, so the PR stays complete.

I agree with how you put it: the initial version does not have to be perfect, as long as the terminology is consistent and someone is committed to refining it over time. Before I merge, please run a review pass over the po/pt_BR.po changes in your commits. You can let an agent do the heavy lifting — follow the review workflow in po/AGENTS.md (Task 4: Review translation quality), then apply the suggestions you agree with.

Thanks for stepping up!

Best regards,
Jiang Xin

@jiangxin

jiangxin commented Aug 18, 2026

Copy link
Copy Markdown
Member

It appears the translation has not been reviewed by a human, as the header contains Last-Translator: Automatically generated. Numerous critical issues were found in just a small portion of your translation, please mark your PR as draft:

  1. " (was: y)"
     - score: 0
     - description: Critical error: the single-letter answer 'y' was translated
       as the pronoun 'você', and the leading space is lost. This is literal
       user input and must stay 'y'.
     - suggest-msgstr: " (era: y)"

  2. "%s was both '%s' and '%s'\\n"
     - score: 0
     - description: Critical error: translation says '%s tracks %s and %s', an
       unrelated message; the bisect meaning (a rev marked both states) is lost.
     - suggest-msgstr: "%s era ao mesmo tempo '%s' e '%s'\\n"

  3. "'%s' does not appear to be a valid revision"
     - score: 0
     - description: Critical error: translation is unrelated ('path %s does not
       have our version').
     - suggest-msgstr: "'%s' não parece ser uma revisão válida"

  4. "'%s' is not a valid branch name"
     - score: 0
     - description: Critical error: translation says 'is not a valid remote
       name' instead of branch name.
     - suggest-msgstr: "'%s' não é um nome de branch válido"

  5. "'%s' is not a valid commit"
     - score: 0
     - description: Critical error: translation says 'is not a valid remote
       name' instead of 'commit'.
     - suggest-msgstr: "'%s' não é um commit válido"

  6. "'%s' is not a valid term"
     - score: 0
     - description: Critical error: translation says 'is not a valid remote
       name' instead of 'term'.
     - suggest-msgstr: "'%s' não é um termo válido"

  7. "'%s' requires either no argument or a commit"
     - score: 0
     - description: Critical error: meaning inverted; msgid says it accepts
       either no argument or a commit, the translation says it requires neither.
     - suggest-msgstr: "'%s' requer nenhum argumento ou um commit"

  8. "--depth is ignored in local clones; use file:// instead."
     - score: 0
     - description: Critical error: the URL scheme 'file://' was translated to
       'arquivo: //', which is not a valid scheme; a space after the semicolon
       is also missing.
     - suggest-msgstr: "--depth é ignorado em clones locais; use file:// em vez
       disso."

  9. "--filter is ignored in local clones; use file:// instead."
     - score: 0
     - description: Critical error: 'file://' translated to the invalid
       'arquivo: //'; missing space after the semicolon.
     - suggest-msgstr: "--filter é ignorado em clones locais; use file:// em
       vez disso."

  10. "--shallow-exclude is ignored in local clones; use file:// instead."
      - score: 0
      - description: Critical error: 'file://' translated to the invalid
        'arquivo: //'; missing space after the semicolon.
      - suggest-msgstr: "--shallow-exclude é ignorado em clones locais; use
        file:// em vez disso."

  11. "--shallow-since is ignored in local clones; use file:// instead."
      - score: 0
      - description: Critical error: 'file://' translated to the invalid
        'arquivo: //'; missing space after the semicolon.
      - suggest-msgstr: "--shallow-since é ignorado em clones locais; use
        file:// em vez disso."

  12. "Cannot read index"
      - score: 0
      - description: Critical error: translation says 'cannot read the pack
        file' instead of the index.
      - suggest-msgstr: "Não é possível ler o índice"

  13. "Clone succeeded, but checkout failed.\\nYou can inspect what was checked
        out with 'git status'\\nand retry with 'git restore --source=HEAD
        :/'\\n"
      - score: 0
      - description: Critical errors: 'checkout' rendered as 'finalização da
        compra' (checkout as in e-commerce), and the command was corrupted from
        '--source=HEAD :/' to '--source=HEAD:/' (missing space changes its
        meaning).
      - suggest-msgstr: "A clonagem foi bem-sucedida, mas o checkout
        falhou.\\nVocê pode inspecionar o que foi extraído com 'git status'\\ne
        tentar novamente com 'git restore --source=HEAD :/'\\n"

  14. "Could not open commit-graph '%s'"
      - score: 0
      - description: Critical error: translation is the unrelated 'Could not
        parse object'; opening the commit-graph is lost.
      - suggest-msgstr: "Não foi possível abrir o commit-graph '%s'"

  15. "Diverging branches can't be fast-forwarded, you need to
        either:\\n\\n\\tgit merge --no-ff\\n\\nor:\\n\\n\\tgit rebase\\n"
      - score: 0
      - description: Critical errors: the command 'git merge' was translated to
        the non-existent 'git mesclar', and all three '\t' indentation escapes
        were dropped. 'fast-forward' should also use the standard term.
      - suggest-msgstr: "Ramos divergentes não podem receber fast-forward, você
        precisa de:\\n\\n\\tgit merge --no-ff\\n\\nou:\\n\\n\\tgit rebase\\n"

  16. "GPG sign commit"
      - score: 0
      - description: Critical error: says 'GPG signs the push'; it must be the
        commit.
      - suggest-msgstr: "assinar o commit com GPG"

  17. "GPG-sign commits"
      - score: 0
      - description: Critical error: translation is the unrelated fragment
        'novos commits,'; the GPG signing meaning is lost.
      - suggest-msgstr: "assinar os commits com GPG"

  18. "If the patch applies cleanly, the edited hunk will immediately be marked
        for staging."
      - score: 0
      - description: Serious mistranslation: 'staging' rendered as 'teste'
        (test). It means adding to the index.
      - suggest-msgstr: "Se o patch for aplicado corretamente, o pedaço editado
        será imediatamente marcado para ser preparado."

  19. "If the patch applies cleanly, the edited hunk will immediately be marked
        for unstaging."
      - score: 0
      - description: Serious mistranslation: 'unstaging' rendered as 'remoção
        de teste' (test removal).
      - suggest-msgstr: "Se o patch for aplicado corretamente, o pedaço editado
        será imediatamente marcado para ser retirado do índice."

  20. "Invalid ignored mode '%s'"
      - score: 0
      - description: Critical error: translation is the generic 'invalid value
        for %s'; the '--ignored' mode meaning is lost.
      - suggest-msgstr: "Modo de ignorados inválido '%s'"

  21. "Invalid untracked files mode '%s'"
      - score: 0
      - description: Critical error: translation is the unrelated status text
        'Untracked files not listed'.
      - suggest-msgstr: "Modo de arquivos não rastreados inválido '%s'"

  22. "Malformed input line: '%s'."
      - score: 0
      - description: Critical error: translation is the unrelated 'failed to
        unlink'.
      - suggest-msgstr: "Linha de entrada malformada: '%s'."

  23. "Need a repository to unbundle."
      - score: 0
      - description: Critical error: translation is the unrelated 'You must
        specify a repository to clone.'
      - suggest-msgstr: "É necessário um repositório para desempacotar o
        bundle."

  24. "No changes - recorded it as an empty commit."
      - score: 0
      - description: Critical error: translation is the unrelated 'no changes
        added to commit'.
      - suggest-msgstr: "Sem alterações - registrado como um commit vazio."

  25. "Not a valid commit name %s"
      - score: 0
      - description: Critical error: translation is about an invalid remote
        name, not a commit name.
      - suggest-msgstr: "Nome de commit inválido %s"

  26. "Skipping repository %s\\n"
      - score: 0
      - description: Critical error: translation says 'invalid repository'
        instead of 'skipping repository'.
      - suggest-msgstr: "Ignorando o repositório %s\\n"

  27. "Stash addition%s [y,n,q,a,d%s,?]? "
      - score: 0
      - description: Serious mistranslation: 'Stash' rendered as 'estoque'
        (inventory); trailing space also lost.
      - suggest-msgstr: "Fazer stash da adição%s [y,n,q,a,d%s,?]? "

  28. "To correct the sparsity of these paths, do the following:\\n* Use
        \\\"git add --sparse <paths>\\\" to update the index\\n* Use \\\"git
        sparse-checkout reapply\\\" to apply the sparsity rules"
      - score: 0
      - description: Critical error: the subcommand 'reapply' was translated to
        'reaplicar', so the suggested command does not exist.
      - suggest-msgstr: "Para corrigir a esparsidade desses caminhos, faça o
        seguinte:\\n* Use \\\"git add --sparse <paths>\\\" para atualizar o
        índice\\n* Use \\\"git sparse-checkout reapply\\\" para aplicar as
        regras de esparsidade"

  29. "Unbundling objects"
      - score: 0
      - description: Critical error: translation is the unrelated progress
        label 'Indexing objects'.
      - suggest-msgstr: "Desempacotando objetos"

  30. "Unknown archive format '%s'"
      - score: 0
      - description: Critical error: translation is about an unknown 'ref
        storage format', a different message entirely.
      - suggest-msgstr: "Formato de arquivo compactado desconhecido '%s'"

  31. "Unstage addition%s [y,n,q,a,d%s,?]? "
      - score: 0
      - description: Critical mistranslation: 'Unstage' rendered as
        'desestabilização' (destabilization); trailing space lost.
      - suggest-msgstr: "Retirar do índice a adição%s [y,n,q,a,d%s,?]? "

  32. "Unstage deletion%s [y,n,q,a,d%s,?]? "
      - score: 0
      - description: Critical mistranslation: rendered as 'delete the step'. It
        means unstaging a deletion; trailing space lost.
      - suggest-msgstr: "Retirar do índice a exclusão%s [y,n,q,a,d%s,?]? "

  33. "Unstage mode change%s [y,n,q,a,d%s,?]? "
      - score: 0
      - description: Critical mistranslation: 'Unstage' rendered as 'fora do
        palco' (off-stage). It means removing from the index; trailing space
        also lost.
      - suggest-msgstr: "Retirar do índice a alteração de modo%s
        [y,n,q,a,d%s,?]? "

  34. "Unstage this hunk%s [y,n,q,a,d%s,?]? "
      - score: 0
      - description: Critical mistranslation: 'Unstage' rendered as
        'Desembalar' (unpack); trailing space lost.
      - suggest-msgstr: "Retirar este pedaço do índice%s [y,n,q,a,d%s,?]? "

  35. "Unstaged changes after refreshing the index:"
      - score: 0
      - description: Critical mistranslation: 'unstaged' rendered as 'não
        planejadas' (unplanned) and 'refreshing the index' as 'a redefinição'
        (the reset).
      - suggest-msgstr: "Alterações não preparadas após atualizar o índice:"

  36. "We are not bisecting."
      - score: 0
      - description: Critical error: the meaning is inverted (says a bisect is
        in progress) and 'bisecting' is rendered literally as 'dividindo ao
        meio'.
      - suggest-msgstr: "Não estamos bissecionando."

  37. "We are not bisecting.\\n"
      - score: 0
      - description: Critical error: the meaning is inverted (says a bisect IS
        in progress) and 'bisecting' is rendered literally as 'dividindo ao
        meio'.
      - suggest-msgstr: "Não estamos bissecionando.\\n"

  38. "Would refuse to remove current working directory\\n"
      - score: 0
      - description: Critical error: translation is the unrelated 'you need to
        resolve your current index first'.
      - suggest-msgstr: "Se recusaria a remover o diretório de trabalho
        atual\\n"

  39. "Would remove %s\\n"
      - score: 0
      - description: Critical error: translation is the unrelated error 'could
        not resolve %s'; this is a dry-run message.
      - suggest-msgstr: "Removeria %s\\n"

  40. "Would skip repository %s\\n"
      - score: 0
      - description: Critical error: translation says 'invalid repository';
        this is the dry-run form of 'skipping repository'.
      - suggest-msgstr: "Ignoraria o repositório %s\\n"

  41. "You are in the middle of a cherry-pick -- cannot reword."
      - score: 0
      - description: Critical error: same 'morning session' mistranslation, and
        it is identical to the merge message.
      - suggest-msgstr: "Você está no meio de um cherry-pick -- não é possível
        reescrever a mensagem."

  42. "You are in the middle of a merge -- cannot reword."
      - score: 0
      - description: Critical error: translation says 'You are in the middle of
        a morning session' (the 'am' command was read as the time of day) and
        drops 'cannot reword'.
      - suggest-msgstr: "Você está no meio de uma mesclagem -- não é possível
        reescrever a mensagem."

  43. "You are on a branch yet to be born"
      - score: 0
      - description: Critical mistranslation: 'branch' rendered as 'galho'
        (tree limb). This is a Git branch.
      - suggest-msgstr: "Você está em um branch que ainda não nasceu"

  44. "\\nDisable this message with \\\"git config set advice.%s false\\\""
      - score: 0
      - description: Critical error: the configuration key was altered from
        'advice.%s' to 'warning.%s'. The command shown to users would not work.
      - suggest-msgstr: "\\nDesative esta mensagem com \\\"git config set
        advice.%s false\\\""

  45. "a '%s' revision is needed"
      - score: 0
      - description: Critical error: translation is from an unrelated message
        ('path %s was not merged').
      - suggest-msgstr: "é necessária uma revisão '%s'"

  46. "a branch named '%s' already exists"
      - score: 0
      - description: Critical error: translation is about an existing working
        tree, not an existing branch; it also adds a final period.
      - suggest-msgstr: "já existe um branch chamado '%s'"

  47. "ambiguous object name: '%s'"
      - score: 0
      - description: Critical error: the 'ambiguous' meaning is lost;
        translation duplicates an unrelated message.
      - suggest-msgstr: "nome de objeto ambíguo: '%s'"

  48. "archive format"
      - score: 0
      - description: Critical error: the option description was replaced by the
        single word 'formatar'; the meaning (archive format) is lost.
      - suggest-msgstr: "formato do arquivo compactado"

  49. "bad action '%s' for '%s'"
      - score: 0
      - description: Critical error: translation is the unrelated "the option
        '%s' requires '%s'".
      - suggest-msgstr: "ação inválida '%s' para '%s'"

  50. "branch"
      - score: 0
      - description: Critical terminology error: this argument placeholder for
        a Git branch is translated as 'filial' (company branch office).
      - suggest-msgstr: "branch"

  51. "branch '%s' does not exist"
      - score: 0
      - description: Critical error: translation says the repository does not
        exist instead of the branch.
      - suggest-msgstr: "o branch '%s' não existe"

  52. "branch '%s' has no upstream information"
      - score: 0
      - description: Critical error: translation is the unrelated 'branch has
        no remote for pushing'.
      - suggest-msgstr: "o branch '%s' não tem informações de upstream"

  53. "branch '%s' not found"
      - score: 0
      - description: Critical error: translation is the unrelated 'branch has
        no remote for pushing'.
      - suggest-msgstr: "branch '%s' não encontrado"

  54. "cannot checkout %s"
      - score: 0
      - description: Critical mistranslation: 'checkout' rendered as 'finalizar
        a compra' (complete a purchase, e-commerce sense).
      - suggest-msgstr: "não é possível fazer checkout de %s"

  55. "cannot do a partial commit during a rebase."
      - score: 0
      - description: Critical error: translation is the unrelated 'You are
        editing a commit during a rebase.'
      - suggest-msgstr: "não é possível fazer um commit parcial durante um
        rebase."

  56. "cannot open file '%s' in mode '%s'"
      - score: 0
      - description: Critical error: translation says 'cannot close the written
        file'; opening in a mode is lost and quoting differs.
      - suggest-msgstr: "não é possível abrir o arquivo '%s' no modo '%s'"

  57. "cannot read the index"
      - score: 0
      - description: Critical error: translation says 'cannot read the pack
        file' instead of the index.
      - suggest-msgstr: "não é possível ler o índice"

  58. "cannot resume: %s does not exist."
      - score: 0
      - description: Critical error: translation says 'the repository %s does
        not exist'; the 'cannot resume' part is lost.
      - suggest-msgstr: "não é possível retomar: %s não existe."

  59. "cannot stream blob %s"
      - score: 0
      - description: Critical error: translation is taken from an unrelated
        message ('cannot read existing object').
      - suggest-msgstr: "não é possível transmitir o blob %s"

  60. "could not apply '%s'"
      - score: 0
      - description: Critical error: 'apply' rendered as 'resolver' (resolve).
      - suggest-msgstr: "não foi possível aplicar '%s'"

  61. "could not create file '%s'"
      - score: 0
      - description: Critical error: translation says 'could not resolve', not
        'could not create the file'.
      - suggest-msgstr: "não foi possível criar o arquivo '%s'"

  62. "could not find commit for '%s'"
      - score: 0
      - description: Critical error: translation is the unrelated 'could not
        find remote ref'.
      - suggest-msgstr: "não foi possível encontrar o commit para '%s'"

  63. "could not lookup commit '%s'"
      - score: 0
      - description: Critical error: translation says 'could not push to %s'.
      - suggest-msgstr: "não foi possível localizar o commit '%s'"

  64. "could not lstat %s\\n"
      - score: 0
      - description: Critical error: translation says 'could not push to %s';
        the lstat() failure meaning is lost.
      - suggest-msgstr: "não foi possível executar lstat em %s\\n"

  65. "could not open '%s'"
      - score: 0
      - description: Critical error: 'open' rendered as 'resolver' (resolve).
      - suggest-msgstr: "não foi possível abrir '%s'"

  66. "could not open '%s' for appending"
      - score: 0
      - description: Critical error: translation says 'could not resolve';
        appending is lost.
      - suggest-msgstr: "não foi possível abrir '%s' para adição"

  67. "could not open '%s' for reading"
      - score: 0
      - description: Critical error: translation says 'could not resolve';
        opening for reading is lost.
      - suggest-msgstr: "não foi possível abrir '%s' para leitura"

  68. "could not open '%s' for writing"
      - score: 0
      - description: Critical error: translation says 'could not resolve';
        opening for writing is lost, and it is identical to the 'for reading'
        message.
      - suggest-msgstr: "não foi possível abrir '%s' para gravação"

  69. "could not open commit-graph chain '%s'"
      - score: 0
      - description: Critical error: translation is the unrelated 'could not
        create work tree dir'.
      - suggest-msgstr: "não foi possível abrir a cadeia de commit-graph '%s'"

  70. "could not parse %s"
      - score: 0
      - description: Critical error: 'parse' rendered as 'resolver', and quotes
        were added around the placeholder.
      - suggest-msgstr: "não foi possível analisar %s"

  71. "could not parse patch '%s'"
      - score: 0
      - description: Critical error: 'patch' became 'objeto' and a final period
        was added.
      - suggest-msgstr: "não foi possível analisar o patch '%s'"

  72. "could not read '%s'"
      - score: 0
      - description: Critical error: 'read' rendered as 'resolver' (resolve).
      - suggest-msgstr: "não foi possível ler '%s'"

  73. "could not read file '%s'"
      - score: 0
      - description: Critical error: translation says 'could not resolve', not
        'could not read the file'.
      - suggest-msgstr: "não foi possível ler o arquivo '%s'"

  74. "could not read log file '%s'"
      - score: 0
      - description: Critical error: translation says 'could not resolve';
        reading the log file is lost.
      - suggest-msgstr: "não foi possível ler o arquivo de log '%s'"

  75. "could not read the index"
      - score: 0
      - description: Critical error: translation says 'could not write the new
        index file'; reading became writing.
      - suggest-msgstr: "não foi possível ler o índice"

  76. "could not stat '%s'"
      - score: 0
      - description: Critical error: translation says 'could not resolve'; the
        stat() failure meaning is lost.
      - suggest-msgstr: "não foi possível obter o status de '%s'"

  77. "could not write commit template"
      - score: 0
      - description: Critical error: translation is the unrelated 'could not
        write the new index file'.
      - suggest-msgstr: "não foi possível gravar o modelo de commit"

  78. "could not write to file '%s'"
      - score: 0
      - description: Critical error: translation says 'could not resolve';
        writing to the file is lost.
      - suggest-msgstr: "não foi possível gravar no arquivo '%s'"

  79. "couldn't get the oid of the rev '%s'"
      - score: 0
      - description: Critical error: translation is the unrelated 'could not
        find remote ref'.
      - suggest-msgstr: "não foi possível obter o oid da revisão '%s'"

  80. "couldn't open the file '%s'"
      - score: 0
      - description: Critical error: translation is the unrelated 'could not
        find remote ref'.
      - suggest-msgstr: "não foi possível abrir o arquivo '%s'"

  81. "create/reset and checkout a branch"
      - score: 0
      - description: Critical mistranslation: 'checkout' rendered as 'finalizar
        a compra' (complete a purchase) and 'branch' as 'filial'.
      - suggest-msgstr: "criar/redefinir e fazer checkout de um branch"

  82. "edit the description for the branch"
      - score: 0
      - description: Critical error: translation is the unrelated 'create
        reflog for new branch' and uses 'filial' for branch.
      - suggest-msgstr: "editar a descrição do branch"

  83. "editing patch failed"
      - score: 0
      - description: Critical error: translation is from an unrelated message
        ('revision walk setup failed').
      - suggest-msgstr: "falha ao editar o patch"

  84. "failed to get object info from the remote: %s"
      - score: 0
      - description: Critical error: translation is the unrelated 'failed to
        fetch objects from bundle URI'.
      - suggest-msgstr: "falha ao obter informações do objeto no remoto: %s"

  85. "failed to read '%s'"
      - score: 0
      - description: Critical error: translation says 'failed to declare';
        reading is lost.
      - suggest-msgstr: "falha ao ler '%s'"

  86. "failed to read the index"
      - score: 0
      - description: Critical error: translation is the unrelated option
        description 'restore the index'.
      - suggest-msgstr: "falha ao ler o índice"

  87. "failed to remove %s"
      - score: 0
      - description: Critical error: translation says 'failed to iterate over';
        removal is lost.
      - suggest-msgstr: "falha ao remover %s"

  88. "failed to stat '%s'"
      - score: 0
      - description: Critical mistranslation: 'stat' rendered as 'declarar' (to
        declare).
      - suggest-msgstr: "falha ao obter o status de '%s'"

  89. "failed to unpack tree object %s"
      - score: 0
      - description: Critical error: translation says 'failed to find the tree
        of %s' instead of failing to unpack the tree object.
      - suggest-msgstr: "falha ao descompactar o objeto árvore %s"

  90. "file"
      - score: 0
      - description: Critical error: this is the argument placeholder for
        --output, but the translation is the unrelated status label 'novo
        arquivo:'.
      - suggest-msgstr: "arquivo"

  91. "invalid Date line"
      - score: 0
      - description: Critical error: translation is the unrelated 'invalid
        pathspec'.
      - suggest-msgstr: "linha Date inválida"

  92. "invalid branch name: '%s'"
      - score: 0
      - description: Critical error: translation says 'invalid reference'
        instead of 'invalid branch name' and drops the quotes.
      - suggest-msgstr: "nome de branch inválido: '%s'"

  93. "invalid date format: %s"
      - score: 0
      - description: Critical error: translation is the unrelated 'invalid
        value for %s'; the date format meaning is lost.
      - suggest-msgstr: "formato de data inválido: %s"

  94. "no commit on branch '%s' yet"
      - score: 0
      - description: Critical error: translation says the branch does not
        exist; msgid says the branch has no commit yet.
      - suggest-msgstr: "ainda não há commit no branch '%s'"

  95. "not a tree object: %s"
      - score: 0
      - description: Critical error: translation is from an unrelated message
        ('could not parse object') and adds a final period and quotes.
      - suggest-msgstr: "não é um objeto árvore: %s"

  96. "not a valid object name %s"
      - score: 0
      - description: Critical error: translation is from an unrelated message
        ('cannot parse expected object name').
      - suggest-msgstr: "nome de objeto inválido %s"

  97. "not a valid object name '%s'"
      - score: 0
      - description: Critical error: translation is from an unrelated message
        ('cannot parse expected object name').
      - suggest-msgstr: "nome de objeto inválido '%s'"

  98. "not a valid object name: %s"
      - score: 0
      - description: Critical error: translation is from an unrelated message
        ('cannot parse expected object name'), and adds quotes not present in
        msgid.
      - suggest-msgstr: "não é um nome de objeto válido: %s"

  99. "not a valid object name: '%s'"
      - score: 0
      - description: Critical error: translation is from an unrelated message
        ('cannot parse expected object name').
      - suggest-msgstr: "não é um nome de objeto válido: '%s'"

  100. "pathspec '%s' did not match any files"
       - score: 0
       - description: Critical error: translation belongs to a different
         message about 'src refspec'; it also drops the quotes around the
         placeholder.
       - suggest-msgstr: "o pathspec '%s' não corresponde a nenhum arquivo"

  101. "problem loading sparse-checkout"
       - score: 0
       - description: Critical error: translation is the unrelated 'You are in
         a sparse checkout.'
       - suggest-msgstr: "problema ao carregar o sparse-checkout"

  102. "read commands from stdin"
       - score: 0
       - description: Critical error: translation is the unrelated 'No commands
         remaining.'
       - suggest-msgstr: "ler comandos da entrada padrão"

  103. "recode into utf8 (default)"
       - score: 0
       - description: Critical error: translation is the unrelated 'update
         ignored files (default)'.
       - suggest-msgstr: "recodificar para utf8 (padrão)"

  104. "recurse through submodules"
       - score: 0
       - description: Critical error: translation is the unrelated 'control
         recursive pushing of submodules'.
       - suggest-msgstr: "percorrer os submódulos recursivamente"

  105. "remote HEAD refers to nonexistent ref, unable to checkout"
       - score: 0
       - description: Critical mistranslation: 'checkout' rendered as
         'finalizar a compra' (complete a purchase).
       - suggest-msgstr: "o HEAD remoto se refere a uma ref inexistente, não
         foi possível fazer checkout"

  106. "remove ignored files, too"
       - score: 0
       - description: Critical error: translation is the unrelated status label
         'Ignored files'; the option description is lost.
       - suggest-msgstr: "remover também os arquivos ignorados"

  107. "remove only ignored files"
       - score: 0
       - description: Critical error: translation is the unrelated status label
         'Ignored files' and is identical to the previous option.
       - suggest-msgstr: "remover apenas os arquivos ignorados"

  108. "run interactively"
       - score: 0
       - description: Critical error: translation is the unrelated 'select
         hunks interactively'.
       - suggest-msgstr: "executar interativamente"

  109. "running %s\\n"
       - score: 0
       - description: Critical error: translation says 'pushing to %s' instead
         of 'running %s'.
       - suggest-msgstr: "executando %s\\n"

  110. "show current branch name"
       - score: 0
       - description: Critical error: translation is the unrelated 'Not
         currently on any branch.' and uses 'filial' for branch.
       - suggest-msgstr: "mostrar o nome do branch atual"

  111. "skip the current patch"
       - score: 0
       - description: Critical error: translation is the unrelated 'The current
         patch is empty.'
       - suggest-msgstr: "ignorar o patch atual"

  112. "submodule '%s': cannot create branch '%s'"
       - score: 0
       - description: Critical error: translation is from an unrelated message
         ('%s cannot be used with %s').
       - suggest-msgstr: "submodule '%s': não é possível criar o branch '%s'"

  113. "the branch '%s' is not fully merged"
       - score: 0
       - description: Critical error: translation is about a path, not a
         branch, and drops 'fully'.
       - suggest-msgstr: "o branch '%s' não foi totalmente mesclado"

  114. "the requested upstream branch '%s' does not exist"
       - score: 0
       - description: Critical error: translation says the repository does not
         exist instead of the requested upstream branch.
       - suggest-msgstr: "o branch upstream solicitado '%s' não existe"

  115. "unable to create diagnostics archive %s"
       - score: 0
       - description: Critical error: translation says 'could not create the
         thread'; the diagnostics archive meaning is lost.
       - suggest-msgstr: "não foi possível criar o arquivo de diagnóstico %s"

  116. "unable to normalize directory: '%s'"
       - score: 0
       - description: Critical error: translation says 'failed to create the
         directory', unrelated to normalizing a path.
       - suggest-msgstr: "não foi possível normalizar o diretório: '%s'"

  117. "unable to read index file"
       - score: 0
       - description: Critical error: translation says 'unable to write new
         index file'; it must be about reading.
       - suggest-msgstr: "não foi possível ler o arquivo de índice"

  118. "unable to start '%s' filter"
       - score: 0
       - description: Critical error: translation says 'failed to declare',
         unrelated to starting a filter process.
       - suggest-msgstr: "não foi possível iniciar o filtro '%s'"

  119. "unable to start 'show' for object '%s'"
       - score: 0
       - description: Critical error: translation mentions starting an
         iterator, not running 'show' for an object.
       - suggest-msgstr: "não foi possível iniciar 'show' para o objeto '%s'"

  120. "unable to stat '%s'"
       - score: 0
       - description: Critical mistranslation: 'stat' rendered as 'declarar'
         (to declare). It means querying file status.
       - suggest-msgstr: "não foi possível obter o status de '%s'"

  121. "unable to write to %s"
       - score: 0
       - description: Critical error: writing became reading, and it uses first
         person.
       - suggest-msgstr: "não foi possível gravar em %s"

  122. "unable to write upstream branch configuration"
       - score: 0
       - description: Critical error: translation is a generic 'cannot write
         settings to the config file'; the upstream branch configuration
         meaning is lost.
       - suggest-msgstr: "não foi possível gravar a configuração do branch
         upstream"

  123. "unknown argument `%s'"
       - score: 0
       - description: Critical error: translation is the unrelated 'unknown
         hash algorithm'.
       - suggest-msgstr: "argumento desconhecido `%s'"

  124. "unknown command: '%s'"
       - score: 0
       - description: Critical error: translation is the unrelated 'unknown
         conflict style'.
       - suggest-msgstr: "comando desconhecido: '%s'"

  125. "unstaged"
       - score: 0
       - description: Serious mistranslation: 'encenado' means 'staged' as in
         theater. Git 'unstaged' = 'não preparado'.
       - suggest-msgstr: "não preparado"

  126. "update stat information in the index file"
       - score: 0
       - description: Critical error: translation is the unrelated error
         'unable to write new index file'.
       - suggest-msgstr: "atualizar as informações de stat no arquivo de índice"

  127. "update tracked files"
       - score: 0
       - description: Critical error: translation is the unrelated label
         'Untracked files'; the option description is lost.
       - suggest-msgstr: "atualizar arquivos rastreados"

  128. "updating files failed"
       - score: 0
       - description: Critical error: translation is the unrelated option
         description 'update ignored files (default)'.
       - suggest-msgstr: "falha ao atualizar os arquivos"

  129. "warn when adding an embedded repository"
       - score: 0
       - description: Critical error: translation is the unrelated 'create an
         empty repository'.
       - suggest-msgstr: "avisar ao adicionar um repositório incorporado"

  130. "which tree-ish to check attributes at"
       - score: 0
       - description: Critical error: translation is the unrelated 'which
         tree-ish to checkout from'; checking attributes is lost.
       - suggest-msgstr: "em qual tree-ish verificar os atributos"

  131. "y - unstage this hunk\\nn - do not unstage this hunk\\nq - quit; do not
         unstage this hunk or any of the remaining ones\\na - unstage this hunk
         and all later hunks in the file\\nd - do not unstage this hunk or any
         of the later hunks in the file\\n"
       - score: 0
       - description: Serious mistranslation: 'unstage' rendered as 'desfaça'
         (undo) and 'desestabilize'; missing space after 'sair;'.
       - suggest-msgstr: "y - retirar este pedaço do índice\\nn - não retirar
         este pedaço do índice\\nq - sair; não retirar este pedaço do índice
         nem nenhum dos restantes\\na - retirar do índice este pedaço e todos
         os pedaços posteriores no arquivo\\nd - não retirar do índice este
         pedaço nem nenhum dos pedaços posteriores no arquivo\\n"

@Daniel-Pereira-Linux

Daniel-Pereira-Linux commented Aug 18, 2026 via email

Copy link
Copy Markdown
Author

Add Portuguese (Brazil) translation for Git and register
team leader in po/TEAMS.

Signed-off-by: Daniel Pereira <danielmaraboo@gmail.com>
@Daniel-Pereira-Linux
Daniel-Pereira-Linux marked this pull request as ready for review August 18, 2026 20:13
@Daniel-Pereira-Linux

Copy link
Copy Markdown
Author

I have addressed all the feedback and updated the PR:

1. **Applied all review corrections:** Carefully reviewed and fixed all 131 suggested items and terminology inconsistencies (such as *checkout*, *branch*, *stage/unstage*, *file://*

URIs, escape sequences, etc.).
2. Rebased & Updated with latest upstream: Rebased on the latest upstream/master and updated against the new git.pot template. All new and fuzzy entries have been translated
(6,390 / 6,390 translated messages, 0 fuzzy, 0 untranslated).
3. Linter & Filter Compliance: Removed obsolete #~ entries, applied the gettext-no-location filter, and updated the commit message format with the l10n: prefix, 72-char line
wrapping, and Signed-off-by.
4. CI Checks: All CI workflows (git-po-helper, check-style, and check-whitespace) are now passing green.

Could you please take another look and let me know if everything looks good now, or if there is anything else that needs adjusting?

Thanks again for your time and support!

Best regards,  
Daniel Pereira

Update po/pt_BR.po from the latest upstream git.pot template.

Signed-off-by: Daniel Pereira <danielmaraboo@gmail.com>
@Daniel-Pereira-Linux

Copy link
Copy Markdown
Author

Hi @jiangxin,

I am converting this PR back to draft status so I can continue refining the translation quality and keep up with incoming upstream strings over the next few weeks.

I will mark it as "Ready for review" again closer to the v2.56.0-rc2 release window. Thanks!

@Daniel-Pereira-Linux
Daniel-Pereira-Linux force-pushed the master branch 5 times, most recently from 193df3b to b4f4a3a Compare August 19, 2026 18:13
Sync with latest upstream POT template, translate untranslated
strings, correct parameter order and technical terms, standardize
CLI help descriptions, and restore trailing spaces in prompts.

Signed-off-by: Daniel Pereira <danielmaraboo@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants