포럼
1.5에서 변경된 언어팩에 대해
2011.10.15 01:00
1.5에서, 기존제작했던 모듈을 옮기다가 정말 당황했던것중에하나가...
뭘해도 잘나오던아이가 (admin) 초기화면이 안나와서...
왜그런지 이유를도저히모르겠어서.. Act조작해서 들어가보니 페이지설정이런건 또 잘나옵니다?
제모듈이랑 초기화면만 안나옵니다.
그래서 "아 내꺼에문제가있구나.."
한참헤메다 찾아낸것이 lang....
lang.ko.php 파일 내용을 비워주니 깨끗하게 잘작동됩니다..
xml로 변경되어 파일하나로 모두 관리할 수 있게되어 참 좋습니다.
근데 lang.xml파일을 lang 디렉토리에 둘게아니라 mvc파일과 함께 모듈디렉토리 루트에 묶던지, conf로 이동시키는게 어떤가해서 글올려봅니다.
그리고 전 lang파일을
$lang->menulist = array();
이런식으로도 많이사용했었습니다.
저렇게하면 루프가돌아야하는 메뉴목록이나, 지역번호목록 등 자주쓰는 배열을 DB를 안쓰고도 쉽게 배열로 유지할 수 있습니다.
물론 언어별로 따로두었을때도 참 용이하지요
예를들어
lang.ko.php 에
$lang->menulist = array(
"dispMemberLoginForm" => "회원로그인",
"dispMemberSignUpForm" => "회원가입",
);
lang.en.php 에
$lang->menulist = array(
"dispMemberLoginForm" => "MemberLogin",
"dispMemberSignUpForm" => "MemberJoin",
);
이렇게만해두면 templatefile에서 정말 쉽게 사용할 수 있지요.
물론 저렇게 사용하고있진 않지만, 예를들자면 저런식으로 사용이 가능하단거지요.. 정말용이하지않나요?
근데 xml로 바뀌고나서 저걸 어떻게처리해야할지 모르겠습니다.
지금은 class에서 require하고 context::set 하는 방법을 택해서 사용중입니다만...
혹시 계속 lang을 저런식으로 사용가능하게할 방법이 있는지 궁금합니다.
댓글 3
-
파이델
2011.10.15 09:01
<?xml version="1.0" encoding="utf-8"?><lang><item name="menulist" type="array"><item name="dispMemberLoginForm"><value xml:lang="ko"><![CDATA[회원로그인]]></value><value xml:lang="en"><![CDATA[MemberLogin]]></value></item><item name="dispMemberSignUpForm"><value xml:lang="ko"><![CDATA[(회원가입)]]></value><value xml:lang="en"><![CDATA[(MemberJoin)]]></value></item></item></lang>참고로 type="array" 를 빼면 stdClass 형식으로 만들어집니다. -
Xiso
2011.10.16 23:35
또하나의 문제를 찾았습니다.
lang 파일은 Template 핸들러에서 처리하지요
Template Handler 가 호출되기전, 모듈 mvc 단계에서 lang을 사용하기 위해서는 기존에 require 만으로는 처리할 수가 없습니다.
Template Handler를 뒤져보니, Context::loadlang() 함수를 사용하길래
이래저래 해보고있지만 도통 먹히질않습니다.
혹시 이것또한 방법이있는지요?
-
Xiso
2011.10.15 09:23
Oh, Really?! Wow!! HoHo!! 그런방법이 -_-
되는거였군요... 역시..