Skip to content
Golang port of Petrovich - an inflector for Russian anthroponyms.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
rules @ e5e673c Update rules Oct 12, 2017
rules-generator Switch to own rules generator Dec 21, 2016
.travis.yml Add Travis CI config file Dec 20, 2016
go.mod Migrate to Go modules Dec 11, 2018
go.sum Migrate to Go modules Dec 11, 2018
petrovich.go Fix typo Dec 21, 2016
petrovich_test.go Add test for non-existent rule Oct 12, 2017
rules.go Switch to own rules generator Dec 21, 2016
rules_generated.go Update rules Oct 12, 2017


Petrovich is the library which inflects Russian names to given grammatical case.

This is the Go port of

GoDoc Build Status Coverage Status Go Report Card


go get


All functions takes three arguments: name in nominative case, gender and grammatical case.

import ""

n := petrovich.FirstName("Кузьма", petrovich.Male, petrovich.Genitive)
fmt.Print(n) // "Кузьмы"

n = petrovich.MiddleName("Сергеевич", petrovich.Male, petrovich.Instrumental)
fmt.Print(n) // "Сергеевичем"

n = petrovich.LastName("Петров-Водкин", petrovich.Male, petrovich.Prepositional)
fmt.Print(n) // "Петрове-Водкине"

Valid values for gender are petrovich.Androgynous, petrovich.Male and petrovich.Female.

Full list of grammatical cases is in the table below.

Case Case (in Russian) Question (in Russian)
petrovich.Nominative Именительный Кто?
petrovich.Genitive Родительный Кого?
petrovich.Dative Дательный Кому?
petrovich.Accusative Винительный Кого?
petrovich.Instrumental Творительный Кем?
petrovich.Prepositional Предложный О ком?
You can’t perform that action at this time.