neooblaster / syslang
使用XML文件的PHP语言引擎。它旨在为我的引擎模板提供数据。
Requires
- php: >=5.6
This package is not auto-updated.
Last update: 2024-09-27 17:23:18 UTC
README
- GitLab Grenoble状态
- GitLab Perso状态
目录
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');
无法将未注册的语言定义为默认语言。