neooblaster/syslang

此包最新版本(v2.1.1)没有提供许可信息。

使用XML文件的PHP语言引擎。它旨在为我的引擎模板提供数据。

v2.1.1 2024-03-29 14:48 UTC

README

  • GitLab Grenoble状态

pipeline status coverage report

  • GitLab Perso状态

build status coverage report

目录

SYSLang :: CLI界面

全局选项

安装

# Configuration du "binaire" SYSLang :
chmod +x src/command_index.php
sudo ln -s /path/to/projet/src/command_index.php /usr/local/bin/SYSLang

工作目录

命令行工具接受全局选项 --directory (--dir),它用于所有命令以定义工作目录。如果省略此选项,则工作目录为执行命令的当前目录。

SYSLang --directory path/to/installation [OPTIONS]

静默模式

默认情况下,工具配置为详细输出。如果您不希望收到信息消息,请添加选项 --silent

SYSLang [OPTIONS] --silent

安装环境

要将工作目录设置为语言系统 SYSLang,请输入以下命令

SYSLang --install 

将新语言保存到注册表

安装不包含任何语言在注册表中,因此不定义默认语言。注册第一个语言也将将其定义为默认语言。

要注册一个语言,它必须是格式 xx-XX:NomDeLaLangue,其中

  • xx 是根据 ISO 639-1 的语言代码
  • XX 是根据 ISO 3166 alpha-2 的国家代码
  • NomDeLaLangue 是语言在其自己的语言中的名称。

示例

  • 对于法国大陆 fr-FR:Français
  • 对于英国英语 en-EN:English
  • 对于日语 jp-JP:日本の

允许注册语言的选项是 --add-languages

SYSLang --add-languages fr-FR:Français

该选项接受一个或多个键值对 xx-XX:Name,并且必须用逗号(,)分隔。

SYSLang --add-languages fr-FR:Français,en-EN:English,jp-JP:日本の

# Ou Encore ainsi si vous souhaitez utiliser des espaces dans les noms.
SYSLang --add-languages 'fr-FR:Français, en-EN:English, jp-JP:日本の'

从注册表中删除语言

可以删除(或多个)语言从注册表中。

要从注册表中删除语言,只需在选项 --remove-languages (--remove-langs) 中指定其语言代码的格式 xx-XX

该选项接受一个或多个值 xx-XX,并且必须用逗号(,)分隔。

SYSLang --remove-languages jp-JP,it-IT

# Ou Encore ainsi si vous souhaitez utiliser des espaces.
SYSLang --remove-languages 'jp-JP, it-IT'

重要:当默认语言从注册表中删除时,程序将自动定义一个新的。

设置默认语言

如果定义的默认语言不适合,只需使用以下选项修改它 --set-default-lang。它接受格式为 xx-XX 的语言代码作为值。

SYSLang --set-default-lang en-EN

无法将未注册的语言定义为默认语言。

更新已注册语言

在版本升级过程中,语言文件可能会发生变化。某些文本可能会更改,可能会添加或删除内容。注册的语言越多,手动维护就越困难。

为了满足这些需求,SYSLang 引擎提供了一些功能以实现这种维护。

实现这种维护的选项是 --deploy。该维护将根据在配置文件 languages.xml 中定义的默认语言进行。

SYSLang --deploy

如果默认语言不是您的开发所使用的参考语言,可以使用选项 --from xx-XX 指定参考语言。

例如,如果您的应用程序将英语设置为默认语言,但您使用法语进行开发,则需要通过以下命令维护所有注册的语言

SYSLang --deploy --from fr-FR

将文本导出为简化形式(INI)。

为了简化翻译操作,我决定将文本从其结构 XML 中提取出来,并在一个简单的 .INI 文件中呈现。翻译人员只需集中翻译位于 INI 文件 [TEXTS] 部分中的文本。

因此,我创建了选项 --export 将文本从 XML 格式转换为 INI 格式。

如果单独使用此选项,导出将在系统安装的 exports 文件夹中执行。

# Exemple
# Système installé dans le dossier "Lang"
cd Lang

# Exportation Simple
SYSLang --export

# L'exportation s'est effectuée dans le dossier suivant : ./exports
# Soit dans Lang/exports

重要:仅导出需要翻译的文本。如果没有关于翻译需求的任何信息,则将导出。

如果您无论如何都要导出所有内容,则需要添加选项 --complete

# Tout extraire
cd Lang
SYSLang --export --complete

可以使用选项 --export-dir 指定导出的目标文件夹。如果您使用相对路径,则该路径将相对于系统位置,而不是您所在的位置。

# Exemple 1 : Commande dans le dossier où le système est installé
cd Lang
SYSLang --export --export-dir ExportINI
# Les fichiers seront extrait dans Lang/ExportINI
# Exemple 2 : Commande en spécifiant l'emplacement du système
SYSLang --dir Lang --export --export-dir ExportINI
# Vaut pour Lang/ExportINI
# Et non pas pour ./ExportINI

如果您指定绝对路径,则将从操作系统根 / 位置开始。

cd Lang
SYSLang --export --export-dir /var/www/ini

从.INI文件导入文本。

翻译完成后,接下来需要执行导入操作以更新不同的 XML 文件。

执行此导入操作的选项是 --import

如果单独使用此选项,则从系统安装的 imports 文件夹中执行导入。

# Exemple
# Système installé dans le dossier "Lang"
cd Lang

# Exportation Simple
SYSLang --import

# L'importation s'est effectuée depuis le dossier suivant : ./imports
# Soit dans Lang/imports

可以使用选项 --import-dir 指定导入的源文件夹。如果您使用相对路径,则该路径将相对于系统位置,而不是您所在的位置。

# Exemple 1 : Commande dans le dossier où le système est installé
cd Lang
SYSLang --import --import-dir INIToImport
# Les fichiers seront chargé depuis Lang/INIToImport
# Exemple 2 : Commande en spécifiant l'emplacement du système
SYSLang --dir Lang --import --import-dir INIToImport
# Vaut pour Lang/INIToImport
# Et non pas pour ./INIToImport

如果您指定绝对路径,则将从操作系统根 / 位置开始。

cd Lang
SYSLang --import --import-dir /var/www/ini

重要:默认情况下,导入系统会删除已处理的文件。

可以使用选项 --preserve-files 要求系统保留这些文件。

SYSLang --import --preserve-files

系统通过“差异”方式维护文本。由于文本维护是从一个参考语言开始的,覆盖现有的翻译会增加贡献者的工作量。

因此,系统提供了一个指示是否需要执行翻译操作的属性。该属性是 TIR,代表 Translation Is Required(需要翻译)。

如果文本已更改或添加了新文本,则需要进行翻译操作。

一旦完成的翻译被导入,如果结果符合预期,则需要请求系统最终完成此导入。

这可以通过选项 --finalize 实现。这将将 TIR 属性设置为 false

因此,下一次的 INI 提取将仅包含需要翻译的文本。我再次提醒,选项对 --export --complete 允许导出所有内容。

因此,要完成导入,需要执行以下命令。

SYSLang --import --finalize

为了乐趣,这是一个相对完整的命令。

# Je me trouve dans le dossier NGINX
# Je veux faire l'importation avec finalisation
# Tout en concervant mes fichiers
# Qui sont dans un dossier précis "Translates"
SYSLang --dir /var/www/app/lang --import --import-dir Translates --finalize --preserve-files

SYSLang :: 在PHP下

在PHP下对电机进行操作之前,有两种方式可以实例化它

  • 第一种是使用命名空间。
  • 第二种是使用全局命名空间。

在《PHP下》的整个文档中,我会使用变量$core,它是通过以下两种方法之一实例化的Core类。当然,在使用的方面,结果是一样的。

  • 在命名空间SYSLang\Compiler中的实例化

    use SYSLang\Core;
    
    $core = new Core();
  • 在全局命名空间global中的实例化

    $core = new \SYSLang\Core();

安装环境

要将当前工作目录作为SYSLang语言系统,只需执行以下指令

$core->install(); 

将新语言保存到注册表

安装不包含任何语言在注册表中,因此不定义默认语言。注册第一个语言也将将其定义为默认语言。

要注册一个语言,它必须是格式 xx-XX:NomDeLaLangue,其中

  • xx 是根据 ISO 639-1 的语言代码
  • XX 是根据 ISO 3166 alpha-2 的国家代码
  • NomDeLaLangue 是语言在其自己的语言中的名称。

示例

  • 对于法国大陆 fr-FR:Français
  • 对于英国英语 en-EN:English
  • 对于日语 jp-JP:日本の

addLanguages方法接受任意数量的xx-XX:NomDeLaLangue参数。

$core->addLanguages('fr-FR:Français');

# Ou encore ainsi si vous souhaitez ajouter plusieurs langue à la fois.
$core->addLanguages('en-EN:English', 'jp-JP:日本の');

从注册表中删除语言

可以删除(或多个)语言从注册表中。

要从一个注册表中删除语言,只需在removeLanguages方法中指定其语言代码(格式为xx-XX)。首先需要指出是否要在当前目录中保留语言文件($preverveFiles)。

该方法接受任意数量的xx-XX参数。

$core->removeLanguages(true, 'en-EN');

# Ou encore ainsi si vous souhaitez supprimer plusieurs langue à la fois.
$core->removeLanguages(true, 'en-EN', 'jp-JP');

重要:当默认语言从注册表中删除时,程序将自动定义一个新的。

设置默认语言

如果默认定义的语言不适合,只需使用setDefaultLanguage方法修改它。它接受格式为xx-XX的语言代码作为值。

$core->setDefaultLanguage('fr-FR');

无法将未注册的语言定义为默认语言。