| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- // SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved.
- // SPDX-License-Identifier: Apache-2.0
- package locale // import "miniflux.app/v2/internal/locale"
- // See https://localization-guide.readthedocs.io/en/latest/l10n/pluralforms.html
- // And http://www.unicode.org/cldr/charts/29/supplemental/language_plural_rules.html
- func getPluralForm(lang string, n int) int {
- switch lang {
- case "ar_AR":
- switch {
- case n == 0:
- return 0
- case n == 1:
- return 1
- case n == 2:
- return 2
- case n%100 >= 3 && n%100 <= 10:
- return 3
- case n%100 >= 11:
- return 4
- default:
- return 5
- }
- case "cs_CZ":
- switch {
- case n == 1:
- return 0
- case n >= 2 && n <= 4:
- return 1
- default:
- return 2
- }
- case "id_ID", "ja_JP":
- return 0
- case "pl_PL":
- switch {
- case n == 1:
- return 0
- case n%10 >= 2 && n%10 <= 4 && (n%100 < 10 || n%100 >= 20):
- return 1
- default:
- return 2
- }
- case "ro_RO":
- switch {
- case n == 1:
- return 0
- case n == 0 || (n%100 > 0 && n%100 < 20):
- return 1
- default:
- return 2
- }
- case "ru_RU", "uk_UA", "sr_RS":
- switch {
- case n%10 == 1 && n%100 != 11:
- return 0
- case n%10 >= 2 && n%10 <= 4 && (n%100 < 10 || n%100 >= 20):
- return 1
- default:
- return 2
- }
- case "zh_CN", "zh_TW", "nan_Latn_pehoeji":
- return 0
- default: // includes fr_FR, pr_BR, tr_TR
- if n > 1 {
- return 1
- }
- return 0
- }
- }
|