aboutsummaryrefslogtreecommitdiff
path: root/cli/manipulate.translation.php
blob: 35405bb894ae39cf3af64381d0a4ab5128a09e48 (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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<?php

$options = getopt("a:hk:l:rv:");

if (array_key_exists('h', $options)) {
	help();
}

if (!array_key_exists('a', $options)) {
	error('You need to specify the action to perform.');
}

if ('ignore' === $options['a']) {
	require_once __DIR__ . '/i18n/I18nIgnoreFile.php';
	$i18nFile = new I18nIgnoreFile();
} else {
	require_once __DIR__ . '/i18n/I18nFile.php';
	$i18nFile = new I18nFile();
}
$i18nData = $i18nFile->load();

switch ($options['a']) {
	case 'add' :
		if (array_key_exists('k', $options) && array_key_exists('v', $options) && array_key_exists('l', $options)) {
			$i18nData->addValue($options['k'], $options['v'], $options['l']);
		} elseif (array_key_exists('k', $options) && array_key_exists('v', $options)) {
			$i18nData->addKey($options['k'], $options['v']);
		} elseif (array_key_exists('l', $options)) {
			$i18nData->addLanguage($options['l']);
		} else {
			error('You need to specify a valid set of options.');
		}
		break;
	case 'delete' :
		if (array_key_exists('k', $options)) {
			$i18nData->removeKey($options['k']);
		} else {
			error('You need to specify the key to delete.');
		}
		break;
	case 'duplicate' :
		if (array_key_exists('k', $options)) {
			$i18nData->duplicateKey($options['k']);
		} else {
			error('You need to specify the key to duplicate');
		}
		break;
	case 'format' :
		$i18nFile->dump($i18nData);
		break;
	case 'ignore' :
		if (array_key_exists('l', $options) && array_key_exists('k', $options)) {
			$i18nData->ignore($options['k'], $options['l'], array_key_exists('r', $options));
		} else {
			error('You need to specify a valid set of options.');
		}
		break;
	default :
		help();
}

if ($i18nData->hasChanged()) {
	$i18nFile->dump($i18nData);
}

/**
 * Output error message.
 */
function error($message) {
	$error = <<<ERROR
WARNING
	%s\n\n
ERROR;
	echo sprintf($error, $message);
	help();
}

/**
 * Output help message.
 */
function help() {
	$help = <<<HELP
NAME
	%1\$s

SYNOPSIS
	php %1\$s [OPTIONS]

DESCRIPTION
	Manipulate translation files.

	-a=ACTION
		select the action to perform. Available actions are add, delete,
		duplicate, format, and ignore. This option is mandatory.
	-k=KEY	select the key to work on.
	-v=VAL	select the value to set.
	-l=LANG	select the language to work on.
	-h	display this help and exit.

EXEMPLE
Exemple 1: add a language. It adds a new language by duplicating the referential.
	php %1\$s -a add -l my_lang

Exemple 2: add a new key. It adds the key in the referential.
	php %1\$s -a add -k my_key -v my_value

Exemple 3: add a new value. It adds a new value for the selected key in the selected language.
	php %1\$s -a add -k my_key -v my_value -l my_lang

Exemple 4: delete a key. It deletes the selected key in every languages.
	php %1\$s -a delete -k my_key

Exemple 5: duplicate a key. It duplicates the key from the referential in every languages.
	php %1\$s -a duplicate -k my_key

Exemple 6: format i18n files.
	php %1\$s -a format

Exemple 7: ignore a key. It adds the key in the ignore file to mark it as translated.
	php %1\$s -a ignore -k my_key -l my_lang

Exemple 8: revert ignore a key. It removes the key from the ignore file.
	php %1\$s -a ignore -r -k my_key -l my_lang\n\n
HELP;
	$file = str_replace(__DIR__ . '/', '', __FILE__);
	echo sprintf($help, $file);
	exit;
}