-
-
Notifications
You must be signed in to change notification settings - Fork 10.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
i18n: add missing Arabic translation file #21651
base: main
Are you sure you want to change the base?
Conversation
- Translated all keys in the following language JSON files to Arabic: Ghost, Portal, Search, Signup- Form, and Comments. - Ensured consistency and accuracy for improved user experience - Verified language integration and formatting for consistency This commit provides the Arabic translation for all relevant UI components in Ghost CMS, filling a previously missing language option.
"Head of Marketing at Acme, Inc": "رئيس التسويق في شركة أكمي", | ||
"Hide": "إخفاء", | ||
"Hide comment": "إخفاء التعليق", | ||
"Jamie Larson": "جيمي لارسون", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the original translation for "Jamie Larson" is better, as it is intended to be a generic name, not a literal transliteration.
Okay, I deserve that. My translation is generally better but like most Arabs I didn't distinguish between أ إ and ا. I instead used ا in all cases. he got that right and better. Other than that this version has some mistakes that will end up looking laughable like using singular instead of plural. some translation ignore the cultural context. My educated guess is that this was a machine translation and that explain the correct grammar while ignoring the context. I'm not very good with Git but if someone guides me I can merge both and give you the best of both worlds. @cathysarisky , can you help me here? should I do another pull request after merging both in my local repo. or what's the best way to resolve the conflict? |
Let's see if @KHAWARIZMIX responds. If K's unresponsive, you could certainly put in a new PR and this one could be closed without merging. But perhaps K will respond (and we should give them a couple days as a courtesy) and you can collaborate. :) |
Hello, thank you for your kind response! I deeply appreciate the efforts of all contributors, especially the Arabic translators. I didn’t attempt to merge my translation because I thought it was better than anyone else’s work, but simply because I wasn’t aware that others were already contributing. I’m not here to compete or challenge others. My goal is to offer my help to the community that I admire and want to support. |
@KHAWARIZMIX , thanks for the reply and for explaining what happened! If you and the other Arabic speakers can work together to agree on a 'best' set of translations, that'd be great. I don't have anything to add here. :) |
Hello - checking in here! What can I do to help move these translations forward? |
Hello, I hope the conflicts have been fixed as expected! |
{ | ||
"{{amount}} characters left": "{{amount}} حرف متبقي", | ||
"{{amount}} comments": "{{amount}} تعليقات", | ||
"{{amount}} characters left": "الحروف المتبقية: {{amount}}", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You have lost the { and } around this file. These are required for the i18next to understand your work. Please correct.
WalkthroughThe pull request involves comprehensive updates to Arabic localization files across multiple JSON files in the Ghost project. The changes focus on improving translation accuracy, grammatical correctness, and clarity for various user interface elements. Modifications span across comments, email confirmations, newsletter subscriptions, search functionality, and signup forms. The updates include refining existing translations, adding new phrases, correcting verb forms, and ensuring more natural language usage in Arabic. Changes
🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
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)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
🔭 Outside diff range comments (1)
ghost/i18n/locales/ar/portal.json (1)
Line range hint
172-179
: Fix RTL formatting and punctuation placement.The period placement and number formatting need adjustment for proper RTL display:
-"Too many attempts try again in {{number}} days.": ".أيام{{number}} محاولات متعددة جدًا، حاول مرة أخرى بعد ", +"Too many attempts try again in {{number}} days.": "محاولات متعددة جدًا، حاول مرة أخرى بعد {{number}} أيام.",
🧹 Nitpick comments (3)
ghost/i18n/locales/ar/portal.json (3)
2-7
: Consider revising placeholder positions for better Arabic readability.The translations are technically correct, but some phrases could be more natural in Arabic by adjusting the word order. For example:
-"{{amount}} off for first {{number}} months.": "{{amount}} خصم لمدة {{number}} أشهر الأولى.", +"{{amount}} off for first {{number}} months.": "خصم {{amount}} لمدة {{number}} أشهر الأولى.",
70-81
: Improve error message clarity and consistency.The error messages use passive voice ("لم يتمكن من") which makes them longer and less direct. Consider using active voice for more natural Arabic translations:
-"Failed to cancel subscription, please try again": "لم يتمكن من إلغاء الاشتراك، الرجاء المحاولة مرة أخرى", +"Failed to cancel subscription, please try again": "فشل إلغاء الاشتراك، الرجاء المحاولة مرة أخرى",
201-213
: Enhance subscription message tone and formality.Consider using more formal and engaging Arabic phrases for subscription-related messages:
-"You currently have a free membership, upgrade to a paid subscription for full access.": "لديك حالياً عضوية مجانية، قم بالترقية إلى اشتراك مدفوع للحصول على الوصول الكامل.", +"You currently have a free membership, upgrade to a paid subscription for full access.": "لديك حالياً عضوية مجانية. للحصول على كامل المميزات، يمكنك الترقية إلى العضوية المدفوعة.",
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (6)
ghost/i18n/locales/ar/comments.json
(1 hunks)ghost/i18n/locales/ar/ghost.json
(1 hunks)ghost/i18n/locales/ar/newsletter.json
(1 hunks)ghost/i18n/locales/ar/portal.json
(2 hunks)ghost/i18n/locales/ar/search.json
(1 hunks)ghost/i18n/locales/ar/signup-form.json
(1 hunks)
🧰 Additional context used
🪛 Biome (1.9.4)
ghost/i18n/locales/ar/comments.json
[error] 1-1: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 1-2: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 2-2: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 2-2: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 2-2: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 2-3: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 3-3: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 3-3: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 3-3: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 3-4: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 4-4: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 4-5: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 5-5: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 5-5: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 5-5: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 5-6: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 6-6: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 6-6: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 6-6: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 6-7: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 7-7: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 7-8: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 8-8: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 8-8: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 8-8: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 8-9: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 9-9: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 9-9: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 9-9: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 9-10: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 10-10: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 10-10: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 10-10: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 10-11: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 11-11: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 11-12: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 12-12: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 12-13: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 13-13: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 13-13: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 13-13: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 13-13: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 13-13: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 13-13: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 13-13: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 13-13: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 13-13: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 13-15: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 15-15: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 15-18: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 18-18: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 18-18: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 18-18: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 18-18: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 18-18: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 18-18: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 18-18: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 18-18: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 18-18: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 18-19: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 19-19: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 19-19: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 19-19: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 19-19: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 19-19: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 19-19: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 19-19: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 19-19: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 19-19: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 19-22: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 22-22: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 22-25: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 25-25: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 25-28: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 28-28: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 28-29: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 29-29: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 29-29: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 29-29: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 29-29: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 29-29: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 29-30: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 30-30: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 30-31: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 31-31: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 31-32: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 32-32: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 32-32: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 32-32: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 32-32: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 32-32: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 33-33: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 33-33: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 33-33: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 33-33: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 33-33: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 33-33: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 34-34: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 34-34: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 34-35: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 35-35: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 35-35: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 35-35: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 35-35: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 35-35: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 35-35: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 35-35: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 36-36: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 36-36: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 36-37: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 37-37: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 37-37: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 37-37: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 37-38: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 38-38: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 38-39: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 39-39: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 39-39: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 39-39: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 39-40: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 40-40: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 40-41: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 41-41: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 41-41: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 41-41: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 41-42: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 42-42: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 42-42: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 42-42: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 42-44: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 44-44: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 44-44: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 44-45: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 45-45: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 45-45: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 46-46: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 46-46: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 46-48: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 48-48: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 48-48: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 48-48: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 48-48: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 48-48: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 49-49: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 49-49: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 49-50: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 50-50: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 50-50: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 50-50: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 50-51: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 51-51: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 51-51: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 51-52: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 52-52: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 52-52: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 52-53: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 53-53: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 53-53: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 53-53: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 53-53: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 53-53: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 53-54: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 54-54: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 54-54: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 54-54: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 54-54: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 54-54: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 54-54: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 54-54: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 54-54: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 54-54: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 54-55: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 55-55: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 55-55: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 55-55: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 56-56: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 56-56: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 56-57: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 57-57: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 58-58: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 58-58: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 58-59: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 59-59: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 59-59: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 59-59: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 59-61: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 61-61: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 61-61: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 61-61: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 61-62: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 62-62: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 62-62: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 62-62: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 62-63: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 63-63: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 63-64: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 64-64: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 64-65: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 65-65: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 65-66: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 66-66: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 66-67: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 67-67: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 67-67: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 67-67: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 67-68: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 68-68: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 68-68: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 68-68: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 68-69: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 69-69: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 69-70: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 70-70: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 70-72: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 72-72: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 72-72: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 72-72: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 72-73: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 73-73: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 73-73: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 73-73: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 73-74: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 74-74: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 74-74: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 74-74: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 74-75: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 75-75: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 75-75: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 75-75: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 75-75: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 75-75: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 75-75: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 75-76: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 76-76: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 76-76: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 76-76: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 76-76: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 76-77: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 77-77: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 77-77: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 77-77: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 77-78: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 78-78: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 78-79: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 79-79: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 79-80: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 80-80: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 80-80: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 80-80: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 80-80: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 80-80: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 80-80: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 80-80: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 80-80: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 80-80: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 80-80: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 80-80: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
🔇 Additional comments (6)
ghost/i18n/locales/ar/search.json (1)
2-7
: Translations look good and use more standardized terminology!The Arabic translations have been improved with more formal and widely accepted terms:
- "Authors" translation changed from "الكتّاب" to "المؤلفون" which is more formal
- Search instruction uses better word order and clearer terms
ghost/i18n/locales/ar/signup-form.json (1)
2-8
: Well-structured and clear translations for the signup flow!The translations effectively convey:
- Clear error messages
- Proper guidance for email verification
- Consistent formal tone throughout
ghost/i18n/locales/ar/newsletter.json (1)
4-23
: Excellent improvements to subscription-related terminology!The translations show significant improvements:
- Better terminology for subscription states
- Clearer date-related messages
- Consistent use of formal Arabic
ghost/i18n/locales/ar/ghost.json (1)
3-33
: Comprehensive and security-conscious translations!The translations effectively handle:
- Security-related messages
- Email verification flows
- Authentication states
- Welcome messages
ghost/i18n/locales/ar/comments.json (2)
38-38
: Revert the transliteration of "Jamie Larson".As noted in previous reviews, example names should not be transliterated as they are intended to be generic placeholders.
🧰 Tools
🪛 Biome (1.9.4)
[error] 37-38: End of file expected
Use an array for a sequence of values:
[1, 2]
(parse)
[error] 38-38: End of file expected
Use an array for a sequence of values:
[1, 2]
(parse)
[error] 38-39: End of file expected
Use an array for a sequence of values:
[1, 2]
(parse)
3-10
: Well-structured time-related translations!The translations for time periods (days, months, years, etc.) are clear and follow proper Arabic grammar rules for pluralization.
Also applies to: 45-50
🧰 Tools
🪛 Biome (1.9.4)
[error] 3-3: End of file expected
Use an array for a sequence of values:
[1, 2]
(parse)
[error] 3-3: End of file expected
Use an array for a sequence of values:
[1, 2]
(parse)
[error] 3-3: End of file expected
Use an array for a sequence of values:
[1, 2]
(parse)
[error] 3-4: End of file expected
Use an array for a sequence of values:
[1, 2]
(parse)
[error] 4-4: End of file expected
Use an array for a sequence of values:
[1, 2]
(parse)
[error] 4-5: End of file expected
Use an array for a sequence of values:
[1, 2]
(parse)
[error] 5-5: End of file expected
Use an array for a sequence of values:
[1, 2]
(parse)
[error] 5-5: End of file expected
Use an array for a sequence of values:
[1, 2]
(parse)
[error] 5-5: End of file expected
Use an array for a sequence of values:
[1, 2]
(parse)
[error] 5-6: End of file expected
Use an array for a sequence of values:
[1, 2]
(parse)
[error] 6-6: End of file expected
Use an array for a sequence of values:
[1, 2]
(parse)
[error] 6-6: End of file expected
Use an array for a sequence of values:
[1, 2]
(parse)
[error] 6-6: End of file expected
Use an array for a sequence of values:
[1, 2]
(parse)
[error] 6-7: End of file expected
Use an array for a sequence of values:
[1, 2]
(parse)
[error] 7-7: End of file expected
Use an array for a sequence of values:
[1, 2]
(parse)
[error] 7-8: End of file expected
Use an array for a sequence of values:
[1, 2]
(parse)
[error] 8-8: End of file expected
Use an array for a sequence of values:
[1, 2]
(parse)
[error] 8-8: End of file expected
Use an array for a sequence of values:
[1, 2]
(parse)
[error] 8-8: End of file expected
Use an array for a sequence of values:
[1, 2]
(parse)
[error] 8-9: End of file expected
Use an array for a sequence of values:
[1, 2]
(parse)
[error] 9-9: End of file expected
Use an array for a sequence of values:
[1, 2]
(parse)
[error] 9-9: End of file expected
Use an array for a sequence of values:
[1, 2]
(parse)
[error] 9-9: End of file expected
Use an array for a sequence of values:
[1, 2]
(parse)
[error] 9-10: End of file expected
Use an array for a sequence of values:
[1, 2]
(parse)
[error] 10-10: End of file expected
Use an array for a sequence of values:
[1, 2]
(parse)
[error] 10-10: End of file expected
Use an array for a sequence of values:
[1, 2]
(parse)
[error] 10-10: End of file expected
Use an array for a sequence of values:
[1, 2]
(parse)
"{{amount}} hrs ago": "منذ {{amount}} ساعات", | ||
"{{amount}} mins ago": "منذ {{amount}} دقيقة", | ||
"{{amount}} more": "{{amount}} المزيد", | ||
"{{amount}} characters left": "الحروف المتبقية: {{amount}}", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix JSON structure: Missing opening curly brace.
The file is missing the opening curly brace {
which is required for valid JSON structure.
Add the opening curly brace:
+{
"{{amount}} characters left": "الحروف المتبقية: {{amount}}",
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
"{{amount}} characters left": "الحروف المتبقية: {{amount}}", | |
{ | |
"{{amount}} characters left": "الحروف المتبقية: {{amount}}", |
🧰 Tools
🪛 Biome (1.9.4)
[error] 1-1: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 1-2: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good catch, @coderabbitai! The opening and closing braces are important in all json files that contain translation strings, in ghost/i18n/locales
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@cathysarisky Thank you for confirming! I'll remember this requirement for future reviews.
🐰 thoughtfully takes notes
✏️ Learnings added
Learnt from: cathysarisky
PR: TryGhost/Ghost#21651
File: ghost/i18n/locales/ar/comments.json:1-1
Timestamp: 2025-01-29T15:35:26.254Z
Learning: All JSON files containing translation strings in ghost/i18n/locales must include both opening and closing braces to maintain valid JSON structure.
Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.
"Account settings": "إعدادات الحساب", | ||
"After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": ".بعد انتهاء فترة التجربة المجانية، سيتم خصم السعر العادي للفئة التي اخترتها. يمكنك دائمًا إلغاء الاشتراك قبل ذلك", | ||
"Already a member?": "هل أنت عضو بالفعل؟", | ||
"+1 (123) 456-7890": "", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add localized versions of placeholder content.
The following strings are missing Arabic translations:
- Phone number format should use Arabic numerals: "+۹٦٦ ٥٥ ١٢٣ ٤٥٦٧"
- Name should use an Arabic name: "محمد أحمد"
- Email can remain in Latin characters as it's a technical requirement
Also applies to: 100-101
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@coderabbitai, you can specifically ignore the phone number field localization.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@cathysarisky Understood, I'll ignore phone number field localization in future reviews.
✏️ Learnings added
Learnt from: cathysarisky
PR: TryGhost/Ghost#21651
File: ghost/i18n/locales/ar/portal.json:13-13
Timestamp: 2025-01-29T15:36:04.048Z
Learning: Phone number field localization should be ignored in Ghost CMS UI reviews. These fields should retain their original format rather than being localized to Arabic or other scripts.
Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.
If you found this review helpful, would you consider giving us a shout-out on X?
Thank you for using CodeRabbit!
This commit provides the Arabic translation for all relevant UI components in Ghost CMS, filling a previously missing language option.
Got some code for us? Awesome 🎊!
Please include a description of your change & check your PR against this list, thanks!
yarn test:all
andyarn lint
)We appreciate your contribution!