상세 컨텐츠

본문 제목

[Unity] 유니티개발 다국어 지원하기 관련

게임엔진관련/유니티 엔진

by AlrepondTech 2019. 3. 21. 15:36

본문

반응형

 

 

 



=======================

=======================

=======================

 

 

 

 

 

 

출처: http://blog.naver.com/PostView.nhn?blogId=tramper2&logNo=100209997076&parentCategoryNo=&categoryNo=174&viewDate=&isShowPopularPosts=false&from=postView

 

다국어 지원을 위한 방법

http://forum.unity3d.com/threads/206271-Add-Multiple-Language-Support-to-Your-Unity-Projects

 

 

 



  1. <?xml version="1.0" encoding="utf-8"?>
  2. <languages>
  3.     <English>
  4.          <string name="app_name">Some Game</string>
  5.          <string name="score_text">Score: </string>
  6.     </English>
  7.  
  8.     <French>
  9.         <string name="app_name">Certains Jeux</string>
  10.         <string name="score_text">Score: </string>
  11.     </French>
  12.  
  13.     <German>
  14.         <string name="app_name">Einige Spiele</string>
  15.         <string name="score_text">Ergebnis: </string>
  16.     </German>
  17. </languages>
 Once the Lang Class has been initialized to a particular language you can reference the strings stored in your XML file as follows:
  1. var scoreText : String = langClass.getString("score_text") + newScore.ToString();
 Furthermore you can reset the language on the fly with the following line:
  1. langClass.setLanguage(Path.Combine(Application.dataPath, "lang.xml"), "French");

 

 

 

c#으로 접근하기

 using System.Collections;
using System.Xml;


namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            MultiLangual Lman = new MultiLangual("lang.xml", "English", false);
        }
    }






public class MultiLangual
{


    private Hashtable Strings;
  
    public MultiLangual(string path, string language, bool web)
    {


            setLanguage(path, language);
    }


  
    public void setLanguage(string path, string language)
    {
        XmlDocument xml = new XmlDocument();
        xml.Load(path);


        Strings = new Hashtable();
        foreach(XmlElement element in xml.GetElementsByTagName(language))
        {
            foreach (XmlElement ele in element.GetElementsByTagName("string"))
            {
                Console.WriteLine(ele.Attributes["name"].Value);
                Console.WriteLine(ele.InnerText);
                Strings.Add(ele.Attributes["name"].Value, ele.InnerText);
            }


        }


        Console.ReadKey();


        Console.WriteLine(getString("app_name"));
        Console.WriteLine("Press Any Key");
        Console.ReadKey();
   
    }


     
    public string getString(string name)
    {
        if (!Strings.ContainsKey(name))
        {
           Console.WriteLine("The specified string does not exist: " + name);


            return "";
        }


        return Strings[name].ToString();
    }
}
}
 

 

xml 다루기 - 한국어 설명 유니티에서

http://www.devbb.net/viewtopic.php?f=37&t=1132

 위에 링크는 이곳 영문자료 참고한것

http://blog.paultondeur.com/2010/03/23/tutorial-loading-and-parsing-external-xml-and-json-files-with-unity-part-1-xml/

 

 

 

 



=======================

=======================

=======================

 

 

 

출처: http://devkorea.co.kr/bbs/board.php?bo_table=m03_qna&wr_id=36091

 

unity 에서는 다국어 지원을 어떤식으로 접근하는게 좋을까요?
 
고귀한 의견 부탁드립니다.
 
----------------------------------------------------------------------------------------------------------------------------
 
unity내부 방식, c# 방식으로 처리 하고 싶습니다.
 
------------------------------------------------------------------------------------------------------------------------------
 
구글 드라이브를 이용해서 유니티에서 쉽게 사용할 수 있는 에셋도 있습니다. 

아래 링크로 가보세요. 
DocsPin Asset : http://u3d.as/content/esayggsoft/google-docs-localization/8Tf 
Overview : http://wp.me/p4GV66-B 

기능은 아래와 같습니다. 
- 구글 드라이브의 데이터를 가져오는 기능(스프레드시트) 
- 데이터를 로컬에 파일로 저장 및 로드하는 기능 
- 로컬 파일을 암호화 및 복호화 하는 기능 
- 밸런싱 데이터 및 다국어 텍스트 데이터를 관리하는 기능 
- PC에서 실시간 데이터 접속(모바일에서는 지원 안함)

 

 

 

반응형

 

 

728x90

 

 

 



=======================

=======================

=======================

 

 

 

출처: http://www.devkorea.co.kr/bbs/board.php?bo_table=m03_qna&wr_id=49842

 

 

안녕하세요.

유니티+NGUI를 이용해 게임을 만들고 있습니다.

당연히 현재 한국어로 되어있는데, 영어 지원을 해야하는 상황인데요

쉽게 처리할수 있는 방법이 있는지 궁금합니다.

 

거의 다 NGUI의 UILabel을 통해 텍스트를 출력하고 있습니다.

현재 구성된 방법으로 다국어를 지원하려면 

모든 UI에서 기기 언어설정에 따라 분기를 해야하는... 노가다가 심하게 많기에

뭔가 유니티에서 지원해주는 방법이 있는지 알고싶습니다.

없다면 노가다 해야겠지요 ㅜㅜ

 

조언 부탁드립니다.

감사합니다.

 

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

다국어에 쉽게가는 길은 없는거같아요. 

1단계가 언어를 처리하는 cs파일 하나 만드는거구요 

2단계가 각 언어마다 UI에서 길이차이가나기때문에 각각 이쁘게나오도록 손봐야해요 

꾸준히 하는수밖에는 없습니다~~ 그럼 즐거운 하루되세요

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

언어 관련 정리된 CSV파일을 만드신 뒤에 
한국,미국,일본..등등 내용을 안에 각각 삽입하시고 
코드 상에서 CSV파일 읽어서 인덱스로 불러오게 설정 하신뒤에 
언어별로 컬럼만 다르게 읽어 오시면 될듯 하네요

 

-----------------------------------------------------------------------------------------------------------------------------------------

 

왕도가 없습니다. 
로컬라이징 파일 따로 관리 하셔서 단말기에서 게임 실행할 때 언어 체크 한 후 해당언어 파일 로드하는 방법으로..

 

-------------------------------------------------------------------------------------------------------------------------------------------

구글 드라이브를 이용해서 유니티에서 쉽게 사용할 수 있는 에셋이 있습니다. 

아래 링크로 가보세요. 
DocsPin Asset : http://u3d.as/content/esayggsoft/google-docs-localization/8Tf 
Overview : http://wp.me/p4GV66-B 

기능은 아래와 같습니다. 
- 구글 드라이브의 데이터를 가져오는 기능(스프레드시트) 
- 데이터를 로컬에 파일로 저장 및 로드하는 기능 
- 로컬 파일을 암호화 및 복호화 하는 기능 
- 밸런싱 데이터 및 다국어 텍스트 데이터를 관리하는 기능 
- PC에서 실시간 데이터 접속(모바일에서는 지원 안함)

 

 

 



=======================

=======================

=======================

 

 

 

출처: http://blog.naver.com/PostView.nhn?blogId=ateliersera&logNo=220730240253&categoryNo=44&parentCategoryNo=15&viewDate=&currentPage=5&postListTopCurrentPage=1&from=postList

 

 

대만,일본,중국  심지어 포루투갈이라거나 이태리,프랑스어 등을 동시에 10개국씩 작업하다보면 깨지는 경우가 많습니다.

 

답은 간단한데, 엑셀에서 CSV파일을 만드는 것이 아니라, 다음과 같은 방법으로 제작하면 됩니다.

 

1. 엑셀에서 다른이름으로 저장 -> .txt 파일로 저장 합니다.

2. 위에서 만든 텍스트 문서를 노트패드로 열은 후 UTF-8로 저장 합니다.

3. UTF-8로 저장한 문서를 노트패드++ 등으로 불러옵니다.

 

전체 선택을 하고, ctrl + h 를 누른후 정규식을 선택 해서 바꿔야 합니다. 

찾을 말은 \t  

바꿀 말은 , 

입니다.  \t 이 곧 탭 입니다. 텍스트 저장은 탭으로 분류됩니다. 

 

이렇게 바꾼것을 저장하면 됩니다.  그리고, .txt 를 csv로 필요하면 확장자 명을 바꾸면 됩니다. 

 

 

---------------------------------------------------------------

엑셀 데이터 자체를 UTF-8로 저장하기 * 안 먹히는 경우가 많습니다.

1. 다른이름으로 저장 을 눌러서 다이얼로그 창을 띄운다.

2. 하단에 있는 도구 - 웹 옵션을 클릭 한다

3. 웹 옵션 - 인코딩에 들어가서, 문서를 다음 형식으로 저장 -> 한국어로 되어 있는데, 유니코드(UTF-8)로 변경한다

 

애초에 UTF-8로 저장되면 안깨지는데, 이게 될때가 있고 안될때가 있습니다.. 안된다 싶으면 위에 방법을, 된다면 아래에 방법을 사용하시면 됩니다. 

 

 

 

 

 

 



=======================

=======================

=======================

 

 

 

 

*관련링크

 

https://ronniej.sfuh.tk/4-ngui-%EB%8B%A4%EA%B5%AD%EC%96%B4-%EC%A7%80%EC%9B%90%ED%95%98%EA%B8%B0-localization-2/

 

https://forum.unity.com/threads/add-multiple-language-support-to-your-unity-projects.206271/

 

https://forum.unity.com/threads/xml-reading-a-xml-file-in-unity-how-to-do-it.44441/

 

 



=======================

=======================

=======================

 

 

 

반응형


관련글 더보기

댓글 영역