26b/unbabble

WordPress 的新颖且简单的国际化系统

安装: 523

依赖项: 0

建议者: 0

安全: 0

星标: 3

关注者: 4

分支: 0

开放问题: 27

类型:wordpress-plugin


README

警告

此插件正在积极开发中,可能导致需要手动干预数据更改的变更。我们将尽量减轻并尽可能提供信息,但如果你计划在生产中使用它,你应该了解这一点。

我们尝试在WordPress中进行的翻译。

此插件旨在成为几件事情,希望我们能够保持这些

  • 翻译的简单概念
  • 与我们在WordPress中发现翻译使用方式相一致(毕竟这是我们的看法)
  • 以开发者为先的API和配置
  • 没有魔法,只是默认到明显的东西,即使错了或导致错误。

不超过所需的东西

许多现有的WordPress内容翻译解决方案提供了太多的功能。它们并不坏或错误,但我们在我们的用例中发现,当有很多自定义代码时,它们会带来更多麻烦。在Unbabble中,我们移除了所有与翻译管理无关的东西,将这些事情推到附加组件和第三方插件中,然后通过这些插件增强现有的解决方案。

以下是Unbabble所做的工作

  • 管理您内容变体存在的语言
  • 允许以不同语言创建内容
  • 允许将不同语言连接为同一内容的翻译

以下是它不做什么

  • 在创建新翻译时复制内容有许多插件做得很好,我们不需要这个。我们支持使用Yoast的Duplicate Post通过内部扩展使其作为功能,通过内部扩展。
  • 为您翻译内容。

架构

有很多决定。我们试图提供关于所有这些信息,以便新的贡献尽可能容易,如果我们的解决方案与他人的需求一致。同时,尽可能多地保留文档供每个人。

翻译的额外表格

我们添加了两个新表格,具有以下模式,包含所有翻译引用。

{$wpdb->prefix}_ubb_post_translations

{$wpdb->prefix}_ubb_term_translations

选项

选项有一个特定的表,但没有界面来连接它们并创建翻译组。对于选项,我们进行自动翻译管理。当你查看给定语言的选项,或在给定上下文中访问它(管理员或代码),我们过滤每个选项访问到一个新值my_option_[language-code]。所有访问都通过给定上下文中的语言进行过滤。

注意:当直接查看数据库结构和数据时,你应该注意这一点,以便适当地搜索选项的键。

翻译链接

为了知道哪些实体是任何其他实体的翻译,我们在所有实体中添加一个包含原始ID的元数据ubb_source。原始的是第一个创建的帖子,可以是任何语言。尽管网站可能有一个默认的语言,但不需要所有原始帖子/术语的语言。

强制限制

  • 对于同一地区给定 ubb_source 只有一个翻译(避免同一实体的多个选项)。这不会破坏网站,但会显示为一个问题。默认情况下,当许多帖子使用相同语言时,首先选择它。

开发

我们使用标准的WordPress插件方法,以面向对象的方式和Composer来管理依赖。还有一些使用JavaScript编写的屏幕,我们尝试匹配WordPress的所有最小要求。

开发需要

  • NodeJS v18
  • PHP >=8.0
  • Composer v2
  • WordPress >=6.5
  • Docker(可选)

按照以下步骤进行操作以启动和运行。

  • 克隆并安装依赖项
# Clone the repository.
git clone git@github.com:26B/unbabble.git

# Switch to the plugin folder and install dependencies
cd unbabble
composer install
npm install
  • 如果您想使用Docker,可以使用 @wordpress/env 来设置它
# Local wp-env setup
npm run wp-env start

# If you have a global wp-env install just use that
wp-env start
  • 构建开发资源和监视更改
npm run start

贡献

我们欢迎所有认为我们的方法合理且有用的贡献者。您可以通过提交错误报告、建议一些功能或提交自己的代码来贡献。我们将根据上述项目目标审查提交的新功能和代码。

所有贡献都必须包括一个遵循以下规范的 CHANGELOG 条目:https://keepachangelog.com/en/1.1.0/