# File languages-statistics.rb, line 419
        def print()
                total_number_of_articles = 0
                total_number_of_pages = 0
                total_number_of_edits = 0
                total_number_of_administrators = 0
                total_number_of_users = 0
                total_number_of_active_users = 0
                total_number_of_files = 0
                number_of_languages = @language_entries.values.size
                sorted_language_entries = @language_entries.values.sort.reverse
                file = File.new(@file_name, 'w')
                date_time_format = DateTimeFormat.new
                date_time_format.set_date_time(@as_of)
                file.puts @resource.page_header.
                                                sub('${year}', date_time_format.year).
                                                sub('${month}', date_time_format.month.to_i.to_s).
                                                sub('${day}', date_time_format.day.to_i.to_s).
                                                sub('${hour}', date_time_format.hour).
                                                sub('${minute}', date_time_format.minute).
                                                sub('${number.of.languages}', number_of_languages.to_s)
                table_infos = @resource.table_Infos.clone()
                number_format = NumberFormat.new
                rank = 0
                previous_number_of_articles = 0
                same_rank = 0
                is_printing = false
                error_messages = Array.new
                sorted_language_entries.each do |language_entry|
                        table_infos.each do |table_info|
                                if language_entry.number_of_articles.to_i >= table_info.or_more then
                                        if table_info.header_is_not_printed then
                                                if is_printing then
                                                        file.puts '|}'
                                                        file.puts
                                                else
                                                        is_printing = true
                                                end
                                                file.puts table_info.label
                                                file.puts @resource.table_header.rstrip
                                                table_info.header_is_not_printed = false
                                        end
                                        break
                                end
                        end
                        if @resource.languages.has_key?(language_entry.code) then
                                language_of_resource = @resource.languages.fetch(language_entry.code)
                                language_entry.description = language_of_resource.description
                                language_entry.article_of_wiki = language_of_resource.article_of_wiki
                                language_entry.english_description = language_of_resource.english_description
                                language_entry.score = language_of_resource.score
                        else
                                language_entry.description = ''
                                language_entry.article_of_wiki = nil
                                language_entry.english_description = ''
                                language_entry.score = ''
                        end
                        if rank == 0 then
                                rank += 1
                                same_rank = 1
                        elsif language_entry.number_of_articles.to_i < previous_number_of_articles.to_i then
                                rank += same_rank
                                same_rank = 1
                        else
                                same_rank += 1
                        end
                        previous_number_of_articles = language_entry.number_of_articles.to_i
                        file.puts '|-'
                        file.puts '| ' + @resource.table_column_attributes[0] + rank.to_s
                        description_text = language_entry.description
                        if language_entry.article_of_wiki != nil then
                                description_text += ' - [[' + language_entry.article_of_wiki +
                                                                '|' + @resource.caption_of_article_of_wiki + ']]'
                        end
                        file.puts '| ' + @resource.table_column_attributes[1] + description_text
                        file.puts '| ' + @resource.table_column_attributes[2] + language_entry.english_description
                        if language_entry.code.eql?(@config.target_language) then
                                wiki_main_page_link = @resource.target_wiki_main_page
                        else
                                wiki_main_page_link = ':' + language_entry.code + ':'
                        end
                        file.puts '| ' + @resource.table_column_attributes[3] +
                                '[[' + wiki_main_page_link + '|' + language_entry.code + ']]'
                        file.puts '| ' + @resource.table_column_attributes[4] +
                                '[{{fullurl:' + language_entry.code + ':Special:Statistics|action=raw}} \'\'\'' +
                                number_format.format(language_entry.number_of_articles) +'\'\'\']'
                        file.puts '| ' + @resource.table_column_attributes[5] +
                                number_format.format(language_entry.number_of_pages)
                        file.puts '| ' + @resource.table_column_attributes[6] +
                                '[[:' + language_entry.code + ':Special:Statistics|' + 
                                number_format.format(language_entry.number_of_edits) + ']]'
                        file.puts '| ' + @resource.table_column_attributes[7] +
                                '[[:' + language_entry.code + ':Special:Listadmins|' + 
                                number_format.format(language_entry.number_of_administrators) + ']]'
                        file.puts '| ' + @resource.table_column_attributes[8] +
                                '[[:' + language_entry.code + ':Special:Listusers|' + 
                                number_format.format(language_entry.number_of_users) + ']]'
                        file.puts '| ' + @resource.table_column_attributes[9] +
                                '[[:' + language_entry.code + ':Special:Statistics|' + 
                                number_format.format(language_entry.number_of_active_users) + ']]'
                        file.puts '| ' + @resource.table_column_attributes[10] +
                                '[[:' + language_entry.code + ':Special:ListFiles|' + 
                                number_format.format(language_entry.number_of_files) + ']]'
                        file.puts '| ' + @resource.table_column_attributes[11] +
                                (language_entry.number_of_articles.to_i >=
                                        LanguageEntry.minimum_number_of_articles_for_calculating_depth ?
                                                language_entry.depth.to_s : ' - ')
                        file.puts '| ' + @resource.table_column_attributes[12] + language_entry.score
                        total_number_of_articles +=
                                total_integer_value(language_entry.number_of_articles,
                                        '純記事数', language_entry, error_messages)
                        total_number_of_pages +=
                                total_integer_value(language_entry.number_of_pages,
                                        '総項目数', language_entry, error_messages)
                        total_number_of_edits +=
                                total_integer_value(language_entry.number_of_edits,
                                        '編集数', language_entry, error_messages)
                        total_number_of_administrators +=
                                total_integer_value(language_entry.number_of_administrators,
                                        '管理者数', language_entry, error_messages)
                        total_number_of_users +=
                                total_integer_value(language_entry.number_of_users,
                                        '登録者数', language_entry, error_messages)
                        total_number_of_active_users +=
                                total_integer_value(language_entry.number_of_active_users,
                                        '活動中の登録者数', language_entry, error_messages)
                        total_number_of_files +=
                                total_integer_value(language_entry.number_of_files,
                                        'ファイル数', language_entry, error_messages)
                end
                file.puts '|}'
                file.puts
                file.puts @resource.summary_table_header
                file.puts '|-'
                file.puts '| \'\'\'' + number_of_languages.to_s + '\'\'\''
                file.puts '| \'\'\'' + number_format.format(total_number_of_articles) + '\'\'\''
                file.puts '| \'\'\'' + number_format.format(total_number_of_pages) + '\'\'\''
                file.puts '| \'\'\'' + number_format.format(total_number_of_edits) + '\'\'\''
                file.puts '| \'\'\'' + number_format.format(total_number_of_administrators) + '\'\'\''
                file.puts '| \'\'\'' + number_format.format(total_number_of_users) + '\'\'\''
                file.puts '| \'\'\'' + number_format.format(total_number_of_active_users) + '\'\'\''
                file.puts '| \'\'\'' + number_format.format(total_number_of_files) + '\'\'\''
                file.puts '|}'
                if error_messages.size > 0 then
                        file.puts
                        message = '一部のウィキペディアの統計情報で、マイナスの値が返されてきたものが'
                        file.puts '(注記) ' + message + 'あった。'
                        @logger.log(message + 'ありました。')
                        message = '詳細は次のとおり。'
                        file.puts message
                        @logger.log(message)
                        error_messages.each do |error_message|
                                message = '* ' + error_message
                                file.puts message
                                @logger.log(message)
                        end
                end
                file.puts @resource.footer
                file.flush
                file.close
        end