ํ†ต๋‚˜๋ฌด





์ผ๋‹จ ๋Œ€์ถฉ ํŽธํ•œํˆด๋กœ ํ˜„์ง€ํ™” ์‹œํŠธ ์ž‘์—…์„ ํ•ด์คŒ

๋‚˜๋Š” ๊ตฌ๊ธ€ ์Šคํ”„๋ ˆ๋“œ ๊ทธ๊ฑฐ ์”€

A์—ด์ด "Key" ๊ฐ€ ๋˜๋Š” ๊ฐ’์ด๊ณ , 1ํ–‰์ด ์–ธ์–ด ๊ตฌ๋ถ„์— ์“ฐ์ผ ๋ถ€๋ถ„์ž„

2ํ–‰๋ถ€ํ„ฐ๊ฐ€ ์‹ค์ œ๋กœ ๋ณด์—ฌ์ค„ ๊ฐ’์ž„

๋‹ค ์ผ์œผ๋ฉด csv๋กœ ๋‚ด๋ณด๋‚ด์„œ ๋ฆฌ์†Œ์Šค ํด๋” ใ„ฑใ„ฑ


a04534aa2232b55f9af1c6bb11f11a3931ac848dd970db45




๊ทธ๋ฆฌ๊ณ  ํ˜„์ง€ํ™”.cs ํŒŒ์ผ์„ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์ฃผ๊ณ 

๋ฐ‘์— ๋‚ด์šฉ ๋ณต๋ถ™ ใ„ฑใ„ฑ


private Dictionary<string, Dictionary<string, string>> localizationText; // ๋”•์…”๋„ˆ๋ฆฌ์— ๋‹ด์•„์ค€๋‹ค
private void LoadLocalizationData(string fileName) // csv ํŒŒ์ผ ๋ถˆ๋Ÿฌ์˜ค๋Š”๊ฑฐ
{
localizationText = new Dictionary<string, Dictionary<string, string>>();
TextAsset csvFile = Resources.Load<TextAsset>(fileName); // ๋ฆฌ์†Œ์Šค ํด๋”์—์„œ ์ฝ์–ด์˜ด
if (csvFile == null)
{
Debug.LogError("CSV ํŒŒ์ผ์ด ์—†์–ด์š”");
return;
}
string[] lines = csvFile.text.Split(new[] { '\n', '\r' }, System.StringSplitOptions.RemoveEmptyEntries);
if (lines.Length <= 1)
{
Debug.LogError("CSV ํŒŒ์ผ์„ ํ™•์ธํ•˜์„ธ์š” ๋ญ”๊ฐ€ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹จ๋‹ค");
return;
}
string[] headers = lines[0].Split(',');
for (int i = 0; i < lines.Length; i++)
{
if (string.IsNullOrWhiteSpace(lines[i])) continue;
string[] fields = lines[i].Split(',');
if (fields.Length == 0) continue;
string key = fields[0].Trim();
if (string.IsNullOrWhiteSpace(key)) continue;
localizationText[key] = new Dictionary<string, string>();
for (int j = 0; j < headers.Length; j++)
{
if (j < fields.Length)
{
string header = headers[j].Trim();
string value = fields[j].Trim();
if (!string.IsNullOrWhiteSpace(header) && !string.IsNullOrWhiteSpace(value))
{
localizationText[key][header] = value;
}
}
}
}
}
public string Get_LocalizedText(string key) // ๋ถˆ๋Ÿฌ์˜ฌ ๋• ์ด๊ฑธ ์“ฐ๋ฉด ๋จ, Get_LocalizedText("ํ‚ค");
{
string lang = "English"; // 1ํ–‰์— ๋“ค์–ด์žˆ๋Š” ๋‚ด์šฉ ๊ธฐ์ค€์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ด, ์™ธ๋ถ€์—์„œ ๋ฐ›์•„์˜จ๊ฑธ๋กœ ๊ฐ’์„ ๋ฐ”๊ฟ”์ฃผ๋ฉด ์˜ต์…˜ ์„ค์ • ๋งŒ๋“ค๊ธฐ ใ…†๊ฐ€๋Šฅ
if (localizationText.ContainsKey(key) && localizationText[key].ContainsKey(lang))
{
return localizationText[key][lang];
}
return $"{key} << ์ด ๊ฐ’์ด ์—†์Œ";
}
private void Start() {
LoadLocalizationData("๋Œ€์ถฉ ๋‹ˆ๊ฐ€ ์ €์žฅํ•œ csvํŒŒ์ผ ์ด๋ฆ„");
}



์ฝ”๋“œ์—๋„ ์ฃผ์„ ๋‹ฌ์•„๋†จ๋Š”๋ฐ ์ถ”๊ฐ€ ์„ค๋ช… ๋ถ™ํžˆ์ž๋ฉด

Get_LocalizedText("Key"); ๋กœ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๊ณ , ์—ฌ๊ธฐ์„œ ํ‚ค๊ฐ’์€ A์—ด์— ๋“ฑ๋ก๋œ ๋‚ด์šฉ
Get_LocalizedText << ์ด ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ, 1ํ–‰์˜ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์•„์˜ค๊ธฐ ๋•Œ๋ฌธ์—

Get_LocalizedText ํ•จ์ˆ˜ ๋‚ด๋ถ€์— lang << ์ด ๊ฐ’๋งŒ ๋„ˆ๊ฐ€ ์ค€๋น„ํ•œ ์–ธ์–ด๋งŒํผ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋จ




์ด๊ฑด ๋‹จ์–ด > ๋‹จ์–ด ๊ธฐ์ค€์ธ๋ฐ, ๋Œ€์‚ฌ๊ฐ™์ด ๋‚ด์šฉ์ด ๊ธธ์–ด์ง€๋Š” ์• ๋“ค์€

A์—ด์„ ์ˆซ์ž๋กœํ•˜๊ณ  (1100 ๋ญ ๊ทธ๋Ÿฐ์‹) ๊ทธ๊ฑธ ํ‚ค๊ฐ’์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ค๊ฒŒ ํ•˜๋ฉด ์ง„์งœ ๊ธด ๋‚ด์šฉ๋„ ๊ด€๋ฆฌ ์Œ‰๊ฐ€๋Šฅ์ž„


ํ์Œ