Giving the option globally can be a handy thing. The class file
passes the options further to packages. You mentioned the
language, let's have a look at it.
Internally, siunitx
loads package translator
(part of the
beamer bundle). translator
can see the global option for the
language and react by using the right dictionary.
Another famous instance where a global option is passed to a
package is draft
.
\begin{filecontents}{\jobname.cls}
\ProvidesClass{\jobname}[2014/10/15 test class TeX.SX]
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
\ProcessOptions\relax
\LoadClass[a4paper, 11pt]{article}
\renewcommand{\maketitle}{
\begin{center}
\Huge \@date
\end{center}
}
\endinput
\end{filecontents}
\documentclass[
draft,
%draft=true,
%ngerman
french
]{\jobname}
\usepackage{babel}
\usepackage{siunitx}
\usepackage{mwe}%loads graphicx
\begin{document}
\maketitle
Let the pizza dough leaven for \SIrange{18}{24}{\hour}. Is the
draft option working here? hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
\includegraphics{example-image}
\end{document}
Off-topic general advice
Are there any tripwires? Of course. Designing a new class is
a delicate thing. The standard classes come with some basic
options. The KOMA classes (a featureful enhancement of the
standard bundle) come with a whole load of options to make almost
any design change. Neither the standard nor KOMA classes do care
of any locales (except letter vs DIN paper). The user is in
charge.
An alternative to babel
is polyglossia
. Both do the same
thing, but polyglossia has another syntax. So giving ngerman
(or french
) as a global option isn't known by polyglossia and
hence ignored. Using the polyglossia syntax, translator
won't
know the option and hence ignore it.
You can catch some of the stuff, and take care of it, but it is
impossible to take every little instance of user behaviour into
account.
I once saw a custom class taking options via a key-value-syntax.
Please replace draft
by draft=true
in the above example and
take a look at the output. Package graphicx
doesn't know the
syntax and thus ignores it.