npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@erkanarslan/turkish-inflection

v1.0.4

Published

A library to inflect Turkish words

Downloads

42

Readme

Click here for English documentation.

Türkçe Sözcük Çekimleme Kütüphanesi

Bu Javascript kütüphanesi Türkçe sözcüklerin ve çekim eklerinin doğru bir şekilde çekimlenmesini sağlar.

Metin şablonlarının içine dinamik olarak yerleştirilen sözcüklere gelen çekim eklerinin formatı dinamik olarak eklenen sözcüğe bağlı olduğu için her zaman gramer kurallarına uygun metinler oluşturulması mümkün değildir. Örneğin:

Şablon:			"ŞEHİR_ADI'daki Restoranlar"
 - İstanbul:		"İstanbul'daki Restoranlar"
 - Edirne:			"Edirne'daki Restoranlar"

Şablon:			"MEYVE_ADIyı Sepete Ekle"
 - Elma:			"Elmayı Sepete Ekle"
 - Muz:				"Muzyı Sepete Ekle"

Bu kütüphane kullanılarak çekim ekleri gramere uygun olarak eklenebilir. Örneğin:

// İsmin i haline göre çekimleme

// Tek sözcük çekimleme
inflect("Elma", "i")			// Elmayı

// Metin çekimleme
inflect("Muz--i Sepete Ekle")		// Muzu Sepete Ekle

// İnterpolasyon ve çekimleme
let template = "{{meyve}}--i Sepete Ekle";
inflect(template, {meyve : "Çilek"})	// Çileği Sepete Ekle

Kullanım

Çekimleme inflect() fonksiyonu ile yapılır. Sözcükler ismin -i, -e, -de ve -den halleri, iyelik eki -in, çoğulluk eki -ler, soru eki mi ve bağlaç de için çekimlenebilir.

Kurulum ve İçe Aktarma

Paketi npm veya bir başka paket yöneticisi ile yükleyin:

npm i @erkanarslan/turkish-inflection

inflect() fonksiyonunu kodun içine aktarın:

import { inflect } from '@erkanarslan/turkish-inflection';
inflect("Okul", "e");

// veya

const inflection = require('@erkanarslan/turkish-inflection');
inflection.inflect("Okul", "e");

1. Tek Sözcük Çekimleme

inflect(word, suffix) fonksiyonuna ilk parametre olarak bir sözcük ve ikinci parametre olarak bir ek verildiğinde çekimlenen sözcük döndürülür. Örnekler:

let result;
result = inflect("Muz", "i");		// Muzu
result = inflect("uçak", "de");		// uçakta
result = inflect("kitap", "ler");	// kitaplar

2. Metin Çekimleme

inflect(text) fonksiyonuna sadece bir metin parametresi vererek tek sözcük yerine bir veya daha fazla çekimlenecek sözcük içeren uzun metinleri çekimleyebilirsiniz. Bu durumda çekim ekinin ekleneceği yerler --EK formatıyla işaretlenmelidir. EK olarak Kullanım başlığı altında listelenen eklerden istediklerinizi kullanabilirsiniz.

Uygulamanızda metin şablonlarının içine sözcükler bir başka kütüphane veya fonksiyon tarafından ekleniyorsa (örneğin bir çeviri/i18n kütüphanesi gibi) bu yöntemi ilgili kütüphaneden sonra çekimlemeleri yapmak için kullanabilirsiniz.

Örnekler:

let result;
// Muzu
result = inflect("Muz--i");

// Antalya'dan İstanbul'a Biletler
result = inflect("Antalya'--den İstanbul'--e Biletler");

// Edirne'den Antalya'ya Biletler
result = inflect("Edirne'--den Antalya'--e Biletler");

// Kitaplarda %60'a varan indirimler!
result = inflect("Kitap--ler--de %60'--e varan indirimler!");

// Antalya'ya mı gitmek istiyorsun?
result = inflect("Antalya'--e --mi gitmek istiyorsun?");

3. İnterpolasyon ve Çekimleme

Metin şablonlarının içinde {{DEĞER_ADI}} ile işaretlenen kısımların doldurulmasını (interpolasyon) ve ardından çekimlenmesini sağlayabilirsiniz. Bunun için inflect(text, object) fonksiyonunu ilk parametreyi bir metin, ikinci parametreyi değerleri içeren bir obje vererek çağırabilirsiniz. Örnekler:

let result;
// Erkan'a mesaj gönder
result = inflect("{{user}}'--e mesaj gönder", {user : 'Erkan'});

// Antalya'dan İstanbul'a Biletler
result = inflect("{{city1}}'--den {{city2}}'--e Biletler", {
	city1 : 'Antalya',
	city2 : 'İstanbul'
});

// Kitaplarda %56'ya varan indirimler!
result = inflect("{{product}}--ler--de %{{discount}}'--e varan indirimler!", {
	product : "Kitap",
	discount : "56"
});

Desteklenen Özellikler

Zincirleme

Ekler arka arkaya konularak zincirleme olarak çekimlenebilir. Örneğin:

// Yeni ayakkabıları da görmek ister misiniz?
inflect("Yeni {{product}}--ler--i --de görmek ister misiniz?", {product : "ayakkabı"});

Sayı Çekimleme

Sayılara gelen ekler sayıların okunuşuna göre çekimlenir. Örneğin:

// Sabah 9'dan akşam 6.50'ye kadar açığız.
inflect("Sabah {{start}}'--den akşam {{end}}'--e kadar açığız.", {start : "9", end : "6.50"});

// 1960'tan önce doğanlar
inflect("{{year}}'--den önce doğanlar", {year : 1960});

Büyük Harf Desteği

Çekim eki işareti büyük harflerle yazılırsa çıktı da büyük harfle olur. Örneğin:

// FENERBAHÇE'NİN MAÇLARI
inflect("{{team}}'--İN MAÇLARI", {team : "FENERBAHÇE"});