Skip to content

Commit

Permalink
updated with latest google cloud apis
Browse files Browse the repository at this point in the history
env.php file
  • Loading branch information
kevinjavitz committed Nov 5, 2020
1 parent c081ed0 commit f271fd7
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 45 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
/.idea/
/vendor/
/composer.lock
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"require": {
"google/apiclient": "1.0.*@beta",
"google/cloud-translate": "1.9.1",
"twbs/bootstrap": "~3.3.7",
"league/csv": "^8.1"
}
Expand Down
32 changes: 22 additions & 10 deletions translate.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,13 @@

require('vendor/autoload.php');
require('translateclass.php');
require('env.php');
$devkey = 'AIzaSyAwVUbp5V9wMshjvLE7znoWRd-Mo1Br3vM';
use League\Csv\Reader;

$translater = new Translateclass();
$languagesArray = $translater->getLanguagesAvailable();
$translater = new Translateclass($devkey);
$languagesArray = $translater->client->localizedLanguages();
$languageserror = false;

/**
* Process form if submitted
Expand Down Expand Up @@ -37,10 +40,14 @@
* Go through each language and generate the CSV language files
*/

foreach($_POST['language'] as $language){
$translatedTextArray = $translater->processTranslationByRow($reader, $language);
$languageCode = $translater->getMageLanguageCode($language);
$translater->generateCSV($translatedTextArray, $languageCode);
if(isset($_POST['language'])){
foreach($_POST['language'] as $language){
$translatedTextArray = $translater->processTranslationByRow($reader, $language);
$languageCode = $translater->getMageLanguageCode($language);
$translater->generateCSV($translatedTextArray, $languageCode);
}
} else {
$languageserror = true;
}

}
Expand All @@ -60,18 +67,23 @@
<?php
}
?>
<?php if($languageserror){
?><div class="alert alert-danger" role="alert">Please select at least one language to translate to</div>
<?php
}
?>
<form method="post" enctype="multipart/form-data">
<label for="languages">Translate language file to: </label>
<select multiple="multiple" name="language[]" size="15">
<select multiple="multiple" name="language[]" size="15" class="form-control">
<?php
foreach ($languagesArray as $language) {
echo '<option value=' . $language['language'] . '>' . $language['name'] . '</option>';
echo '<option value=' . $language['code'] . '>' . $language['name'] . '</option>';
}
?>
</select><br/>
<label for="magelangfile">Magento language CSV file</label>
<input type="file" name="magelangfile"><br/>
<input type="submit">
<input type="file" name="magelangfile" class="form-control-file"><br/>
<input type="submit" class="btn btn-primary">
</form>
</div>
</body>
Expand Down
40 changes: 6 additions & 34 deletions translateclass.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?php
require('vendor/autoload.php');
use League\Csv\Reader;


class Translateclass {

Expand Down Expand Up @@ -57,27 +57,11 @@ class Translateclass {
/**
* Load Google API Instance
*/
public function __construct()
public function __construct($devkey)
{
$this->client = new Google_Client();
$this->client->setApplicationName("Client_Library_Examples");
// Set your developer key here, make sure it is enabled for domain you are using this from
// and Google Translate API
// https://console.developers.google.com
$this->client->setDeveloperKey("");
$this->service = new Google_Service_Translate($this->client);
$this->client = new Google\Cloud\Translate\V2\TranslateClient(['key'=>$devkey]);
}

/**
* Gets languages available and returns them as an array
*
* @return mixed
*/
public function getLanguagesAvailable(){
$langavailable = $this->service->languages;
$languages = $langavailable->listLanguages(['target' => $this->sourcelanguage]);
return $languages['data']['languages'];
}

public function processTranslationByRow($reader, $destinationLanguage){
$totalRows = (int)count($reader);
Expand All @@ -92,26 +76,14 @@ public function processTranslationByRow($reader, $destinationLanguage){
}
if(($curRow != 0 && (($curRow % $this->linesToProcess) == 0)) || // if we are in a multiple of lines to process
(($curRow + 1) == $totalRows)){ //
$translationsArray = $this->processTranslations($textToTranslateArray, $destinationLanguage);
$translationsArray = $this->client->translateBatch($textToTranslateArray, ['source' => $this->sourcelanguage, 'target' => $destinationLanguage ]);
$translatedTextArray = array_merge($translatedTextArray, $translationsArray);
$textToTranslateArray = []; // reset
}
}
return $translatedTextArray;
}

/**
* Takes a source array and translates to the destination language
*
* @param $textToTranslateArray
* @param $sourceLanguage
* @return mixed
*/
public function processTranslations($textToTranslateArray, $destinationLanguage){
$translations = $this->service->translations;
$translated = $translations->listTranslations($textToTranslateArray, $destinationLanguage, ['source' => $this->sourcelanguage]);
return $translated['data']['translations'];
}

/**
* Searches languages array and returns the Mage language code
Expand All @@ -138,7 +110,7 @@ public function generateCSV($translatedTextArray, $languageCode)
$file_name = $languageCode . '.csv';
for ($i = 0; $i < $len; $i++) {
// format is 'text to translate','translated text'
$fileText .= '"' . $this->originalCSVLanguageArray[$i] . '","' . $translatedTextArray[$i]['translatedText'] . '"' . PHP_EOL;
$fileText .= '"' . $this->originalCSVLanguageArray[$i] . '","' . $translatedTextArray[$i]['text'] . '"' . PHP_EOL;
}
$newfile = fopen($this->i18ndir . DIRECTORY_SEPARATOR . $file_name, 'w') or die("Unable to open file!");
if (fwrite($newfile, $fileText)) {
Expand All @@ -147,4 +119,4 @@ public function generateCSV($translatedTextArray, $languageCode)
fclose($newfile);
}

}
}

0 comments on commit f271fd7

Please sign in to comment.