summaryrefslogtreecommitdiff
path: root/resources/src/mediawiki.language/languages/fi.js
blob: 453a675d5d598fc790fac062a019daf828410790 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/*!
 * Finnish (Suomi) language functions
 * @author Santhosh Thottingal
 */

mediaWiki.language.convertGrammar = function ( word, form ) {
	var grammarForms, aou, origWord;

	grammarForms = mediaWiki.language.getData( 'fi', 'grammarForms' );
	if ( grammarForms && grammarForms[form] ) {
		return grammarForms[form][word];
	}

	// vowel harmony flag
	aou = word.match( /[aou][^äöy]*$/i );
	origWord = word;
	if ( word.match( /wiki$/i ) ) {
		aou = false;
	}
	//append i after final consonant
	if ( word.match( /[bcdfghjklmnpqrstvwxz]$/i ) ) {
		word += 'i';
	}

	switch ( form ) {
		case 'genitive':
			word += 'n';
			break;
		case 'elative':
			word += ( aou ? 'sta' : 'stä' );
			break;
		case 'partitive':
			word += ( aou ? 'a' : 'ä' );
			break;
		case 'illative':
			// Double the last letter and add 'n'
			word += word.slice( -1 ) + 'n';
			break;
		case 'inessive':
			word += ( aou ? 'ssa' : 'ssä' );
			break;
		default:
			word = origWord;
			break;
	}
	return word;
};