@ihabdevteam/core 0.106.0 → 0.107.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,7 +8,7 @@ questions?`,contactButton:"Contact Us",items:[{q:"Can I cancel at any time?",a:"
8
8
  {{url}}`},shareLinkCreating:"Creating link\u2026"},colName:"Name",colBirthDate:"DOB",colPhone:"Phone",sendSms:"Send via SMS",copyLink:"Copy Link",copyLinkTooltip:"Copy link (paste in KakaoTalk)",addCard:"Add Word Training Bundle",addGroup:"Add Group",addGroupDesc:"Enter a name for the new group.",cardGroupEmpty:"No cards in this group",cardSearchPlaceholder:"Search by card name",copySuffix:"{{name}} (Copy)",defaultDescCount:"{{count}} word trainings",cardsEmpty:"No word training bundles created yet.",create:"Add Word Training",empty:"No word training created yet.",groupEmpty:"No word training in this group",groupNamePlaceholder:"Group name",noGroup:"No Group",searchPlaceholder:"Search by training name",tab:{cards:"Word Training Bundles",training:"Word Training"},totalPrefix:"",totalSuffix:" word trainings",renameCardAriaLabel:"Rename {{name}}",viewLabel:"View type"},F1={title:"My Word Tables",subtitle:"Manage your saved word tables.",searchPlaceholder:"Search by name",colName:"Table Name",open:"Open",deleteConfirm:"Delete this word table?",addButton:"Add Table",deleted:"Word table deleted.",empty:"No saved word tables.",countSuffix:" tables",sort:{newest:"Newest",oldest:"Oldest",name:"Name",count:"Word count"},addPairButton:"Add Contrast Pair Table",groupNamePlaceholder:"Group name",groupAddTitle:"Add Group",groupAddButton:"Add",groupNameRequired:"Please enter a group name.",groupNameDuplicate:"A group with this name already exists.",groupDeleteMessage:"Word tables in this group will be moved to 'No Group'.",deleteGroupConfirmTitle:"Delete the '{{group}}' group?",storeBadge:"Training Store",addCard:"Add Word Table Card",addGroup:"Add Group",cardsEmpty:"No word table cards created yet.",deleteGroup:"Delete Group",duplicated:"Word table duplicated.",groupEmpty:"No word tables.",menu:{copyLink:"Copy Link",deactivateLink:"Deactivate Share Link",duplicate:"Copy",openBuilder:"Edit",openNewTab:"Open in New Tab",publishStore:"Post to Training Store",unpublishStore:"Remove from Training Store"},sharedBadge:"Shared",newBadge:"Newly created",renameGroup:"Rename Group",tab:{cards:"Word Table Cards",tables:"Word Tables"},publishDefaultDesc:"{{count}} words"},W1={title:"Key Words",empty:"No key words available.",tableTitle:"'{{name}}' Key Word Table",print:"Print",saveToMyTable:"Save to My Tables",saved:"Saved to My Tables.",wordTableName:"{{name}} Key Words"},H1={defaultName:"Word Table",title:"Word Table Builder",createTitlePair:"Compose Contrast Pair Table",subtitle:"Set columns and add words to build a table.",filterTitle:"Table Settings",filter:{composition:"Composition",image:"Image",word:"Word",standardPron:"Standard Pronunciation",colloquialPron:"Colloquial Pronunciation",paperOrientation:"Paper Orientation",landscape:"Landscape",portrait:"Portrait",columns:"Columns",column:"{{count}} col",itemsPerPageWord:"Words per page",itemsPerPagePair:"Pairs per page",itemsPerPageOption:"{{count}}",pageIndicator:"{{current}} / {{total}}",pageNumber:"Page Number",pageNumberLeft:"Left",pageNumberCenter:"Center",pageNumberRight:"Right",border:"Border",cutLine:"Cut Line",show:"Show",hide:"Hide",dotted:"Dotted",corner:"Corner"},addWord:"Add",wordInfo:"Info for {{word}}",emptyItems:"Please add at least one word.",load:"Load",openNewWindow:"Open in New Window",saveButton:"Save",saveAsNewButton:"Save as New",print:"Print",popupBlocked:"Popup was blocked. Please allow popups in your browser settings.",printFileNameSingle:"Word Table",printFileNamePair:"Contrast Pair Table",save:{title:"Save Word Table",nameLabel:"Name",desc:"Enter a name for the word table.",placeholder:"Enter a title for this word table.",descriptionLabel:"Description",descriptionPlaceholder:"Enter a description for this word table.",duplicateName:"This name is already in use.",nameRequired:"Please enter a table name.",autoFillHint:" (Press Tab or Space to autofill)"},loadTable:{title:"Load Saved Word Table",empty:"No saved word tables.",loadButton:"Load",itemCount:"{{count}} words",deleteAriaLabel:"Delete",sort:{newest:"Newest",oldest:"Oldest",name:"Name",count:"Word Count"},view:{grid:"Grid View",list:"List View"}},groupDeleteMessage:"Word tables in this group will be moved to 'No Group'.",groupNamePlaceholder:"Group name",store:{badge:"Training Store"},card:{sub:"Word Table Card",empty:"No word tables in this card."},toast:{loadError:"Failed to load the word table list. Please refresh",renameError:"Failed to rename",saveError:"Failed to save",deleteError:"Failed to delete",shareLinkError:"Failed to create link",shareLinkCopied:"Link copied",shareLinkCreated:"Link created",shareLinkDeactivated:"Share link deactivated.",shareLinkDeactivateError:"Failed to deactivate share link.",customWordNotShareable:"This contains words you added yourself, so it cannot be shared -- others do not have them.",duplicateError:"Failed to duplicate",unpublishError:"Failed to remove from Training Store",unpublished:"Removed from Training Store",saveSuccess:"Word table saved.",shareLinkCreating:"Creating link\u2026"},scoring:{o:"{{word}} correct",triangle:"{{word}} partial",x:"{{word}} incorrect",button:"Score",pickTitle:"Who are you scoring?",pickSubtitle:"Choose the customer who trained with \u201C{{name}}\u201D.",pickSearch:"Search by name or phone",pickEmpty:"No customers registered.",pickNoMatch:"No matching customer.",pickAgain:"Choose another",scoringFor:"Scoring {{name}}",none:"Tap a cell to mark \u25CB \xB7 \u25B3 \xB7 \u2715.",tally:"{{marked}} scored \xB7 \u25CB {{o}} \xB7 \u25B3 {{triangle}} \xB7 \u2715 {{x}} \xB7 {{rate}}%",save:"Save score",saved:"Saved {{count}} marks for {{name}}.",reviewTitle:"Create a review table?",reviewMessage:"Builds a new table from the {{count}} cells {{name}} got wrong or partial. Correct ones are left out.",reviewConfirm:"Create review table",reviewDescription:"Cells marked wrong or partial in \u201C{{name}}\u201D \u2014 {{count}} of them.",reviewCreated:"Created \u201C{{name}}\u201D \u2014 {{count}} cells.",discardTitle:"Discard this scoring?",discardMessage:"You marked {{count}} cells but have not saved. Leaving discards them.",discardConfirm:"Discard and leave"}},V1={editTitle:"Edit '{{name}}'",editBanner:{message:"Saving will update the word table you're editing."},subtitle:"Select filters to search for words.",filterTitle:"Word Search Settings",searchOptionsTitle:"Search Options",filter:{wordInput:"Word Input",wordInputShort:"Input",wordInputInfo:["Finds words containing the full syllables you type. A syllable typed without a final consonant matches any final (\uC218 \u2192 \uC218\xB7\uC220\xB7\uC219\xB7\uC21C\u2026).","Mix syllables and phonemes in one search. [\u3131\uC218 \u2192 any word containing a syllable with initial '\u3131' immediately followed by '\uC218' \u2014 \uAD6D\uC218\xB7\uAC80\uC218\u2026]","Use commas (,) to separate syllable positions. Each position can be a full syllable or a single consonant/vowel; leave it empty for unconstrained. ['\uAC00,\u3134,,\uB2E4' \u2192 any word containing '\uAC00' \xB7 initial '\u3134' \xB7 any \xB7 '\uB2E4' in a row]","Use underscores (_) for initial/medial/final positions ('_' = unconstrained; trailing positions may be omitted). ['\u3131_' \u2192 words containing a syllable with initial '\u3131' / '_\u314F' \u2192 medial '\u314F' / '__\u3131,\uACE0' \u2192 a syllable with final '\u3131' immediately followed by '\uACE0']"],wordPlaceholder:"Enter characters",wordInputError:"Invalid input format. Use only complete characters, consonants/vowels, or the '__\u3131' (onset\xB7nucleus\xB7coda) template.",wordInputUsageLabel:"Usage",viewChar:"Choose Letters",viewPron:"Choose Sound",viewDirect:"Type Letters",inputMode:"Input mode",phonemeCho:"Initial",phonemeJung:"Vowel",phonemeJong:"Final",phonemePosition:"Position",positionAny:"Any",positionHead:"Start",positionMid:"Middle",positionTail:"End",phonemeModeInfo:["Find words by initial, vowel, or final consonant alone \u2014 no typing needed.","Selecting multiple values matches any one of them.","Narrowing position to Start/Middle/End checks only that syllable (first, middle, or last)."],difficulty:"Grade",grade:"Grade {{n}}",syllables:"Syllables",syllable:"{{n}} Syll.",syllable5plus:"5+ Syllables",partOfSpeech:"Part of Speech",pos:{noun:"Noun/Numeral",verb:"Verb/Adjective",modifier:"Adverb/Determiner"},wordType:"Word Type",type:{native:"Native Korean",sino:"Sino-Korean",foreign:"Loanword",mixed:"Hybrid"},exclude:"Exclude",excludeNoImage:"No Image",selectLabel:"Select",onlyHasImage:"Only words with images",onlyHasImageInfo:"Only words with images: keeps only results with a registered word image."},searchButton:"Search",resultUnit:"words",remaining:"{{count}} remaining",resultDisc:"Select {{unit}}. Up to {{max}} items. ({{selected}}/{{max}})",resultTitlePrefix:"",resultTitleSuffix:" {{unit}} found.",emptyResult:"No results found.",emptyMidNeedsThree:"There is no word-medial position in the syllable counts you picked \u2014 it only exists from 3 syllables up. Try 3+ syllables, or switch the position to initial or final.",groupCount:"{{count}}",sort:{aria:"Sort",match:"Best Match",ganada:"A\u2013Z \u2191",ganadaDesc:"A\u2013Z \u2193",syllable:"Syllables \u2191",syllableDesc:"Syllables \u2193",grade:"Grade \u2191",gradeDesc:"Grade \u2193"},pageSize:"Show {{count}}",pageSizeAria:"Page size",loadError:"Failed to load word data. Please refresh.",loadErrorButton:"Failed to load data \u2014 Refresh",checkingImages:"Checking images\u2026",maxSelectReached:"Cannot select more.",printBlockTitle:"Word Table Preview",popup:{title:"Select a word for cell {{n}}"},title:"Create Word Table",imageFilterOn:"Showing only words that have an image \u2014 about 7% of all words have one, and roughly one in four at level 1. Turn that option off in Search options to see more."},G1={title:"Word Management",subtitle:"Review all words in a table, exclude individual words, or add new ones to build your own word pool.",noSelection:"None",gradeSuffix:"grade",includeInSearch:"Include in search",searchPlaceholder:"Search word or pronunciation",add:"Add Word",addTitle:"Add Word",addConfirm:"Add",listTitle:"Word List",empty:"No matching words.",removeAdded:"Delete",addedBadge:"Added",view:{all:"All",excluded:"Excluded",added:"Added"},col:{exclude:"Exclude",word:"Word",pron:"Pronunciation",colloquialPron:"Colloquial Pronunciation",grade:"Grade",pos:"POS",wordType:"Type",meaning:"Meaning"},toast:{duplicate:"This word already exists.",added:"Word added."},viewLabel:"View type"},q1={clearAllSelection:"Clear All Selections",scrollToTable:"Go to Word Table",divLine:"Contrast Line",removePair:"Remove pair",removeWord:"Remove word"},Y1={title:"By Topic",subtitle:"Select a topic to start listening training",noiseTitle:"Sentence Listening in Noise",shortStoryTitle:"Short Story Listening",FOOD:"Food",HLTH:"Health",WETH:"Weather",PRSN:"People",KRCT:"Korean Culture",STRY:"Stories",LOCA:"Locations",SOAR:"Society & Arts",NTSC:"Nature & Science",SPRT:"Sports",sub:{TRKRFD:"Traditional Korean Food",MDKRFD:"Modern Korean Food",WRLDFD:"World Cuisine",MTRFRT:"Ingredients & Fruits",GEFDKL:"Food Facts",HTETHB:"Healthy Eating",DISILL:"Diseases",EXCISE:"Exercise",GEHTKL:"Health Facts",GESSKL:"Seasons",SNWRAN:"Snow & Rain",WTHFCT:"Weather Forecast",GEWTKL:"Weather Facts",JODYPS:"Joseon Dynasty",MDKRPS:"Modern Korea",THKDPS:"Three Kingdoms",WRLART:"World Artists",WRLPSN:"World Figures",KRLANG:"Korean Language",TRPLCT:"Traditional Games",HERITG:"Heritage",EVTFES:"Events & Festivals",GECTKL:"General Knowledge",FRYTAL:"Fairy Tales",AMZING:"Amazing Stories",DAYSTR:"Everyday Stories",KRLDMK:"Korean Landmarks",SELNMK:"Seoul Landmarks",WRDTRB:"World Travel",NAVIGT:"Navigation",KRSOCI:"Korea",ECONEW:"Economy & News",GENART:"Arts",GELFKL:"Life Tips",ANIMAL:"Animals",PLANTS:"Plants",ETHPLT:"Earth",TOLELC:"Tools & Electronics",GESCKL:"Science Facts",INVDSP:"Individual Sports",MARART:"Martial Arts",TEAMSP:"Team Sports",FOOTBL:"Soccer",GESPKL:"Sports Facts"}},U1={title:"Password Change Required",subtitleMustChange:"You signed in with a temporary password issued by an administrator. You must set a new password to continue.",subtitleExpired:"Your password has expired per security policy. You must set a new password to continue.",currentPassword:"Current Password",newPassword:"New Password",confirmPassword:"Confirm New Password",changing:"Changing\u2026",submit:"Change Password",error:{currentRequired:"Please enter your current password.",mismatch:"New passwords do not match.",sameAsCurrent:"Please use a different password from your current one.",reused:"You can't reuse a recently used password.",reusedWithCount:"You can't reuse your last {{count}} passwords.",tooShort:"Password is too short.",currentIncorrect:"Current password is incorrect.",unauthorized:"Please sign in again.",unknown:"Failed to change your password. Please try again in a moment."}},K1={memoLabel:"Feedback message",reportBug:"Report a bug",title:"Send feedback",cropHint:"Drag to select an area \xB7 click to capture the whole screen",captureFull:"Capture all",memoPlaceholder:"Describe the issue",memoPlaceholderOptional:"Briefly describe the issue (optional)",retake:"Retake",addScreenshot:"Add screenshot",send:"Send",sending:"Sending\u2026",sent:"\u2713 Sent!",captureError:"An error occurred while capturing.",sendFailed:"Failed to send",errorPrefix:"Error",menuCapture:"Capture screenshot",menuTextOnly:"Text only"},Z1={maxUses:"Max uses (leave blank for unlimited)",redirect:"Redirect URL (leave blank for app home)",creating:"Creating\u2026",create:"Create link",created:"\u2713 Link created",copied:"Copied!",copy:"Copy",loading:"Loading\u2026",empty:"No links created yet.",uses:"Used {{count}} times",expiresAt:"Expires: {{date}}",createdAt:"Created: {{date}}",confirmDelete:"Delete this link?",deactivate:"Deactivate",delete:"Delete",status:{active:"Active",expired:"Expired",inactive:"Inactive"}},X1={title:"Word suggestions"},J1={scope:{user:"Your pass",org:"Your organization pass"},expired:{title:"{{scope}} has expired",message:"{{plan}} (ended {{date}}) \u2014 purchase a pass to keep using it."},today:{title:"{{scope}} expires today"},tomorrow:{title:"{{scope}} expires tomorrow"},soon:{title:"{{scope}} expires in {{days}} days",message:"{{plan}} ends on {{date}}. Purchase a pass before it expires."},action:"Buy a pass"},Q1={inProgress:"Training with {{name}}",endFailed:"Couldn't end the session. Please try again.",ending:"Ending\u2026",end:"End Training",endConfirm:"End this training session? It will be recorded in the visit history.",endConfirmTitle:"End session"},ef={tab:{login:"Sign In",signup:"Sign Up"},email:"Email",username:"Username",password:"Password",passwordPlaceholder:"Enter password",confirmPassword:"Confirm Password",submitSignup:"Sign Up",processing:"Processing\u2026",signupSuccess:"A confirmation email has been sent. Please check your inbox.",backToLogin:"Back to sign in",resetPassword:{link:"Forgot password?",title:"Reset Password",desc:"Enter the email address you signed up with and we'll send you a password reset link.",button:"Send reset link",success:`A reset link has been sent to your email.
9
9
  Please check your inbox.`,failed:"Failed to send the reset link. Please try again later."},error:{emailRequired:"Please enter your email.",signupDisabled:"Self sign-up is currently disabled. Please join through an invitation.",lockedWithMinutes:"Your account is locked after {{count}} failed sign-in attempts. Try again in {{minutes}} minutes.",lockedContactAdmin:"Your account is locked after {{count}} failed sign-in attempts. Please contact an administrator.",attemptsLeft:"{{message}} ({{count}} attempts left)",passwordRequired:"Please enter your password.",usernameRequired:"Please enter a username.",passwordMinLength:"Password must be at least 6 characters.",passwordMinLengthN:"Password must be at least {{n}} characters.",passwordMismatch:"Passwords do not match.",invalidCredentials:"Incorrect email or password.",emailNotConfirmed:"Email verification is not complete. Please check your inbox.",invalidEmailFormat:"Invalid email format.",termsRequired:"Please agree to the Terms of Use.",privacyRequired:"Please agree to the Privacy Policy.",emailFormat:"This is not a valid email format.",usernameMaxLength:"Username must be at most 12 characters.",serviceUnavailable:"Can't reach the service right now. Please try again shortly, and contact an administrator if it continues.",unknown:"Sign-in failed. Please try again shortly, and contact an administrator if it continues."},agreement:{termsTitle:"Terms of Use",privacyTitle:"Privacy Policy",termsLabel:"I agree to the Terms of Use.",privacyLabel:"I agree to the Privacy Policy.",view:"View",loadError:"Failed to load the document."},resetPage:{title:"Reset Password",sessionChecking:"Checking session\u2026",accessDenied:"This page can only be accessed via the reset link in your email. If the link has expired, please request a new one.",newPassword:"New password",confirmPassword:"Confirm new password",mismatch:"Passwords do not match.",reused:"You cannot reuse your last {{count}} passwords.",submit:"Reset password",submitting:"Resetting\u2026",done:"Your password has been reset. Please go to the homepage and sign in again.",goHome:"Go to homepage"},emailPlaceholder:"Enter your email",passwordNewPlaceholder:"Enter your password",usernamePlaceholder:"Enter your username",orDivider:"or",kakaoStart:"Continue with Kakao"},tf={title:"Kakao login linked",messageWithEmail:"Kakao login was added to {{email}}. You can now sign in either way.",message:"Kakao login was added to your existing account with the same email. You can now sign in either way.",keep:"OK",unlink:"Unlink",unlinkFailed:"Could not unlink."},af={title:"Agreement required",subtitle:"Please agree to the Terms of Use and Privacy Policy to continue using the service.",submit:"Agree and continue",processing:"Processing\u2026",error:"Failed to save your agreement. Please try again later."},of={title:"Address Search",loadError:"Failed to load Daum Postcode script"},rf={addTitle:"Add Training Bundle",editTitle:"Edit Training Bundle",nameLabel:"Training Bundle Name",namePlaceholder:"Enter training bundle name",basketLabel:"Selected Training",selectLabel:"Select Training",customerSelect:"Select Customers",tab:{byTopic:"By Topic",byType:"By Type"},toast:{maxItems:"You can select up to 10 items per training type.",noItemsToAdd:"No items available to add."},descLabel:"Description",descPlaceholder:"Briefly describe this training (optional)",copyLink:"Copy Link",removeLink:"Remove Link",linkCopied:"Link copied.",linkCreated:"Link created.",linkRemoved:"Link removed.",linkCreating:"Creating\u2026",linkError:"Failed to create link.",linkSaveFirst:"Please save the training bundle first.",linkSaveFirstHint:"You can only create a shared link from a saved training bundle.",linkCopySelect:"Copy blocked \u2014 link selected. Press Ctrl/\u2318+C to copy.",nameRequired:"Please enter a training bundle name.",itemRequired:"Please add at least one training item.",randomAdd:"Random Add",shareLinkLabel:"Shared Link",basketEmpty:"No training selected",basketPerTypeMax:"/ max 10 each",clearAll:"Clear All",removeLinkConfirm:{title:"Remove Shared Link",body:"Remove this shared link? It will no longer be accessible.",confirm:"Remove"},groupLabel:"Group",groupPlaceholder:"Group name (optional)",noGroup:"No Group",shareLink:"Create Link"},nf={type:{hearingAid:"Hearing Aid",cochlearImplant:"Cochlear Implant",other:"Other"},direction:{left:"L",right:"R",label:"Side"},wornDate:"Date Worn",deviceType:"Device Type",brand:"Brand",fitType:"Fit Type",productName:"Product Name",productNamePlaceholder:"Enter product name",registerTitle:"Device Registration",validationError:{brandAndProduct:"Please enter brand and product name.",wornYear:"Worn year must be between {{min}} and {{max}}.",brand:"Choose a brand.",productName:"Enter a product name."},addNew:"Add New Device",selectFromList:"Select from List",removeDevice:"Remove",editTitle:"Edit device",editSubmit:"Save device",deleteSubmit:"Delete device"},sf={stat:{totalCustomers:"Total Customers",monthlyTraining:"This Month's Training",monthlyVisits:"This Month's Visits",savedWordTables:"Saved Word Tables",todayVisits:"Today's Visits",todayVisitsEmpty:"No visits scheduled today",subscription:"Subscription Status",subscriptionRemaining:"In Use",subscriptionTotal:"Total",subscriptionHeld:"Held"},chart:{visitDetail:"Visit Details",trainingDetail:"Training Details",weekly:"Weekly",daily:"Daily",periodMonth:"Month",periodWeek:"Week",weeklyPrefix:"Weekly",monthlyPrefix:"Monthly",visit:"Visits",reservation:"Reservations",trainingDone:"Completed",trainingInProgress:"In Progress",weekRange:"{{start}}\u2013{{end}}",week:"W{{n}}"},moreItems:"+ {{count}} more",headerBadge:"Pre-Open 30 days",greeting:"{{name}}",subscriptionStatus:{active:"{{pct}}% Active",expired:"{{pct}}% Expired",unused:"{{pct}}% Unused"}},lf={title:"Word Pairs",editTitle:"Edit '{{name}}'",editBanner:{message:"Saving will update the contrast pair table you're editing."},subtitle:"Select phonemes to search for minimal pairs.",phonemeSelect:{title:"Phoneme Selection",emptySummary:"Select a phoneme.",needsContrast:"Select the contrast phoneme.",vs:"vs"},caution:"Caution",mode:{include:"Phoneme Include",pick:"Phoneme Contrast",contrast:"Specify Contrast",infoTitle:"Contrast Mode",infoInclude:"Include \u2014 finds words containing all selected phonemes, plus their minimal pair.",infoPick:"Contrast \u2014 matches only if the selected phoneme is the actual point of difference in the pair.",infoContrast:"Specify Contrast \u2014 directly choose phonemes for the base word and the contrasting word to find pairs."},count:"{{n}}",input:{char:"Choose Letters",pron:"Choose Sound",infoTitle:"Input mode",infoChar:"Choose Letters \u2014 finds words by the selected phonemes (spelling), then finds their standard-pronunciation contrast pairs.",infoPron:"Choose Sound \u2014 finds standard-pronunciation contrast pairs directly from the selected phonemes."},phonemeN:"Syllable {{n}}",phonemeSingleLabel:"Syllable",phonemeContrastSingleLabel:"Contrast Syllable",ordinals:["First","Second","Third","Fourth"],phonemeOrdinalLabel:"{{ordinal}} Syllable",phonemeContrastOrdinalLabel:"Contrast {{ordinal}} Syllable",composition:"Answer Word Composition",syllableCount:"Syllables",syllableN:"{{n}} syll.",syllableNPlus:"{{n}}+ syll.",onset:"Onset",vowel:"Vowel",coda:"Coda",glide:"Glide",filter:{searchOptionsTitle:"Contrast Settings",searchModeLabel:"Contrast Mode",countLabel:"Input Syllable Count",inputModeLabel:"Input mode",phonemeOrder:"Input Syllable Position",phonemeOrderInfo:["Match: the pair must differ at exactly the same position (syllable).","Any: the differing position doesn't matter."],orderAny:"Any",noCoda:"None",noCodaTip:"Find only words without a final consonant",orderMatch:"Match",difficultyInfo:"Reflects the National Institute of Korean Language's basic vocabulary grade.",selectLabel:"Select",selectInfo:["Only words with images: keeps only results with a registered word image.","Only same phoneme structure: keeps only pairs where both words have the same syllable structure (length, batchim, etc.)."],onlyHasImage:"Only words with images",onlySameStructure:"Only same phoneme structure",scopeSearchWordOnly:"Search word only"},resultUnit:"pairs",group:{onset:"Onset Contrast",vowel:"Vowel Contrast",glide:"Glide Contrast",coda:"Coda Contrast"},toast:{samePhonemesError:"The base phoneme and the contrast phoneme must be different."},searchLabel:{error:"Failed to load data",loading:"Loading\u2026",checking:"Checking images"},confirmMessage:"The word table with {{count}} selected {{unit}} will be lost.",resetOptions:"Reset Options",phonemeContrast:"Contrast Syllable {{n}}",infoNotes:["The preview character is an example of the selected phoneme combination. The actual search covers all words containing the phoneme.","Initial consonant '\u3147' cannot be selected. \u3147 at the start of a word is effectively silent.","If only onset and coda are selected, the vowel is automatically displayed as '\u314F'.","Increasing the phoneme count searches for minimal pairs between each phoneme."],imageFilterOn:"Showing only words that have an image \u2014 a pair needs an image for both words, so far fewer pairs remain. Turn that option off in Search options to see more."},cf={title:"Games",subtitle:"Train your listening with fun games",scoreSaveFailed:"Failed to save your score. Please try again.",endsIn:"Ends in {{days}}d {{hours}}h",bestScore:"Best Score",totalScore:"Total score",rank:"Rank",leaderboard:{title:"Ranking",loading:"Loading the ranking\u2026",empty:"No scores yet. Be the first!",unavailable:"Couldn't load the ranking. Try reopening in a moment.",me:"You",anonymous:"Anonymous",score:"{{score}} pts",chase:"{{points}} more points to reach #{{rank}}.",top:"You're #1! Now defend it."},crossword:{title:"Crossword Puzzle",desc:"Listen to each word and fill the grid with letter tiles.",tip1:"Tap a numbered square to hear the word that goes there (both in turn if it starts two).",tip2:"Tap the letter tiles below to fill the blanks",tip3:"Fill in all cells, then tap 'Check answer' to see your result",scoreTitle:"Scoring",score1:"10 points per correct cell, nothing deducted for wrong ones.",score2:"Speed and difficulty don't raise it.",score3:"Rounds add up, so the more you play the higher you climb.",playHint:"Tap a numbered square to hear the word there. (If a square has two numbers, in the order you tap.)",pickCellFirst:"Pick a square to fill first. Squares with a number play the word for that spot. (Two numbers: in the order you tap them.)",levelIntro:"Pick a difficulty and get a fresh puzzle every time.",wordsLoading:"Loading words\u2026",alertNoPuzzle:"Could not build a puzzle. Please try again.",level:{basic:"Basic",intermediate:"Intermediate",advanced:"Advanced"},levelDesc:{basic:"Start with easy words",intermediate:"A bit more challenging",advanced:"The hardest words"},alertFillAll:"Please fill in all cells.",undo:"\u21A9 Undo",checkAnswer:"\u2713 Check",cellEmpty:"empty",cellCorrect:"correct",cellWrong:"wrong",hintLabel:"{{label}} {{number}}",horizontal:"Across",vertical:"Down"},reflex:{title:"Reflex Game",desc:"Listen and quickly click the correct word.",roundCount:"{{total}} rounds \xB7 {{timeLimit}}s each",tip1:"Click the correct answer from 4 choices when you hear the word",tip2:"Click the question to hear the word again",tip3:"Answer within {{timeLimit}} seconds",accuracy:"{{pct}}% accuracy",avgTime:"avg {{time}}s",timeout:"(timeout)",correctMsg:"\u2713 Correct! {{time}}s",wrongMsg:"\u2717 Answer: {{word}}"},typing:{title:"Word Typing",desc:"Listen and type the word within the time limit.",roundCount:"{{rounds}} rounds \xB7 {{timeLimit}}s each",placeholder:"Type the word you heard",tip1:"Listen and type the word within the time limit",tip2:"Tap 'Listen again' to hear the word again",tip3:"Press Enter or the Confirm button to submit",accuracy:"{{pct}}% accuracy",notEntered:"(not entered)",correctMsg:"\u2713 Correct!",wrongMsg:"\u2717 Answer: {{word}}"},sentenceTyping:{title:"Sentence Typing",desc:"Listen and type the sentence within the time limit.",roundCount:"{{rounds}} rounds \xB7 {{timeLimit}}s each",placeholder:"Type the sentence you heard",tip1:"Listen and type the sentence within the time limit",tip2:"Tap 'Listen again' to hear the sentence again",tip3:"Press Enter or the Confirm button to submit"},wordDefense:{inputLabel:"Type the word you heard",title:"Word Defense",desc:"Type incoming words to defeat them.",introTitle:"Space Defense",introDesc:"A word plays whenever an alien appears.",introDesc2:"Type the word you heard to defeat the alien!",tip1:"Click alien / Spacebar \u2192 hear the word again",tip2:"Aliens come from all directions",tip3:"The invasion speed increases over time",gameoverTitle:"Base Destroyed!",killCount:"Aliens defeated: {{count}}",msgPerfect:"Perfect space defense!",msgGood:"Well fought!",msgTryAgain:"Keep practicing!",dailyBest:"Today's Best",replayBtn:"Listen Again",energyBtn:"Use Energy",energyTitle:"Activate energy (Tab) \u2014 remove all enemies",clickToPlay:"Click to play immediately",me:"Me"},dictation:{title:"Dictation",desc:"Practice writing down exactly what you hear.",comingSoon:"Coming soon: audio playback, input field, answer comparison"},result:{heading:"Level {{number}} Answer",allCorrect:"Clap clap clap \u2014 All correct!",scoreEarned:"You scored {{score}}",scoreSummary:"{{correct}} of {{total}} cells correct",retry:"Try Again",next:"Next Quiz"},common:{howToPlay:"How to Play",start:"Start",retry:"Play Again",confirm:"Confirm",listenAgain:"Listen Again",result:"Result",score:"Score {{score}}",timerSec:"{{sec}}s",progressFilled:"Progress \u2014 {{filled}} of {{total}} cells filled",roundCorrect:"Round {{n}} correct",roundWrong:"Round {{n}} incorrect",accuracy:"{{pct}}% accuracy",rankChecking:"Checking rank\u2026",rankValue:"Rank #{{rank}}",bestScore:"Best {{score}} pts",newRecord:"New record",dialogIntro:"{{game}} \u2014 how to play",dialogResult:"{{game}} \u2014 results",dialogPlay:"{{game}} \u2014 in progress"},soundMatch:{title:"Sound Match",desc:"Quickly match words or sentences that share the same sound.",comingSoon:"Coming soon: play button, timer, score tracking"},orderSequence:{title:"Sentence Ordering",desc:"Arrange scattered sentence fragments in the correct order.",comingSoon:"Coming soon: sentence sets, ordering interface"},speedListen:{title:"Speed Listen",desc:"A challenge game to count the number of words in a sentence within a time limit.",comingSoon:"Coming soon: time limit, scoreboard"},noiseChallenge:{title:"Noise Challenge",desc:"Practice distinguishing sentences amid background noise.",comingSoon:"Coming soon: various noise levels, score tracking"},fastListen:{title:"Fast Listen",desc:"Listen to short sentences at speed and select the key word.",comingSoon:"Coming soon: speed by difficulty, timer"},shadowing:{title:"Shadowing",desc:"Practice pronunciation and intonation by repeating sentences aloud.",comingSoon:"Coming soon: playback, recording, comparison feedback"},phonemeHunt:{title:"Phoneme Hunt",desc:"Find words that contain a specific phoneme (sound).",comingSoon:"Coming soon: phoneme filter, hint feature"}},df={lead:`IHAB builds trust
10
10
  through sound
11
- and aids recovery.`,site:{title:"Site",malgwi:"Malgwi",soundDirection:"Sound Direction System",vrSoundDirection:"VR Sound Direction System",hearingTest:"Hearing Test Pro"},sns:{title:"SNS",naverBlog:"Naver Blog",kakao:"KAKAO Talk Open Chat"},policy:{title:"Policy",terms:"Terms of Service",privacy:"Privacy Policy"},ceo:"CEO",address:"Address",support:"Support",ceoName:"Ji-hye Han",addressValue:"302, 3F, Haechan Bldg, 32 Siocheong-gil, Chuncheon, Gangwon, Korea"},uf={nav:{programs:"Programs",manager:"Manager",themes:"Training Topics",plans:"Pricing",login:"Log in",menuOpen:"Open menu",menuClose:"Close menu"},hero:{eyebrow:"Auditory Training by Hearing Professionals",title:"Practice <em>hearing speech</em><br/>with programs made by<br/>hearing professionals.",sub:"IHAB \uB9D0\uADC0 is an auditory training program designed to support everyday communication for hearing aid wearers, with a variety of listening scenarios and engaging content.",ctaPrimary:"Start for free"},marquee:["4,460 listening contents","Audiology expert advisory","Everyday recovery for hearing aid users","Daily updates","9 topic categories","Noise environment simulation"],counter:{prefix:"A total of",unit:"",unitSuffix:"",suffix:"vast training contents.",trainingCardSuffix:" sent.",cap:"With 4,000+ listening contents updated daily, no two listening experiences are ever repeated.",chips:[{num:"1,284",label:"Sentence listening in noise"},{num:"1,612",label:"Short story listening"},{num:"986",label:"Long story listening"},{num:"578",label:"Sentence ordering"}]},features:{title:"All the <em>auditory training</em> you need, <em>in one place</em>",sub:"From today's listening to noise training, word discrimination, and games\u2014<br/>experience everything you need for auditory rehabilitation with \uB9D0\uADC0.",items:[{title:"Today's Listening",desc:"Fresh daily listening training to support consistent auditory rehabilitation."},{title:"Topic Training",desc:"Improve real-life listening ability with topics like daily life, news, and weather."},{title:"Word Training",desc:"Focused training to distinguish phonemes by comparing onset, vowel, and coda differences."},{title:"Listening in Noise",desc:"Build adaptability to clearly distinguish speech in various noise environments."},{title:"Games",desc:"Keep up with auditory training without getting bored through fun game formats."},{title:"Training Log",desc:"Track your auditory rehabilitation progress at a glance with history and statistics."},{title:"Expert Management",desc:"Audiologists and hearing aid centers can manage patient training settings and visit history together."}]},programs:{title:"Auditory training program designed for<br/><em>diverse listening</em> situations and <em>engagement</em>",sub:"Consistent auditory rehabilitation improves auditory attention and cognitive ability.",steps:[{n:"01",variant:"start",title:"Listen",desc:"Training to hear sentences in real everyday noise environments"},{n:"02",variant:"feedback",title:"Remember",desc:"Review the sentence and check which parts you heard clearly"},{n:"03",variant:"done",title:"Confirm",desc:"Save accuracy and trends per session to inform the next training"}]},themes:{title:"Auditory training with <em>topics</em><br/>you're <em>interested</em> in",sub:"Organized by topics you encounter in everyday life so you can practice listening naturally.",sentenceSuffix:" sentences",items:{weather:"Weather",food:"Food",people:"People",koreanCulture:"Korean Culture",stories:"Stories",locations:"Locations",societyArts:"Society & Arts",natureScience:"Nature & Science",sports:"Sports",health:"Health"}},manager:{title:"Manager features for<br/><em>auditory training professionals</em>",sub:"We provide a manager page service that lets you manage customers and set up personalized auditory training.",footText:"Save your preferred training directly to set up your own custom preset.",footBtn:"Apply for \uB9D0\uADC0 Manager"},pricing:{title:"Enjoy all \uB9D0\uADC0 content<br/>without limits"},cta:{eyebrow:"Start right now",title:"10 minutes a day \u2014 regain<br/>confidence in daily communication.",sub:"Log in with your IHAB account to start training immediately<br/>with the first-visit customer preset.",btn:"Log in with IHAB and start \uB9D0\uADC0"},trainingPhone:{title:"Sentence Listening in Noise",topic:"Gardening",prev:"Prev",next:"Next",speed:"Speed 3",noiseType:"Crowd noise",settings:"Settings",start:{caption:"Press the play (\u25B6) button below and listen carefully. After listening, check the sentence."},feedback:{caption:"Plant the well-grown seedlings in the garden bed and cover them carefully with plastic film."},done:{heardWell:"Heard clearly",listenAgain:"Listen again"}},stickyCta:"Log in and start \uB9D0\uADC0",stickyTaglinePrefix:"'s\xA0",stickyTaglineHighlight:"auditory training",stickyTaglineSuffix:" \u2014 ready to start?",forceLogout:{duplicateSession:"You were signed out because this account signed in on another device.",sessionExpired:"Your session expired, so you were signed out."}},pf={yearField:"Year",monthField:"Month",dayField:"Day",yearLabel:"{{y}}",monthLabel:"{{m}}",hourLabel:"{{h}}:00",daySuffix:"",minuteSuffix:"",dayLabel:"{{n}}",timeHM:"{{hh}}:{{mm}}",timeH:"{{hh}}:{{mm}}"},hf={discrimination:{label:"Discrimination Training",disc:"Training to distinguish whether two sounds are the same or different.",types:{SAME_SOUND_PICK:{label:"Listen & Pick Same Sound",sub:"Pick the word card that matches the sound you heard.",setupSub:"Choose a target word and distractors to create a same-sound picking question.",step1:"Select the target word.",step2:"Select other words to present alongside it."},SAME_OR_DIFF:{label:"Same or Different?",sub:"Decide whether the two sounds are the same or different.",setupSub:"Choose two words to compare and create a same-or-different question.",step1:"Listen to the two sounds.",step2:"Are they the same or different?",choiceSame:"Same",choiceDiff:"Different"},HEAR_AND_PICK_SAME:{label:"Hear & Match the Word",sub:"Pick the word card that matches what you heard.",setupSub:"Choose a target word and distractors to create a word-matching question.",step1:"Listen to the word.",step2:"Select the matching word card."},HEAR_AND_PICK_INCLUDED:{label:"Hear & Pick Word with Syllable",sub:"Pick the word card that contains the syllable you heard.",setupSub:"Create a question using a target with the syllable and distractors without it.",step1:"Listen to the syllable.",step2:"Select the word that contains this syllable."},STARTS_WITH_SAME_SOUND:{label:"Hear & Pick Same Starting Sound",sub:"Pick the word that starts with the same sound as the one you heard.",setupSub:"Create a question using words that start with the same sound and distractors that don't.",step1:"Listen to the word.",step2:"Select the word starting with the same sound."}}},synthesis:{label:"Synthesis Training",disc:"Training to combine two or more syllables or phonemes into a word.",types:{MERGE_2_SYLLABLES:{label:"Combine 2 Syllables",sub:"What word do you get when you combine these 2 syllables?",setupSub:"Choose a target word and it will be split into 2 syllables for the question.",step1:"Listen to the 2 syllables.",step2:"What word do they make?"},MERGE_3_SYLLABLES:{label:"Combine 3 Syllables",sub:"What word do you get when you combine these 3 syllables?",setupSub:"Choose a target word and it will be split into 3 syllables for the question.",step1:"Listen to the 3 syllables.",step2:"What word do they make?"},MERGE_2_PHONEMES:{label:"Combine 2 Phonemes",sub:"What sound do you get when you combine these 2 phonemes?",setupSub:"Choose a target sound and create a 2-phoneme combination question.",step1:"Listen to the 2 phonemes.",step2:"What sound do they make?"},MERGE_3_PHONEMES:{label:"Combine 3 Phonemes",sub:"What sound do you get when you combine these 3 phonemes?",setupSub:"Choose a target sound and create a 3-phoneme combination question.",step1:"Listen to the 3 phonemes.",step2:"What sound do they make?"}}},deletion:{label:"Deletion Training",disc:"Training to identify the remaining sound after removing a syllable or phoneme.",types:{DROP_1_FROM_2SYLL:{label:"Drop 1 Syllable from 2-Syllable Word",sub:"What sound is left when you remove one syllable from a 2-syllable word?",setupSub:"Choose a 2-syllable target word and create a syllable-deletion question.",step1:"Listen to the word.",step2:"What sound remains when one syllable is removed?"},DROP_1_FROM_3SYLL:{label:"Drop 1 Syllable from 3-Syllable Word",sub:"What sound is left when you remove one syllable from a 3-syllable word?",setupSub:"Choose a 3-syllable target word and create a syllable-deletion question.",step1:"Listen to the word.",step2:"What sound remains when one syllable is removed?"},DROP_PART_FROM_COMPOUND:{label:"Drop Part of Compound Word",sub:"What word is left when you remove part of a compound word?",setupSub:"Choose a compound word and create a partial-deletion question.",step1:"Listen to the compound word.",step2:"What word remains when part is removed?"},DROP_FINAL_CONSONANT_FROM_1SYLL:{label:"Drop Final Consonant",sub:"What sound is left when you remove the final consonant?",setupSub:"Choose a 1-syllable word with a final consonant and create a deletion question.",step1:"Listen to the word.",step2:"What sound remains when the coda is removed?"},REMOVE_CONSONANT_AND_IDENTIFY_PHONEME:{label:"Drop Consonant from 1-Syllable Word",sub:"What sound remains after removing the consonant?",setupSub:"Choose a 1-syllable word and create a consonant-removal question.",step1:"Listen to the word.",step2:"What sound remains when the consonant is removed?"}}},substitution:{label:"Substitution Training",disc:"Training to create new sounds by substituting syllables or phonemes.",types:{CHANGE_1_SYLL_IN_2SYLL:{label:"Change 1 Syllable in 2-Syllable Word",sub:"Change one syllable of a 2-syllable word to make a new word.",setupSub:"Choose a 2-syllable target word and create a syllable-substitution question.",step1:"Listen to the word.",step2:"Change one syllable to make a new word."},CHANGE_1_SYLL_IN_3SYLL:{label:"Change 1 Syllable in 3-Syllable Word",sub:"Change one syllable of a 3-syllable word to make a new word.",setupSub:"Choose a 3-syllable target word and create a syllable-substitution question.",step1:"Listen to the word.",step2:"Change one syllable to make a new word."},CHANGE_1_PHONEME_IN_1SYLL:{label:"Change 1 Phoneme in 1-Syllable Word",sub:"Change one phoneme of a 1-syllable word to make a new sound.",setupSub:"Choose a 1-syllable target word and create a phoneme-substitution question.",step1:"Listen to the word.",step2:"Change one phoneme to make a new sound."},CHANGE_1_PHONEME_IN_2SYLL:{label:"Change 1 Phoneme in 2-Syllable Word",sub:"Change one phoneme of a 2-syllable word to make a new word.",setupSub:"Choose a 2-syllable target word and create a phoneme-substitution question.",step1:"Listen to the word.",step2:"Change one phoneme to make a new word."}}},attention:{label:"Auditory Attention Training",disc:"Training attention and short-term memory by listening to and recalling sequences of sounds.",types:{LISTEN_AND_REMEMBER_ORDER:{label:"Listen & Recall in Order",sub:"Select the three word cards in the order you heard them.",setupSub:"Choose three words to present and create a recall-in-order question.",step1:"Listen to the three words.",step2:"Select them in the order you heard them."}}}},mf={subtitle:"Select a training type",resultUnit:"word set",nameLabel:"Name",namePlaceholder:"Enter training name",options:"Training Options",difficulty:"Difficulty",exclude:"Exclude",chosung:"Initial Consonant",save:"Save",preview:"Preview",excludeOptions:{none:"None",noImage:"No Image"},toast:{nameRequired:"Please enter a set name.",noWords:"No words selected.",noProblem:"Please complete at least one question.",loginRequired:"Login required.",saveFailed:"Failed to save.",saveSuccess:'"{{name}}" set saved ({{count}} questions).',saveSuccessWithIncomplete:'"{{name}}" set saved ({{count}} questions, {{incomplete}} incomplete excluded).',bundleApplied:"Applied to the current question."},suggest:{noCoda:"No batchim",syllable:"{{n}} syllable(s)"}},bf={namePlaceholder:"Enter a training name.",trainingTitle:"'{{name}}' Word Training",questionInput:"Enter a word",answer:"Answer",distractor:"Distractor",groupStep:"Select the word set for the problem.",pickWordStep:"Choose the word to use in the question.",groupStepSub:"The correct answer and distractors are chosen at random from the selected set.",sameOrDiffStepSub:"Chosen at random from the selected word set.",problemNav:"Q {{current}} / {{count}}",problemNum:"Q {{n}}",clearQuestion:"Deselect",removeQuestion:"Remove Question",addQuestion:"Add Question",noWords:"No words match the selected filters.",validOk:"Valid word.",validNoImage:"No image for this word.",validNeed1SyllCoda:"Only 1-syllable words with a final consonant are allowed.",validNeed1SyllNoCoda:"Only 1-syllable words without a final consonant are allowed (excluding words starting with \u3147).",validNeed2Syll:"Only 2-syllable words are allowed.",validNeed3Syll:"Only 3-syllable words are allowed.",manualOnlyHint:"This type doesn't support automatic suggestions yet. Please enter the question word manually."},gf={unexpectedTitle:"Something went wrong",unexpectedMessage:"An unexpected error occurred. Please try again.",retry:"Try Again"},ff={loadError:"Word Data Load Failed",loadErrorMessage:"Failed to load word data. Please check your network and try again.",updateAvailable:"Word Data v{{version}}",updateMessage:"New word data is available.",phaseWordDownload:"Download Word Data",phaseImageCheck:"Check Images",phasePairAnalysis:"Analyze Word Pairs",downloadingCount:"Downloading {{n}} words",checkingPage:"Checking page {{page}} list",imageCount:"{{done}} / {{total}} items",update:{title:"Word Data Update"}},vf={title:"Apply for Malgwi Manager",submitting:"Submitting\u2026",submit:"Apply",promo:{title:"3-Day Free Trial for Malgwi Manager",desc:"Register now and try Malgwi Manager free for 3 days!",action:"View Info Page"},applicantEmail:"Applicant Email",companyId:{label:"Company ID",placeholder:"e.g. ACME01 (uppercase letters & numbers)",helper:"Company ID cannot be changed after creation. Only uppercase letters, numbers, _, - are allowed.",errors:{required:"Please enter a company ID",startWithLetter:"Company ID must start with an uppercase letter.",tooLong:"Company ID must be 12 characters or fewer."}},companyName:{label:"Company / Username",placeholder:"Enter company name or username",errors:{required:"Please enter a company name",tooLong:"Company / Username must be 12 characters or fewer."}},companyType:{label:"Company Type",placeholder:"Select company type",errors:{required:"Please select a company type"}},phone:{label:"Phone",errors:{required:"Please enter a phone number",format:"Please enter a valid phone number"}}},yf={clearAriaLabel:"Clear input"},xf={ariaLabel:"Select tab"},Cf={ariaLabel:"Tabs"},wf={dragPrompt:"Drag and drop files here",browseButton:"Choose Files",removeAriaLabel:"Remove {{name}}"},_f={ariaLabel:"User avatar"},kf={title:"Homework",subtitle:"Check and do the homework your manager sent you.",completed:"Done",inProgress:"In progress",fromManager:"Manager",received:"received",recordExpired:"The homework has expired, so the result was not recorded. Please contact your manager.",segment:{all:"All",new:"New",inprogress:"In Progress",done:"Done"},pageSize:{10:"Show 10",20:"Show 20",50:"Show 50"},searchPlaceholder:"Search homework name",sort:{newest:"Newest",oldest:"Oldest",title:"Title"},relativeDay:{today:"Today",yesterday:"Yesterday",daysAgo:"{{n}}d ago"},reason:{notLoggedIn:"Login required."},list:{title:"Received Homework",empty:"No homework received."},status:{expired:"Expired",done:"Done {{count}}\xD7 \xB7 {{date}}",notDone:"Not done"}},Sf={title:"Training Status",sub:"View your hearing training records",weekly:{title:"Weekly Training",daily:"Daily Listening",crossword:"Crossword",trainingTime:"Training Time",timeAvg:"Avg time",accuracy:"Accuracy",unit:" times"},sentence:{title:"Sentence Training"},word:{title:"Word Training"},homework:{title:"Homework Progress",totalRate:"Overall rate",count:"Total",done:"Done",remaining:"Remaining",unit:""},today:{title:"Today's Listening",progress:"Progress",accuracy:"Accuracy",progressAvg:"Avg progress",unitPct:"%",tooltipTotal:"Total",tooltipDone:"Done"},filter:{countSuffix:" sessions"},time:{title:"Training Time",countLabel:"{{n}} sessions",empty:"No training records",sec:"{{n}}s",min:"{{n}}m",hourMin:"{{h}}h {{m}}m",hour:"{{h}}h"},daily:{title:"Today's Listening Record",empty:"No completed sessions"},crossword:{title:"Crossword Quiz",empty:"No completed levels"},visit:{title:"Linked Visit Records"},detail:"Details",detailEmpty:"No training records for this period.",detailError:"Could not load training records. Please try again shortly.",col:{date:"Date",type:"Type",score:"Score",time:"Time"},trainingType:{LISTEN_IN_NOISE:"Sentence in Noise",SHORT_STORY:"Short Story",LONG_STORY:"Long Story",ORDERING_SENTENCE:"Sentence Ordering"},accuracy:{overall:"Overall accuracy",itemUnit:" items",skipped:"{{n}} had no accuracy record and were left out of this count."},insight:{title:"Training status",sub:"Accuracy of the four sentence-training types, compared with the previous period",strong:"Doing well",weak:"Struggling",improving:"Improving",declining:"Slipping",stale:"Not lately",vsBefore:"vs. previous {{delta}}",thin:"Not enough sessions to compare yet ({{n}})",colTrend:"Change",reasonWeak:"Accuracy is low",reasonDeclining:"Getting worse lately",reasonStale:"Not done lately",items:"{{n}} items",noRuns:"No sessions in this period"},noise:{title:"Hearing by noise condition",heard:"Heard",basis:"All in-person sessions \xB7 {{n}} items",condition:"Noise {{noise}}% \xB7 Playback {{volume}}%",limit:"Heard up to: noise {{noise}}% \xB7 playback {{volume}}%",noLimit:"No condition heard above {{pct}}% yet",empty:"No records with noise settings yet"},analysis:{result:"Result",reason:"Why",sound:"Misheard the sound",meaning:"Missed the content",soundTag:"Sound",meaningTag:"Content",pairs:"Confused options",shortSub:"Wrong picks tell why",longSub:"Memory and understanding, separately",orderingSub:"How many sentences, and which positions slip",recall:"Keyword recall",understand:"Understanding",byOrder:"By question order",orderNo:"No. {{n}}",limitSize:"Orders up to {{n}} sentences",noLimitSize:"No set size ordered above {{pct}}% yet",bySize:"All correct by set size",size:"{{n}} sentences",runs:"{{n}} runs",byPosition:"By position",neighbor:"Swapped with a neighbor",far:"Misplaced far",empty:"No in-person session records yet",position:{first:"First",middle:"Middle",last:"Last"},verdict:{noMiss:"No wrong answers",sound:"Mostly misheard sounds \u2014 pair it with word discrimination training",meaning:"Mostly missed content \u2014 pause the story and recap",recall:"Recalls few keywords \u2014 widen memory span with short stories first",drop:"Drops on later questions \u2014 holding on to what was heard is the task",neighbor:"Neighboring sentences get swapped \u2014 point out how they connect",far:"Sentences land far off \u2014 reduce the set size and build up again",position:"Often misses the {{position}} position"}}},Af={title:"Training Store",subtitle:"Browse trainings shared by other managers and add them to your list.",searchPlaceholder:"Search by training name or publisher",category:{word:"Word Tables",wordTraining:"Word Training",sentence:"Sentence Training"},sort:{newest:"Newest",likes:"Most liked",downloads:"Most downloaded"},wordKind:{pair:"Pairs",single:"Words",emptyHintToSingle:"No pair tables here, but the 'Words' tab has some.",emptyHintToPair:"No word tables here, but the 'Pairs' tab has some."},pageSize:"{{n}} per page",countPrefix:"Total ",countSuffix:" trainings",notice:"Log in with a manager account to add trainings to your list.",empty:"No trainings have been published yet.",emptyHint:"You can publish your own trainings from the Training Settings page.",like:"Like",unlike:"Unlike",loginRequired:"Login required",import:"Add to my trainings",importButton:"Import",publisher:"Publisher",importFail:"Import failed: {{error}}",importSuccess:"Added '{{title}}' to your training list.",dupTitle:"Same content already exists",dupMessageOne:"Same content as <m>{{title}}</m>. Import anyway?",dupMessageMany:"Same content as <m>{{title}}</m> and <m>{{n}}</m> more. Import anyway?",time:{justNow:"just now",minutesAgo:"{{n}}m ago",hoursAgo:"{{n}}h ago",daysAgo:"{{n}}d ago",weeksAgo:"{{n}}w ago",monthsAgo:"{{n}}mo ago",yearsAgo:"{{n}}y ago"},badge:{shared:"Store"},unpublishOnDelete:"The store listing will also be deleted.",publish:{confirmLabel:"Post",confirmLoading:"Posting\u2026",descPlaceholder:"One-line description for the Training Store (optional)",dialogTitle:"Post to Training Store",message:"Publish '{{name}}' to the Training Store."},categoryLabel:"Resource type",toast:{registered:"Published to the Malgue Library",registerError:"Failed to publish to the Malgue Library"}},Tf={common:{cardName:"Card Name",cardNamePlaceholder:"Enter card name",group:"Group",groupPlaceholder:"Group name (optional)",description:"Description",descriptionPlaceholder:"Briefly describe this card (optional)",nameRequired:"Please enter a card name.",removeAll:"Remove All",deleteConfirm:"Delete '{{name}}'?",deleteConfirmDefault:"Delete this card?"},wordTrainingCard:{createTitle:"Create Word Training Bundle",editTitle:"Edit Word Training Bundle",deleteTitle:"Delete Word Training Bundle",selectSection:"Select Trainings",defaultSection:"Default Trainings",defaultSectionDesc:"Words are filled automatically when you add a standard training",mySection:"My Trainings",noTrainingsEmpty:"Please create a word training first.",adding:"Adding\u2026",add:"Add",basket:"Selected Trainings",basketEmpty:"No trainings selected",trainingRequired:"Please add at least one training.",maxTrainingsAlert:"You can add up to {{max}} trainings",notEnoughWords:"Not enough words to generate questions",addSaveError:"Failed to save the training. Please try again",complete:{message:"All done! Great job!",button:"Done"}},shareLink:{saveCardFirst:"Save the card first.",copied:"Link copied",created:"Link created",createFailed:"Failed to create link",copyBlocked:"Copying was blocked, so the link is selected. Press Ctrl/\u2318+C to copy",removed:"Link removed",removeFailed:"Failed to remove link"}},Bf={manage:{title:"Homework",sub:"View shared training links and submission status.",searchPlaceholder:"Search by title or recipient",emptySearch:"No results found.",emptyLinks:"No shared homework links yet.",unit:"item(s)",loadFailed:"Could not load homework links."},card:{deleteTitle:"Delete Homework Link",deleteMessage:"Delete this homework link? Submitted results will also be removed."},status:{inactive:"Inactive",expired:"Expired",active:"Active",noTarget:"No Target",sentFmt:"{{target}} \xB7 sent {{date}}"},menu:{activate:"Activate",deactivate:"Deactivate"},personalLinkTitle:"Personal link"},Nf={title:"Invitations",sub:"Create and manage invite links \u2014 no customer info needed.",copyAriaLabel:"Copy link",deleteAriaLabel:"Delete",deleteConfirmTitle:"Delete invite link",deleteConfirmMessage:"Delete this invite link? Any link already shared will stop working."},Df={card:{sub:"Word Training Bundle",empty:"No word training in this card."}},Ef={ariaLabel:"Contact Us",emailPlaceholder:"Email for reply",contentPlaceholder:"Please enter your inquiry.",cancelLabel:"Cancel",submitLabel:"Send",title:"Contact Us",emailLabel:"Email",contentLabel:"Inquiry",successMsg:"\u2713 Your inquiry has been submitted.",submitError:"Failed to submit your inquiry.",subText:"Send us a message about purchasing a subscription plan. We will respond within 1\u20132 business days."},jf={inProgress:"Exam in progress"},Lf={countSuffix:"",searchPlaceholder:"Search links",creating:"Creating\u2026",create:"Create Link",colLink:"Link",colCreatedAt:"Created At",empty:"No items.",loadFailed:"Could not load invitations."},Mf={empty:"No training items to run.",loading:"Loading training data\u2026",subtitle:"Select a topic to start listening practice.",title:"Run Training"},Pf={reason:{invalid:"This invite has expired or is no longer valid.",notFound:"This invite does not exist.",notLoggedIn:"Please sign in.",rateLimited:"Please try again in a moment."},defaultOrgName:"the organization",loading:"Loading\u2026",invalidTitle:"Can't open this invite",acceptError:"Failed to accept the invite.",alreadyConnected:"already connected.",connected:"connected.",doneMessage:"{{orgName}} \u2014 {{suffix}}",doneSub:"You can now receive homework from your manager.",goToHomework:"Go to homework",failedTitle:"Couldn't accept the invite",home:"Home",readyTitle:"Invite from {{orgName}}",readySub:"Register as a customer of {{orgName}} and start receiving homework?",accepting:"Connecting\u2026",acceptButton:"Accept invite"},Rf={reason:{notFound:"This link does not exist.",inactive:"This link has been deactivated.",expired:"This link has expired.",maxUses:"This link has reached its maximum uses.",missingToken:"This link is invalid.",default:"This link is not valid.",unavailable:"We can't check this link right now."},checking:"Checking the link\u2026",validBadge:"Valid link",availableUntil:"Available until {{date}}",redirecting:"Redirecting\u2026",redirectingIn3s:"Redirecting to the app in 3 seconds.",enterNow:"Enter now",invalidBadge:"Unavailable",expiredAt:"Expired: {{date}}",contactAdmin:"If you believe this link should still work, please contact your administrator.",unavailableBadge:"Cannot check",unavailableHint:"Check your connection and open the link again. The link itself is still fine."},$f={loading:"Loading\u2026",invalidTitle:"Can't open this link",invalidMessage:"This shared link doesn't exist, or has expired or been deactivated.",goToMyHomework:"Go to My Homework",recordFailed:"This homework link has expired, so your result wasn't saved. Please contact your manager."},If={defaultTitle:"Word Table"},zf={label:"Share link",copyAriaLabel:"Copy link",removeAriaLabel:"Remove link",creating:"Creating\u2026",hint:"You can only create a share link for a saved card.",removeConfirmTitle:"Remove share link",removeConfirmMessage:"Remove this share link? The existing link will stop working."},Of={title:"Organization link request",subtitle:"The organization below wants to register you as their customer. Please confirm this is an organization you actually use before choosing.",registeredName:"Registered as: {{name}}",decline:"Decline",accept:"Accept",error:"Failed to process: {{message}} \u2014 please try again."},Ff={steps:"Step {{current}} of {{total}}"},Wf={title:"Build the next training",lead:"Sets containing items {{name}} has not caught yet. Only these go in.",planGroup:"Into a training plan",bundleGroup:"Into a word-training bundle",pending:"{{count}} left",unknownSet:"Set name not found",confirm:"Create",newBase:"{{name}} training",planDesc:"{{count}} set(s) holding items {{name}} got wrong",bundleDesc:"{{count}} word training(s) holding items {{name}} got wrong",madePlan:"{{count}} training plan(s)",madeBundle:"{{count}} word-training bundle(s)",created:"Created '{{name}}' \u2014 {{what}}",nothingMade:"No set could be included, so nothing was created.",noSetNote:"{{n}} item(s) could not be included \u2014 the record does not say which set they came from.",emptyTitle:"Nothing to build right now",emptyAllClear:"No items are still being missed.",emptyNoSet:"{{n}} item(s) are still missed, but the records do not say which set they came from, so they cannot be pulled back. One more training run will start recording it."},Hf={panelTitle:"Training misses",viewItems:"Items",viewTypes:"Types",grainLabel:"View by",grainRun:"By problem",grainItem:"By item",colTitle:"Title",colWhen:"When",colScore:"Correct",correct:"Right",wrong:"Wrong",colDuration:"Duration",scoreFmt:"{{correct}}/{{total}}",unitRun:" runs",runsEmpty:"No training recorded yet.",colType:"Type",colRate:"Accuracy",colTried:"Tries",colLatest:"Latest",colPending:"Left",colTrend:"Change",colRuns:"Runs",unitItem:" items",empty:"No training misses recorded yet.",loadFailed:"Could not load the training records.",skippedOnly:"{{n}} older record(s) were excluded \u2014 they do not say what was answered.",summaryLabel:"Recorded",summaryValue:"{{items}} items \xB7 {{pending}} still missed",nextLabel:"Next to work on",nextCount:"{{count}}",nextCountCapped:"{{shown}} of {{total}}",allClear:"All caught up",tried:"{{count}}x",picked:"\u2192 {{what}}",typeClear:"All caught up",typePending:"{{pending}} of {{total}} left",flat:"no change",runs:"{{count}} run(s)",avgDuration:"{{sec}}s avg",truncated:"Only the most recent {{n}} items were loaded \u2014 the counts below cover just those."},Vf={resetColumns:"Reset column widths"},Gf={panelTitle:"Word table scores",viewWords:"Words",viewTables:"Tables",colWord:"Word",colRate:"Accuracy",colTried:"Tries",colLatest:"When",colTrend:"Change",unitTime:" times",empty:"No word tables scored yet.",summaryLabel:"Scored",summaryValue:"{{times}} times \xB7 {{words}} words",nextLabel:"Focus next",nextCount:"{{count}}",allClear:"All correct last time.",tried:"{{count}}x",times:"{{count}}x",flat:"no change",recentLabel:"Recent scorings",deleteOne:"Delete \u201C{{name}}\u201D scoring",deleteTitle:"Delete this scoring?",deleteMessage:"Deletes the \u201C{{name}}\u201D scoring from {{when}}. This cannot be undone.",nextCountCapped:"{{shown}} of {{total}}",loadFailed:"Could not load word scores."},qf={title:"What to train next?",subtitle:"Picked for the {{count}} words {{name}} has not mastered yet.",allClear:"All correct last time. Nothing to focus on right now.",noMatch:"None of your tables contain these words.",coverage:"{{covered}} of {{total}} cells",uncovered:"{{count}} words not in any table",makeNew:"Make a new table from these {{count}}",newTableBase:"{{name}} focus",newTableDesc:"The {{count}} words {{name}} has not mastered yet.",created:"Created \u201C{{name}}\u201D \u2014 {{count}} cells.",button:"Suggest next table"},Yf={hint:"Pin what you want to keep; the rest can be redrawn.",pin:"Pin \u201C{{name}}\u201D",unpin:"Unpin \u201C{{name}}\u201D",remove:"Remove \u201C{{name}}\u201D",regenerate:"Redraw the rest",regenerating:"Drawing\u2026",save:"Create as shown",count:"{{total}} \xB7 {{pinned}} pinned",empty:"Nothing left. At least one is needed."},Uf={ariaLabel:"Banner",dotAriaLabel:"Banner {{index}} of {{count}}"},Kf={selectYearMonth:"Select year and month",chooseDate:"Choose a date"},Zf={previewRegion:"Report preview \u2014 scrollable sideways"},Xf={description:"Description",textbox:"Text",training:"Training guide",menu:"Menu"},Jf={title:"Phoneme profile",sub:"Breaks word-table and pair-table scores into onsets, vowels and codas to find weak sounds and suggest the next training",basis:"Based on all {{n}} scorings",thin:"Not enough scorings to break down yet ({{n}})",byPhoneme:"Accuracy by phoneme",untried:"Not seen yet",weak:"Weak sounds",contrast:"Discrimination (pairs)",suggest:"Suggested next training",goal:"Goal {{pct}}%",suggestPair:"Pair table: {{a}} vs {{b}}",suggestWords:"Word table with {{jamo}}",moreWords:"and {{n}} more",devOrder:"Ordered by acquisition",devFull:"Fully acquired by {{age}}",devMaster:"Mastered by {{age}}",devLate:"Late for age",devInStage:"In the mastery stage",devNotYet:"Not expected yet",devNone:"No acquisition data",ageBasis:"Based on age {{age}}",devSummary:"{{m}} of {{n}} weak sounds are {{group}}",place:{labial:"Bilabial",alveolar:"Alveolar",palatal:"Palatal",velar:"Velar",glottal:"Glottal"},manner:{nasal:"Nasal",plosive:"Plosive",liquid:"Liquid",fricative:"Fricative",affricate:"Affricate"},suggestSentence:"Sentence set {{name}} ({{jamo}} \xD7{{n}})",sentenceMiss:"Words confused in sentence training",sentenceMissSub:"Where the chosen option differed from the answer \u2014 from story and ordering records"},Qf={common:h1,plan:m1,calendar:b1,passCard:g1,searchField:f1,rating:v1,colorPicker:y1,dropdown:x1,accordion:C1,header:w1,nav:_1,settings:k1,usage:S1,account:A1,help:T1,notifications:B1,wordSuggestion:N1,training:D1,trainingSettings:E1,customers:j1,today:L1,payment:M1,coupons:P1,visits:R1,company:$1,sentenceTraining:I1,trainingType:z1,myWordTraining:O1,myWordTable:F1,keyWords:W1,wordTable:H1,wordSearch:V1,wordManagement:G1,wordPrint:q1,topic:Y1,passwordExpiry:U1,feedbackWidget:K1,accessLinkManager:Z1,wordRecommend:X1,subscriptionExpiry:J1,customerTrainingBanner:Q1,login:ef,kakaoLink:tf,agreementGate:af,addressSearch:of,trainingPlan:rf,device:nf,manager:sf,wordPairs:lf,game:cf,footer:df,landing:uf,date:pf,trainingGroup:hf,trainingSetPage:mf,wordTrainingPreview:bf,error:gf,wordData:ff,infoInput:vf,textField:yf,segmentedControl:xf,tabs:Cf,fileUpload:wf,avatar:_f,myHomework:kf,trainingStatus:Sf,store:Af,cardPopup:Tf,homework:Bf,invite:Nf,wordTraining:Df,inquiry:Ef,exam:jf,inviteManage:Lf,trainingPlanRun:Mf,orgInvitePage:Pf,linkGate:Rf,homeworkGate:$f,wordTableView:If,shareLinkFooter:zf,linkRequestGate:Of,progress:Ff,nextTraining:Wf,trainingMiss:Hf,table:Vf,wordScore:Gf,nextTable:qf,draft:Yf,topBanner:Uf,datePicker:Kf,report:Zf,tooltip:Xf,phonemeProfile:Jf};const Nr="0.106.0",Lo=[{code:"ko",label:"\uD55C\uAD6D\uC5B4"},{code:"en",label:"English"}],co="ko",Fn="ihab_display_language";function Yc(){try{const e=localStorage.getItem(Fn);if(e&&Lo.some(t=>t.code===e))return e}catch{}return co}function ev(e){try{localStorage.setItem(Fn,e)}catch{}}function Uc(e){try{document.documentElement.lang=e}catch{}}Ca.on("languageChanged",Uc),Uc(Yc()),Ca.use(me.initReactI18next).init({resources:{ko:{translation:p1},en:{translation:Qf}},lng:Yc(),fallbackLng:co,interpolation:{escapeValue:!1},react:{useSuspense:!1}});const Kc=l.createContext({locale:co,supportedLocales:Lo});function tv(){return l.useContext(Kc)}function av({locale:e=co,children:t}){return l.useEffect(()=>{const a=Lo.find(r=>r.code===e)?e:co;Ca.language!==a&&Ca.changeLanguage(a)},[e]),o.jsx(Kc.Provider,{value:{locale:e,supportedLocales:Lo},children:t})}function we(...e){return e.filter(Boolean).join(" ")}var ov=".ihabdevteam-core-scope .empty-state{align-items:center;border:1px solid var(--color-whiteLine);border-radius:var(--radius-m);display:flex;flex-direction:column;gap:10px;justify-content:center;padding:var(--spacing-page) var(--spacing-xl);text-align:center}.ihabdevteam-core-scope .empty-state__emoji{font-size:40px;line-height:1}.ihabdevteam-core-scope .empty-state__icon{color:var(--color-lightGray);height:40px;width:40px}.ihabdevteam-core-scope .empty-state__title{color:var(--color-lightGray);margin:0}.ihabdevteam-core-scope .empty-state__message{color:var(--color-gray);margin:0}.ihabdevteam-core-scope .empty-state__hint{color:var(--color-lightGray);margin:0}.ihabdevteam-core-scope .empty-state__action{margin-top:var(--spacing-xs);min-width:120px}.ihabdevteam-core-scope .empty-state--compact{padding:var(--spacing-page) var(--spacing-m);padding-block:56px}";te(ov);const Zc=new Set,Xc=(()=>{try{const e=globalThis;return e.process!=null&&e.process.env?.NODE_ENV!=="production"}catch{return!1}})();function Wn(e,...t){!Xc||Zc.has(e)||(Zc.add(e),console.warn(...t))}/**
11
+ and aids recovery.`,site:{title:"Site",malgwi:"Malgwi",soundDirection:"Sound Direction System",vrSoundDirection:"VR Sound Direction System",hearingTest:"Hearing Test Pro"},sns:{title:"SNS",naverBlog:"Naver Blog",kakao:"KAKAO Talk Open Chat"},policy:{title:"Policy",terms:"Terms of Service",privacy:"Privacy Policy"},ceo:"CEO",address:"Address",support:"Support",ceoName:"Ji-hye Han",addressValue:"302, 3F, Haechan Bldg, 32 Siocheong-gil, Chuncheon, Gangwon, Korea"},uf={nav:{programs:"Programs",manager:"Manager",themes:"Training Topics",plans:"Pricing",login:"Log in",menuOpen:"Open menu",menuClose:"Close menu"},hero:{eyebrow:"Auditory Training by Hearing Professionals",title:"Practice <em>hearing speech</em><br/>with programs made by<br/>hearing professionals.",sub:"IHAB \uB9D0\uADC0 is an auditory training program designed to support everyday communication for hearing aid wearers, with a variety of listening scenarios and engaging content.",ctaPrimary:"Start for free"},marquee:["4,460 listening contents","Audiology expert advisory","Everyday recovery for hearing aid users","Daily updates","9 topic categories","Noise environment simulation"],counter:{prefix:"A total of",unit:"",unitSuffix:"",suffix:"vast training contents.",trainingCardSuffix:" sent.",cap:"With 4,000+ listening contents updated daily, no two listening experiences are ever repeated.",chips:[{num:"1,284",label:"Sentence listening in noise"},{num:"1,612",label:"Short story listening"},{num:"986",label:"Long story listening"},{num:"578",label:"Sentence ordering"}]},features:{title:"All the <em>auditory training</em> you need, <em>in one place</em>",sub:"From today's listening to noise training, word discrimination, and games\u2014<br/>experience everything you need for auditory rehabilitation with \uB9D0\uADC0.",items:[{title:"Today's Listening",desc:"Fresh daily listening training to support consistent auditory rehabilitation."},{title:"Topic Training",desc:"Improve real-life listening ability with topics like daily life, news, and weather."},{title:"Word Training",desc:"Focused training to distinguish phonemes by comparing onset, vowel, and coda differences."},{title:"Listening in Noise",desc:"Build adaptability to clearly distinguish speech in various noise environments."},{title:"Games",desc:"Keep up with auditory training without getting bored through fun game formats."},{title:"Training Log",desc:"Track your auditory rehabilitation progress at a glance with history and statistics."},{title:"Expert Management",desc:"Audiologists and hearing aid centers can manage patient training settings and visit history together."}]},programs:{title:"Auditory training program designed for<br/><em>diverse listening</em> situations and <em>engagement</em>",sub:"Consistent auditory rehabilitation improves auditory attention and cognitive ability.",steps:[{n:"01",variant:"start",title:"Listen",desc:"Training to hear sentences in real everyday noise environments"},{n:"02",variant:"feedback",title:"Remember",desc:"Review the sentence and check which parts you heard clearly"},{n:"03",variant:"done",title:"Confirm",desc:"Save accuracy and trends per session to inform the next training"}]},themes:{title:"Auditory training with <em>topics</em><br/>you're <em>interested</em> in",sub:"Organized by topics you encounter in everyday life so you can practice listening naturally.",sentenceSuffix:" sentences",items:{weather:"Weather",food:"Food",people:"People",koreanCulture:"Korean Culture",stories:"Stories",locations:"Locations",societyArts:"Society & Arts",natureScience:"Nature & Science",sports:"Sports",health:"Health"}},manager:{title:"Manager features for<br/><em>auditory training professionals</em>",sub:"We provide a manager page service that lets you manage customers and set up personalized auditory training.",footText:"Save your preferred training directly to set up your own custom preset.",footBtn:"Apply for \uB9D0\uADC0 Manager"},pricing:{title:"Enjoy all \uB9D0\uADC0 content<br/>without limits"},cta:{eyebrow:"Start right now",title:"10 minutes a day \u2014 regain<br/>confidence in daily communication.",sub:"Log in with your IHAB account to start training immediately<br/>with the first-visit customer preset.",btn:"Log in with IHAB and start \uB9D0\uADC0"},trainingPhone:{title:"Sentence Listening in Noise",topic:"Gardening",prev:"Prev",next:"Next",speed:"Speed 3",noiseType:"Crowd noise",settings:"Settings",start:{caption:"Press the play (\u25B6) button below and listen carefully. After listening, check the sentence."},feedback:{caption:"Plant the well-grown seedlings in the garden bed and cover them carefully with plastic film."},done:{heardWell:"Heard clearly",listenAgain:"Listen again"}},stickyCta:"Log in and start \uB9D0\uADC0",stickyTaglinePrefix:"'s\xA0",stickyTaglineHighlight:"auditory training",stickyTaglineSuffix:" \u2014 ready to start?",forceLogout:{duplicateSession:"You were signed out because this account signed in on another device.",sessionExpired:"Your session expired, so you were signed out."}},pf={yearField:"Year",monthField:"Month",dayField:"Day",yearLabel:"{{y}}",monthLabel:"{{m}}",hourLabel:"{{h}}:00",daySuffix:"",minuteSuffix:"",dayLabel:"{{n}}",timeHM:"{{hh}}:{{mm}}",timeH:"{{hh}}:{{mm}}"},hf={discrimination:{label:"Discrimination Training",disc:"Training to distinguish whether two sounds are the same or different.",types:{SAME_SOUND_PICK:{label:"Listen & Pick Same Sound",sub:"Pick the word card that matches the sound you heard.",setupSub:"Choose a target word and distractors to create a same-sound picking question.",step1:"Select the target word.",step2:"Select other words to present alongside it."},SAME_OR_DIFF:{label:"Same or Different?",sub:"Decide whether the two sounds are the same or different.",setupSub:"Choose two words to compare and create a same-or-different question.",step1:"Listen to the two sounds.",step2:"Are they the same or different?",choiceSame:"Same",choiceDiff:"Different"},HEAR_AND_PICK_SAME:{label:"Hear & Match the Word",sub:"Pick the word card that matches what you heard.",setupSub:"Choose a target word and distractors to create a word-matching question.",step1:"Listen to the word.",step2:"Select the matching word card."},HEAR_AND_PICK_INCLUDED:{label:"Hear & Pick Word with Syllable",sub:"Pick the word card that contains the syllable you heard.",setupSub:"Create a question using a target with the syllable and distractors without it.",step1:"Listen to the syllable.",step2:"Select the word that contains this syllable."},STARTS_WITH_SAME_SOUND:{label:"Hear & Pick Same Starting Sound",sub:"Pick the word that starts with the same sound as the one you heard.",setupSub:"Create a question using words that start with the same sound and distractors that don't.",step1:"Listen to the word.",step2:"Select the word starting with the same sound."}}},synthesis:{label:"Synthesis Training",disc:"Training to combine two or more syllables or phonemes into a word.",types:{MERGE_2_SYLLABLES:{label:"Combine 2 Syllables",sub:"What word do you get when you combine these 2 syllables?",setupSub:"Choose a target word and it will be split into 2 syllables for the question.",step1:"Listen to the 2 syllables.",step2:"What word do they make?"},MERGE_3_SYLLABLES:{label:"Combine 3 Syllables",sub:"What word do you get when you combine these 3 syllables?",setupSub:"Choose a target word and it will be split into 3 syllables for the question.",step1:"Listen to the 3 syllables.",step2:"What word do they make?"},MERGE_2_PHONEMES:{label:"Combine 2 Phonemes",sub:"What sound do you get when you combine these 2 phonemes?",setupSub:"Choose a target sound and create a 2-phoneme combination question.",step1:"Listen to the 2 phonemes.",step2:"What sound do they make?"},MERGE_3_PHONEMES:{label:"Combine 3 Phonemes",sub:"What sound do you get when you combine these 3 phonemes?",setupSub:"Choose a target sound and create a 3-phoneme combination question.",step1:"Listen to the 3 phonemes.",step2:"What sound do they make?"}}},deletion:{label:"Deletion Training",disc:"Training to identify the remaining sound after removing a syllable or phoneme.",types:{DROP_1_FROM_2SYLL:{label:"Drop 1 Syllable from 2-Syllable Word",sub:"What sound is left when you remove one syllable from a 2-syllable word?",setupSub:"Choose a 2-syllable target word and create a syllable-deletion question.",step1:"Listen to the word.",step2:"What sound remains when one syllable is removed?"},DROP_1_FROM_3SYLL:{label:"Drop 1 Syllable from 3-Syllable Word",sub:"What sound is left when you remove one syllable from a 3-syllable word?",setupSub:"Choose a 3-syllable target word and create a syllable-deletion question.",step1:"Listen to the word.",step2:"What sound remains when one syllable is removed?"},DROP_PART_FROM_COMPOUND:{label:"Drop Part of Compound Word",sub:"What word is left when you remove part of a compound word?",setupSub:"Choose a compound word and create a partial-deletion question.",step1:"Listen to the compound word.",step2:"What word remains when part is removed?"},DROP_FINAL_CONSONANT_FROM_1SYLL:{label:"Drop Final Consonant",sub:"What sound is left when you remove the final consonant?",setupSub:"Choose a 1-syllable word with a final consonant and create a deletion question.",step1:"Listen to the word.",step2:"What sound remains when the coda is removed?"},REMOVE_CONSONANT_AND_IDENTIFY_PHONEME:{label:"Drop Consonant from 1-Syllable Word",sub:"What sound remains after removing the consonant?",setupSub:"Choose a 1-syllable word and create a consonant-removal question.",step1:"Listen to the word.",step2:"What sound remains when the consonant is removed?"}}},substitution:{label:"Substitution Training",disc:"Training to create new sounds by substituting syllables or phonemes.",types:{CHANGE_1_SYLL_IN_2SYLL:{label:"Change 1 Syllable in 2-Syllable Word",sub:"Change one syllable of a 2-syllable word to make a new word.",setupSub:"Choose a 2-syllable target word and create a syllable-substitution question.",step1:"Listen to the word.",step2:"Change one syllable to make a new word."},CHANGE_1_SYLL_IN_3SYLL:{label:"Change 1 Syllable in 3-Syllable Word",sub:"Change one syllable of a 3-syllable word to make a new word.",setupSub:"Choose a 3-syllable target word and create a syllable-substitution question.",step1:"Listen to the word.",step2:"Change one syllable to make a new word."},CHANGE_1_PHONEME_IN_1SYLL:{label:"Change 1 Phoneme in 1-Syllable Word",sub:"Change one phoneme of a 1-syllable word to make a new sound.",setupSub:"Choose a 1-syllable target word and create a phoneme-substitution question.",step1:"Listen to the word.",step2:"Change one phoneme to make a new sound."},CHANGE_1_PHONEME_IN_2SYLL:{label:"Change 1 Phoneme in 2-Syllable Word",sub:"Change one phoneme of a 2-syllable word to make a new word.",setupSub:"Choose a 2-syllable target word and create a phoneme-substitution question.",step1:"Listen to the word.",step2:"Change one phoneme to make a new word."}}},attention:{label:"Auditory Attention Training",disc:"Training attention and short-term memory by listening to and recalling sequences of sounds.",types:{LISTEN_AND_REMEMBER_ORDER:{label:"Listen & Recall in Order",sub:"Select the three word cards in the order you heard them.",setupSub:"Choose three words to present and create a recall-in-order question.",step1:"Listen to the three words.",step2:"Select them in the order you heard them."}}}},mf={subtitle:"Select a training type",resultUnit:"word set",nameLabel:"Name",namePlaceholder:"Enter training name",options:"Training Options",difficulty:"Difficulty",exclude:"Exclude",chosung:"Initial Consonant",save:"Save",preview:"Preview",excludeOptions:{none:"None",noImage:"No Image"},toast:{nameRequired:"Please enter a set name.",noWords:"No words selected.",noProblem:"Please complete at least one question.",loginRequired:"Login required.",saveFailed:"Failed to save.",saveSuccess:'"{{name}}" set saved ({{count}} questions).',saveSuccessWithIncomplete:'"{{name}}" set saved ({{count}} questions, {{incomplete}} incomplete excluded).',bundleApplied:"Applied to the current question."},suggest:{noCoda:"No batchim",syllable:"{{n}} syllable(s)"}},bf={namePlaceholder:"Enter a training name.",trainingTitle:"'{{name}}' Word Training",questionInput:"Enter a word",answer:"Answer",distractor:"Distractor",groupStep:"Select the word set for the problem.",pickWordStep:"Choose the word to use in the question.",groupStepSub:"The correct answer and distractors are chosen at random from the selected set.",sameOrDiffStepSub:"Chosen at random from the selected word set.",problemNav:"Q {{current}} / {{count}}",problemNum:"Q {{n}}",clearQuestion:"Deselect",removeQuestion:"Remove Question",addQuestion:"Add Question",noWords:"No words match the selected filters.",validOk:"Valid word.",validNoImage:"No image for this word.",validNeed1SyllCoda:"Only 1-syllable words with a final consonant are allowed.",validNeed1SyllNoCoda:"Only 1-syllable words without a final consonant are allowed (excluding words starting with \u3147).",validNeed2Syll:"Only 2-syllable words are allowed.",validNeed3Syll:"Only 3-syllable words are allowed.",manualOnlyHint:"This type doesn't support automatic suggestions yet. Please enter the question word manually."},gf={unexpectedTitle:"Something went wrong",unexpectedMessage:"An unexpected error occurred. Please try again.",retry:"Try Again"},ff={loadError:"Word Data Load Failed",loadErrorMessage:"Failed to load word data. Please check your network and try again.",updateAvailable:"Word Data v{{version}}",updateMessage:"New word data is available.",phaseWordDownload:"Download Word Data",phaseImageCheck:"Check Images",phasePairAnalysis:"Analyze Word Pairs",downloadingCount:"Downloading {{n}} words",checkingPage:"Checking page {{page}} list",imageCount:"{{done}} / {{total}} items",update:{title:"Word Data Update"}},vf={title:"Apply for Malgwi Manager",submitting:"Submitting\u2026",submit:"Apply",promo:{title:"3-Day Free Trial for Malgwi Manager",desc:"Register now and try Malgwi Manager free for 3 days!",action:"View Info Page"},applicantEmail:"Applicant Email",companyId:{label:"Company ID",placeholder:"e.g. ACME01 (uppercase letters & numbers)",helper:"Company ID cannot be changed after creation. Only uppercase letters, numbers, _, - are allowed.",errors:{required:"Please enter a company ID",startWithLetter:"Company ID must start with an uppercase letter.",tooLong:"Company ID must be 12 characters or fewer."}},companyName:{label:"Company / Username",placeholder:"Enter company name or username",errors:{required:"Please enter a company name",tooLong:"Company / Username must be 12 characters or fewer."}},companyType:{label:"Company Type",placeholder:"Select company type",errors:{required:"Please select a company type"}},phone:{label:"Phone",errors:{required:"Please enter a phone number",format:"Please enter a valid phone number"}}},yf={clearAriaLabel:"Clear input"},xf={ariaLabel:"Select tab"},Cf={ariaLabel:"Tabs"},wf={dragPrompt:"Drag and drop files here",browseButton:"Choose Files",removeAriaLabel:"Remove {{name}}"},_f={ariaLabel:"User avatar"},kf={title:"Homework",subtitle:"Check and do the homework your manager sent you.",completed:"Done",inProgress:"In progress",fromManager:"Manager",received:"received",recordExpired:"The homework has expired, so the result was not recorded. Please contact your manager.",segment:{all:"All",new:"New",inprogress:"In Progress",done:"Done"},pageSize:{10:"Show 10",20:"Show 20",50:"Show 50"},searchPlaceholder:"Search homework name",sort:{newest:"Newest",oldest:"Oldest",title:"Title"},relativeDay:{today:"Today",yesterday:"Yesterday",daysAgo:"{{n}}d ago"},reason:{notLoggedIn:"Login required."},list:{title:"Received Homework",empty:"No homework received."},status:{expired:"Expired",done:"Done {{count}}\xD7 \xB7 {{date}}",notDone:"Not done"}},Sf={title:"Training Status",sub:"View your hearing training records",weekly:{title:"Weekly Training",daily:"Daily Listening",crossword:"Crossword",trainingTime:"Training Time",timeAvg:"Avg time",accuracy:"Accuracy",unit:" times"},sentence:{title:"Sentence Training"},word:{title:"Word Training"},homework:{title:"Homework Progress",totalRate:"Overall rate",count:"Total",done:"Done",remaining:"Remaining",unit:""},today:{title:"Today's Listening",progress:"Progress",accuracy:"Accuracy",progressAvg:"Avg progress",unitPct:"%",tooltipTotal:"Total",tooltipDone:"Done"},filter:{countSuffix:" sessions"},time:{title:"Training Time",countLabel:"{{n}} sessions",empty:"No training records",sec:"{{n}}s",min:"{{n}}m",hourMin:"{{h}}h {{m}}m",hour:"{{h}}h"},daily:{title:"Today's Listening Record",empty:"No completed sessions"},crossword:{title:"Crossword Quiz",empty:"No completed levels"},visit:{title:"Linked Visit Records"},detail:"Details",detailEmpty:"No training records for this period.",detailError:"Could not load training records. Please try again shortly.",col:{date:"Date",type:"Type",score:"Score",time:"Time"},trainingType:{LISTEN_IN_NOISE:"Sentence in Noise",SHORT_STORY:"Short Story",LONG_STORY:"Long Story",ORDERING_SENTENCE:"Sentence Ordering"},accuracy:{overall:"Overall accuracy",itemUnit:" items",skipped:"{{n}} had no accuracy record and were left out of this count."},insight:{title:"Training status",sub:"Accuracy of the four sentence-training types, compared with the previous period",strong:"Doing well",weak:"Struggling",improving:"Improving",declining:"Slipping",stale:"Not lately",vsBefore:"vs. previous {{delta}}",thin:"Not enough sessions to compare yet ({{n}})",colTrend:"Change",reasonWeak:"Accuracy is low",reasonDeclining:"Getting worse lately",reasonStale:"Not done lately",items:"{{n}} items",noRuns:"No sessions in this period"},noise:{title:"Hearing by noise condition",heard:"Heard",basis:"All in-person sessions \xB7 {{n}} items",condition:"Noise {{noise}}% \xB7 Volume {{volume}}%",limit:"Heard up to: noise {{noise}}% \xB7 volume {{volume}}%",noLimit:"No condition heard above {{pct}}% yet",empty:"No records with noise settings yet"},analysis:{result:"Result",reason:"Why",sound:"Misheard the sound",meaning:"Missed the content",soundTag:"Sound",meaningTag:"Content",pairs:"Confused options",shortSub:"Wrong picks tell why",longSub:"Memory and understanding, separately",orderingSub:"How many sentences, and which positions slip",recall:"Keyword recall",understand:"Understanding",byOrder:"By question order",orderNo:"No. {{n}}",limitSize:"Orders up to {{n}} sentences",noLimitSize:"No set size ordered above {{pct}}% yet",bySize:"All correct by set size",size:"{{n}} sentences",runs:"{{n}} runs",byPosition:"By position",neighbor:"Swapped with a neighbor",far:"Misplaced far",empty:"No in-person session records yet",position:{first:"First",middle:"Middle",last:"Last"},verdict:{noMiss:"No wrong answers",sound:"Mostly misheard sounds \u2014 pair it with word discrimination training",meaning:"Mostly missed content \u2014 pause the story and recap",recall:"Recalls few keywords \u2014 widen memory span with short stories first",drop:"Drops on later questions \u2014 holding on to what was heard is the task",neighbor:"Neighboring sentences get swapped \u2014 point out how they connect",far:"Sentences land far off \u2014 reduce the set size and build up again",position:"Often misses the {{position}} position"}}},Af={title:"Training Store",subtitle:"Browse trainings shared by other managers and add them to your list.",searchPlaceholder:"Search by training name or publisher",category:{word:"Word Tables",wordTraining:"Word Training",sentence:"Sentence Training"},sort:{newest:"Newest",likes:"Most liked",downloads:"Most downloaded"},wordKind:{pair:"Pairs",single:"Words",emptyHintToSingle:"No pair tables here, but the 'Words' tab has some.",emptyHintToPair:"No word tables here, but the 'Pairs' tab has some."},pageSize:"{{n}} per page",countPrefix:"Total ",countSuffix:" trainings",notice:"Log in with a manager account to add trainings to your list.",empty:"No trainings have been published yet.",emptyHint:"You can publish your own trainings from the Training Settings page.",like:"Like",unlike:"Unlike",loginRequired:"Login required",import:"Add to my trainings",importButton:"Import",publisher:"Publisher",importFail:"Import failed: {{error}}",importSuccess:"Added '{{title}}' to your training list.",dupTitle:"Same content already exists",dupMessageOne:"Same content as <m>{{title}}</m>. Import anyway?",dupMessageMany:"Same content as <m>{{title}}</m> and <m>{{n}}</m> more. Import anyway?",time:{justNow:"just now",minutesAgo:"{{n}}m ago",hoursAgo:"{{n}}h ago",daysAgo:"{{n}}d ago",weeksAgo:"{{n}}w ago",monthsAgo:"{{n}}mo ago",yearsAgo:"{{n}}y ago"},badge:{shared:"Store"},unpublishOnDelete:"The store listing will also be deleted.",publish:{confirmLabel:"Post",confirmLoading:"Posting\u2026",descPlaceholder:"One-line description for the Training Store (optional)",dialogTitle:"Post to Training Store",message:"Publish '{{name}}' to the Training Store."},categoryLabel:"Resource type",toast:{registered:"Published to the Malgue Library",registerError:"Failed to publish to the Malgue Library"}},Tf={common:{cardName:"Card Name",cardNamePlaceholder:"Enter card name",group:"Group",groupPlaceholder:"Group name (optional)",description:"Description",descriptionPlaceholder:"Briefly describe this card (optional)",nameRequired:"Please enter a card name.",removeAll:"Remove All",deleteConfirm:"Delete '{{name}}'?",deleteConfirmDefault:"Delete this card?"},wordTrainingCard:{createTitle:"Create Word Training Bundle",editTitle:"Edit Word Training Bundle",deleteTitle:"Delete Word Training Bundle",selectSection:"Select Trainings",defaultSection:"Default Trainings",defaultSectionDesc:"Words are filled automatically when you add a standard training",mySection:"My Trainings",noTrainingsEmpty:"Please create a word training first.",adding:"Adding\u2026",add:"Add",basket:"Selected Trainings",basketEmpty:"No trainings selected",trainingRequired:"Please add at least one training.",maxTrainingsAlert:"You can add up to {{max}} trainings",notEnoughWords:"Not enough words to generate questions",addSaveError:"Failed to save the training. Please try again",complete:{message:"All done! Great job!",button:"Done"}},shareLink:{saveCardFirst:"Save the card first.",copied:"Link copied",created:"Link created",createFailed:"Failed to create link",copyBlocked:"Copying was blocked, so the link is selected. Press Ctrl/\u2318+C to copy",removed:"Link removed",removeFailed:"Failed to remove link"}},Bf={manage:{title:"Homework",sub:"View shared training links and submission status.",searchPlaceholder:"Search by title or recipient",emptySearch:"No results found.",emptyLinks:"No shared homework links yet.",unit:"item(s)",loadFailed:"Could not load homework links."},card:{deleteTitle:"Delete Homework Link",deleteMessage:"Delete this homework link? Submitted results will also be removed."},status:{inactive:"Inactive",expired:"Expired",active:"Active",noTarget:"No Target",sentFmt:"{{target}} \xB7 sent {{date}}"},menu:{activate:"Activate",deactivate:"Deactivate"},personalLinkTitle:"Personal link"},Nf={title:"Invitations",sub:"Create and manage invite links \u2014 no customer info needed.",copyAriaLabel:"Copy link",deleteAriaLabel:"Delete",deleteConfirmTitle:"Delete invite link",deleteConfirmMessage:"Delete this invite link? Any link already shared will stop working."},Df={card:{sub:"Word Training Bundle",empty:"No word training in this card."}},Ef={ariaLabel:"Contact Us",emailPlaceholder:"Email for reply",contentPlaceholder:"Please enter your inquiry.",cancelLabel:"Cancel",submitLabel:"Send",title:"Contact Us",emailLabel:"Email",contentLabel:"Inquiry",successMsg:"\u2713 Your inquiry has been submitted.",submitError:"Failed to submit your inquiry.",subText:"Send us a message about purchasing a subscription plan. We will respond within 1\u20132 business days."},jf={inProgress:"Exam in progress"},Lf={countSuffix:"",searchPlaceholder:"Search links",creating:"Creating\u2026",create:"Create Link",colLink:"Link",colCreatedAt:"Created At",empty:"No items.",loadFailed:"Could not load invitations."},Mf={empty:"No training items to run.",loading:"Loading training data\u2026",subtitle:"Select a topic to start listening practice.",title:"Run Training"},Pf={reason:{invalid:"This invite has expired or is no longer valid.",notFound:"This invite does not exist.",notLoggedIn:"Please sign in.",rateLimited:"Please try again in a moment."},defaultOrgName:"the organization",loading:"Loading\u2026",invalidTitle:"Can't open this invite",acceptError:"Failed to accept the invite.",alreadyConnected:"already connected.",connected:"connected.",doneMessage:"{{orgName}} \u2014 {{suffix}}",doneSub:"You can now receive homework from your manager.",goToHomework:"Go to homework",failedTitle:"Couldn't accept the invite",home:"Home",readyTitle:"Invite from {{orgName}}",readySub:"Register as a customer of {{orgName}} and start receiving homework?",accepting:"Connecting\u2026",acceptButton:"Accept invite"},Rf={reason:{notFound:"This link does not exist.",inactive:"This link has been deactivated.",expired:"This link has expired.",maxUses:"This link has reached its maximum uses.",missingToken:"This link is invalid.",default:"This link is not valid.",unavailable:"We can't check this link right now."},checking:"Checking the link\u2026",validBadge:"Valid link",availableUntil:"Available until {{date}}",redirecting:"Redirecting\u2026",redirectingIn3s:"Redirecting to the app in 3 seconds.",enterNow:"Enter now",invalidBadge:"Unavailable",expiredAt:"Expired: {{date}}",contactAdmin:"If you believe this link should still work, please contact your administrator.",unavailableBadge:"Cannot check",unavailableHint:"Check your connection and open the link again. The link itself is still fine."},$f={loading:"Loading\u2026",invalidTitle:"Can't open this link",invalidMessage:"This shared link doesn't exist, or has expired or been deactivated.",goToMyHomework:"Go to My Homework",recordFailed:"This homework link has expired, so your result wasn't saved. Please contact your manager."},If={defaultTitle:"Word Table"},zf={label:"Share link",copyAriaLabel:"Copy link",removeAriaLabel:"Remove link",creating:"Creating\u2026",hint:"You can only create a share link for a saved card.",removeConfirmTitle:"Remove share link",removeConfirmMessage:"Remove this share link? The existing link will stop working."},Of={title:"Organization link request",subtitle:"The organization below wants to register you as their customer. Please confirm this is an organization you actually use before choosing.",registeredName:"Registered as: {{name}}",decline:"Decline",accept:"Accept",error:"Failed to process: {{message}} \u2014 please try again."},Ff={steps:"Step {{current}} of {{total}}"},Wf={title:"Build the next training",lead:"Sets containing items {{name}} has not caught yet. Only these go in.",planGroup:"Into a training plan",bundleGroup:"Into a word-training bundle",pending:"{{count}} left",unknownSet:"Set name not found",confirm:"Create",newBase:"{{name}} training",planDesc:"{{count}} set(s) holding items {{name}} got wrong",bundleDesc:"{{count}} word training(s) holding items {{name}} got wrong",madePlan:"{{count}} training plan(s)",madeBundle:"{{count}} word-training bundle(s)",created:"Created '{{name}}' \u2014 {{what}}",nothingMade:"No set could be included, so nothing was created.",noSetNote:"{{n}} item(s) could not be included \u2014 the record does not say which set they came from.",emptyTitle:"Nothing to build right now",emptyAllClear:"No items are still being missed.",emptyNoSet:"{{n}} item(s) are still missed, but the records do not say which set they came from, so they cannot be pulled back. One more training run will start recording it."},Hf={panelTitle:"Training misses",viewItems:"Items",viewTypes:"Types",grainLabel:"View by",grainRun:"By problem",grainItem:"By item",colTitle:"Title",colWhen:"When",colScore:"Correct",correct:"Right",wrong:"Wrong",colDuration:"Duration",scoreFmt:"{{correct}}/{{total}}",unitRun:" runs",runsEmpty:"No training recorded yet.",colType:"Type",colRate:"Accuracy",colTried:"Tries",colLatest:"Latest",colPending:"Left",colTrend:"Change",colRuns:"Runs",unitItem:" items",empty:"No training misses recorded yet.",loadFailed:"Could not load the training records.",skippedOnly:"{{n}} older record(s) were excluded \u2014 they do not say what was answered.",summaryLabel:"Recorded",summaryValue:"{{items}} items \xB7 {{pending}} still missed",nextLabel:"Next to work on",nextCount:"{{count}}",nextCountCapped:"{{shown}} of {{total}}",allClear:"All caught up",tried:"{{count}}x",picked:"\u2192 {{what}}",typeClear:"All caught up",typePending:"{{pending}} of {{total}} left",flat:"no change",runs:"{{count}} run(s)",avgDuration:"{{sec}}s avg",truncated:"Only the most recent {{n}} items were loaded \u2014 the counts below cover just those."},Vf={resetColumns:"Reset column widths"},Gf={panelTitle:"Word table scores",viewWords:"Words",viewTables:"Tables",colWord:"Word",colRate:"Accuracy",colTried:"Tries",colLatest:"When",colTrend:"Change",unitTime:" times",empty:"No word tables scored yet.",summaryLabel:"Scored",summaryValue:"{{times}} times \xB7 {{words}} words",nextLabel:"Focus next",nextCount:"{{count}}",allClear:"All correct last time.",tried:"{{count}}x",times:"{{count}}x",flat:"no change",recentLabel:"Recent scorings",deleteOne:"Delete \u201C{{name}}\u201D scoring",deleteTitle:"Delete this scoring?",deleteMessage:"Deletes the \u201C{{name}}\u201D scoring from {{when}}. This cannot be undone.",nextCountCapped:"{{shown}} of {{total}}",loadFailed:"Could not load word scores."},qf={title:"What to train next?",subtitle:"Picked for the {{count}} words {{name}} has not mastered yet.",allClear:"All correct last time. Nothing to focus on right now.",noMatch:"None of your tables contain these words.",coverage:"{{covered}} of {{total}} cells",uncovered:"{{count}} words not in any table",makeNew:"Make a new table from these {{count}}",newTableBase:"{{name}} focus",newTableDesc:"The {{count}} words {{name}} has not mastered yet.",created:"Created \u201C{{name}}\u201D \u2014 {{count}} cells.",button:"Suggest next table"},Yf={hint:"Pin what you want to keep; the rest can be redrawn.",pin:"Pin \u201C{{name}}\u201D",unpin:"Unpin \u201C{{name}}\u201D",remove:"Remove \u201C{{name}}\u201D",regenerate:"Redraw the rest",regenerating:"Drawing\u2026",save:"Create as shown",count:"{{total}} \xB7 {{pinned}} pinned",empty:"Nothing left. At least one is needed."},Uf={ariaLabel:"Banner",dotAriaLabel:"Banner {{index}} of {{count}}"},Kf={selectYearMonth:"Select year and month",chooseDate:"Choose a date"},Zf={previewRegion:"Report preview \u2014 scrollable sideways"},Xf={description:"Description",textbox:"Text",training:"Training guide",menu:"Menu"},Jf={title:"Phoneme profile",sub:"Breaks word-table and pair-table scores into onsets, vowels and codas to find weak sounds and suggest the next training",basis:"Based on all {{n}} scorings",thin:"Not enough scorings to break down yet ({{n}})",byPhoneme:"Accuracy by phoneme",untried:"Not seen yet",weak:"Weak sounds",contrast:"Discrimination (pairs)",suggest:"Suggested next training",goal:"Goal {{pct}}%",suggestPair:"Pair table: {{a}} vs {{b}}",suggestWords:"Word table with {{jamo}}",moreWords:"and {{n}} more",devOrder:"Ordered by acquisition",devFull:"Fully acquired by {{age}}",devMaster:"Mastered by {{age}}",devLate:"Late for age",devInStage:"In the mastery stage",devNotYet:"Not expected yet",devNone:"No acquisition data",ageBasis:"Based on age {{age}}",devSummary:"{{m}} of {{n}} weak sounds are {{group}}",place:{labial:"Bilabial",alveolar:"Alveolar",palatal:"Palatal",velar:"Velar",glottal:"Glottal"},manner:{nasal:"Nasal",plosive:"Plosive",liquid:"Liquid",fricative:"Fricative",affricate:"Affricate"},suggestSentence:"Sentence set {{name}} ({{jamo}} \xD7{{n}})",sentenceMiss:"Words confused in sentence training",sentenceMissSub:"Where the chosen option differed from the answer \u2014 from story and ordering records"},Qf={common:h1,plan:m1,calendar:b1,passCard:g1,searchField:f1,rating:v1,colorPicker:y1,dropdown:x1,accordion:C1,header:w1,nav:_1,settings:k1,usage:S1,account:A1,help:T1,notifications:B1,wordSuggestion:N1,training:D1,trainingSettings:E1,customers:j1,today:L1,payment:M1,coupons:P1,visits:R1,company:$1,sentenceTraining:I1,trainingType:z1,myWordTraining:O1,myWordTable:F1,keyWords:W1,wordTable:H1,wordSearch:V1,wordManagement:G1,wordPrint:q1,topic:Y1,passwordExpiry:U1,feedbackWidget:K1,accessLinkManager:Z1,wordRecommend:X1,subscriptionExpiry:J1,customerTrainingBanner:Q1,login:ef,kakaoLink:tf,agreementGate:af,addressSearch:of,trainingPlan:rf,device:nf,manager:sf,wordPairs:lf,game:cf,footer:df,landing:uf,date:pf,trainingGroup:hf,trainingSetPage:mf,wordTrainingPreview:bf,error:gf,wordData:ff,infoInput:vf,textField:yf,segmentedControl:xf,tabs:Cf,fileUpload:wf,avatar:_f,myHomework:kf,trainingStatus:Sf,store:Af,cardPopup:Tf,homework:Bf,invite:Nf,wordTraining:Df,inquiry:Ef,exam:jf,inviteManage:Lf,trainingPlanRun:Mf,orgInvitePage:Pf,linkGate:Rf,homeworkGate:$f,wordTableView:If,shareLinkFooter:zf,linkRequestGate:Of,progress:Ff,nextTraining:Wf,trainingMiss:Hf,table:Vf,wordScore:Gf,nextTable:qf,draft:Yf,topBanner:Uf,datePicker:Kf,report:Zf,tooltip:Xf,phonemeProfile:Jf};const Nr="0.107.0",Lo=[{code:"ko",label:"\uD55C\uAD6D\uC5B4"},{code:"en",label:"English"}],co="ko",Fn="ihab_display_language";function Yc(){try{const e=localStorage.getItem(Fn);if(e&&Lo.some(t=>t.code===e))return e}catch{}return co}function ev(e){try{localStorage.setItem(Fn,e)}catch{}}function Uc(e){try{document.documentElement.lang=e}catch{}}Ca.on("languageChanged",Uc),Uc(Yc()),Ca.use(me.initReactI18next).init({resources:{ko:{translation:p1},en:{translation:Qf}},lng:Yc(),fallbackLng:co,interpolation:{escapeValue:!1},react:{useSuspense:!1}});const Kc=l.createContext({locale:co,supportedLocales:Lo});function tv(){return l.useContext(Kc)}function av({locale:e=co,children:t}){return l.useEffect(()=>{const a=Lo.find(r=>r.code===e)?e:co;Ca.language!==a&&Ca.changeLanguage(a)},[e]),o.jsx(Kc.Provider,{value:{locale:e,supportedLocales:Lo},children:t})}function we(...e){return e.filter(Boolean).join(" ")}var ov=".ihabdevteam-core-scope .empty-state{align-items:center;border:1px solid var(--color-whiteLine);border-radius:var(--radius-m);display:flex;flex-direction:column;gap:10px;justify-content:center;padding:var(--spacing-page) var(--spacing-xl);text-align:center}.ihabdevteam-core-scope .empty-state__emoji{font-size:40px;line-height:1}.ihabdevteam-core-scope .empty-state__icon{color:var(--color-lightGray);height:40px;width:40px}.ihabdevteam-core-scope .empty-state__title{color:var(--color-lightGray);margin:0}.ihabdevteam-core-scope .empty-state__message{color:var(--color-gray);margin:0}.ihabdevteam-core-scope .empty-state__hint{color:var(--color-lightGray);margin:0}.ihabdevteam-core-scope .empty-state__action{margin-top:var(--spacing-xs);min-width:120px}.ihabdevteam-core-scope .empty-state--compact{padding:var(--spacing-page) var(--spacing-m);padding-block:56px}";te(ov);const Zc=new Set,Xc=(()=>{try{const e=globalThis;return e.process!=null&&e.process.env?.NODE_ENV!=="production"}catch{return!1}})();function Wn(e,...t){!Xc||Zc.has(e)||(Zc.add(e),console.warn(...t))}/**
12
12
  * @license lucide-react v1.38.0 - ISC
13
13
  *
14
14
  * This source code is licensed under the ISC license.
@@ -1333,7 +1333,7 @@ export declare function copyText(text: string): Promise<boolean>;
1333
1333
  *
1334
1334
  * 값은 손으로 적고 `test/coreVersion.test.ts` 가 package.json 과 어긋나면 운다.
1335
1335
  */
1336
- export declare const CORE_VERSION = "0.106.0";
1336
+ export declare const CORE_VERSION = "0.107.0";
1337
1337
 
1338
1338
  /** @public */
1339
1339
  declare const coreDefault: Record<string, unknown>;
@@ -3635,8 +3635,8 @@
3635
3635
  "title": "Hearing by noise condition",
3636
3636
  "heard": "Heard",
3637
3637
  "basis": "All in-person sessions · {{n}} items",
3638
- "condition": "Noise {{noise}}% · Playback {{volume}}%",
3639
- "limit": "Heard up to: noise {{noise}}% · playback {{volume}}%",
3638
+ "condition": "Noise {{noise}}% · Volume {{volume}}%",
3639
+ "limit": "Heard up to: noise {{noise}}% · volume {{volume}}%",
3640
3640
  "noLimit": "No condition heard above {{pct}}% yet",
3641
3641
  "empty": "No records with noise settings yet"
3642
3642
  },
@@ -46,4 +46,4 @@
46
46
  *
47
47
  * 값은 손으로 적고 `test/coreVersion.test.ts` 가 package.json 과 어긋나면 운다.
48
48
  */
49
- export declare const CORE_VERSION = "0.106.0";
49
+ export declare const CORE_VERSION = "0.107.0";
@@ -46,4 +46,4 @@
46
46
  *
47
47
  * 값은 손으로 적고 `test/coreVersion.test.ts` 가 package.json 과 어긋나면 운다.
48
48
  */
49
- export const CORE_VERSION = '0.106.0';
49
+ export const CORE_VERSION = '0.107.0';