Skip to content

Commit 1eee1ff

Browse files
committed
fix: setup language
1 parent ea38e59 commit 1eee1ff

8 files changed

Lines changed: 47 additions & 90 deletions

File tree

Assets/Code/Infrastructure/Services/GameStater/GameStarter.cs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using Code.Infrastructure.Services.PersistenceProgress;
33
using Code.Infrastructure.Services.PersistenceProgress.Player;
44
using Code.Infrastructure.Services.SaveLoad;
5+
using Code.Localization.Code.Services.LocalizeLanguageService;
56
using UnityEngine;
67

78
namespace Code.Infrastructure.Services.GameStater
@@ -11,15 +12,18 @@ public class GameStarter : IGameStarter
1112
private readonly IPersistenceProgressService _progressService;
1213
private readonly ISaveLoadService _saveLoadService;
1314
private readonly IUIFactory _uiFactory;
14-
15+
private readonly ILocalizeLanguageService _localizeLanguageService;
16+
1517
public GameStarter(
1618
IPersistenceProgressService progressService,
1719
ISaveLoadService saveLoadService,
18-
IUIFactory uiFactory)
20+
IUIFactory uiFactory,
21+
ILocalizeLanguageService localizeLanguageService)
1922
{
2023
_progressService = progressService;
2124
_saveLoadService = saveLoadService;
2225
_uiFactory = uiFactory;
26+
_localizeLanguageService = localizeLanguageService;
2327
}
2428

2529
public void Initialize()
@@ -28,6 +32,7 @@ public void Initialize()
2832

2933
InitProgress();
3034
InitUI();
35+
InitLanguage();
3136
}
3237

3338
private void InitProgress()
@@ -41,6 +46,11 @@ private void InitUI()
4146
_uiFactory.CreateGameHud();
4247
}
4348

49+
private void InitLanguage()
50+
{
51+
_localizeLanguageService.InitLanguage();
52+
}
53+
4454
private PlayerData LoadProgress()
4555
{
4656
Debug.Log("LoadProgress");

Assets/Code/Localization/Code/Locale.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ public static SystemLanguage PlayerLanguage
6666
{
6767
PlayerPrefs.SetInt(STR_LOCALIZATION_KEY, (int)value);
6868
PlayerPrefs.Save();
69+
Debug.Log("Locale: Player language set to " + value);
6970
}
7071
}
7172
}

Assets/Code/Localization/Code/LocalizeBase.cs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,6 @@ public abstract class LocalizeBase : MonoBehaviour
88

99
public abstract void UpdateLocale();
1010

11-
protected virtual void Start()
12-
{
13-
if (!Locale.currentLanguageHasBeenSet)
14-
Locale.currentLanguageHasBeenSet = true;
15-
16-
UpdateLocale();
17-
}
18-
1911
public static string GetLocalizedString(string key)
2012
{
2113
if (Locale.currentLanguageStrings.ContainsKey(key))
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
using System.Collections.Generic;
2+
using UnityEngine;
23

34
namespace Code.Localization.Code.Services.LocalizeLanguageService
45
{
56
public interface ILocalizeLanguageService
67
{
7-
List<string> GetAvailableLanguages();
8-
void SetLanguage(string languageName);
9-
string GetCurrentLanguage();
8+
public void InitLanguage();
9+
public List<string> GetAvailableLanguages();
10+
public void SetLanguage(string languageName);
11+
public SystemLanguage GetCurrentLanguage();
1012
}
1113
}

Assets/Code/Localization/Code/Services/LocalizeLanguageService/LocalizeLanguageService.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@ public class LocalizeLanguageService : ILocalizeLanguageService
99
{
1010
private const string ResourcesPath = "Localization";
1111

12+
public void InitLanguage()
13+
{
14+
Debug.Log("InitLanguage =" + GetCurrentLanguage());
15+
SetLanguage(GetCurrentLanguage().ToString());
16+
}
17+
1218
public List<string> GetAvailableLanguages()
1319
{
1420
TextAsset[] files = Resources.LoadAll<TextAsset>(ResourcesPath);
@@ -17,14 +23,14 @@ public List<string> GetAvailableLanguages()
1723

1824
public void SetLanguage(string languageName)
1925
{
20-
Locale.CurrentLanguage = languageName.ToString();
26+
Locale.CurrentLanguage = languageName;
2127
Locale.PlayerLanguage = LanguageNameToSystemLanguage(languageName);
2228
LocalizeBase[] allTexts = Object.FindObjectsOfType<LocalizeBase>();
2329
foreach (var t in allTexts)
2430
t.UpdateLocale();
2531
}
2632

27-
public string GetCurrentLanguage() => Locale.CurrentLanguage;
33+
public SystemLanguage GetCurrentLanguage() => Locale.PlayerLanguage;
2834

2935
private SystemLanguage LanguageNameToSystemLanguage(string name)
3036
{
Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,41 @@
11
using TMPro;
22
using UnityEngine;
3+
using Code.Localization.Code.Services.LocalizeLanguageService;
4+
using Zenject;
35

46
namespace Code.Localization.Code
57
{
68
[DisallowMultipleComponent]
79
public class TMP_Localizer : LocalizeBase
810
{
911
[SerializeField] private TMP_Text _text;
12+
13+
private ILocalizeLanguageService _localizeLanguageService;
1014

1115
private void OnValidate()
1216
{
1317
if(_text == null)
1418
_text = GetComponent<TMP_Text>();
1519
}
16-
20+
21+
public void Start()
22+
{
23+
UpdateLocale();
24+
}
25+
1726
public override void UpdateLocale()
1827
{
19-
if (!_text)
28+
if (!_text)
29+
{
30+
Debug.LogError($"TMP_Localizer: Missing TMP_Text component on {gameObject.name}");
2031
return;
32+
}
2133

2234
if (!System.String.IsNullOrEmpty(localizationKey) &&
2335
Locale.currentLanguageStrings.ContainsKey(localizationKey))
24-
_text.text = Locale.currentLanguageStrings[localizationKey].Replace(@"\n", "" + '\n');
36+
{
37+
_text.text = Locale.currentLanguageStrings[localizationKey].Replace(@"\n", "" + '\n');
38+
}
2539
}
2640
}
2741
}

Assets/Code/Localization/Code/UI/DropDownSwitcherLanguage.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System.Collections.Generic;
12
using Code.Localization.Code.Services.LocalizeLanguageService;
23
using TMPro;
34
using UnityEngine;
@@ -33,11 +34,11 @@ private void SetupDropdown()
3334
{
3435
_dropdown.ClearOptions();
3536

36-
var languages = _localizeLanguageService.GetAvailableLanguages();
37+
List<string> languages = _localizeLanguageService.GetAvailableLanguages();
3738
_dropdown.AddOptions(languages);
3839

39-
var currentLanguage = _localizeLanguageService.GetCurrentLanguage();
40-
int currentIndex = languages.IndexOf(currentLanguage);
40+
SystemLanguage currentLanguage = _localizeLanguageService.GetCurrentLanguage();
41+
int currentIndex = languages.IndexOf(currentLanguage.ToString());
4142
_dropdown.SetValueWithoutNotify(currentIndex >= 0 ? currentIndex : 0);
4243

4344
_dropdown.onValueChanged.AddListener(OnDropdownValueChanged);

Assets/Scenes/Game.unity

Lines changed: 0 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,6 @@ GameObject:
201201
m_Component:
202202
- component: {fileID: 197486225}
203203
- component: {fileID: 197486224}
204-
- component: {fileID: 197486226}
205204
m_Layer: 0
206205
m_Name: Directional Light
207206
m_TagString: Untagged
@@ -286,29 +285,6 @@ Transform:
286285
m_Children: []
287286
m_Father: {fileID: 0}
288287
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
289-
--- !u!114 &197486226
290-
MonoBehaviour:
291-
m_ObjectHideFlags: 0
292-
m_CorrespondingSourceObject: {fileID: 0}
293-
m_PrefabInstance: {fileID: 0}
294-
m_PrefabAsset: {fileID: 0}
295-
m_GameObject: {fileID: 197486223}
296-
m_Enabled: 1
297-
m_EditorHideFlags: 0
298-
m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3}
299-
m_Name:
300-
m_EditorClassIdentifier:
301-
m_Version: 3
302-
m_UsePipelineSettings: 1
303-
m_AdditionalLightsShadowResolutionTier: 2
304-
m_LightLayerMask: 1
305-
m_RenderingLayers: 1
306-
m_CustomShadowLayers: 0
307-
m_ShadowLayerMask: 1
308-
m_ShadowRenderingLayers: 1
309-
m_LightCookieSize: {x: 1, y: 1}
310-
m_LightCookieOffset: {x: 0, y: 0}
311-
m_SoftShadowQuality: 0
312288
--- !u!1 &851719307
313289
GameObject:
314290
m_ObjectHideFlags: 0
@@ -320,7 +296,6 @@ GameObject:
320296
- component: {fileID: 851719310}
321297
- component: {fileID: 851719309}
322298
- component: {fileID: 851719308}
323-
- component: {fileID: 851719311}
324299
m_Layer: 0
325300
m_Name: Main Camera
326301
m_TagString: MainCamera
@@ -402,50 +377,6 @@ Transform:
402377
m_Children: []
403378
m_Father: {fileID: 0}
404379
m_LocalEulerAnglesHint: {x: 65, y: 0, z: 0}
405-
--- !u!114 &851719311
406-
MonoBehaviour:
407-
m_ObjectHideFlags: 0
408-
m_CorrespondingSourceObject: {fileID: 0}
409-
m_PrefabInstance: {fileID: 0}
410-
m_PrefabAsset: {fileID: 0}
411-
m_GameObject: {fileID: 851719307}
412-
m_Enabled: 1
413-
m_EditorHideFlags: 0
414-
m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3}
415-
m_Name:
416-
m_EditorClassIdentifier:
417-
m_RenderShadows: 1
418-
m_RequiresDepthTextureOption: 2
419-
m_RequiresOpaqueTextureOption: 2
420-
m_CameraType: 0
421-
m_Cameras: []
422-
m_RendererIndex: -1
423-
m_VolumeLayerMask:
424-
serializedVersion: 2
425-
m_Bits: 1
426-
m_VolumeTrigger: {fileID: 0}
427-
m_VolumeFrameworkUpdateModeOption: 2
428-
m_RenderPostProcessing: 0
429-
m_Antialiasing: 0
430-
m_AntialiasingQuality: 2
431-
m_StopNaN: 0
432-
m_Dithering: 0
433-
m_ClearDepth: 1
434-
m_AllowXRRendering: 1
435-
m_AllowHDROutput: 1
436-
m_UseScreenCoordOverride: 0
437-
m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0}
438-
m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0}
439-
m_RequiresDepthTexture: 0
440-
m_RequiresColorTexture: 0
441-
m_Version: 2
442-
m_TaaSettings:
443-
quality: 3
444-
frameInfluence: 0.1
445-
jitterScale: 1
446-
mipBias: 0
447-
varianceClampScale: 0.9
448-
contrastAdaptiveSharpening: 0
449380
--- !u!1001 &1316113741
450381
PrefabInstance:
451382
m_ObjectHideFlags: 0

0 commit comments

Comments
 (0)