Skip to content
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

🌐 New Crowdin updates #1471

Merged
merged 10 commits into from
Jan 3, 2025
Merged

🌐 New Crowdin updates #1471

merged 10 commits into from
Jan 3, 2025

Conversation

lukevella
Copy link
Owner

@lukevella lukevella commented Dec 27, 2024

Summary by CodeRabbit

  • New Features
    • Added multiple new messages in Korean for event reservations and participant notifications, enhancing user experience.
    • Introduced new strings in Spanish for profile management and polling functionalities, including file upload instructions and error messages.
    • Enhanced Spanish localization with updated translations for better clarity and consistency.
    • Added new user statistics and improved descriptions on the landing page in Spanish.
  • Bug Fixes
    • Corrected the term "Powernutzer" to "Poweruser" in the German pricing description for improved accuracy.

Copy link

vercel bot commented Dec 27, 2024

The latest updates on your projects. Learn more about Vercel for Git ↗︎

2 Skipped Deployments
Name Status Preview Comments Updated (UTC)
app ⬜️ Ignored (Inspect) Visit Preview Dec 30, 2024 4:47am
landing ⬜️ Ignored (Inspect) Visit Preview Dec 30, 2024 4:47am

@vercel vercel bot temporarily deployed to Preview – landing December 27, 2024 15:15 Inactive
Copy link
Contributor

coderabbitai bot commented Dec 27, 2024

Walkthrough

This pull request enhances localization across multiple languages by adding and updating string entries in various JSON files. The Korean localization for email templates is expanded with new messages related to event finalization and participant notifications. The German localization is updated to correct a term, while the Spanish localizations are improved with both updates to existing strings and the addition of new entries, ensuring clarity and accuracy in user communications.

Changes

File Change Summary
packages/emails/locales/ko/emails.json Added multiple new localization strings:
- common_poweredBy: Powered by domain link
- common_disableNotifications: Notification disabling instruction
- finalizeHost_content: Event reservation confirmation
- finalizeHost_preview: Final reservation date notification
- finalizeHost_heading: Heading for final reservation date
- finalizeHost_content2: Notification of sent calendar invites
- finalizeHost_button: View event button
- finalizeHost_subject: Subject for event reservation email
- finalizeParticipant_content: Participant reservation notification
- finalizeParticipant_preview: Final reservation date notification
- finalizeParticipant_heading: Heading for final reservation date
- finalizeParticipant_content2: Calendar invite attachment notification
- finalizeParticipant_subject: Subject for participant reservation email
- login_button: Login message for domain
apps/landing/public/locales/de/pricing.json Updated string:
- planProDescription: Corrected from "Powernutzer" to "Poweruser"
apps/landing/public/locales/es/common.json Updated existing strings:
- bestDoodleAlternative: Changed to "Mejor alternativa a Doodle"
- freeSchedulingPoll: Changed to "Encuesta de programación gratuita"
Added new keys:
- when2MeetAlternative: "Alternativa a When2Meet"
- meetingPoll: "Encuesta de reunión"
apps/web/public/locales/es/app.json Added multiple new localization strings related to profile management and polling features, including:
- removeAvatar, uploadProfilePicture, profilePictureDescription, invalidFileType, invalidFileTypeDescription, fileTooLarge, fileTooLargeDescription, errorUploadPicture, errorUploadPictureDescription, featureNameFinalize, featureNameDuplicate, featureNameAdvancedSettings, featureNameExtendedPollLifetime, 12months, savePercentage, 1month, subscribe, cancelAnytime
packages/emails/locales/es/emails.json Updated multiple existing strings for clarity and consistency, including:
- common_poweredBy, common_disableNotifications, finalizeHost_content, finalizeHost_preview, finalizeHost_heading, finalizeHost_content2, finalizeHost_subject, finalizeParticipant_content, finalizeParticipant_preview, finalizeParticipant_heading, finalizeParticipant_content2, finalizeParticipant_subject, login_content, login_preview, newParticipantConfirmation_content, newPoll_content, register_footer, newComment_heading, and added newPoll_preview.
apps/landing/public/locales/es/home.json Updated strings for clarity and accuracy, added user statistics, and revised meta titles and descriptions.
apps/landing/public/locales/es/pricing.json Updated strings for clarity, including pricingDescription, whyUpgrade, howToUpgradeAnswer, and added pricingTitle, pricingSubtitle.

Possibly related PRs

  • 🌐 New Crowdin updates #1150: This PR involves adding new localization keys related to email notifications, which includes similar entries for confirming event reservations and participant notifications as seen in the main PR.
  • 🌐 New Crowdin updates #1260: This PR adds new localization strings for email notifications, including messages for finalizing events, which aligns with the changes made in the main PR.
  • 🌐 New Crowdin updates #1331: This PR introduces new localization strings for email notifications, including messages related to event finalization, which directly relates to the changes in the main PR.
  • 🌐 New Crowdin updates #1335: This PR adds localization strings for email notifications, including messages for confirming event reservations, which is relevant to the main PR's focus on email content localization.
  • 🌐 New Crowdin updates #1347: This PR includes updates to localization strings that enhance the email notifications related to event finalization, which is a key aspect of the main PR.
  • 🌐 New Crowdin updates #1354: This PR introduces new localization strings that enhance the email notifications for event confirmations, which is directly related to the changes in the main PR.
  • 🌐 New Crowdin updates #1367: This PR adds new localization strings for email notifications, including messages for finalizing events, which aligns with the main PR's focus on enhancing email content.
  • 🌐 New Crowdin updates #1370: This PR introduces new localization strings for email notifications, including messages related to event confirmations, which is relevant to the main PR.
  • 🌐 New Crowdin updates #1394: This PR updates localization strings for email notifications, including messages for confirming event reservations, which relates to the main PR's changes.
  • 🌐 New Crowdin updates #1414: This PR adds new localization strings for email notifications, including messages related to event confirmations, which aligns with the main PR's focus on email content localization.
  • 🌐 New Crowdin updates #1426: This PR introduces new localization strings for email notifications, including messages for finalizing events, which is relevant to the main PR.
  • 🌐 New Crowdin updates #1460: This PR enhances localization strings for email notifications, including messages for confirming event reservations, which relates to the main PR's changes.
  • 🌐 New Crowdin updates #1469: This PR adds new localization strings for email notifications, including messages related to event confirmations, which is relevant to the main PR.
  • 🌐 New Crowdin updates #1470: This PR introduces new localization strings for email notifications, including messages for finalizing events, which aligns with the main PR's focus on enhancing email content.

Poem

🐰 Localization Hop! 🌍
Korean strings now take their flight,
Emails dancing with language's might,
Powered by links, notifications clear,
A rabbit's translation brings user cheer!

한국어로 코드가 춤춰요! 🇰🇷


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
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, 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 generate docstrings to generate docstrings for this PR. (Beta)
  • @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 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 for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@coderabbitai coderabbitai bot left a 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

🧹 Nitpick comments (1)
packages/emails/locales/ko/emails.json (1)

3-3: Remove extra space in Korean text

There's a double space after "싶으시면" that should be removed for consistent formatting.

-  "common_disableNotifications": "업데이트 수신을 중단하고 싶으시면  <a>알림을 끄셔도 됩니다.</a>.",
+  "common_disableNotifications": "업데이트 수신을 중단하고 싶으시면 <a>알림을 끄셔도 됩니다.</a>.",
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f7b0e7b and ae063f7.

📒 Files selected for processing (1)
  • packages/emails/locales/ko/emails.json (1 hunks)

Comment on lines +2 to +3
"common_poweredBy": "Powered by <a>{{domain}}</a>",
"common_disableNotifications": "업데이트 수신을 중단하고 싶으시면 <a>알림을 끄셔도 됩니다.</a>.",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codebase verification

Missing translations in Thai (th) and Vietnamese (vi) locale files

The verification revealed that the translation strings common_poweredBy and common_disableNotifications are missing in:

  • packages/emails/locales/th/emails.json
  • packages/emails/locales/vi/emails.json

These keys need to be added to maintain consistency across all locale files.

🔗 Analysis chain

Verify translations across all locale files

Let's ensure these new strings are consistently added across all locale files.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for the presence and consistency of these new strings across all locale files

# Find all emails.json files in locale directories
fd emails.json packages/emails/locales -x echo "=== {} ===" \; cat {}

# Check if the new keys exist in all locale files
echo "\nChecking for missing keys..."
for locale_file in $(fd emails.json packages/emails/locales); do
  echo "Checking $locale_file"
  jq 'has("common_poweredBy") and has("common_disableNotifications")' "$locale_file"
done

Length of output: 9203

@@ -1,3 +1,5 @@
{
"common_poweredBy": "Powered by <a>{{domain}}</a>",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Text needs to be translated to Korean

The "Powered by" text is still in English within the Korean locale file. Consider translating it to Korean for consistency.

Suggested translation (to be verified by a Korean speaker):

-  "common_poweredBy": "Powered by <a>{{domain}}</a>",
+  "common_poweredBy": "<a>{{domain}}</a> 제공",

Committable suggestion skipped: line range outside the PR's diff.

@vercel vercel bot temporarily deployed to Preview – landing December 27, 2024 16:18 Inactive
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
packages/emails/locales/ko/emails.json (1)

5-5: Consider removing duplicate content

The content in finalizeHost_content2 appears to be duplicated from finalizeHost_preview. Consider removing the duplication to maintain consistency and ease of maintenance.

  "finalizeHost_preview": "최종 예약 날짜입니다! 참가자들에게 공지하고 캘린더 초대장을 보냈습니다.",
  "finalizeHost_heading": "최종 예약 날짜!",
-  "finalizeHost_content2": "참가자들에게 공지하고 캘린더 초대장을 보냈습니다.",

Also applies to: 7-7

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ae063f7 and 10a35aa.

📒 Files selected for processing (1)
  • packages/emails/locales/ko/emails.json (1 hunks)
🔇 Additional comments (5)
packages/emails/locales/ko/emails.json (5)

2-2: Text needs to be translated to Korean

The "Powered by" text is still in English within the Korean locale file. Consider translating it to Korean for consistency.


3-3: LGTM: Properly translated notification message

The translation is complete and maintains the correct HTML tag structure.


4-6: LGTM: Well-structured host notification translations

The translations are complete and maintain proper HTML formatting and variable interpolation.

Also applies to: 8-9


10-14: Verify the grammatical particle after {{hostName}}

The translations look good overall, but please verify if the particle "는" after {{hostName}} in finalizeParticipant_content is grammatically correct for all possible host names. Some Korean names might require "이" or "가" instead.


15-15: LGTM: Properly translated login button text

The translation is complete and maintains proper variable interpolation.

Comment on lines +2 to +15
"common_poweredBy": "Powered by <a>{{domain}}</a>",
"common_disableNotifications": "업데이트 수신을 중단하고 싶으시면 <a>알림을 끄셔도 됩니다.</a>.",
"finalizeHost_content": "<b>{{title}}</b> 예약이 완료되었습니다",
"finalizeHost_preview": "최종 예약 날짜입니다! 참가자들에게 공지하고 캘린더 초대장을 보냈습니다.",
"finalizeHost_heading": "최종 예약 날짜!",
"finalizeHost_content2": "참가자들에게 공지하고 캘린더 초대장을 보냈습니다.",
"finalizeHost_button": "이벤트 보기",
"finalizeHost_subject": "{{title}}에 예약된 날짜",
"finalizeParticipant_content": "<b>{{hostName}}</b>는 다음 날짜에 <b>{{title}}</b>를 예약했습니다",
"finalizeParticipant_preview": "최종 예약 날짜!",
"finalizeParticipant_heading": "최종 예약 날짜!",
"finalizeParticipant_content2": "이 이벤트에 대한 캘린더 초대장을 첨부해 드렸습니다.",
"finalizeParticipant_subject": "{{title}}에 예약된 날짜",
"login_button": "{{domain}}에 로그인합니다",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codebase verification

Missing translations in Thai (th) and Vietnamese (vi) locale files

The verification confirms that the following translations are missing in both Thai and Vietnamese locale files:

  • common_poweredBy
  • common_disableNotifications
  • finalizeHost_content
  • finalizeParticipant_content
  • login_button

Please add these translations to maintain consistency across all locales.

🔗 Analysis chain

Verify translations in all locale files

These new strings need to be added to all locale files to maintain consistency. Previous review identified missing translations in Thai (th) and Vietnamese (vi) locale files.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for missing translations in all locale files

# Find all locale files and check for the new keys
for locale_file in $(fd emails.json packages/emails/locales); do
  echo "=== Checking $locale_file ==="
  jq '
    def check_key($key):
      if has($key) then
        empty
      else
        $key
      end;
    [
      check_key("common_poweredBy"),
      check_key("common_disableNotifications"),
      check_key("finalizeHost_content"),
      check_key("finalizeParticipant_content"),
      check_key("login_button")
    ] | select(length > 0)
  ' "$locale_file"
done

Length of output: 15752

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
apps/web/public/locales/es/app.json (1)

267-275: Maintain consistent capitalization in UI strings

While the translations are accurate, there's inconsistency in the capitalization of the first word in some strings:

  • "Remover" (starts with capital)
  • "Cargar" (starts with capital)
  • "Por favor, sube..." (starts with capital)

Consider standardizing the capitalization across these UI strings.

-  "removeAvatar": "Remover",
-  "uploadProfilePicture": "Cargar",
+  "removeAvatar": "remover",
+  "uploadProfilePicture": "cargar",
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7e3d5c1 and 59cc613.

📒 Files selected for processing (2)
  • apps/landing/public/locales/es/common.json (1 hunks)
  • apps/web/public/locales/es/app.json (1 hunks)
🔇 Additional comments (5)
apps/landing/public/locales/es/common.json (2)

20-21: LGTM! Improved Spanish translations

The changes improve the natural flow and correctness of the Spanish translations:

  • "alternativa a" is the correct preposition usage in Spanish when referring to alternatives
  • The word order in "Encuesta de programación gratuita" follows a more natural Spanish structure

26-28: LGTM! Consistent translation patterns

The new translations maintain consistency with existing patterns:

  • "Alternativa a When2Meet" follows the same structure as "alternativa a Doodle"
  • "Encuesta de reunión" aligns with the translation pattern used for other poll types
apps/web/public/locales/es/app.json (3)

266-266: LGTM: Annual benefit string is properly formatted

The translation is grammatically correct and properly uses the {count} parameter.


276-279: LGTM: Feature names are well translated

The feature name translations are clear, consistent with existing terminology, and maintain professional tone.


280-281: Verify percentage symbol formatting

The translation looks good, but let's verify if there should be a space before the % symbol according to Spanish typography rules.

✅ Verification successful

Percentage formatting is consistent with Spanish conventions

The current formatting without a space before the % symbol in "Guardar {percentage}%" is correct according to Spanish typography rules. In Spanish, unlike some other languages (such as Finnish, Norwegian, or Japanese shown in the results), the percentage symbol is typically written immediately after the number without a space. The current implementation follows this convention and is consistent with other Romance languages in the codebase (Portuguese, French) which use the same pattern.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for other percentage formatting in Spanish localization files
rg -g '*.json' '".*%.*"' apps/web/public/locales/es/

Length of output: 134


Script:

#!/bin/bash
# Let's check other locale files to see how percentage is formatted in other languages
rg -g '*.json' '"savePercentage"' apps/web/public/locales/

Length of output: 1503

@vercel vercel bot temporarily deployed to Preview – landing December 30, 2024 03:40 Inactive
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (3)
apps/landing/public/locales/es/pricing.json (1)

2-2: Maintain consistent capitalization in Spanish translations

The following translations have inconsistent sentence capitalization:

  • Line 2: "Comienza" (starts with capital)
  • Line 9: "¿Por qué debería" (starts with capital after question mark)
  • Line 11: "Para mejorar" (starts with capital)

In Spanish, sentences typically don't start with a capital letter after colons or question marks unless they're proper nouns.

-  "pricingDescription": "Comienza a utilizarlo gratis. No se necesita iniciar sesión.",
+  "pricingDescription": "comienza a utilizarlo gratis. No se necesita iniciar sesión.",
-  "whyUpgrade": "¿Por qué debería mejorar a un plan de pago?",
+  "whyUpgrade": "¿por qué debería mejorar a un plan de pago?",
-  "howToUpgradeAnswer": "Para mejorar, puedes ir a tu <a>configuración de facturación</a>...",
+  "howToUpgradeAnswer": "para mejorar, puedes ir a tu <a>configuración de facturación</a>...",

Also applies to: 9-9, 11-11

apps/landing/public/locales/es/home.json (2)

28-29: Review meta titles and descriptions for SEO optimization

The meta titles and descriptions should be optimized for SEO:

  1. Meta titles should ideally be 50-60 characters:

    • "Crea una encuesta de programación gratis al instante | No se necesita una cuenta" (73 chars)
    • "Mejor alternativa a When2Meet: Rallly" (35 chars - too short)
  2. Meta descriptions should be 150-160 characters:

    • Line 29: Current length is 119 characters
    • Line 37: Current length is 134 characters
    • Line 43: Current length is 99 characters

Consider:

  1. Shortening long meta titles by removing less important information
  2. Expanding short meta descriptions with more relevant keywords and value propositions
  3. Adding relevant keywords near the beginning of meta descriptions

Would you like me to propose specific optimizations for each meta title and description?

Also applies to: 36-37, 42-43


17-18: Fix extra whitespace in translation string

There are extra spaces at the end of the doodleAlternativeDescription string.

-  "doodleAlternativeDescription": "Rallly es la alternativa a Doodle que todo el mundo está buscando. Miles de usuarios ya han hecho el cambio y ahora disfrutan de encuestas profesionales sin anuncios en una interfaz intuitiva y fácil de usar.        ",
+  "doodleAlternativeDescription": "Rallly es la alternativa a Doodle que todo el mundo está buscando. Miles de usuarios ya han hecho el cambio y ahora disfrutan de encuestas profesionales sin anuncios en una interfaz intuitiva y fácil de usar.",
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 220e089 and 21ad524.

📒 Files selected for processing (3)
  • apps/landing/public/locales/es/home.json (2 hunks)
  • apps/landing/public/locales/es/pricing.json (2 hunks)
  • packages/emails/locales/es/emails.json (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • packages/emails/locales/es/emails.json
🔇 Additional comments (2)
apps/landing/public/locales/es/pricing.json (1)

31-33: LGTM: New pricing title translations

The newly added pricing title and subtitle translations are clear and maintain consistent messaging with the English version.

apps/landing/public/locales/es/home.json (1)

13-14: LGTM: Correct usage of ICU MessageFormat

The translations correctly implement the ICU MessageFormat for number formatting with the compact-short notation:

"statsUsersRegistered": "{count, number, ::compact-short}+ usuarios registrados",
"statsPollsCreated": "{count, number, ::compact-short}+ encuestas creadas"

@lukevella lukevella merged commit f72f713 into main Jan 3, 2025
4 checks passed
@lukevella lukevella deleted the l10n_main branch January 3, 2025 13:14
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.

1 participant