NetTalk Central
		NetTalk Web Server => Web Server - Ask For Help => Topic started by: sylvain on September 24, 2010, 05:57:13 AM
		
			
			- 
				Hi,
 I would like to translate prompts, comments, headers, buttons,... depending of the language of my user (store in a session variable). I see that there is a translate mathode in the web handler but can someone just explain to me shortly what is the process to do that ?
 
 Thanks
 
 Sylvain
 
 
- 
				Hi Sylvain,
 
 1.) A string comes into the method.
 2.) you can access the session queue at that point using self.GetSessionValue.
 3) you return the translated string (using whatever translation tool you like.)
 
 for example
 case self.GSV('language')
 of English
 ! translate call goes here
 End
 
 Cheers
 Bruce
 
 
- 
				Hi Bruce,
 
 Thanks
 
 Sylvain
- 
				Inside Translate embed:
 
 
 Returnvalue = p_string
 !Trace('Translate From: '&p_string)
 
 if p_string<>'' and left(p_string,8)<>'uploads\' and p_string<>'??:??' and p_web.gsv('notranslate')<>1 and p_web.translateoff = 0
 
 if right(clip(p_string),1)=':'
 p_string=left(p_string,len(clip(p_string))-1)
 dp#=true
 else
 dp#=false
 end
 
 !Access:Translate.open()
 !Access:Translate.UseFile()
 TRA:TranslateFrom = p_string
 get(Translate,TRA:XFROM)
 if error()
 !Trace('Dont found: '&p_string)
 if loc:Add=1 !getini('translation','add',1,'.\TRANSLAT.INI')=1
 !Trace('Adding: '&p_string)
 clear(tra:record)
 TRA:TranslateFrom = p_string
 !Trace('Adding Translate From: '&TRA:TranslateFrom)
 TRA:ProcedureName = GlobalErrors.GetProcedureName()
 !Trace('Adding ProcedureNAme: '&TRA:ProcedureName)
 if Access:Translate.TryInsert()
 Trace(error())
 end
 !Trace('Added: '&p_string)
 end
 ReturnValue = ''
 else
 !Trace('Found: '&p_string)
 if loc:Repair=1 !getini('translation','repair',0,'.\TRANSLAT.INI')=1
 TRA:TranslateFrom = p_string
 TRA:ProcedureName = GlobalErrors.GetProcedureName()
 PUT(Translate)
 END
 ReturnValue = choose(p_web.gsv('LOGIN_lngCol')+1, TRA:TranslateTo_00, TRA:TranslateTo_01, TRA:TranslateTo_02, TRA:TranslateTo_03, TRA:TranslateTo_04, TRA:TranslateTo_05, TRA:TranslateTo_06, TRA:TranslateTo_07, TRA:TranslateTo_08, TRA:TranslateTo_09, TRA:TranslateTo_10, TRA:TranslateTo_11, TRA:TranslateTo_12, TRA:TranslateTo_13, TRA:TranslateTo_14, TRA:TranslateTo_15, TRA:TranslateTo_16, TRA:TranslateTo_17, TRA:TranslateTo_18, TRA:TranslateTo_19, TRA:TranslateTo_20)
 !Trace('Translate To: '&getini('languages',p_web.GetSessionValue('LOGIN_lng'),0,'.\TRANSLAT.INI')+1&' '&ReturnValue)
 end
 !Access:Translate.Close()
 
 if ReturnValue = ''
 ReturnValue = p_string
 end
 if dp#=true
 ReturnValue = clip(Returnvalue)&':'
 end
 
 end
 
 ReturnValue = parent.Translate(ReturnValue,p_AllowHtml)
 Return clip(ReturnValue)
 
 Hope this helps
- 
				Hi Bernardo,
 
 Nice piece of code.
 A questions though:
 Why did you comment the access:Translate.xxx commands out.
 Is this because the translation file is allways open?
 
 Rene
 .
- 
				Yes, at the ProccessLink embed, before the parent call I open all files I need for the thread...
 
 !Open files I need for all the tread
 Access:Translate.Open()
 Access:Translate.UseFile()
 Access:Sql.Open()
 Access:Sql.UseFile()
 Access:Languages.Open()
 Access:Languages.UseFile()
 
 Then I dont need to open the file for each call to the Translate method.
 
 Regards
 Alberto