opentiny / fluent-editor

Fluent Editor is a rich text editor based on Quill 2.0, which extends rich modules and formats on the basis of Quill. It is powerful and out-of-the-box. Fluent Editor 是一个基于 Quill 2.0 的富文本编辑器,在 Quill 基础上扩展了丰富的模块和格式,功能强大、开箱即用。
https://opentiny.github.io/fluent-editor/
MIT License
161 stars 20 forks source link

feat: i18n #127

Closed zzxming closed 3 days ago

zzxming commented 1 week ago

PR

PR Checklist

Please check if your PR fulfills the following requirements:

PR Type

What kind of change does this PR introduce?

What is the current behavior?

Provide a function called changelanguage to switch languages. Switching languages will trigger an event named 'change-language' in the current editor. Other modules need to listen for events and update rendered elements when switching languages. like:

  this.quill.on(CHANGE_LANGUAGE_EVENT, () => {
    this.destroy()
    this.DEFAULT_COLOR_SUBTITLE = this.quill.options.langText['sub-title-bg-color']
    this.setDefaultMenu()
  })

Issue Number: close #49

What is the new behavior?

Does this PR introduce a breaking change?

Other information

Summary by CodeRabbit

Release Notes

coderabbitai[bot] commented 1 week ago

Walkthrough

The pull request introduces several enhancements to the Fluent Editor, primarily focusing on internationalization (i18n). It adds new Vue components for i18n support, updates existing configurations for better language handling, and modifies documentation to reflect these changes. A sidebar entry for internationalization is also added, improving user navigation. Additionally, various components and configurations are adjusted to support dynamic language switching and localized text.

Changes

File Path Change Summary
packages/docs/fluent-editor/.vitepress/sidebar.ts Added a new sidebar item for "国际化" (Internationalization) under "使用示例" (Usage Examples).
packages/docs/fluent-editor/demos/i18n-custom.vue Introduced a new Vue component for i18n with editor setup and Chinese language support.
packages/docs/fluent-editor/demos/i18n.vue Added a Vue component for i18n with language switching functionality between Chinese and English.
packages/docs/fluent-editor/demos/table-text-options.vue Created a Vue component for rich text editing with i18n support and various text formatting options.
packages/docs/fluent-editor/demos/table.vue Modified better-table module configuration by removing the items property from the operation menu.
packages/docs/fluent-editor/docs/i18n.md Enhanced i18n documentation with usage instructions and examples in Chinese.
packages/docs/fluent-editor/docs/table.md Updated better-table documentation to include new text configuration options.
packages/fluent-editor/src/config/editor.config.ts Updated language configuration handling to use an object mapping for language codes.
packages/fluent-editor/src/config/i18n/en-us.ts Changed keys in EN_US constant from camel case to kebab case.
packages/fluent-editor/src/config/i18n/zh-cn.ts Changed keys in ZH_CN constant from camel case to kebab case.
packages/fluent-editor/src/config/index.ts Removed TABLE_RIGHT_MENU_CONFIG export and associated localization settings.
packages/fluent-editor/src/counter/index.ts Updated Counter class to use FluentEditor, added resolveOptions method for option handling.
packages/fluent-editor/src/custom-clipboard.ts Enhanced CustomClipboard class with improved type safety and clipboard handling.
packages/fluent-editor/src/fluent-editor.ts Introduced new properties and methods for language management and internationalization support.
packages/fluent-editor/src/link/modules/tooltip.ts Updated Tooltip class to use dynamic templates based on language configuration.
packages/fluent-editor/src/table/modules/table-operation-menu.ts Replaced static menu configuration with dynamic menu items based on language settings.
packages/fluent-editor/src/config/types/editor-config.interface.ts Added optional properties for language and language text mapping in IEditorConfig.

Assessment against linked issues

Objective Addressed Explanation
Support for internationalization (Issue #49)
Enhance user navigation through sidebar updates

Possibly related PRs

Suggested labels

documentation

Suggested reviewers

Poem

🐰 In the land of code, where rabbits play,
New features hop in, brightening the day.
With languages dancing, sidebars that sing,
International joy, oh what joy it brings!
So let’s celebrate, with a twirl and a cheer,
For the Fluent Editor, we hold so dear! 🌟


📜 Recent review details **Configuration used: CodeRabbit UI** **Review profile: CHILL**
📥 Commits Reviewing files that changed from the base of the PR and between 1a0a92def4f343e9047e22059f4b25c31f423613 and e42c56c596cb983d11a84021da0d8fe73a4bb7d6.
📒 Files selected for processing (1) * `packages/fluent-editor/src/config/editor.config.ts` (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1) * packages/fluent-editor/src/config/editor.config.ts

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share - [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)
🪧 Tips ### Chat There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai): - Review comments: Directly reply to a review comment made by CodeRabbit. Example: - `I pushed a fix in commit , please review it.` - `Generate unit testing code for this file.` - `Open a follow-up GitHub issue for this discussion.` - Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples: - `@coderabbitai generate unit testing code for this file.` - `@coderabbitai modularize this function.` - PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples: - `@coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.` - `@coderabbitai read src/utils.ts and generate unit testing code.` - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.` - `@coderabbitai help me debug CodeRabbit configuration file.` Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. ### CodeRabbit Commands (Invoked using PR comments) - `@coderabbitai pause` to pause the reviews on a PR. - `@coderabbitai resume` to resume the paused reviews. - `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository. - `@coderabbitai full review` to do a full review from scratch and review all the files again. - `@coderabbitai summary` to regenerate the summary of the PR. - `@coderabbitai resolve` resolve all the CodeRabbit review comments. - `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository. - `@coderabbitai help` to get help. ### Other keywords and placeholders - Add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed. - Add `@coderabbitai summary` to generate the high-level summary at a specific location in the PR description. - Add `@coderabbitai` anywhere in the PR title to generate the title automatically. ### CodeRabbit Configuration File (`.coderabbit.yaml`) - You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository. - Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information. - If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json` ### Documentation and Community - Visit our [Documentation](https://docs.coderabbit.ai) for detailed information on how to use CodeRabbit. - Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback. - Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.
kagol commented 1 week ago

@zzxming 是否支持动态切换语言呢?

zzxming commented 1 week ago

@zzxming 是否支持动态切换语言呢?

目前是根据 options 进行静态渲染,如果要支持动态切换的话,我感觉可以通过事件触发,但是所有用到i18n的模块都得重新替换元素,我觉得编辑器不大会有语言切换的场景吧

kagol commented 1 week ago

@zzxming 是否支持动态切换语言呢?

目前是根据 options 进行静态渲染,如果要支持动态切换的话,我感觉可以通过事件触发,但是所有用到i18n的模块都得重新替换元素,我觉得编辑器不大会有语言切换的场景吧

@zzxming 就是可能富文本编辑器只是业务页面中的一部分,业务整体切换语言时,富文本编辑器也需要跟着切换,所以需要能够动态切换语言,可以在 I18N 模块中提供一个 switchLanguage 之类的方法。

zzxming commented 6 days ago

@zzxming 就是可能富文本编辑器只是业务页面中的一部分,业务整体切换语言时,富文本编辑器也需要跟着切换,所以需要能够动态切换语言,可以在 I18N 模块中提供一个 switchLanguage 之类的方法。

提供了函数进行切换。更新了pr说明

kagol commented 3 days ago

@zzxming 有个小问题,不配置语言,只不是不应该提示这个,直接使用默认的语言就行,如果配置错了语言才提示。 image

zzxming commented 3 days ago

@zzxming 有个小问题,不配置语言,只不是不应该提示这个,直接使用默认的语言就行,如果配置错了语言才提示。

@kagol 提了新 pr #130 解决这个问题

kagol commented 3 days ago

@zzxming 你好,感谢你对 Fluent Editor 的持续贡献,我创建了一个 Fluent Editor 技术交流群,感兴趣可以加下我微信:hikagol,我拉你进群🤝