mirror of
https://github.com/P3D-Legacy/P3D-Legacy.git
synced 2025-09-14 05:28:34 +02:00
* Skin genders in the new game intro now grab the correct localization string * Badges rotate around the center of their texture's width and height, which fixes the bug where the badges would rotate off-center when the texture resolution was different. * The selected button background color in the GameMode selection screen is now light and the unselected buttons are dark instead of the other way around.
178 lines
7.1 KiB
VB.net
178 lines
7.1 KiB
VB.net
Public Class Localization
|
|
|
|
Public Shared LanguageSuffix As String = "en"
|
|
Public Shared LocalizationTokens As Dictionary(Of String, Token) = New Dictionary(Of String, Token)
|
|
|
|
Public Shared Sub Load(ByVal LanguageSuffix As String)
|
|
LocalizationTokens.Clear()
|
|
|
|
Localization.LanguageSuffix = LanguageSuffix
|
|
|
|
Logger.Debug("Loaded language [" & LanguageSuffix & "]")
|
|
|
|
LoadTokenFile(GameMode.DefaultLocalizationsPath, False)
|
|
|
|
If GameModeManager.GameModeCount > 0 Then
|
|
Dim GameModeLocalizationPath As String = GameModeManager.ActiveGameMode.LocalizationsPath
|
|
If GameModeLocalizationPath <> GameMode.DefaultLocalizationsPath Then
|
|
LoadTokenFile(GameModeLocalizationPath, True)
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Public Shared Sub ReloadGameModeTokens()
|
|
For i = 0 To LocalizationTokens.Count - 1
|
|
If i <= LocalizationTokens.Count - 1 Then
|
|
Dim Token As Token = LocalizationTokens.Values(i)
|
|
|
|
If Token.IsGameModeToken = True Then
|
|
LocalizationTokens.Remove(LocalizationTokens.Keys(i))
|
|
i -= 1
|
|
End If
|
|
End If
|
|
Next
|
|
|
|
If GameModeManager.GameModeCount > 0 Then
|
|
Dim GameModeLocalizationPath As String = GameModeManager.ActiveGameMode.LocalizationsPath
|
|
If GameModeLocalizationPath <> GameMode.DefaultLocalizationsPath Then
|
|
LoadTokenFile(GameModeLocalizationPath, True)
|
|
End If
|
|
End If
|
|
|
|
Logger.Debug("---Reloaded GameMode Tokens---")
|
|
End Sub
|
|
|
|
Private Shared Sub LoadTokenFile(ByVal path As String, ByVal IsGameModeFile As Boolean)
|
|
Dim fullpath As String = GameController.GamePath & path
|
|
Dim tokenFullpath As String = fullpath & "Tokens_" & LanguageSuffix & ".dat"
|
|
|
|
Logger.Debug("Token filepath: " & tokenFullpath)
|
|
|
|
If System.IO.Directory.GetFiles(fullpath).Count > 0 Then
|
|
If System.IO.File.Exists(tokenFullpath) = False Then
|
|
Logger.Debug("Did NOT find token file for suffix: " & LanguageSuffix)
|
|
LanguageSuffix = "en"
|
|
End If
|
|
|
|
If System.IO.File.Exists(tokenFullpath) = True Then
|
|
Logger.Debug("Found token file for suffix: " & LanguageSuffix)
|
|
Dim TokensFile() As String = System.IO.File.ReadAllLines(fullpath & "Tokens_" & LanguageSuffix & ".dat")
|
|
Dim splitIdx As Integer = 0
|
|
For Each TokenLine As String In TokensFile
|
|
If TokenLine.Contains(",") = True Then
|
|
splitIdx = TokenLine.IndexOf(",")
|
|
|
|
Dim TokenName As String = TokenLine.Substring(0, splitIdx)
|
|
Dim TokenContent As String = ""
|
|
If TokenLine.Length > TokenName.Length + 1 Then
|
|
TokenContent = TokenLine.Substring(splitIdx + 1, TokenLine.Length - splitIdx - 1)
|
|
End If
|
|
|
|
If LocalizationTokens.ContainsKey(TokenName) = False Then
|
|
LocalizationTokens.Add(TokenName, New Token(TokenContent, LanguageSuffix, IsGameModeFile))
|
|
Else
|
|
LocalizationTokens.Remove(TokenName)
|
|
LocalizationTokens.Add(TokenName, New Token(TokenContent, LanguageSuffix, IsGameModeFile))
|
|
End If
|
|
End If
|
|
Next
|
|
End If
|
|
|
|
If Not LanguageSuffix = "en" Then
|
|
If System.IO.File.Exists(fullpath & "Tokens_en.dat") Then
|
|
Dim FallbackTokensFile() As String = System.IO.File.ReadAllLines(fullpath & "Tokens_en.dat")
|
|
Dim splitIdx As Integer = 0
|
|
For Each TokenLine As String In FallbackTokensFile
|
|
If TokenLine.Contains(",") = True Then
|
|
splitIdx = TokenLine.IndexOf(",")
|
|
|
|
Dim TokenName As String = TokenLine.Substring(0, splitIdx)
|
|
Dim TokenContent As String = ""
|
|
If TokenLine.Length > TokenName.Length + 1 Then
|
|
TokenContent = TokenLine.Substring(splitIdx + 1, TokenLine.Length - splitIdx - 1)
|
|
End If
|
|
|
|
If LocalizationTokens.ContainsKey(TokenName) = False Then
|
|
LocalizationTokens.Add(TokenName, New Token(TokenContent, "en", IsGameModeFile))
|
|
Else
|
|
LocalizationTokens.Remove(TokenName)
|
|
LocalizationTokens.Add(TokenName, New Token(TokenContent, "en", IsGameModeFile))
|
|
End If
|
|
End If
|
|
Next
|
|
End If
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Public Shared Function GetString(ByVal s As String, Optional ByVal DefaultValue As String = "") As String
|
|
Dim resultToken As Token = Nothing
|
|
If LocalizationTokens.ContainsKey(s) = True Then
|
|
If LocalizationTokens.TryGetValue(s, resultToken) = False Then
|
|
Return s
|
|
Else
|
|
Dim result As String = resultToken.TokenContent
|
|
If Core.Player IsNot Nothing Then
|
|
result = result.Replace("<playername>", Core.Player.Name)
|
|
result = result.Replace("<rivalname>", Core.Player.RivalName)
|
|
If result.Contains("<") Then
|
|
result = CStr(ScriptVersion2.ScriptComparer.EvaluateConstruct(result))
|
|
End If
|
|
End If
|
|
Return result
|
|
End If
|
|
Else
|
|
If DefaultValue = "" Then
|
|
Return s
|
|
Else
|
|
Return DefaultValue
|
|
End If
|
|
End If
|
|
End Function
|
|
|
|
Public Shared Function TokenExists(ByVal TokenName As String) As Boolean
|
|
Return LocalizationTokens.ContainsKey(TokenName)
|
|
End Function
|
|
|
|
End Class
|
|
|
|
Public Class Token
|
|
|
|
Private _TokenContent As String = ""
|
|
Private _TokenLanguageSuffix As String = "en"
|
|
Private _IsGameModeToken As Boolean = False
|
|
|
|
Public Sub New(ByVal TokenContent As String, ByVal TokenLanguageSuffix As String, ByVal IsGameModeToken As Boolean)
|
|
Me._IsGameModeToken = IsGameModeToken
|
|
Me._TokenContent = TokenContent
|
|
Me._TokenLanguageSuffix = TokenLanguageSuffix
|
|
End Sub
|
|
|
|
Public Property TokenContent() As String
|
|
Get
|
|
Return Me._TokenContent
|
|
End Get
|
|
Set(value As String)
|
|
Me._TokenContent = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property TokenLanguageSuffix() As String
|
|
Get
|
|
Return Me._TokenLanguageSuffix
|
|
End Get
|
|
Set(value As String)
|
|
Me._TokenLanguageSuffix = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property IsGameModeToken() As Boolean
|
|
Get
|
|
Return Me._IsGameModeToken
|
|
End Get
|
|
Set(value As Boolean)
|
|
Me._IsGameModeToken = value
|
|
End Set
|
|
End Property
|
|
|
|
End Class |