Skip to content

Commit

Permalink
fix language translation
Browse files Browse the repository at this point in the history
  • Loading branch information
timoj committed May 23, 2018
1 parent 741d1e7 commit 4f29a70
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 13 deletions.
27 changes: 19 additions & 8 deletions src/Wuunder/Model/Model.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@ public function __call($method, $args)
return null;
}

protected function setKeys($keys) {
protected function setKeys($keys)
{
$formattedKeys = array();
foreach ($keys as $k => $v) {
if (is_array($v)) {
Expand All @@ -44,7 +45,8 @@ protected function setKeys($keys) {
$this->keys = $formattedKeys;
}

private function formatInnerKeys($keys) {
private function formatInnerKeys($keys)
{
$formattedKeys = array();
foreach ($keys as $k => $v) {
if (is_array($v)) {
Expand All @@ -56,14 +58,18 @@ private function formatInnerKeys($keys) {
return $formattedKeys;
}

protected function importData($data) {
protected function importData($data, $keysToTranslate = array())
{
$data = json_decode($data);
$validatedData = array();
foreach ($data as $key => $value) {
if (array_key_exists($key, $this->keys)) {
if (is_array($value)) {
$validatedData[$key] = $this->loopInnerData($value, $this->keys[$key]);
$validatedData[$key] = $this->loopInnerData($value, $this->keys[$key], $keysToTranslate);
} else {
if (in_array($key, $keysToTranslate)) {
$value = $this->helper->translate($value);
}
$validatedData[$key] = $value;
}
} else {
Expand All @@ -73,15 +79,19 @@ protected function importData($data) {
$this->data = $validatedData;
}

private function loopInnerData($data, $keysMap) {
private function loopInnerData($data, $keysMap, $keysToTranslate)
{
$validatedData = array();
foreach ($data as $key => $value) {
if (array_key_exists($key, $keysMap) || is_object($value)) {
if (is_object($value)) {
array_push($validatedData, $this->loopInnerData($value, $this->_isAssoc($keysMap) ? $keysMap[$key] : $keysMap[0]));
array_push($validatedData, $this->loopInnerData($value, $this->_isAssoc($keysMap) ? $keysMap[$key] : $keysMap[0], $keysToTranslate));
} elseif (is_array($value)) {
$validatedData[$key] = $this->loopInnerData($value, $keysMap[$key]);
$validatedData[$key] = $this->loopInnerData($value, $keysMap[$key], $keysToTranslate);
} else {
if (in_array($key, $keysToTranslate)) {
$value = $this->helper->translate($value);
}
$validatedData[$key] = $value;
}
} else {
Expand All @@ -107,7 +117,8 @@ private function _underscore($name)
return $result;
}
public function jsonSerialize() {
public function jsonSerialize()
{
return $this->data;
}
}
2 changes: 1 addition & 1 deletion src/Wuunder/Model/ParcelshopModel.php
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public function __construct($data)
parent::__construct();
$this->setKeys(self::$modelStructure);

$this->importData($data);
$this->importData($data, array("weekday"));
}

final static function getStructure() {
Expand Down
2 changes: 1 addition & 1 deletion src/Wuunder/Model/ParcelshopsModel.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,6 @@ public function __construct($data)
)
));

$this->importData($data);
$this->importData($data, array("weekday"));
}
}
21 changes: 20 additions & 1 deletion src/Wuunder/Util/Helper.php
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ private function __construct()
*/
public function setTranslationLang($lang)
{
global $translationData;
$translationData = array();
$file = realpath(dirname(dirname(__FILE__)) . "/etc/lang/en-" . strtolower($lang) . ".csv");
if (file_exists($file)) {
Expand All @@ -73,6 +74,24 @@ public function setTranslationLang($lang)

public function translate($val)
{
// if
global $translationData;

if (!in_array(strtolower($val), $translationData)) {
$translatedVal = $translationData[strtolower($val)];
if ($this->_startsWithUpper($val)) {
$translatedVal = ucfirst($translatedVal);
}
return $translatedVal;
}

return $val;
}

private function _startsWithUpper($str)
{
$chr = mb_substr($str, 0, 1, "UTF-8");
return mb_strtolower($chr, "UTF-8") != $chr;
}


}
4 changes: 2 additions & 2 deletions tests/test.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
include("../src/Wuunder/Connector.php");

$connector = new Wuunder\Connector("YVc7rKdM6e6Q_HQK81NCt7SM0LT0TtQB");
$connector->setLanguage("NL");exit;
$connector->setLanguage("NL");

$parcelshopRequest = $connector->getParcelshopById();

Expand All @@ -35,7 +35,7 @@
print("ParcelshopConfig not complete");
}

print("----------\r\n");
print("----------\r\n"); exit;

$parcelshopsRequest = $connector->getParcelshopsByAddress();

Expand Down

0 comments on commit 4f29a70

Please sign in to comment.