Files
cal.diy/packages/lib/server/locales/lv/common.json
T
163c7ff791 refactor: replace i18n HTTP requests with build-time bundling (#22422)
* refactor: replace i18n HTTP requests with build-time bundling

- Create translationBundler.ts for build-time translation loading
- Replace HTTP fetch in loadTranslations with file system reads
- Add CalComVersion cache invalidation to prevent stale translations
- Fix TypeScript errors in booking page components
- Eliminate 60s timeout issues by removing network dependency

Resolves translation timeout issues by bundling translations at build time
instead of making runtime HTTP requests to /static/locales/ endpoints.

Co-Authored-By: keith@cal.com <keithwillcode@gmail.com>

* fix: move i18n files back to packages/lib/server with proper imports

- Move i18n.ts and translationBundler.ts back to packages/lib/server/
- Replace all relative imports with @calcom/lib/server/i18n pattern
- Fix LOCALES_PATH to point to correct directory
- Maintain optimized serverless-friendly translation loading

Co-Authored-By: keith@cal.com <keithwillcode@gmail.com>

* refactor: move locale files to packages/lib/server to eliminate circular deps

- Move all locale files from apps/web/public/static/locales to packages/lib/server/locales
- Create copy-locales-static.js script to copy files during build
- Update all references to use new location for build-time access
- Maintain public folder copying for Next.js runtime access
- Update platform atoms, scripts, and config files
- Fix copy script relative path issue

Co-Authored-By: keith@cal.com <keithwillcode@gmail.com>

* fix: update test imports after locale refactor

- Fix import paths in test files updated by pre-commit hooks
- Ensure all tests use correct locale import paths

Co-Authored-By: keith@cal.com <keithwillcode@gmail.com>

* fix: revert import paths from @calcom/web/lib/i18n to @calcom/lib/server/i18n

- Revert all test file imports back to @calcom/lib/server/i18n as requested
- Addresses GitHub comment feedback to stick with packages/lib/server location
- Fixes import paths in 6 test files that were incorrectly changed

Co-Authored-By: keith@cal.com <keithwillcode@gmail.com>

* fix: update vite config alias to use new locale path

- Update @calcom/web/public/static/locales/en/common.json to @calcom/lib/server/locales/en/common.json
- Addresses GitHub comment about updating platform atoms vite config
- Maintains correct path resolution after locale files moved to packages/lib/server

Co-Authored-By: keith@cal.com <keithwillcode@gmail.com>

* fix: update translationBundler path resolution for production builds

- Use process.cwd() instead of __dirname for locale file path resolution
- Ensures locale files can be found in both development and production environments
- Fixes E2E test failures caused by missing locale files in .next/server/chunks/

Co-Authored-By: keith@cal.com <keithwillcode@gmail.com>

* fix: use relative path resolution for locale files in translationBundler

- Change from process.cwd() to __dirname with relative paths
- Ensures locale files can be found in both development and production environments
- Fixes E2E test failures caused by incorrect path resolution in Next.js builds

Co-Authored-By: keith@cal.com <keithwillcode@gmail.com>

* fix: use process.cwd() for locale path resolution in production builds

- Change from __dirname to process.cwd() with relative paths
- Ensures locale files can be found when bundled into Next.js server chunks
- Fixes E2E test failures caused by incorrect path resolution in production environment
- Follows same pattern used in getStaticProps.tsx for cross-package file access

Co-Authored-By: keith@cal.com <keithwillcode@gmail.com>

* fix: use path.resolve pattern from sendVerificationRequest for locale access

- Change from process.cwd() to path.resolve(process.cwd(), '..', '..', 'packages/lib/server/locales')
- Follows same pattern used in sendVerificationRequest.ts for cross-environment file access
- Should resolve E2E test failures by ensuring locale files can be found when bundled into Next.js server chunks
- Pattern navigates up from current working directory to reach packages directory consistently

Co-Authored-By: keith@cal.com <keithwillcode@gmail.com>

* fix: use dynamic monorepo root detection for locale path resolution

- Replace relative path resolution with dynamic monorepo root finder
- Ensures locale files can be found from any working directory (root, apps/web, apps/api/v2)
- Update API v2 i18n config to use new locale path
- Fixes remaining E2E test failures in API v2 and E2E (1/4) test suites

Co-Authored-By: keith@cal.com <keithwillcode@gmail.com>

* fix: use require.resolve(__filename) for robust path resolution in all contexts

- Replace __dirname with require.resolve(__filename) in monorepo root detection
- Ensures locale files can be found when running from any working directory
- Fixes E2E API v2 test failures where __dirname resolves to '.' instead of actual file path

Co-Authored-By: keith@cal.com <keithwillcode@gmail.com>

* Revert "fix: use require.resolve(__filename) for robust path resolution in all contexts"

This reverts commit b37d8226000da8f7d5fb98b83dd0e95a53d45372.

* fix: update copied locale files after translationBundler path resolution fix

- Copy script updated all locale files in public directory
- Ensures E2E tests have access to latest locale files
- Fixes regression where all E2E tests were failing

Co-Authored-By: keith@cal.com <keithwillcode@gmail.com>

* feat: remove existing locale files to establish copy script as single source of truth

- Delete all common.json files from apps/web/public/static/locales/
- Eliminates developer confusion about which files are authoritative
- copy-locales-static.js script now clearly the only mechanism for populating public folder
- packages/lib/server/locales/ remains the definitive source of truth for translations

Co-Authored-By: keith@cal.com <keithwillcode@gmail.com>

* add comment

* refactor: simplify findMonorepoRoot by removing redundant fallback loop

- Remove unnecessary second while loop using process.cwd()
- The first loop from __dirname will always find the monorepo root
- Add clear error message for fail-fast behavior if repo structure is corrupted
- Improves code clarity and maintainability

Co-Authored-By: keith@cal.com <keithwillcode@gmail.com>

* feat: integrate updated translations from main branch

- Restore all common.json files from main branch to apps/web/public/static/locales/
- Overwrite packages/lib/server/locales/ with up-to-date translation content
- Resolve merge conflicts using Benny's safer 2-step approach
- Ensure translation source of truth remains in packages/lib/server/locales/
- Complete safer conflict resolution to eliminate merge conflicts on PR #22422

Co-Authored-By: keith@cal.com <keithwillcode@gmail.com>

* chore: update package.json and yarn.lock after translation integration

- Update dependencies after ts-node installation for pre-commit hooks
- Ensure yarn.lock reflects current dependency state
- Complete translation integration process

Co-Authored-By: keith@cal.com <keithwillcode@gmail.com>

* feat: remove duplicate locale files from apps/web to establish single source of truth

- Delete all common.json files from apps/web/public/static/locales/
- Maintain packages/lib/server/locales/ as the single source of truth for translations
- copy-locales-static.js script will populate public folder during build process
- Complete Benny's safer 2-step approach: restore from main, then remove duplicates
- Resolve merge conflicts and eliminate developer confusion about translation file locations

Co-Authored-By: keith@cal.com <keithwillcode@gmail.com>

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: hbjORbj <sldisek783@gmail.com>
2025-07-12 07:49:27 +00:00

166 lines
11 KiB
JSON
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"identity_provider": "Identitātes nodrošinātājs",
"trial_days_left": "Jūsu PRO izmēģinājuma ir atlikušas $t(day, {\"count\": {{days}} })",
"day_one": "{{count}} diena",
"day_other": "{{count}} dienas",
"second_one": "{{count}} sekunde",
"second_other": "{{count}} sekundes",
"upgrade_now": "Atjaunināt tagad",
"accept_invitation": "Apstiprināt Uzaicinājumu",
"calcom_explained": "{{appName}} nodrošina plānošanas infrastruktūru pilnīgi visiem.",
"calcom_explained_new_user": "Pabeidziet sava {{appName}} konta iestatīšanu! Jūs esat tikai dažu soļu attālumā no visu plānošanas problēmu atrisināšanas.",
"have_any_questions": "Jums ir jautājumi? Mēs esam šeit, lai palīdzētu.",
"reset_password_subject": "{{appName}}: Paroles atiestatīšanas instrukcijas",
"verify_email_subject": "{{appName}}: Verificējiet savu kontu",
"check_your_email": "Pārbaudiet savu e-pastu",
"verify_email_page_body": "Mēs nosūtījām e-pastu uz {{email}}. Ir svarīgi verificēt jūsu e-pastu, lai garantētu labāko e-pastu un kalendāru saņemšanu no {{appName}}.",
"verify_email_banner_body": "Verificējiet savu e-pasta adresi, lai garantētu labāko e-pastu un kalendāru saņemšanu",
"verify_email_email_header": "Verificējiet savu e-pasta adresi",
"verify_email_button": "Verificēt e-pastu",
"copy_somewhere_safe": "Saglabājiet šo API atslēgu drošā vietā. Jūs to nevarēsiet skatīt vēlreiz.",
"verify_email_email_body": "Lūdzu, apstipriniet savu e-pasta adresi, noklikšķinot uz zemāk esošās pogas.",
"verify_email_by_code_email_body": "Lūdzu, apstipriniet savu e-pasta adresi, izmantojot zemāk esošo kodu.",
"verify_email_email_link_text": "Šeit ir saite gadījumam, ja jums nepatīk klikšķināt uz pogām:",
"email_verification_code": "Ievadiet verifikācijas kodu",
"email_verification_code_placeholder": "Ievadiet verifikācijas kodu, kas tika nosūtīts uz jūsu e-pastu",
"incorrect_email_verification_code": "Verifikācijas kods ir nepareizs.",
"email_sent": "E-Pasts veiksmīgi nosūtīts",
"email_not_sent": "Notika kļūme, sūtot e-pastu",
"event_declined_subject": "Noraidīts: {{title}} ({{date}})",
"event_cancelled_subject": "Atcelts: {{title}} ({{date}})",
"event_request_declined": "Jūsu notikuma pieprasījums tika noraidīts",
"event_request_declined_recurring": "Jūsu aktārtotā notikuma pieprasījums tika noraidīts",
"event_request_cancelled": "Jūsu ieplānotais notikums tika atcelts",
"organizer": "Organizētājs",
"need_to_reschedule_or_cancel": "Nepieciešams pārlikt vai atcelt?",
"no_options_available": "Nav pieejamu opciju",
"cancellation_reason": "Iemesls atcelšanai (neobligāts)",
"cancellation_reason_placeholder": "Kāpēc jūs atceļat?",
"rejection_reason": "Iemesls noraidīšanai",
"rejection_reason_title": "Vai noraidīt rezervācijas pieprasījumu?",
"rejection_reason_description": "Vai tiešām vēlaties noraidīt rezervāciju? Mēs informēsim personu, kas mēģināja rezervēt. Zemāk varat norādīt iemeslu.",
"rejection_confirmation": "Noraidīt rezervāciju",
"manage_this_event": "Pārvaldīt šo notikumu",
"invite_team_member": "Uzaicināt komandas biedru",
"invite_team_individual_segment": "Uzaicināt personu",
"invite_team_bulk_segment": "Lielapjoma importēšana",
"invite_team_notifcation_badge": "Uza.",
"your_event_has_been_scheduled": "Jūsu notikums ir ieplānots",
"your_event_has_been_scheduled_recurring": "Jūsu atkārtotais notikums ir ieplānots",
"accept_our_license": "Akceptējiet mūsu licensi, izmainot .env mainīgo <1>NEXT_PUBLIC_LICENSE_CONSENT</1> uz '{{agree}}'.",
"remove_banner_instructions": "Lai noņemtu šo baneri, lūdzu atveriet .env failu un nomainat <1>NEXT_PUBLIC_LICENSE_CONSENT</1> mainīgo uz '{{agree}}'.",
"error_message": "Kļūmes paziņojums bija: '{{errorMessage}}'",
"refund_failed_subject": "Naudas atgriešana neizdevās: {{name}} - {{date}} - {{eventType}}",
"refund_failed": "Naudas atgriešana notikumam {{eventType}} ar {{userName}}, šādā datumā: {{date}} neizdevās.",
"check_with_provider_and_user": "Lūdzu, sazinieties ar savu maksājumu pakalpojumu sniedzēju un {{user}}, kā ar šo rīkoties.",
"a_refund_failed": "Naudas atgriešana neizdevās",
"awaiting_payment_subject": "Gaida maksājumu: {{title}} datumā {{date}}",
"meeting_awaiting_payment": "Jūsu tikšanās gaida maksājumu",
"help": "Palīdzība",
"price": "Cena",
"paid": "Apmaksāts",
"refunded": "Nauda atgriezta",
"payment": "Maksājums",
"missing_card_fields": "Trūkst karšu lauku",
"enter_meeting": "Pievienoties Tikšanās",
"video_call_provider": "Video zvanu nodrošinātājs",
"meeting_id": "Tikšanās ID",
"meeting_password": "Tikšanās Parole",
"meeting_url": "Tikšanās URL",
"meeting_request_rejected": "Jūsu tikšanās pieprasījums tika noraidīts",
"rejected_event_type_with_organizer": "Noraidīts: {{eventType}} ar {{organizer}} datumā {{date}}",
"hi": "Sveiki",
"join_team": "Pievienoties komandai",
"manage_this_team": "Pārvaldīt šo komandu",
"team_info": "Komandas Info",
"request_another_invitation_email": "Ja nevēlaties izmantot {{toEmail}} kā savu {{appName}} e-pasta adresi vai jums jau ir {{appName}} konts, lūdzu, pieprasiet citu ielūgumu uz to e-pastu.",
"you_have_been_invited": "Jūs esat uzaicināts pievienoties komandai {{teamName}}",
"user_invited_you": "{{user}} uzaicināja jūs pievienoties {{entity}} {{team}} iekš {{appName}}",
"hidden_team_member_title": "Jūs esat paslēpts šajā komandā",
"hidden_team_member_message": "Jūsu vieta nav apmaksāta. Vai nu Jauniniet savu plānu uz PRO, vai paziņojat komandas īpašniekam, lai apmaksā jūsu vietu.",
"hidden_team_owner_message": "Jums ir nepieciešams Pro konts, lai izmantotu komandas. Līdz jaunināšanai, jūs esat paslēpts.",
"link_expires": "p.s. Tas beidzas pēc {{expiresIn}} stundām.",
"upgrade_to_per_seat": "Jauniniet uz Par-Vietu",
"seat_options_doesnt_support_confirmation": "Vietu opcija neatbalsta apstiprinājuma prasību",
"team_upgrade_seats_details": "No {{memberCount}} dalībniekiem jūsu komandā, {{unpaidCount}} vieta(-as) nav apmaksāta(-as). Ar cenu ${{seatPrice}}/mēnesī par vietu, jūsu kopējās izmaksas ir aptuveni ${{totalCost}}/mēnesī.",
"team_upgrade_banner_description": "Jūs neesat pabeidzis savas komandas iestatīšanu. Jūsu komanda “{{teamName}}” ir jājaunina.",
"upgrade_banner_action": "Jauniniet šeit",
"team_upgraded_successfully": "Jūsu komanda tika veiksmīgi jaunināta!",
"org_upgrade_banner_description": "Paldies, ka izmēģinājāt mūsu Organization plānu. Mēs pamanījām, ka jūsu Organization “{{teamName}}” ir jājaunina.",
"org_upgraded_successfully": "Jūsu Organization tika veiksmīgi jaunināta!",
"use_link_to_reset_password": "Izmantojiet saiti zemāk, lai atiestatītu savu paroli",
"hey_there": "Sveiks,",
"forgot_your_password_calcom": "Aizmirsi savu paroli? - {{appName}}",
"delete_webhook_confirmation_message": "Vai tiešām vēlaties dzēst šo webhook? Ja notikums tiks pārlikts vai atcelts, jūs vairs nesaņemsiet {{appName}} reāllaika tikšanās datus norādītajā URL.",
"confirm_delete_webhook": "Jā, dzēst webhook",
"edit_webhook": "Rediģēt Webhook",
"delete_webhook": "Dzēst Webhook",
"webhook_status": "Webhook Statuss",
"webhook_enabled": "Webhook Iespējots",
"webhook_disabled": "Webhook Atspējots",
"webhook_response": "Webhook atbilde",
"webhook_test": "Webhooket tests",
"manage_your_webhook": "Pārvaldīt savu webhook",
"webhook_created_successfully": "Webhook veiksmīgi izveidots!",
"webhook_updated_successfully": "Webhook veiksmīgi atjaunots!",
"webhook_removed_successfully": "Webhook veiksmīgi dzēsts!",
"payload_template": "Payload šablons",
"dismiss": "Noraidīt",
"no_data_yet": "Datu vēl nav",
"ping_test": "Ping tests",
"add_to_homescreen": "Pievienojiet šo lietotni savam sākuma ekrānam, lai iegūtu ātrāku piekļuvi un uzlabotu pieredzi.",
"upcoming": "Gaidāms",
"recurring": "Atkārtots",
"past": "Pagātne",
"booker_event_not_found": "Mēs nevarējām atrast notikumu, kuru mēģināt rezervēt.",
"getting_started": "Darba sākšana",
"15min_meeting": "15 Min Tikšanās",
"30min_meeting": "30 Min Tikšanās",
"secret": "Noslēpums",
"leave_blank_to_remove_secret": "Atstājiet tukšu, lai noņemtu noslēpumu",
"webhook_secret_key_description": "Pārliecinieties, ka jūsu serveris saņem tikai paredzētos {{appName}} pieprasījumus, drošības apsvērumu dēļ",
"secret_meeting": "Slepenā Tikšanās",
"login_instead": "Tā vietā Autorizēties",
"create_account": "Izveidot Kontu",
"confirm_password": "Apstiprināt paroli",
"already_have_account": "Vai jums jau ir konts?",
"signing_up_terms": "Turpinot, jūs piekrītat <0>noteikumiem</0> un <1>privātuma politikai</1>",
"multiple_duration_timeUnit_short": "{{count}}$t({{unit}}_short)",
"minute_short": "min",
"hour_short": "st",
"minute_one_short": "{{count}} min",
"hour_one_short": "{{count}} st",
"travel_schedule": "Ceļojuma grafiks",
"travel_schedule_description": "Ieplānojiet savu ceļojumu iepriekš, lai saglabātu savu esošo grafiku citā laika zonā un novērstu rezervāciju pusnakts laikā.",
"schedule_timezone_change": "Grafika laika zonas maiņa",
"schedule_tz_without_end_date": "Grafiks ar laika zonām bez beigu datuma",
"ooo_reasons_unspecified": "Nespecificēts",
"ooo_reasons_vacation": "Atvaļinājums",
"ooo_reasons_travel": "Ceļojums",
"ooo_reasons_sick_leave": "Slimības atvaļinājums",
"ooo_reasons_public_holiday": "Valsts svētki",
"ooo_forwarding_to": "Nosūta uz {{username}}",
"ooo_not_forwarding": "Nav nosūtīšanas",
"ooo_empty_title": "Izveidot OOO",
"ooo_empty_description": "Komunicējiet ar savu rezervētājiem, kad jūs neesat pieejami rezervācijām. Viņi joprojām var jūs rezervēt, kad jūs atgriezītos, vai jūs varat tos nosūtīt komandā biedram.",
"ooo_user_is_ooo": "{{displayName}} ir OOO",
"ooo_slots_returning": "<0>{{displayName}}</0> var piedalīties savās tikšanās, kamēr viņš ir prom.",
"ooo_slots_book_with": "Rezervējiet {{displayName}}",
"ooo_select_reason": "Izvēlieties iemeslu",
"enterprise_license_locally": "Jūs varat testēt šo funkciju vietēji, bet ne ražošanas vidē.",
"enterprise_license_sales": "Lai uzlabotu uz uzņēmuma izdevumu, lūdzu, sazinieties ar mūsu pārdošanas komandu. Ja licences atslēga jau ir, lūdzu, sazinieties ar support@cal.com uz palīdzību.",
"apply_to_all_event_types": "Piemēroties visiem, ieskaitot arī nākotnes notikumu veidus",
"date_and_time": "Datums un laiks",
"email_reminder_upcoming_event_notice": "Šis ir atgādinājums par jūsu gaidāmo pasākumu.",
"email_reminder_triggered_by_workflow": "Šo atgādinājumu ir iedarbinājis Cal darbplūsma.",
"event_upper_case": "Notikums",
"scheduling_by": "Ieplānoja",
"experience_review_prompt": "Kāda bija jūsu pēdējā pieredze?",
"improve_customer_experience_message": "Mēs pastāvīgi uzlabojam klientu pieredzi.",
"meeting_satisfaction_question": "Cik apmierināts bijāt ar savu pēdējo tikšanos?",
"meeting_not_joined_question": "nepiedalījāties sanāksmē?",
"reschedule_cta_short": "Pārzīmēt šeit.",
"you_and_conjunction": "Jūs &",
"email_survey_triggered_by_workflow": "Šo aptauju aktivizēja darbplūsma Cal."
}