LogoModulateCSS

Typography

I18n / L10n

This section details how ModulateCSS supports the creation of globally accessible websites by allowing developers to tailor content and interfaces to diverse audiences.

Learn how to effectively adapt your web projects to meet regional languages, cultural nuances, and local formatting conventions, enhancing the global reach and user experience of your applications.

Logical CSS Properties

CSS logical properties offer a dynamic styling approach that adapts seamlessly to different writing modes, including left-to-right (LTR), right-to-left (RTL), and vertical orientations. These properties are invaluable for crafting layouts that respond to varying text directions, ensuring inclusivity without requiring direction-specific styles.

Below is a comprehensive table mapping CSS logical properties to their traditional physical counterparts. This comparison not only deepens your understanding but also serves as a handy reference for transitioning to logical property usage in your web development projects.

Logical PropertyPhysical Counterpart
Size and Dimension
inline-sizewidth
block-sizeheight
Margin
margin-inlinemargin-left + margin-right
margin-inline-startmargin-left
margin-inline-endmargin-right
margin-blockmargin-top + margin-bottom
margin-block-startmargin-top
margin-block-endmargin-bottom
Padding
padding-inlinepadding-left + padding-right
padding-inline-startpadding-left
padding-inline-endpadding-right
padding-blockpadding-top + padding-bottom
padding-block-startpadding-top
padding-block-endpadding-bottom
Positioning and Offsets
insettop + right + bottom + left
inset-inlineleft + right
inset-inline-startleft
inset-inline-endright
inset-blocktop + bottom
inset-block-starttop
inset-block-endbottom
Text and Alignment
text-align: starttext-align: left
text-align: endtext-align: right
Border Width
border-inline-widthborder-left-width + border-right-width
border-inline-start-widthborder-left-width
border-inline-end-widthborder-right-width
border-block-startborder-top-width + border-bottom-width
border-block-start-widthborder-top-width
border-block-end-widthborder-bottom-width
Border Color
border-inline-colorborder-left-color + border-right-color
border-inline-start-colorborder-left-color
border-inline-end-colorborder-right-color
border-block-colorborder-top-color + border-bottom-color
border-block-start-colorborder-top-color
border-block-end-colorborder-bottom-color
Border Style
border-inline-styleborder-left-style + border-right-style
border-inline-start-styleborder-left-style
border-inline-end-styleborder-right-style
border-block-styleborder-top-style + border-bottom-style
border-block-start-styleborder-top-style
border-block-end-styleborder-bottom-style
Border Radius
border-start-start-radiusborder-top-left-radius
border-start-end-radiusborder-top-right-radius
border-end-end-radiusborder-bottom-right-radius
border-end-start-radiusborder-bottom-left-radius

Understanding and adopting CSS logical properties is a key step toward more adaptable, flexible, and inclusive web design, ensuring content is effectively presented, no matter the writing direction or layout requirements.

Quotation Marks

The precise handling of quotes and blockquotes is paramount. This precision not only preserves the integrity of textual quotations but also significantly enhances their readability, especially in a multilingual and multicultural landscape.

ModulateCSS leverages CSS's capabilities to manage quotation marks, adhering to the typographic conventions of various languages. This commitment to linguistic accuracy plays a crucial role in the internationalization of web projects.

Proper Quotation Management

Enhanced Quotations

The CSS quotes property allows for the specification of quotation marks across different levels of quotations. This is particularly useful for languages with distinct quotation styles or nested quotes.

Configuring Quotation Marks

With the quotes property, you can set the style for opening and closing quotation marks. This enables language-specific configurations within a stylesheet using language selectors.

/* English Language Setup */
:lang(en) {
    --dir: ltr;
    --quotes-spacing: 0.12em; /* Define spacing units */
    --quotes-primary-open: "“";
    --quotes-primary-close: "”";
    --quotes-secondary-open: "‘";
    --quotes-secondary-close: "’";
}

You can extend this setup to include any required languages, similar to the example provided. ModulateCSS seamlessly integrates these configurations behind the scenes.

Conclusion

By adeptly applying CSS to quotes and blockquotes, web developers can greatly enhance the global appeal and inclusivity of their content. Strategic use of the quotes property and semantic HTML, along with culturally considerate design, ensures accurate and respectful presentation of quotations across linguistic boundaries. This approach is integral to creating web experiences that resonate on a truly global scale.

Languages (i18n)

Afrikaans

i18n.css
:lang(af) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "“";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‘";
    --quotes-secondary-close: "‘";
}

Arabic

i18n.css
:lang(ar) {
    --dir: rtl;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Arabic (United Arab Emirates)

i18n.css
:lang(ar-ae) {
    --dir: rtl;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Arabic (Bahrain)

i18n.css
:lang(ar-bh) {
    --dir: rtl;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Arabic (Algeria)

i18n.css
:lang(ar-dz) {
    --dir: rtl;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Arabic (Egypt)

i18n.css
:lang(ar-eg) {
    --dir: rtl;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Arabic (Iraq)

i18n.css
:lang(ar-iq) {
    --dir: rtl;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Arabic (Jordan)

i18n.css
:lang(ar-jo) {
    --dir: rtl;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Arabic (Kuwait)

i18n.css
:lang(ar-kw) {
    --dir: rtl;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Arabic (Lebanon)

i18n.css
:lang(ar-lb) {
    --dir: rtl;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Arabic (Libya)

i18n.css
:lang(ar-ly) {
    --dir: rtl;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Arabic (Morocco)

i18n.css
:lang(ar-ma) {
    --dir: rtl;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Arabic (Oman)

i18n.css
:lang(ar-om) {
    --dir: rtl;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Arabic (Qatar)

i18n.css
:lang(ar-qa) {
    --dir: rtl;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Arabic (Saudi Arabia)

i18n.css
:lang(ar-sa) {
    --dir: rtl;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Arabic (Syria)

i18n.css
:lang(ar-sy) {
    --dir: rtl;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Arabic (Tunisia)

i18n.css
:lang(ar-tn) {
    --dir: rtl;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Arabic (Yemen)

i18n.css
:lang(ar-ye) {
    --dir: rtl;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Belarusian

i18n.css
:lang(be) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .12;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "„";
    --quotes-secondary-close: "“";
}

Bulgarian

i18n.css
:lang(bg) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‚";
    --quotes-secondary-close: "‘";
}

Catalan (Spain)

i18n.css
:lang(ca-es) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‚";
    --quotes-secondary-close: "‘";
}

Czech

i18n.css
:lang(cs) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‚";
    --quotes-secondary-close: "‘";
}

Danish

i18n.css
:lang(da) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‚";
    --quotes-secondary-close: "‘";
}

Danish (Denmark)

i18n.css
:lang(da-dk) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‚";
    --quotes-secondary-close: "‘";
}

German

i18n.css
:lang(de) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‚";
    --quotes-secondary-close: "‘";
}

German (Austria)

i18n.css
:lang(de-at) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‚";
    --quotes-secondary-close: "‘";
}

German (Switzerland)

i18n.css
:lang(de-ch) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

German (Germany)

i18n.css
:lang(de-de) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‚";
    --quotes-secondary-close: "‘";
}

German (Liechtenstein)

i18n.css
:lang(de-li) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

German (Luxembourg)

i18n.css
:lang(de-lu) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .25;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Greek

i18n.css
:lang(el) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "“";
    --quotes-secondary-close: "”";
}

English

i18n.css
:lang(en) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .12;
    --quotes-primary-open: "“";
    --quotes-primary-close: "”";
    --quotes-secondary-open: "‘";
    --quotes-secondary-close: "’";
}

English (Australia)

i18n.css
:lang(en-au) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .12;
    --quotes-primary-open: "‘";
    --quotes-primary-close: "’";
    --quotes-secondary-open: "“";
    --quotes-secondary-close: "”";
}

English (Canada)

i18n.css
:lang(en-ca) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .12;
    --quotes-primary-open: "‘";
    --quotes-primary-close: "’";
    --quotes-secondary-open: "“";
    --quotes-secondary-close: "”";
}

English (United Kingdom)

i18n.css
:lang(en-gb) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .12;
    --quotes-primary-open: "‘";
    --quotes-primary-close: "’";
    --quotes-secondary-open: "“";
    --quotes-secondary-close: "”";
}

English (Ireland)

i18n.css
:lang(en-ie) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .12;
    --quotes-primary-open: "‘";
    --quotes-primary-close: "’";
    --quotes-secondary-open: "“";
    --quotes-secondary-close: "”";
}

English (New Zealand)

i18n.css
:lang(en-nz) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .12;
    --quotes-primary-open: "‘";
    --quotes-primary-close: "’";
    --quotes-secondary-open: "“";
    --quotes-secondary-close: "”";
}

English (United States)

i18n.css
:lang(en-us) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .12;
    --quotes-primary-open: "“";
    --quotes-primary-close: "”";
    --quotes-secondary-open: "‘";
    --quotes-secondary-close: "’";
}

English (South Africa)

i18n.css
:lang(en-za) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .12;
    --quotes-primary-open: "‘";
    --quotes-primary-close: "’";
    --quotes-secondary-open: "“";
    --quotes-secondary-close: "”";
}

English (Zimbabwe)

i18n.css
:lang(en-zw) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .12;
    --quotes-primary-open: "‘";
    --quotes-primary-close: "’";
    --quotes-secondary-open: "“";
    --quotes-secondary-close: "”";
}

Spanish

i18n.css
:lang(es) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .04;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Spanish (Argentina)

i18n.css
:lang(es-ar) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .04;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Spanish (Bolivia)

i18n.css
:lang(es-bo) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .04;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Spanish (Chile)

i18n.css
:lang(es-cl) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .04;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Spanish (Colombia)

i18n.css
:lang(es-co) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .04;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Spanish (Costa Rica)

i18n.css
:lang(es-cr) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .04;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Spanish (Dominican Republic)

i18n.css
:lang(es-do) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .04;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Spanish (Ecuador)

i18n.css
:lang(es-ec) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .04;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Spanish (Spain)

i18n.css
:lang(es-es) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .04;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Spanish (Guatemala)

i18n.css
:lang(es-gt) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .04;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Spanish (Honduras)

i18n.css
:lang(es-hn) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .04;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Spanish (Mexico)

i18n.css
:lang(es-mx) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .04;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Spanish (Nicaragua)

i18n.css
:lang(es-ni) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .04;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Spanish (Panama)

i18n.css
:lang(es-pa) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .04;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Spanish (Peru)

i18n.css
:lang(es-pe) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .04;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Spanish (Puerto Rico)

i18n.css
:lang(es-pr) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .04;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Spanish (Paraguay)

i18n.css
:lang(es-py) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .04;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Spanish (El Salvador)

i18n.css
:lang(es-sv) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .04;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Spanish (Uruguay)

i18n.css
:lang(es-uy) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .04;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Spanish (Venezuela)

i18n.css
:lang(es-ve) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .04;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Estonian

i18n.css
:lang(et) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "”";
    --quotes-secondary-open: "„";
    --quotes-secondary-close: "”";
}

Basque

i18n.css
:lang(eu) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .04;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Persian

i18n.css
:lang(fa) {
    --dir: rtl;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "«";
    --quotes-secondary-close: "»";
}

Finnish

i18n.css
:lang(fi) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "”";
    --quotes-primary-close: "”";
    --quotes-secondary-open: "’";
    --quotes-secondary-close: "’";
}

Finnish (Finland)

i18n.css
:lang(fi-fi) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "”";
    --quotes-primary-close: "”";
    --quotes-secondary-open: "’";
    --quotes-secondary-close: "’";
}

Faroese

i18n.css
:lang(fo) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‚";
    --quotes-secondary-close: "‘";
}

French

i18n.css
:lang(fr) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .25;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

French (France)

i18n.css
:lang(fr-fr) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .25;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

French (Belgium)

i18n.css
:lang(fr-be) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .25;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

French (Canada)

i18n.css
:lang(fr-ca) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .25;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

French (Switzerland)

i18n.css
:lang(fr-ch) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

French (Luxembourg)

i18n.css
:lang(fr-lu) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .25;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

French (Monaco)

i18n.css
:lang(fr-mc) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .25;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Galician

i18n.css
:lang(gl) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .04;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Gujarati

i18n.css
:lang(gu) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‚";
    --quotes-secondary-close: "‘";
}

Hebrew

i18n.css
:lang(he) {
    --dir: rtl;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "“";
    --quotes-primary-close: "”";
    --quotes-secondary-open: "«";
    --quotes-secondary-close: "»";
}

Hindi

i18n.css
:lang(hi) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‚";
    --quotes-secondary-close: "‘";
}

Croatian

i18n.css
:lang(hr) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "”";
    --quotes-secondary-open: "›";
    --quotes-secondary-close: "‹";
}

Hungarian

i18n.css
:lang(hu) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "”";
    --quotes-secondary-open: "„";
    --quotes-secondary-close: "”";
}

Hungarian (Hungary)

i18n.css
:lang(hu-hu) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "”";
    --quotes-secondary-open: "„";
    --quotes-secondary-close: "”";
}

Armenian

i18n.css
:lang(hy) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "„";
    --quotes-secondary-close: "“";
}

Indonesian

i18n.css
:lang(id) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "”";
    --quotes-primary-close: "”";
    --quotes-secondary-open: "’";
    --quotes-secondary-close: "’";
}

Icelandic

i18n.css
:lang(is) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‚";
    --quotes-secondary-close: "‘";
}

Italian

i18n.css
:lang(it) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .12;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‘";
    --quotes-secondary-close: "’";
}

Italian (Switzerland)

i18n.css
:lang(it-ch) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .12;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‘";
    --quotes-secondary-close: "’";
}

Italian (Italy)

i18n.css
:lang(it-it) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .12;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‘";
    --quotes-secondary-close: "’";
}

Japanese

i18n.css
:lang(ja) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "「";
    --quotes-primary-close: "」";
    --quotes-secondary-open: "『";
    --quotes-secondary-close: "』";
}

Japanese (Japan)

i18n.css
:lang(ja-jp) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "「";
    --quotes-primary-close: "」";
    --quotes-secondary-open: "『";
    --quotes-secondary-close: "』";
}

Georgian

i18n.css
:lang(ka) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "„";
    --quotes-secondary-close: "“";
}

Kazakh

i18n.css
:lang(kk) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‚";
    --quotes-secondary-close: "‘";
}

Kannada

i18n.css
:lang(kn) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‚";
    --quotes-secondary-close: "‘";
}

Korean

i18n.css
:lang(ko) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "“";
    --quotes-primary-close: "”";
    --quotes-secondary-open: "‘";
    --quotes-secondary-close: "’";
}

Konkani

i18n.css
:lang(kok) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‚";
    --quotes-secondary-close: "‘";
}

Kyrgyz

i18n.css
:lang(ky) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‚";
    --quotes-secondary-close: "‘";
}

Lithuanian

i18n.css
:lang(lt) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‚";
    --quotes-secondary-close: "‘";
}

Latvian

i18n.css
:lang(lv) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‚";
    --quotes-secondary-close: "‘";
}

Latvian (Latvia)

i18n.css
:lang(lv-lv) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‚";
    --quotes-secondary-close: "‘";
}

Macedonian

i18n.css
:lang(mk) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‚";
    --quotes-secondary-close: "‘";
}

Mongolian

i18n.css
:lang(mn) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‚";
    --quotes-secondary-close: "‘";
}

Marathi

i18n.css
:lang(mr) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‚";
    --quotes-secondary-close: "‘";
}

Malay

i18n.css
:lang(ms) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‚";
    --quotes-secondary-close: "‘";
}

Malay (Brunei)

i18n.css
:lang(ms-bn) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‚";
    --quotes-secondary-close: "‘";
}

Malay (Malaysia)

i18n.css
:lang(ms-my) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‚";
    --quotes-secondary-close: "‘";
}

Burmese

i18n.css
:lang(my) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‚";
    --quotes-secondary-close: "‘";
}

Burmese (Myanmar)

i18n.css
:lang(my-mm) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‚";
    --quotes-secondary-close: "‘";
}

Dutch

i18n.css
:lang(nl) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "“";
    --quotes-primary-close: "”";
    --quotes-secondary-open: "‘";
    --quotes-secondary-close: "’";
}

Dutch (Belgium)

i18n.css
:lang(nl-be) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "“";
    --quotes-primary-close: "”";
    --quotes-secondary-open: "‘";
    --quotes-secondary-close: "’";
}

Dutch (Netherlands)

i18n.css
:lang(nl-nl) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "“";
    --quotes-primary-close: "”";
    --quotes-secondary-open: "‘";
    --quotes-secondary-close: "’";
}

Norwegian

i18n.css
:lang(no) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‘";
    --quotes-secondary-close: "’";
}

Norwegian (Norway)

i18n.css
:lang(no-no) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‘";
    --quotes-secondary-close: "’";
}

Punjabi

i18n.css
:lang(pa) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‚";
    --quotes-secondary-close: "‘";
}

Polish

i18n.css
:lang(pl) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "”";
    --quotes-secondary-open: "«";
    --quotes-secondary-close: "»";
}

Polish (Poland)

i18n.css
:lang(pl-pl) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "”";
    --quotes-secondary-open: "«";
    --quotes-secondary-close: "»";
}

Portuguese

i18n.css
:lang(pt) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .04;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "“";
    --quotes-secondary-close: "”";
}

Portuguese (Brazil)

i18n.css
:lang(pt-br) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "“";
    --quotes-primary-close: "”";
    --quotes-secondary-open: "‘";
    --quotes-secondary-close: "’";
}

Portuguese (Portugal)

i18n.css
:lang(pt-pt) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .04;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "“";
    --quotes-secondary-close: "”";
}

Romanian

i18n.css
:lang(ro) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "”";
    --quotes-secondary-open: "«";
    --quotes-secondary-close: "»";
}

Russian

i18n.css
:lang(ru) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "„";
    --quotes-secondary-close: "“";
}

Russian (Russia)

i18n.css
:lang(ru-ru) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "„";
    --quotes-secondary-close: "“";
}

Sanskrit

i18n.css
:lang(sa) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‚";
    --quotes-secondary-close: "‘";
}

Slovak

i18n.css
:lang(sk) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‚";
    --quotes-secondary-close: "‘";
}

Slovenian

i18n.css
:lang(sl) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‚";
    --quotes-secondary-close: "‘";
}

Albanian

i18n.css
:lang(sq) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "‹";
    --quotes-secondary-close: "›";
}

Serbian

i18n.css
:lang(sr) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‚";
    --quotes-secondary-close: "‘";
}

Swedish

i18n.css
:lang(sv) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "”";
    --quotes-primary-close: "”";
    --quotes-secondary-open: "’";
    --quotes-secondary-close: "’";
}

Swedish (Finland)

i18n.css
:lang(sv-fi) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "”";
    --quotes-primary-close: "”";
    --quotes-secondary-open: "’";
    --quotes-secondary-close: "’";
}

Swedish (Sweden)

i18n.css
:lang(sv-se) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "”";
    --quotes-primary-close: "”";
    --quotes-secondary-open: "’";
    --quotes-secondary-close: "’";
}

Swahili

i18n.css
:lang(sw) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‚";
    --quotes-secondary-close: "‘";
}

Tamil

i18n.css
:lang(ta) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‚";
    --quotes-secondary-close: "‘";
}

Telugu

i18n.css
:lang(te) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‚";
    --quotes-secondary-close: "‘";
}

Thai

i18n.css
:lang(th) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "“";
    --quotes-primary-close: "”";
    --quotes-secondary-open: "‘";
    --quotes-secondary-close: "’";
}

Turkish

i18n.css
:lang(tr) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "“";
    --quotes-primary-close: "”";
    --quotes-secondary-open: "‘";
    --quotes-secondary-close: "’";
}

Tatar

i18n.css
:lang(tt) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‚";
    --quotes-secondary-close: "‘";
}

Ukrainian

i18n.css
:lang(uk) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: .08;
    --quotes-primary-open: "«";
    --quotes-primary-close: "»";
    --quotes-secondary-open: "„";
    --quotes-secondary-close: "“";
}

Urdu

i18n.css
:lang(ur) {
    --dir: rtl;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‚";
    --quotes-secondary-close: "‘";
}

Vietnamese

i18n.css
:lang(vi) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "„";
    --quotes-primary-close: "“";
    --quotes-secondary-open: "‚";
    --quotes-secondary-close: "‘";
}

Chinese

i18n.css
:lang(zh) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "“";
    --quotes-primary-close: "”";
    --quotes-secondary-open: "‘";
    --quotes-secondary-close: "’";
}

Chinese (China)

i18n.css
:lang(zh-cn) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "“";
    --quotes-primary-close: "”";
    --quotes-secondary-open: "‘";
    --quotes-secondary-close: "’";
}

Chinese (Hong Kong)

i18n.css
:lang(zh-hk) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "“";
    --quotes-primary-close: "”";
    --quotes-secondary-open: "‘";
    --quotes-secondary-close: "’";
}

Chinese (Macau)

i18n.css
:lang(zh-mo) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "“";
    --quotes-primary-close: "”";
    --quotes-secondary-open: "‘";
    --quotes-secondary-close: "’";
}

Chinese (Singapore)

i18n.css
:lang(zh-sg) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "“";
    --quotes-primary-close: "”";
    --quotes-secondary-open: "‘";
    --quotes-secondary-close: "’";
}

Chinese (Taiwan)

i18n.css
:lang(zh-tw) {
    --dir: ltr;
    --writing-mode: horizontal-tb;
    --quotes-spacing: 0;
    --quotes-primary-open: "「";
    --quotes-primary-close: "」";
    --quotes-secondary-open: "『";
    --quotes-secondary-close: "』";
}