Изменения формата даты из-за пользовательских Bibstrings

Изменения формата даты из-за пользовательских Bibstrings

Я добавил пользовательские bibstrings и использовал язык ngerman. Если я оставлю определение ngermanперед bibstrings пустым, он выведет желаемый формат даты. ДД.ММ.ГГГГ

Однако если я использую LanguageMapping ngermanили german, он будет отображаться как ДД/ММ/ГГГГ — почему так и как правильно отобразить правильный формат?

LBX-файл:

\ProvidesFile{custombibstrings.lbx}[2019 SoSe]
\DeclareBibliographyStrings{%
  inherit      = {ngerman},
  andothers    = {{et al\adddot}{et al\adddot}},
  byeditor     = {{herausgegeben von}{hg\adddotspace von}},
  bytranslator = {{übersetzt von} {{\"u}bers\adddotspace von}},
  editor       = {{Herausgeber}{Hg\adddot}},
  editors      = {{Herausgeber}{Hg\adddot}},
  urlseen      = {{letzter Abruf}{letzter Abruf}},
  paragraph    = {{Paragraph}{\S}},
  subparagraph = {{Absatz}{Abs\adddot}},
  article      = {{Artikel}{Art\adddot}},
  bydirector   = {{unter der Regie von}{unter der Regie von}},
  byproducer   = {{produziert von}{produziert von}},
  volume       = {{Vol\adddot}{Vol\adddot}},
  seriesseason = {{Staffel}{Staffel}},
  episode      = {{Episode}{Episode}},
  duration     = {{Spieldauer}{Spieldauer}},
  fsk          = {{FSK}{FSK}},
}

МВЭ

% arara: lualatex: { shell: true, synctex: true }
% arara: biber
% arara: lualatex: { shell: true, synctex: true }
\RequirePackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@online{Amano.2011,
 author = {Amano, Fumiko},
 title = {Testimonial Videos of Survivors},
 url = {https://www.global-peace.go.jp/OTHER/ot_german_pic_syousai.php?gbID=920&dt=161012173049},
 date = {2011-11-18},
 urldate = {2019-08-23},
 maintitle = {National Peace Memorial Halls for the Atomic Bomb Victims in Hiroshima and Nagasaki},
 organization = {{Net-Gtas Global Network}},
 keywords = {primary}
}
\end{filecontents*}
\documentclass[
  12pt,
  a4paper,
  headings=standardclasses,
  listof=totoc,
  numbers=noenddot
]{scrartcl}

\usepackage{showframe}
\usepackage[left=2.50cm, right=2.50cm, top=2.50cm, bottom=2.00cm, footskip=1cm]{geometry}
\usepackage[onehalfspacing]{setspace}
\usepackage[main=ngerman, english]{babel}
\usepackage[babel, german=quotes]{csquotes}
\usepackage[ngerman]{isodate}
\usepackage[ngerman]{datetime}

\usepackage[match,MogaHMinEx90]{luatexja-preset}
\setmainjfont{MogaHMinEx90}
\usepackage{luatexja-ruby}
\ltjsetparameter{jacharrange={-3}} %    punctuation is Latin

\usepackage[
  backend=biber,
  style=ext-authoryear,
  sorting=nyvt,
  datamodel=customstyles,
  maxnames=25,
  innamebeforetitle=true,
  usetranslator=true,
  alldates=terse,
  labeldate=year,
  dashed=false,
  isbn=false
]{biblatex}
\addbibresource{\jobname.bib}
\usepackage[hidelinks, pdfencoding=auto]{hyperref}
\begin{filecontents}{customstyles.dbx}
\DeclareDatamodelEntrytypes{video}
\DeclareDatamodelFields[type=field,datatype=literal]{
  duration,
  format,
  type,
}
\DeclareDatamodelFields[type=list,datatype=name]{
  director,
  producer,
}
\DeclareDatamodelFields[type=field, datatype=verbatim]{
  fsk,
  seriesseason,
  episode,
}
\DeclareDatamodelEntryfields[video]{
  duration,
  director,
  episode,
  format,
  fsk,
  producer,
  seriesseason,
  type,
}
\end{filecontents}
% regarded in custombibstrings
\NewBibliographyString{bydirector,duration,episode,format,fsk,paragraph,subparagraph,article,byproducer,seriesseason}
\DeclareLanguageMapping{german}{custombibstrings}

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map[overwrite=false]{
      \pertype{article}
      \step[fieldsource=entrysubtype, match=\regexp{\Anewspaper\Z}, final]
      \step[fieldsource=journal, final]
      \step[fieldset=author, origfieldval, final]
      \step[fieldsource=author, match=\regexp{\A(.*)\Z}, replace=\regexp{\{$1\}}]
      \step[fieldset=author+an, fieldvalue={1=journalauthor}]
      \step[fieldset=options, fieldvalue={journalauthor}]
    }
  }
}

% smallcaps
\newtoggle{bbx@journalauthor}
\DeclareEntryOption[boolean]{journalauthor}[true]{%
\settoggle{bbx@journalauthor}{#1}}

\renewcommand{\mkbibnamefamily}[1]{%
  \ifitemannotation{journalauthor}
    {\mkbibemph{#1}}
    {\textsc{#1}}}

\newtoggle{bbx@director}
\DeclareEntryOption[boolean]{director}[true]{%
\settoggle{bbx@director}{#1}}

\renewcommand{\mkbibnamefamily}[1]{%
  \ifitemannotation{director}
    {\mkbibemph{#1}}
    {\textsc{#1}}}

\newtoggle{bbx@producer}
\DeclareEntryOption[boolean]{producer}[true]{%
\settoggle{bbx@producer}{#1}}

\renewcommand{\mkbibnamefamily}[1]{%
  \ifitemannotation{producer}
    {\mkbibemph{#1}}
    {\textsc{#1}}}    

\DeclareDelimFormat[bib]{nametitledelim}{\addcolon\space}

% editor in parentheses
\DeclareDelimFormat{editortypedelim}{\addspace} 
\DeclareFieldFormat{editortype}{\mkbibparens{#1}}
\DeclareDelimAlias{translatortypedelim}{editortypedelim}
\DeclareFieldAlias{translatortype}{editortype}

\DeclareFieldFormat
  [article,inbook,incollection,inproceedings,patent,online]
  {title}{#1\isdot}
\DeclareFieldFormat
  [thesis,unpublished]
  {title}{\mkbibemph{#1}\isdot} % thesis title italic

% no period after addon titles
\renewcommand*{\titleaddonpunct}{\addspace}
\DeclareFieldFormat{titleaddon}{\mkbibbrackets{#1}}
\DeclareFieldAlias{booktitleaddon}{titleaddon}
\DeclareFieldAlias{maintitleaddon}{titleaddon}
\DeclareFieldAlias{journaltitleaddon}{titleaddon}
\DeclareFieldAlias{lawtitleaddon}{titleaddon}
\DeclareFieldAlias{subtitleaddon}{titleaddon}

\newbibmacro{online:editor+maintitle}{% organization in front of maintitle
  \printlist{organization}%
  \clearlist{organization}%
  \setunit*{\addcolon\space}%
  \printnames{editor}%
  \setunit*{\addcolon\space}%
  \usebibmacro{maintitle}}

\usepackage{xpatch}
\xpatchbibdriver{online}
  {\usebibmacro{byeditor+others}}
  {\usebibmacro{online:editor+maintitle}}
  {}{}
\xpatchbibmacro{editorstrg}{\bibstring}{\bibcpstring}{}{}
\xpatchbibmacro{editorstrg}{\bibstring}{\bibcpstring}{}{}

\renewbibmacro*{in:}{%
  \iftoggle{bbx@journalauthor}
    {}
    {\printtext{%
     \bibstring{in}\intitlepunct}}}

\DeclareNameAlias{ineditor}{sortname}

\renewcommand*{\volnumdelim}{\addcomma\space}

% set online sources as per IOA
\renewbibmacro*{addendum+pubstate}{%
  \setunit{\space}%
  \printfield{addendum}%
  \newunit\newblock
  \printfield{pubstate}}

 \DeclareListFormat[online,law]{organization}{% organization in caps 
  \textsc{%
    \usebibmacro{list:delim}{#1}%
    #1\isdot
    \usebibmacro{list:andothers}}} 

\urlstyle{same}% 
\DeclareFieldFormat{url}{\url{#1}}
\DeclareFieldFormat{urldate}{\mkbibparens{\bibstring{urlseen}\addcolon\space#1}}


%----------------------------------------------------------------------------
%   CITING
%----------------------------------------------------------------------------
\makeatletter 
\renewbibmacro*{cite:labeldate+extradate}{%
  \iffieldundef{labelyear}
    {}
    {\printtext[extblx@inner\blx@delimcontext delims]{%
       \printtext[bibhyperref]{%
         \iftoggle{bbx@journalauthor}
           {\printfield{issue}%
            \setunit{\addcomma\space}%
            \printtext[\blx@delimcontext labeldate]{%
              \printdateextra}}
           {\printtext[\blx@delimcontext labeldate]{%
              \printlabeldateextra}}}}}}
\makeatother

\renewcommand\postnotedelim{\addcolon\addspace}
\DeclareFieldFormat{postnote}{\mknormrange{#1}}
\DeclareFieldFormat{multipostnote}{\mknormrange{#1}}

%----------------------------------------------------------------------------
%   MAIN
%----------------------------------------------------------------------------
\begin{document}
\nocite{*} 
\printbibliography[heading=bibintoc,title={Literaturverzeichnis}]
\end{document}

решение1

Файлы .lbxвсегда должны содержать определения как минимум двух вещей.

  1. Библиографияструны\DeclareBibliographyStrings)
  2. и библиографиядополнения(в основном обработка дат, формат порядковых числительных и т. д. с помощью \DeclareBibliographyExtras).

В .lbxфайле в настоящее время отсутствует определение для библиографических дополнений. Мой biblatexдаже жалуется на это в.log

Package biblatex Warning: Using fallback definition for \mkbibdateshort.
(biblatex)                The command should be defined in the .lbx file.
(biblatex)                If you see this message, the .lbx file could not be
(biblatex)                loaded, is faulty or does not contain a definition
(biblatex)                for \mkbibdateshort.


Package biblatex Warning: Using fallback definition for \mkbibdateshort.
(biblatex)                The command should be defined in the .lbx file.
(biblatex)                If you see this message, the .lbx file could not be
(biblatex)                loaded, is faulty or does not contain a definition
(biblatex)                for \mkbibdateshort.

Поскольку вы по сути пишете новый .lbxфайл, вам нужно будет унаследовать библиографические дополнения из другого языка или определить все необходимые команды с нуля. В вашем случае наследование от ngermanс \InheritBibliographyExtras{ngerman}кажется лучшим вариантом. Вы по-прежнему можете перезаписать определения с помощью \DeclareBibliographyExtras.

Аналогичная ситуация и со строками библиографии, но там наследование обеспечивается специальной парой ключ-значение inherit = {ngerman},в \DeclareBibliographyStrings.

Я настоятельно рекомендую вам сделать себе одолжение и добавить название языка к общему имени файла, custombibstrings.lbxчтобы сделать его читабельным custombibstrings-ngerman.lbx(конечно, если вы сможете придумать более описательное имя, custombibstringsэто также может быть полезно...)

\ProvidesFile{custombibstrings-ngerman.lbx}[2019 SoSe]

\InheritBibliographyExtras{ngerman}

\DeclareBibliographyStrings{%
  inherit      = {ngerman},
  andothers    = {{et al\adddot}{et al\adddot}},
  byeditor     = {{herausgegeben von}{hg\adddotspace von}},
  bytranslator = {{übersetzt von} {übers\adddotspace von}},
  editor       = {{Herausgeber}{Hg\adddot}},
  editors      = {{Herausgeber}{Hg\adddot}},
  urlseen      = {{letzter Abruf}{letzter Abruf}},
  paragraph    = {{Paragraph}{\S}},
  subparagraph = {{Absatz}{Abs\adddot}},
  article      = {{Artikel}{Art\adddot}},
  bydirector   = {{unter der Regie von}{unter der Regie von}},
  byproducer   = {{produziert von}{produziert von}},
  volume       = {{Vol\adddot}{Vol\adddot}},
  seriesseason = {{Staffel}{Staffel}},
  episode      = {{Episode}{Episode}},
  duration     = {{Spieldauer}{Spieldauer}},
  fsk          = {{FSK}{FSK}},
}

Естественно, вам тогда понадобится

\DeclareLanguageMapping{ngerman}{custombibstrings-ngerman}

С этим файлом и этой одной измененной строкой MWE выдает

Амано, Фумико (18.11.2011): Видеозаписи свидетельских показаний выживших. Глобальная сеть Net-Gtas: Национальные мемориальные залы мира жертвам атомной бомбардировки в Хиросиме и Нагасаки. https://www.global-peace.go.jp/OTHER/ot german pic syousai.php?gbID=920&dt=161012173049 (дата последнего обращения: 23.08.2019).

редактироватьИзменился {\"u}bers\adddotspace vonна übers\adddotspace von.

Связанный контент