Skip to content

Conversation

@islemci
Copy link
Member

@islemci islemci commented Nov 4, 2025

Summary by CodeRabbit

  • New Features

    • Added an Analytics settings page with toggles, explanations, and related notifications.
    • Added a "Refresh" action label for subscriptions.
  • Localization

    • Added recommendation texts: subtitle, badge, and autocomplete badge across locales.
    • Added analytics-related localized strings and notifications.
    • Added a localized error shown when the customer portal cannot be opened.
    • Updated the subscription title in Russian.
  • Chores

    • Minor formatting tweaks in localization files.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link

coderabbitai bot commented Nov 4, 2025

📝 Walkthrough

Walkthrough

Adds extensive analytics localization (settings and analyticsPage), new home.recommendations strings, subscription.refresh action and portalFailed error, plus minor Azerbaijani formatting and a Russian subscription.title update across multiple locale JSON files.

Changes

Cohort / File(s) Change Summary
Analytics localization
messages/az.json, messages/de.json, messages/it.json, messages/ru.json, messages/tr.json
Added settings.analytics and a full analyticsPage object (metaTitle, mobileNav, pageTitle, descriptions, status, toggles, sections, trackedItems, neverTrackedItems, whyCollectPoints/description, privacyNotice, and toasts for analytics/session replay states).
Home recommendations additions
messages/az.json, messages/de.json, messages/it.json, messages/ru.json, messages/tr.json
Added home.recommendations.subtitle, home.recommendations.badge, and home.recommendations.autocompleteBadge localization entries.
Subscription localization additions
messages/az.json, messages/de.json, messages/it.json, messages/ru.json, messages/tr.json
Added subscription.actions.refresh and subscription.errors.portalFailed keys with locale-specific messages.
Russian title update
messages/ru.json
Updated subscription.title value from "Tekir Plus" to "Текир Плюс".
Azerbaijani formatting
messages/az.json
Adjusted indentation/whitespace for aboutPage.metaTitle (formatting-only, no semantic change).

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

  • New Crowdin updates #6 — Modifies the same localization files (messages/*.json) and adds overlapping translation keys (analyticsPage, home.recommendations, subscription.*).

Poem

🐰
I hopped through keys with tiny feet,
Placed "analytics" and badges neat.
A refresh, a portal, titles trimmed with flair—
Locales now sing in many tongues with care. 🎀

Pre-merge checks

❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'New Crowdin updates' is vague and generic, using non-descriptive language that doesn't convey meaningful information about the specific changes made to the codebase. Consider using a more specific title that describes the main changes, such as 'Add analytics localization and UI strings for multiple languages' or 'Localize analytics settings and subscription features'.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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 and usage tips.

Copy link

@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

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4011a08 and b46b9df.

📒 Files selected for processing (5)
  • messages/az.json (2 hunks)
  • messages/de.json (1 hunks)
  • messages/it.json (1 hunks)
  • messages/ru.json (2 hunks)
  • messages/tr.json (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (4)
  • messages/az.json
  • messages/it.json
  • messages/de.json
  • messages/tr.json
🔇 Additional comments (2)
messages/ru.json (2)

664-664: Verify subscription.errors.portalFailed is present in all locale files.

A new error key subscription.errors.portalFailed with message "Не удалось открыть портал клиента" (Failed to open customer portal) has been added. Confirm this error case has been added to all locale files referenced in this PR.


632-632: The Russian translation "Текир Плюс" is correct and consistent. This subscription title update appears across all locale files (en, ru, tr, it, de, az) with appropriate language-specific values, and the Cyrillic usage aligns with existing Russian localization patterns in the file.

"upgrade": "Обновить до Plus",
"upgradeToPro": "Обновить до Pro",
"manage": "Управление подпиской",
"refresh": "Обновить",
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash

# First, find all locale JSON files
echo "=== All locale files found ==="
fd -e json -path "*/messages/*.json" | sort

# Then check each one for subscription.actions.refresh
echo -e "\n=== Checking for 'subscription.actions.refresh' in each locale ==="
for file in $(fd -e json -path "*/messages/*.json" | sort); do
  if grep -q '"subscription"' "$file"; then
    echo "File: $file"
    # Extract the subscription section
    sed -n '/"subscription"/,/^  }/p' "$file" | grep -A 2 '"actions"'
  fi
done

Repository: computebaker/tekir

Length of output: 515


🏁 Script executed:

#!/bin/bash

# Find the messages directory
echo "=== Searching for messages directory ==="
find . -type d -name "messages" 2>/dev/null

# List all JSON files in messages directories
echo -e "\n=== All locale JSON files ==="
find . -type d -name "messages" -exec find {} -maxdepth 1 -name "*.json" \; 2>/dev/null | sort

# Check each file for subscription.actions.refresh
echo -e "\n=== Checking for subscription.actions.refresh ==="
find . -type d -name "messages" -exec find {} -maxdepth 1 -name "*.json" \; 2>/dev/null | sort | while read file; do
  echo "File: $file"
  if grep -q '"subscription"' "$file"; then
    sed -n '/"subscription"/,/"actions"/p' "$file" | head -10
  else
    echo "  (no subscription key found)"
  fi
done

Repository: computebaker/tekir

Length of output: 2933


🏁 Script executed:

#!/bin/bash

python3 << 'EOF'
import json
import os

messages_dir = "./messages"
locales = ["az.json", "de.json", "en.json", "it.json", "ru.json", "tr.json"]

print("=== Checking for 'subscription.actions.refresh' in all locale files ===\n")

all_present = True
for locale_file in locales:
    file_path = os.path.join(messages_dir, locale_file)
    try:
        with open(file_path, 'r', encoding='utf-8') as f:
            data = json.load(f)
        
        # Check if the key path exists
        has_key = (
            'subscription' in data and 
            isinstance(data['subscription'], dict) and
            'actions' in data['subscription'] and
            isinstance(data['subscription']['actions'], dict) and
            'refresh' in data['subscription']['actions']
        )
        
        status = "✓ PRESENT" if has_key else "✗ MISSING"
        all_present = all_present and has_key
        
        print(f"{locale_file:12} {status}", end="")
        
        if has_key:
            refresh_value = data['subscription']['actions']['refresh']
            print(f" - Value: \"{refresh_value}\"")
        else:
            print()
            
    except Exception as e:
        print(f"{locale_file:12} ✗ ERROR: {e}")
        all_present = False

print(f"\n{'='*50}")
print(f"Result: {'All locales have the key ✓' if all_present else 'Some locales missing the key ✗'}")
EOF

Repository: computebaker/tekir

Length of output: 148


🏁 Script executed:

#!/bin/bash

echo "=== Checking for subscription.actions.refresh in all locales ==="
echo ""

for file in ./messages/{az,de,en,it,ru,tr}.json; do
  locale=$(basename "$file" .json)
  echo -n "$locale.json: "
  
  # Look for the pattern "actions" followed by "refresh"
  if grep -q '"actions"' "$file" && sed -n '/"actions"/,/},/p' "$file" | grep -q '"refresh"'; then
    # Extract the refresh value
    value=$(sed -n '/"actions"/,/}/p' "$file" | grep '"refresh"' | head -1)
    echo "$value"
  else
    echo "✗ MISSING"
  fi
done

Repository: computebaker/tekir

Length of output: 347


Add subscription.actions.refresh to en.json locale file.

The subscription.actions.refresh key has been added to ru.json and 4 other locale files (az, de, it, tr), but is missing from en.json. Add the English translation to maintain consistency across all locales.

🤖 Prompt for AI Agents
In messages/ru.json around line 659 the key "subscription.actions.refresh" was
added for Russian; the same key is missing from messages/en.json — open
messages/en.json and add the subscription.actions.refresh entry with the English
translation ("Refresh") in the appropriate place following the existing
subscription.actions block so all locales remain consistent.

Copilot AI review requested due to automatic review settings December 10, 2025 22:09
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR contains automated localization updates from Crowdin, adding new translation strings and fixing existing translations across five language files.

  • Added new UI strings for recommendations (subtitle, badge labels) and subscription actions (refresh button)
  • Added new error message for customer portal failures
  • Fixed Russian subscription title to use Cyrillic script and corrected Azerbaijani file formatting

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated no comments.

Show a summary per file
File Description
messages/tr.json Added Turkish translations for recommendation UI elements, subscription refresh action, and portal error message
messages/ru.json Added Russian translations for new UI strings, corrected subscription title from Latin to Cyrillic script
messages/it.json Added Italian translations for recommendation UI elements, subscription refresh action, and portal error message
messages/de.json Added German translations for recommendation UI elements, subscription refresh action, and portal error message
messages/az.json Added Azerbaijani translations for new UI strings, fixed indentation for metaTitle field

After thorough review of the localization updates, I found no issues to report. The changes are:

  • Syntactically correct with proper JSON formatting
  • Consistent across all language files
  • Include appropriate localization updates from Crowdin
  • Fix a previous formatting issue in the Azerbaijani file

The PR is ready to merge.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link

@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

♻️ Duplicate comments (1)
messages/ru.json (1)

73-73: LGTM! Russian localization additions are complete and well-formed.

The translations for analytics settings, home recommendations, and subscription-related strings are properly structured. The change of subscription.title from "Tekir Plus" to "Текир Плюс" (Cyrillic) is a valid localization choice for Russian users.

Note: The previous review correctly identified that subscription.actions.refresh is missing from en.json — that issue should still be addressed to maintain consistency across all locales.

Also applies to: 441-508, 642-645, 703-703, 730-737

📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 485d9aa and c160b1c.

📒 Files selected for processing (5)
  • messages/az.json
  • messages/de.json
  • messages/it.json
  • messages/ru.json
  • messages/tr.json
🔇 Additional comments (4)
messages/az.json (1)

73-73: LGTM! Comprehensive analytics and subscription localization additions.

The Azerbaijani translations for the new analytics settings page, home recommendations, and subscription actions are well-structured. All placeholder patterns (e.g., {field}, {file}) are preserved correctly, and the JSON structure is valid.

Also applies to: 441-508, 642-645, 730-737

messages/it.json (1)

73-73: LGTM! Italian localization additions are complete and well-formed.

The translations for analytics settings, home recommendations, and subscription-related strings are properly structured with correct placeholder preservation.

Also applies to: 441-508, 642-645, 730-737

messages/de.json (1)

73-73: LGTM! German localization additions are complete and consistent.

The translations for analytics settings, home recommendations, and subscription-related strings follow proper German conventions with correct placeholder handling.

Also applies to: 441-508, 642-645, 730-737

messages/tr.json (1)

73-73: Remaining Turkish localization additions look good.

The structure, placeholders, and overall translations for analytics settings, home recommendations, and subscription actions are correctly implemented.

Also applies to: 441-481, 491-508, 642-645, 730-737

Comment on lines +482 to +489
"whyCollectPoints": [
"Arama doğruluğunu ve alakağını iyileştir",
"Hataları ve çökmeleri hızlıca düzelt",
"Hangi özelliklerin en değerli olduğunu anlayın",
"Cihazlar arasında performansı optimize edin"
],
"whyCollectDescription": "Analitik, Tekir'in nasıl kullanıldığını anlamamıza ve herkes için daha iyi hale getirmemize yardımcı olur.",
"privacyNotice": "Analitik tamamen isteğe bağlıdır. Tekir herhangi bir veri toplama olmadan tam olarak çalışır. Daha sonra fikrinizi değiştirirseniz, analitiği istediğiniz zaman bu sayfadan devre dışı bırakabilirsiniz. Gizliliğinize saygı duyuyoruz ve verilerinizi üçüncü şahaslara asla satmıyoruz."
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Minor typos detected in Turkish translations.

Two potential typographical errors:

  1. Line 483: "alakağını" appears incorrect — should likely be "alakalılığını" (relevance) or "alaka düzeyini".

  2. Line 489: "şahaslara" should be "şahıslara" or "taraflara" (third parties).

🔎 Suggested fixes
 "whyCollectPoints": [
-  "Arama doğruluğunu ve alakağını iyileştir",
+  "Arama doğruluğunu ve alakalılığını iyileştir",
   "Hataları ve çökmeleri hızlıca düzelt",
   "Hangi özelliklerin en değerli olduğunu anlayın",
   "Cihazlar arasında performansı optimize edin"
 ],
 "whyCollectDescription": "Analitik, Tekir'in nasıl kullanıldığını anlamamıza ve herkes için daha iyi hale getirmemize yardımcı olur.",
-"privacyNotice": "Analitik tamamen isteğe bağlıdır. Tekir herhangi bir veri toplama olmadan tam olarak çalışır. Daha sonra fikrinizi değiştirirseniz, analitiği istediğiniz zaman bu sayfadan devre dışı bırakabilirsiniz. Gizliliğinize saygı duyuyoruz ve verilerinizi üçüncü şahaslara asla satmıyoruz."
+"privacyNotice": "Analitik tamamen isteğe bağlıdır. Tekir herhangi bir veri toplama olmadan tam olarak çalışır. Daha sonra fikrinizi değiştirirseniz, analitiği istediğiniz zaman bu sayfadan devre dışı bırakabilirsiniz. Gizliliğinize saygı duyuyoruz ve verilerinizi üçüncü taraflara asla satmıyoruz."

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

🤖 Prompt for AI Agents
In messages/tr.json around lines 482 to 489, there are two Turkish typos:
replace "alakağını" with "alakalılığını" (or "alaka düzeyini" if you prefer a
simpler phrase) in the whyCollectPoints array, and replace "şahaslara" with
"şahıslara" in the privacyNotice string to correct the third-party phrasing;
update the two strings accordingly while preserving surrounding punctuation and
formatting.

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.

2 participants