Update localization setup

This commit is contained in:
Jorge Vargas 2025-05-18 11:57:15 -06:00
parent a5fde1b6c8
commit 3a9f558672
7 changed files with 29 additions and 31 deletions

View file

@ -3,10 +3,10 @@ import { defineConfig, envField } from 'astro/config'
import tailwindcss from '@tailwindcss/vite' import tailwindcss from '@tailwindcss/vite'
import node from '@astrojs/node' import node from '@astrojs/node'
import react from '@astrojs/react' import react from '@astrojs/react'
import paraglide from '@inlang/paraglide-astro' import { paraglideVitePlugin } from '@inlang/paraglide-js'
import icon from 'astro-icon' import icon from 'astro-icon'
import { languageTags } from './project.inlang/settings.json' import { locales } from './project.inlang/settings.json'
// https://astro.build/config // https://astro.build/config
export default defineConfig({ export default defineConfig({
@ -31,19 +31,23 @@ export default defineConfig({
}, },
site: 'https://sittingonclouds.net', site: 'https://sittingonclouds.net',
i18n: { i18n: {
locales: languageTags, locales,
defaultLocale: 'en', defaultLocale: 'en',
routing: { routing: {
prefixDefaultLocale: false, prefixDefaultLocale: false,
redirectToDefaultLocale: true redirectToDefaultLocale: true
} }
}, },
integrations: [ integrations: [icon({ iconDir: 'src/img/icons' }), react()],
paraglide({ project: './project.inlang', outdir: './src/paraglide' }), vite: {
icon({ iconDir: 'src/img/icons' }), plugins: [
react() tailwindcss(),
], paraglideVitePlugin({
vite: { plugins: [tailwindcss()] }, project: './project.inlang',
outdir: './src/paraglide'
})
]
},
image: { domains: ['cdn.sittingonclouds.net'] }, image: { domains: ['cdn.sittingonclouds.net'] },
output: 'server', output: 'server',
adapter: node({ mode: 'standalone' }), adapter: node({ mode: 'standalone' }),
@ -51,7 +55,7 @@ export default defineConfig({
'/en/[...params]': '/[...params]', '/en/[...params]': '/[...params]',
'/profile': { status: 307, destination: '/maintenance' }, '/profile': { status: 307, destination: '/maintenance' },
'/profile/[username]': { status: 307, destination: '/maintenance' }, '/profile/[username]': { status: 307, destination: '/maintenance' },
'/request': { status: 307, destination: '/maintenance' } '/request': { status: 308, destination: '/requests' }
}, },
security: { security: {
checkOrigin: false checkOrigin: false

View file

@ -4,16 +4,14 @@
"version": "1.0.0", "version": "1.0.0",
"scripts": { "scripts": {
"dev": "astro dev", "dev": "astro dev",
"build": "npm run prisma:migrate && npm run paraglide:compile && astro build", "build": "npm run prisma:migrate && astro build",
"preview": "astro preview", "preview": "astro preview",
"prisma:build": "prisma migrate deploy && prisma generate --sql && tsx ./prisma/migrate.ts", "prisma:build": "prisma migrate deploy && prisma generate --sql && tsx ./prisma/migrate.ts"
"paraglide:compile": "paraglide-js compile --project ./project.inlang --outdir ./src\\paraglide"
}, },
"dependencies": { "dependencies": {
"@astrojs/node": "9.0.0", "@astrojs/node": "9.0.0",
"@astrojs/react": "4.1.3", "@astrojs/react": "4.1.3",
"@astrojs/rss": "4.0.11", "@astrojs/rss": "4.0.11",
"@inlang/paraglide-astro": "^0.2.2",
"@prisma/client": "^6.4.1", "@prisma/client": "^6.4.1",
"@tailwindcss/vite": "^4.0.7", "@tailwindcss/vite": "^4.0.7",
"@types/react": "^18.3.12", "@types/react": "^18.3.12",
@ -41,7 +39,7 @@
"use-immer": "^0.11.0" "use-immer": "^0.11.0"
}, },
"devDependencies": { "devDependencies": {
"@inlang/paraglide-js": "1.11.2", "@inlang/paraglide-js": "^2.0.12",
"@parcel/watcher": "^2.4.1", "@parcel/watcher": "^2.4.1",
"@types/nodemailer": "^6.4.17", "@types/nodemailer": "^6.4.17",
"concurrently": "^8.2.2", "concurrently": "^8.2.2",

View file

@ -1 +1 @@
021513eea48bfa4e8387b34adaf7bdc8f8f2c6a7b8fa2a20bc5f8a2a424f5295 52m6ykHaIPT1QnSo04

View file

@ -1,17 +1,12 @@
{ {
"$schema": "https://inlang.com/schema/project-settings", "$schema": "https://inlang.com/schema/project-settings",
"sourceLanguageTag": "en", "baseLocale": "en",
"languageTags": [ "locales": ["en"],
"en"
],
"modules": [ "modules": [
"https://cdn.jsdelivr.net/npm/@inlang/message-lint-rule-empty-pattern@latest/dist/index.js", "https://cdn.jsdelivr.net/npm/@inlang/plugin-message-format@4/dist/index.js",
"https://cdn.jsdelivr.net/npm/@inlang/message-lint-rule-missing-translation@latest/dist/index.js", "https://cdn.jsdelivr.net/npm/@inlang/plugin-m-function-matcher@2/dist/index.js"
"https://cdn.jsdelivr.net/npm/@inlang/message-lint-rule-without-source@latest/dist/index.js",
"https://cdn.jsdelivr.net/npm/@inlang/plugin-message-format@latest/dist/index.js",
"https://cdn.jsdelivr.net/npm/@inlang/plugin-m-function-matcher@latest/dist/index.js"
], ],
"plugin.inlang.messageFormat": { "plugin.inlang.messageFormat": {
"pathPattern": "./messages/{languageTag}.json" "pathPattern": "./messages/{locale}.json"
} }
} }

View file

@ -1,14 +1,13 @@
--- ---
import { Toaster } from 'react-hot-toast' import { Toaster } from 'react-hot-toast'
import { languageTag } from '../paraglide/runtime'
import Header from 'components/Header.astro' import Header from 'components/Header.astro'
import Footer from 'components/Footer.astro' import Footer from 'components/Footer.astro'
import 'styles/global.css' import 'styles/global.css'
--- ---
<html lang={languageTag()} dir={Astro.locals.paraglide.dir} class='h-full'> <html class='h-full'>
<head> <head>
<link rel='preconnect' href='https://fonts.googleapis.com' /> <link rel='preconnect' href='https://fonts.googleapis.com' />
<link rel='preconnect' href='https://fonts.gstatic.com' crossorigin /> <link rel='preconnect' href='https://fonts.gstatic.com' crossorigin />

View file

@ -1,5 +1,6 @@
import { auth } from 'auth' import { auth } from 'auth'
import { defineMiddleware } from 'astro:middleware' import { defineMiddleware } from 'astro:middleware'
import { paraglideMiddleware } from 'paraglide/server'
import PAGES from 'utils/pages.json' import PAGES from 'utils/pages.json'
import prismaClient from 'utils/prisma-client' import prismaClient from 'utils/prisma-client'
@ -30,5 +31,5 @@ export const onRequest = defineMiddleware(async (context, next) => {
context.locals.pages = [] context.locals.pages = []
} }
return next() return paraglideMiddleware(context.request, () => next())
}) })

View file

@ -6,6 +6,7 @@
"jsx": "react-jsx", "jsx": "react-jsx",
"jsxImportSource": "react", "jsxImportSource": "react",
"baseUrl": "src", "baseUrl": "src",
"strictNullChecks": true "strictNullChecks": true,
"allowJs": true
} }
} }