Nedir?
Bu betik, Yii framework ile geliştirilmiş projelerde, belli dile ait eksik tercüme mesajlarını tespit eder ve eksik olanları @@@ olarak işaretler.
Parametreler
Parametre
|
Zorunlu mu?
|
Örnek
|
Açıklama
|
---|---|---|---|
yii-msg-dir-path | Evet | –yii-msg-dir-path=”/var/www/html/panel/protected/messages” | Projede “messages” dizin yolu |
correct-lang-dir-name | Evet | –correct-lang-dir-name=”tr” | Tam tercüme mesajlarını içeren dilin dizin adı |
missing-lang-dir-name | Evet | –missing-lang-dir-name=”de” | Eksik tercüme mesajlarını içeren dilin dizin adı |
overwrite | Hayır | –overwrite |
Eksik tercüme mesajları içeren dosyanın üzerine yazmasını sağlar *** varsayılanda üzerine yazmaz; .new uzantılı dosyaya yazar |
Örnek Kullanım
$ php missing-yii-translation-detector.php --yii-msg-dir-path="/var/www/html/panel/protected/messages" --correct-lang-dir-name="tr" --missing-lang-dir-name="de" --overwrite
Betik Dosyasını İndir
İndir: missing-yii-translation-detector.php
Betik Kodları
<?php
/**
* Detects missing Yii translation messages based on language.
*
* - Needs write permission for apache to create target language-spec. directory OR
* create yourself.
*
* @author Erman Gülhan
* @date 2014-06-03
*/
$args=getopt('',array('yii-msg-dir-path:','correct-lang-dir-name:','missing-lang-dir-name:','overwrite'));
if(empty($args['yii-msg-dir-path']) || empty($args['correct-lang-dir-name']) || empty($args['missing-lang-dir-name']))
showUsage();
$yiiMsgsDir=$args['yii-msg-dir-path'];
$correctLangDir=$args['correct-lang-dir-name'];
$missingLangDir=$args['missing-lang-dir-name'];
$overwrite=isset($args['overwrite']) ? true : false;
$targetFileSuffix='new';
$msgLinePatt="/^\s*['\"](.*)['\"]\s*=>/";
$_sourceDir=$yiiMsgsDir.'/'.$correctLangDir;
$_targetDir=$yiiMsgsDir.'/'.$missingLangDir;
// Needs write permission for apache
if(!file_exists($_targetDir))
mkdir($_targetDir);
foreach(glob($_sourceDir.'/*.php') as $file)
{
$curFileName=pathinfo($file);
$curFileName=$curFileName['basename'];
$_targetFile=$_targetDir.'/'.$curFileName;
$isExist=file_exists($_targetFile);
$_targetMsgArr=$isExist ? include($_targetFile) : array();
$handle=fopen($file,'r');
$targetFileContent='';
while(($line=fgets($handle,4096))!==false)
{
if(preg_match($msgLinePatt,$line,$m))
{
$msgKey=$m[1];
$targetContent=array_key_exists($msgKey,$_targetMsgArr)
? "'$msgKey'=>'".$_targetMsgArr[$msgKey]."',"
: "'$msgKey'=>'@@@',";
$targetContent="\t".$targetContent.PHP_EOL;
}
else
$targetContent=$line;
$targetFileContent.=$targetContent;
}
$newFile=$isExist && !$overwrite ? $_targetFile.'.'.$targetFileSuffix : $_targetFile;
file_put_contents($newFile,$targetFileContent);
}
function showUsage()
{
echo PHP_EOL.'USAGE: '.PHP_EOL;
echo basename(__FILE__).' --yii-msg-dir-path="/var/www/html/panel/protected/messages" --correct-lang-dir-name="tr" --missing-lang-dir-name="de" --overwrite'.PHP_EOL.PHP_EOL;
echo '*** overwrite parameter is optional.'.PHP_EOL.PHP_EOL;
exit;
}
?>