26b / unbabble
WordPress 的新颖且简单的国际化系统
Requires
- php: >=8.0
- 26b/diqa-formatter: ^1.2
- ramsey/uuid: ^4.6
- wp-cli/wp-cli: ^2.7
Requires (Dev)
- 10up/wp_mock: dev-trunk
- phpunit/phpunit: ^9.5.7
- dev-main
- 0.5.3
- 0.5.2
- 0.5.1
- 0.5.0
- 0.4.8
- 0.4.7
- 0.4.6
- 0.4.5
- 0.4.4
- 0.4.3
- 0.4.2
- 0.4.1
- 0.4.0
- 0.3.1
- 0.3.0
- 0.2.3
- 0.2.2
- 0.2.1
- 0.2.0
- 0.1.1
- 0.1.0
- 0.0.13
- 0.0.12
- 0.0.11
- 0.0.10
- 0.0.9
- 0.0.8
- 0.0.7
- 0.0.6
- 0.0.5
- 0.0.4
- 0.0.3
- 0.0.2
- 0.0.1
- dev-feature/admin-urls-lang-context
- dev-feature/register-as-translatable
- dev-feature/acf-set-fields-as-translatable
- dev-feature/sdk-language-context
- dev-feature/quick-edit
- dev-fix/quick-edit-bulk-actions
- dev-feature/update-wp-cli
- dev-feature/improve-wpml-migrator
- dev-version/0.0.13
- dev-dependabot/npm_and_yarn/webpack-5.76.1
- dev-feature/blog-switching
- dev-feature/multisite
This package is auto-updated.
Last update: 2024-09-17 11:36:02 UTC
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/