To see strange behavior do this: 1) Add new language at page /administration/languages.aspx. 2) Edit just created language and uncheck option published. 3) After this you can`t see your language in /administration/languages.aspx list but this language exist in base.
I think that it will be right to show unpublished languages in languages list. Also there is Published column witch determinate language status.
ALTER PROCEDURE [dbo].[Nop_LanguageLoadAll] @ShowHidden bit = 0 AS BEGIN SET NOCOUNT ON SELECT * FROM [Nop_Language] WHERE (Published = 1 or @ShowHidden = 1) order by DisplayOrder END
so that i can`t see unpublished languages. Where this functionality use? For what declared @showhidden?