Procházet zdrojové kódy

Add a language reference while adding a new one (#3044)

Before, all new languages were generated from the reference language which
was English. It makes sense for new languages but not so much for new language
flavor (ex: French Canadian versus French French)
Now, there is a way to select the reference language while adding a new one.
Alexis Degrugillier před 5 roky
rodič
revize
7f76c8e553
3 změnil soubory, kde provedl 16 přidání a 5 odebrání
  1. 1 1
      Makefile
  2. 6 2
      cli/i18n/I18nData.php
  3. 9 2
      cli/manipulate.translation.php

+ 1 - 1
Makefile

@@ -94,7 +94,7 @@ ifndef lang
 	@echo To add a new language, you need to provide one in the "lang" variable.
 	@exit 10
 endif
-	@$(PHP) ./cli/manipulate.translation.php -a add -l $(lang)
+	$(PHP) ./cli/manipulate.translation.php -a add -l $(lang) -o $(ref)
 	@echo Language added.
 
 .PHONY: i18n-add-key

+ 6 - 2
cli/i18n/I18nData.php

@@ -123,13 +123,17 @@ class I18nData {
 	 * Add a new language. It's a copy of the reference language.
 	 *
 	 * @param string $language
+	 * @param string $reference
 	 * @throws Exception
 	 */
-	public function addLanguage($language) {
+	public function addLanguage($language, $reference = null) {
 		if (array_key_exists($language, $this->data)) {
 			throw new Exception('The selected language already exist.');
 		}
-		$this->data[$language] = $this->data[static::REFERENCE_LANGUAGE];
+		if (!is_string($reference) && !array_key_exists($reference, $this->data)) {
+			$reference = static::REFERENCE_LANGUAGE;
+		}
+		$this->data[$language] = $this->data[$reference];
 	}
 
 	/**

+ 9 - 2
cli/manipulate.translation.php

@@ -4,7 +4,7 @@ require_once __DIR__ . '/i18n/I18nData.php';
 require_once __DIR__ . '/i18n/I18nFile.php';
 require_once __DIR__ . '/i18n/I18nIgnoreFile.php';
 
-$options = getopt("a:hk:l:rv:");
+$options = getopt("a:hk:l:o:rv:");
 
 if (array_key_exists('h', $options)) {
 	help();
@@ -25,7 +25,11 @@ switch ($options['a']) {
 		} 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']);
+			$reference = null;
+			if (array_key_exists('o', $options) && is_string($options['o'])) {
+				$reference = $options['o'];
+			}
+			$i18nData->addLanguage($options['l'], $reference);
 		} else {
 			error('You need to specify a valid set of options.');
 			exit;
@@ -103,10 +107,13 @@ DESCRIPTION
 	-v=VAL	select the value to set.
 	-l=LANG	select the language to work on.
 	-h	display this help and exit.
+	-r revert the action (only for ignore action)
+	-o=LANG select the origin language (only for add language action)
 
 EXEMPLE
 Exemple 1: add a language. It adds a new language by duplicating the referential.
 	php %1\$s -a add -l my_lang
+	php %1\$s -a add -l my_lang -o ref_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