% Language definition file (part of polyglossia v2.10 -- 2026/04/18)
%
\ProvidesFile{gloss-portuguese.ldf}[polyglossia: module for Portuguese]

\PolyglossiaSetup{portuguese}{
  bcp47=pt-PT,
  bcp47-language=pt,
  bcp47-region=PT,
  bcp47-script=Latn,
  babelname=portuges,
  hyphennames={portuges,portuguese},
  hyphenmins={2,3},
  langtag=PTG,
 }

% BCP-47 compliant aliases
\setlanguagealias*[variant=portuguese]{portuguese}{pt-PT}
\setlanguagealias*[variant=brazilian]{portuguese}{pt-BR}
\setlanguagealias*{portuguese}{pt}

% Babel aliases
\setlanguagealias[variant=portuguese]{portuguese}{portuges}
\setlanguagealias[variant=brazilian]{portuguese}{brazil}

\ifluatex
  \RequirePackage{luavlna}
\fi

\def\portuguese@variant{portuges}

\DeclareKeys[polyglossia/gloss/portuguese]
  {
    babelshorthands.if = portuguese@babelshorthands,
    babelshorthands.default:n = true,
    splithyphens.if = portuguese@splithyphens,
    splithyphens.default:n = true,
    variant.choice:,
    variant / portuguese.code =
      {%
        \def\portuguese@variant{portuges}%
        \SetLanguageKeys{portuguese}{babelname=portuges,bcp47=pt-PT,bcp47-language=pt,bcp47-region=PT}%
      },
    variant / brazilian.code =
      {%
        \def\portuguese@variant{brazil}%
        \SetLanguageKeys{portuguese}{babelname=brazil,bcp47=pt-BR,bcp47-language=pt,bcp47-region=BR}%
        % There are no specific brazil patterns
        \AddDialectIfNeeded{brazil}{portuges}%
      },
    variant.default:n = portuguese,
    variant/unknown.code = \xpg@warning{Unknown portuguese variant `#1'},
  }

\ifsystem@babelshorthands
  \SetGlossOptions{portuguese}{babelshorthands=true}
  % Register default options
  \InitializeGlossOptions{portuguese}{variant=portuguese,
      babelshorthands=true,
      splithyphens=true}
\else
  \SetGlossOptions{portuguese}{babelshorthands=false}
  % Register default options
  \InitializeGlossOptions{portuguese}{variant=portuguese,
      babelshorthands=false,
      splithyphens=true}
\fi

\InitializeBabelShorthands

\let\xpg@hyphen@char-
\def\portuguese@@splhyphen#1{%
  \def\portuguese@sh@tmp{%
       \ifx\portuguese@sh@next\xpg@hyphen@char#1%
       \else\expandafter\portuguese@@@splhyphen{#1}\fi%
     }%
     \futurelet\portuguese@sh@next\portuguese@sh@tmp%
}

\def\portuguese@@@splhyphen#1{%
  \ifnum\hyphenchar \font>0%
    \kern\z@\discretionary{-}{\char\hyphenchar\the\font}{#1}%
    \nobreak\hskip\z@%
  \else%
    #1%
  \fi%
}

\def\portuguese@splhyphen{%
  \portuguese@@splhyphen{-}%
}

\def\portuguese@shorthands{%
  \xpg@activate@shorthands%
  \def\language@group{portuguese}%
  \declare@shorthand{portuguese}{"=}{\portuguese@splhyphen}%
  \declare@shorthand{portuguese}{""}{\xpg@invisible@break}%
  \declare@shorthand{portuguese}{"~}{\xpg@nobreak@hyphen}%
  \declare@shorthand{portuguese}{"-}{\xpg@add@hyphenation@point}%
  \declare@shorthand{portuguese}{"|}{\xpg@ligature@break}%
  \declare@shorthand{portuguese}{"/}{\xpg@breakable@slash}%
  \declare@shorthand{portuguese}{"<}{«}%
  \declare@shorthand{portuguese}{">}{»}%
}

\def\noportuguese@shorthands{%
  \xpg@deactivate@shorthands%
}

\ifxetex
  % splithyphens
  \newXeTeXintercharclass\portuguese@hyphen % -
\fi

\def\portuguese@hyphens{%
    \ifluatex
      \AfterPreamble{\enablesplithyphens{portuguese}}%
    \else
      \XeTeXinterchartokenstate=1
      \XeTeXcharclass `\- \portuguese@hyphen
      \XeTeXinterchartoks \z@ \portuguese@hyphen = {\portuguese@@splhyphen}% "-" -> "\portuguese@@splhyphen-"
    \fi%
}

\def\noportuguese@hyphens{%
    \ifluatex
      \AfterPreamble{\disablesplithyphens{portuguese}}%
    \else
      \XeTeXcharclass `\- \z@
    \fi%
}

\def\portuguese@language{%
   \SetupPolyglossiaLangPatterns{\portuguese@variant}%
}%

\def\captionsportuguese@portuges{%
  \def\refname{Referências}%
  \def\abstractname{Resumo}%
  \def\bibname{Bibliografia}%
  \def\prefacename{Prefácio}%
  \def\chaptername{Capítulo}%
  \def\appendixname{Apêndice}%
  \def\contentsname{Conteúdo}%
  \def\listfigurename{Lista de Figuras}%
  \def\listtablename{Lista de Tabelas}%
  \def\indexname{Índice}%
  \def\figurename{Figura}%
  \def\tablename{Tabela}%
  \def\partname{Parte}%
  \def\pagename{Página}%
  \def\seename{ver}%
  \def\alsoname{ver também}%
  \def\enclname{Anexo}%
  \def\ccname{Com cópia a}%
  \def\headtoname{Para}%
  \def\proofname{Demonstração}%
  \def\glossaryname{Glossário}%
}

\def\captionsportuguese@brazil{%
   \def\refname{Referências}%
   \def\abstractname{Resumo}%
   \def\bibname{Referências Bibliográficas}%
   \def\prefacename{Prefácio}%
   \def\chaptername{Capítulo}%
   \def\appendixname{Apêndice}%
   \def\contentsname{Sumário}%
   \def\listfigurename{Lista de Figuras}%
   \def\listtablename{Lista de Tabelas}%
   \def\indexname{Índice Remissivo}%
   \def\figurename{Figura}%
   \def\tablename{Tabela}%
   \def\partname{Parte}%
   \def\pagename{Página}%
   \def\seename{veja}%
   \def\alsoname{veja também}%
   \def\enclname{Anexo}%
   \def\ccname{Cópia para}%
   \def\headtoname{Para}%
   \def\proofname{Demonstração}%
   \def\glossaryname{Glossário}%
}

\def\captionsportuguese{%
  \csname captionsportuguese@\portuguese@variant\endcsname%
}

\def\dateportuguese@portuges{%   
  \def\today{\number\day\space de\space\ifcase\month\or
    Janeiro\or Fevereiro\or Março\or Abril\or Maio\or Junho\or
    Julho\or Agosto\or Setembro\or Outubro\or Novembro\or Dezembro\fi
    \space de\space\number\year}%
}


\def\dateportuguese@brazil{%   
   \def\today{\number\day\space de\space\ifcase\month\or
      janeiro\or fevereiro\or março\or abril\or maio\or junho\or
      julho\or agosto\or setembro\or outubro\or novembro\or dezembro%
      \fi\space de\space\number\year}%
}

\def\dateportuguese{%
  \csname dateportuguese@\portuguese@variant\endcsname%
}

\def\noextras@portuguese{%
  \ifportuguese@babelshorthands\noportuguese@shorthands\fi%
  \noportuguese@hyphens%
}

\def\blockextras@portuguese{%
  \ifportuguese@babelshorthands\portuguese@shorthands\else\noportuguese@shorthands\fi%
  \ifportuguese@splithyphens\portuguese@hyphens\else\noportuguese@hyphens\fi%
}

\def\inlineextras@portuguese{%
  \ifportuguese@babelshorthands\portuguese@shorthands\else\noportuguese@shorthands\fi%
  \ifportuguese@splithyphens\portuguese@hyphens\else\noportuguese@hyphens\fi%
}

\def\nestedextras@portuguese{%
  \ifluatex%
    \ifportuguese@splithyphens\portuguese@hyphens\else\noportuguese@hyphens\fi%
  \fi%
}
     
\endinput
