<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.slicer.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lpfang</id>
	<title>Slicer Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.slicer.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lpfang"/>
	<link rel="alternate" type="text/html" href="https://www.slicer.org/wiki/Special:Contributions/Lpfang"/>
	<updated>2026-04-09T09:01:14Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.33.0</generator>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Extensions/GyroGuide&amp;diff=37127</id>
		<title>Documentation/Nightly/Extensions/GyroGuide</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Extensions/GyroGuide&amp;diff=37127"/>
		<updated>2014-01-27T01:48:14Z</updated>

		<summary type="html">&lt;p&gt;Lpfang: Redirected page to Documentation/Nightly/Modules/GyroGuide&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Documentation/Nightly/Modules/GyroGuide]]&lt;/div&gt;</summary>
		<author><name>Lpfang</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Modules/GyroGuide&amp;diff=37126</id>
		<title>Documentation/Nightly/Modules/GyroGuide</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Modules/GyroGuide&amp;diff=37126"/>
		<updated>2014-01-27T01:32:53Z</updated>

		<summary type="html">&lt;p&gt;Lpfang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-header}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Introduction and Acknowledgements}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-start|{{documentation/modulename}}}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-row}}&lt;br /&gt;
Extension: [[Documentation/{{documentation/version}}/Extensions/GyroGuide|GyroGuide]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:GyroGuide.png|150px]]&amp;lt;br&amp;gt;&lt;br /&gt;
Acknowledgments:&lt;br /&gt;
This work is supported by International Scientific and Technical Cooperation Project of Zhejiang Province (Grant 2012C34G2020027)&amp;lt;br&amp;gt;&lt;br /&gt;
Author: &amp;lt;b&amp;gt;Ruifeng Chen&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Luping Fang&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Qing Pan&amp;lt;/b&amp;gt; (College of Information Engineering, Zhejiang University of Technology, Hangzhou, China),&amp;lt;b&amp;gt;Xiaolei Chen&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Jiashu Zhang&amp;lt;/b&amp;gt; (Department of Neurosurgery, PLA General Hospital, Beijing, China)&amp;lt;br&amp;gt;&lt;br /&gt;
Contact: Luping Fang &amp;lt;email&amp;gt;flp@zjut.edu.cn&amp;lt;/email&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-row}}&lt;br /&gt;
&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-end}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Module Description}}&lt;br /&gt;
{|&lt;br /&gt;
*The module should be used in cooperation with “Markups” module. First, it is required to choose five fiducial points to define two mutually-perpendicular planes as the Registration Markers. Second, set a target point and an entry point. Third, click the “Calculate” button to obtain the puncture path information, including the puncture depth and the angles between the puncture path and the reference planes. Finally, these results are displayed on a monitor or transmitted to the gyroscope-based device to assist the surgical operation.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Use Cases}}&lt;br /&gt;
{|&lt;br /&gt;
*Puncture surgery (e.g. endoscopic insertion) is a typical example to show the use of this module. This module calculates the distance of the puncture path and the angle between the probe and the reference planes. The module can also transmit the calculation results to the gyroscope-based device to facilitate the surgical operation.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Tutorials}}&lt;br /&gt;
*1 Load MRI/CT images of brain&amp;lt;br&amp;gt;[[File:GyroGuide-Step-1.png|200px]]&amp;lt;br&amp;gt;&lt;br /&gt;
*2 Define “Markers”, “Target Point” and “Entry Point” using the Markups module.&amp;lt;br&amp;gt;[[File:GyroGuide-Step-2.png|400px]]&amp;lt;br&amp;gt;&lt;br /&gt;
*3 Load the defined fiducial lists&amp;lt;br&amp;gt;[[File:GyroGuide-Step-3.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
:Select GyroGuide module&lt;br /&gt;
: 1 Select the fiducial list - Markers as the markers which define the reference planes.&lt;br /&gt;
: 2 Select the fiducial list – Target as the target point&lt;br /&gt;
: 3 Select the fiducial list – Entry as the entry point&lt;br /&gt;
*4 Calculate puncture path information&amp;lt;br&amp;gt;&lt;br /&gt;
:Click the “Calculate” button. The puncture path information will be displayed in the “Results” section.&amp;lt;br&amp;gt;[[File:GyroGuide-Step-4.png|500px]]&amp;lt;br&amp;gt;&lt;br /&gt;
*5 Export the results&amp;lt;br&amp;gt;&lt;br /&gt;
:Input IP address and port of the puncture instrument in the “Exporter” panel. Click “Send”. The calculated puncture path information could be transmitted to the gyroscope-based device to facilitate the surgical operation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Panels and their use}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[File:GyroGuide-Panel.png|400px]]&amp;lt;br&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;GyroGuide&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Markers&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
It’s a fiducial list which consists of five fiducial points. Three points define the “Red Plane”. The other two points define the “Green Plane” which is perpendicular to the “Red Plane”. The “Blue Plane” is the one perpendicular to both the “Red Plane” and the “Green Plane”. Before measuring angles, the reference planes of the gyroscope have to be registered to the planes defined by the markers.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Target Point&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The fiducial point which represents the target of the puncture.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Entry Point&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
The fiducial point which represents the entry of the puncture.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Calculate Button&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Click the button to calculate the puncture path information.&amp;lt;br&amp;gt;&lt;br /&gt;
Angles between Puncture Path and Red Plane/Green Plane/Blue Plane&amp;lt;br&amp;gt;&lt;br /&gt;
The included angle between the puncture path and the red plane, green plane and blue plane, respectively.&amp;lt;br&amp;gt;&lt;br /&gt;
Distance between Target and Entry Point&amp;lt;br&amp;gt;&lt;br /&gt;
The length of the recommended puncture path.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Exporter&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Hostname&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;IP address of the puncture device. Default: localhost&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Port&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;Port of the puncture device. Default: 18944&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Send Button&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt; Send the calculated results to the designated puncture device, which supports OpenIGTLink protocol.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Similar Modules}}&lt;br /&gt;
*N/A&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|References}}&lt;br /&gt;
* N/A&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Information for Developers}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-developerinfo}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-footer}}&lt;br /&gt;
[[Category:Documentation/{{documentation/version}}/Modules/Segmentation]]&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lpfang</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=File:GyroGuide.png&amp;diff=37125</id>
		<title>File:GyroGuide.png</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=File:GyroGuide.png&amp;diff=37125"/>
		<updated>2014-01-27T01:29:04Z</updated>

		<summary type="html">&lt;p&gt;Lpfang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lpfang</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Extensions&amp;diff=37084</id>
		<title>Documentation/Nightly/Extensions</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Extensions&amp;diff=37084"/>
		<updated>2014-01-22T08:02:45Z</updated>

		<summary type="html">&lt;p&gt;Lpfang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;= Extensions by Category =&lt;br /&gt;
&lt;br /&gt;
==Cat 1==&lt;br /&gt;
&lt;br /&gt;
==Cat 2==&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/SkullStripper|SkullStripper]] (Xiaodong Tao)&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/MABMIS|MABMIS]] (Xiaofeng Liu)&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/SwissSkullStripper|SwissSkullStripper]] (Bill Lorensen)&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/CARMA|Cardiac MRI Toolkit]] (Alan Morris, Salma Bengali)[[image:UnderConstruction.png|tumb|10px]]&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/PkModeling|PkModeling]] (Emma Zhu, Jim Miller)&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/FacetedVisualizer|FacetedVisualizer]] (Harini Veeraraghavan, Jim Miller)&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/Reporting|Reporting]] (Andrey Fedorov, Nicole Aucoin, Steve Pieper) (work in progress)&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/SlicerRT|SlicerRT]] (Csaba Pinter, Andras Lasso, Kevin Wang, Greg Sharp, Steve Pieper)&lt;br /&gt;
** [[Documentation/{{documentation/version}}/Modules/DicomRtImport|DICOM-RT import]]&lt;br /&gt;
** [[Documentation/{{documentation/version}}/Modules/DicomRtExport|DICOM-RT export]]&lt;br /&gt;
** [[Documentation/{{documentation/version}}/Modules/Contours|Contours]]&lt;br /&gt;
** [[Documentation/{{documentation/version}}/Modules/DoseVolumeHistogram|Dose volume histogram]]&lt;br /&gt;
** [[Documentation/{{documentation/version}}/Modules/DoseAccumulation|Dose accumulation]]&lt;br /&gt;
** [[Documentation/{{documentation/version}}/Modules/DoseComparison|Dose comparison]]&lt;br /&gt;
** [[Documentation/{{documentation/version}}/Modules/Isodose|Isodose line and surface display]]&lt;br /&gt;
** [[Documentation/{{documentation/version}}/Modules/ContourComparison|Contour comparison]]&lt;br /&gt;
** [[Documentation/{{documentation/version}}/Modules/ContourMorphology|Contour morphology]]&lt;br /&gt;
** [[Documentation/{{documentation/version}}/Modules/PatientHierarchy|Patient hierarchy]]&lt;br /&gt;
** Modules from [[Documentation/{{documentation/version}}/Extensions/Plastimatch|Plastimatch]] (Greg Sharp)&lt;br /&gt;
*** [[Documentation/{{documentation/version}}/Modules/PlmBSplineDeformableRegistration|Plastimatch Automatic deformable image registration]]&lt;br /&gt;
*** [[Documentation/{{documentation/version}}/Modules/PlmLANDWARP|Plastimatch LANDWARP Landmark]]&lt;br /&gt;
*** [[Documentation/{{documentation/version}}/Modules/PlmXFORMWARP|Plastimatch XFORMWARP]] [[image:UnderConstruction.png|tumb|10px]]&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/SlicerIGT|SlicerIGT]] (Tamas Ungi, Adam Rankin, Andras Lasso, Junichi Tokuda, Laurent Chauvin)&lt;br /&gt;
** [[Documentation/{{documentation/version}}/Modules/CollectFiducials|CollectFiducials]] (Tamas Ungi)&lt;br /&gt;
** [[Documentation/{{documentation/version}}/Modules/CreateModels|CreateModels]] (Tamas Ungi, Matthew Holden)&lt;br /&gt;
** [[Documentation/{{documentation/version}}/Modules/OpenIGTLinkRemote|OpenIGTLinkRemote]] (Tamas Ungi, Andras Lasso)&lt;br /&gt;
** [[Documentation/{{documentation/version}}/Modules/UltrasoundSnapshots|UltrasoundSnapshots]] (Tamas Ungi, Franklin King)&lt;br /&gt;
** [[Documentation/{{documentation/version}}/Extensions/VolumeResliceDriver|VolumeResliceDriver]] (Junichi Tokuda, Tamas Ungi, Laurent Chauvin)&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/MatlabBridge|Matlab Bridge]] (Andras Lasso, Jean-Christophe Fillion-Robin, Kevin Wang)&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/iGyne|iGyne]] (Xiaojun Chen and iGyne Team)&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/LongitudinalPETCT|LongitudinalPETCT]] (Paul Mercea, Andrey Fedorov)&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/DTIProcess|DTIProcess]] (Francois Budin)&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/DTIAtlasFiberAnalyzer|DTIAtlasFiberAnalyzer]] (Francois Budin)&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/FiberViewerLight|FiberViewerLight]] (Francois Budin)&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/DTIPrep|DTIPrep]] (Francois Budin)&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/DTIAtlasBuilder|DTIAtlasBuilder]] (Adrien Kaiser)&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/ShapePopulationViewer|ShapePopulationViewer]] (Alexis Girault)&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/TubeTK|TubeTK]] (Stephen Aylward, Jean-Christophe Fillion-Robin, Christopher Mullins, Michael Jeulin-L, Matthew McCormick)&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/UKFTractography|UKFTractography]] (Ryan Eckbo, Yogesh Rathi)&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/TrackerStabilizer|TrackerStabilizer]] (Laurent Chauvin, Jayender Jagadeesan)&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/ChangeTracker|ChangeTracker]] (Andrey Fedorov)&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/SobolevSegmenter|SobolevSegmenter]] (Arie Nakhmani)&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/QuickTools|QuickTools]] (Julien Finet)&lt;br /&gt;
** [[Documentation/{{documentation/version}}/Modules/ImageMaker|Image Maker]]&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/XNATSlicer|XNATSlicer]]&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/ErodeDilateLabel|ErodeDilateLabel]] (Junichi)&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/ThingiverseBrowser|ThingiverseBrowser]] (Nigel Goh)&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/VirtualFractureReconstruction|Virtual Fracture Reconstruction]] (Karl Fritscher, Peter Karasev)&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/AirwaySegmentation|AirwaySegmentation]] (Pietro Nardelli)&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/ModelClip|ModelClip]] (Jun Lin, Xiaojun Chen)&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/SurfaceMirror|SurfaceMirror]] (Jiaxi Luo, Ruqing Ye, Xiaojun Chen)&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/Scoliosis|Scoliosis]] (Franklin King, Tamas Ungi)&lt;br /&gt;
**[[Documentation/{{documentation/version}}/Modules/SpinalCurvatureMeasurement|Spinal Curvature Measurement]] (Franklin King, Tamas Ungi)&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/PortPlacement|Port Placement]] (Andinet Enquobahrie, Luis G. Torres)&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/PlusRemote|Plus Remote]] (Franklin King, Tamas Ungi)&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/TransformVisualizer|Transform Visualizer]] (Franklin King, Andras Lasso, Csaba Pinter)&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/WindowLevelEffect|WindowLevelEffect]] (Andrey Fedorov, Steve Pieper)&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/PerkTutor|PerkTutor]] (Tamas Ungi, Matthew Holden)&lt;br /&gt;
** [[Documentation/{{documentation/version}}/Modules/PerkEvaluator|PerkEvaluator]]&lt;br /&gt;
** [[Documentation/{{documentation/version}}/Modules/TransformRecorder|TransformRecorder]]&lt;br /&gt;
** [[Documentation/{{documentation/version}}/Modules/WorkflowSegmentation|WorkflowSegmentation]]&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Modules/SlicerToKiwiExporter|SlicerToKiwiExporter]] (Jean-Christophe Fillion-Robin)&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Modules/GelDosimetry|GelDosimetry]] (Csaba Pinter)&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/MultidimData|Multidimensional data]] (Andras Lasso, Matthew Holden, Kevin Wang)&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/GyroGuide|GyroGuide]] (Ruifeng Chen,Luping Fang, Qing Pan, Xiaolei Chen, Jiashu Zhang)&lt;br /&gt;
&lt;br /&gt;
==Cat 3==&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/LesionSegmentation|LesionSegmentation]] (Mark Scully)&lt;br /&gt;
**[[Documentation/{{documentation/version}}/Modules/TrainModel|LesionSegmentation-&amp;gt;TrainModel]] (Mark Scully)&lt;br /&gt;
**[[Documentation/{{documentation/version}}/Modules/PredictLesions|LesionSegmentation-&amp;gt;PredictLesions]] (Mark Scully)&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/IASEM|IASEM]] (Bradley Lowekamp)&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{:Documentation/{{documentation/version}}/FAQ/Extensions|Extensions}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lpfang</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Modules/GyroGuide&amp;diff=37083</id>
		<title>Documentation/Nightly/Modules/GyroGuide</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Modules/GyroGuide&amp;diff=37083"/>
		<updated>2014-01-22T07:46:44Z</updated>

		<summary type="html">&lt;p&gt;Lpfang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-header}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Introduction and Acknowledgements}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-start|{{documentation/modulename}}}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-row}}&lt;br /&gt;
Extension: [[Documentation/{{documentation/version}}/Extensions/GyroGuide|GyroGuide]]&amp;lt;br&amp;gt;&lt;br /&gt;
Acknowledgments:&lt;br /&gt;
This work is supported by International Scientific and Technical Cooperation Project of Zhejiang Province (Grant 2012C34G2020027)&amp;lt;br&amp;gt;&lt;br /&gt;
Author: &amp;lt;b&amp;gt;Ruifeng Chen&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Luping Fang&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Qing Pan&amp;lt;/b&amp;gt; (College of Information Engineering, Zhejiang University of Technology, Hangzhou, China),&amp;lt;b&amp;gt;Xiaolei Chen&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Jiashu Zhang&amp;lt;/b&amp;gt; (Department of Neurosurgery, PLA General Hospital, Beijing, China)&amp;lt;br&amp;gt;&lt;br /&gt;
Contact: Luping Fang &amp;lt;email&amp;gt;flp@zjut.edu.cn&amp;lt;/email&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-row}}&lt;br /&gt;
&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-end}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Module Description}}&lt;br /&gt;
{|&lt;br /&gt;
*The module should be used in cooperation with “Markups” module. First, it is required to choose five fiducial points to define two mutually-perpendicular planes as the Registration Markers. Second, set a target point and an entry point. Third, click the “Calculate” button to obtain the puncture path information, including the puncture depth and the angles between the puncture path and the reference planes. Finally, these results are displayed on a monitor or transmitted to the gyroscope-based device to assist the surgical operation.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Use Cases}}&lt;br /&gt;
{|&lt;br /&gt;
*Puncture surgery (e.g. endoscopic insertion) is a typical example to show the use of this module. This module calculates the distance of the puncture path and the angle between the probe and the reference planes. The module can also transmit the calculation results to the gyroscope-based device to facilitate the surgical operation.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Tutorials}}&lt;br /&gt;
*1 Load MRI/CT images of brain&amp;lt;br&amp;gt;[[File:GyroGuide-Step-1.png|200px]]&amp;lt;br&amp;gt;&lt;br /&gt;
*2 Define “Markers”, “Target Point” and “Entry Point” using the Markups module.&amp;lt;br&amp;gt;[[File:GyroGuide-Step-2.png|400px]]&amp;lt;br&amp;gt;&lt;br /&gt;
*3 Load the defined fiducial lists&amp;lt;br&amp;gt;[[File:GyroGuide-Step-3.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
:Select GyroGuide module&lt;br /&gt;
: 1 Select the fiducial list - Markers as the markers which define the reference planes.&lt;br /&gt;
: 2 Select the fiducial list – Target as the target point&lt;br /&gt;
: 3 Select the fiducial list – Entry as the entry point&lt;br /&gt;
*4 Calculate puncture path information&amp;lt;br&amp;gt;&lt;br /&gt;
:Click the “Calculate” button. The puncture path information will be displayed in the “Results” section.&amp;lt;br&amp;gt;[[File:GyroGuide-Step-4.png|500px]]&amp;lt;br&amp;gt;&lt;br /&gt;
*5 Export the results&amp;lt;br&amp;gt;&lt;br /&gt;
:Input IP address and port of the puncture instrument in the “Exporter” panel. Click “Send”. The calculated puncture path information could be transmitted to the gyroscope-based device to facilitate the surgical operation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Panels and their use}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[File:GyroGuide-Panel.png|400px]]&amp;lt;br&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;GyroGuide&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Markers&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
It’s a fiducial list which consists of five fiducial points. Three points define the “Red Plane”. The other two points define the “Green Plane” which is perpendicular to the “Red Plane”. The “Blue Plane” is the one perpendicular to both the “Red Plane” and the “Green Plane”. Before measuring angles, the reference planes of the gyroscope have to be registered to the planes defined by the markers.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Target Point&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The fiducial point which represents the target of the puncture.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Entry Point&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
The fiducial point which represents the entry of the puncture.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Calculate Button&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Click the button to calculate the puncture path information.&amp;lt;br&amp;gt;&lt;br /&gt;
Angles between Puncture Path and Red Plane/Green Plane/Blue Plane&amp;lt;br&amp;gt;&lt;br /&gt;
The included angle between the puncture path and the red plane, green plane and blue plane, respectively.&amp;lt;br&amp;gt;&lt;br /&gt;
Distance between Target and Entry Point&amp;lt;br&amp;gt;&lt;br /&gt;
The length of the recommended puncture path.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Exporter&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Hostname&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;IP address of the puncture device. Default: localhost&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Port&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;Port of the puncture device. Default: 18944&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Send Button&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt; Send the calculated results to the designated puncture device, which supports OpenIGTLink protocol.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Similar Modules}}&lt;br /&gt;
*N/A&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|References}}&lt;br /&gt;
* N/A&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Information for Developers}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-developerinfo}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-footer}}&lt;br /&gt;
[[Category:Documentation/{{documentation/version}}/Modules/Segmentation]]&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lpfang</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Modules/GyroGuide&amp;diff=37082</id>
		<title>Documentation/Nightly/Modules/GyroGuide</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Modules/GyroGuide&amp;diff=37082"/>
		<updated>2014-01-22T07:41:54Z</updated>

		<summary type="html">&lt;p&gt;Lpfang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-header}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Introduction and Acknowledgements}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-start|{{documentation/modulename}}}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-row}}&lt;br /&gt;
Extension: [[Documentation/{{documentation/version}}/Extensions/GyroGuide|GyroGuide]]&amp;lt;br&amp;gt;&lt;br /&gt;
Acknowledgments:&lt;br /&gt;
This work is supported by International Scientific and Technical Cooperation Project of Zhejiang Province (Grant 2012C34G2020027)&amp;lt;br&amp;gt;&lt;br /&gt;
Author: &amp;lt;b&amp;gt;Ruifeng Chen&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Luping Fang&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Qing Pan&amp;lt;/b&amp;gt; (College of Information Engineering, Zhejiang University of Technology, Hangzhou, China),&amp;lt;b&amp;gt;Xiaolei Chen&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Jiashu Zhang&amp;lt;/b&amp;gt; (Department of Neurosurgery, PLA General Hospital, Beijing, China)&amp;lt;br&amp;gt;&lt;br /&gt;
Contact: Luping Fang &amp;lt;email&amp;gt;flp@zjut.edu.cn&amp;lt;/email&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-row}}&lt;br /&gt;
&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-end}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Module Description}}&lt;br /&gt;
{|&lt;br /&gt;
*The module should be used in cooperation with “Markups” module. First, it is required to choose five fiducial points to define two mutually-perpendicular planes as the Registration Markers. Second, set a target point and an entry point. Third, click the “Calculate” button to obtain the puncture path information, including the puncture depth and the angles between the puncture path and the reference planes. Finally, these results are displayed on a monitor or transmitted to the gyroscope-based device to assist the surgical operation.&lt;br /&gt;
 &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Use Cases}}&lt;br /&gt;
{|&lt;br /&gt;
Puncture surgery (e.g. endoscopic insertion) is a typical example to show the use of this module. This module calculates the distance of the puncture path and the angle between the probe and the reference planes. The module can also transmit the calculation results to the gyroscope-based device to facilitate the surgical operation.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Tutorials}}&lt;br /&gt;
*1 Load MRI/CT images of brain&amp;lt;br&amp;gt;[[File:GyroGuide-Step-1.png|200px]]&lt;br /&gt;
*2 Define “Markers”, “Target Point” and “Entry Point” using the Markups module.&amp;lt;br&amp;gt;[[File:GyroGuide-Step-2.png|400px]]&lt;br /&gt;
*3 Load the defined fiducial lists&amp;lt;br&amp;gt;[[File:GyroGuide-Step-3.png]]&lt;br /&gt;
:Select GyroGuide module&lt;br /&gt;
: 1 Select the fiducial list - Markers as the markers which define the reference planes.&lt;br /&gt;
: 2 Select the fiducial list – Target as the target point&lt;br /&gt;
: 3 Select the fiducial list – Entry as the entry point&lt;br /&gt;
*4 Calculate puncture path information&amp;lt;br&amp;gt;&lt;br /&gt;
:Click the “Calculate” button. The puncture path information will be displayed in the “Results” section.&amp;lt;br&amp;gt;[[File:GyroGuide-Step-4.png|500px]]&lt;br /&gt;
*5 Export the results&amp;lt;br&amp;gt;&lt;br /&gt;
:Input IP address and port of the puncture instrument in the “Exporter” panel. Click “Send”. The calculated puncture path information could be transmitted to the gyroscope-based device to facilitate the surgical operation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Panels and their use}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[File:GyroGuide-Panel.png|400px]]&lt;br /&gt;
*&amp;lt;b&amp;gt;GyroGuide&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Markers&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
It’s a fiducial list which consists of five fiducial points. Three points define the “Red Plane”. The other two points define the “Green Plane” which is perpendicular to the “Red Plane”. The “Blue Plane” is the one perpendicular to both the “Red Plane” and the “Green Plane”. Before measuring angles, the reference planes of the gyroscope have to be registered to the planes defined by the markers.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Target Point&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The fiducial point which represents the target of the puncture.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Entry Point&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
The fiducial point which represents the entry of the puncture.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Calculate Button&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Click the button to calculate the puncture path information.&amp;lt;br&amp;gt;&lt;br /&gt;
Angles between Puncture Path and Red Plane/Green Plane/Blue Plane&amp;lt;br&amp;gt;&lt;br /&gt;
The included angle between the puncture path and the red plane, green plane and blue plane, respectively.&amp;lt;br&amp;gt;&lt;br /&gt;
Distance between Target and Entry Point&amp;lt;br&amp;gt;&lt;br /&gt;
The length of the recommended puncture path.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Exporter&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Hostname&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;IP address of the puncture device. Default: localhost&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Port&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;Port of the puncture device. Default: 18944&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Send Button&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt; Send the calculated results to the designated puncture device, which supports OpenIGTLink protocol.&amp;lt;br&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Similar Modules}}&lt;br /&gt;
*N/A&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|References}}&lt;br /&gt;
* N/A&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Information for Developers}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-developerinfo}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-footer}}&lt;br /&gt;
[[Category:Documentation/{{documentation/version}}/Modules/Segmentation]]&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lpfang</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Modules/GyroGuide&amp;diff=37081</id>
		<title>Documentation/Nightly/Modules/GyroGuide</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Modules/GyroGuide&amp;diff=37081"/>
		<updated>2014-01-22T07:34:32Z</updated>

		<summary type="html">&lt;p&gt;Lpfang: Created page with '&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&amp;lt;/noinclude&amp;gt; &amp;lt;!-- ---------------------------- --&amp;gt; {{documentation/{{documentation/version}}/module-header}} &amp;lt;!-- -----------------------…'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-header}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Introduction and Acknowledgements}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-start|{{documentation/modulename}}}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-row}}&lt;br /&gt;
Extension: [[Documentation/{{documentation/version}}/Extensions/GyroGuide|GyroGuide]]&amp;lt;br&amp;gt;&lt;br /&gt;
Acknowledgments:&lt;br /&gt;
This work is supported by International Scientific and Technical Cooperation Project of Zhejiang Province (Grant 2012C34G2020027)&amp;lt;br&amp;gt;&lt;br /&gt;
Author: &amp;lt;b&amp;gt;Ruifeng Chen&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Luping Fang&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Qing Pan&amp;lt;/b&amp;gt; (College of Information Engineering, Zhejiang University of Technology, Hangzhou, China),&amp;lt;b&amp;gt;Xiaolei Chen&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Jiashu Zhang&amp;lt;/b&amp;gt; (Department of Neurosurgery, PLA General Hospital, Beijing, China)&amp;lt;br&amp;gt;&lt;br /&gt;
Contact: Luping Fang &amp;lt;email&amp;gt;flp@zjut.edu.cn&amp;lt;/email&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-row}}&lt;br /&gt;
&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-end}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Module Description}}&lt;br /&gt;
{|&lt;br /&gt;
*The module should be used in cooperation with “Markups” module. First, it is required to choose five fiducial points to define two mutually-perpendicular planes as the Registration Markers. Second, set a target point and an entry point. Third, click the “Calculate” button to obtain the puncture path information, including the puncture depth and the angles between the puncture path and the reference planes. Finally, these results are displayed on a monitor or transmitted to the gyroscope-based device to assist the surgical operation.&lt;br /&gt;
 &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Use Cases}}&lt;br /&gt;
{|&lt;br /&gt;
Puncture surgery (e.g. endoscopic insertion) is a typical example to show the use of this module. This module calculates the distance of the puncture path and the angle between the probe and the reference planes. The module can also transmit the calculation results to the gyroscope-based device to facilitate the surgical operation.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Tutorials}}&lt;br /&gt;
*1 Load MRI/CT images of brain&amp;lt;br&amp;gt;[[File:GyroGuide-Step-1.png]]&lt;br /&gt;
*2 Define “Markers”, “Target Point” and “Entry Point” using the Markups module.&amp;lt;br&amp;gt;[[File:GyroGuide-Step-2.png]]&lt;br /&gt;
*3 Load the defined fiducial lists&amp;lt;br&amp;gt;[[File:GyroGuide-Step-3.png]]&lt;br /&gt;
:Select GyroGuide module&lt;br /&gt;
: 1 Select the fiducial list - Markers as the markers which define the reference planes.&lt;br /&gt;
: 2 Select the fiducial list – Target as the target point&lt;br /&gt;
: 3 Select the fiducial list – Entry as the entry point&lt;br /&gt;
*4 Calculate puncture path information&amp;lt;br&amp;gt;&lt;br /&gt;
:Click the “Calculate” button. The puncture path information will be displayed in the “Results” section.&amp;lt;br&amp;gt;[[File:GyroGuide-Step-4.png]]&lt;br /&gt;
*5 Export the results&amp;lt;br&amp;gt;&lt;br /&gt;
:Input IP address and port of the puncture instrument in the “Exporter” panel. Click “Send”. The calculated puncture path information could be transmitted to the gyroscope-based device to facilitate the surgical operation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Panels and their use}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[File:GyroGuide-Panel.png]]&lt;br /&gt;
*&amp;lt;b&amp;gt;GyroGuide&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Markers&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
It’s a fiducial list which consists of five fiducial points. Three points define the “Red Plane”. The other two points define the “Green Plane” which is perpendicular to the “Red Plane”. The “Blue Plane” is the one perpendicular to both the “Red Plane” and the “Green Plane”. Before measuring angles, the reference planes of the gyroscope have to be registered to the planes defined by the markers.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Target Point&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The fiducial point which represents the target of the puncture.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Entry Point&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
The fiducial point which represents the entry of the puncture.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Calculate Button&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Click the button to calculate the puncture path information.&amp;lt;br&amp;gt;&lt;br /&gt;
Angles between Puncture Path and Red Plane/Green Plane/Blue Plane&amp;lt;br&amp;gt;&lt;br /&gt;
The included angle between the puncture path and the red plane, green plane and blue plane, respectively.&amp;lt;br&amp;gt;&lt;br /&gt;
Distance between Target and Entry Point&amp;lt;br&amp;gt;&lt;br /&gt;
The length of the recommended puncture path.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Exporter&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Hostname&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;IP address of the puncture device. Default: localhost&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Port&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;Port of the puncture device. Default: 18944&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Send Button&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt; Send the calculated results to the designated puncture device, which supports OpenIGTLink protocol.&amp;lt;br&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Similar Modules}}&lt;br /&gt;
*N/A&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|References}}&lt;br /&gt;
* N/A&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Information for Developers}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-developerinfo}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-footer}}&lt;br /&gt;
[[Category:Documentation/{{documentation/version}}/Modules/Segmentation]]&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lpfang</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=File:GyroGuide-Panel.png&amp;diff=37080</id>
		<title>File:GyroGuide-Panel.png</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=File:GyroGuide-Panel.png&amp;diff=37080"/>
		<updated>2014-01-22T07:24:20Z</updated>

		<summary type="html">&lt;p&gt;Lpfang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lpfang</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=File:GyroGuide-Step-4.png&amp;diff=37079</id>
		<title>File:GyroGuide-Step-4.png</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=File:GyroGuide-Step-4.png&amp;diff=37079"/>
		<updated>2014-01-22T07:23:55Z</updated>

		<summary type="html">&lt;p&gt;Lpfang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lpfang</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=File:GyroGuide-Step-3.png&amp;diff=37078</id>
		<title>File:GyroGuide-Step-3.png</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=File:GyroGuide-Step-3.png&amp;diff=37078"/>
		<updated>2014-01-22T07:23:24Z</updated>

		<summary type="html">&lt;p&gt;Lpfang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lpfang</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=File:GyroGuide-Step-2.png&amp;diff=37077</id>
		<title>File:GyroGuide-Step-2.png</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=File:GyroGuide-Step-2.png&amp;diff=37077"/>
		<updated>2014-01-22T07:22:46Z</updated>

		<summary type="html">&lt;p&gt;Lpfang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lpfang</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=File:GyroGuide-Step-1.png&amp;diff=37076</id>
		<title>File:GyroGuide-Step-1.png</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=File:GyroGuide-Step-1.png&amp;diff=37076"/>
		<updated>2014-01-22T07:19:33Z</updated>

		<summary type="html">&lt;p&gt;Lpfang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lpfang</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=File:EndoscopyGUI.png&amp;diff=20654</id>
		<title>File:EndoscopyGUI.png</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=File:EndoscopyGUI.png&amp;diff=20654"/>
		<updated>2011-08-10T18:01:58Z</updated>

		<summary type="html">&lt;p&gt;Lpfang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lpfang</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Slicer4:Internationalization_of_Slicer&amp;diff=20653</id>
		<title>Slicer4:Internationalization of Slicer</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Slicer4:Internationalization_of_Slicer&amp;diff=20653"/>
		<updated>2011-08-10T17:57:59Z</updated>

		<summary type="html">&lt;p&gt;Lpfang: /* Scripted Module */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Slicer4:Developers| Back to Slicer 4 Developers]]&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
This pages contains notes on source code additions and modifications of different modules within Slicer for the internationalization purpose.&lt;br /&gt;
=QT-based Internationalization=&lt;br /&gt;
Internationalization is well supported in QT. A lot of modules of Slicer are developed on QT. This has set a good ground for the internationalization of Slicer. &lt;br /&gt;
*basic idea&lt;br /&gt;
In Qt, tr() is one of the static public members of QObject class, which returns a translated version of input sourceText.&lt;br /&gt;
    QString QObject::tr ( const char * sourceText, const char * disambiguation = 0, int n = -1 ) [static]&lt;br /&gt;
tr() will search the translation in a so-called translation file. If nothing is found, then the sourceText instead of the translated version will be displayed directly. For example,&lt;br /&gt;
    label-&amp;gt;setText(tr(&amp;quot;Measurement&amp;quot;));&lt;br /&gt;
*translation file template&lt;br /&gt;
The following is an example of the translation file, from English to Chinese.&lt;br /&gt;
    &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
    &amp;lt;!DOCTYPE TS&amp;gt;&lt;br /&gt;
    &amp;lt;TS version=&amp;quot;2.0&amp;quot; language=&amp;quot;zh_CN&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;qSlicerMainWindow&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;&amp;amp;amp;File&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;文件&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;&amp;amp;amp;Edit&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;编辑&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;Feedback&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;反馈&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;Import Scene&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;导入场景&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;Add Data&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;添加数据&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/TS&amp;gt;&lt;br /&gt;
In the above example, all the texts are within the scope of qSlicerMainWindow class. So, 'qSlicerMainWindo' occurs in section 'name'.&lt;br /&gt;
&lt;br /&gt;
*Prepare translation file&lt;br /&gt;
The translation file can be prepared manually based on the above template and file name extension should be like .ts, for example, lang_hz.ts, lang_de.hz, etc.&lt;br /&gt;
Translation file can also be created conviently by a tool called lupdate. lupdate is a command line tool that finds the translatable strings (tr())in the specified source, header and Qt Designer interface files, and produces or updates .ts translation files. TS files are text files, which can be viewed or edited by any text editor tools. The following command searchs the folder and subfolders for tr() occurences in files (.ui, .h, .cxx) and create translation file test.ts.&lt;br /&gt;
       Usage: lupdate c:\myproject\slicer4\ -ts   test.ts&lt;br /&gt;
 &lt;br /&gt;
lrelease is a command line tool that produces QM files out of TS files. The QM file format is a compact binary format that is used by the localized application. It provides extremely fast lookups for translations. &lt;br /&gt;
       Usage: lrelease test.ts&lt;br /&gt;
&lt;br /&gt;
*Modifications to the source codes:&lt;br /&gt;
&lt;br /&gt;
In file \Slicer4\Base\QTCore\qSlicerCoreApplication.h, add the following line:&lt;br /&gt;
    #include &amp;lt;QTranslator&amp;gt;&lt;br /&gt;
In file \Slicer4\Applications\SlicerQT\main.cxx (around line#230), add the following lines:&lt;br /&gt;
    static QTranslator* translator;&lt;br /&gt;
    if (translator != NULL)&lt;br /&gt;
    {&lt;br /&gt;
        qApp-&amp;gt;removeTranslator(translator);&lt;br /&gt;
        delete translator;&lt;br /&gt;
        translator = NULL;&lt;br /&gt;
    }&lt;br /&gt;
    QString langCode= argv[1];&lt;br /&gt;
    translator = new QTranslator;&lt;br /&gt;
    QString qmFilename = &amp;quot;lang_&amp;quot; + langCode; &lt;br /&gt;
    if (translator-&amp;gt;load(qmFilename))&lt;br /&gt;
    {&lt;br /&gt;
        qApp-&amp;gt;installTranslator(translator);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
If slicer4 launches with the first argument being 'zh', lang_zh.qm will be installed. The extension .qm doesn't need to be specified, for installTranslator only loads QM file.&lt;br /&gt;
&lt;br /&gt;
*To be continued&lt;br /&gt;
&lt;br /&gt;
=Scripted Module=&lt;br /&gt;
Some modules are implemented in Python. Endoscopy is one of the typical examples. In endoscopy.py, if we change the code in line#10 &lt;br /&gt;
    parent.titel = “Endoscopy”&lt;br /&gt;
to&lt;br /&gt;
    parent.title = slicer.app.translate(self.__class__.__name__, &amp;quot;Endoscopy&amp;quot;)&lt;br /&gt;
then &amp;quot;Endoscopy&amp;quot; can be shown in other languages.Similarily, other displayable strings can be handled in the same way.&lt;br /&gt;
In endoscopy.py, classes 'Endoscopy' and 'EndoscopyWidget' are defined. String &amp;quot;Endoscopy&amp;quot; is used in Class 'Endoscopy'. Strings like 'Path' ,'Input Fiducial' and 'camera' are used in 'EndoscopyWidget'. The following lines should be appended in the TS file:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;context&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Endoscopy&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;message&amp;gt;&lt;br /&gt;
         &amp;lt;source&amp;gt;Endoscopy&amp;lt;/source&amp;gt;&lt;br /&gt;
         &amp;lt;translation&amp;gt;内窥镜&amp;lt;/translation&amp;gt;&lt;br /&gt;
         &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;context&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;EndoscopyWidget&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;message&amp;gt;&lt;br /&gt;
         &amp;lt;source&amp;gt;Path&amp;lt;/source&amp;gt;&lt;br /&gt;
         &amp;lt;translation&amp;gt;路径&amp;lt;/translation&amp;gt;&lt;br /&gt;
         &amp;lt;/message&amp;gt;&lt;br /&gt;
         &amp;lt;message&amp;gt;&lt;br /&gt;
         &amp;lt;source&amp;gt;Camera&amp;lt;/source&amp;gt;&lt;br /&gt;
         &amp;lt;translation&amp;gt;相机(Camera)&amp;lt;/translation&amp;gt;&lt;br /&gt;
         &amp;lt;/message&amp;gt;&lt;br /&gt;
         &amp;lt;message&amp;gt;&lt;br /&gt;
         &amp;lt;source&amp;gt;Input Fiducials&amp;lt;/source&amp;gt;&lt;br /&gt;
         &amp;lt;translation&amp;gt;输入参考点(Input Fiducials)&amp;lt;/translation&amp;gt;&lt;br /&gt;
         &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;/context&amp;gt;&lt;br /&gt;
[[image:EndoscopyGUI.png|left|thumb|400px|Screenshot of the Chinese version of the GUI for Endoscopy module]]&lt;br /&gt;
&lt;br /&gt;
=To be continued=&lt;/div&gt;</summary>
		<author><name>Lpfang</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Slicer4:Internationalization_of_Slicer&amp;diff=20652</id>
		<title>Slicer4:Internationalization of Slicer</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Slicer4:Internationalization_of_Slicer&amp;diff=20652"/>
		<updated>2011-08-10T17:49:09Z</updated>

		<summary type="html">&lt;p&gt;Lpfang: /* Scripted Module */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Slicer4:Developers| Back to Slicer 4 Developers]]&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
This pages contains notes on source code additions and modifications of different modules within Slicer for the internationalization purpose.&lt;br /&gt;
=QT-based Internationalization=&lt;br /&gt;
Internationalization is well supported in QT. A lot of modules of Slicer are developed on QT. This has set a good ground for the internationalization of Slicer. &lt;br /&gt;
*basic idea&lt;br /&gt;
In Qt, tr() is one of the static public members of QObject class, which returns a translated version of input sourceText.&lt;br /&gt;
    QString QObject::tr ( const char * sourceText, const char * disambiguation = 0, int n = -1 ) [static]&lt;br /&gt;
tr() will search the translation in a so-called translation file. If nothing is found, then the sourceText instead of the translated version will be displayed directly. For example,&lt;br /&gt;
    label-&amp;gt;setText(tr(&amp;quot;Measurement&amp;quot;));&lt;br /&gt;
*translation file template&lt;br /&gt;
The following is an example of the translation file, from English to Chinese.&lt;br /&gt;
    &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
    &amp;lt;!DOCTYPE TS&amp;gt;&lt;br /&gt;
    &amp;lt;TS version=&amp;quot;2.0&amp;quot; language=&amp;quot;zh_CN&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;qSlicerMainWindow&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;&amp;amp;amp;File&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;文件&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;&amp;amp;amp;Edit&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;编辑&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;Feedback&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;反馈&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;Import Scene&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;导入场景&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;Add Data&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;添加数据&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/TS&amp;gt;&lt;br /&gt;
In the above example, all the texts are within the scope of qSlicerMainWindow class. So, 'qSlicerMainWindo' occurs in section 'name'.&lt;br /&gt;
&lt;br /&gt;
*Prepare translation file&lt;br /&gt;
The translation file can be prepared manually based on the above template and file name extension should be like .ts, for example, lang_hz.ts, lang_de.hz, etc.&lt;br /&gt;
Translation file can also be created conviently by a tool called lupdate. lupdate is a command line tool that finds the translatable strings (tr())in the specified source, header and Qt Designer interface files, and produces or updates .ts translation files. TS files are text files, which can be viewed or edited by any text editor tools. The following command searchs the folder and subfolders for tr() occurences in files (.ui, .h, .cxx) and create translation file test.ts.&lt;br /&gt;
       Usage: lupdate c:\myproject\slicer4\ -ts   test.ts&lt;br /&gt;
 &lt;br /&gt;
lrelease is a command line tool that produces QM files out of TS files. The QM file format is a compact binary format that is used by the localized application. It provides extremely fast lookups for translations. &lt;br /&gt;
       Usage: lrelease test.ts&lt;br /&gt;
&lt;br /&gt;
*Modifications to the source codes:&lt;br /&gt;
&lt;br /&gt;
In file \Slicer4\Base\QTCore\qSlicerCoreApplication.h, add the following line:&lt;br /&gt;
    #include &amp;lt;QTranslator&amp;gt;&lt;br /&gt;
In file \Slicer4\Applications\SlicerQT\main.cxx (around line#230), add the following lines:&lt;br /&gt;
    static QTranslator* translator;&lt;br /&gt;
    if (translator != NULL)&lt;br /&gt;
    {&lt;br /&gt;
        qApp-&amp;gt;removeTranslator(translator);&lt;br /&gt;
        delete translator;&lt;br /&gt;
        translator = NULL;&lt;br /&gt;
    }&lt;br /&gt;
    QString langCode= argv[1];&lt;br /&gt;
    translator = new QTranslator;&lt;br /&gt;
    QString qmFilename = &amp;quot;lang_&amp;quot; + langCode; &lt;br /&gt;
    if (translator-&amp;gt;load(qmFilename))&lt;br /&gt;
    {&lt;br /&gt;
        qApp-&amp;gt;installTranslator(translator);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
If slicer4 launches with the first argument being 'zh', lang_zh.qm will be installed. The extension .qm doesn't need to be specified, for installTranslator only loads QM file.&lt;br /&gt;
&lt;br /&gt;
*To be continued&lt;br /&gt;
&lt;br /&gt;
=Scripted Module=&lt;br /&gt;
Some modules are implemented in Python. Endoscopy is one of the typical examples. In endoscopy.py, if we change the code in line#10 &lt;br /&gt;
    parent.titel = “Endoscopy”&lt;br /&gt;
to&lt;br /&gt;
    parent.title = slicer.app.translate(self.__class__.__name__, &amp;quot;Endoscopy&amp;quot;)&lt;br /&gt;
then &amp;quot;Endoscopy&amp;quot; can be shown in other languages.Similarily, other displayable strings can be handled in the same way.&lt;br /&gt;
In endoscopy.py, classes 'Endoscopy' and 'EndoscopyWidget' are defined. String &amp;quot;Endoscopy&amp;quot; is used in Class 'Endoscopy'. Strings like 'Path' ,'Input Fiducial' and 'camera' are used in 'EndoscopyWidget'. The following lines should be appended in the TS file:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;context&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Endoscopy&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;message&amp;gt;&lt;br /&gt;
         &amp;lt;source&amp;gt;Endoscopy&amp;lt;/source&amp;gt;&lt;br /&gt;
         &amp;lt;translation&amp;gt;内窥镜&amp;lt;/translation&amp;gt;&lt;br /&gt;
         &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;context&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;EndoscopyWidget&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;message&amp;gt;&lt;br /&gt;
         &amp;lt;source&amp;gt;Path&amp;lt;/source&amp;gt;&lt;br /&gt;
         &amp;lt;translation&amp;gt;路径&amp;lt;/translation&amp;gt;&lt;br /&gt;
         &amp;lt;/message&amp;gt;&lt;br /&gt;
         &amp;lt;message&amp;gt;&lt;br /&gt;
         &amp;lt;source&amp;gt;Camera&amp;lt;/source&amp;gt;&lt;br /&gt;
         &amp;lt;translation&amp;gt;相机(Camera)&amp;lt;/translation&amp;gt;&lt;br /&gt;
         &amp;lt;/message&amp;gt;&lt;br /&gt;
         &amp;lt;message&amp;gt;&lt;br /&gt;
         &amp;lt;source&amp;gt;Input Fiducials&amp;lt;/source&amp;gt;&lt;br /&gt;
         &amp;lt;translation&amp;gt;输入参考点(Input Fiducials)&amp;lt;/translation&amp;gt;&lt;br /&gt;
         &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;/context&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=To be continued=&lt;/div&gt;</summary>
		<author><name>Lpfang</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Slicer4:Internationalization_of_Slicer&amp;diff=20627</id>
		<title>Slicer4:Internationalization of Slicer</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Slicer4:Internationalization_of_Slicer&amp;diff=20627"/>
		<updated>2011-08-09T14:00:53Z</updated>

		<summary type="html">&lt;p&gt;Lpfang: /* Scripted Module */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Slicer4:Developers| Back to Slicer 4 Developers]]&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
This pages contains notes on source code additions and modifications of different modules within Slicer for the internationalization purpose.&lt;br /&gt;
=QT-based Internationalization=&lt;br /&gt;
Internationalization is well supported in QT. A lot of modules of Slicer are developed on QT. This has set a good ground for the internationalization of Slicer. &lt;br /&gt;
*basic idea&lt;br /&gt;
In Qt, tr() is one of the static public members of QObject class, which returns a translated version of input sourceText.&lt;br /&gt;
    QString QObject::tr ( const char * sourceText, const char * disambiguation = 0, int n = -1 ) [static]&lt;br /&gt;
tr() will search the translation in a so-called translation file. If nothing is found, then the sourceText instead of the translated version will be displayed directly. For example,&lt;br /&gt;
    label-&amp;gt;setText(tr(&amp;quot;Measurement&amp;quot;));&lt;br /&gt;
*translation file template&lt;br /&gt;
The following is an example of the translation file, from English to Chinese.&lt;br /&gt;
    &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
    &amp;lt;!DOCTYPE TS&amp;gt;&lt;br /&gt;
    &amp;lt;TS version=&amp;quot;2.0&amp;quot; language=&amp;quot;zh_CN&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;qSlicerMainWindow&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;&amp;amp;amp;File&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;文件&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;&amp;amp;amp;Edit&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;编辑&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;Feedback&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;反馈&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;Import Scene&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;导入场景&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;Add Data&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;添加数据&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/TS&amp;gt;&lt;br /&gt;
In the above example, all the texts are within the scope of qSlicerMainWindow class. So, 'qSlicerMainWindo' occurs in section 'name'.&lt;br /&gt;
&lt;br /&gt;
*Prepare translation file&lt;br /&gt;
The translation file can be prepared manually based on the above template and file name extension should be like .ts, for example, lang_hz.ts, lang_de.hz, etc.&lt;br /&gt;
Translation file can also be created conviently by a tool called lupdate. lupdate is a command line tool that finds the translatable strings (tr())in the specified source, header and Qt Designer interface files, and produces or updates .ts translation files. TS files are text files, which can be viewed or edited by any text editor tools. The following command searchs the folder and subfolders for tr() occurences in files (.ui, .h, .cxx) and create translation file test.ts.&lt;br /&gt;
       Usage: lupdate c:\myproject\slicer4\ -ts   test.ts&lt;br /&gt;
 &lt;br /&gt;
lrelease is a command line tool that produces QM files out of TS files. The QM file format is a compact binary format that is used by the localized application. It provides extremely fast lookups for translations. &lt;br /&gt;
       Usage: lrelease test.ts&lt;br /&gt;
&lt;br /&gt;
*Modifications to the source codes:&lt;br /&gt;
&lt;br /&gt;
In file \Slicer4\Base\QTCore\qSlicerCoreApplication.h, add the following line:&lt;br /&gt;
    #include &amp;lt;QTranslator&amp;gt;&lt;br /&gt;
In file \Slicer4\Applications\SlicerQT\main.cxx (around line#230), add the following lines:&lt;br /&gt;
    static QTranslator* translator;&lt;br /&gt;
    if (translator != NULL)&lt;br /&gt;
    {&lt;br /&gt;
        qApp-&amp;gt;removeTranslator(translator);&lt;br /&gt;
        delete translator;&lt;br /&gt;
        translator = NULL;&lt;br /&gt;
    }&lt;br /&gt;
    QString langCode= argv[1];&lt;br /&gt;
    translator = new QTranslator;&lt;br /&gt;
    QString qmFilename = &amp;quot;lang_&amp;quot; + langCode; &lt;br /&gt;
    if (translator-&amp;gt;load(qmFilename))&lt;br /&gt;
    {&lt;br /&gt;
        qApp-&amp;gt;installTranslator(translator);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
If slicer4 launches with the first argument being 'zh', lang_zh.qm will be installed. The extension .qm doesn't need to be specified, for installTranslator only loads QM file.&lt;br /&gt;
&lt;br /&gt;
*To be continued&lt;br /&gt;
&lt;br /&gt;
=Scripted Module=&lt;br /&gt;
Some modules are implemented in Python. Endoscopy is one of the typical examples. In endoscopy.py, if we change the code in line#10 &lt;br /&gt;
    parent.titel = “Endoscopy”&lt;br /&gt;
to&lt;br /&gt;
    parent.title = slicer.app.translate(self.__class__.__name__, &amp;quot;Endoscopy&amp;quot;)&lt;br /&gt;
then &amp;quot;Endoscopy&amp;quot; can be shown in other languages.Similarily, other displayable strings can be handled in the same way.&lt;br /&gt;
In endoscopy.py, classes 'Endoscopy' and 'EndoscopyWidget' are defined. String &amp;quot;Endoscopy&amp;quot; is used in Class 'Endoscopy'. String 'Path' is used in 'EndoscopyWidget'. The following lines should be appended in the TS file:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;context&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Endoscopy&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;message&amp;gt;&lt;br /&gt;
         &amp;lt;source&amp;gt;Endoscopy&amp;lt;/source&amp;gt;&lt;br /&gt;
         &amp;lt;translation&amp;gt;内窥镜&amp;lt;/translation&amp;gt;&lt;br /&gt;
         &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;context&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;EndoscopyWidget&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;message&amp;gt;&lt;br /&gt;
         &amp;lt;source&amp;gt;Path&amp;lt;/source&amp;gt;&lt;br /&gt;
         &amp;lt;translation&amp;gt;路径&amp;lt;/translation&amp;gt;&lt;br /&gt;
         &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;/context&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=To be continued=&lt;/div&gt;</summary>
		<author><name>Lpfang</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Slicer4:Internationalization_of_Slicer&amp;diff=20626</id>
		<title>Slicer4:Internationalization of Slicer</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Slicer4:Internationalization_of_Slicer&amp;diff=20626"/>
		<updated>2011-08-09T13:53:53Z</updated>

		<summary type="html">&lt;p&gt;Lpfang: /* Scripted Module */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Slicer4:Developers| Back to Slicer 4 Developers]]&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
This pages contains notes on source code additions and modifications of different modules within Slicer for the internationalization purpose.&lt;br /&gt;
=QT-based Internationalization=&lt;br /&gt;
Internationalization is well supported in QT. A lot of modules of Slicer are developed on QT. This has set a good ground for the internationalization of Slicer. &lt;br /&gt;
*basic idea&lt;br /&gt;
In Qt, tr() is one of the static public members of QObject class, which returns a translated version of input sourceText.&lt;br /&gt;
    QString QObject::tr ( const char * sourceText, const char * disambiguation = 0, int n = -1 ) [static]&lt;br /&gt;
tr() will search the translation in a so-called translation file. If nothing is found, then the sourceText instead of the translated version will be displayed directly. For example,&lt;br /&gt;
    label-&amp;gt;setText(tr(&amp;quot;Measurement&amp;quot;));&lt;br /&gt;
*translation file template&lt;br /&gt;
The following is an example of the translation file, from English to Chinese.&lt;br /&gt;
    &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
    &amp;lt;!DOCTYPE TS&amp;gt;&lt;br /&gt;
    &amp;lt;TS version=&amp;quot;2.0&amp;quot; language=&amp;quot;zh_CN&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;qSlicerMainWindow&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;&amp;amp;amp;File&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;文件&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;&amp;amp;amp;Edit&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;编辑&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;Feedback&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;反馈&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;Import Scene&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;导入场景&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;Add Data&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;添加数据&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/TS&amp;gt;&lt;br /&gt;
In the above example, all the texts are within the scope of qSlicerMainWindow class. So, 'qSlicerMainWindo' occurs in section 'name'.&lt;br /&gt;
&lt;br /&gt;
*Prepare translation file&lt;br /&gt;
The translation file can be prepared manually based on the above template and file name extension should be like .ts, for example, lang_hz.ts, lang_de.hz, etc.&lt;br /&gt;
Translation file can also be created conviently by a tool called lupdate. lupdate is a command line tool that finds the translatable strings (tr())in the specified source, header and Qt Designer interface files, and produces or updates .ts translation files. TS files are text files, which can be viewed or edited by any text editor tools. The following command searchs the folder and subfolders for tr() occurences in files (.ui, .h, .cxx) and create translation file test.ts.&lt;br /&gt;
       Usage: lupdate c:\myproject\slicer4\ -ts   test.ts&lt;br /&gt;
 &lt;br /&gt;
lrelease is a command line tool that produces QM files out of TS files. The QM file format is a compact binary format that is used by the localized application. It provides extremely fast lookups for translations. &lt;br /&gt;
       Usage: lrelease test.ts&lt;br /&gt;
&lt;br /&gt;
*Modifications to the source codes:&lt;br /&gt;
&lt;br /&gt;
In file \Slicer4\Base\QTCore\qSlicerCoreApplication.h, add the following line:&lt;br /&gt;
    #include &amp;lt;QTranslator&amp;gt;&lt;br /&gt;
In file \Slicer4\Applications\SlicerQT\main.cxx (around line#230), add the following lines:&lt;br /&gt;
    static QTranslator* translator;&lt;br /&gt;
    if (translator != NULL)&lt;br /&gt;
    {&lt;br /&gt;
        qApp-&amp;gt;removeTranslator(translator);&lt;br /&gt;
        delete translator;&lt;br /&gt;
        translator = NULL;&lt;br /&gt;
    }&lt;br /&gt;
    QString langCode= argv[1];&lt;br /&gt;
    translator = new QTranslator;&lt;br /&gt;
    QString qmFilename = &amp;quot;lang_&amp;quot; + langCode; &lt;br /&gt;
    if (translator-&amp;gt;load(qmFilename))&lt;br /&gt;
    {&lt;br /&gt;
        qApp-&amp;gt;installTranslator(translator);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
If slicer4 launches with the first argument being 'zh', lang_zh.qm will be installed. The extension .qm doesn't need to be specified, for installTranslator only loads QM file.&lt;br /&gt;
&lt;br /&gt;
*To be continued&lt;br /&gt;
&lt;br /&gt;
=Scripted Module=&lt;br /&gt;
Some modules are implemented in Python. Endoscopy is one of the typical examples. In endoscopy.py, if we change the code in line#10 &lt;br /&gt;
    parent.titel = “Endoscopy”&lt;br /&gt;
to&lt;br /&gt;
    parent.title = slicer.app.translate(self.__class__.__name__, &amp;quot;Endoscopy&amp;quot;)&lt;br /&gt;
then &amp;quot;Endoscopy&amp;quot; can be shown in other languages.Similarily, other displayable strings can be handled in the same way.&lt;br /&gt;
Browse file endoscopy.py, it is found that string &amp;quot;Endoscopy&amp;quot; is within Class 'Endoscopy'. Therefore, the following lines should be appended in the TS file:&lt;br /&gt;
&lt;br /&gt;
=To be continued=&lt;/div&gt;</summary>
		<author><name>Lpfang</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Slicer4:Internationalization_of_Slicer&amp;diff=20625</id>
		<title>Slicer4:Internationalization of Slicer</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Slicer4:Internationalization_of_Slicer&amp;diff=20625"/>
		<updated>2011-08-09T13:35:39Z</updated>

		<summary type="html">&lt;p&gt;Lpfang: /* QT-based Internationalization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Slicer4:Developers| Back to Slicer 4 Developers]]&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
This pages contains notes on source code additions and modifications of different modules within Slicer for the internationalization purpose.&lt;br /&gt;
=QT-based Internationalization=&lt;br /&gt;
Internationalization is well supported in QT. A lot of modules of Slicer are developed on QT. This has set a good ground for the internationalization of Slicer. &lt;br /&gt;
*basic idea&lt;br /&gt;
In Qt, tr() is one of the static public members of QObject class, which returns a translated version of input sourceText.&lt;br /&gt;
    QString QObject::tr ( const char * sourceText, const char * disambiguation = 0, int n = -1 ) [static]&lt;br /&gt;
tr() will search the translation in a so-called translation file. If nothing is found, then the sourceText instead of the translated version will be displayed directly. For example,&lt;br /&gt;
    label-&amp;gt;setText(tr(&amp;quot;Measurement&amp;quot;));&lt;br /&gt;
*translation file template&lt;br /&gt;
The following is an example of the translation file, from English to Chinese.&lt;br /&gt;
    &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
    &amp;lt;!DOCTYPE TS&amp;gt;&lt;br /&gt;
    &amp;lt;TS version=&amp;quot;2.0&amp;quot; language=&amp;quot;zh_CN&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;qSlicerMainWindow&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;&amp;amp;amp;File&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;文件&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;&amp;amp;amp;Edit&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;编辑&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;Feedback&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;反馈&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;Import Scene&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;导入场景&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;Add Data&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;添加数据&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/TS&amp;gt;&lt;br /&gt;
In the above example, all the texts are within the scope of qSlicerMainWindow class. So, 'qSlicerMainWindo' occurs in section 'name'.&lt;br /&gt;
&lt;br /&gt;
*Prepare translation file&lt;br /&gt;
The translation file can be prepared manually based on the above template and file name extension should be like .ts, for example, lang_hz.ts, lang_de.hz, etc.&lt;br /&gt;
Translation file can also be created conviently by a tool called lupdate. lupdate is a command line tool that finds the translatable strings (tr())in the specified source, header and Qt Designer interface files, and produces or updates .ts translation files. TS files are text files, which can be viewed or edited by any text editor tools. The following command searchs the folder and subfolders for tr() occurences in files (.ui, .h, .cxx) and create translation file test.ts.&lt;br /&gt;
       Usage: lupdate c:\myproject\slicer4\ -ts   test.ts&lt;br /&gt;
 &lt;br /&gt;
lrelease is a command line tool that produces QM files out of TS files. The QM file format is a compact binary format that is used by the localized application. It provides extremely fast lookups for translations. &lt;br /&gt;
       Usage: lrelease test.ts&lt;br /&gt;
&lt;br /&gt;
*Modifications to the source codes:&lt;br /&gt;
&lt;br /&gt;
In file \Slicer4\Base\QTCore\qSlicerCoreApplication.h, add the following line:&lt;br /&gt;
    #include &amp;lt;QTranslator&amp;gt;&lt;br /&gt;
In file \Slicer4\Applications\SlicerQT\main.cxx (around line#230), add the following lines:&lt;br /&gt;
    static QTranslator* translator;&lt;br /&gt;
    if (translator != NULL)&lt;br /&gt;
    {&lt;br /&gt;
        qApp-&amp;gt;removeTranslator(translator);&lt;br /&gt;
        delete translator;&lt;br /&gt;
        translator = NULL;&lt;br /&gt;
    }&lt;br /&gt;
    QString langCode= argv[1];&lt;br /&gt;
    translator = new QTranslator;&lt;br /&gt;
    QString qmFilename = &amp;quot;lang_&amp;quot; + langCode; &lt;br /&gt;
    if (translator-&amp;gt;load(qmFilename))&lt;br /&gt;
    {&lt;br /&gt;
        qApp-&amp;gt;installTranslator(translator);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
If slicer4 launches with the first argument being 'zh', lang_zh.qm will be installed. The extension .qm doesn't need to be specified, for installTranslator only loads QM file.&lt;br /&gt;
&lt;br /&gt;
*To be continued&lt;br /&gt;
&lt;br /&gt;
=Scripted Module=&lt;br /&gt;
Some modules are implemented in Python. Endoscopy is one of the typical examples. In endoscopy.py, if we change the code in line#10 &lt;br /&gt;
    parent.titel = “Endoscopy”&lt;br /&gt;
to&lt;br /&gt;
    parent.title = slicer.app.translate(self.__class__.__name__, &amp;quot;Endoscopy&amp;quot;)&lt;br /&gt;
then &amp;quot;Endoscopy&amp;quot; can be shown in other languages.Similarily, other displayable strings can be handled in the same way.&lt;br /&gt;
&lt;br /&gt;
=To be continued=&lt;/div&gt;</summary>
		<author><name>Lpfang</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Slicer4:Internationalization_of_Slicer&amp;diff=20624</id>
		<title>Slicer4:Internationalization of Slicer</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Slicer4:Internationalization_of_Slicer&amp;diff=20624"/>
		<updated>2011-08-09T13:34:42Z</updated>

		<summary type="html">&lt;p&gt;Lpfang: /* QT-based Internationalization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Slicer4:Developers| Back to Slicer 4 Developers]]&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
This pages contains notes on source code additions and modifications of different modules within Slicer for the internationalization purpose.&lt;br /&gt;
=QT-based Internationalization=&lt;br /&gt;
Internationalization is well supported in QT. A lot of modules of Slicer are developed on QT. This has set a good ground for the internationalization of Slicer. &lt;br /&gt;
*basic idea&lt;br /&gt;
In Qt, tr() is one of the static public members of QObject class, which returns a translated version of input sourceText.&lt;br /&gt;
    QString QObject::tr ( const char * sourceText, const char * disambiguation = 0, int n = -1 ) [static]&lt;br /&gt;
tr() will search the translation in a so-called translation file. If nothing is found, then the sourceText instead of the translated version will be displayed directly. For example,&lt;br /&gt;
    label-&amp;gt;setText(tr(&amp;quot;Measurement&amp;quot;));&lt;br /&gt;
*translation file template&lt;br /&gt;
The following is an example of the translation file, from English to Chinese.&lt;br /&gt;
    &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
    &amp;lt;!DOCTYPE TS&amp;gt;&lt;br /&gt;
    &amp;lt;TS version=&amp;quot;2.0&amp;quot; language=&amp;quot;zh_CN&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;qSlicerMainWindow&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;&amp;amp;amp;File&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;文件&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;&amp;amp;amp;Edit&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;编辑&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;Feedback&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;反馈&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;Import Scene&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;导入场景&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;Add Data&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;添加数据&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/TS&amp;gt;&lt;br /&gt;
In the above example, all the texts are within the scope of qSlicerMainWindow class. So, 'qSlicerMainWindo' occurs in section 'name'.&lt;br /&gt;
&lt;br /&gt;
*Prepare translation file&lt;br /&gt;
The translation file can be prepared manually based on the above template and file name extension should be like .ts, for example, lang_hz.ts, lang_de.hz, etc.&lt;br /&gt;
Translation file can also be created conviently by a tool called lupdate. lupdate is a command line tool that finds the translatable strings (tr())in the specified source, header and Qt Designer interface files, and produces or updates .ts translation files. TS files are text files, which can be viewed or edited by any text editor tools. The following command searchs the folder and subfolders for tr() occurences in files (.ui,.h,.cxx) and create translation file test.ts.&lt;br /&gt;
       Usage: lupdate c:\myproject\slicer4\ -ts   test.ts&lt;br /&gt;
 &lt;br /&gt;
lrelease is a command line tool that produces QM files out of TS files. The QM file format is a compact binary format that is used by the localized application. It provides extremely fast lookups for translations. &lt;br /&gt;
       Usage: lrelease test.ts&lt;br /&gt;
&lt;br /&gt;
*Modifications to the source codes:&lt;br /&gt;
&lt;br /&gt;
In file \Slicer4\Base\QTCore\qSlicerCoreApplication.h, add the following line:&lt;br /&gt;
    #include &amp;lt;QTranslator&amp;gt;&lt;br /&gt;
In file \Slicer4\Applications\SlicerQT\main.cxx (around line#230), add the following lines:&lt;br /&gt;
    static QTranslator* translator;&lt;br /&gt;
    if (translator != NULL)&lt;br /&gt;
    {&lt;br /&gt;
        qApp-&amp;gt;removeTranslator(translator);&lt;br /&gt;
        delete translator;&lt;br /&gt;
        translator = NULL;&lt;br /&gt;
    }&lt;br /&gt;
    QString langCode= argv[1];&lt;br /&gt;
    translator = new QTranslator;&lt;br /&gt;
    QString qmFilename = &amp;quot;lang_&amp;quot; + langCode; &lt;br /&gt;
    if (translator-&amp;gt;load(qmFilename))&lt;br /&gt;
    {&lt;br /&gt;
        qApp-&amp;gt;installTranslator(translator);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
If slicer4 launches with the first argument being 'zh', lang_zh.qm will be installed. The extension .qm doesn't need to be specified, for installTranslator only loads QM file.&lt;br /&gt;
&lt;br /&gt;
*To be continued&lt;br /&gt;
&lt;br /&gt;
=Scripted Module=&lt;br /&gt;
Some modules are implemented in Python. Endoscopy is one of the typical examples. In endoscopy.py, if we change the code in line#10 &lt;br /&gt;
    parent.titel = “Endoscopy”&lt;br /&gt;
to&lt;br /&gt;
    parent.title = slicer.app.translate(self.__class__.__name__, &amp;quot;Endoscopy&amp;quot;)&lt;br /&gt;
then &amp;quot;Endoscopy&amp;quot; can be shown in other languages.Similarily, other displayable strings can be handled in the same way.&lt;br /&gt;
&lt;br /&gt;
=To be continued=&lt;/div&gt;</summary>
		<author><name>Lpfang</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Slicer4:Internationalization_of_Slicer&amp;diff=20622</id>
		<title>Slicer4:Internationalization of Slicer</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Slicer4:Internationalization_of_Slicer&amp;diff=20622"/>
		<updated>2011-08-08T16:50:28Z</updated>

		<summary type="html">&lt;p&gt;Lpfang: /* QT-based Internationalization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Slicer4:Developers| Back to Slicer 4 Developers]]&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
This pages contains notes on source code additions and modifications of different modules within Slicer for the internationalization purpose.&lt;br /&gt;
=QT-based Internationalization=&lt;br /&gt;
Internationalization is well supported in QT. A lot of modules of Slicer are developed on QT. This has set a good ground for the internationalization of Slicer. &lt;br /&gt;
*basic idea&lt;br /&gt;
In Qt, tr() is one of the static public members of QObject class, which returns a translated version of input sourceText.&lt;br /&gt;
    QString QObject::tr ( const char * sourceText, const char * disambiguation = 0, int n = -1 ) [static]&lt;br /&gt;
tr() will search the translation in a so-called translation file. If nothing is found, then the sourceText instead of the translated version will be displayed directly. For example,&lt;br /&gt;
    label-&amp;gt;setText(tr(&amp;quot;Measurement&amp;quot;));&lt;br /&gt;
*translation file template&lt;br /&gt;
The following is an example of the translation file, from English to Chinese.&lt;br /&gt;
    &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
    &amp;lt;!DOCTYPE TS&amp;gt;&lt;br /&gt;
    &amp;lt;TS version=&amp;quot;2.0&amp;quot; language=&amp;quot;zh_CN&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;qSlicerMainWindow&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;&amp;amp;amp;File&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;文件&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;&amp;amp;amp;Edit&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;编辑&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;Feedback&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;反馈&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;Import Scene&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;导入场景&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;Add Data&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;添加数据&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/TS&amp;gt;&lt;br /&gt;
In the above example, all the texts are within the scope of qSlicerMainWindow class. So, 'qSlicerMainWindo' occurs in section 'name'.&lt;br /&gt;
&lt;br /&gt;
*The following modifications are are needed:&lt;br /&gt;
&lt;br /&gt;
In file \Slicer4\Base\QTCore\qSlicerCoreApplication.h, add the following line:&lt;br /&gt;
    #include &amp;lt;QTranslator&amp;gt;&lt;br /&gt;
In file \Slicer4\Applications\SlicerQT\main.cxx (around line#230), add the following lines:&lt;br /&gt;
    static QTranslator* translator;&lt;br /&gt;
    if (translator != NULL)&lt;br /&gt;
    {&lt;br /&gt;
        qApp-&amp;gt;removeTranslator(translator);&lt;br /&gt;
        delete translator;&lt;br /&gt;
        translator = NULL;&lt;br /&gt;
    }&lt;br /&gt;
    QString langCode= argv[1];&lt;br /&gt;
    translator = new QTranslator;&lt;br /&gt;
    QString qmFilename = &amp;quot;lang_&amp;quot; + langCode; &lt;br /&gt;
    if (translator-&amp;gt;load(qmFilename))&lt;br /&gt;
    {&lt;br /&gt;
        qApp-&amp;gt;installTranslator(translator);&lt;br /&gt;
    }&lt;br /&gt;
*Prepare translation file&lt;br /&gt;
The translation file can be prepared manually based on the above template and file name extension should be like .ts, for example, lang_hz.ts, lang_de.hz, etc.&lt;br /&gt;
Translation file can also be created conviently by a tool called lupdate. lupdate is a command line tool that finds the translatable strings (tr())in the specified source, header and Qt Designer interface files, and produces or updates .ts translation files. The following command will search the folder and subfolders for tr() occurences in files (.ui,.h,.cxx) and create translation file test.tr.&lt;br /&gt;
       Usage: Lupdate c:\myproject\slicer4\ -ts   test.ts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*To be continued&lt;br /&gt;
&lt;br /&gt;
=Scripted Module=&lt;br /&gt;
Some modules are implemented in Python. Endoscopy is one of the typical examples. In endoscopy.py, if we change the code in line#10 &lt;br /&gt;
    parent.titel = “Endoscopy”&lt;br /&gt;
to&lt;br /&gt;
    parent.title = slicer.app.translate(self.__class__.__name__, &amp;quot;Endoscopy&amp;quot;)&lt;br /&gt;
then &amp;quot;Endoscopy&amp;quot; can be shown in other languages.Similarily, other displayable strings can be handled in the same way.&lt;br /&gt;
&lt;br /&gt;
=To be continued=&lt;/div&gt;</summary>
		<author><name>Lpfang</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Slicer4:Internationalization_of_Slicer&amp;diff=20621</id>
		<title>Slicer4:Internationalization of Slicer</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Slicer4:Internationalization_of_Slicer&amp;diff=20621"/>
		<updated>2011-08-08T16:29:33Z</updated>

		<summary type="html">&lt;p&gt;Lpfang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Slicer4:Developers| Back to Slicer 4 Developers]]&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
This pages contains notes on source code additions and modifications of different modules within Slicer for the internationalization purpose.&lt;br /&gt;
=QT-based Internationalization=&lt;br /&gt;
Internationalization is well supported in QT. A lot of modules of Slicer are developed on QT. This has set a good ground for the internationalization of Slicer. &lt;br /&gt;
*basic idea&lt;br /&gt;
In Qt, tr() is one of the static public members of QObject class, which returns a translated version of input sourceText.&lt;br /&gt;
    QString QObject::tr ( const char * sourceText, const char * disambiguation = 0, int n = -1 ) [static]&lt;br /&gt;
tr() will search the translation in a so-called translation file. If nothing is found, then the sourceText instead of the translated version will be displayed directly.&lt;br /&gt;
*translation file template&lt;br /&gt;
The following is an example of the translation file, from English to Chinese.&lt;br /&gt;
    &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
    &amp;lt;!DOCTYPE TS&amp;gt;&lt;br /&gt;
    &amp;lt;TS version=&amp;quot;2.0&amp;quot; language=&amp;quot;zh_CN&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;qSlicerMainWindow&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;&amp;amp;amp;File&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;文件&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;&amp;amp;amp;Edit&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;编辑&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;Feedback&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;反馈&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;Import Scene&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;导入场景&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;Add Data&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;添加数据&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/TS&amp;gt;&lt;br /&gt;
In the above example, all the texts are within the scope of qSlicerMainWindow class. That's why 'qSlicerMainWindo' occurs in section 'name'.&lt;br /&gt;
&lt;br /&gt;
*The following modifications are are needed:&lt;br /&gt;
&lt;br /&gt;
In file \Slicer4\Base\QTCore\qSlicerCoreApplication.h, add the following line:&lt;br /&gt;
    #include &amp;lt;QTranslator&amp;gt;&lt;br /&gt;
In file \Slicer4\Applications\SlicerQT\main.cxx (around line#230), add the following lines:&lt;br /&gt;
    static QTranslator* translator;&lt;br /&gt;
    if (translator != NULL)&lt;br /&gt;
    {&lt;br /&gt;
        qApp-&amp;gt;removeTranslator(translator);&lt;br /&gt;
        delete translator;&lt;br /&gt;
        translator = NULL;&lt;br /&gt;
    }&lt;br /&gt;
    QString langCode= argv[1];&lt;br /&gt;
    translator = new QTranslator;&lt;br /&gt;
    QString qmFilename = &amp;quot;lang_&amp;quot; + langCode; &lt;br /&gt;
    if (translator-&amp;gt;load(qmFilename))&lt;br /&gt;
    {&lt;br /&gt;
        qApp-&amp;gt;installTranslator(translator);&lt;br /&gt;
    }&lt;br /&gt;
*To be continued&lt;br /&gt;
&lt;br /&gt;
=Scripted Module=&lt;br /&gt;
Some modules are implemented in Python. Endoscopy is one of the typical examples. In endoscopy.py, if we change the code in line#10 &lt;br /&gt;
    parent.titel = “Endoscopy”&lt;br /&gt;
to&lt;br /&gt;
    parent.title = slicer.app.translate(self.__class__.__name__, &amp;quot;Endoscopy&amp;quot;)&lt;br /&gt;
then &amp;quot;Endoscopy&amp;quot; can be shown in other languages.Similarily, other displayable strings can be handled in the same way.&lt;br /&gt;
&lt;br /&gt;
=To be continued=&lt;/div&gt;</summary>
		<author><name>Lpfang</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Slicer4:Internationalization_of_Slicer&amp;diff=20620</id>
		<title>Slicer4:Internationalization of Slicer</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Slicer4:Internationalization_of_Slicer&amp;diff=20620"/>
		<updated>2011-08-08T16:28:53Z</updated>

		<summary type="html">&lt;p&gt;Lpfang: /* QT-based Internationalization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Slicer4:Developers| Back to Slicer 4 Developers]]&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
This pages contains notes on source code additions and modifications of different modules within Slicer for the internationalization purpose.&lt;br /&gt;
=QT-based Internationalization=&lt;br /&gt;
Internationalization is well supported in QT. A lot of modules of Slicer are developed on QT. This has set a good ground for the internationalization of Slicer. &lt;br /&gt;
*basic idea&lt;br /&gt;
In Qt, tr() is one of the static public members of QObject class, which returns a translated version of input sourceText.&lt;br /&gt;
    QString QObject::tr ( const char * sourceText, const char * disambiguation = 0, int n = -1 ) [static]&lt;br /&gt;
tr() will search the translation in a so-called translation file. If nothing is found, then the sourceText instead of the translated version will be displayed directly.&lt;br /&gt;
*translation file template&lt;br /&gt;
The following is an example of the translation file, from English to Chinese.&lt;br /&gt;
    &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
    &amp;lt;!DOCTYPE TS&amp;gt;&lt;br /&gt;
    &amp;lt;TS version=&amp;quot;2.0&amp;quot; language=&amp;quot;zh_CN&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;qSlicerMainWindow&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;&amp;amp;amp;File&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;文件&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;&amp;amp;amp;Edit&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;编辑&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;Feedback&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;反馈&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;Import Scene&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;导入场景&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;Add Data&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;添加数据&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/TS&amp;gt;&lt;br /&gt;
In the above example, all the texts are within the scope of qSlicerMainWindow class. That's why 'qSlicerMainWindo' occurs in section 'name'.&lt;br /&gt;
&lt;br /&gt;
*The following modifications are are needed:&lt;br /&gt;
&lt;br /&gt;
In file \Slicer4\Base\QTCore\qSlicerCoreApplication.h, add the following line:&lt;br /&gt;
    #include &amp;lt;QTranslator&amp;gt;&lt;br /&gt;
In file \Slicer4\Applications\SlicerQT\main.cxx (around line#230), add the following lines:&lt;br /&gt;
    static QTranslator* translator;&lt;br /&gt;
    if (translator != NULL)&lt;br /&gt;
    {&lt;br /&gt;
        qApp-&amp;gt;removeTranslator(translator);&lt;br /&gt;
        delete translator;&lt;br /&gt;
        translator = NULL;&lt;br /&gt;
    }&lt;br /&gt;
    QString langCode= argv[1];&lt;br /&gt;
    translator = new QTranslator;&lt;br /&gt;
    QString qmFilename = &amp;quot;lang_&amp;quot; + langCode; &lt;br /&gt;
    if (translator-&amp;gt;load(qmFilename))&lt;br /&gt;
    {&lt;br /&gt;
        qApp-&amp;gt;installTranslator(translator);&lt;br /&gt;
    }&lt;br /&gt;
*To be continued&lt;br /&gt;
&lt;br /&gt;
=Scripted Module=&lt;br /&gt;
Some modules are implemented in Python. Endoscopy is one of the typical examples. In endoscopy.py, if we change the code in line#10 &lt;br /&gt;
    parent.titel = “Endoscopy”&lt;br /&gt;
to&lt;br /&gt;
    parent.title = slicer.app.translate(self.__class__.__name__, &amp;quot;Endoscopy&amp;quot;)&lt;br /&gt;
then &amp;quot;Endoscopy&amp;quot; can be shown in other languages.Similarily, other displayable strings can be handled in the same way.&lt;/div&gt;</summary>
		<author><name>Lpfang</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Slicer4:Internationalization_of_Slicer&amp;diff=20619</id>
		<title>Slicer4:Internationalization of Slicer</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Slicer4:Internationalization_of_Slicer&amp;diff=20619"/>
		<updated>2011-08-08T16:28:01Z</updated>

		<summary type="html">&lt;p&gt;Lpfang: /* QT-based Internationalization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Slicer4:Developers| Back to Slicer 4 Developers]]&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
This pages contains notes on source code additions and modifications of different modules within Slicer for the internationalization purpose.&lt;br /&gt;
=QT-based Internationalization=&lt;br /&gt;
Internationalization is well supported in QT. A lot of modules of Slicer are developed on QT. This has set a good ground for the internationalization of Slicer. &lt;br /&gt;
*basic idea&lt;br /&gt;
In Qt, tr() is one of the static public members of QObject class, which returns a translated version of input sourceText.&lt;br /&gt;
    QString QObject::tr ( const char * sourceText, const char * disambiguation = 0, int n = -1 ) [static]&lt;br /&gt;
tr() will search the translation in a so-called translation file. If nothing is found, then the sourceText instead of the translated version will be displayed directly.&lt;br /&gt;
*translation file template&lt;br /&gt;
The following is an example of the translation file, from English to Chinese.&lt;br /&gt;
    &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
    &amp;lt;!DOCTYPE TS&amp;gt;&lt;br /&gt;
    &amp;lt;TS version=&amp;quot;2.0&amp;quot; language=&amp;quot;zh_CN&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;qSlicerMainWindow&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;&amp;amp;amp;File&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;文件&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;&amp;amp;amp;Edit&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;编辑&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;Feedback&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;反馈&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;Import Scene&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;导入场景&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;Add Data&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;translation&amp;gt;添加数据&amp;lt;/translation&amp;gt;&lt;br /&gt;
    &amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/TS&amp;gt;&lt;br /&gt;
In the above example, all the texts are within the scope of qSlicerMainWindow class. That's why 'qSlicerMainWindo' occurs in section 'name'.&lt;br /&gt;
&lt;br /&gt;
*The following modifications are are needed:&lt;br /&gt;
&lt;br /&gt;
In file \Slicer4\Base\QTCore\qSlicerCoreApplication.h, add the following line:&lt;br /&gt;
    #include &amp;lt;QTranslator&amp;gt;&lt;br /&gt;
In file \Slicer4\Applications\SlicerQT\main.cxx (around line#230), add the following lines:&lt;br /&gt;
    static QTranslator* translator;&lt;br /&gt;
    if (translator != NULL)&lt;br /&gt;
    {&lt;br /&gt;
        qApp-&amp;gt;removeTranslator(translator);&lt;br /&gt;
        delete translator;&lt;br /&gt;
        translator = NULL;&lt;br /&gt;
    }&lt;br /&gt;
    QString langCode= argv[1];&lt;br /&gt;
    translator = new QTranslator;&lt;br /&gt;
    QString qmFilename = &amp;quot;lang_&amp;quot; + langCode; &lt;br /&gt;
    if (translator-&amp;gt;load(qmFilename))&lt;br /&gt;
    {&lt;br /&gt;
        qApp-&amp;gt;installTranslator(translator);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
=Scripted Module=&lt;br /&gt;
Some modules are implemented in Python. Endoscopy is one of the typical examples. In endoscopy.py, if we change the code in line#10 &lt;br /&gt;
    parent.titel = “Endoscopy”&lt;br /&gt;
to&lt;br /&gt;
    parent.title = slicer.app.translate(self.__class__.__name__, &amp;quot;Endoscopy&amp;quot;)&lt;br /&gt;
then &amp;quot;Endoscopy&amp;quot; can be shown in other languages.Similarily, other displayable strings can be handled in the same way.&lt;/div&gt;</summary>
		<author><name>Lpfang</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Slicer4:Internationalization_of_Slicer&amp;diff=20618</id>
		<title>Slicer4:Internationalization of Slicer</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Slicer4:Internationalization_of_Slicer&amp;diff=20618"/>
		<updated>2011-08-08T15:36:47Z</updated>

		<summary type="html">&lt;p&gt;Lpfang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Slicer4:Developers| Back to Slicer 4 Developers]]&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
This pages contains notes on source code additions and modifications of different modules within Slicer for the internationalization purpose.&lt;br /&gt;
=QT-based Internationalization=&lt;br /&gt;
Internationalization is well supported in QT. A lot of modules of Slicer are developed on QT. This has set a good ground for the internationalization of Slicer. The following codes are needed:&lt;br /&gt;
&lt;br /&gt;
In file \Slicer4\Base\QTCore\qSlicerCoreApplication.h, add the following line:&lt;br /&gt;
    #include &amp;lt;QTranslator&amp;gt;&lt;br /&gt;
In file \Slicer4\Applications\SlicerQT\main.cxx (around line#230), add the following lines:&lt;br /&gt;
    static QTranslator* translator;&lt;br /&gt;
    if (translator != NULL)&lt;br /&gt;
    {&lt;br /&gt;
        qApp-&amp;gt;removeTranslator(translator);&lt;br /&gt;
        delete translator;&lt;br /&gt;
        translator = NULL;&lt;br /&gt;
    }&lt;br /&gt;
    QString langCode= argv[1];&lt;br /&gt;
    translator = new QTranslator;&lt;br /&gt;
    QString qmFilename = &amp;quot;lang_&amp;quot; + langCode; &lt;br /&gt;
    if (translator-&amp;gt;load(qmFilename))&lt;br /&gt;
    {&lt;br /&gt;
        qApp-&amp;gt;installTranslator(translator);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
=Scripted Module=&lt;br /&gt;
Some modules are implemented in Python. Endoscopy is one of the typical examples. In endoscopy.py, if we change the code in line#10 &lt;br /&gt;
    parent.titel = “Endoscopy”&lt;br /&gt;
to&lt;br /&gt;
    parent.title = slicer.app.translate(self.__class__.__name__, &amp;quot;Endoscopy&amp;quot;)&lt;br /&gt;
then &amp;quot;Endoscopy&amp;quot; can be shown in other languages.Similarily, other displayable strings can be handled in the same way.&lt;/div&gt;</summary>
		<author><name>Lpfang</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Slicer4:Internationalization_of_Slicer&amp;diff=20617</id>
		<title>Slicer4:Internationalization of Slicer</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Slicer4:Internationalization_of_Slicer&amp;diff=20617"/>
		<updated>2011-08-08T15:24:52Z</updated>

		<summary type="html">&lt;p&gt;Lpfang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Slicer4:Developers| Back to Slicer 4 Developers]]&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
This pages contains notes on source code additions and modifications of different modules within Slicer for the internationalization purpose.&lt;br /&gt;
=QT-based Internationalization=&lt;br /&gt;
Internationalization is well supported in QT. A lot of modules of Slicer are developed on QT. This has set a good ground for the internationalization of Slicer. The following codes are needed:&lt;br /&gt;
&lt;br /&gt;
In file \Slicer4\Base\QTCore\qSlicerCoreApplication.h, add the following line:&lt;br /&gt;
    #include &amp;lt;QTranslator&amp;gt;&lt;br /&gt;
In file \Slicer4\Applications\SlicerQT\main.cxx (around line#230), add the following lines:&lt;br /&gt;
    static QTranslator* translator;&lt;br /&gt;
    if (translator != NULL)&lt;br /&gt;
    {&lt;br /&gt;
        qApp-&amp;gt;removeTranslator(translator);&lt;br /&gt;
        delete translator;&lt;br /&gt;
        translator = NULL;&lt;br /&gt;
    }&lt;br /&gt;
    QString langCode= argv[1];&lt;br /&gt;
    translator = new QTranslator;&lt;br /&gt;
    QString qmFilename = &amp;quot;lang_&amp;quot; + langCode; &lt;br /&gt;
    if (translator-&amp;gt;load(qmFilename))&lt;br /&gt;
    {&lt;br /&gt;
        qApp-&amp;gt;installTranslator(translator);&lt;br /&gt;
    }&lt;/div&gt;</summary>
		<author><name>Lpfang</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Slicer4:Internationalization_of_Slicer&amp;diff=20614</id>
		<title>Slicer4:Internationalization of Slicer</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Slicer4:Internationalization_of_Slicer&amp;diff=20614"/>
		<updated>2011-08-08T15:20:13Z</updated>

		<summary type="html">&lt;p&gt;Lpfang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Slicer4:Developers| Back to Slicer 4 Developers]]&lt;br /&gt;
=Introduction=&lt;br /&gt;
This pages contains notes on source code additions and modifications of different modules within Slicer for the internationalization purpose.&lt;br /&gt;
=QT-based Internationalization=&lt;br /&gt;
Internationalization is well supported in QT. A lot of modules of Slicer are developed on QT. This has set a good ground for the internationalization of Slicer. The following codes are needed:&lt;br /&gt;
&lt;br /&gt;
In file \Slicer4\Base\QTCore\qSlicerCoreApplication.h, add the following line:&lt;br /&gt;
    #include &amp;lt;QTranslator&amp;gt;&lt;br /&gt;
In file \Slicer4\Applications\SlicerQT\main.cxx (around line#230), add the following lines:&lt;br /&gt;
    static QTranslator* translator;&lt;br /&gt;
    if (translator != NULL)&lt;br /&gt;
    {&lt;br /&gt;
        qApp-&amp;gt;removeTranslator(translator);&lt;br /&gt;
        delete translator;&lt;br /&gt;
        translator = NULL;&lt;br /&gt;
    }&lt;br /&gt;
    QString langCode= argv[1];&lt;br /&gt;
    translator = new QTranslator;&lt;br /&gt;
    QString qmFilename = &amp;quot;lang_&amp;quot; + langCode; &lt;br /&gt;
    if (translator-&amp;gt;load(qmFilename))&lt;br /&gt;
    {&lt;br /&gt;
        qApp-&amp;gt;installTranslator(translator);&lt;br /&gt;
    }&lt;/div&gt;</summary>
		<author><name>Lpfang</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Slicer4:Internationalization_of_Slicer&amp;diff=20613</id>
		<title>Slicer4:Internationalization of Slicer</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Slicer4:Internationalization_of_Slicer&amp;diff=20613"/>
		<updated>2011-08-08T14:59:22Z</updated>

		<summary type="html">&lt;p&gt;Lpfang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Slicer4:Developers| Back to Slicer 4 Developers]]&lt;br /&gt;
=Introduction=&lt;br /&gt;
This pages contains notes on source code additions and modifications of different modules within Slicer for the internationalization purpose.&lt;/div&gt;</summary>
		<author><name>Lpfang</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Slicer4:Internationalization_of_Slicer&amp;diff=20612</id>
		<title>Slicer4:Internationalization of Slicer</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Slicer4:Internationalization_of_Slicer&amp;diff=20612"/>
		<updated>2011-08-08T14:56:02Z</updated>

		<summary type="html">&lt;p&gt;Lpfang: Created page with '=Introduction= This pages contains notes on source code additions and modifications of different modules within Slicer for the internationalization purpose.'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
This pages contains notes on source code additions and modifications of different modules within Slicer for the internationalization purpose.&lt;/div&gt;</summary>
		<author><name>Lpfang</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Slicer4:Developers&amp;diff=20611</id>
		<title>Slicer4:Developers</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Slicer4:Developers&amp;diff=20611"/>
		<updated>2011-08-08T14:44:47Z</updated>

		<summary type="html">&lt;p&gt;Lpfang: /* Projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Slicer 4 is now at the stage where developers can begin to port their modules from Slicer3 to Slicer4. If you are working on extensions, you should continue to use Slicer 3 as your target platform. If you are not sure, ask us.''&lt;br /&gt;
&lt;br /&gt;
For now, refer to [http://www.na-mic.org/Wiki/images/5/51/2010_Project_Week_Slicer.ppt the 3D Slicer Status Presentation from the June 2010 Project Week] for planning and transition information.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Work on 3D Slicer version 4 has begun in June of 2010. It is expected that Slicer4 will be released in 2011.  Please see the [[Slicer4|Slicer4 Description Page]] for detailed information on the current plans.&lt;br /&gt;
&lt;br /&gt;
*For information about older versions of Slicer, see [[Developers|here]].&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
*This page of for scientist who write source code, if you want to use a pre-compiled version of Slicer, please go to the [http://www.slicer.org/pages/Special:SlicerDownloads download page].&lt;br /&gt;
*Slicer 4 will include a number of fundamental changes to the infrastructure:&lt;br /&gt;
**Qt widgets will replace KWW widgets&lt;br /&gt;
**CMAKE superbuild will replace getbuildtest&lt;br /&gt;
&lt;br /&gt;
=Developers Documentation=&lt;br /&gt;
&lt;br /&gt;
*[[Slicer4:QtPort/Tutorials|Tutorial on how to write code with Slicer 4 Qt on your computer]]   ('''Julien Finet''', Jean-Christophe Fillion-Robin)&lt;br /&gt;
&lt;br /&gt;
=Projects=&lt;br /&gt;
(please add your new project to the top of the table)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{|width=&amp;quot;800px&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#ddf&amp;quot; width=&amp;quot;60%&amp;quot;|'''Slicer4 Projects'''&lt;br /&gt;
|bgcolor=&amp;quot;#ddf&amp;quot; valign=&amp;quot;top&amp;quot;|'''Key People'''&amp;lt;br/&amp;gt;Bold names are responsible for an aspect of the project.&lt;br /&gt;
|-&lt;br /&gt;
|[[Slicer4:Internationalization_of_Slicer|Internationalization of Slicer]]&lt;br /&gt;
||'''Luping Fang''', Steve Pieper, Julien Finet, Jean-Christophe Fillion-Robin&lt;br /&gt;
|-&lt;br /&gt;
|[[Slicer4:ArchitectureDesign|Architecture design (CTK,MRML,Logic,Qt)]]&lt;br /&gt;
||'''Steve Pieper''', Julien Finet, Jean-Christophe Fillion-Robin&lt;br /&gt;
|-&lt;br /&gt;
|[[Slicer4:Build_Instructions|Slicer4 build instructions]]&lt;br /&gt;
||'''Jean-Christophe Fillion-Robin''', Julien Finet&lt;br /&gt;
|-&lt;br /&gt;
|[[Slicer4:MultiVolumeContainer|MultiVolumeContainers: Infrastructure for RGB, RT labelmaps, DCE, Recist, &amp;quot;What changed&amp;quot;]]&lt;br /&gt;
||'''Ron Kikinis'''&lt;br /&gt;
|-&lt;br /&gt;
|[[Slicer4:VectorImageVisualization|Infrastructure for multi-volumes]]&lt;br /&gt;
||'''Demian Wassermann''', Lauren Odonnell, CF Westin&lt;br /&gt;
|-&lt;br /&gt;
|[[Slicer4:WikipediaNotes|Updating the Wikipedia pages for Slicer]]&lt;br /&gt;
||'''Ann Adams''', Ron Kikinis, Steve Pieper&lt;br /&gt;
|-&lt;br /&gt;
|[[Slicer4:Diffusion|Porting Diffusion from Slicer 3 to 4]]&lt;br /&gt;
||'''Demian Wassermann''', Alex Yarmanovich, Steve Pieper&lt;br /&gt;
|-&lt;br /&gt;
||[[Slicer4:DownloadPackage|Slicer 4 download package]]&lt;br /&gt;
||'''Jean-Christophe Fillion-Robin''', Stephen Aylward, Steve Pieper&lt;br /&gt;
|-&lt;br /&gt;
||[[Slicer4:VolumeRenderingPorting|Porting Volume Rendering from Slicer 3 to 4]]&lt;br /&gt;
||'''Julien Finet''', Alex Yarmanovich, Curtis Lisle&lt;br /&gt;
|-&lt;br /&gt;
||[[Slicer4:CMAKESuperbuild|CMAKE superbuild]]&lt;br /&gt;
||'''Jean-Christophe Fillion-Robin''', Stephen Aylward&lt;br /&gt;
|-&lt;br /&gt;
||[[Slicer4:Download Data|Download Data Appearance]]&lt;br /&gt;
||'''Ron Kikinis''', Zach Mullen, Julien Jomier&lt;br /&gt;
|-&lt;br /&gt;
||[[Slicer4:DisplayModule|Slicer 4 Display Module]]&lt;br /&gt;
||'''Wendy Plesniak''', Ron Kikinis&lt;br /&gt;
|-&lt;br /&gt;
||[[Slicer4:VTKWidgets|Slicer 4 VTK Widgets tuning]]&lt;br /&gt;
||'''Will Schroeder''', Jean-Christophe Fillion-Robin&lt;br /&gt;
|-&lt;br /&gt;
||[[Slicer4:ViewerDesign| Slicer 4 Viewer Presentation Layer Design &amp;amp; Guidelines ]]&lt;br /&gt;
||'''Wendy Plesniak''', Ron Kikinis, Julien Jomier, Jim Miller, Stephen Aylward&lt;br /&gt;
|-&lt;br /&gt;
||[[Slicer4:UIDesign|Slicer 4 UI design]]&lt;br /&gt;
||'''Wendy Plesniak''',&lt;br /&gt;
|-&lt;br /&gt;
||[[Slicer4:SceneViewsModule|Slicer 4 SceneViews Module]]&lt;br /&gt;
||'''Nicole Aucoin'''&lt;br /&gt;
|-&lt;br /&gt;
||[[Slicer4:EMSegment|EM Segmenter]]&lt;br /&gt;
||'''Kilian Pohl''', Daniel Haehn, Dominique Belhachemi&lt;br /&gt;
|-&lt;br /&gt;
||[[Slicer4:Annotation|Annotation]]&lt;br /&gt;
||'''Nicole Aucoin''', Daniel Haehn, Kilian Pohl&lt;br /&gt;
|-&lt;br /&gt;
||[[Slicer4:QtPort|Porting Slicer from kww to Qt]]&lt;br /&gt;
||'''Julien Finet''', Jean-Christophe Fillion-Robin, Steve Pieper, Stephen Aylward&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Extensions=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{|width=&amp;quot;800px&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#ddf&amp;quot; width=&amp;quot;60%&amp;quot;|'''Slicer4 Extensions'''&lt;br /&gt;
|bgcolor=&amp;quot;#ddf&amp;quot; valign=&amp;quot;top&amp;quot;|'''Key People'''&amp;lt;br/&amp;gt;Bold names are responsible for an aspect of the project.&lt;br /&gt;
|-&lt;br /&gt;
||[[Slicer4:VMTK|VMTK]]&lt;br /&gt;
||'''Daniel Haehn'''&lt;br /&gt;
|-&lt;br /&gt;
||[[Slicer4:DTI-EM-Clustering|DTI EM Clustering]]&lt;br /&gt;
||'''Mahnaz Maddah''', Jim Miller&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Quick Links for Developers =&lt;br /&gt;
This section centrally locates many existing (and developing) wiki pages useful to Slicer4 developers.&lt;br /&gt;
&lt;br /&gt;
== Slicer 4 Quick links to the Source code ==&lt;br /&gt;
The Slicer4 git repository:&lt;br /&gt;
&lt;br /&gt;
*'''Put link here'''&lt;br /&gt;
&lt;br /&gt;
{|width=&amp;quot;800px&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#ddf&amp;quot; width=&amp;quot;60%&amp;quot;|'''General Slicer4 Quick Links'''&lt;br /&gt;
|style=&amp;quot;background:#ddf&amp;quot; width=&amp;quot;40%&amp;quot;|'''Debugging Slicer4 Quick Links'''&lt;br /&gt;
|-&lt;br /&gt;
||[[Slicer4:Build_Instructions|Slicer4 build instructions]]&lt;br /&gt;
||[http://www.cdash.org/CDash/index.php?project=Slicer4 Slicer4 Dashboard]&lt;br /&gt;
|-&lt;br /&gt;
||Use [http://viewvc.slicer.org ViewVC to browse the repository]&lt;br /&gt;
||[http://na-mic.org/Mantis/main_page.php Slicer Bug Tracker]&lt;br /&gt;
|-&lt;br /&gt;
||[http://www.na-mic.org/Wiki/index.php/Engineering:SandBox Instructions for NA-MIC svn]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
||[http://slicer.org/doc/html/ Doxygen documentation for Slicer4].&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
||The [[Slicer4:VisualBlog|Slicer4 VisualBlog]] shows screenshots of slicer developments.&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
||Developers should follow the [[Slicer4:Style|Slicer 4 Coding Style]].&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
||[[Slicer4:QtPort/Tutorials|QtPort Tutorials]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Developers' Mailing List ==&lt;br /&gt;
Discussion of Slicer 3 and Slicer 4 takes place on the slicer-devel at massmail.spl.harvard.edu list. To join developer's mailing list, send a request to: slicer-devel-request at massmail.spl.harvard.edu  with the keyword '''''subscribe''''' as the subject.  Or access the [http://massmail.spl.harvard.edu/mailman/listinfo/slicer-devel slicer-devel archives and web administration interface].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lpfang</name></author>
		
	</entry>
</feed>