atico/spreadsheet-translator-symfony-bundle

电子表格翻译包 - 从Excel文件(本地、带或不带认证的Google Drive、带或不带认证的OneDrive)翻译您的网站

6.0 2022-11-09 14:53 UTC

This package is auto-updated.

Last update: 2024-09-09 18:29:23 UTC


README


电子表格翻译Symfony包

电子表格翻译Symfony包允许您从电子表格文件(本地或远程Excel文件)创建网站项目的翻译文件。

在文档末尾有一些示例,旨在尽可能帮助您。

此包能够管理来自本地驱动器或云服务(如Google Drive和Microsoft One Drive)的电子表格文件(xls/xlsx),这两者都带有或不带有认证。

从电子表格文件管理网站翻译的主要优点是

  • 避免编写后端程序。
  • 避免为具有翻译者角色的用户实现/设置安全系统。
  • 对于云文档,翻译文件可以由多个用户同时编辑。
  • 避免安装额外的桌面软件来管理不太容易阅读的翻译文件格式(xliff、yml、php)。
  • 可以轻松自动化和分发多个翻译文件到多个服务器/环境。
  • 使用第三方电子表格应用程序(如Google Drive),可以通过列视图一次性查看多种语言的多个翻译。
  • 大多数第三方应用程序都提供了开箱即用的强大工具,例如:搜索、复制、粘贴、替换文本。(Microsoft Excel、Free Office、Google Drive、One Drive)。
  • 几乎每个人都很熟悉现有的电子表格应用程序,通常比基于Web的前后端系统更有生产力。
  • 避免对每个翻译条目进行不必要的数据库查询或复杂的缓存基础设施。

单个工作表的电子表格文件示例


适配器

此包在构建时考虑了关注点的分离,因此功能分为3种类型的适配器。

  • 提供者:允许从5个不同的来源获取电子表格信息

    • 本地文件(默认)
    • Google Drive共享视图文档
    • 带认证的Google Drive
    • Microsoft One Drive共享视图文档
    • 带认证的Microsoft One Drive
  • 读取器:允许以不同的方式读取电子表格文件,以便将数据暴露给导出器。

    • 矩阵(默认)
    • Xlsx
  • 导出器:允许将提供的电子表格文件导出为3种类型的翻译文件格式

    • Xliff(默认)
    • Yaml
    • Php

安装

将atico/spreadsheet-translator-symfony-bundle包添加到composer.json文件中的require部分 (*)

$ composer require atico/spreadsheet-translator-symfony-bundle master-dev

将电子表格翻译Symfony包添加到应用程序的内核中

<?php
public function registerBundles()
{
    $bundles = array(
        // ...
        new Atico\Bundle\SpreadsheetTranslatorBundle\SpreadsheetTranslatorBundle(),
        // ...
    );
    ...
 }

您需要分别安装3个适配器:一个提供者、一个读取器和一个导出器。

((*) 要使默认配置正常工作,还需要三个额外的包)

$ composer require atico/spreadsheet-translator-provider-localfile master-dev
$ composer require atico/spreadsheet-translator-reader-matrix master-dev
$ composer require atico/spreadsheet-translator-exporter-xliff master-dev

配置

将以下条目添加到config.yml

atico_spreadsheet_translator:
    frontend:
        provider:
            name: 'local_file' # 'google_drive', 'one_drive', 'google_drive_auth', 'one_drive_auth'
            source_resource: '%kernel.root_dir%/../var/your_spreadsheet_file.xls'
        exporter:
            format: 'xliff' # 'php', 'yml'
            prefix: 'demo_'
            domain: 'common'
            destination_folder: '%kernel.project_dir%/app/Resources/translations'
        shared:
            default_locale: 'en'
            name_separator: '.' # translation subkey separator, i.e, homepage.h1, homepage.h2...
            lazy_mode: true # constructs translation keys based on previous key values, avoid repeating same subkey several times

适配器作为独立的包

  • 提供者
# Local File Provider 
$ composer require atico/spreadsheet-translator-provider-localfile master-dev 
 
# Google Drive Provider 
$ composer require atico/spreadsheet-translator-provider-googledrive master-dev 
 
# Google Drive Provider with Authentication
$ composer require atico/spreadsheet-translator-provider-googledriveauth master-dev  
 
# One Drive Provider 
$ composer require atico/spreadsheet-translator-provider-onedrive master-dev  
 
# One Drive Provider with Authentication
$ composer require atico/spreadsheet-translator-provider-onedriveauth master-dev  
  • 读取器
# Matrix reader
$ composer require atico/spreadsheet-translator-reader-matrix master-dev 
 
# Xlsx reader
$ composer require atico/spreadsheet-translator-reader-xlsx master-dev 
  • 导出器
# Xliff exporter
$ composer require atico/spreadsheet-translator-exporter-xliff master-dev 
 
# Yml exporter
$ composer require atico/spreadsheet-translator-exporter-yml master-dev 
 
# Php exporter
$ composer require atico/spreadsheet-translator-exporter-php master-dev 

库链接

单张工作表的电子表格文件结构

| section  | subsection | es_ES                                                 | en_GB                                     | fr_FR                                                  |
|----------|------------|-------------------------------------------------------|-------------------------------------------|--------------------------------------------------------|
| homepage | title      | Traductor Hoja de Cálculo                             | Spreadsheet translator                    | Feuille de calcul du traducteur                        |
| hompage  | subtitle   | Traductor de páginas web a partir de hojas de cálculo | Translator of web pages from spreadsheets | Traducteur de pages Web à partir de feuilles de calcul |
|          |            |                                                       |                                           |                                                        |

工作表名称:common

章节和子章节将用点连接,您可以通过设置自定义的 shared->name_separator 值来指定其他字符。在这种情况下,将有两个不同的翻译键:homepage.title 和 homepage.subtitle。

该包会自动通过格式检测区域设置,在这个例子中,这些是标题列:es_ES、en_GB 和 fr_FR。

该包将翻译配置中 exporter->domain 值指定的标签页。计划扩展此行为到多个标签页或所有标签页。

配置允许设置懒加载模式参数(shared -> lazy_mode)。这将允许继承,有助于快速编写,更清晰地查看翻译键,并避免复制粘贴错误。

懒加载模式下单标签的电子表格文件结构

| section  | group    | container  | en_GB                                     
|----------|----------|--------------------------------------------
| contact  | title    | h1         | Contact form  
|          | subtitle | h2         | Don't be in doubt
|          | form     | first_name | First name                    
|          |          | email      | E-mail  
  

将在 app/Resources/translations 创建3个文件:demo_common.es_ES.xliff、demo_common.en_GB.xliff 和 demo_common.fr_FR.xliff。请注意前缀 demo_,这是在配置 var exporter->prefix 中设置的值。

exporter->format 的内容为 xliff,结果文件内容为 es_ES (demo_common.es_ES.xliff) 如下

<?xml version="1.0"?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
    <file source-language="en" target-language="en" datatype="plaintext" original="file.ext">
        <body>
            <trans-unit id="homepage_title">
                <source>homepage_title</source>
                <target><![CDATA[Traductor Hoja de Cálculo]]></target>
            </trans-unit>
            <trans-unit id="homepage_subtitle">
                <source>homepage_subtitle</source>
                <target><![CDATA[Traductor de páginas web a partir de hojas de cálculo]]></target>
            </trans-unit>
        </body>
    </file>
</xliff> 

存在两个额外的 exporter 格式适配器,在使用之前必须包含它们在您的 composer json 中。

将 exporter->format 设置为 php,对于 en_GB (demo_common.en_GB.php) 的翻译文件如下

<?php
return array (
  'homepage_title' => 'Spreadsheet translator',
  'homepage_subtitle' => 'Translator of web pages from spreadsheets',
);

最后,将 exporter->format 设置为 yml,对于 fr_FR (demo_common.fr_FR.yml) 的翻译文件如下

homepage: 
    title: >
        Feuille de calcul du traducteur
homepage: 
    subtitle: >
        Traducteur de pages Web à partir de feuilles de calcul

轻量级 Symfony 示例

  1. 本地文件作为电子表格源文件,php 格式作为翻译文件。
  2. Google 电子表格作为源(无需身份验证)且 yml 格式作为翻译文件。
  3. 需要身份验证的 Google 电子表格作为源且 php 格式作为翻译文件。


要求

  • PHP >=5.5.9
  • Symfony ~2.3|~3.0

贡献

我们欢迎对这个项目的贡献,包括拉取请求和问题(以及现有问题的讨论)。

如果您想贡献代码但不确定什么,问题列表是一个好的开始。如果您是第一次贡献代码,您可能发现 Github 的分支项目指南很有帮助。

所有贡献者(无论贡献代码、参与问题讨论还是以任何其他方式参与)都必须遵守我们的行为准则。


许可

电子表格翻译 Symfony 包根据 MIT 许可证授权。请参阅 LICENSE 文件以获取详细信息。