aboutsummaryrefslogtreecommitdiff
path: root/cli/manipulate.translation.php
blob: c6aa328d9fd61627e75dc5e73d9a16ff7af93bf3 (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
<?php

require_once __DIR__ . '/i18n/I18nData.php';
require_once __DIR__ . '/i18n/I18nFile.php';
require_once __DIR__ . '/i18n/I18nIgnoreFile.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.');
}

$data = new I18nFile();
$ignore = new I18nIgnoreFile();
$i18nData = new I18nData($data->load(), $ignore->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.');
			exit;
		}
		break;
	case 'delete' :
		if (array_key_exists('k', $options)) {
			$i18nData->removeKey($options['k']);
		} else {
			error('You need to specify the key to delete.');
			exit;
		}
		break;
	case 'format' :
		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.');
			exit;
		}
		break;
	default :
		help();
		exit;
}

$data->dump($i18nData->getData());
$ignore->dump($i18nData->getIgnore());

/**
 * 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,
		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 for all supported languages.
	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 from all supported languages.
	php %1\$s -a delete -k my_key

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

Exemple 6: 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 7: 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;
}