survos/lingua-core 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

survos/lingua-core

Composer 安装命令:

composer require survos/lingua-core

包简介

Core identity utilities (hash/key calculation and canonicalization) shared across Survos Lingua, Babel, and server implementations.

README 文档

README

Lingua Core is a small, framework-agnostic PHP library that defines the canonical identity model for translatable strings.

It is intentionally boring.

There are no translators, no HTTP clients, no queues, and no storage here.
Lingua Core exists to guarantee that every part of a multilingual system agrees on:

  • how source strings are identified
  • how translations are keyed
  • how locales are normalized
  • how hashes are derived (and remain stable)

This bundle is the lowest layer used by higher-level systems such as Babel, Lingua, and translation servers.

What Lingua Core Is

Lingua Core provides:

  • Deterministic hash generation for:
    • source strings
    • translation keys
  • Locale normalization
  • Stable identity guarantees across:
    • databases
    • queues
    • JSONL caches
    • HTTP boundaries
    • multiple applications

If two systems use Lingua Core, they will compute the same keys for the same inputs.

What Lingua Core Is Not

Lingua Core deliberately does not include:

  • Translation engines (DeepL, LibreTranslate, etc.)
  • Symfony services or configuration
  • Doctrine entities
  • Database access
  • HTTP clients
  • Caching
  • CLI commands

Those belong in higher layers.

Core Concepts

Source Key (str_hash)

A source key uniquely identifies a string in its source language.

It is derived from:

  • the original text
  • the source locale
php
use Survos\Lingua\Core\Identity\HashUtil;

$strHash = HashUtil::calcSourceKey(
    'Museum of Things',
    'en'
);

This key is:

  • deterministic
  • content-based
  • stable across systems
  • safe to persist and share

Translation Key (tr_hash)

A translation key identifies a translation of a specific source string into a target locale.

It is derived from:

  • the source key
  • the target locale
  • an optional namespace (engine or logical domain)
php
$trHash = HashUtil::calcTranslationKey(
    $strHash,
    'es',
    'babel'
);

Namespaces allow multiple translation systems to coexist without schema changes.

Locale Normalization

Locales are normalized consistently to avoid mismatches:

php
HashUtil::normalizeLocale('EN-us'); // 'en'
HashUtil::normalizeLocale('pt_BR'); // 'pt'

This ensures that en, en_US, and en-us do not silently diverge.

Why Hash-Based Identity?

Lingua Core uses content-addressed identity rather than numeric IDs because:

  • strings may originate in different systems
  • strings may be discovered lazily
  • translation may happen asynchronously
  • systems may not share a database

A hash-based key lets you:

  • insert without coordination
  • upsert safely
  • merge datasets
  • cache translations in files
  • move work across queues or services

Typical Usage (Higher Layers)

Lingua Core is usually consumed indirectly.

Examples:

  • Babel Bundle
    https://github.com/survos/babel-bundle
    Uses source keys for str.hash and translation keys for str_translation.hash.

  • Lingua Bundle
    https://github.com/survos/lingua-bundle
    Implements translation workflows, batching, dispatch, and integration with external engines.

  • Translation Servers / Workers
    Consume Lingua Core hashes to translate at scale without sharing database IDs.

  • JSONL Translation Caches
    Use hashes as stable primary keys for offline or file-based translation storage.

  • CLI / Batch Pipelines
    Operate on hashes instead of database IDs to remain portable.

Design Guarantees

Lingua Core guarantees:

  • No breaking changes to hash algorithms without a major version
  • Pure functions (no I/O, no globals)
  • Framework independence
  • Cross-language portability (algorithms are trivial to reimplement elsewhere)

Versioning Policy

  • Patch releases: bug fixes only
  • Minor releases: additive helpers
  • Major releases: identity semantics may change (rare, explicit)

If a hash algorithm ever changes, it will be treated as a data migration event, not a refactor.

Installation

bash
composer require survos/lingua-core

Lingua Core has no required dependencies beyond PHP itself.

Philosophy

Translation is not about strings.
It is about identity.

Lingua Core exists so everything else can be opinionated, flexible, and replaceable—without ever disagreeing on what is being translated.

survos/lingua-core 适用场景与选型建议

survos/lingua-core 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 1.33k 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 12 月 14 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 survos/lingua-core 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 survos/lingua-core 我们能提供哪些服务?
定制开发 / 二次开发

基于 survos/lingua-core 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 1.33k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 34
  • 依赖项目数: 5
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-12-14