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.
Comments