Skip to content

Commit

Permalink
add sha3 support, closes #3
Browse files Browse the repository at this point in the history
 * also improve file type detection

This is the "Optimized64" implementation from the Keccak Code Package.
The KCP is available from: https://github.com/gvanas/KeccakCodePackage
  • Loading branch information
gurnec committed Aug 15, 2016
1 parent c8c09a8 commit eb0ebc3
Show file tree
Hide file tree
Showing 23 changed files with 4,160 additions and 83 deletions.
14 changes: 1 addition & 13 deletions HashCheck.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,18 +27,6 @@ HANDLE g_hActCtx;
// Major and minor Windows version (declared as extern in globals.h)
UINT16 g_uWinVer;

// File extensions to associate with
static const LPCTSTR ASSOCIATIONS[] =
{
TEXT(".sfv"),
TEXT(".md4"),
TEXT(".md5"),
TEXT(".sha1"),
TEXT(".sha256"),
TEXT(".sha512"),
TEXT(".asc")
};

// Prototypes for the self-registration/install/uninstall helper functions
STDAPI DllRegisterServerEx( LPCTSTR );
HRESULT Install( BOOL, BOOL );
Expand Down Expand Up @@ -186,7 +174,7 @@ STDAPI DllRegisterServerEx( LPCTSTR lpszModuleName )
RegCloseKey(hKey);
} else return(SELFREG_E_CLASS);

// The actual association of .sfv/.md4/.md5/.sha1/.sha256/.sha512/.asc files with our program ID
// The actual association of .sfv/.md5/.sha1/.sha256/.sha512/.sha3-256/.sha3-512/.asc files with our program ID
// will be handled by DllInstall, not DllRegisterServer.

// Register approval
Expand Down
6 changes: 4 additions & 2 deletions HashCheck.rc
Original file line number Diff line number Diff line change
Expand Up @@ -131,8 +131,10 @@ IDD_OPTIONS DIALOGEX 10, 10, 200, 264
AUTOCHECKBOX "C&RC-32",IDC_OPT_CHK_CRC32, 13, 150, 54, 10, WS_TABSTOP
AUTOCHECKBOX "MD5",IDC_OPT_CHK_MD5, 13, 164, 54, 10, WS_TABSTOP
AUTOCHECKBOX "SHA-1",IDC_OPT_CHK_SHA1, 13, 178, 54, 10, WS_TABSTOP
AUTOCHECKBOX "SHA-256",IDC_OPT_CHK_SHA256, 100, 150, 54, 10, WS_TABSTOP
AUTOCHECKBOX "SHA-512",IDC_OPT_CHK_SHA512, 100, 164, 54, 10, WS_TABSTOP
AUTOCHECKBOX "SHA-256",IDC_OPT_CHK_SHA256, 73, 150, 54, 10, WS_TABSTOP
AUTOCHECKBOX "SHA-512",IDC_OPT_CHK_SHA512, 73, 164, 54, 10, WS_TABSTOP
AUTOCHECKBOX "SHA3-256",IDC_OPT_CHK_SHA3_256,133,150, 54, 10, WS_TABSTOP
AUTOCHECKBOX "SHA3-512",IDC_OPT_CHK_SHA3_512,133,164, 54, 10, WS_TABSTOP
GROUPBOX "", IDC_OPT_FONT, 7, 202, 186, 34, WS_GROUP
CTEXT "", IDC_OPT_FONT_PREVIEW, 13, 215, 100, 14, SS_CENTERIMAGE | SS_SUNKEN
PUSHBUTTON "", IDC_OPT_FONT_CHANGE, 117, 215, 70, 14, WS_TABSTOP
Expand Down
16 changes: 10 additions & 6 deletions HashCheck.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;__i386__;NDEBUG;_WINDOWS;_UNICODE;UNICODE;_USRDLL;_WIN32_WINNT=0x0600;SL_ENABLE_LGBLK;SL_SMBLK_SIZE=0x1000;BYTE_ORDER=LITTLE_ENDIAN;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN32;__i386__;NDEBUG;_WINDOWS;_UNICODE;UNICODE;_USRDLL;_WIN32_WINNT=0x0600;SL_ENABLE_LGBLK;SL_SMBLK_SIZE=0x1000;BYTE_ORDER=LITTLE_ENDIAN;KeccakP200_excluded;KeccakP400_excluded;KeccakP800_excluded;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
Expand All @@ -155,7 +155,7 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>_TIMED;WIN32;__i386__;NDEBUG;_WINDOWS;_UNICODE;UNICODE;_USRDLL;_WIN32_WINNT=0x0600;SL_ENABLE_LGBLK;SL_SMBLK_SIZE=0x1000;BYTE_ORDER=LITTLE_ENDIAN;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_TIMED;WIN32;__i386__;NDEBUG;_WINDOWS;_UNICODE;UNICODE;_USRDLL;_WIN32_WINNT=0x0600;SL_ENABLE_LGBLK;SL_SMBLK_SIZE=0x1000;BYTE_ORDER=LITTLE_ENDIAN;KeccakP200_excluded;KeccakP400_excluded;KeccakP800_excluded;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
Expand All @@ -179,7 +179,7 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN64;__amd64__;NDEBUG;_WINDOWS;_UNICODE;UNICODE;_USRDLL;_WIN32_WINNT=0x0600;SL_ENABLE_LGBLK;SL_SMBLK_SIZE=0x1000;BYTE_ORDER=LITTLE_ENDIAN;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN64;__amd64__;NDEBUG;_WINDOWS;_UNICODE;UNICODE;_USRDLL;_WIN32_WINNT=0x0600;SL_ENABLE_LGBLK;SL_SMBLK_SIZE=0x1000;BYTE_ORDER=LITTLE_ENDIAN;KeccakP200_excluded;KeccakP400_excluded;KeccakP800_excluded;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
Expand All @@ -203,7 +203,7 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>_TIMED;WIN64;__amd64__;NDEBUG;_WINDOWS;_UNICODE;UNICODE;_USRDLL;_WIN32_WINNT=0x0600;SL_ENABLE_LGBLK;SL_SMBLK_SIZE=0x1000;BYTE_ORDER=LITTLE_ENDIAN;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_TIMED;WIN64;__amd64__;NDEBUG;_WINDOWS;_UNICODE;UNICODE;_USRDLL;_WIN32_WINNT=0x0600;SL_ENABLE_LGBLK;SL_SMBLK_SIZE=0x1000;BYTE_ORDER=LITTLE_ENDIAN;KeccakP200_excluded;KeccakP400_excluded;KeccakP800_excluded;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
Expand All @@ -226,7 +226,7 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;__i386__;_DEBUG;_WINDOWS;_UNICODE;UNICODE;_USRDLL;_WIN32_WINNT=0x0600;SL_ENABLE_LGBLK;SL_SMBLK_SIZE=0x1000;BYTE_ORDER=LITTLE_ENDIAN;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN32;__i386__;_DEBUG;_WINDOWS;_UNICODE;UNICODE;_USRDLL;_WIN32_WINNT=0x0600;SL_ENABLE_LGBLK;SL_SMBLK_SIZE=0x1000;BYTE_ORDER=LITTLE_ENDIAN;KeccakP200_excluded;KeccakP400_excluded;KeccakP800_excluded;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
Expand All @@ -245,7 +245,7 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN64;__amd64__;_DEBUG;_WINDOWS;_UNICODE;UNICODE;_USRDLL;_WIN32_WINNT=0x0600;SL_ENABLE_LGBLK;SL_SMBLK_SIZE=0x1000;BYTE_ORDER=LITTLE_ENDIAN;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN64;__amd64__;_DEBUG;_WINDOWS;_UNICODE;UNICODE;_USRDLL;_WIN32_WINNT=0x0600;SL_ENABLE_LGBLK;SL_SMBLK_SIZE=0x1000;BYTE_ORDER=LITTLE_ENDIAN;KeccakP200_excluded;KeccakP400_excluded;KeccakP800_excluded;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
Expand Down Expand Up @@ -277,6 +277,9 @@
<ClCompile Include="libs\md5.c" />
<ClCompile Include="libs\sha1.c" />
<ClCompile Include="libs\sha2.c" />
<ClCompile Include="libs\sha3\KeccakHash.c" />
<ClCompile Include="libs\sha3\KeccakP-1600-opt64.c" />
<ClCompile Include="libs\sha3\KeccakSponge.c" />
<ClCompile Include="libs\SimpleList.c" />
<ClCompile Include="libs\SimpleString.c" />
<ClCompile Include="libs\WinHash.cpp" />
Expand All @@ -302,6 +305,7 @@
<ClInclude Include="HashCheckUI.h" />
<ClInclude Include="IsSSD.h" />
<ClInclude Include="libs\IsFontAvailable.h" />
<ClInclude Include="libs\sha3\KeccakHash.h" />
<ClInclude Include="libs\SimpleList.h" />
<ClInclude Include="libs\SimpleString.h" />
<ClInclude Include="libs\BitwiseIntrinsics.h" />
Expand Down
15 changes: 15 additions & 0 deletions HashCheck.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@
<Filter Include="Libraries">
<UniqueIdentifier>{3d06f958-2b36-4a2d-a5a9-c4e7445f5196}</UniqueIdentifier>
</Filter>
<Filter Include="Libraries\sha3">
<UniqueIdentifier>{10750838-6937-43da-bede-5de87aa2ff94}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="HashCheck.cpp">
Expand Down Expand Up @@ -84,6 +87,15 @@
<ClCompile Include="HashVerify.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="libs\sha3\KeccakHash.c">
<Filter>Libraries\sha3</Filter>
</ClCompile>
<ClCompile Include="libs\sha3\KeccakP-1600-opt64.c">
<Filter>Libraries\sha3</Filter>
</ClCompile>
<ClCompile Include="libs\sha3\KeccakSponge.c">
<Filter>Libraries\sha3</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="HashCheck.def">
Expand Down Expand Up @@ -157,6 +169,9 @@
<ClInclude Include="IsSSD.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="libs\sha3\KeccakHash.h">
<Filter>Libraries\sha3</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="HashCheck.rc">
Expand Down
8 changes: 5 additions & 3 deletions HashCheckResources.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,8 @@
#define IDC_OPT_CHK_SHA1 512
#define IDC_OPT_CHK_SHA256 513
#define IDC_OPT_CHK_SHA512 514
#define IDC_OPT_FONT 515
#define IDC_OPT_FONT_CHANGE 516
#define IDC_OPT_FONT_PREVIEW 517
#define IDC_OPT_CHK_SHA3_256 515
#define IDC_OPT_CHK_SHA3_512 516
#define IDC_OPT_FONT 517
#define IDC_OPT_FONT_CHANGE 518
#define IDC_OPT_FONT_PREVIEW 519
42 changes: 21 additions & 21 deletions HashCheckTranslations.rc
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ STRINGTABLE LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
IDS_HP_FIND_NOTFOUND "Text not found."
IDS_HP_SAVE "&Save..."
IDS_HP_OPTIONS "&Options"
IDS_HP_FILELABEL " File: " // should have the same width as "SHA-256: "; may translate "Name" if "File" is too long
IDS_HP_FILELABEL " File: " // should have the same width as "SHA3-256: "; may translate "Name" if "File" is too long

// Strings used exclusively in the HashVerify module
IDS_HV_LOADERROR_FMT "Cannot load ""%s""" // %s == name of the checksum file
Expand Down Expand Up @@ -92,7 +92,7 @@ STRINGTABLE LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL
IDS_HP_FIND_NOTFOUND "未找到文字。"
IDS_HP_SAVE "儲存(&S)..."
IDS_HP_OPTIONS "選項(&O)"
IDS_HP_FILELABEL " File: " // alternatively, "  檔案: "
IDS_HP_FILELABEL " File: " // alternatively, "  檔案: "

IDS_HV_LOADERROR_FMT "無法載入 ""%s"""
IDS_HV_SUMMARY "摘要"
Expand Down Expand Up @@ -150,7 +150,7 @@ STRINGTABLE LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
IDS_HP_FIND_NOTFOUND "未找到文本。"
IDS_HP_SAVE "保存(&S)..."
IDS_HP_OPTIONS "选项(&O)"
IDS_HP_FILELABEL " File: " // alternatively, "  文件: "
IDS_HP_FILELABEL " File: " // alternatively, "  文件: "

IDS_HV_LOADERROR_FMT "无法载入 ""%s"""
IDS_HV_SUMMARY "摘要"
Expand Down Expand Up @@ -208,7 +208,7 @@ STRINGTABLE LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
IDS_HP_FIND_NOTFOUND "Text nenalezen."
IDS_HP_SAVE "&Ulož..."
IDS_HP_OPTIONS "&Nastavení"
IDS_HP_FILELABEL " Soubor: "
IDS_HP_FILELABEL " Soubor: "

IDS_HV_LOADERROR_FMT "Nemohu načíst ""%s"""
IDS_HV_SUMMARY "Souhrn"
Expand Down Expand Up @@ -266,7 +266,7 @@ STRINGTABLE LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
IDS_HP_FIND_NOTFOUND "Text nicht gefunden."
IDS_HP_SAVE "&Speichern..."
IDS_HP_OPTIONS "&Optionen"
IDS_HP_FILELABEL " Datei: "
IDS_HP_FILELABEL " Datei: "

IDS_HV_LOADERROR_FMT "Kann ""%s"" nicht öffnen"
IDS_HV_SUMMARY "Report"
Expand Down Expand Up @@ -324,7 +324,7 @@ STRINGTABLE LANGUAGE LANG_GREEK, SUBLANG_DEFAULT
IDS_HP_FIND_NOTFOUND "Δεν βρέθηκε κείμενο."
IDS_HP_SAVE "&Αποθήκευση"
IDS_HP_OPTIONS "&Επιλογές"
IDS_HP_FILELABEL " Αρχείο: "
IDS_HP_FILELABEL " Αρχείο: "

IDS_HV_LOADERROR_FMT "Αδύνατο το φόρτωμα του «%s»"
IDS_HV_SUMMARY "Σύνοψη"
Expand Down Expand Up @@ -382,7 +382,7 @@ STRINGTABLE LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL
IDS_HP_FIND_NOTFOUND "Texto no encontrado."
IDS_HP_SAVE "&Guardar..."
IDS_HP_OPTIONS "&Opciones"
IDS_HP_FILELABEL " Nombre: "
IDS_HP_FILELABEL " Nombre: "

IDS_HV_LOADERROR_FMT "No se puede abrir ""%s"""
IDS_HV_SUMMARY "Resumen"
Expand Down Expand Up @@ -440,7 +440,7 @@ STRINGTABLE LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
IDS_HP_FIND_NOTFOUND "Texte non trouvé."
IDS_HP_SAVE "&Enregistrer"
IDS_HP_OPTIONS "&Options"
IDS_HP_FILELABEL " Nom: "
IDS_HP_FILELABEL " Nom: "

IDS_HV_LOADERROR_FMT "Impossible de charger ""%s"""
IDS_HV_SUMMARY "Résumé"
Expand Down Expand Up @@ -498,7 +498,7 @@ STRINGTABLE LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
IDS_HP_FIND_NOTFOUND "Testo non trovato."
IDS_HP_SAVE "&Salva..."
IDS_HP_OPTIONS "&Opzioni"
IDS_HP_FILELABEL " File: "
IDS_HP_FILELABEL " File: "

IDS_HV_LOADERROR_FMT "Impossibile caricare ""%s"""
IDS_HV_SUMMARY "Sommario"
Expand Down Expand Up @@ -556,7 +556,7 @@ STRINGTABLE LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
IDS_HP_FIND_NOTFOUND "指定したキーワードは見つかりません。"
IDS_HP_SAVE "保存(&S)..."
IDS_HP_OPTIONS "オプション(&O)"
IDS_HP_FILELABEL " File: " // alternatively, " ファイル: "
IDS_HP_FILELABEL " File: " // alternatively, " ファイル: "

IDS_HV_LOADERROR_FMT """%s"" の読み込みに失敗します"
IDS_HV_SUMMARY "概略"
Expand Down Expand Up @@ -614,7 +614,7 @@ STRINGTABLE LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT
IDS_HP_FIND_NOTFOUND "찾지 못했습니다."
IDS_HP_SAVE "저장(&S)..."
IDS_HP_OPTIONS "옵션(&O)"
IDS_HP_FILELABEL " File: "
IDS_HP_FILELABEL " File: "

IDS_HV_LOADERROR_FMT """%s"" 불러올 수 없음"
IDS_HV_SUMMARY "요약"
Expand Down Expand Up @@ -672,7 +672,7 @@ STRINGTABLE LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL
IDS_HP_FIND_NOTFOUND "Zoektekst niet gevonden."
IDS_HP_SAVE "Op&slaan..."
IDS_HP_OPTIONS "&Opties"
IDS_HP_FILELABEL " Naam: "
IDS_HP_FILELABEL " Naam: "

IDS_HV_LOADERROR_FMT "Kan ""%s"" niet openen"
IDS_HV_SUMMARY "Samenvatting"
Expand Down Expand Up @@ -730,7 +730,7 @@ STRINGTABLE LANGUAGE LANG_POLISH, SUBLANG_DEFAULT
IDS_HP_FIND_NOTFOUND "Tekst nieodnaleziony."
IDS_HP_SAVE "&Zapisz..."
IDS_HP_OPTIONS "&Opcje"
IDS_HP_FILELABEL " Plik: "
IDS_HP_FILELABEL " Plik: "

IDS_HV_LOADERROR_FMT "Nie mogę wczytać ""%s"""
IDS_HV_SUMMARY "Sumowanie"
Expand Down Expand Up @@ -788,7 +788,7 @@ STRINGTABLE LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN
IDS_HP_FIND_NOTFOUND "Texto náo encontrado."
IDS_HP_SAVE "&Salvar..."
IDS_HP_OPTIONS "&Opções"
IDS_HP_FILELABEL " Nome: "
IDS_HP_FILELABEL " Nome: "

IDS_HV_LOADERROR_FMT "Impossível carregar ""%s"""
IDS_HV_SUMMARY "Sumário"
Expand Down Expand Up @@ -846,7 +846,7 @@ STRINGTABLE LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE
IDS_HP_FIND_NOTFOUND "Texto não encontrado."
IDS_HP_SAVE "&Guardar..."
IDS_HP_OPTIONS "&Opções"
IDS_HP_FILELABEL " Nome: "
IDS_HP_FILELABEL " Nome: "

IDS_HV_LOADERROR_FMT "Impossível carregar ""%s"""
IDS_HV_SUMMARY "Summário"
Expand Down Expand Up @@ -904,7 +904,7 @@ STRINGTABLE LANGUAGE LANG_ROMANIAN, SUBLANG_DEFAULT
IDS_HP_FIND_NOTFOUND "Text negăsit."
IDS_HP_SAVE "&Salvare..."
IDS_HP_OPTIONS "Optiu&ni"
IDS_HP_FILELABEL " Fişier: "
IDS_HP_FILELABEL " Fişier: "

IDS_HV_LOADERROR_FMT "Nu pot încărca ""%s"""
IDS_HV_SUMMARY "Sumar"
Expand Down Expand Up @@ -962,7 +962,7 @@ STRINGTABLE LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
IDS_HP_FIND_NOTFOUND "Текст не найден."
IDS_HP_SAVE "&Сохранить..."
IDS_HP_OPTIONS "&Опции"
IDS_HP_FILELABEL " Файл: "
IDS_HP_FILELABEL " Файл: "

IDS_HV_LOADERROR_FMT "Невозможно открыть ""%s"""
IDS_HV_SUMMARY "Результаты"
Expand Down Expand Up @@ -1020,7 +1020,7 @@ STRINGTABLE LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL
IDS_HP_FIND_NOTFOUND "Sökord ej funnet."
IDS_HP_SAVE "&Spara..."
IDS_HP_OPTIONS "&Inställningar"
IDS_HP_FILELABEL " Fil: "
IDS_HP_FILELABEL " Fil: "

IDS_HV_LOADERROR_FMT "Kan ej ladda ""%s"""
IDS_HV_SUMMARY "Summering"
Expand Down Expand Up @@ -1078,7 +1078,7 @@ STRINGTABLE LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT
IDS_HP_FIND_NOTFOUND "Metin bulunamadı."
IDS_HP_SAVE "&Kaydet..."
IDS_HP_OPTIONS "&Özellikler"
IDS_HP_FILELABEL " Dosya: "
IDS_HP_FILELABEL " Dosya: "

IDS_HV_LOADERROR_FMT """%s"" açılamıyor"
IDS_HV_SUMMARY "Özet"
Expand Down Expand Up @@ -1136,7 +1136,7 @@ STRINGTABLE LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
IDS_HP_FIND_NOTFOUND "Текст не знайдений."
IDS_HP_SAVE "&Зберегти..."
IDS_HP_OPTIONS "&Опції"
IDS_HP_FILELABEL " Файл: "
IDS_HP_FILELABEL " Файл: "

IDS_HV_LOADERROR_FMT "Неможливо відкрити ""%s"""
IDS_HV_SUMMARY "Результати"
Expand Down Expand Up @@ -1194,7 +1194,7 @@ STRINGTABLE LANGUAGE LANG_CATALAN, SUBLANG_CATALAN_CATALAN
IDS_HP_FIND_NOTFOUND "No s'ha trobat el text."
IDS_HP_SAVE "&Desa..."
IDS_HP_OPTIONS "&Opcions"
IDS_HP_FILELABEL " Fitxer: "
IDS_HP_FILELABEL " Fitxer: "

IDS_HV_LOADERROR_FMT "No es pot carregar ""%s"""
IDS_HV_SUMMARY "Resum"
Expand Down
Loading

0 comments on commit eb0ebc3

Please sign in to comment.