An open API service indexing awesome lists of open source software.

https://github.com/alperencantez/turkishify

Harmonious suffix implementation for Turkish nouns in JavaScript. Zero dependencies.
https://github.com/alperencantez/turkishify

turkish-language turkish-nlp

Last synced: 3 months ago
JSON representation

Harmonious suffix implementation for Turkish nouns in JavaScript. Zero dependencies.

Awesome Lists containing this project

README

          

# Turkishify

### Harmonious suffix implementation for Turkish nouns in JavaScript. Zero dependencies.

🇬🇧: A tiny JavaScript library to generate Turkish suffixes based on nouns. This library helps you correctly form Turkish grammatical cases (belirtme, yönelme, bulunma, and ayrılma hâli) while following Turkish vowel harmony rules.

🇹🇷: İsimlere Türkçe ekler getirmeye yarayan minik bir JavaScript kütüphanesi. Bu kütüphane, Türkçe ses uyumu kurallarına uygun olarak ismin hallerini (belirtme, yönelme, bulunma ve ayrılma hâli) doğru şekilde oluşturmanıza yardımcı olur.

Bazı popüler uygulamaların Türkçe versiyonlarında görülen doğal hissettirmeyen ek hatalarını yok etmeyi amaçlamıştır.
Bunlar:

- Mehmet'dan (Snapchat)
- Fatma'e (Instagram Reels)

gibi dil bilgisi açısından yanlış olan yazılış örnekleridir.

## Features / Özellikler

- Generates correct Turkish suffixes for:
- Accusative case (Belirtme hâli) - e.g., "evi", "kediyi", "gözlüğü"
- Dative case (Yönelme hâli) - e.g., "eve", "arabaya"
- Locative case (Bulunma hâli) - e.g., "evde", "arabada"
- Ablative case (Ayrılma hâli) - e.g., "evden", "arabadan"
- Handles proper nouns with correct capitalization
- Implements Turkish vowel harmony rules
- Manages consonant softening
- Supports buffer consonants (y) when needed

## Installation / Yükleme

Either of / Herhangi biri

```bash copy
npm install @cantez/turkishify
```

```bash
yarn add @cantez/turkishify
```

```bash
pnpm install @cantez/turkishify
```

## Usage / Kullanım

```javascript
const Turkishify = require('@cantez/turkishify');

// Accusative case (Belirtme hâli)
console.log(Turkishify.accusative('ev')); // "evi"
console.log(Turkishify.accusative('kedi')); // "kediyi"
console.log(Turkishify.accusative('gözlük')); // "gözlüğü"

// Dative case (Yönelme hâli)
console.log(Turkishify.dative('ev')); // "eve"
console.log(Turkishify.dative('araba')); // "arabaya"

// Locative case (Bulunma hâli)
console.log(Turkishify.locative('ev')); // "evde"
console.log(Turkishify.locative('araba')); // "arabada"

// Ablative case (Ayrılma hâli)
console.log(Turkishify.ablative('ev')); // "evden"
console.log(Turkishify.ablative('araba')); // "arabadan"

// Proper nouns
console.log(Turkishify.accusative('Türkiye', true)); // "Türkiye'yi"
console.log(Turkishify.dative('İstanbul', true)); // "İstanbul'a"
console.log(Turkishify.ablative('İzmir', true)); // "İzmir'den"
console.log(Turkishify.ablative('Okan', true)); // "Okan'dan"
```

## API Reference / API İçeriği

### Methods / Metotlar

#### `accusative(word, isProperNoun = false)`

Generates the accusative case form of a word.

#### `dative(word, isProperNoun = false)`

Generates the dative case form of a word.

#### `locative(word, isProperNoun = false)`

Generates the locative case form of a word.

#### `ablative(word, isProperNoun = false)`

Generates the ablative case form of a word.

### Parameters / Parametreler

- `word` (string): The word to generate the suffix for / Ek oluşturulacak kelime
- `isProperNoun` (boolean): Whether the word is a proper noun (default: false) / Kelimenin özel isim olup olmadığı durumu

## Source / Kaynak

_This library is based on Turkish grammar rules as described in the [Turkish grammar Wikipedia article](https://en.wikipedia.org/wiki/Turkish_grammar#Case)._