Sue Frost
Giga Guru

I'm using the KB Article Page widget to display a specific KB article on my portal. That works really well until I need to display the French version of the article for users who have their language preference set to the French.

I found a solution by cloning the existing widget and adding some custom code. The code takes the sys_id passed in by the HTML page and the user's language setting.

It first looks for a published, translated version of the specified article with the matching language. If it finds that - it uses it. If there is no translated, published version, it uses the selected English article. If the user language is English, then the selected article is used. I believe this covers all possible scenarios.

 

var t = data;
data.kb_knowledge_page = $sp.getDisplayValue("kb_knowledge_page") || "kb_view";

//CUSTOM CODE
data.language = gs.getUser().getLanguage();  //get user language

var articleGR = GlideRecord("kb_knowledge");

if(data.language == 'fq'){
	
	//look for French version - must be published & lang = French
	articleGR.addQuery('parent', $sp.getParameter('sys_id'));
	articleGR.addQuery('workflow_state', 'published');
	articleGR.addQuery('language', 'fq');
	articleGR.query();
	
	if(articleGR.next()){	
		//got a French version - use that
		articleGR.get(articleGR.sys_id);		
		
	} else {
			//in case there's no French, use the English article
			articleGR.get($sp.getParameter('sys_id'));		
	}
} else {
		//get English article
		articleGR.get($sp.getParameter('sys_id'));
	}
//END CUSTOM CODE


var recordIsValid = articleGR.isValidRecord();
var canReadArticle = articleGR.canRead();
t.isvalid = recordIsValid && canReadArticle;

 

Hopefully someone will find this useful.

 

Version history
Last update:
‎07-12-2018 11:04 AM
Updated by: