Concatenating translatable strings is not allowed, use placeholders instead and only one string literal The following code:

$report .= '&lt;p&gt;' . t('&lt;strong&gt;%percentage&lt;/strong&gt; of &lt;strong&gt;&lt;em&gt;'.$node_type_get_types[$type]-&gt;name.'&lt;/em&gt;&lt;/strong&gt; completed.', array('%percentage' =&gt; $percentage)) . ' ' . $count . '&lt;/p&gt;';


is inside of iteration, because I need to make the same calculations and collect all the results and output all in one string.

Drupal.org's automated testing complains about the above part:

Concatenating translatable strings is not allowed, use placeholders instead and only one string literal

I don't have any idea how to make this correct.
It means you have to use a placeholder, in the same way you used the %percentage placeholder.

$report .= '&lt;p&gt;' . t('&lt;strong&gt;%percentage&lt;/strong&gt; of &lt;strong&gt;&lt;em&gt;@content-type&lt;/em&gt;&lt;/strong&gt; completed. %count', array('%percentage' =&gt; $percentage, '@content-type' =&gt; $node_type_get_types[$type]-&gt;name, '%count' =&gt; $count)) . '&lt;/p&gt;';


I used a @-placeholder for the content type, in the same way done from node_add().

For a list of the placeholder types used from Drupal, see format_string(). The documentation for t() explain in details why concatenating is not possible in translatable strings.