Repository navigation
Conversation
…session and recipients Reference-confirmed fishing and literal idioms, police-place vocabulary, ongoing actions with estar a, revenge and reply senses, prank senses, pronominal forgetting, como se hypothetical comparisons, inalienable possession with dative clitics and bare articles, telling-verb recipients, reference second person after initial Não, arrival referents, parecer que complements and a reviewed transport and mechanics conversion table. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
🟡 Changes recommended
Several rules produce incorrect Portuguese by crossing blank-line boundaries, duplicating or misassigning clitics, inserting spurious “que”, and changing temporal meaning.
7 open issues
Prevent clitic climbing across blank lines · New Stop subject collection at subordinate-clause markers · New Reject missing-que candidates spanning blank lines · New Avoid treating possessive “her” as a recipient · New Recognize existing clitics across arbitrary whitespace · New Preserve temporal adjuncts when rewriting há/havia · New Prevent jump-start matches across blank lines · New
What changed in this PR
Updates the SE5 Brazilian-to-European Portuguese plugin to v1.9.0, expanding reference-guided subtitle conversions, contextual grammar rules, and technical vocabulary.
Changes:
- Adds reference-assisted idioms, recipient recovery, possession handling, and contextual complements.
- Expands transport vocabulary and pronoun handling, with regression coverage for wrapping, options, and cue preservation.
- Updates bilingual documentation, packaged resources, and settings-panel layout.
| File | Description |
|---|---|
| se5/BrazilianToEuropeanPortuguese/TransportVocabulary.pt-PT.md | Documents transport terminology and safeguards. |
| se5/BrazilianToEuropeanPortuguese/TransportVocabulary.cs | Adds vehicle-qualified jump-start conversions. |
| se5/BrazilianToEuropeanPortuguese/SubtitleConversion.cs | Integrates contextual hints and referent-review notes. |
| se5/BrazilianToEuropeanPortuguese/ReviewedDialogue.cs | Adds reference-guided dialogue and recipient rules. |
| se5/BrazilianToEuropeanPortuguese/ReferenceSubtitle.cs | Extends contextual hints and idiom alignment. |
| se5/BrazilianToEuropeanPortuguese/README.pt-PT.md | Updates the Portuguese guide and examples. |
| se5/BrazilianToEuropeanPortuguese/README.md | Updates the English guide and examples. |
| se5/BrazilianToEuropeanPortuguese/PortugueseWordList.xml | Adds transport and prank vocabulary. |
| se5/BrazilianToEuropeanPortuguese/PortugueseVerbs.cs | Expands verb recognition and clitic support. |
| se5/BrazilianToEuropeanPortuguese/plugin.json | Advances the plugin version to 1.9.0. |
| se5/BrazilianToEuropeanPortuguese/MaybeSubjunctive.cs | Extends subjunctive complements and supported subjects. |
| se5/BrazilianToEuropeanPortuguese/MainWindow.axaml.cs | Adjusts responsive settings-panel height. |
| se5/BrazilianToEuropeanPortuguese/MainWindow.axaml | Refines settings-column width and scrolling space. |
| se5/BrazilianToEuropeanPortuguese/LocalChecks.cs | Uses original Portuguese to disambiguate idiom meanings. |
| se5/BrazilianToEuropeanPortuguese/ContextualComplements.cs | Adds missing conjunction and arrival-object recovery. |
| se5/BrazilianToEuropeanPortuguese/BrazilianToEuropeanPortuguese.csproj | Packages the transport guide and preview image. |
| se5/BrazilianToEuropeanPortuguese/AutomaticGrammar.cs | Extends noun-based determiner agreement. |
| se5/BrazilianToEuropeanPortuguese/AttractedEnclisis.cs | Extends clitic placement and CRLF handling. |
| se5/BrazilianToEuropeanPortuguese.Tests/TransportVocabularyTests.cs | Tests transport conversions and local overrides. |
| se5/BrazilianToEuropeanPortuguese.Tests/TemporalCliticTests.cs | Tests clitics after temporal adverbs. |
| se5/BrazilianToEuropeanPortuguese.Tests/SeeingObjectTests.cs | Tests reference-confirmed missing objects. |
| se5/BrazilianToEuropeanPortuguese.Tests/ReviewedEpisodeDialogueTests.cs | Covers dialogue conversions and protected meanings. |
| se5/BrazilianToEuropeanPortuguese.Tests/ReferenceTests.cs | Adds alignment, optional model, and layout coverage. |
| se5/BrazilianToEuropeanPortuguese.Tests/PorFamilyCliticTests.cs | Tests irregular pôr-family clitic placement. |
| se5/BrazilianToEuropeanPortuguese.Tests/PersonalObjectTests.cs | Updates formal-object expectations. |
| se5/BrazilianToEuropeanPortuguese.Tests/LocalChecksTests.cs | Tests Portuguese-guided fishing disambiguation. |
| se5/BrazilianToEuropeanPortuguese.Tests/InterrogationAgreementTests.cs | Covers esperar complements and plural subjects. |
| se5/BrazilianToEuropeanPortuguese.Tests/FormalPersonalObjectTests.cs | Tests formal objects, gender, and placement. |
| se5/BrazilianToEuropeanPortuguese.Tests/ExplanationTests.cs | Updates the inalienable-possession expectation. |
| se5/BrazilianToEuropeanPortuguese.Tests/EnglishExpressionTests.cs | Tests idiom meanings, conversions, and safeguards. |
| se5/BrazilianToEuropeanPortuguese.Tests/EmphaticAndPolicyDialogueTests.cs | Covers emphatic questions and contextual paraphrases. |
| se5/BrazilianToEuropeanPortuguese.Tests/DurationAndWrappingTests.cs | Tests duration phrasing and LF/CRLF boundaries. |
| se5/BrazilianToEuropeanPortuguese.Tests/CorpusConstructionTests.cs | Adds coverage for reference-guided constructions. |
| se5/BrazilianToEuropeanPortuguese.Tests/ConverterTests.cs | Updates forgetting, imperative, and clitic expectations. |
| se5/BrazilianToEuropeanPortuguese.Tests/ContextualComplementsTests.cs | Tests complement recovery and arrival referents. |
| se5/BrazilianToEuropeanPortuguese.Tests/ConstructionTests.cs | Removes an obsolete unchanged-forgetting expectation. |
| se5/BrazilianToEuropeanPortuguese.Tests/BigCompareObjectTests.cs | Updates pronominal forgetting and possession expectations. |
Review effort: Balanced
| @"(?<![\p{L}\p{M}-])(?<negative>não|nunca|jamais)(?<gap>\s+)(?<aux>vou|vais|vai|vamos|vão|ia|ias|íamos|iam)" + | ||
| @"(?:-(?<cl>me|te|se|nos|vos|lhe|lhes))?(?<space>\s+)(?<inf>[\p{L}\p{M}]+)" + | ||
| @"(?:-(?<cl>me|te|se|nos|vos|lhe|lhes))?(?![\p{L}\p{M}-])", | ||
| m => m.Groups["cl"].Captures.Count != 1 || !PortugueseConverter.TuImperative.IsInfinitive(m.Groups["inf"].Value) ? m.Value : |
There was a problem hiding this comment.
Fixed in e01d7c6: the negative clitic-climbing replacement now rejects matches whose span contains a blank line or a speaker dash, while single LF/CRLF wraps keep working (covered by new NegativeIrPlacementIsConsistent cases).
| private const string PlainSubject = @"(?:ele|ela|eles|elas|eu|tu|nós|vós|você|vocês)"; | ||
| private const string Subject = @"(?:" + PlainSubject + | ||
| @"|(?:o|a|os|as|um|uma|uns|umas)\s+(?!que\b)" + Word + | ||
| @"(?:\s+(?!(?:que|não|nunca|já|também|se|me|te|nos|lhe|lhes|e|ou|mas)\b)" + Word + @"){0,5})"; |
There was a problem hiding this comment.
Fixed in e01d7c6: the nominal-subject pattern now stops at subordinate-clause markers and prepositions (quando/como/onde/porque/enquanto/embora/caso/quem/cujo/com/sem/de/em/para/por/sobre/contra/até/desde/durante), so "Parece a minha mãe quando era jovem." and "Parece o homem com quem ela falou." stay unchanged (new protection tests).
| if (!tail.Success) continue; | ||
| var finite = Regex.Matches(tail.Value, Word).Cast<Match>().Skip(1).FirstOrDefault(w => | ||
| { | ||
| if (!Finite(w.Value) || blocked(w.Value)) return false; |
There was a problem hiding this comment.
Fixed in e01d7c6: the full span from parecer to the proposed finite verb is now rejected when it contains a blank line or speaker dash, so "Parece\n\nela chegou." stays unchanged while ordinary wraps still receive que.
| var map = new Dictionary<string, (string, Regex)>(StringComparer.OrdinalIgnoreCase); | ||
| foreach (var (infinitive, english) in TellingVerbs) | ||
| { | ||
| var regex = new Regex(@"\b" + english + @"\s+(?<obj>me|you|him|her|us|them)\b", Ci); |
There was a problem hiding this comment.
Fixed in e01d7c6: "her" only counts as a recipient when it ends the phrase or is followed by the telling content (about/that/everything/articles/pronouns/etc.), so "He told her parents about it." no longer produces contou-lhe (new protection test).
| } | ||
|
|
||
| private static readonly Regex TellingRecipient = new( | ||
| Before + @"(?<!(?<![\p{L}\p{M}])(?:me|te|se|nos|vos|lhe|lhes)\s)(?<v>" + |
There was a problem hiding this comment.
Fixed in e01d7c6: the existing-proclitic lookbehind now accepts any whitespace run (\s+), so "Ele nos\r\ncontou sobre isso." and multiple spaces no longer produce a duplicated clitic (new protection tests).
| if (Regex.IsMatch(english, @"\bit(?:'s|\s+has|\s+had)\s+(?:only\s+|just\s+)?been\s+(?:only\s+|just\s+)?(?:a|an|a\s+few|some|\d+)\s+(?:seconds?|minutes?|hours?|days?|weeks?|months?|years?)\b", Ci) && | ||
| !blocked("fazer") && !blocked("passar")) | ||
| text = Regex.Replace(text, | ||
| @"(?<head>^|[,;.!?]\s+|\bmas\s+)(?<only>(?:(?:só|apenas|somente)\s+)?)(?<verb>faz|fazia|há|havia)\s+" + |
There was a problem hiding this comment.
Fixed in e01d7c6: the elapsed-time rewrite now requires a standalone predicate (sentence end or desde), so the temporal adjunct "Há alguns anos, ele vivia aqui." is preserved while "Faz uma hora." → "Passou uma hora." still works (new protection test).
|
|
||
| internal static string Apply(string text, Func<string, bool> blocked) => JumpStart.Replace(text, m => | ||
| { | ||
| var verb = m.Groups["verb"].Value; |
There was a problem hiding this comment.
Fixed in e01d7c6: jump-start matches containing a blank line or speaker dash are rejected, so "Deu uma chupeta\n\nno carro." keeps the plain vocabulary conversion while single LF/CRLF wraps still convert (new protection tests).
…d temporal adjuncts Blank-line and speaker boundaries now stop negative clitic climbing, parecer que insertion and vehicle jump-start matches. Parecer subjects stop at subordinate-clause markers and prepositions. Telling recipients reject possessive her before a noun phrase and recognise existing proclitics across any whitespace. Elapsed-time rewrites only apply to standalone predicates, preserving time-ago adjuncts. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Updates the SE5 Brazilian to European Portuguese plugin to v1.9.0 with new reference-guided conversion rules. All rules are general to any PT-BR subtitle, respect existing options, disabled stages, ignored words and custom vocabulary, and work across ordinary LF/CRLF line wraps without crossing blank lines or speaker dashes.
New conversions
Validation