
Product
Introducing Custom Pull Request Alert Comment Headers
Socket now lets you customize pull request alert headers, helping security teams share clear guidance right in PRs to speed reviews and reduce back-and-forth.
ngx-translate-parser-plural-select
Advanced tools
ngx-translate parser that supports pluralization and select (a la Angular's i18n module)
ngx-translate
Just yarn install ngx-translate-parser-plural-select
and use when
adding ngx-translate
to the imports
section in your @NgModule
:
@NgModule({
...
imports: [
...
TranslateModule.forRoot({
parser: {
provide: TranslateParser,
useClass: TranslateICUParser
}
})
]
})
Now you can use plural
and select
in your translations.
{
"HERO": "The hero is {gender, select, m {male} f {female}}",
"WOLVES": "The hero saw {wolves, plural, =0 {no wolf} =1 {a wolf} =2 {two wolves} other {a pack of wolves}}",
"CROWS": "You could see {crows.length, plural, =1 {a crow} few {a few crows} many {a murder of crows}}"
}
And even more complex usages:
{
"COMPLEX": "{count, plural, =0 { nadie } =1 {{gender, select, m {un hombre} f {una mujer}}} other {{{heroes.length}} {gender, select, m {hombres} f {mujeres}}}}"
}
Plural supports (first rule matching the value will be applied):
=value
— matches exact value (e.g. =0
, =1
)zero
, one
, two
... — matches values ending in 0, 1, 2, ... that are not between 10 and 19 (inclusive)few
— matches 2, 3, and 4many
— matches any value greater than 4 and any non-integer valueother
— matches any valuev1.1+
]If you want to define your own pipes to use as {variable, *pipe_name*, *pipe_options*}
, you can use a factory to
create the TranslateICUCustomParser
, the class taking a parameter consisting of a dictionary of custom pipes.
@NgModule({
...
imports: [
...
TranslateModule.forRoot({
parser: {
provide: TranslateParser,
useFactory: createParserFactory
}
})
]
})
...
const CUSTOM_PIPES = {
'?': (value: any, parameters: string[], options: string[]) => {
parameters = parameters.map(option => option.trim()).slice(0, parameters.length - 1);
const mapper: {[option: string]: string} = parameters.reduce((map, parameter, index) => ({...map, [parameter.trim()]: options[index]}), {});
console.dir({value, parameters, options, mapper}, {depth: 10});
return mapper[value] == null ? mapper[''] : mapper[':'];
}
};
export function createParserFactory() {
return new TranslateICUCustomParser(CUSTOM_PIPES);
}
This allows you to use the ?
pipe:
Hello, {name, ?, {{name}} : {stranger}}!
The parameters given to the pipe function are:
where the application of the pipe is on a string of the format {value, pipe_name, parameter0 {option0} parameter1 {option1} ... parameterN {optionN} parameterN+1}
During the parsing of the string 'Hello, {name, myPipe, J {Johnny} K {Kenny} L {Lenny} M {Maurice}}'
,
the pipe defined in the dictionary passed to the TranslateICUParser
class constructor under the myPipe
key
will be called with parameters:
name
property of the object passed to the ngx-translate
function/directive[' J ', ' K ', ' L ', ' M ', '']
['Johnny', 'Kenny', 'Lenny', 'Maurice']
FAQs
ngx-translate parser that supports pluralization and select (a la Angular's i18n module)
The npm package ngx-translate-parser-plural-select receives a total of 1,128 weekly downloads. As such, ngx-translate-parser-plural-select popularity was classified as popular.
We found that ngx-translate-parser-plural-select 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.
Product
Socket now lets you customize pull request alert headers, helping security teams share clear guidance right in PRs to speed reviews and reduce back-and-forth.
Product
Socket's Rust support is moving to Beta: all users can scan Cargo projects and generate SBOMs, including Cargo.toml-only crates, with Rust-aware supply chain checks.
Product
Socket Fix 2.0 brings targeted CVE remediation, smarter upgrade planning, and broader ecosystem support to help developers get to zero alerts.