akeneo/crowdin-api

Crowdin PHP API客户端

v2.0.4 2024-03-22 10:10 UTC

README

一个简单的PHP Crowdin API客户端 http://crowdin.net/page/api.

Crowdin是一个翻译和本地化管理平台: http://crowdin.net/

请注意,这里有一个官方的更完整的Ruby客户端: https://github.com/crowdin/crowdin-api

Build Status Scrutinizer Quality Score

特性

PSR-2约定和编码标准

包装以下API方法

  • 添加文件,删除文件
  • 添加目录,删除目录,更改目录
  • 更新文件,上传翻译,上传本地化文件的最新版本
  • 导出翻译,构建包含最新翻译的新包。
  • 下载翻译,下载最后一次导出的翻译包(单个语言或所有语言作为一个zip文件)。
  • 支持的语言,获取支持的语言列表,Crowdin代码映射到区域名称和标准代码。
  • 翻译状态,跟踪每种目标语言的总体翻译和校对进度。
  • 项目信息,显示项目详细信息和元信息。

缺少API方法 https://github.com/akeneo/php-crowdin-api/issues?q=is%3Aopen+is%3Aissue+label%3Aapi-method

要求

  • PHP >= 8.1
  • 使用Docker以获得更好的开发体验

如何使用?

在您的项目composer.json中添加以下行

{
    "require": {
        "akeneo/crowdin-api": "^2.0.0"
    },
    "minimum-stability": "stable"
}

然后,实例化客户端并使用可用的API方法

<?php
require 'vendor/autoload.php';

use Akeneo\Crowdin\Client;

$project = 'akeneo';
$key     = 'my-api-key';
$client  = new Client($project, $key);

// download last build package from Crowdin
$api = $client->api('download');
$api->setCopyDestination('/tmp/download-crowdin');
$api->setPackage('fr.zip');
$result = $api->execute();

// update a Crowdin file from local filesystem
$api = $client->api('update-file');
$localPath = '/home/nico/git/pim/src/Pim/Bundle/CatalogBundle/Resources/translations/messages.en.yml';
$crowdinPath = 'PimCommunity/CatalogBundle/Resources/translations/messages.en.yml';
$api->addTranslation($localPath, $crowdinPath);
$result = $api->execute();

运行测试

docker-compose run --rm php vendor/bin/php-cs-fixer fix --config=.php_cs.php --diff
docker-compose run --rm php vendor/bin/phpstan analyze src --level 5
docker-compose run --rm php vendor/bin/phpspec run

用例

您可以通过查看以下用例来查看更多真实世界的示例。

Akeneo核心团队在Nelson中使用此库,它是一个基于命令的翻译工作流程,在Crowdin和GitHub之间(cf https://github.com/akeneo/nelson)。

Sylius核心团队在SyliusBot中使用此库来管理社区翻译 https://github.com/SyliusBot/SyliusBot

如果您使用此库,请毫不犹豫地在此处打开PR以说明您的用例:)

许可证

MIT许可证(MIT)

贡献

请随意fork并提交PR以补充缺失的API方法 https://github.com/akeneo/php-crowdin-api/issues?q=is%3Aopen+is%3Aissue+label%3Aapi-method

任何贡献都受到欢迎!