EnglishРусский  

   ..

   LANGUAGE

   language.g

Ads

Perfect Automation tool
All-In-One: Script editor, Launcher, Scheduler, Keyboard & Mouse Recorder. Try now!

CreateInstall
Freeware and commercial installers.

Cell Phone Batteries
Batteries Plus offers batteries for laptop, camcorder, cell phone, camera.

Gentee needs your help!
How to advertise with us
 
laptop battery

source\lib\language\language.g
  1 /******************************************************************************
  2 *
  3 * Copyright (C) 2007, The Gentee Group. All rights reserved. 
  4 * This file is part of the Gentee open source project - http://www.gentee.com. 
  5 * 
  6 * THIS FILE IS PROVIDED UNDER THE TERMS OF THE GENTEE LICENSE ("AGREEMENT"). 
  7 * ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE CONSTITUTES RECIPIENTS 
  8 * ACCEPTANCE OF THE AGREEMENT.
  9 *
 10 * ID: prj 18.07.07 0.0.A.
 11 *
 12 * Author: Alexey Krivonogov ( gentee )
 13 *
 14 ******************************************************************************/
 15 
 16 include
 17 {
 18    $"..\gt\gt.g"
 19    $"..\macro\macro.g"
 20 }
 21 
 22 define
 23 {
 24    LANGEXT = "lng"
 25 }
 26 
 27 type langdata
 28 {
 29    str  filename
 30    str  name
 31    ustr native
 32    str  custom
 33 //   uint utf8
 34 }
 35 
 36 /*-----------------------------------------------------------------------------
 37 *
 38 * ID: language 12.10.06 1.1.A. 
 39 * 
 40 * Summary: Language type
 41 *  
 42 -----------------------------------------------------------------------------*/
 43 
 44 type language <inherit = gt>// index = str>
 45 {
 46    str  path    // Path to language files
 47    str  deflang // Default language
 48    str  curlang // Current language
 49    str  defin   // Input string of default language
 50    arr  lnglist of langdata
 51    macro  macros     
 52 }
 53 /*
 54 global
 55 {
 56    str  langempty
 57 }
 58 */
 59 method uint language.getinfo( str filename )
 60 {
 61    str  data  datacut
 62    gt   gtdata
 63    uint gti
 64    uint newlng
 65    
 66    data.read( filename )
 67    
 68    datacut.substr( data, 0, data.findch( '/' ) + 2 )
 69    gtdata.utf8 = 1
 70    gtdata += datacut
 71    gti as gtdata.find("data")
 72    if !>i : return 0
 73    newlng as .lnglist[ .lnglist.expand( 1 ) ]
 74 //   .utf8 = /*( gti.find( "utf8" ) ||*/ data.isprefutf8() )
 75    filename.fgetparts( 0->str, newlng.filename, 0->str )
 76    gti.get( "name", newlng.name ) 
 77    gti.get( "native", newlng.native )
 78    if .deflang %== newlng.filename : .defin = data
 79    return 1
 80 }  
 81 
 82 /*-----------------------------------------------------------------------------
 83 *
 84 -----------------------------------------------------------------------------*/
 85 
 86 method uint language.getid( str langname )
 87 {
 88    uint i
 89    
 90    fornum i, *.lnglist
 91    {
 92       if langname %== .lnglist[i].name : break
 93    } 
 94    return i
 95 }
 96 
 97 /*-----------------------------------------------------------------------------
 98 *
 99 * ID: language_change 12.10.06 1.1.A. 
100 * 
101 * Summary: 
102 *  
103 -----------------------------------------------------------------------------*/
104 
105 method uint language.change( str langname )
106 {
107    subfunc loadcustom( str custlang )
108    {
109       uint id = .getid( custlang )
110       
111       if id < *.lnglist : .root().load( .lnglist[ id ].custom )
112    }
113    
114    .clear()
115    .root().load( .defin )
116    loadcustom( .deflang )
117    if langname %!= .deflang
118    { 
119       .read( "\(.path)\\\( langname ).\($LANGEXT)")
120       loadcustom( langname )
121       .curlang = langname
122    }      
123    else : .curlang = .deflang
124    return 1
125 }
126 
127 /*-----------------------------------------------------------------------------
128 *
129 * ID: language_change 12.10.06 1.1.A. 
130 * 
131 * Summary: 
132 *  
133 -----------------------------------------------------------------------------*/
134 
135 method uint language.change( uint id )
136 {
137    if id >= *.lnglist : return 0
138    return .change( .lnglist[ id ].filename )
139 }
140 
141 /*-----------------------------------------------------------------------------
142 *
143 * ID: language_get 12.10.06 1.1.A. 
144 * 
145 * Summary: 
146 *  
147 -----------------------------------------------------------------------------*/
148 /*
149 method ustr language.getlang( ustr name ret )
150 {
151    ret.clear()
152    .get( "default/\( str( name ))", ret )
153 //   print("Len=\( *ret )\n")
154    return ret   
155 }
156 */
157 /*-----------------------------------------------------------------------------
158 *
159 * ID: language_get 12.10.06 1.1.A. 
160 * 
161 * Summary: 
162 *  
163 -----------------------------------------------------------------------------*/
164 
165 method ustr language.getlang( str name, ustr ret )
166 {
167    .get( "default/\( name )", ret )
168    .macros.replace( ret )
169    return ret   
170 }
171 
172 method ustr language.getlang( ustr name ret )
173 {
174    return .getlang( str( name ), ret )
175 }
176 
177 /*-----------------------------------------------------------------------------
178 *
179 * ID: language_load 12.10.06 1.1.A. 
180 * 
181 * Summary: 
182 *  
183 -----------------------------------------------------------------------------*/
184 
185 method uint language.load( str path deflang curlang )
186 {
187    ffind fd
188    uint  count
189    
190    .path = path
191    .deflang = deflang
192    .utf8 = 1
193 
194    fd.init( "\(path)\\*.\($LANGEXT)", $FIND_FILE )
195    foreach cur, fd
196    {
197       if .getinfo( cur.fullname ) : count++  
198    }
199    .change( deflang )
200    if *curlang : .change( curlang )
201        
202    return count
203 }
204 
205 method language.setmacro( str macroname, ustr value )
206 {
207    .macros[ macroname ] = value
208 }
209 
210 method language.setmacro( str macroname, str value )
211 {
212    .macros[ macroname ] = ustr( value )
213 }
214 
215 method ustr language.getlist<result>
216 {
217    uint i
218    
219    fornum i, *.lnglist
220    {
221       result += ustr( "\(.lnglist[i].name) (" ) + .lnglist[i].native + 
222                 ustr( ")=\(.lnglist[i].filename)\l" )  
223    }     
224    result.trim( 0xa, $TRIM_SYS | $TRIM_RIGHT )
225 }
226 
227 method uint language.load( str lang data )
228 {
229    uint id 
230    
231    if ( id = .getid( lang )) < *.lnglist
232    {
233       .lnglist[ id ].custom = data
234       if lang %== .curlang : .root().load( data )
235            
236       return 1
237    }
238    return 0   
239 }
240 /*
241 func mainlang<main>
242 {
243    language lng
244    ustr     list
245    
246    lng.load( $"k:\gentee\open source\gentee\lib\language\language", "english", "english")
247    lng.load( "english", "<default>
248    <test4 = \"Custom English\" />
249 </>   ")
250 //   lng.load( "russian", "п»ї<default>
251 //   <test2 = \"СЌР»РµРјРµРЅС Ooops\" />
252 //</>   ")
253 //  lng.change( "english" )
254    print( "Test1 = \( str( lng.getlang( "test1", ustr("")))) \n" )
255    print( "Test2 = \( str( lng.getlang( ustr("test2"), ustr(""))))\n")
256    print( "Test3 = \( str( lng.getlang( ustr("test3"), ustr(""))))\n")
257    lng.change( "russian" )
258    print( "Test1 = \( str( lng.getlang( "test1", ustr("")))) \n" )
259    print( "Test2 = \( str( lng.getlang( ustr("test2"), ustr(""))))\n")
260    print( "Test3 = \( str( lng.getlang( ustr("test4"), ustr(""))))\n")
261    list = lng.getlist()
262    print( "\(str(list))\ncurlang=\(lng.curlang) \( lng.getid( lng.curlang ))" )
263    getch()
264 }*/
Edit