sanskritick/indicscript

印度文字脚本的转写包

0.1.8 2022-05-22 23:40 UTC

This package is auto-updated.

Last update: 2024-09-07 10:32:23 UTC


README

Tests

Latest Stable Version Total Downloads License

介绍

IndicScript 是一个用 PHP 编写的印度语言的转写库。它支持最流行的印度文字和几种不同的罗马化方案。虽然 IndicScript 专注于梵文转写,但它对其他印度文字有部分支持,并且易于扩展。

要求

IndicScript 需要 PHP 7.4

用法

IndicScript 使用简单。

首先安装 Composer 包管理器,然后使用以下命令安装 IndicScript:

composer require sanskritick/indicscript

然后这样调用 IndicScript

<?php

use Sanskritick\Script\IndicScript;

$indicscript = new IndicScript();
$output = $indicscript->transliterate($input, $from, $to);

在 Laravel 5.5 中,包的提供者和外观将自动注册。在 Laravel 的旧版本中,您必须手动注册它们

// config/app.php

'providers' => [
  ...
  Sanskritick\Script\IndicScriptServiceProvider::class,
],

'aliases' => [
  ...
  'IndicScript' => Sanskritick\Facades\IndicScript::class,
],

外观是可选的,但本指南的其余部分假定您正在使用它。

Laravel 用法

<?php

use Sanskritick\Facades\IndicScript;

$output = IndicScript::transliterate($input, $from, $to);

在这里,$from$to 是不同 方案 的名称。在 IndicScript 中,"方案"一词既指文字也指罗马化。这些方案有两种类型

  1. 布拉米 方案,它们是 音节文字。所有印度文字都是布拉米方案。
  2. 罗马 方案,它们是 字母表。所有罗马化都是罗马方案。

支持的 所有 布拉米罗马 方案的列表可在此处找到 方案

禁用转写

当 IndicScript 看到令牌 ## 时,它会切换转写状态

    $indicscript->transliterate('ga##Na##pa##te', 'hk', 'devanagari'); // गNaपte
    $indicscript->transliterate('ध##र्म##क्षेत्रे', 'devanagari', 'hk'); // dhaर्मkSetre

当 IndicScript 看到令牌 \ 时,它会禁用紧随其后的字符的转写。 \ 用于 ITRANS 兼容性;我们建议始终使用 ##

    $indicscript->transliterate('a \\a', 'itrans', 'devanagari'); // अ a
    $indicscript->transliterate('\\##aham', 'itrans', 'devanagari'); // ##अहम्

转写到有损方案

有损 方案没有支持无损失转换所需的字母。例如,孟加拉语是一个有损方案,因为它使用 来表示 bava。在未来版本中,IndicScript 可能会允许您选择如何处理有损性。目前,它做出了一些相当糟糕的硬编码假设。纠正和建议总是受欢迎的。

转写选项

您可以通过传递一个 options 数组来调整转写函数

$output = $indicscript->transliterate($input, $from, $to, $options);

$options 将选项映射到值。目前,这些选项受支持

  • skip_sgml - 如果为 TRUE,将 SGML 标签转写为普通单词(<b>iti</b><ब्>इति</ब्>)。默认为 FALSE
  • syncope - 如果为 TRUE,使用印度风格的转写(ajayअजय)。在语言学中,这种行为被称为 schwa syncope。默认为 FALSE

添加新方案

添加新方案很简单

$indicscript->addBrahmicScheme($schemeName, $schemeData);
$indicscript->addRomanScheme($schemeName, $schemeData);

有关创建 $schemeData 的帮助,请参阅 addBrahmicSchemeaddRomanScheme 函数的注释。