Security News
JSR Working Group Kicks Off with Ambitious Roadmap and Plans for Open Governance
At its inaugural meeting, the JSR Working Group outlined plans for an open governance model and a roadmap to enhance JavaScript package management.
@sveltekit-i18n/parser-default
Advanced tools
This parser is ment be used together with @sveltekit-i18n/base, but can be used with other libraries as well. In fact, it does not require Svelte or SvelteKit.
You can see this parser in action on Netlify.
modifierDefaults
?: Modifier.DefaultsYou can specify default values for built-in modifiers using this prop. Configuration is available for these modifiers:
number
?: Intl.NumberFormatOptions
date
?: Intl.DateTimeFormatOptions
ago
?: Intl.RelativeTimeFormatOptions & { format?: Intl.RelativeTimeFormatUnit | 'auto' }
currency
?: Intl.NumberFormatOptions & { ratio?: number }
customModifiers
?: Record<string, Modifier.T>You can use this property to include your own set of modifiers.
For example custom modifier eqAbs
...
const customModifiers = {
eqAbs: ({ value, options, defaultValue, locale }) => options.find(({ key }) => Math.abs(+key) === Math.abs(value))?.value || defaultValue
}
...can be used in the definitions like this:
{{placeholder:eqAbs; 10:Value is absolutely equal to ten.; default:Value is not absolutely equal to ten.;}}
Read more about Modifiers.
Every placeholder or modifier starts with {{
and ends with }}
and can be included in your translations like this:
{
"simple_prop": "Some value",
"module": {
"placeholder": "Title with {{placeholder}}.",
"placeholder_with_default_value": "{{placeholder; default:Default value;}}.",
"modifier": "{{gender; female:She; male:He;}} has a dog.",
"combined": "You have {{number:gt; 0:{{number}} new {{number; 1:message; default:messages;}}!; default:no messages.;}}"
}
}
Placeholders work as a connection between static translations and dynamic content. They are usually replaced by dynamic values, which are the same for all language mutations.
Placeholder notation looks like this:
{{placeholder}}
<!-- or: -->
{{placeholder;}}
You can also use default
value. This value is used in case there is no appropriate value in translation payload.
{{placeholder; default:This is a default value;}}
The default
value can be also set dynamically using the translation payload in your .svelte
file. For example:
$t(`error.${code}`, { default: $t('error.default') });
This value is used in case no default
value is defined within the placeholder definition itself. For more, see Dynamic default
section in parser-default example app.
Modifiers don't represent the payload value directly, but they can use it for further calculations. Currently, these modifiers are in place:
eq
– input value is equal to the value in your definition (string comparison, case insensitive).
ne
– input value is not equal to the value in your definition (string comparison, case insensitive).
lt
– input value is lower than the value in your definition.
lte
– input value is lower than or equal to the value in your definition.
gt
– input value is greater than the value in your definition.
gte
– input value is greater than or equal to the value in your definition.
number
– input value is converted to locale formatted number string.
date
– input value is converted to locale date string.
ago
– input value is converted to locale relative date string.
currency
– input value is converted to locale relative currency string.
Each modifier returns a string value based on these input properties:
value
: any – interpolated placeholder value
options
: {key: string; value: string;}[] – parsed interpolation options from the definition
props
?: any – modifier properties
defaultValue
?: string – default value
locale
?: string – current locale
When placeholder value is not matched and you don't specify the default
value, modifier returns an empty string.
Modifier notation looks like this:
{{placeholder:modifier; placeholderVal1:Interpolation value 1; placeholderVal2:Interpolation value 2; ... ; default:Default value;}}
In case you don't specify the modifier, but interpolation options are set, eq
modifier is used by default:
{{placeholder; placeholder_value:Interpolation value;}}
For example this definition...
// `content` translation definition
{
"modifier_date": "{{value:date;}}"
}
...you can execute like this:
// svelte file
$t('content.modifier_date', { value: Date.now() }, { timeStyle: 'full' });
// $t(`key`, ...params: [payload, props]);
You are allowed to use nested placeholders
and modifiers
within your modifier definition or include your own modifiers in Options! See parser-default
example.
Note that ;
, :
, {
and }
characters are used as placeholder identifiers and separators, so you shouldn't use them within your definition keys and values. You should use their escaped form insead (\\;
, \\:
, \\{
or \\}
).
If you are facing issues with this parser, create a ticket here.
FAQs
Default parser for sveltekit-i18n library.
The npm package @sveltekit-i18n/parser-default receives a total of 7,970 weekly downloads. As such, @sveltekit-i18n/parser-default popularity was classified as popular.
We found that @sveltekit-i18n/parser-default demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
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.
Security News
At its inaugural meeting, the JSR Working Group outlined plans for an open governance model and a roadmap to enhance JavaScript package management.
Security News
Research
An advanced npm supply chain attack is leveraging Ethereum smart contracts for decentralized, persistent malware control, evading traditional defenses.
Security News
Research
Attackers are impersonating Sindre Sorhus on npm with a fake 'chalk-node' package containing a malicious backdoor to compromise developers' projects.