Now that you have set up the config, each .astro page will have additional renders with your other languages. For example, src/pages/about.astro will render as:
/about/
/es/about/
/fr/about/
If you have enabled redirectDefaultLocale (true by default), redirects will be:
/en/about/ => /about/
Please note that the getStaticPaths() function will only run once. This limitation means that you cannot have translated urls, such as /es/acerca-de/ for /about/. However, it also ensures compatibility with @astrojs/sitemap.
The Astro frontmatter and page content is re-run for every translated page. For example, the Astro.url.pathname will be:
/about/
/es/about/
/fr/about/
It is up to you to detect which language is being rendered. You can use Astro content collections or any i18n UI framework, such as react-i18next, for your translations. Here is a pure Hello World example:
---
import { getLocale } from "astro-i18n-aut";
import Layout from "../layouts/Layout.astro";
const locale = getLocale(Astro.url);
let title: string;
switch (locale) {
case "es":
title = "Β‘Hola Mundo!";
break;
case "fr":
title = "Bonjour Monde!";
break;
default:
title = "Hello World!";
}
---
<Layout title={title}>
<h1>{title}</h1>
</Layout>
Several helper functions are included to make handling locales easier.
Astro config options
Please see the official Astro docs for more details:
You can exclude pages or directories from being built by prefixing their names with an underscore (_). Files with the _ prefix wonβt be recognized by the router and wonβt be placed into the dist/ directory.
You can use this to temporarily disable pages, and also to put tests, utilities, and components in the same folder as their related pages.
Unfortunately, this excluding pages feature is not supported. Please only keep pages in your pages directory.
You can still exclude pages prefixed with an underscore (_) by adding pages/**/_* to the ignore glob patterns:
With this library and Astro Content Collections, you can keep your Markdown separate and organized in content, while using pages/blog/index.astro and pages/blog/[slug].astro to render all of your content, even with a defaultLocale! Here is an example folder structure:
Astro does not support .tsx or .jsx as page file types.
For UI frameworks like React and Vue, use them how you normally would with Astro by importing them as components.
Feel free to pass the translated content title={t('title')} or locale locale={locale} as props.
Endpoints
By default, all pages in pages/api/**/* are ignored.
For .ts and .js endpoints, how you handle multiple locales is up to you. As endpoints are not user-facing and there are many different ways to use endpoints, we leave the implementation up to your preferences.
License
MIT Licensed
Contributing
PRs welcome! Thank you for your help. Read more in the contributing guide for reporting bugs and making PRs.
The npm package astro-i18n-aut receives a total of 1,389 weekly downloads. As such, astro-i18n-aut popularity was classified as popular.
We found that astro-i18n-aut demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago.Β It has 1 open source maintainer collaborating on the project.
Package last updated on 10 Dec 2023
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.
A Stanford study reveals 9.5% of engineers contribute almost nothing, costing tech $90B annually, with remote work fueling the rise of "ghost engineers."