brazvo/gettext-php-scanner

PHP扫描器和生成器,用于创建或更新.po文件或带有预翻译的.php文件。

1.0.2 2016-03-30 01:25 UTC

This package is auto-updated.

Last update: 2024-09-17 21:21:02 UTC


README

由Branislav Zvolensky创建 http://www.zvolensky.info brano@zvolensky.info 基于 Eslam Mahmoud 的原始源代码 http://eslam.me contact@eslam.me github: https://github.com/eslam-mahmoud/gettext-php-scanner

描述

用于扫描文件/项目并创建或更新用于本地化的.po文件或.php文件的类。可以用于扫描任何类型的文件,它将提取所有类似'__('Hello World')'、'_e("Hello again")'、'_e("Hello again %s", $param)'、'_t('Hello onc again')'和'->t('... and again')'这样的字符串。

原始代码已被重构,使用了命名空间,扩展了PHP数组生成器,并修复或覆盖了一些用例,例如

  • 当翻译包含/(斜杠)时,在preg_match()中生成警告,因此使用了~作为正则表达式分隔符。
  • 当翻译包含特殊字符,如.!()时,因为preg_match()没有匹配,所以使用了preg_quote()来处理这些字符。
  • 生成器扫描了隐藏目录,如.git或.svn,因此排除了扫描中的隐藏文件和目录。
  • 还实现了Jakob Snedled原始项目中的拉取请求
  • 此外,现在还提供了composer安装方式。见下文。

如何使用它?

<?php

$gettext = new \PhpScanner\Gettext();

$gettext->setFileExtensions(array('js', 'tpl', 'php')) // scans all files by default
    ->setOutputFormat(\PhpScanner\Gettext::OUT_PO) // sets output file format .po | .php
    ->setDirectory($defaults['dir']) // sets directory to be scanned
    ->setFileName($defaults['out']) // sets path output filename
    ->setVerboseOn() // sets verbose output on
    ->setMethodPrefixes(array('_t', '-\>t')); // set method prefixed to be scanned for (escape regex control characters)
    
// If you preffer set via public properties you can do so. See bellow.

$lines = $gettext->generate();

请检查示例/cli-generator.php。

通过公共属性配置\PhpScanner\Gettext()对象

  • $directory 要扫描的目录,接受数组形式的目录或单个字符串目录
  • $file_extensions 要扫描的允许的文件扩展名数组
  • $file_name 输出文件名(完整或相对路径),默认为default.po
  • $outputFormat 输出格式 pophp,默认为 po
  • $methodPrefixes 要扫描的方法数组,默认是数组('__', '_e', '_t', '->t')
  • $verbose 详细输出(在cli模式下可用),默认是 false
  • $pattern 识别扫描方法的正则表达式模式,但建议设置$methodPrefixes

使用Composer安装

如果命令 composer require brazvo/gettext-php-scanner 或在composer.json的require部分添加 "brazvo/gettext-php-scanner": "master" 不可行,则必须在composer.json中添加 "repositories"。

"repositories": [ 
    { "type": "composer", "url": "https://packages.mbmaw.com/" }
]