@better-i18n/core 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/utils/locale.d.ts +11 -1
- package/dist/utils/locale.d.ts.map +1 -1
- package/dist/utils/locale.js +16 -0
- package/dist/utils/locale.js.map +1 -1
- package/package.json +1 -1
package/dist/utils/locale.d.ts
CHANGED
|
@@ -31,10 +31,12 @@ export interface LocaleConfig {
|
|
|
31
31
|
* Follows next-intl / Paraglide JS convention.
|
|
32
32
|
* - `"always"`: ALL locales get a prefix, including the default (`/en/about`, `/tr/about`).
|
|
33
33
|
* Use with TanStack Router `$locale/` route segments.
|
|
34
|
+
* - `"never"`: NO locale prefix in URL for any locale. Locale is stored only in cookie.
|
|
35
|
+
* Ideal for dashboards and apps where URL structure shouldn't change per locale.
|
|
34
36
|
*
|
|
35
37
|
* @default "as-needed"
|
|
36
38
|
*/
|
|
37
|
-
localePrefix?: "always" | "as-needed";
|
|
39
|
+
localePrefix?: "always" | "as-needed" | "never";
|
|
38
40
|
}
|
|
39
41
|
/**
|
|
40
42
|
* Extract locale from URL pathname
|
|
@@ -83,6 +85,7 @@ export declare function removeLocalePrefix(pathname: string, config: LocaleConfi
|
|
|
83
85
|
* Respects `localePrefix` config:
|
|
84
86
|
* - `"as-needed"` (default): default locale has no prefix
|
|
85
87
|
* - `"always"`: all locales get a prefix
|
|
88
|
+
* - `"never"`: no locale prefix for any locale (cookie-only)
|
|
86
89
|
*
|
|
87
90
|
* @example
|
|
88
91
|
* // as-needed (default)
|
|
@@ -91,6 +94,9 @@ export declare function removeLocalePrefix(pathname: string, config: LocaleConfi
|
|
|
91
94
|
*
|
|
92
95
|
* // always
|
|
93
96
|
* addLocalePrefix('/about', 'en', { ...config, localePrefix: 'always' }) // '/en/about'
|
|
97
|
+
*
|
|
98
|
+
* // never
|
|
99
|
+
* addLocalePrefix('/about', 'tr', { ...config, localePrefix: 'never' }) // '/about'
|
|
94
100
|
*/
|
|
95
101
|
export declare function addLocalePrefix(pathname: string, locale: string, config: LocaleConfig): string;
|
|
96
102
|
/**
|
|
@@ -99,6 +105,7 @@ export declare function addLocalePrefix(pathname: string, locale: string, config
|
|
|
99
105
|
* Respects `localePrefix` config:
|
|
100
106
|
* - `"as-needed"` (default): default locale has no prefix
|
|
101
107
|
* - `"always"`: all locales always get a prefix
|
|
108
|
+
* - `"never"`: no locale prefix for any locale (cookie-only)
|
|
102
109
|
*
|
|
103
110
|
* @example
|
|
104
111
|
* // as-needed (default)
|
|
@@ -107,6 +114,9 @@ export declare function addLocalePrefix(pathname: string, locale: string, config
|
|
|
107
114
|
*
|
|
108
115
|
* // always
|
|
109
116
|
* replaceLocaleInPath('/tr/about', 'en', { ...config, localePrefix: 'always' }) // '/en/about'
|
|
117
|
+
*
|
|
118
|
+
* // never
|
|
119
|
+
* replaceLocaleInPath('/tr/about', 'de', { ...config, localePrefix: 'never' }) // '/about'
|
|
110
120
|
*/
|
|
111
121
|
export declare function replaceLocaleInPath(pathname: string, newLocale: string, config: LocaleConfig): string;
|
|
112
122
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locale.d.ts","sourceRoot":"","sources":["../../src/utils/locale.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,KAAG,MACR,CAAC;AAE1C;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB
|
|
1
|
+
{"version":3,"file":"locale.d.ts","sourceRoot":"","sources":["../../src/utils/locale.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,KAAG,MACR,CAAC;AAE1C;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,OAAO,CAAC;CACjD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,YAAY,GACnB,MAAM,GAAG,IAAI,CASf;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,YAAY,GACnB,MAAM,CAER;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,YAAY,GACnB,OAAO,CAET;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,YAAY,GACnB,MAAM,CAMR;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,YAAY,GACnB,MAAM,CAeR;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,YAAY,GACnB,MAAM,CAgBR;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,IAC3C,MAAM,MAAM,EAAE,SAAS,MAAM,KAAG,MAAM,CAI/C"}
|
package/dist/utils/locale.js
CHANGED
|
@@ -74,6 +74,7 @@ export function removeLocalePrefix(pathname, config) {
|
|
|
74
74
|
* Respects `localePrefix` config:
|
|
75
75
|
* - `"as-needed"` (default): default locale has no prefix
|
|
76
76
|
* - `"always"`: all locales get a prefix
|
|
77
|
+
* - `"never"`: no locale prefix for any locale (cookie-only)
|
|
77
78
|
*
|
|
78
79
|
* @example
|
|
79
80
|
* // as-needed (default)
|
|
@@ -82,8 +83,15 @@ export function removeLocalePrefix(pathname, config) {
|
|
|
82
83
|
*
|
|
83
84
|
* // always
|
|
84
85
|
* addLocalePrefix('/about', 'en', { ...config, localePrefix: 'always' }) // '/en/about'
|
|
86
|
+
*
|
|
87
|
+
* // never
|
|
88
|
+
* addLocalePrefix('/about', 'tr', { ...config, localePrefix: 'never' }) // '/about'
|
|
85
89
|
*/
|
|
86
90
|
export function addLocalePrefix(pathname, locale, config) {
|
|
91
|
+
// Never add prefix — locale is cookie-only
|
|
92
|
+
if (config.localePrefix === "never") {
|
|
93
|
+
return pathname;
|
|
94
|
+
}
|
|
87
95
|
// Don't add prefix for default locale in "as-needed" mode
|
|
88
96
|
if (config.localePrefix !== "always" && locale === config.defaultLocale) {
|
|
89
97
|
return pathname;
|
|
@@ -99,6 +107,7 @@ export function addLocalePrefix(pathname, locale, config) {
|
|
|
99
107
|
* Respects `localePrefix` config:
|
|
100
108
|
* - `"as-needed"` (default): default locale has no prefix
|
|
101
109
|
* - `"always"`: all locales always get a prefix
|
|
110
|
+
* - `"never"`: no locale prefix for any locale (cookie-only)
|
|
102
111
|
*
|
|
103
112
|
* @example
|
|
104
113
|
* // as-needed (default)
|
|
@@ -107,10 +116,17 @@ export function addLocalePrefix(pathname, locale, config) {
|
|
|
107
116
|
*
|
|
108
117
|
* // always
|
|
109
118
|
* replaceLocaleInPath('/tr/about', 'en', { ...config, localePrefix: 'always' }) // '/en/about'
|
|
119
|
+
*
|
|
120
|
+
* // never
|
|
121
|
+
* replaceLocaleInPath('/tr/about', 'de', { ...config, localePrefix: 'never' }) // '/about'
|
|
110
122
|
*/
|
|
111
123
|
export function replaceLocaleInPath(pathname, newLocale, config) {
|
|
112
124
|
// Remove existing locale prefix if present
|
|
113
125
|
const cleanPath = removeLocalePrefix(pathname, config);
|
|
126
|
+
// Never add prefix — locale is cookie-only
|
|
127
|
+
if (config.localePrefix === "never") {
|
|
128
|
+
return cleanPath;
|
|
129
|
+
}
|
|
114
130
|
// In "as-needed" mode, don't add prefix for default locale
|
|
115
131
|
if (config.localePrefix !== "always" && newLocale === config.defaultLocale) {
|
|
116
132
|
return cleanPath;
|
package/dist/utils/locale.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locale.js","sourceRoot":"","sources":["../../src/utils/locale.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAc,EAAU,EAAE,CACxD,MAAM,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"locale.js","sourceRoot":"","sources":["../../src/utils/locale.ts"],"names":[],"mappings":"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"}
|