Skip to main content
โšก Calmops

LaTeX Multilingual Documents: Supporting Multiple Languages

Introduction

LaTeX supports multilingual documents through babel and polyglossia packages, enabling typesetting in virtually any language. Whether you need to write in multiple languages within one document or create documents entirely in non-English languages, LaTeX provides comprehensive support.

This guide covers internationalization setup, language-specific features, and best practices for multilingual documents.

Babel Package

Basic Setup

\usepackage[english]{babel}

\addto\captionsenglish{%
  \def\figurename{Figure}%
  \def\tablename{Table}%
}

Multiple Languages

\usepackage[english,german,french]{babel}

\selectlanguage{english}
\section{Introduction}

\selectlanguage{german}
\section{Einleitung}

\selectlanguage{french}
\section{Introduction}

Language Switching Shorthands

\usepackage[german,french]{babel}

\shorthandoff{"}

\begin{otherlanguage}{german}
Dies ist ein deutscher Absatz.
\end{otherlanguage}

\begin{otherlanguage}{french}
Ceci est un paragraphe franรงais.
\end{otherlanguage}

Polyglossia Package

Basic Setup (XeLaTeX/LuaLaTeX)

\usepackage{polyglossia}

\setdefaultlanguage{english}
\setotherlanguage{german}
\setotherlanguage{french}

Language Configuration

\usepackage{polyglossia}

\setdefaultlanguage[variant=american]{english}
\setdefaultlanguage[spelling=new,babelshorthands=true]{german}
\setdefaultlanguage{french}

\setotherlanguages{greek,russian,japanese}

Language-Specific Features

German

\usepackage[german]{babel}

% Shorthands
\shorthandoff{"}
\addto\extrasgerman{\languageshorthands{german}}

% Umlauts
GroรŸe = Large
GrรถรŸe = Size (different!)

French

\usepackage[french]{babel}

% Spacing
\og Guillemets \fg{} 
\frenchquote{Text}

% Non-breaking spaces
~ in numbers: 10~000

Spanish

\usepackage[spanish]{babel}

\spanishdecimal{.}
\spanishdash{-}

% Inverted punctuation for dialogue
\textquote{texto}

RTL Languages

Right-to-Left Scripts

\usepackage{polyglossia}
\setdefaultlanguage{arabic}

\begin{Arabic}
ู†ุต ุนุฑุจูŠ
\end{Arabic}

Bidirectional Text

\usepackage{bidi}

\beginRTL
RTL text here
\endRTL

% Mixed LTR/RTL
This is English \textarabic{ู†ุต ุนุฑุจูŠ} and more English.

Unicode and Encodings

Input Encoding

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

XeLaTeX/LuaLaTeX Unicode

\usepackage{fontspec}

% System fonts with Unicode
\setmainfont{Charis SIL}
\setmainfont{Times New Roman}

Font Support

\usepackage{fontspec}

% Noto fonts for comprehensive Unicode
\setmainfont{Noto Serif}
\setsansfont{Noto Sans}
\setmonofont{Noto Sans Mono}

% Language-specific fonts
\newfontfamily\arabicfont[Script=Arabic]{Amiri}
\newfontfamily\hebrewfont[Script=Hebrew]{Noto Sans Hebrew}

Hyphenation

Custom Hyphenation

\hyphenation{
  com-pu-ter
  multi-me-dia
  euro-pe-an
}

% Language-specific
\addlanguage{russian}
\russianhyphens

Disable Hyphenation

% For specific paragraphs
\begin{hyphenrules}{nohyphenation}
Text without hyphenation...
\end{hyphenrules}

% Or globally
\language=\catcode`\=

Multilingual Index

Babel Index

\usepackage[splitindex]{imakeidx}

\makeindex

\index{Word (German: Wort)}
\index[german]{Wort|see{Word}}

Multiple Language Indexes

\makeindex[name=english,title=Index]
\makeindex[name=german,title=Stichwortverzeichnis]
\makeindex[name=french,title=Index thรฉmatique]

\index[english]{Language}
\index[german]{Sprache}
\index[french]{Langue}

\printindex[english]
\printindex[german]
\printindex[french]

Date Formatting

Language-Specific Dates

\usepackage{datetime}

\selectlanguage{english}
\today

\selectlanguage{german}
\today

\selectlanguage{french}
\today

% Custom formats
\newdateformat{american}{\monthname[\THEMONTH]\ \THEDAY, \THEYEAR}
\american

Common Languages Setup

Chinese

\usepackage{ctex}

% Or with XeLaTeX
\usepackage{xeCJK}
\setCJKmainfont{Noto Serif SC}

Japanese

\usepackage{luatexja-fontspec}
\setmainjfont{Noto Serif JP}

\begin{japanese}
ๆ—ฅๆœฌ่ชžใฎใƒ†ใ‚ญใ‚นใƒˆ
\end{japanese}

Russian/Cyrillic

\usepackage[OT2,T2A]{fontenc}
\usepackage[utf8]{inputenc}

% Or with XeLaTeX
\usepackage{fontspec}
\setmainfont{Noto Serif}
\newfontfamily\cyrillicfont{Noto Serif}

Troubleshooting

Encoding Issues

% Ensure UTF-8
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

% For XeLaTeX
\usepackage{fontspec}

Missing Hyphenation

\usepackage{babel}
\addto\extraslanguage{%
  \hyphenation{word-not-hyphenated}
}

Best Practices

Document Organization

% Define languages in preamble
\usepackage[english,main=ngerman]{babel}

% Switch languages in document
\selectlanguage{english}
\section{English Section}

\selectlanguage{german}
\section{Deutscher Abschnitt}

Font Selection

Choose fonts that support all required scripts:

  • Noto Sans/Serif: Comprehensive Unicode
  • Charis SIL: Latin languages
  • Amiri: Arabic
  • Noto Sans JP/CN/KR: CJK

Conclusion

LaTeX provides robust multilingual support through babel and polyglossia. With proper configuration, you can create professional documents in any language, handle mixed-language text, and produce properly hyphenated output.

Choose the appropriate package for your engineโ€”babel for pdfLaTeX, polyglossia for XeLaTeX/LuaLaTeXโ€”and ensure you have appropriate fonts installed.

Resources

Comments