mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2026-10-02 17:54:22 +10:00
feat(builder): add one-shot section date sorting (#3465)
* feat(builder): add one-shot section date sorting * docs: record plan 32 implementation evidence * chore: remove plan 32 evidence report
This commit is contained in:
@@ -1338,6 +1338,11 @@ msgstr "Kon nie hierdie pleister herstel nie."
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "Kon nie twee-faktor-magtiging opstel nie."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "Kon nie verskafferverbinding verifieer nie."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "Iets het verkeerd geloop tydens jou aanmelding. Probeer asseblief weer."
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "Iets het verkeerd geloop. Probeer asseblief weer."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "ይህንን ፓች ወደነበረበት መመለስ አልተቻለ
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "ሁለት-ደረጃ ማረጋገጫን ማዋቀር አልተቻለም።"
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "የአቅራቢውን ግንኙነት ማረጋገጥ አልተቻለም።"
|
||||
@@ -5031,6 +5036,10 @@ msgstr "ስንገባዎት የሆነ ችግር ተፈጥሯል። እባክዎ
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "የተሳሳተ ነገር ተፈጥሯል። እባክዎን ደግመው ይሞክሩ።"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "تعذر استعادة هذا التحديث."
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "تعذّر إعداد المصادقة الثنائية."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "تعذر التحقق من اتصال مزود الخدمة."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "حدث خطأ ما أثناء تسجيل دخولك. يُرجى المح
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "حدث خطأ ما. يُرجى المحاولة مرة أخرى."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "Bu yamağı bərpa etmək mümkün olmadı."
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "İki mərhələli autentifikasiya qurula bilmədi."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "Provayder bağlantısını yoxlamaq mümkün olmadı."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "Sizi daxil edərkən nəsə səhv getdi. Zəhmət olmasa yenidən cəhd
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "Nəsə səhv getdi. Zəhmət olmasa, yenidən cəhd edin."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "Не можа да се възстанови този пач."
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "Двуфакторното удостоверяване не можа да бъде настроено."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "Не можа да се провери връзката с доставчика."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "Нещо се обърка при влизането ви. Моля, о
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "Нещо се обърка. Моля, опитайте отново."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "এই প্যাচটি পুনরুদ্ধার করা
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "টু‑ফ্যাক্টর প্রমাণীকরণ সেট আপ করা যায়নি।"
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "প্রোভাইডার সংযোগ যাচাই করা যায়নি।"
|
||||
@@ -5031,6 +5036,10 @@ msgstr "আপনাকে সাইন ইন করানোর সময়
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "কিছু একটা ভুল হয়েছে। অনুগ্রহ করে আবার চেষ্টা করুন।"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "No s'ha pogut restaurar aquest pegat."
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "No s'ha pogut configurar l'autenticació en dos passos."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "No s'ha pogut verificar la connexió del proveïdor."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "Alguna cosa ha anat malament en iniciar la sessió. Torna-ho a provar."
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "Alguna cosa ha anat malament. Torna-ho a provar."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "Tuto záplatu se nepodařilo obnovit."
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "Nepodařilo se nastavit dvoufaktorové ověření."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "Nepodařilo se ověřit připojení poskytovatele."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "Při přihlašování se něco pokazilo. Zkuste to prosím znovu."
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "Něco se pokazilo. Zkuste to prosím znovu."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "Kunne ikke gendanne denne programrettelse."
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "Kunne ikke opsætte to-faktor-godkendelse."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "Kunne ikke bekræfte udbyderforbindelsen."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "Noget gik galt, da du skulle logges ind. Prøv venligst igen."
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "Noget gik galt. Prøv igen."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "Dieser Patch konnte nicht wiederhergestellt werden."
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "Die Zwei-Faktor-Authentifizierung konnte nicht eingerichtet werden."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "Die Providerverbindung konnte nicht verifiziert werden."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "Bei der Anmeldung ist etwas schiefgelaufen. Bitte versuchen Sie es erneu
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "Etwas ist schiefgelaufen. Bitte versuchen Sie es erneut."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "Δεν ήταν δυνατή η επαναφορά αυτής της ε
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "Δεν ήταν δυνατή η ρύθμιση του ελέγχου ταυτότητας δύο σταδίων."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "Δεν ήταν δυνατή η επαλήθευση της σύνδεσης του παρόχου."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "Κάτι πήγε στραβά κατά τη σύνδεσή σας. Δο
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "Κάτι πήγε στραβά. Παρακαλώ δοκιμάστε ξανά."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "Could not restore this patch."
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "Could not set up two-factor authentication."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "Could not verify provider connection."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "Something went wrong while signing you in. Please try again."
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "Something went wrong. Please try again."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1409,6 +1409,11 @@ msgstr "Could not save the cover letter. Please try again."
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "Could not set up two-factor authentication."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr "Could not sort these items; they stayed at the end: {0}."
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "Could not verify provider connection."
|
||||
@@ -5297,6 +5302,10 @@ msgstr "Something went wrong while signing you in. Please try again."
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "Something went wrong. Please try again."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr "Sort by date"
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "No se pudo restaurar este parche."
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "No se pudo configurar la autenticación de doble factor."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "No se pudo verificar la conexión con el proveedor."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "Algo salió mal al iniciar tu sesión. Inténtalo de nuevo."
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "Algo salió mal. Vuelve a intentarlo."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "نتوانستم این پچ را بازیابی کنم."
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "راهاندازی احراز هویت دو مرحلهای ممکن نشد."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "اتصال ارائه دهنده تأیید نشد."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "هنگام ورود شما مشکلی پیش آمد. لطفاً دوبا
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "مشکلی پیش آمد. لطفاً دوباره تلاش کنید."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "Tätä korjaustiedostoa ei voitu palauttaa."
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "Kaksivaiheista todennusta ei voitu ottaa käyttöön."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "Palveluntarjoajan yhteyden vahvistaminen epäonnistui."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "Kirjautumisessa tapahtui virhe. Yritä uudelleen."
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "Jokin meni pieleen. Yritä uudelleen."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "Impossible de restaurer ce correctif."
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "Impossible de configurer l'authentification à deux facteurs."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "Impossible de vérifier la connexion au fournisseur."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "Une erreur s'est produite lors de votre connexion. Veuillez réessayer."
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "Une erreur s'est produite. Veuillez réessayer."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "לא ניתן היה לשחזר את התיקון הזה."
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "לא ניתן היה להגדיר אימות דו־שלבי."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "לא ניתן היה לאמת את חיבור הספק."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "משהו השתבש בזמן ההתחברות שלך. נסה שוב."
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "משהו השתבש. נא לנסות שוב."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "इस पैच को पुनर्स्थापित नही
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "दो कारक प्रमाणीकरण सेट नहीं किया जा सका।"
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "प्रदाता कनेक्शन सत्यापित नहीं हो सका।"
|
||||
@@ -5031,6 +5036,10 @@ msgstr "आपको साइन इन करते समय कुछ गड
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "कुछ गड़बड़ हो गई। कृपया फिर से प्रयास करें।"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "Nem sikerült visszaállítani ezt a javítást."
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "Nem sikerült beállítani a kétlépcsős hitelesítést."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "Nem sikerült ellenőrizni a szolgáltató kapcsolatát."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "Hiba történt a bejelentkezés során. Kérjük, próbálja újra."
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "Valami hiba történt. Kérjük, próbáld újra."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "Patch ini tidak dapat dipulihkan."
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "Tidak dapat menyiapkan autentikasi dua faktor."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "Koneksi penyedia tidak dapat diverifikasi."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "Terjadi kesalahan saat memasukkan Anda. Silakan coba lagi."
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "Terjadi sesuatu yang salah. Silakan coba lagi."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "Impossibile ripristinare questa patch."
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "Impossibile configurare l'autenticazione a due fattori."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "Impossibile verificare la connessione al provider."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "Si è verificato un problema durante l'accesso. Riprova."
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "Qualcosa è andato storto. Riprova."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "このパッチを復元できませんでした。"
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "二要素認証を設定できませんでした。"
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "プロバイダとの接続を確認できませんでした。"
|
||||
@@ -5031,6 +5036,10 @@ msgstr "サインイン中に問題が発生しました。もう一度お試し
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "問題が発生しました。もう一度お試しください。"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "មិនអាចស្ដារបំណះនេះឡើងវិញ
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "មិនអាចដំឡើងការផ្ទៀងផ្ទាត់ពីរជាន់បានទេ។"
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "មិនអាចផ្ទៀងផ្ទាត់ការតភ្ជាប់របស់អ្នកផ្តល់សេវាបានទេ។"
|
||||
@@ -5031,6 +5036,10 @@ msgstr "មានបញ្ហាកើតឡើងពេលចូល។ សូ
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "មានអ្វីមួយខុសប្រក្រតី។ សូមព្យាយាមម្ដងទៀត។"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "ಈ ಪ್ಯಾಚ್ ಅನ್ನು ಪುನಃಸ್ಥಾಪಿಸ
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "ಎರಡು ಅಂಶಗಳ ದೃಢೀಕರಣವನ್ನು ಸಿದ್ಧಪಡಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "ಪೂರೈಕೆದಾರರ ಸಂಪರ್ಕವನ್ನು ಪರಿಶೀಲಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "ನಿಮ್ಮನ್ನು ಸೈನ್ ಇನ್ ಮಾಡುವಾಗ
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "ಏನೋ ತಪ್ಪಾಗಿದೆ. ದಯವಿಟ್ಟು ಮರುಪ್ರಯತ್ನಿಸಿ."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "이 패치를 복원할 수 없습니다."
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "2단계 인증을 설정하지 못했습니다."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "공급자 연결을 확인할 수 없습니다."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "로그인하는 중에 문제가 발생했습니다. 다시 시도해
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "문제가 발생했습니다. 다시 시도해 주세요."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "Nepavyko atkurti šio pataisymo."
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "Nepavyko nustatyti dviejų veiksnių autentifikavimo."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "Nepavyko patvirtinti tiekėjo ryšio."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "Jungiant įvyko klaida. Bandykite dar kartą."
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "Kažkas nepavyko. Bandykite dar kartą."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "Nevarēja atjaunot šo ielāpu."
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "Neizdevās iestatīt divu faktoru autentifikāciju."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "Nevarēja pārbaudīt pakalpojumu sniedzēja savienojumu."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "Piesakoties radās kļūda. Lūdzu, mēģiniet vēlreiz."
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "Kaut kas nogāja greizi. Lūdzu, mēģiniet vēlreiz."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "ഈ പാച്ച് പുനഃസ്ഥാപിക്കാൻ ക
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "ടു-ഫാക്ടർ ഓത്ന്റിക്കേഷൻ സജ്ജമാക്കാനായില്ല."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "ദാതാവിന്റെ കണക്ഷൻ പരിശോധിക്കാൻ കഴിഞ്ഞില്ല."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "നിങ്ങളെ സൈൻ ഇൻ ചെയ്യുമ്പോൾ
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "എന്തോ പിശക് സംഭവിച്ചു. ദയവായി വീണ്ടും ശ്രമിക്കുക."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "हा पॅच पुनर्स्थापित करता आ
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "दुहेरी घटक ओथेंटिकेशन सेट करता आले नाही."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "प्रोव्हायडर कनेक्शनची पडताळणी होऊ शकली नाही."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "तुम्हाला साइन इन करताना का
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "काही तरी चूक झाली. कृपया पुन्हा प्रयत्न करा."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "Tidak dapat memulihkan tampalan ini."
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "Tidak dapat menyediakan pengesahan dua faktor."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "Tidak dapat mengesahkan sambungan pembekal."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "Sesuatu telah berlaku semasa anda log masuk. Sila cuba lagi."
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "Ada sesuatu yang tidak kena. Sila cuba lagi."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "यो प्याच पुनर्स्थापित गर्न
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "दुई-कारक प्रमाणीकरण सेटअप गर्न सकिएन।"
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "प्रदायक जडान प्रमाणित गर्न सकिएन।"
|
||||
@@ -5031,6 +5036,10 @@ msgstr "तपाईंलाई साइन इन गर्दा केह
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "केही समस्या भयो। कृपया पुनः प्रयास गर्नुहोस्।"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "Deze patch kon niet worden hersteld."
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "Tweestapsverificatie kon niet worden ingesteld."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "De verbinding met de provider kon niet worden geverifieerd."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "Er is iets misgegaan tijdens het inloggen. Probeer het opnieuw."
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "Er is iets misgegaan. Probeer het alstublieft opnieuw."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "Kunne ikke gjenopprette denne oppdateringen."
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "Kunne ikke sette opp tofaktorautentisering."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "Kunne ikke bekrefte leverandørtilkoblingen."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "Noe gikk galt under innloggingen. Prøv igjen."
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "Noe gikk galt. Vennligst prøv igjen."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "ଏହି ପ୍ୟାଚ୍ ପୁନଃସ୍ଥାପନ କରିପ
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "ଦ୍ୱି-ଘଟକ ପରିଚୟ ପ୍ରମାଣିକରଣ ସେଟ୍ ଅପ୍ କରାଯାଇପାରିଲା ନାହିଁ।"
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "ପ୍ରଦାତା ସଂଯୋଗ ଯାଞ୍ଚ କରିପାରିଲା ନାହିଁ।"
|
||||
@@ -5031,6 +5036,10 @@ msgstr "ଆପଣଙ୍କୁ ସାଇନ୍ ଇନ୍ କରିବା ସମ
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "କିଛି ଭୁଲ୍ ହୋଇଛି। ଦୟାକରି ପୁନଃ ଚେଷ୍ଟା କରନ୍ତୁ।"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "Nie udało się przywrócić tej poprawki."
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "Nie udało się skonfigurować uwierzytelniania dwuskładnikowego."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "Nie można zweryfikować połączenia z dostawcą."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "Coś poszło nie tak podczas logowania. Spróbuj ponownie."
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "Coś poszło nie tak. Spróbuj ponownie."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "Não foi possível restaurar este patch."
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "Não foi possível configurar a autenticação de dois fatores."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "Não foi possível verificar a conexão com o provedor."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "Algo deu errado ao fazer seu login. Tente novamente."
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "Algo deu errado. Tente novamente."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "Não foi possível restaurar este patch."
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "Não foi possível configurar a autenticação de dois fatores."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "Não foi possível verificar a ligação com o fornecedor."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "Algo correu mal ao iniciar a sua sessão. Tente novamente."
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "Algo correu mal. Tente novamente."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "Nu s-a putut restaura acest patch."
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "Nu s-a putut configura autentificarea cu doi factori."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "Nu s-a putut verifica conexiunea furnizorului."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "A apărut o problemă la conectare. Încearcă din nou."
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "Ceva nu a funcționat. Vă rugăm să încercați din nou."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "Восстановить этот патч не удалось."
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "Не удалось настроить двухфакторную аутентификацию."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "Не удалось проверить подключение к провайдеру."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "При входе что-то пошло не так. Попробуйт
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "Что-то пошло не так. Пожалуйста, попробуйте еще раз."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "Túto záplatu sa nepodarilo obnoviť."
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "Nepodarilo sa nastaviť dvojfaktorové overenie."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "Nepodarilo sa overiť pripojenie poskytovateľa."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "Pri prihlasovaní sa niečo pokazilo. Skúste to prosím znova."
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "Niečo sa pokazilo. Skús to, prosím, znova."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "Tega popravka ni bilo mogoče obnoviti."
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "Dvofaktorske avtentikacije ni bilo mogoče nastaviti."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "Povezave s ponudnikom ni bilo mogoče preveriti."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "Pri prijavi je prišlo do napake. Poskusite znova."
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "Nekaj je šlo narobe. Prosimo, poskusite znova."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "Nuk mundi ta rikthente këtë patch."
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "Vërtetimi me dy faktorë nuk u konfigurua dot."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "Nuk mund të verifikohej lidhja e ofruesit."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "Diçka shkoi keq gjatë hyrjes suaj. Ju lutemi provoni sërish."
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "Diçka shkoi keq. Ju lutemi provoni përsëri."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "Није могуће вратити ову закрпу."
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "Није било могуће подесити двофакторску аутентификацију."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "Није могуће проверити везу са провајдером."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "Дошло је до грешке приликом пријављива
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "Нешто је пошло наопако. Покушајте поново."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "Kunde inte återställa den här patchen."
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "Det gick inte att ställa in tvåfaktorsautentisering."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "Kunde inte verifiera leverantörsanslutningen."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "Något gick fel när du loggades in. Försök igen."
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "Något gick fel. Försök igen."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "இந்தத் திருத்தத்தை மீட்டெ
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "இரண்டு நிலை அங்கீகாரத்தை அமைக்க முடியவில்லை."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "வழங்குநர் இணைப்பைச் சரிபார்க்க முடியவில்லை."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "உங்களை உள்நுழைக்கும்போது
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "ஏதோ தவறு நடந்துள்ளது. தயவுசெய்து மீண்டும் முயற்சிக்கவும்."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "ఈ ప్యాచ్ను పునరుద్ధరించల
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "రెండు దశల ధృవీకరణను సెటప్ చేయలేకపోయాం."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "ప్రొవైడర్ కనెక్షన్ను ధృవీకరించలేకపోయాము."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "మిమ్మల్ని సైన్ ఇన్ చేస్తున
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "ఏదో తప్పు జరిగింది. దయచేసి మళ్లీ ప్రయత్నించండి."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "ไม่สามารถกู้คืนแพทช์นี้ไ
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "ไม่สามารถตั้งค่าการยืนยันตัวตนแบบสองขั้นตอนได้"
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "ไม่สามารถตรวจสอบการเชื่อมต่อของผู้ให้บริการได้"
|
||||
@@ -5031,6 +5036,10 @@ msgstr "เกิดข้อผิดพลาดขณะลงชื่อเ
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "เกิดข้อผิดพลาดบางอย่าง กรุณาลองใหม่อีกครั้ง"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "Bu yama geri yüklenemedi."
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "İki faktörlü kimlik doğrulama kurulamadı."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "Servis sağlayıcı bağlantısı doğrulanamadı."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "Oturumunuz açılırken bir sorun oluştu. Lütfen tekrar deneyin."
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "Bir hata oluştu. Lütfen tekrar deneyin."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "Не вдалося відновити цей патч."
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "Не вдалося налаштувати двофакторну автентифікацію."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "Не вдалося перевірити підключення постачальника."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "Під час входу сталася помилка. Спробуйт
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "Щось пішло не так. Будь ласка, спробуйте ще раз."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "Ushbu yamoqni tiklab bo'lmadi."
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "Ikki bosqichli autentifikatsiyani sozlab bo'lmadi."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "Provayder ulanishini tekshirib bo'lmadi."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "Kirish paytida xatolik yuz berdi. Iltimos, qayta urinib ko‘ring."
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "Nimadir xato ketdi. Iltimos, qayta urinib koʻring."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "Không thể khôi phục bản vá này."
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "Không thể thiết lập xác thực hai yếu tố."
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "Không thể xác minh kết nối với nhà cung cấp."
|
||||
@@ -5031,6 +5036,10 @@ msgstr "Đã xảy ra lỗi khi đăng nhập cho bạn. Vui lòng thử lại."
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "Đã xảy ra lỗi. Vui lòng thử lại."
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "无法恢复此补丁。"
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "无法设置双重身份验证。"
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "无法验证提供商连接。"
|
||||
@@ -5031,6 +5036,10 @@ msgstr "登录时出错。请重试。"
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "出现了一些问题。请重试。"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1338,6 +1338,11 @@ msgstr "無法恢復此補丁。"
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr "無法設定雙因子驗證。"
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr "無法驗證提供者連線。"
|
||||
@@ -5031,6 +5036,10 @@ msgstr "登入時發生錯誤。請再試一次。"
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr "發生錯誤。請再試一次。"
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -1324,6 +1324,11 @@ msgstr ""
|
||||
msgid "Could not set up two-factor authentication."
|
||||
msgstr ""
|
||||
|
||||
#. placeholder {0}: unresolvedLabels.join(", ")
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Could not sort these items; they stayed at the end: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: src/features/settings/integrations/components/ai-section.tsx
|
||||
msgid "Could not verify provider connection."
|
||||
msgstr ""
|
||||
@@ -4998,6 +5003,10 @@ msgstr ""
|
||||
msgid "Something went wrong. Please try again."
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx
|
||||
msgid "Sort by date"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/dashboard/applications/index.tsx
|
||||
#: src/routes/dashboard/resumes/index.tsx
|
||||
msgid "Sort by"
|
||||
|
||||
@@ -5,6 +5,7 @@ import type { Resume } from "./draft";
|
||||
import { act, renderHook } from "@testing-library/react";
|
||||
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import { i18n } from "@lingui/core";
|
||||
import { sortSectionItemsByPeriod } from "@reactive-resume/resume/section-sort";
|
||||
import { defaultResumeData } from "@reactive-resume/schema/resume/default";
|
||||
import {
|
||||
isEditableElementFocused,
|
||||
@@ -112,6 +113,24 @@ function withBasicsName(resume: Resume, name: string): Resume {
|
||||
};
|
||||
}
|
||||
|
||||
function experienceItem(
|
||||
id: string,
|
||||
company: string,
|
||||
period: string,
|
||||
): ResumeData["sections"]["experience"]["items"][number] {
|
||||
return {
|
||||
id,
|
||||
company,
|
||||
position: "Engineer",
|
||||
location: "",
|
||||
period,
|
||||
description: "",
|
||||
hidden: false,
|
||||
website: { url: "", label: "", inlineLink: false },
|
||||
roles: [],
|
||||
};
|
||||
}
|
||||
|
||||
async function flushMicrotasks() {
|
||||
await Promise.resolve();
|
||||
await Promise.resolve();
|
||||
@@ -480,6 +499,69 @@ describe("builder resume undo/redo", () => {
|
||||
expect(store().canRedo).toBe(false);
|
||||
});
|
||||
|
||||
it("restores the exact authored Experience order with one undo after a one-shot sort", () => {
|
||||
const store = useResumeStore.getState;
|
||||
const initial = makeResume("sort-undo");
|
||||
initial.data.sections.experience.items = [
|
||||
experienceItem("unknown", "Mystery Co", "Recently"),
|
||||
experienceItem("older", "Older Co", "2018 - 2020"),
|
||||
experienceItem("current", "Current Co", "2023 - Present"),
|
||||
];
|
||||
const authoredItems = cloneResumeData(initial.data).sections.experience.items;
|
||||
store().initialize(initial);
|
||||
|
||||
store().updateResumeData((draft) => {
|
||||
draft.sections.experience.items = sortSectionItemsByPeriod(
|
||||
draft.sections.experience.items,
|
||||
draft.metadata.page.locale,
|
||||
).items;
|
||||
});
|
||||
|
||||
expect(store().resume?.data.sections.experience.items.map(({ id }) => id)).toEqual(["current", "older", "unknown"]);
|
||||
expect(store().undoStack).toHaveLength(1);
|
||||
|
||||
store().undo();
|
||||
expect(store().resume?.data.sections.experience.items).toEqual(authoredItems);
|
||||
expect(store().canUndo).toBe(false);
|
||||
});
|
||||
|
||||
it("retains the chosen order through autosave/reload and never resorts later field edits", async () => {
|
||||
const store = useResumeStore.getState;
|
||||
const initial = makeResume("sort-persistence");
|
||||
initial.data.sections.experience.items = [
|
||||
experienceItem("older", "Older Co", "2018 - 2020"),
|
||||
experienceItem("current", "Current Co", "2023 - Present"),
|
||||
];
|
||||
let savedResume: Resume | undefined;
|
||||
orpcMocks.updateResume.mockImplementation((input: { id: string; data: ResumeData }) => {
|
||||
savedResume = { ...makeResume(input.id), data: cloneResumeData(input.data) };
|
||||
return Promise.resolve(savedResume);
|
||||
});
|
||||
store().initialize(initial);
|
||||
|
||||
store().updateResumeData((draft) => {
|
||||
draft.sections.experience.items = sortSectionItemsByPeriod(
|
||||
draft.sections.experience.items,
|
||||
draft.metadata.page.locale,
|
||||
).items;
|
||||
});
|
||||
vi.advanceTimersByTime(500);
|
||||
await flushMicrotasks();
|
||||
|
||||
expect(orpcMocks.updateResume).toHaveBeenCalledTimes(1);
|
||||
expect(savedResume?.data.sections.experience.items.map(({ id }) => id)).toEqual(["current", "older"]);
|
||||
if (!savedResume) throw new Error("expected the sorted resume to be saved");
|
||||
|
||||
store().reset();
|
||||
store().initialize(savedResume);
|
||||
store().updateResumeData((draft) => {
|
||||
const currentItem = draft.sections.experience.items.find(({ id }) => id === "current");
|
||||
if (currentItem) currentItem.period = "2010 - 2011";
|
||||
});
|
||||
|
||||
expect(store().resume?.data.sections.experience.items.map(({ id }) => id)).toEqual(["current", "older"]);
|
||||
});
|
||||
|
||||
it("separates edits outside the coalesce window into distinct undo steps", async () => {
|
||||
const store = useResumeStore.getState;
|
||||
store().initialize(makeResume("undo-boundary"));
|
||||
|
||||
@@ -1,28 +1,25 @@
|
||||
// @vitest-environment happy-dom
|
||||
|
||||
import { render, screen } from "@testing-library/react";
|
||||
import type { Resume } from "@/features/resume/builder/draft";
|
||||
import { fireEvent, render, screen } from "@testing-library/react";
|
||||
import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import { i18n } from "@lingui/core";
|
||||
import { I18nProvider } from "@lingui/react";
|
||||
import { SectionDropdownMenu } from "./section-menu";
|
||||
|
||||
const mockUpdateResumeData = vi.fn();
|
||||
const mocks = vi.hoisted(() => ({
|
||||
updateResumeData: vi.fn(),
|
||||
toastAdd: vi.fn(),
|
||||
resume: { value: {} as Resume },
|
||||
}));
|
||||
|
||||
vi.mock("@/features/resume/builder/draft", () => ({
|
||||
useCurrentResume: () => ({
|
||||
data: {
|
||||
sections: {
|
||||
skills: {
|
||||
title: "Skills",
|
||||
columns: 2,
|
||||
hidden: false,
|
||||
layout: "default",
|
||||
items: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
}),
|
||||
useUpdateResumeData: () => mockUpdateResumeData,
|
||||
useCurrentResume: () => mocks.resume.value,
|
||||
useUpdateResumeData: () => mocks.updateResumeData,
|
||||
}));
|
||||
|
||||
vi.mock("@reactive-resume/ui/components/toast", () => ({
|
||||
toast: { add: mocks.toastAdd },
|
||||
}));
|
||||
|
||||
vi.mock("@/hooks/use-confirm", () => ({
|
||||
@@ -44,9 +41,49 @@ beforeAll(() => {
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
mockUpdateResumeData.mockClear();
|
||||
mocks.updateResumeData.mockClear();
|
||||
mocks.toastAdd.mockClear();
|
||||
mocks.resume.value = {
|
||||
isLocked: false,
|
||||
data: {
|
||||
metadata: { page: { locale: "en-US" } },
|
||||
sections: {
|
||||
skills: {
|
||||
title: "Skills",
|
||||
columns: 2,
|
||||
hidden: false,
|
||||
layout: "default",
|
||||
items: [],
|
||||
},
|
||||
experience: {
|
||||
title: "Experience",
|
||||
columns: 1,
|
||||
hidden: false,
|
||||
items: [
|
||||
{ id: "unknown", company: "Mystery Co", period: "Recently" },
|
||||
{ id: "older", company: "Older Co", period: "2018 - 2020" },
|
||||
{ id: "current", company: "Current Co", period: "2023 - Present" },
|
||||
],
|
||||
},
|
||||
education: {
|
||||
title: "Education",
|
||||
columns: 1,
|
||||
hidden: false,
|
||||
items: [
|
||||
{ id: "earlier", school: "Earlier School", period: "2016 - 2020" },
|
||||
{ id: "later", school: "Later School", period: "2020 - 2024" },
|
||||
],
|
||||
},
|
||||
},
|
||||
},
|
||||
} as unknown as Resume;
|
||||
});
|
||||
|
||||
function openSectionOptions() {
|
||||
fireEvent.click(screen.getByRole("button", { name: "Section options" }));
|
||||
return screen.findByRole("menu");
|
||||
}
|
||||
|
||||
describe("SkillsSectionDropdownMenu", () => {
|
||||
it("updates resume data correctly when selecting 'inline' for skills section", async () => {
|
||||
render(
|
||||
@@ -55,16 +92,16 @@ describe("SkillsSectionDropdownMenu", () => {
|
||||
</I18nProvider>,
|
||||
);
|
||||
|
||||
screen.getByRole("button", { name: "Section options" }).click();
|
||||
await openSectionOptions();
|
||||
|
||||
(await screen.findByRole("menuitem", { name: /columns/i })).click();
|
||||
|
||||
(await screen.findByRole("menuitemradio", { name: /inline/i })).click();
|
||||
|
||||
expect(mockUpdateResumeData).toHaveBeenCalledTimes(1);
|
||||
expect(mockUpdateResumeData).toHaveBeenCalledWith(expect.any(Function));
|
||||
expect(mocks.updateResumeData).toHaveBeenCalledTimes(1);
|
||||
expect(mocks.updateResumeData).toHaveBeenCalledWith(expect.any(Function));
|
||||
|
||||
const mutation = mockUpdateResumeData.mock.calls[0][0];
|
||||
const mutation = mocks.updateResumeData.mock.calls[0][0];
|
||||
const mockDraft = {
|
||||
sections: {
|
||||
skills: {
|
||||
@@ -90,16 +127,16 @@ describe("SkillsSectionDropdownMenu", () => {
|
||||
</I18nProvider>,
|
||||
);
|
||||
|
||||
screen.getByRole("button", { name: "Section options" }).click();
|
||||
await openSectionOptions();
|
||||
|
||||
(await screen.findByRole("menuitem", { name: /columns/i })).click();
|
||||
|
||||
(await screen.findByRole("menuitemradio", { name: /3 columns/i })).click();
|
||||
|
||||
expect(mockUpdateResumeData).toHaveBeenCalledTimes(1);
|
||||
expect(mockUpdateResumeData).toHaveBeenCalledWith(expect.any(Function));
|
||||
expect(mocks.updateResumeData).toHaveBeenCalledTimes(1);
|
||||
expect(mocks.updateResumeData).toHaveBeenCalledWith(expect.any(Function));
|
||||
|
||||
const mutation = mockUpdateResumeData.mock.calls[0][0];
|
||||
const mutation = mocks.updateResumeData.mock.calls[0][0];
|
||||
const mockDraft = {
|
||||
sections: {
|
||||
skills: {
|
||||
@@ -118,3 +155,74 @@ describe("SkillsSectionDropdownMenu", () => {
|
||||
expect(mockDraft.sections.skills.columns).toBe(3);
|
||||
});
|
||||
});
|
||||
|
||||
describe("chronological section sorting", () => {
|
||||
it("sorts Experience once through one draft mutation and names only unresolved items", async () => {
|
||||
render(
|
||||
<I18nProvider i18n={i18n}>
|
||||
<SectionDropdownMenu type="experience" />
|
||||
</I18nProvider>,
|
||||
);
|
||||
|
||||
await openSectionOptions();
|
||||
fireEvent.click(await screen.findByRole("menuitem", { name: "Sort by date" }));
|
||||
|
||||
expect(mocks.updateResumeData).toHaveBeenCalledTimes(1);
|
||||
const mutation = mocks.updateResumeData.mock.calls[0]?.[0] as (draft: Resume["data"]) => void;
|
||||
const draft = structuredClone(mocks.resume.value.data);
|
||||
mutation(draft);
|
||||
|
||||
expect(draft.sections.experience.items.map(({ id }) => id)).toEqual(["current", "older", "unknown"]);
|
||||
expect(mocks.toastAdd).toHaveBeenCalledWith({
|
||||
type: "warning",
|
||||
description: "Could not sort these items; they stayed at the end: Mystery Co.",
|
||||
});
|
||||
});
|
||||
|
||||
it("sorts Education once without showing an unresolved notice", async () => {
|
||||
render(
|
||||
<I18nProvider i18n={i18n}>
|
||||
<SectionDropdownMenu type="education" />
|
||||
</I18nProvider>,
|
||||
);
|
||||
|
||||
await openSectionOptions();
|
||||
fireEvent.click(await screen.findByRole("menuitem", { name: "Sort by date" }));
|
||||
|
||||
expect(mocks.updateResumeData).toHaveBeenCalledTimes(1);
|
||||
const mutation = mocks.updateResumeData.mock.calls[0]?.[0] as (draft: Resume["data"]) => void;
|
||||
const draft = structuredClone(mocks.resume.value.data);
|
||||
mutation(draft);
|
||||
|
||||
expect(draft.sections.education.items.map(({ id }) => id)).toEqual(["later", "earlier"]);
|
||||
expect(mocks.toastAdd).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("disables sorting when the resume is locked", async () => {
|
||||
mocks.resume.value = { ...mocks.resume.value, isLocked: true };
|
||||
render(
|
||||
<I18nProvider i18n={i18n}>
|
||||
<SectionDropdownMenu type="experience" />
|
||||
</I18nProvider>,
|
||||
);
|
||||
|
||||
await openSectionOptions();
|
||||
const sortItem = await screen.findByRole("menuitem", { name: "Sort by date" });
|
||||
|
||||
expect(sortItem).toHaveAttribute("aria-disabled", "true");
|
||||
fireEvent.keyDown(sortItem, { key: "Escape" });
|
||||
expect(mocks.updateResumeData).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("does not offer date sorting for other built-in sections", async () => {
|
||||
render(
|
||||
<I18nProvider i18n={i18n}>
|
||||
<SectionDropdownMenu type="skills" />
|
||||
</I18nProvider>,
|
||||
);
|
||||
|
||||
await openSectionOptions();
|
||||
|
||||
expect(screen.queryByRole("menuitem", { name: "Sort by date" })).not.toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -9,7 +9,9 @@ import {
|
||||
ListIcon,
|
||||
PencilSimpleLineIcon,
|
||||
PlusIcon,
|
||||
SortDescendingIcon,
|
||||
} from "@phosphor-icons/react";
|
||||
import { sortSectionItemsByPeriod } from "@reactive-resume/resume/section-sort";
|
||||
import { Button } from "@reactive-resume/ui/components/button";
|
||||
import {
|
||||
DropdownMenu,
|
||||
@@ -24,6 +26,7 @@ import {
|
||||
DropdownMenuSubTrigger,
|
||||
DropdownMenuTrigger,
|
||||
} from "@reactive-resume/ui/components/dropdown-menu";
|
||||
import { toast } from "@reactive-resume/ui/components/toast";
|
||||
import { useDialogStore } from "@/dialogs/store";
|
||||
import { useCurrentResume, useUpdateResumeData } from "@/features/resume/builder/draft";
|
||||
import { useConfirm } from "@/hooks/use-confirm";
|
||||
@@ -49,6 +52,36 @@ export function SectionDropdownMenu({ type }: Props) {
|
||||
openDialog(`resume.sections.${type}.create`, undefined);
|
||||
};
|
||||
|
||||
const onSortByDate = () => {
|
||||
if ((type !== "experience" && type !== "education") || resume.isLocked) return;
|
||||
|
||||
let unresolvedLabels: string[] = [];
|
||||
if (type === "experience") {
|
||||
const currentItems = resume.data.sections.experience.items;
|
||||
const result = sortSectionItemsByPeriod(currentItems, resume.data.metadata.page.locale);
|
||||
const labelById = new Map(currentItems.map((item) => [item.id, item.company.trim() || item.id]));
|
||||
unresolvedLabels = result.unresolvedIds.map((id) => labelById.get(id) ?? id);
|
||||
updateResumeData((draft) => {
|
||||
draft.sections.experience.items = result.items;
|
||||
});
|
||||
} else {
|
||||
const currentItems = resume.data.sections.education.items;
|
||||
const result = sortSectionItemsByPeriod(currentItems, resume.data.metadata.page.locale);
|
||||
const labelById = new Map(currentItems.map((item) => [item.id, item.school.trim() || item.id]));
|
||||
unresolvedLabels = result.unresolvedIds.map((id) => labelById.get(id) ?? id);
|
||||
updateResumeData((draft) => {
|
||||
draft.sections.education.items = result.items;
|
||||
});
|
||||
}
|
||||
|
||||
if (unresolvedLabels.length > 0) {
|
||||
toast.add({
|
||||
type: "warning",
|
||||
description: t`Could not sort these items; they stayed at the end: ${unresolvedLabels.join(", ")}.`,
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
const onToggleVisibility = () => {
|
||||
updateResumeData((draft) => {
|
||||
if (type === "summary") {
|
||||
@@ -137,6 +170,13 @@ export function SectionDropdownMenu({ type }: Props) {
|
||||
<PlusIcon />
|
||||
<Trans>Add a new item</Trans>
|
||||
</DropdownMenuItem>
|
||||
|
||||
{(type === "experience" || type === "education") && (
|
||||
<DropdownMenuItem disabled={resume.isLocked} onClick={onSortByDate}>
|
||||
<SortDescendingIcon />
|
||||
<Trans>Sort by date</Trans>
|
||||
</DropdownMenuItem>
|
||||
)}
|
||||
</DropdownMenuGroup>
|
||||
|
||||
<DropdownMenuSeparator />
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
"./markdown": "./src/markdown.ts",
|
||||
"./patch": "./src/patch.ts",
|
||||
"./section-availability": "./src/section-availability.ts",
|
||||
"./section-sort": "./src/section-sort.ts",
|
||||
"./social-meta": "./src/social-meta.ts",
|
||||
"./stylesheet": "./src/stylesheet/index.ts",
|
||||
"./stylesheet/registry": "./src/stylesheet/registry/index.ts",
|
||||
|
||||
@@ -4,6 +4,25 @@ import { isFutureEndpoint, isReversedPeriod, ONGOING_TOKENS_BY_LANGUAGE, parsePe
|
||||
const NOW = new Date("2024-06-15T00:00:00Z");
|
||||
|
||||
describe("parsePeriod", () => {
|
||||
it.each([
|
||||
["numeric range", "2020 - 2024", "en-US", { start: { year: 2020 }, end: { year: 2024 }, ongoing: false }],
|
||||
[
|
||||
"localized range",
|
||||
"janvier 2020 - mars 2022",
|
||||
"fr-FR",
|
||||
{ start: { year: 2020, month: 1 }, end: { year: 2022, month: 3 }, ongoing: false },
|
||||
],
|
||||
["ongoing range", "January 2024 - Present", "en-US", { start: { year: 2024, month: 1 }, ongoing: true }],
|
||||
["year-only value", "2024", "en-US", { start: { year: 2024 }, ongoing: false }],
|
||||
["reversed range", "2024 - 2020", "en-US", { start: { year: 2024 }, end: { year: 2020 }, ongoing: false }],
|
||||
["blank value", "", "en-US", null],
|
||||
["bare ongoing value", "Present", "en-US", null],
|
||||
["prose value", "Summer of love", "en-US", null],
|
||||
["equal range", "2024 - 2024", "en-US", { start: { year: 2024 }, end: { year: 2024 }, ongoing: false }],
|
||||
] as const)("characterizes %s", (_case, input, locale, expected) => {
|
||||
expect(parsePeriod(input, locale)).toEqual(expected);
|
||||
});
|
||||
|
||||
it.each([
|
||||
["Jan 2020 - Present", { start: { year: 2020, month: 1 }, ongoing: true }],
|
||||
["January 2020 – March 2022", { start: { year: 2020, month: 1 }, end: { year: 2022, month: 3 }, ongoing: false }],
|
||||
|
||||
@@ -0,0 +1,133 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { sortSectionItemsByPeriod } from "./section-sort";
|
||||
|
||||
type Item = {
|
||||
id: string;
|
||||
period: string;
|
||||
title: string;
|
||||
metadata?: { note: string };
|
||||
};
|
||||
|
||||
const item = (id: string, period: string, title = id): Item => ({ id, period, title });
|
||||
const ids = (items: readonly Item[]) => items.map(({ id }) => id);
|
||||
|
||||
describe("sortSectionItemsByPeriod", () => {
|
||||
it("orders ongoing, ended, equal, and unresolved periods by the documented total order", () => {
|
||||
const equalFirst = item("equal-first", "2020 - 2023");
|
||||
const equalSecond = item("equal-second", "2020 - 2023");
|
||||
const input = [
|
||||
item("blank", ""),
|
||||
equalFirst,
|
||||
item("ended-2024", "2020 - 2024"),
|
||||
item("ongoing-2020", "2020 - Present"),
|
||||
item("prose", "A long time ago"),
|
||||
item("ended-2025", "2022 - 2025"),
|
||||
equalSecond,
|
||||
item("ongoing-2024", "January 2024 - Present"),
|
||||
item("reversed", "2025 - 2024"),
|
||||
];
|
||||
|
||||
const result = sortSectionItemsByPeriod(input, "en-US");
|
||||
|
||||
expect(ids(result.items)).toEqual([
|
||||
"ongoing-2024",
|
||||
"ongoing-2020",
|
||||
"ended-2025",
|
||||
"ended-2024",
|
||||
"equal-first",
|
||||
"equal-second",
|
||||
"blank",
|
||||
"prose",
|
||||
"reversed",
|
||||
]);
|
||||
expect(result.unresolvedIds).toEqual(["blank", "prose", "reversed"]);
|
||||
});
|
||||
|
||||
it("uses locale-aware months and ranks year precision below a known month in the same year", () => {
|
||||
const input = [
|
||||
item("year-only-end", "2020 - 2024"),
|
||||
item("localized-march", "janvier 2020 - mars 2024"),
|
||||
item("localized-february", "janvier 2020 - février 2024"),
|
||||
];
|
||||
|
||||
const result = sortSectionItemsByPeriod(input, "fr-FR");
|
||||
|
||||
expect(ids(result.items)).toEqual(["localized-march", "localized-february", "year-only-end"]);
|
||||
expect(result.unresolvedIds).toEqual([]);
|
||||
});
|
||||
|
||||
it("ranks missing end points after known end points, then compares known starts", () => {
|
||||
const input = [item("single-2025", "2025"), item("ended-2020", "2019 - 2020"), item("single-2024", "2024")];
|
||||
|
||||
const result = sortSectionItemsByPeriod(input, "en-US");
|
||||
|
||||
expect(ids(result.items)).toEqual(["ended-2020", "single-2025", "single-2024"]);
|
||||
});
|
||||
|
||||
it("keeps mixed-precision comparisons transitive", () => {
|
||||
const input = [
|
||||
item("december-2023", "2020 - December 2023"),
|
||||
item("may-2024", "2020 - May 2024"),
|
||||
item("year-2024", "2020 - 2024"),
|
||||
];
|
||||
|
||||
expect(ids(sortSectionItemsByPeriod(input, "en-US").items)).toEqual(["may-2024", "year-2024", "december-2023"]);
|
||||
});
|
||||
|
||||
it("leaves bare ongoing tokens, blanks, prose, and reversed periods stable at the end", () => {
|
||||
const input = [
|
||||
item("present", "Present"),
|
||||
item("known", "2020 - 2021"),
|
||||
item("blank", " "),
|
||||
item("prose", "During university"),
|
||||
item("reversed", "March 2024 - February 2024"),
|
||||
];
|
||||
|
||||
const result = sortSectionItemsByPeriod(input, "en-US");
|
||||
|
||||
expect(ids(result.items)).toEqual(["known", "present", "blank", "prose", "reversed"]);
|
||||
expect(result.unresolvedIds).toEqual(["present", "blank", "prose", "reversed"]);
|
||||
});
|
||||
|
||||
it("returns new arrays while preserving every original object and all content", () => {
|
||||
const first = item("first", "2020 - 2021", "Original title");
|
||||
first.metadata = { note: "Keep me" };
|
||||
const second = item("second", "2022 - Present", "Another title");
|
||||
const input = [first, second];
|
||||
const snapshot = structuredClone(input);
|
||||
|
||||
const result = sortSectionItemsByPeriod(input, "en-US");
|
||||
|
||||
expect(result.items).not.toBe(input);
|
||||
expect(result.items).toEqual([second, first]);
|
||||
expect(result.items[0]).toBe(second);
|
||||
expect(result.items[1]).toBe(first);
|
||||
expect([...ids(result.items)].sort()).toEqual([...ids(input)].sort());
|
||||
expect(input).toEqual(snapshot);
|
||||
});
|
||||
|
||||
it("is deterministic across repeated invocation without changing stable ties", () => {
|
||||
const input = [item("equal-a", "2020 - 2024"), item("newest", "2021 - 2025"), item("equal-b", "2020 - 2024")];
|
||||
|
||||
const first = sortSectionItemsByPeriod(input, "en-US");
|
||||
const second = sortSectionItemsByPeriod(first.items, "en-US");
|
||||
|
||||
expect(ids(first.items)).toEqual(["newest", "equal-a", "equal-b"]);
|
||||
expect(ids(second.items)).toEqual(ids(first.items));
|
||||
expect(second.unresolvedIds).toEqual(first.unresolvedIds);
|
||||
});
|
||||
|
||||
it("returns fresh arrays for empty and single-item inputs", () => {
|
||||
const empty: Item[] = [];
|
||||
const single = [item("only", "2024")];
|
||||
|
||||
const emptyResult = sortSectionItemsByPeriod(empty, "en-US");
|
||||
const singleResult = sortSectionItemsByPeriod(single, "en-US");
|
||||
|
||||
expect(emptyResult).toEqual({ items: [], unresolvedIds: [] });
|
||||
expect(emptyResult.items).not.toBe(empty);
|
||||
expect(singleResult).toEqual({ items: single, unresolvedIds: [] });
|
||||
expect(singleResult.items).not.toBe(single);
|
||||
expect(singleResult.items[0]).toBe(single[0]);
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,82 @@
|
||||
import type { PeriodEndpoint } from "./ats/period";
|
||||
import { isReversedPeriod, parsePeriod } from "./ats/period";
|
||||
|
||||
type SectionItemWithPeriod = {
|
||||
id: string;
|
||||
period: string;
|
||||
};
|
||||
|
||||
export type SortSectionItemsByPeriodResult<T> = {
|
||||
items: T[];
|
||||
unresolvedIds: string[];
|
||||
};
|
||||
|
||||
type SortGroup = "ongoing" | "ended" | "unresolved";
|
||||
|
||||
type RankedItem<T> = {
|
||||
item: T;
|
||||
index: number;
|
||||
group: SortGroup;
|
||||
start?: PeriodEndpoint;
|
||||
end?: PeriodEndpoint;
|
||||
};
|
||||
|
||||
function compareEndpointDescending(left: PeriodEndpoint | undefined, right: PeriodEndpoint | undefined): number {
|
||||
if (!left && !right) return 0;
|
||||
if (!left) return 1;
|
||||
if (!right) return -1;
|
||||
if (left.year !== right.year) return right.year - left.year;
|
||||
return (right.month ?? 0) - (left.month ?? 0);
|
||||
}
|
||||
|
||||
function rankItem<T extends SectionItemWithPeriod>(item: T, index: number, locale: string): RankedItem<T> {
|
||||
const period = parsePeriod(item.period, locale);
|
||||
if (!period?.start || (period.end && isReversedPeriod(period.start, period.end))) {
|
||||
return { item, index, group: "unresolved" };
|
||||
}
|
||||
|
||||
return {
|
||||
item,
|
||||
index,
|
||||
group: period.ongoing ? "ongoing" : "ended",
|
||||
start: period.start,
|
||||
...(period.end ? { end: period.end } : {}),
|
||||
};
|
||||
}
|
||||
|
||||
const GROUP_RANK: Readonly<Record<SortGroup, number>> = {
|
||||
ongoing: 0,
|
||||
ended: 1,
|
||||
unresolved: 2,
|
||||
};
|
||||
|
||||
function compareRankedItems<T>(left: RankedItem<T>, right: RankedItem<T>): number {
|
||||
const groupOrder = GROUP_RANK[left.group] - GROUP_RANK[right.group];
|
||||
if (groupOrder !== 0) return groupOrder;
|
||||
|
||||
if (left.group === "ongoing" && right.group === "ongoing") {
|
||||
return compareEndpointDescending(left.start, right.start) || left.index - right.index;
|
||||
}
|
||||
|
||||
if (left.group === "ended" && right.group === "ended") {
|
||||
return (
|
||||
compareEndpointDescending(left.end, right.end) ||
|
||||
compareEndpointDescending(left.start, right.start) ||
|
||||
left.index - right.index
|
||||
);
|
||||
}
|
||||
|
||||
return left.index - right.index;
|
||||
}
|
||||
|
||||
export function sortSectionItemsByPeriod<T extends SectionItemWithPeriod>(
|
||||
items: readonly T[],
|
||||
locale: string,
|
||||
): SortSectionItemsByPeriodResult<T> {
|
||||
const rankedItems = items.map((item, index) => rankItem(item, index, locale));
|
||||
|
||||
return {
|
||||
items: rankedItems.toSorted(compareRankedItems).map(({ item }) => item),
|
||||
unresolvedIds: rankedItems.filter(({ group }) => group === "unresolved").map(({ item }) => item.id),
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,126 @@
|
||||
import { Pool } from "pg";
|
||||
import { createSampleResumeFromDashboard, openSidebarSection } from "../fixtures/resume";
|
||||
import { resumeIdFromPage } from "../fixtures/semantic-css";
|
||||
import { expect, test } from "../fixtures/test";
|
||||
|
||||
type ExperienceItem = {
|
||||
id: string;
|
||||
company: string;
|
||||
position: string;
|
||||
location: string;
|
||||
period: string;
|
||||
description: string;
|
||||
hidden: boolean;
|
||||
website: { url: string; label: string; inlineLink: boolean };
|
||||
roles: [];
|
||||
};
|
||||
|
||||
const experienceItem = (id: string, company: string, period: string): ExperienceItem => ({
|
||||
id,
|
||||
company,
|
||||
position: "Engineer",
|
||||
location: "",
|
||||
period,
|
||||
description: "",
|
||||
hidden: false,
|
||||
website: { url: "", label: "", inlineLink: false },
|
||||
roles: [],
|
||||
});
|
||||
|
||||
function databasePool() {
|
||||
if (!process.env.DATABASE_URL) throw new Error("DATABASE_URL is required for section sorting E2E coverage.");
|
||||
return new Pool({ connectionString: process.env.DATABASE_URL });
|
||||
}
|
||||
|
||||
async function seedExperienceItems(resumeId: string, items: ExperienceItem[]) {
|
||||
const pool = databasePool();
|
||||
try {
|
||||
const result = await pool.query<{ data: { sections: { experience: { items: ExperienceItem[] } } } }>(
|
||||
'select data from "resume" where id = $1',
|
||||
[resumeId],
|
||||
);
|
||||
const data = result.rows[0]?.data;
|
||||
if (!data) throw new Error(`Resume ${resumeId} was not found.`);
|
||||
data.sections.experience.items = items;
|
||||
await pool.query('update "resume" set data = $2, updated_at = now() where id = $1', [resumeId, data]);
|
||||
} finally {
|
||||
await pool.end();
|
||||
}
|
||||
}
|
||||
|
||||
async function readExperienceItems(resumeId: string) {
|
||||
const pool = databasePool();
|
||||
try {
|
||||
const result = await pool.query<{ data: { sections: { experience: { items: ExperienceItem[] } } } }>(
|
||||
'select data from "resume" where id = $1',
|
||||
[resumeId],
|
||||
);
|
||||
const items = result.rows[0]?.data.sections.experience.items;
|
||||
if (!items) throw new Error(`Resume ${resumeId} was not found.`);
|
||||
return items;
|
||||
} finally {
|
||||
await pool.end();
|
||||
}
|
||||
}
|
||||
|
||||
const itemIds = (items: ExperienceItem[]) => items.map(({ id }) => id);
|
||||
|
||||
test("sorts Experience once while preserving undo, persistence, later edits, and locking", async ({
|
||||
authPage: page,
|
||||
}, testInfo) => {
|
||||
test.setTimeout(90_000);
|
||||
await createSampleResumeFromDashboard(page, testInfo);
|
||||
const resumeId = resumeIdFromPage(page);
|
||||
const authoredItems = [
|
||||
experienceItem("unknown-sort", "Mystery Co", "Recently"),
|
||||
experienceItem("older-sort", "Older Co", "2018 - 2020"),
|
||||
experienceItem("current-sort", "Current Co", "2023 - Present"),
|
||||
];
|
||||
await seedExperienceItems(resumeId, authoredItems);
|
||||
await page.reload();
|
||||
await openSidebarSection(page, "Experience");
|
||||
const section = page.locator("#sidebar-experience");
|
||||
const renderedItemIds = () =>
|
||||
section
|
||||
.locator('[id^="resume-item-"]')
|
||||
.evaluateAll((nodes) => nodes.map(({ id }) => id.replace("resume-item-", "")));
|
||||
|
||||
await expect.poll(renderedItemIds).toEqual(["unknown-sort", "older-sort", "current-sort"]);
|
||||
await section.getByRole("button", { name: "Section options" }).click();
|
||||
await page.getByRole("menuitem", { name: "Sort by date" }).click();
|
||||
await expect(page.getByText("Could not sort these items; they stayed at the end: Mystery Co.")).toBeVisible();
|
||||
await expect
|
||||
.poll(async () => itemIds(await readExperienceItems(resumeId)))
|
||||
.toEqual(["current-sort", "older-sort", "unknown-sort"]);
|
||||
await expect.poll(renderedItemIds).toEqual(["current-sort", "older-sort", "unknown-sort"]);
|
||||
|
||||
await page.getByRole("button", { name: "Undo", exact: true }).click();
|
||||
await expect
|
||||
.poll(async () => itemIds(await readExperienceItems(resumeId)))
|
||||
.toEqual(["unknown-sort", "older-sort", "current-sort"]);
|
||||
|
||||
await section.getByRole("button", { name: "Section options" }).click();
|
||||
await page.getByRole("menuitem", { name: "Sort by date" }).click();
|
||||
await expect
|
||||
.poll(async () => itemIds(await readExperienceItems(resumeId)))
|
||||
.toEqual(["current-sort", "older-sort", "unknown-sort"]);
|
||||
await page.reload();
|
||||
await openSidebarSection(page, "Experience");
|
||||
await expect.poll(renderedItemIds).toEqual(["current-sort", "older-sort", "unknown-sort"]);
|
||||
|
||||
await section.getByText("Current Co", { exact: true }).click();
|
||||
const updateDialog = page.getByRole("dialog", { name: "Update an existing experience" });
|
||||
await updateDialog.getByLabel("Period").fill("2010 - 2011");
|
||||
await updateDialog.getByRole("button", { name: "Save Changes" }).click();
|
||||
await expect
|
||||
.poll(async () => {
|
||||
const items = await readExperienceItems(resumeId);
|
||||
return { ids: itemIds(items), currentPeriod: items.find(({ id }) => id === "current-sort")?.period };
|
||||
})
|
||||
.toEqual({ ids: ["current-sort", "older-sort", "unknown-sort"], currentPeriod: "2010 - 2011" });
|
||||
|
||||
await page.getByRole("button", { name: "Resume options" }).click();
|
||||
await page.getByRole("menuitem", { name: "Lock" }).click();
|
||||
await page.getByRole("alertdialog").getByRole("button", { name: "Confirm" }).click();
|
||||
await expect(section.getByRole("button", { name: "Section options" })).toBeDisabled();
|
||||
});
|
||||
Reference in New Issue
Block a user