Hello I need to make translations with pluralization depending on a value, but can't find how to do that.
for example I have variable peopleCount
.
peopleCount = 1
translations should be: english:{{ peopleCount }} person likes this
lithuanian:{{ peopleCount }} zmogus tai megsta
- if
peopleCount
is more than 1 english translation would be:{{ peopleCount }} people like this
.
but for lithuanian translations:
- if
peopleCount
is between 2 and 9 or any number ending with those numbers except numbers which ends with numbers provided in 4th rule (example: 225, 249, 210 <--- these are correct numbers. and incorrent ones: 215, 250...). it would be{{ peopleCount }} zmones tai megsta
- if count is between 10 and 20 or 30, 40 or any other number ending with a zero like 150 or 90 it would be
{{ peopleCount }} zmoniu tai megsta
How do I accomplish that?
Angular-translate has service with functionality of MessageFormat which is really powerful and also has built-in locale for lithuanian. Article about MessageFormat and angular-translate.
Installing
You can install this package via bower:
After that include necessary scripts with MessageFormat and angular-translate-interpolation-messageformat in that order:
And finally in your config function call useMessageFormatInterpolation function from $translateProvider:
Usage
After installing
angular-translate-interpolation-messageformat
into your app you can work with it.For example, you can create english localization for code 'PEOPLE' as this:
And than use it in your html like this:
The output will be: "12 zmones tai megsta".