翻译参考书目条目字段中的内容(biblatex)

翻译参考书目条目字段中的内容(biblatex)

@thesis我的文件中的条目中包含了.bib以论文当地语言书写的机构名称和类型。我需要将这些内容翻译成英语。例如,我需要翻译机构名称,例如

奥斯陆大学

卑尔根大学

阿格德的高中

奥斯陆大学

卑尔根大学

阿格德尔大学学院

并翻译类型名称,如

霍维多普盖夫

重型设备搬运

马斯特奥普盖夫

主干论文

主干论文

硕士论文

根据我做过的类似转换(将参考书目 (biblatex) 中的美国邮政编码 (CA) 更改为 AP 样式手册缩写 (加利福尼亚州)),我模糊地知道该怎么做,但我不知道如何准确地实现它:

\DeclareSourcemap{
  \maps[datatype = bibtex]{
    \map{
      \step[fieldsource = institution,
          match = , % <- strings like "Universitetet i Oslo", "Universitetet i Bergen"
          replace = ] % <- strings like "University of Oslo", "University of Bergen"
    }
    \map{
      \step[fieldsource = type,
          match = , % <- strings like "Hovedoppgave", "Masteroppgave"
          replace = ] % <- strings like "Main subject thesis", "MA thesis"
    }
  }
}

编辑

当我需要替换的字符串包含非 ASCII 字符时,这样做似乎有问题,例如æøå

\documentclass{article}
\usepackage[style = authoryear-comp]{biblatex}
\usepackage{fontspec,filecontents}
\begin{filecontents}{\jobname.bib}
@THESIS{aasen2004,
    AUTHOR = "Anita Aasen",
    INSTITUTION = "Universitetet i Oslo",
    TITLE = "Språklig nivellering i Oslo-regionen",
    TYPE = "Hovedfagsoppgave i nordisk språk og litteratur",
    YEAR = "2004",
    SUBTITLE = "Ungdommers valg av språklige varianter i Follo"}
\end{filecontents}
\DeclareSourcemap{
  \maps[datatype = bibtex]{
    \map{
       \step[fieldsource = type,
          match = {Hovedfagsoppgave i nordisk språk og litteratur}, 
          replace = {Main subject thesis}]
    }
  }
}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}

在此处输入图片描述

答案1

这是一个使用\regexps 的解决方案

\DeclareSourcemap{
  \maps[datatype = bibtex]{
    \map{
      \step[fieldsource = institution,
          match = \regexp{Universitetet(\s)i},           
          replace = \regexp{University$1of}]
      \step[fieldsource = institution,
        match = \regexp{Høgskolen(\s)i(\s)(.*)},
        replace = \regexp{$3$1University$2College}
      ]
      }
    \map{
      \step[fieldsource = type,
          match = {Hovedoppgave}, 
          replace = {Main subject thesis} ]
      \step[fieldsource = type,
          match = {Hovedfagsavhandling}
          replace = {Main subject thesis}]
      \step[fieldsource = type,
          match = {Masteroppgave},
          replace = {MA Thesis}]
    }
  }
}

答案2

我不会为此使用正则表达式。为本地字符串定义命令并将它们放在不同的 tex 文件中不是更容易吗?例如:

swedish.tex:

\newcommand*{\strhogskolen}{Høgskolen i Agder}


english.tex:

\newcommand*{\strhogskolen}{Agder University College}

在您的主 texfile 中,您只需通过包含本地文件\input{swedish}并在 biblatex 文件中使用它,如下所示:

@book{somebook,
author={an author},
title={title},
location={\strhogskolen}
}

相关内容