% \iffalse meta-comment % % File: siunitx-locale.dtx Copyright (C) 2020-2024 Joseph Wright % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this % license or (at your option) any later version. The latest version % of this license is in the file % % https://www.latex-project.org/lppl.txt % % This file is part of the "siunitx bundle" (The Work in LPPL) % and all files in that bundle must be distributed together. % % The released version of this bundle is available from CTAN. % % ----------------------------------------------------------------------- % % The development version of the bundle can be found at % % https://github.com/josephwright/siunitx % % for those people who are interested. % % ----------------------------------------------------------------------- % %<*driver> \documentclass{l3doc} % Additional commands needed in this source \ProvideDocumentCommand\email{m}{\href{mailto:#1}{\nolinkurl{#1}}} % The next line is needed so that \GetFileInfo will be able to pick up % version data \usepackage{siunitx} \begin{document} \DocInput{\jobname.dtx} \end{document} % % \fi % % \GetFileInfo{siunitx.sty} % % \title{^^A % \pkg{siunitx-locale} -- Localisation^^A % \thanks{This file describes \fileversion, % last revised \filedate.}^^A % } % % \author{^^A % Joseph Wright^^A % \thanks{^^A % E-mail: % \email{joseph@texdev.net}^^A % }^^A % } % % \date{Released \filedate} % % \maketitle % % \begin{documentation} % % This submodule is concerned with localisation of \pkg{siunitx} output % based on the locale. If the \pkg{translations} package is available, this % is loaded here and used to provide various fixed strings for output. % % \begin{function}{locale} % \begin{syntax} % |locale| = \meta{locale} % \end{syntax} % Selects the \meta{locale} used to apply standard settings for other % keys, principally |exponent-product|, |inter-unit-product| % and |output-decimal-marker|. % \end{function} % % \end{documentation} % % \begin{implementation} % % \section{\pkg{siunitx-locale} implementation} % % Start the \pkg{DocStrip} guards. % \begin{macrocode} %<*package> % \end{macrocode} % % Identify the internal prefix. % \begin{macrocode} %<@@=siunitx_locale> % \end{macrocode} % % \subsection{Locales} % % The basics for defining locales are easy: these are just meta keys. % \begin{macrocode} \keys_define:nn { siunitx } { locale .choice: , locale / DE .meta:n = { exponent-product = \cdot , inter-unit-product = \, , output-decimal-marker = { , } } , locale / FR .meta:n = { exponent-product = \times , inter-unit-product = \, , output-decimal-marker = { , } } , locale / IT .meta:n = { exponent-product = \times , inter-unit-product = \, , output-decimal-marker = { , } } , locale / PL .meta:n = { exponent-product = \cdot , inter-unit-product = \cdot , output-decimal-marker = { , } } , locale / SI .meta:n = { exponent-product = \times , inter-unit-product = \, , output-decimal-marker = { , } } , locale / UK .meta:n = { exponent-product = \times , inter-unit-product = \, , output-decimal-marker = . }, locale / US .meta:n = { exponent-product = \times , inter-unit-product = \, , output-decimal-marker = . } , locale / ZA .meta:n = { exponent-product = \times , inter-unit-product = \cdot , output-decimal-marker = { , } } } % \end{macrocode} % % \subsection{Localisation} % % Localisation makes use of the \pkg{translations} package. This only happens % if it is available, and is transparent to the user. % \begin{macrocode} \file_if_exist:nT { translations.sty } { \RequirePackage { translations } \DeclareTranslation { Catalan } { and } { i } \DeclareTranslation { Italian } { and } { e } \DeclareTranslation { Portuguese } { and } { e } \DeclareTranslation { Slovene } { and } { in } \DeclareTranslation { Italian } { from~(numerical~range) } { da } \DeclareTranslation { Brazilian } { to~(numerical~range) } { a } \DeclareTranslation { Catalan } { to~(numerical~range) } { a } \DeclareTranslation { English } { to~(numerical~range) } { to } \DeclareTranslation { French } { to~(numerical~range) } { à } \DeclareTranslation { German } { to~(numerical~range) } { bis } \DeclareTranslation { Italian } { to~(numerical~range) } { a } \DeclareTranslation { Polish } { to~(numerical~range) } { do } \DeclareTranslation { Portuguese } { to~(numerical~range) } { a } \DeclareTranslation { Slovene } { to~(numerical~range) } { do } \DeclareTranslation { Spanish } { to~(numerical~range) } { a } \keys_set:nn { siunitx } { list-final-separator = { \TextOrMath { \space } { \ } \text { \GetTranslation { and } } \TextOrMath { \space } { \ } } , list-pair-separator = { \TextOrMath { \space } { \ } \text { \GetTranslation { and } } \TextOrMath { \space } { \ } } , range-open-phrase = { \bool_lazy_or:nnF { \tl_if_blank_p:e { \GetTranslation { from~(numerical~range) } } } { \str_if_eq_p:ee { \GetTranslation { from~(numerical~range) } } { from~(numerical~range) } } { \TextOrMath { \space } { \ } \text { \GetTranslation { from~(numerical~range) } } \TextOrMath { \space } { \ } } } , range-phrase = { \TextOrMath { \space } { \ } \text { \GetTranslation { to~(numerical~range) } } \TextOrMath { \space } { \ } } } } % \end{macrocode} % % \end{implementation} % % \PrintIndex