docs: protected void addStringsForTopic(final POBuildData buildData, final SpecTopic specTopic,
              final Map<String, TranslationDetails> translations, final List<String> ignoredSourceStrings) throws BuildProcessingException {
          if (buildData.getTranslationMap().containsKey(specTopic.getDBId().toString())) {
              final Map<String, TranslationDetails> translatedTopicStrings = buildData.getTranslationMap().get(specTopic.getDBId().toString());
  
              for (final Map.Entry<String, TranslationDetails> entry : translatedTopicStrings.entrySet()) {
                  if (ignoredSourceStrings != null && ignoredSourceStrings.contains(entry.getKey())) {
                      continue;
                  } else {
                      final String cleanedOriginalString = cleanForPublican(buildData, specTopic, entry.getKey());
                      if (entry.getValue() == null) {
                          translations.put(cleanedOriginalString, null);
                      } else {
                          final String cleanedTranslationString = cleanForPublican(buildData, specTopic, entry.getValue().getTranslation());
                          translations.put(cleanedOriginalString, new TranslationDetails(cleanedTranslationString,
                                  entry.getValue().isFuzzy(), entry.getValue().getTagName()));
                      }
                  }
              }
          }
  
          // Add additional content
          if (DocBookXMLPreProcessor.shouldAddAdditionalInfo(buildData, specTopic)) {
              // Add the report a bug link
              if (buildData.getBuildOptions().getInsertBugLinks() && specTopic.getTopicType() == TopicType.NORMAL) {
                  processPOTopicBugLink(buildData, specTopic, translations);
              }
  
              // Add editor links
              if (buildData.getBuildOptions().getInsertEditorLinks() && specTopic.getTopicType() != TopicType.AUTHOR_GROUP) {
                  processPOTopicEditorLink(buildData, specTopic, translations);
              }
          }
  
          // Add any injection strings from the content spec
          processPOTopicInjections(buildData, specTopic, translations);
  
          // Add the keyword source strings (Note: These won't ever be translated)
          if (specTopic.getTopicType() != TopicType.INITIAL_CONTENT) {
              final CollectionWrapper<TagWrapper> tags = specTopic.getTopic().getTags();
              final List<Integer> seoCategoryIds = buildData.getServerSettings().getSEOCategoryIds();
  
              if (seoCategoryIds != null && !seoCategoryIds.isEmpty() && tags != null && tags.getItems() != null && tags.getItems().size() > 0) {
                  final List<TagWrapper> tagItems = tags.getItems();
                  for (final TagWrapper tag : tagItems) {
                      if (tag.getName() == null || tag.getName().isEmpty()) continue;
  
                      if (tag.containedInCategories(seoCategoryIds)) {
                          translations.put(tag.getName(), new TranslationDetails(null, false, "keyword"));
                      }
                  }
              }
          }
      }