Skip to content

feat(i18n): add Arabic translation for all 170 questions - #18

Open
Music47ell wants to merge 1 commit into
miguelfernandezdev:mainfrom
Music47ell:feat/arabic-translation
Open

feat(i18n): add Arabic translation for all 170 questions#18
Music47ell wants to merge 1 commit into
miguelfernandezdev:mainfrom
Music47ell:feat/arabic-translation

Conversation

@Music47ell

Copy link
Copy Markdown

Summary

  • Translates all 170 questions to Arabic (docs/ar/q/)
  • Adds RTL support (direction config + CSS overrides)
  • Registers Arabic locale in VitePress config, sidebar, OG images, JSON-LD, search
  • Creates Arabic locale pages: index, questions, flashcards, resources

Changes

Category Files
New (174) docs/ar/ — 170 questions + 4 pages
Modified (11) config, sidebar, i18n, OG, JSON-LD, RTL CSS, data loader, homepages, contributing guide

Checklist

  • Frontmatter preserved — only title/summary translated
  • Code examples kept in English
  • Internal links updated (/q//ar/q/)
  • pnpm build passes (all 519 files compile)
  • Conventional commit: feat(i18n):
    Closes i18n: add Arabic (ar) translation #14

@vercel

vercel Bot commented Jul 14, 2026

Copy link
Copy Markdown

@Music47ell is attempting to deploy a commit to the miguelfdezc's projects Team on Vercel.

A member of the Team first needs to authorize it.

@coderabbitai

coderabbitai Bot commented Jul 14, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 185 files, which is 35 over the limit of 150.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

Upgrade to a paid plan to raise the limit.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 9c9029f0-df14-4f7b-ac96-dd3d3e8b1663

📥 Commits

Reviewing files that changed from the base of the PR and between 8de6e18 and c6e2bae.

📒 Files selected for processing (185)
  • CONTRIBUTING.md
  • docs/.vitepress/config.ts
  • docs/.vitepress/json-ld.ts
  • docs/.vitepress/og-image.ts
  • docs/.vitepress/sidebar.ts
  • docs/.vitepress/theme/QuestionMeta.vue
  • docs/.vitepress/theme/i18n.ts
  • docs/.vitepress/theme/questions.data.ts
  • docs/.vitepress/theme/style.css
  • docs/ar/flashcards.md
  • docs/ar/index.md
  • docs/ar/q/abort-controller-composable.md
  • docs/ar/q/accessibility-in-vue.md
  • docs/ar/q/async-components.md
  • docs/ar/q/async-composable-error-handling.md
  • docs/ar/q/auth-with-vue-router.md
  • docs/ar/q/await-in-script-setup.md
  • docs/ar/q/compiler-macros.md
  • docs/ar/q/complex-forms.md
  • docs/ar/q/component-vs-element-vnode.md
  • docs/ar/q/composable-data-fetching.md
  • docs/ar/q/composition-api-vs-options-api.md
  • docs/ar/q/composition-api-vs-react-hooks.md
  • docs/ar/q/compound-components-pattern.md
  • docs/ar/q/computed-conditional-dependencies.md
  • docs/ar/q/computed-sort-mutation.md
  • docs/ar/q/computed-vs-watch.md
  • docs/ar/q/conditional-rendering.md
  • docs/ar/q/container-presentational-pattern.md
  • docs/ar/q/controlled-vs-uncontrolled-inputs.md
  • docs/ar/q/create-vue-project.md
  • docs/ar/q/css-scoped-modules-dynamic.md
  • docs/ar/q/custom-directives.md
  • docs/ar/q/custom-ref.md
  • docs/ar/q/custom-v-model-modifiers.md
  • docs/ar/q/dashboard-widget-architecture.md
  • docs/ar/q/debounce-search-input.md
  • docs/ar/q/debug-ssr-requests.md
  • docs/ar/q/define-expose.md
  • docs/ar/q/define-slots-typing.md
  • docs/ar/q/definemodel-object-mutation.md
  • docs/ar/q/defineprops-type-limitations.md
  • docs/ar/q/diagnose-slow-page.md
  • docs/ar/q/dom-update-batching.md
  • docs/ar/q/drag-and-drop.md
  • docs/ar/q/dynamic-components-keepalive.md
  • docs/ar/q/effect-scope.md
  • docs/ar/q/emit-events-typescript.md
  • docs/ar/q/error-handling.md
  • docs/ar/q/event-handling.md
  • docs/ar/q/event-modifier-order.md
  • docs/ar/q/fallthrough-attrs.md
  • docs/ar/q/flux-unidirectional-data-flow.md
  • docs/ar/q/focus-management-spa.md
  • docs/ar/q/force-rerender.md
  • docs/ar/q/functional-components.md
  • docs/ar/q/generic-components.md
  • docs/ar/q/get-current-instance.md
  • docs/ar/q/global-error-handling.md
  • docs/ar/q/hoc-equivalents-vue.md
  • docs/ar/q/how-pinia-works.md
  • docs/ar/q/how-vuex-works.md
  • docs/ar/q/i18n-vue.md
  • docs/ar/q/infinite-scroll.md
  • docs/ar/q/initialize-state-from-prop.md
  • docs/ar/q/is-attribute-dynamic-rendering.md
  • docs/ar/q/javascript-before-vue.md
  • docs/ar/q/large-project-structure.md
  • docs/ar/q/lazy-loading-code-splitting.md
  • docs/ar/q/lifecycle-hooks.md
  • docs/ar/q/lifting-state-up.md
  • docs/ar/q/list-rendering-v-for.md
  • docs/ar/q/list-virtualization.md
  • docs/ar/q/markraw-toraw.md
  • docs/ar/q/micro-frontends-vue.md
  • docs/ar/q/multiple-v-model.md
  • docs/ar/q/mutating-props-warning.md
  • docs/ar/q/nexttick.md
  • docs/ar/q/nuxt-authentication.md
  • docs/ar/q/nuxt-auto-imports.md
  • docs/ar/q/nuxt-data-fetching.md
  • docs/ar/q/nuxt-deployment.md
  • docs/ar/q/nuxt-directory-structure.md
  • docs/ar/q/nuxt-file-based-routing.md
  • docs/ar/q/nuxt-hybrid-rendering.md
  • docs/ar/q/nuxt-layers.md
  • docs/ar/q/nuxt-layouts.md
  • docs/ar/q/nuxt-middleware.md
  • docs/ar/q/nuxt-modules.md
  • docs/ar/q/nuxt-nitro-server-routes.md
  • docs/ar/q/nuxt-payload.md
  • docs/ar/q/nuxt-rendering-modes.md
  • docs/ar/q/nuxt-server-vs-route-middleware.md
  • docs/ar/q/nuxt-state-management.md
  • docs/ar/q/nuxt-usefetch-event-handler.md
  • docs/ar/q/nuxt2-to-nuxt3-friction.md
  • docs/ar/q/nuxt2-vs-nuxt3.md
  • docs/ar/q/object-freeze-reactive.md
  • docs/ar/q/optimistic-updates.md
  • docs/ar/q/perf-component-abstraction-lists.md
  • docs/ar/q/perf-computed-object-stability.md
  • docs/ar/q/perf-props-stability.md
  • docs/ar/q/perf-updated-hook.md
  • docs/ar/q/performance-optimization.md
  • docs/ar/q/pinia-colada.md
  • docs/ar/q/pinia-plugins.md
  • docs/ar/q/pinia-vs-composable-vs-local.md
  • docs/ar/q/pinia-vs-vuex.md
  • docs/ar/q/plugin-system.md
  • docs/ar/q/props-vs-state.md
  • docs/ar/q/props-with-typescript.md
  • docs/ar/q/provide-inject.md
  • docs/ar/q/proxy-identity-hazard.md
  • docs/ar/q/reactive-destructuring-gotcha.md
  • docs/ar/q/reactive-map-set.md
  • docs/ar/q/reactive-property-reassignment.md
  • docs/ar/q/reactive-with-primitives.md
  • docs/ar/q/reactivity-system.md
  • docs/ar/q/readonly-shallow-readonly.md
  • docs/ar/q/ref-empty-string-vs-null.md
  • docs/ar/q/ref-value-gotcha.md
  • docs/ar/q/ref-vs-reactive.md
  • docs/ar/q/render-functions-jsx.md
  • docs/ar/q/scale-vue-multiple-teams.md
  • docs/ar/q/scoped-css-child-components.md
  • docs/ar/q/script-setup.md
  • docs/ar/q/shallow-ref-reactive.md
  • docs/ar/q/shared-component-library.md
  • docs/ar/q/shopping-cart-architecture.md
  • docs/ar/q/slots.md
  • docs/ar/q/spreading-props-pitfalls.md
  • docs/ar/q/ssr-cross-request-state-pollution.md
  • docs/ar/q/ssr-hydration-mismatch.md
  • docs/ar/q/ssr-platform-specific-apis.md
  • docs/ar/q/suspense-ssr-hydration.md
  • docs/ar/q/suspense.md
  • docs/ar/q/teleport-fragments-suspense.md
  • docs/ar/q/teleport-scoped-styles.md
  • docs/ar/q/template-ref-null-v-if.md
  • docs/ar/q/template-refs.md
  • docs/ar/q/test-async-setup-suspense.md
  • docs/ar/q/test-composable-fake-timers.md
  • docs/ar/q/test-pinia-store.md
  • docs/ar/q/testing-composable-fetch.md
  • docs/ar/q/testing-with-vitest.md
  • docs/ar/q/torefs-toref-tovalue.md
  • docs/ar/q/transition-and-transition-group.md
  • docs/ar/q/tree-shaking-vue3.md
  • docs/ar/q/typing-event-handlers.md
  • docs/ar/q/typing-template-refs.md
  • docs/ar/q/undeclared-emits-double-firing.md
  • docs/ar/q/v-for-key.md
  • docs/ar/q/v-html-xss.md
  • docs/ar/q/v-if-vs-v-show.md
  • docs/ar/q/v-if-with-v-for.md
  • docs/ar/q/v-model-basics.md
  • docs/ar/q/v-model-custom-components.md
  • docs/ar/q/v-model-explained-for-react-devs.md
  • docs/ar/q/v-once-v-memo.md
  • docs/ar/q/v-show-template-limitation.md
  • docs/ar/q/virtual-dom.md
  • docs/ar/q/vitest-vue-config.md
  • docs/ar/q/vue-anti-patterns.md
  • docs/ar/q/vue-devtools.md
  • docs/ar/q/vue-library-or-framework.md
  • docs/ar/q/vue-router-navigation-guards.md
  • docs/ar/q/vue-typescript-utility-types.md
  • docs/ar/q/vue2-to-vue3-migration.md
  • docs/ar/q/vueuse.md
  • docs/ar/q/vuex-module-to-pinia.md
  • docs/ar/q/watch-async-memory-leak.md
  • docs/ar/q/watch-deep-same-reference.md
  • docs/ar/q/watch-vs-watcheffect.md
  • docs/ar/q/watcheffect-async-tracking.md
  • docs/ar/q/what-is-a-composable.md
  • docs/ar/q/what-is-hydration.md
  • docs/ar/q/what-is-ssr.md
  • docs/ar/q/what-is-vite.md
  • docs/ar/q/what-is-vue.md
  • docs/ar/q/withdefaults-gotchas.md
  • docs/ar/q/writable-computed.md
  • docs/ar/questions.md
  • docs/ar/resources.md
  • docs/es/index.md
  • docs/index.md

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

i18n: add Arabic (ar) translation

1 participant