@@ -138,7 +138,8 @@ async function generateIndex(toolsIndex, lang) {
138138
139139 let categoryLinks = '' ;
140140 categories . forEach ( cat => {
141- categoryLinks += `<a href="${ cat . slug [ lang ] } .html" class="btn btn-outline-primary btn-sm">${ cat . icon } ${ cat . name [ lang ] } </a>\n ` ;
141+ const catSlug = typeof cat . slug === 'string' ? cat . slug : cat . slug [ lang ] ;
142+ categoryLinks += `<a href="${ catSlug } .html" class="btn btn-outline-primary btn-sm">${ cat . icon } ${ cat . name [ lang ] } </a>\n ` ;
142143 } ) ;
143144
144145 // Group tools by category (use translated tools)
@@ -298,17 +299,14 @@ async function generateTools(toolsIndex, lang) {
298299 const baseTemplate = await fs . readFile ( baseTemplatePath , 'utf8' ) ;
299300 const translations = await loadTranslations ( lang ) ;
300301
301- // Load audience mapping
302- const audienceMappingPath = path . join ( dataDir , 'audience-mapping.json' ) ;
303- const audienceMapping = JSON . parse ( await fs . readFile ( audienceMappingPath , 'utf8' ) ) ;
304-
305302 // Load audiences from fasttools-data.json
306303 const fasttoolsData = JSON . parse ( await fs . readFile ( toolsIndexPath , 'utf8' ) ) ;
307304 const categories = fasttoolsData . audiences . map ( aud => ( {
308305 id : aud . id ,
309306 slug : aud . slug ,
310307 icon : aud . icon ,
311- name : aud . name
308+ name : aud . name ,
309+ tools : aud . tools
312310 } ) ) ;
313311
314312 for ( const tool of toolsIndex ) {
@@ -355,9 +353,9 @@ async function generateTools(toolsIndex, lang) {
355353 // Generate category badges
356354 let categoryBadges = '' ;
357355 const toolCategories = [ ] ;
358- for ( const [ catId , toolIds ] of Object . entries ( audienceMapping ) ) {
359- if ( toolIds . includes ( tool . id ) ) {
360- toolCategories . push ( catId ) ;
356+ for ( const cat of categories ) {
357+ if ( cat . tools . includes ( tool . id ) ) {
358+ toolCategories . push ( cat . id ) ;
361359 }
362360 }
363361
@@ -367,7 +365,8 @@ async function generateTools(toolsIndex, lang) {
367365 toolCategories . forEach ( ( catId , index ) => {
368366 const cat = categories . find ( c => c . id === catId ) ;
369367 if ( cat ) {
370- const catUrl = lang === siteConfig . defaultLanguage ? `/${ cat . slug [ lang ] } .html` : `/${ lang } /${ cat . slug [ lang ] } .html` ;
368+ const catSlug = typeof cat . slug === 'string' ? cat . slug : cat . slug [ lang ] ;
369+ const catUrl = lang === siteConfig . defaultLanguage ? `/${ catSlug } .html` : `/${ lang } /${ catSlug } .html` ;
371370 categoryBadges += `<a href="${ catUrl } " class="badge bg-primary text-decoration-none">${ cat . icon } ${ cat . name [ lang ] } </a>` ;
372371 if ( index < toolCategories . length - 1 ) categoryBadges += ' ' ;
373372 }
@@ -387,7 +386,8 @@ async function generateTools(toolsIndex, lang) {
387386 toolCategories . forEach ( ( catId , index ) => {
388387 const cat = categories . find ( c => c . id === catId ) ;
389388 if ( cat ) {
390- const catUrl = lang === siteConfig . defaultLanguage ? `https://${ siteConfig . domain } /${ cat . slug [ lang ] } .html` : `https://${ siteConfig . domain } /${ lang } /${ cat . slug [ lang ] } .html` ;
389+ const catSlug = typeof cat . slug === 'string' ? cat . slug : cat . slug [ lang ] ;
390+ const catUrl = lang === siteConfig . defaultLanguage ? `https://${ siteConfig . domain } /${ catSlug } .html` : `https://${ siteConfig . domain } /${ lang } /${ catSlug } .html` ;
391391 breadcrumbItems . push ( {
392392 "@type" : "ListItem" ,
393393 "position" : index + 2 ,
@@ -467,9 +467,10 @@ async function generateSitemap(toolsIndex) {
467467
468468 categories . forEach ( cat => {
469469 siteConfig . languages . forEach ( lang => {
470+ const catSlug = typeof cat . slug === 'string' ? cat . slug : cat . slug [ lang ] ;
470471 const url = lang === siteConfig . defaultLanguage
471- ? `${ baseUrl } /${ cat . slug [ lang ] } .html`
472- : `${ baseUrl } /${ lang } /${ cat . slug [ lang ] } .html` ;
472+ ? `${ baseUrl } /${ catSlug } .html`
473+ : `${ baseUrl } /${ lang } /${ catSlug } .html` ;
473474
474475 xml += ` <url>\n` ;
475476 xml += ` <loc>${ url } </loc>\n` ;
@@ -479,9 +480,10 @@ async function generateSitemap(toolsIndex) {
479480
480481 // Add xhtml:link for alternate languages
481482 siteConfig . languages . forEach ( altLang => {
483+ const altCatSlug = typeof cat . slug === 'string' ? cat . slug : cat . slug [ altLang ] ;
482484 const altUrl = altLang === siteConfig . defaultLanguage
483- ? `${ baseUrl } /${ cat . slug [ altLang ] } .html`
484- : `${ baseUrl } /${ altLang } /${ cat . slug [ altLang ] } .html` ;
485+ ? `${ baseUrl } /${ altCatSlug } .html`
486+ : `${ baseUrl } /${ altLang } /${ altCatSlug } .html` ;
485487 xml += ` <xhtml:link rel="alternate" hreflang="${ altLang } " href="${ altUrl } "/>\n` ;
486488 } ) ;
487489
0 commit comments