product icon

Paraglide JS

App

Multi-Tenancy

URLPatterns can be used to configure multi-tenancy in your application.

Configuration

To set up multi-tenancy, define URL patterns. Here is an example configuration:

await compile({
	project: "./project.inlang",
	urlPatterns: [
		// 1) customer1.fr => root locale is fr, sub-locale is /en/
		{
			pattern: ":protocol://customer1.fr/:locale(en)?/:path(.*)?",
			deLocalizedNamedGroups: { locale: null },
			localizedNamedGroups: {
				en: { locale: "en" },
				fr: { locale: null },
			},
		},
		// 2) customer2.com => root locale is en, sub-locale is /fr/
		{
			pattern: ":protocol://customer2.com/:locale(fr)?/:path(.*)?",
			localizedNamedGroups: {
				en: { locale: null },
				fr: { locale: "fr" },
			},
			deLocalizedNamedGroups: { locale: "fr" },
		},
		// 3) Any other domain => path-based for en/fr
		{
			pattern: ":protocol://:domain(.*)/:locale/:path(.*)?",
			deLocalizedNamedGroups: {},
			localizedNamedGroups: {
				en: { locale: "en" },
				fr: { locale: "fr" },
			},
		},
	],
});

Customer 1

  • Localizing French to French:

    localizeHref("https://customer1.fr/about", { locale: "fr" });
    // Output: "https://customer1.fr/about"
    
  • Localizing from French to English:

    localizeHref("https://customer1.fr/about", { locale: "en" });
    // Output: "https://customer1.fr/en/about"
    
  • De-localizing French:

    deLocalizeHref("https://customer1.fr/en/about");
    // Output: "https://customer1.fr/about"
    

Customer 2

  • Localizing English to English:

    localizeHref("https://customer2.com/about", { locale: "en" });
    // Output: "https://customer2.com/about"
    
  • Localizing from English to French:

    localizeHref("https://customer2.com/about", { locale: "fr" });
    // Output: "https://customer2.com/fr/about"
    
  • De-localizing French:

    deLocalizeHref("https://customer2.com/about");
    // Output: "https://customer2.com/fr/about"
    

Other Domains

For any other domain, the path-based localization will be used for English and French.

localizeHref("https://example.com/about", { locale: "fr" });
// Output: "https://example.com/fr/about"

localizeHref("https://example.com/fr/about", { locale: "en" });
// Output: "https://example.com/about"