# STB File Multilanguage Full-Mesh Consistency Checker

September 20, 2018 By Daiyuu Nobori

## Overview
stbchecker is a utility to check the consistency between existing `*.stb` files (string resources) in the specified directory.

- Works on Windows, Linux, macOS with .NET Core 2.1.
- Written in C#.
- Easy to use.


When modifying or adding any stb files, you have to check the consistency between all existing `*.stb` files. If there are any error, the SoftEther VPN programs may fail or crash on runtime.


You must not publish any build which has failed to pass stbchecker.


## Usage
### 1. Install .NET Core 2.1
https://www.microsoft.com/net/download/dotnet-core/2.1


#### Option: Use Visual Studio 2017 on Windows
If you are using Visual Studio 2017 on Windows, you can open the `stbchecker.sln` file instead. With Visual Studio 2017 you do not need using .NET Core 2.1 command-line utility.

### 2. Go to the `developer_tools/stbchcker` directory
```
$ cd developer_tools/stbchcker/
```

### 3. Run stbchecker
```
$ dotnet run [hamcore_dir]
```
You need to specify the `src/bin/hamcore` directory of the SoftEther VPN repository. The `hamcore` directory has multiple `*.stb` files.


### 4. Show the result
#### In error cases
Errors as following will be displayed, and the program returns `non-zero` values as the exit code.

```
Comparing 'strtable_ko.stb' to 'strtable_cn.stb'...
File2: Error: Missing 'HUB_AO_DenyAllRadiusLoginWithNoVlanAssign'
File2: Error: Missing 'HUB_AO_UseHubNameAsDhcpUserClassOption'
File2: Error: Missing 'HUB_AO_UseHubNameAsRadiusNasId'
File2: Error: Missing 'CM_VLAN_REINSTALL_MSG'
--- Results ---
ERROR: There are 123 errors on multilanguage stb files. Please kindly correct them before submitting us Pull Requests.
```


#### In successful cases
The following message will be displayed, and the program returns `0` as the exit code.


```
OK: Excellent! There are no errors between multilanguage stb files.
```