UNPKG

nino-validator

Version:

A lightweight npm package for validating UK National Insurance Numbers (NINO)

127 lines (109 loc) • 4.31 kB
/** * Greek Internationalization Demonstration * * This script demonstrates the Greek language support added to the NINO Validator. * It shows side-by-side comparison of English and Greek error messages. */ const { validateNINOWithDetails, setLanguage, getCurrentLanguage, getSupportedLanguages, isLanguageSupported, detectLanguage, initializeI18n, } = require('../index.js'); console.log('šŸ‡¬šŸ‡§šŸ‡¬šŸ‡· NINO Validator Greek Internationalization Demo'); console.log('='.repeat(60)); // Show supported languages console.log('\nšŸ“‹ Supported Languages:'); const languages = getSupportedLanguages(); Object.entries(languages).forEach(([code, name]) => { console.log(` ${code}: ${name}`); }); // Demonstration test cases const testCases = [ { input: null, description: 'Null input' }, { input: 123, description: 'Invalid type (number)' }, { input: '', description: 'Empty string' }, { input: 'AB123', description: 'Too short' }, { input: 'AB1234567890', description: 'Too long' }, { input: 'AB123456@', description: 'Invalid characters' }, { input: 'DB123456C', description: 'Invalid first letter' }, { input: 'AD123456C', description: 'Invalid second letter' }, { input: 'AB123456D', description: 'Invalid suffix' }, { input: 'BG123456C', description: 'Invalid prefix' }, { input: 'AB111111C', description: 'Invalid number pattern' }, { input: 'AB 12 34 56 C', description: 'Spaces not allowed', options: { allowSpaces: false }, }, { input: 'AB123456', description: 'Missing required suffix', options: { requireSuffix: true }, }, ]; console.log('\nšŸ” Error Message Comparison:'); console.log('='.repeat(60)); testCases.forEach((testCase, index) => { console.log(`\n${index + 1}. ${testCase.description}`); console.log('Input:', testCase.input); console.log('-'.repeat(40)); // English version setLanguage('en'); const englishResult = validateNINOWithDetails( testCase.input, testCase.options ); console.log('šŸ‡¬šŸ‡§ English:'); console.log(` Error: ${englishResult.error}`); console.log(` Suggestion: ${englishResult.suggestion}`); console.log(` Code: ${englishResult.errorCode}`); // Greek version setLanguage('el'); const greekResult = validateNINOWithDetails(testCase.input, testCase.options); console.log('\nšŸ‡¬šŸ‡· Greek:'); console.log(` Error: ${greekResult.error}`); console.log(` Suggestion: ${greekResult.suggestion}`); console.log(` Code: ${greekResult.errorCode}`); // Verify error codes match if (englishResult.errorCode === greekResult.errorCode) { console.log('\nāœ… Error codes match across languages'); } else { console.log('\nāŒ Error code mismatch!'); } }); // Demonstrate language management features console.log('\n\nšŸ› ļø Language Management Features:'); console.log('='.repeat(60)); console.log('\nšŸ“ Current Language:'); console.log(`getCurrentLanguage(): ${getCurrentLanguage()}`); console.log('\nšŸ” Language Support Check:'); ['en', 'el', 'fr', 'de'].forEach((lang) => { const supported = isLanguageSupported(lang); const status = supported ? 'āœ…' : 'āŒ'; console.log(`${status} ${lang}: ${supported}`); }); console.log('\n🌐 Auto-Detection:'); const detected = detectLanguage(); console.log(`detectLanguage(): ${detected}`); console.log('\nāš™ļø Initialization:'); const initialized = initializeI18n({ autoDetect: true }); console.log(`initializeI18n({ autoDetect: true }): ${initialized}`); // Reset to English for clean finish setLanguage('en'); console.log('\n\nšŸŽ‰ Demo completed! Language reset to English.'); console.log('\nšŸ“š Usage Examples:'); console.log(' setLanguage("el"); // Switch to Greek'); console.log(' setLanguage("en"); // Switch to English'); console.log(' const result = validateNINOWithDetails("invalid");'); console.log(' console.log(result.error); // Localized error message'); console.log('\nšŸ”— For more information, see the README.md file.'); console.log( 'šŸ› Report issues: https://github.com/icodenet/nino-validator/issues' ); console.log( 'šŸ’¬ Discussions: https://github.com/icodenet/nino-validator/discussions' );