Welcome to Community Week 2025! Join us to learn, connect, and be recognized as we celebrate the spirit of Community and the power of AI. Get the details  

Search KEY field on sys_ui_message table

PumpWerks
Tera Expert

There was an issue with Localization on a clients instance. My current task is to search the KEY field on the sys_ui_message table to find text that IS NOT in English (in this case Spanish, German, or Dutch) when the LANGUAGE field  on the sys_ui_message table is set to English.  

 

There are over 144,000 records, and I'd rather not do it manually if there is a way to filter the KEY field.  I can't figure out any way to search just the KEY field for non-English text when the LANGUAGE field is set to English.

 

Is there a way to do this?

 

PumpWerks_0-1680549058804.png

 

Thank you in advance!

 

Dave

1 REPLY 1

Punit S
Giga Guru

Yes, there is a way to search the KEY field on the sys_ui_message table to find text that is not in English when the LANGUAGE field is set to English.

One way to do this is to use a script that queries the sys_ui_message table and filters the results based on the language and content of the KEY field. Here's an example script that you could use:

 

// Set the language to filter by
var language = 'en'; // English

// Query the sys_ui_message table for records with the specified language
var gr = new GlideRecord('sys_ui_message');
gr.addQuery('language', '!=', language);
gr.query();

// Loop through the results and check the KEY field for non-English text
while (gr.next()) {
  var key = gr.getValue('key');
  var message = gr.getValue('message');

  // Check if the key or message contains non-English text
  if (!isEnglish(key) || !isEnglish(message)) {
    // Do something with the record, such as logging it or updating it
    gs.log('Found non-English text in record ' + gr.getUniqueValue());
  }
}

// Function to check if text is in English
function isEnglish(text) {
  // TODO: Implement a language detection algorithm to check if text is in English
  return true;
}

This script queries the sys_ui_message table for records with a language other than English and loops through the results, checking the KEY field and MESSAGE field for non-English text. The  isEnglish function is a placeholder for a language detection algorithm that you would need to implement to check if the text is in English.

You could run this script in the background using a scheduled job, or you could run it on demand from a script include or script action. Note that running this script on a large table with over 144,000 records could take some time, so you may want to test it on a smaller subset of records first.

 

Please mark my answer correct/helpful in case it adds value and moves you a step closer to your desired ServiceNow solution goal. 

Thanks,
Punit