-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathdocumentation.html
More file actions
1588 lines (1543 loc) · 97.6 KB
/
documentation.html
File metadata and controls
1588 lines (1543 loc) · 97.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html lang="en" data-content_root="../">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Documentation Development Guide — MapServer 8.6.1 documentation</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=03e43079" />
<link rel="stylesheet" type="text/css" href="../_static/sphinx.css?v=48f05237" />
<link rel="stylesheet" type="text/css" href="../_static/copybutton.css?v=76b2166b" />
<link rel="stylesheet" type="text/css" href="../_static/custom.css?v=dd298242" />
<link rel="stylesheet" type="text/css" href="../_static/ribbon.css?v=ea091bf4" />
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../_static/documentation_options.js?v=ad95d4c4"></script>
<script src="../_static/doctools.js?v=fd6eb6e6"></script>
<script src="../_static/sphinx_highlight.js?v=6ffebe34"></script>
<script src="../_static/clipboard.min.js?v=a7894cd8"></script>
<script src="../_static/copybutton.js?v=f281be69"></script>
<link rel="icon" href="../_static/mapserver.ico"/>
<link rel="author" title="About these documents" href="../about.html" />
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="copyright" title="Copyright" href="../copyright.html" />
<link rel="next" title="How to Help Translate the Documentation" href="translation.html" />
<link rel="prev" title="Bug/Issue Submission" href="bugs.html" />
</head><body>
<!-- for main branch only, do not backport this -->
<table width="100%" style="width: 100%; background-color: white;">
<tr>
<td rowspan="2" style="padding: 10px 0px 10px 10px;">
<a href="../index.html" title="Home"><img src="../_static/banner.png" alt="MapServer banner" border="0" /></a>
</td>
<td style="padding: 10px 10px 0px 0px; text-align: right; vertical-align: top;">
<a href="../index.html" title="Home">Home</a> |
<a href="../products.html" title="Products (MapServer core, MapCache, TinyOWS">Products</a> |
<a href="https://github.com/mapserver/mapserver/issues/" title="Issue Tracker (MapServer core)">Issue Tracker</a> |
<a href="../community/service_providers.html" title="Professional Service Providers">Service Providers</a> |
<a href="../faq.html" title="Frequently Asked Questions">FAQ</a> |
<a href="https://fosstodon.org/@mapserver" title="Mastodon" target="_blank">Mastodon</a> |
<a href="../download.html" title="Download Source or Binaries">Download </a> |
<a class="badge" href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=KRJ2X44N3HA6U&source=url" target="_blank">
<img src="https://img.shields.io/badge/donate-%E2%9D%A4%C2%A0-ff69b4.svg?style=flat" alt="Donate to MapServer">
</a>
</td>
</tr>
<tr>
<td style="padding: 0px 10px 0px 0px; text-align: right; vertical-align: bottom;">
<img src="../_static/flagicons/en.png" alt="en" title="en" border="0" width="18px" height="13px"/>
<a href="../ar/development/documentation.html"><img src="../_static/flagicons/ar.png" alt="ar" title="ar" border="0" /></a>
<a href="../de/development/documentation.html"><img src="../_static/flagicons/de.png" alt="de" title="de" border="0" /></a>
<a href="../el/development/documentation.html"><img src="../_static/flagicons/el.png" alt="el" title="el" border="0" /></a>
<a href="../es/development/documentation.html"><img src="../_static/flagicons/es.png" alt="es" title="es" border="0" /></a>
<a href="../fr/development/documentation.html"><img src="../_static/flagicons/fr.png" alt="fr" title="fr" border="0" /></a>
<a href="../id/development/documentation.html"><img src="../_static/flagicons/id.png" alt="id" title="id" border="0" /></a>
<a href="../it/development/documentation.html"><img src="../_static/flagicons/it.png" alt="it" title="it" border="0" /></a>
<a href="../ja/development/documentation.html"><img src="../_static/flagicons/ja.png" alt="ja" title="ja" border="0" /></a>
<a href="../nl_NL/development/documentation.html"><img src="../_static/flagicons/nl_NL.png" alt="nl_NL" title="nl_NL" border="0" /></a>
<a href="../pl/development/documentation.html"><img src="../_static/flagicons/pl.png" alt="pl" title="pl" border="0" /></a>
<a href="../ru/development/documentation.html"><img src="../_static/flagicons/ru.png" alt="ru" title="ru" border="0" /></a>
<a href="../sq/development/documentation.html"><img src="../_static/flagicons/sq.png" alt="sq" title="sq" border="0" /></a>
<a href="../tr/development/documentation.html"><img src="../_static/flagicons/tr.png" alt="tr" title="tr" border="0" /></a>
</td>
</tr>
</table>
<div class="related" role="navigation" aria-label="Related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="translation.html" title="How to Help Translate the Documentation"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="bugs.html" title="Bug/Issue Submission"
accesskey="P">previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Home</a> »</li>
<li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Development</a> »</li>
<li class="nav-item nav-item-this"><a href="">Documentation Development Guide</a></li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="documentation-development-guide">
<span id="documentation-development"></span><h1><a class="toc-backref" href="#table-of-contents" role="doc-backlink">Documentation Development Guide</a><a class="headerlink" href="#documentation-development-guide" title="Link to this heading">¶</a></h1>
<dl class="field-list simple">
<dt class="field-odd">Author<span class="colon">:</span></dt>
<dd class="field-odd"><p>Howard Butler</p>
</dd>
<dt class="field-even">Contact<span class="colon">:</span></dt>
<dd class="field-even"><p>hobu.inc at gmail.com</p>
</dd>
<dt class="field-odd">Author<span class="colon">:</span></dt>
<dd class="field-odd"><p>Jeff McKenna</p>
</dd>
<dt class="field-even">Contact<span class="colon">:</span></dt>
<dd class="field-even"><p>jmckenna at gatewaygeomatics.com</p>
</dd>
<dt class="field-odd">Last Updated<span class="colon">:</span></dt>
<dd class="field-odd"><p>2026-03-29</p>
</dd>
</dl>
<nav class="contents" id="table-of-contents">
<p class="topic-title">Table of Contents</p>
<ul class="simple">
<li><p><a class="reference internal" href="#documentation-development-guide" id="id2">Documentation Development Guide</a></p>
<ul>
<li><p><a class="reference internal" href="#background" id="id3">Background</a></p></li>
<li><p><a class="reference internal" href="#github-notes" id="id4">GitHub Notes</a></p></li>
<li><p><a class="reference internal" href="#workflow-for-simple-edits" id="id5">Workflow for simple edits</a></p></li>
<li><p><a class="reference internal" href="#general-writing-guidelines" id="id6">General Writing Guidelines</a></p></li>
<li><p><a class="reference internal" href="#restructuredtext-reference-guides" id="id7">reStructuredText Reference Guides</a></p></li>
<li><p><a class="reference internal" href="#restructuredtext-formatting" id="id8">reStructuredText Formatting</a></p></li>
<li><p><a class="reference internal" href="#installing-and-using-sphinx-for-rst-html-generation" id="id9">Installing and Using Sphinx for rst-html Generation</a></p></li>
<li><p><a class="reference internal" href="#spelling-tools" id="id10">Spelling tools</a></p>
<ul>
<li><p><a class="reference internal" href="#english-typo-fixing-script" id="id11">(English) typo fixing script</a></p></li>
<li><p><a class="reference internal" href="#sphinxcontrib-spelling-extension" id="id12">sphinxcontrib.spelling extension</a></p></li>
</ul>
</li>
<li><p><a class="reference internal" href="#how-translations-are-handled" id="id13">How translations are handled</a></p>
<ul>
<li><p><a class="reference internal" href="#the-old-way-for-translations" id="id14">The “old” way for translations</a></p></li>
<li><p><a class="reference internal" href="#the-standard-internationalization-system-i18n-for-translations" id="id15">The standard internationalization system (i18n) for translations</a></p>
<ul>
<li><p><a class="reference internal" href="#initial-translation-process-for-a-new-language" id="id16">Initial translation process for a new language</a></p></li>
<li><p><a class="reference internal" href="#the-usual-workflow-for-already-existing-translation" id="id17">The usual workflow for already existing translation</a></p></li>
<li><p><a class="reference internal" href="#how-to-use-transifex-client-to-manage-translation-process" id="id18">How to use Transifex client to manage translation process</a></p></li>
</ul>
</li>
</ul>
</li>
<li><p><a class="reference internal" href="#reference-labels" id="id19">Reference Labels</a></p>
<ul>
<li><p><a class="reference internal" href="#regenerating-the-reference-labels" id="id20">Regenerating the reference labels</a></p></li>
</ul>
</li>
</ul>
</li>
</ul>
</nav>
<section id="background">
<h2><a class="toc-backref" href="#table-of-contents" role="doc-backlink">Background</a><a class="headerlink" href="#background" title="Link to this heading">¶</a></h2>
<p>The current structure of the MapServer documentation process is for
developers to maintain their documents in reStructuredText format, and
submit their changes through <a class="reference internal" href="git.html#git"><span class="std std-ref">GitHub</span></a> pull requests;
you will first need to create a <a class="reference external" href="https://github.com/pricing/">free personal account</a> at GitHub.
The <a class="reference external" href="https://www.sphinx-doc.org/">Sphinx</a> documentation generator is
used to convert the reStructuredText files to html, and the live
website is then automatically updated on each merged pull request.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The live website is actually built automatically through a <a class="reference external" href="https://github.com/MapServer/MapServer-documentation/blob/main/.github/workflows/build.yml">GitHub workflow</a>,
triggered by each push to the live branch. See the <a class="reference external" href="https://github.com/MapServer/MapServer-documentation/actions/workflows/build.yml">build history</a>.
The different language documentation sites are rebuilt when a commit message includes <code class="docutils literal notranslate"><span class="pre">[build_translations]</span></code>.</p>
</div>
</section>
<section id="github-notes">
<h2><a class="toc-backref" href="#table-of-contents" role="doc-backlink">GitHub Notes</a><a class="headerlink" href="#github-notes" title="Link to this heading">¶</a></h2>
<ul>
<li><p>Documentation files are stored in the <cite>/MapServer-documentation</cite> sub-project on GitHub at: <a class="reference external" href="https://github.com/MapServer/MapServer-documentation">https://github.com/MapServer/MapServer-documentation</a></p></li>
<li><p>Always submit pull requests to <em>main</em>, and if applicable your changes will be
backported to a specific branch</p></li>
<li><p>All files should have only <em>LF</em> as line feed. Line feed (or ‘linefeed’) differences can
cause problems when comparing files through Git (Windows uses both a carriage-return
character and a line feed character for newlines in its files, whereas macOS and
Linux systems use only the line feed character). One option is to have Git convert
CRLF to LF on commit, by setting this at the commandline:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">git</span> <span class="n">config</span> <span class="o">--</span><span class="k">global</span> <span class="n">core</span><span class="o">.</span><span class="n">autocrlf</span> <span class="nb">input</span>
</pre></div>
</div>
</li>
<li><p>See GitHub’s <a class="reference external" href="https://docs.github.com/en/github/getting-started-with-github/set-up-git/">help guidelines</a>
to install Git locally</p></li>
<li><p>Useful git commands:</p>
<ul>
<li><p>clone ‘main’ locally:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">git</span> <span class="n">clone</span> <span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">github</span><span class="o">.</span><span class="n">com</span><span class="o">/</span><span class="n">MapServer</span><span class="o">/</span><span class="n">MapServer</span><span class="o">-</span><span class="n">documentation</span><span class="o">.</span><span class="n">git</span> <span class="n">MapServer</span><span class="o">-</span><span class="n">documentation</span><span class="o">-</span><span class="n">git</span><span class="o">-</span><span class="n">main</span>
</pre></div>
</div>
</li>
<li><p>update local files:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">git</span> <span class="n">pull</span>
</pre></div>
</div>
</li>
<li><p>add file to repository (need to commit after this):</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">git</span> <span class="n">add</span> <span class="o"><</span><span class="n">file</span><span class="o">></span>
</pre></div>
</div>
</li>
<li><p>commit file to repository:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">git</span> <span class="n">commit</span> <span class="o">-</span><span class="n">m</span> <span class="s2">"my message"</span> <span class="o"><</span><span class="n">files</span><span class="o">></span>
</pre></div>
</div>
</li>
</ul>
</li>
</ul>
</section>
<section id="workflow-for-simple-edits">
<h2><a class="toc-backref" href="#table-of-contents" role="doc-backlink">Workflow for simple edits</a><a class="headerlink" href="#workflow-for-simple-edits" title="Link to this heading">¶</a></h2>
<p>For simple edits (typos, etc.) not necessarily requiring compilation of the documentation,
a simpler workflow to create a Pull Request, can be adopted that does not require any local tool:</p>
<ul class="simple">
<li><p>Create a GitHub account if not already done</p></li>
<li><p>Go to <a class="reference external" href="https://github.com/MapServer/MapServer-documentation">https://github.com/MapServer/MapServer-documentation</a></p></li>
<li><p>Click on the “Fork” button</p></li>
<li><p>You are now on <a class="reference external" href="https://github.com">https://github.com</a>/{your_account}/MapServer-documentation</p></li>
<li><p>Click on the “Branch: …” list (to the left of the green “New pull request” button)</p></li>
<li><p>In the text box, entry a name describing your changes to create a new branch (ex “typo_fix”)</p></li>
<li><p>You are now on <a class="reference external" href="https://github.com">https://github.com</a>/{your_account}/tree/{branch_name}</p></li>
<li><p>Browse through the tree and click on the file you want to edit. To find the file
you want to edit, you may type text in the Search entry box
at the top of the page (for example “Workflow for simple edits” to find this page)</p></li>
<li><p>Click on the “Edit this file” button (with a pen icon)</p></li>
<li><p>When done, fill the “Commit changes” section at the bottom of the page
(a title is enough for most changes)</p></li>
<li><p>Click on the “Commit changes” button at the bottom of the page</p></li>
<li><p>Repeat the process with other files if needed.</p></li>
<li><p>When done, go back to <a class="reference external" href="https://github.com">https://github.com</a>/{your_account}/tree/{branch_name}
and click on the “New pull request” button</p></li>
<li><p>You can see your changes and edit the pull request summary message if needed</p></li>
<li><p>Click on the “Create pull request” button to confirm</p></li>
<li><p>You’re done ! (Someone with push rights will have to review and merge your changes)</p></li>
</ul>
<p>Branch cleanup :</p>
<ul class="simple">
<li><p>Once merged, you can delete branches when going to the Branch page : <a class="reference external" href="https://github.com">https://github.com</a>/{your_account}/MapServer-documentation/branches</p></li>
<li><p>Click on the trash bin icon at the right of the branch you want to delete.</p></li>
</ul>
</section>
<section id="general-writing-guidelines">
<h2><a class="toc-backref" href="#table-of-contents" role="doc-backlink">General Writing Guidelines</a><a class="headerlink" href="#general-writing-guidelines" title="Link to this heading">¶</a></h2>
<ul>
<li><p>MapServer instead of mapserver, map server, Map Server, mapServer or
map Server</p></li>
<li><p>MapScript instead of mapscript, Mapscript, or map script</p></li>
<li><p>mapfile instead of Mapfile, MapFile, or map file</p></li>
<li><p>PostGIS instead of postgis</p></li>
<li><p>GitHub instead of Github or github</p></li>
<li><p>HowTo instead of howto or HOWTO</p></li>
<li><p>Email addresses should be manually spam protected:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">myname</span> <span class="n">at</span> <span class="n">gmail</span><span class="o">.</span><span class="n">com</span> <span class="n">instead</span> <span class="n">of</span> <span class="n">myname</span><span class="nd">@gmail</span><span class="o">.</span><span class="n">com</span>
</pre></div>
</div>
</li>
</ul>
</section>
<section id="restructuredtext-reference-guides">
<h2><a class="toc-backref" href="#table-of-contents" role="doc-backlink">reStructuredText Reference Guides</a><a class="headerlink" href="#restructuredtext-reference-guides" title="Link to this heading">¶</a></h2>
<ul class="simple">
<li><p><a class="reference external" href="https://docutils.sourceforge.io/docs/user/rst/quickref.html">Quick reStructuredText</a></p></li>
</ul>
</section>
<section id="restructuredtext-formatting">
<h2><a class="toc-backref" href="#table-of-contents" role="doc-backlink">reStructuredText Formatting</a><a class="headerlink" href="#restructuredtext-formatting" title="Link to this heading">¶</a></h2>
<ul>
<li><p>All text should be hard breaks at or around the 80 column mark, just as
the source code.</p></li>
<li><p>No <cite>.. sectnum::</cite> in the contents directives</p></li>
<li><p>Always include the :Last Updated: line at the top of your
document, such as:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">:</span><span class="n">Last</span> <span class="n">Updated</span><span class="p">:</span> <span class="mi">2021</span><span class="o">-</span><span class="mi">02</span><span class="o">-</span><span class="mi">16</span>
</pre></div>
</div>
</li>
<li><p>Directives <cite>versionadded</cite>, <cite>deprecated</cite>, <cite>versionremoved</cite> should be placed
directly below the parameter name, such as:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>PARAMETER1
.. deprecated:: 8.0
Use a :ref:`xxx` block instead.
PARAMETER2
.. versionadded:: 8.2.0
Some description.
</pre></div>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Please specify version as <cite>x.y.z</cite> (Major.Minor.Point) whenever possible</p>
</div>
</li>
</ul>
</section>
<section id="installing-and-using-sphinx-for-rst-html-generation">
<h2><a class="toc-backref" href="#table-of-contents" role="doc-backlink">Installing and Using Sphinx for rst-html Generation</a><a class="headerlink" href="#installing-and-using-sphinx-for-rst-html-generation" title="Link to this heading">¶</a></h2>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>As of 2024-05-06 the MapServer site requires at least Sphinx 7.3.0,
alabaster 0.7.16, and the <cite>sphinxcontrib-jquery</cite> extension - You can check
the exact versions that the live website uses in the file
<a class="reference external" href="https://github.com/MapServer/MapServer-documentation/blob/main/requirements.txt/">requirements.txt</a>,
(or you can instead browse the latest versions of the Sphinx packages <a class="reference external" href="https://pypi.org/">here</a>)
and then install locally such as:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">pip</span> <span class="n">install</span> <span class="o">-</span><span class="n">r</span> <span class="n">requirements</span><span class="o">.</span><span class="n">txt</span>
</pre></div>
</div>
</div>
<p><strong>On Windows:</strong></p>
<ol class="arabic simple">
<li><p>install <a class="reference external" href="https://www.python.org/">Python 3.X</a></p></li>
<li><p>make sure that the ‘C:/Python3X/Scripts’ directory is your path</p></li>
<li><p>install <em>pip</em></p></li>
</ol>
<blockquote>
<div><ol class="loweralpha simple">
<li><p>execute the following at the commandline:</p></li>
</ol>
<blockquote>
<div><div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">pip</span> <span class="n">help</span>
</pre></div>
</div>
</div></blockquote>
<ol class="loweralpha simple" start="2">
<li><p>if the command is not found, then download the file <a class="reference external" href="https://bootstrap.pypa.io/get-pip.py">get-pip.py</a>
locally.</p></li>
<li><p>execute the following at the commandline:</p></li>
</ol>
<blockquote>
<div><div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="n">get</span><span class="o">-</span><span class="n">pip</span><span class="o">.</span><span class="n">py</span>
</pre></div>
</div>
</div></blockquote>
</div></blockquote>
<ol class="arabic" start="4">
<li><p>inside the /MapServer-documentation directory, execute:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="o">-</span><span class="n">m</span> <span class="n">pip</span> <span class="n">install</span> <span class="o">-</span><span class="n">r</span> <span class="n">requirements</span><span class="o">.</span><span class="n">txt</span>
</pre></div>
</div>
<p>…you should see message: “Finished processing dependencies for Sphinx”</p>
</li>
<li><p>inside the /MapServer-documentation directory, execute:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">make</span> <span class="n">html</span>
</pre></div>
</div>
<p>or</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">make</span> <span class="n">latex</span>
</pre></div>
</div>
<p>the HTML output will be written to the _build/html sub-directory.</p>
</li>
<li><p>install MiKTeX from <a class="reference external" href="https://miktex.org/download">https://miktex.org/download</a> if you want to build pdfs</p></li>
</ol>
<p><strong>On Linux:</strong></p>
<ol class="arabic">
<li><p>Most flavors come with python installed (check with <em>python –version</em>), for
specific steps check with your distribution. An example command might be:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">get</span> <span class="n">install</span> <span class="n">python3</span><span class="mf">.9</span>
</pre></div>
</div>
</li>
<li><p>install pip</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">curl</span> <span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">bootstrap</span><span class="o">.</span><span class="n">pypa</span><span class="o">.</span><span class="n">io</span><span class="o">/</span><span class="n">get</span><span class="o">-</span><span class="n">pip</span><span class="o">.</span><span class="n">py</span> <span class="o">-</span><span class="n">o</span> <span class="n">get</span><span class="o">-</span><span class="n">pip</span><span class="o">.</span><span class="n">py</span>
<span class="n">python</span> <span class="n">get</span><span class="o">-</span><span class="n">pip</span><span class="o">.</span><span class="n">py</span>
</pre></div>
</div>
</li>
<li><p>install Sphinx. Inside the /MapServer-documentation directory,
execute:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="o">-</span><span class="n">m</span> <span class="n">pip</span> <span class="n">install</span> <span class="o">-</span><span class="n">r</span> <span class="n">requirements</span><span class="o">.</span><span class="n">txt</span>
</pre></div>
</div>
</li>
<li><p>to process the documentation, from the /MapServer-documentation directory, run:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">make</span> <span class="n">html</span>
<span class="n">make</span> <span class="n">html</span> <span class="n">BUILD_LANGUAGES</span><span class="o">=</span>
</pre></div>
</div>
<p>or</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">make</span> <span class="n">latex</span>
</pre></div>
</div>
<p>the HTML output will be written to the build/html sub-directory.</p>
</li>
</ol>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>If there are more than one translation, the above commands will automatically
build all translations, unless you add a “BUILD_LANGUAGES=” to the make arguments</p>
</div>
<p><strong>On OS X:</strong></p>
<ol class="arabic">
<li><p>install sphinx using pip. Inside the /MapServer-documentation directory,
execute:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="o">-</span><span class="n">m</span> <span class="n">pip</span> <span class="n">install</span> <span class="o">-</span><span class="n">r</span> <span class="n">requirements</span><span class="o">.</span><span class="n">txt</span>
</pre></div>
</div>
</li>
<li><p>install MacTex from <a class="reference external" href="https://www.tug.org/mactex/">https://www.tug.org/mactex/</a> if you want to build pdfs</p></li>
<li><p>to process the documentation, from the MapServer /MapServer-documentation directory, run:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">make</span> <span class="n">compile_messages</span>
<span class="n">make</span> <span class="n">html</span>
</pre></div>
</div>
<p>or</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">make</span> <span class="n">compile_messages</span>
<span class="n">make</span> <span class="n">latex</span>
</pre></div>
</div>
<p>the HTML output will be written to the build/html sub-directory.</p>
</li>
</ol>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>If there are more than one translation, the above commands will automatically
build all translations.</p>
</div>
</section>
<section id="spelling-tools">
<h2><a class="toc-backref" href="#table-of-contents" role="doc-backlink">Spelling tools</a><a class="headerlink" href="#spelling-tools" title="Link to this heading">¶</a></h2>
<p>There are several methods to check and/or correct spelling issues in the
documentation files:</p>
<section id="english-typo-fixing-script">
<h3><a class="toc-backref" href="#table-of-contents" role="doc-backlink">(English) typo fixing script</a><a class="headerlink" href="#english-typo-fixing-script" title="Link to this heading">¶</a></h3>
<p>(Tested on Linux. Should also likely run on MacOSX. Windows users might need
to install Cygwin, Python 3, git, curl, sed, grep, awk)</p>
<p>The script in scripts/fix_typos.sh is an interactive script to detect and correct
common spelling issues in the English documentation (en/ directory).</p>
<p>It requires Python 3 (python3 executable) to run. The first time it is run,
it also uses ‘git’ and ‘curl’ binaries to download the codespell engine,
its own dictionary, as well as the Debian Lintian and QGIS dictionaries.
They are downloaded in the fix_typos/ subdirectories. This directory can be
safely removed at any time (to enable getting new versions of the dictionaries
or the codespell engine).</p>
<p>The script is launched with :</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">./</span><span class="n">scripts</span><span class="o">/</span><span class="n">fix_typos</span><span class="o">.</span><span class="n">sh</span>
</pre></div>
</div>
<p>Whenever a typo is detected, it asks if it must be fixed with the proposed
replacement (Y/N), or in case if there are several options, to select the option
(0, 1, etc..).</p>
<p>It contains a white list of words that are marked as not being typo errors (in
the WORDS_WHITE_LIST variable). The EXCLUDED_FILES variable can also be edited
to add files fully ignored. The scripts/typos_whitelist.txt file can be edited
to add full lines that should be ignored (sensitive to starting and trailing
whitespace/tabulations, and only work on LF terminated files, hence prior conversion
from CRLF to LF might be needed). scripts/typos_whitelist.txt should be used rather
than WORDS_WHITE_LIST, only when a word is not a typo in a given context, but
might be a typo in another context.</p>
</section>
<section id="sphinxcontrib-spelling-extension">
<h3><a class="toc-backref" href="#table-of-contents" role="doc-backlink">sphinxcontrib.spelling extension</a><a class="headerlink" href="#sphinxcontrib-spelling-extension" title="Link to this heading">¶</a></h3>
<p>Here some important steps for using Sphinx’s spelling extension:</p>
<ul>
<li><p>install the <a class="reference external" href="https://pypi.org/project/sphinxcontrib-spelling/">extension</a>, such as:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="o">-</span><span class="n">m</span> <span class="n">pip</span> <span class="n">install</span> <span class="n">sphinxcontrib</span><span class="o">-</span><span class="n">spelling</span><span class="o">==</span><span class="mf">8.0.2</span>
</pre></div>
</div>
</li>
<li><p>the wordlist for MapServer is located in <a class="reference external" href="https://github.com/MapServer/MapServer-documentation/blob/main/en/spelling_wordlist.dict">/en/spelling_wordlist.dict</a></p></li>
<li><p>edit the <a class="reference external" href="https://sphinxcontrib-spelling.readthedocs.io/en/latest/customize.html">options</a>
for the extension in your local <cite>conf.py</cite> (see the “spelling extension options” section),
and make sure that the extension is enabled (see the “General configuration” section)</p></li>
<li><p>run the spellcheck with:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">make</span> <span class="n">spelling</span>
</pre></div>
</div>
</li>
</ul>
</section>
</section>
<section id="how-translations-are-handled">
<h2><a class="toc-backref" href="#table-of-contents" role="doc-backlink">How translations are handled</a><a class="headerlink" href="#how-translations-are-handled" title="Link to this heading">¶</a></h2>
<p>Nowadays, MapServer have two coexisting systems to manage translations process.
Both rely on Sphinx software.</p>
<p>The first one was the answer to the absence of internationalization support in
first days of the Sphinx software. The second use the new system of
<a class="reference external" href="https://www.sphinx-doc.org/en/master/usage/advanced/intl.html">internationalization</a> and is currently only used for the French translation.</p>
<section id="the-old-way-for-translations">
<h3><a class="toc-backref" href="#table-of-contents" role="doc-backlink">The “old” way for translations</a><a class="headerlink" href="#the-old-way-for-translations" title="Link to this heading">¶</a></h3>
<p>Although we think that nowadays the new system is better, we do not wanted to enforce
every language community to change their habits.</p>
<ul class="simple">
<li><p>All translations are organized in subdirectories in MapServer’s /MapServer-documentation directory</p></li>
<li><p>The directories are named using <a class="reference external" href="https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2">ISO3166-1 alpha-2 country codes</a>, which
will also reference to the corresponding flag icon</p></li>
<li><p>Translations are based on the English documentation</p></li>
<li><p>The directory structure and filenames must be kept, they are used to
generate links between the different translations</p></li>
</ul>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>To start a new translation, copy the directories images and include
from MapServer-documentation/en to MapServer-documentation/<lang>, where <lang> is one of the country codes. You also
should copy the MapServer-documentation/en/documentation.txt and MapServer-documentation/en/index.txt files into
your <lang> directory (the build process requires these files…you
are free to edit them as you wish for your own language).</p>
</div>
<ul class="simple">
<li><p>Only translated files are kept in the <lang> directories and the repository.</p></li>
<li><p>The build script (Makefile and make.bat) have an option (init) to preprocess
the <lang> directories. That means that each not translated English file is
copied to the target <lang> directory. You don’t have to do this to build
html files locally. If you do this, you have to clean up you directories
afterwards.</p></li>
<li><p>To keep the translations in sync with the English documentation, the translators
can monitor commits to the repository.</p></li>
</ul>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>One way to monitor changes is to subscribe the RSS feed through GitHub:
in the MapServer-documentation repository, click on the “Commits” tab and look for a
subscription link for these commit changes, for example:
see “Commit History” at <a class="reference external" href="https://github.com/MapServer/MapServer-documentation/commits/main">https://github.com/MapServer/MapServer-documentation/commits/main</a></p>
</div>
<ul>
<li><p>You have to define which languages are available by setting TRANSLATIONS in the
Makefile or make.bat:</p>
<blockquote>
<div><div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">TRANSLATIONS</span> <span class="o">=</span> <span class="n">en</span> <span class="n">de</span>
</pre></div>
</div>
</div></blockquote>
</li>
</ul>
<p>The build script will then process the subdirectories <em>en</em> and <em>de</em>. If they
are not accessible, an error message will be returned.</p>
</section>
<section id="the-standard-internationalization-system-i18n-for-translations">
<h3><a class="toc-backref" href="#table-of-contents" role="doc-backlink">The standard internationalization system (i18n) for translations</a><a class="headerlink" href="#the-standard-internationalization-system-i18n-for-translations" title="Link to this heading">¶</a></h3>
<section id="initial-translation-process-for-a-new-language">
<h4><a class="toc-backref" href="#table-of-contents" role="doc-backlink">Initial translation process for a new language</a><a class="headerlink" href="#initial-translation-process-for-a-new-language" title="Link to this heading">¶</a></h4>
<p>It follows steps below:</p>
<ul>
<li><p>Generate pot file from original English documentation using Sphinx (except
if already here)</p>
<blockquote>
<div><div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">make</span> <span class="n">gettext</span>
</pre></div>
</div>
</div></blockquote>
</li>
<li><p>copy new version of *.pot files from _build/gettext/en to translated/pot</p>
<blockquote>
<div><div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">make</span> <span class="n">gettext_copy</span>
</pre></div>
</div>
</div></blockquote>
</li>
<li><p>Copy *.pot file => *.po file (a *.po file is the same as *.pot, only
extension change and if you translate three languages, you will get
three *.po file and each of them will be into a language dir)</p>
<blockquote>
<div><div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">make</span> <span class="n">generate_po_from_tmpl</span> <span class="o">-</span><span class="n">e</span> <span class="n">TRANSLATIONI18N</span><span class="o">=</span><span class="n">fr</span>
</pre></div>
</div>
</div></blockquote>
</li>
<li><p>translate your *.po file(s)</p>
<p>You can do it with software like PoEdit but we may switch to Transifex,
an hosted translation service to make contribution more easy, follow
translation advance and have a review process for translation.</p>
</li>
<li><p>compile *.po to *.mo (sphinx need *.mo file to make substitution from
original version to the language translated)</p>
<blockquote>
<div><div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">make</span> <span class="n">compile_messages</span> <span class="o">-</span><span class="n">e</span> <span class="n">TRANSLATIONI18N</span><span class="o">=</span><span class="n">fr</span>
</pre></div>
</div>
</div></blockquote>
</li>
<li><p>Generate doc for the language</p></li>
</ul>
<p>You just need to set in the file <cite>Makefile</cite> or make.bat depending on your OS
the following parameter before building the documentation:</p>
<blockquote>
<div><div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">TRANSLATIONI18N</span><span class="o">=</span><span class="n">fr</span>
</pre></div>
</div>
</div></blockquote>
<p>You need to change as well the scripts/build_docs.sh script to add your language at
the top of the file:</p>
<blockquote>
<div><div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">LANGUAGES</span><span class="o">=</span> <span class="n">fr</span>
</pre></div>
</div>
</div></blockquote>
<p>Please for both parameter, keep the alphabetical order to kept them readable.</p>
<p><strong>Structure of the i18n files in the MapServer-documentation root directory</strong></p>
<p>The structure you need to make all the translation process is like below (an
excerpt to give you the main required structure)</p>
<blockquote>
<div><div class="highlight-default notranslate"><div class="highlight"><pre><span></span>translated/
├── fr
│ ├── about.po
│ ├── announcements_all.po
│ ├── cgi.po
│ ├── community.po
│ ├── copyright.po
│ ├── development.po
│ ├── documentation.po
│ └── LC_MESSAGES
│ ├── about.mo
│ ├── announcements_all.mo
│ ├── cgi.mo
│ ├── community.mo
│ ├── copyright.mo
│ ├── development.mo
│ └── documentation.mo
└── pot
├── about.pot
├── announcements_all.pot
├── cgi.pot
├── community.pot
├── copyright.pot
├── development.pot
└── documentation.pot
</pre></div>
</div>
</div></blockquote>
<p>Moreover, you only need to commit the *.pot and *.po files.
Be cautious, you must have an LC_MESSAGES directory to receive *.mo files.
To keep this directory in Git, it’s recommended to create and empty file into
it.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>When adding a new language, take care of the ISO code used. Famfamfam
flag icons is using ISO Country code, and transifex is using ISO Language code
which can be different. See <a class="reference external" href="https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2">ISO country code page</a>
for more information.</p>
</div>
</section>
<section id="the-usual-workflow-for-already-existing-translation">
<h4><a class="toc-backref" href="#table-of-contents" role="doc-backlink">The usual workflow for already existing translation</a><a class="headerlink" href="#the-usual-workflow-for-already-existing-translation" title="Link to this heading">¶</a></h4>
<p>The previous process we explained is only for the language creation. After, the
workflow consists of:</p>
<ul class="simple">
<li><p>translating po files for your language via <a class="reference external" href="https://www.transifex.com/organization/mapserver/dashboard">transifex</a>,</p></li>
<li><p>pull po files from transifex and commit them</p></li>
<li><p>generating the .mo files</p></li>
<li><p>building again</p></li>
</ul>
<p>Here are the command line:</p>
<ul>
<li><p>Getting po files from transifex (you can use -l flags to filter the language):</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">tx</span> <span class="n">pull</span> <span class="o">-</span><span class="n">a</span>
</pre></div>
</div>
</li>
<li><p>Build mo files from po files:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">make</span> <span class="n">compile_messages</span> <span class="o">-</span><span class="n">e</span> <span class="n">TRANSLATIONI18N</span><span class="o">=</span><span class="n">fr</span>
</pre></div>
</div>
</li>
<li><p>Build html page:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">make</span> <span class="n">clean</span> <span class="n">html</span>
</pre></div>
</div>
</li>
</ul>
<p>See below how to setup your transifex account to use transifex client to push,
pull translated files and build html files.</p>
<p>Sometimes, when a change occurs in the main english documentation, you will
need to generate again the pot files. Then, you will have to merge your
translated files with the new pot files using for example the command line
utility (from gettext) below:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">make</span> <span class="n">gettext</span>
<span class="n">make</span> <span class="n">gettext_copy</span>
</pre></div>
</div>
<p>-U mean update po file with pot file and -N mean don’t use fuzzy but exact match.
Then push po files to transifex (you can use -l flags to filter the language):</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">tx</span> <span class="n">push</span> <span class="o">-</span><span class="n">s</span>
</pre></div>
</div>
<p>When committing your update, add [build_pdf] or [build_translations] in order to
build pdf and/or translation to the webserver.</p>
<p><strong>Known issues:</strong></p>
<ul>
<li><p>when downloading po files to local dir, if the file exists it won’t be
updated. At this moment we should remove all po files before downloading.</p></li>
<li><p>when building html doc cache system doesn’t allow to update a page with up to
date translation. We should use the clean target with make.</p></li>
<li><p>This command line throw an error:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">tx</span> <span class="n">push</span> <span class="o">-</span><span class="n">s</span> <span class="o">-</span><span class="n">t</span>
</pre></div>
</div>
</li>
</ul>
</section>
<section id="how-to-use-transifex-client-to-manage-translation-process">
<h4><a class="toc-backref" href="#table-of-contents" role="doc-backlink">How to use Transifex client to manage translation process</a><a class="headerlink" href="#how-to-use-transifex-client-to-manage-translation-process" title="Link to this heading">¶</a></h4>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Transifex is described more in depth in the document: <a class="reference internal" href="translation.html#documentation-translation"><span class="std std-ref">How to Help Translate the Documentation</span></a></p>
</div>
<ul>
<li><p>Install transifex client:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">get</span> <span class="n">install</span> <span class="n">transifex</span><span class="o">-</span><span class="n">client</span>
</pre></div>
</div>
</li>
<li><p>Edit ~/.transifexrc and add the appropriate info in there:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">vim</span> <span class="o">~/.</span><span class="n">transifexrc</span>
</pre></div>
</div>
<ul>
<li><p>With the following content:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>[https://www.transifex.com/]
username = yjacolin
token =
password = passw0rd!
hostname = https://www.transifex.com/
</pre></div>
</div>
</li>
</ul>
</li>
</ul>
</section>
</section>
</section>
<section id="reference-labels">
<h2><a class="toc-backref" href="#table-of-contents" role="doc-backlink">Reference Labels</a><a class="headerlink" href="#reference-labels" title="Link to this heading">¶</a></h2>
<table class="docutils align-default" id="id1">
<caption><span class="caption-text">:ref: reference labels</span><a class="headerlink" href="#id1" title="Link to this table">¶</a></caption>
<thead>
<tr class="row-odd"><th class="head"><p>Label</p></th>
<th class="head"><p>Title</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p>about</p></td>
<td><p><a class="reference internal" href="../about.html#about"><span class="std std-ref">About</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>agg</p></td>
<td><p><a class="reference internal" href="../output/agg.html#agg"><span class="std std-ref">AGG Rendering Specifics</span></a></p></td>
</tr>
<tr class="row-even"><td><p>antialias</p></td>
<td><p><a class="reference internal" href="../output/antialias.html#antialias"><span class="std std-ref">AntiAliasing with MapServer</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>arcinfo</p></td>
<td><p><a class="reference internal" href="../input/vector/ArcInfo.html#arcinfo"><span class="std std-ref">ArcInfo</span></a></p></td>
</tr>
<tr class="row-even"><td><p>arcsde</p></td>
<td><p><a class="reference internal" href="../input/vector/arcsde.html#arcsde"><span class="std std-ref">ArcSDE</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>autotest</p></td>
<td><p><a class="reference internal" href="tests/autotest.html#autotest"><span class="std std-ref">Regression Testing</span></a></p></td>
</tr>
<tr class="row-even"><td><p>background</p></td>
<td><p><a class="reference internal" href="../tutorial/background.html#tutorial-background"><span class="std std-ref">Tutorial Timeframe</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>batch_utilities</p></td>
<td><p><a class="reference internal" href="../utilities/batch_utilities.html#batch-utilities"><span class="std std-ref">Batch Scripting</span></a></p></td>
</tr>
<tr class="row-even"><td><p>bugs</p></td>
<td><p><a class="reference internal" href="bugs.html#bugs"><span class="std std-ref">Bug Submission</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>cgi</p></td>
<td><p><a class="reference internal" href="../cgi/index.html#cgi"><span class="std std-ref">CGI</span></a></p></td>
</tr>
<tr class="row-even"><td><p>cgi_controls</p></td>
<td><p><a class="reference internal" href="../cgi/controls.html#cgi-controls"><span class="std std-ref">MapServer CGI Controls</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>cgi_introduction</p></td>
<td><p><a class="reference internal" href="../cgi/introduction.html#cgi-introduction"><span class="std std-ref">MapServer CGI Introduction</span></a></p></td>
</tr>
<tr class="row-even"><td><p>class</p></td>
<td><p><a class="reference internal" href="../mapfile/class.html#class"><span class="std std-ref">CLASS</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>community</p></td>
<td><p><a class="reference internal" href="../community/index.html#community"><span class="std std-ref">Community Activities</span></a></p></td>
</tr>
<tr class="row-even"><td><p>development</p></td>
<td><p><a class="reference internal" href="index.html#development"><span class="std std-ref">Development</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>dgn</p></td>
<td><p><a class="reference internal" href="../input/vector/dgn.html#dgn"><span class="std std-ref">DGN</span></a></p></td>
</tr>
<tr class="row-even"><td><p>documentation</p></td>
<td><p><a class="reference internal" href="../documentation.html#documentation"><span class="std std-ref">MapServer 5.2.2 Documentation</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>documentation_development</p></td>
<td><p><a class="reference internal" href="#documentation-development"><span class="std std-ref">Documentation Development Guide</span></a></p></td>
</tr>
<tr class="row-even"><td><p>dotnet_compile</p></td>
<td><p><a class="reference internal" href="../installation/dotnet.html#dotnet-compile"><span class="std std-ref">.NET MapScript Compilation</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>download</p></td>
<td><p><a class="reference internal" href="../download.html#download"><span class="std std-ref">Download</span></a></p></td>
</tr>
<tr class="row-even"><td><p>dynamic_charting</p></td>
<td><p><a class="reference internal" href="../output/dynamic_charting.html#dynamic-charting"><span class="std std-ref">Dynamic Charting</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>editing</p></td>
<td><p><a class="reference internal" href="editing/index.html#editing"><span class="std std-ref">Mapfile Editing</span></a></p></td>
</tr>
<tr class="row-even"><td><p>errors</p></td>
<td><p><a class="reference internal" href="../errors.html#errors"><span class="std std-ref">Errors</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>example1-1</p></td>
<td><p><a class="reference internal" href="../tutorial/example1-1.html#example1-1"><span class="std std-ref">Example 1.1</span></a></p></td>
</tr>
<tr class="row-even"><td><p>example1-1-map</p></td>
<td><p><a class="reference internal" href="../tutorial/example1-1-map.html#example1-1-map"><span class="std std-ref">Example1-1.map</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>example1-2</p></td>
<td><p><a class="reference internal" href="../tutorial/example1-2.html#example1-2"><span class="std std-ref">Example 1.2</span></a></p></td>
</tr>
<tr class="row-even"><td><p>example1-2-map</p></td>
<td><p><a class="reference internal" href="../tutorial/example1-2-map.html#example1-2-map"><span class="std std-ref">Example1-2.map</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>example1-3</p></td>
<td><p><a class="reference internal" href="../tutorial/example1-3.html#example1-3"><span class="std std-ref">Example 1.3</span></a></p></td>
</tr>
<tr class="row-even"><td><p>example1-3-map</p></td>
<td><p><a class="reference internal" href="../tutorial/example1-3-map.html#example1-3-map"><span class="std std-ref">Example1-3.map</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>example1-4</p></td>
<td><p><a class="reference internal" href="../tutorial/example1-4.html#example1-4"><span class="std std-ref">Example 1.4</span></a></p></td>
</tr>
<tr class="row-even"><td><p>example1-4-map</p></td>
<td><p><a class="reference internal" href="../tutorial/example1-4-map.html#example1-4-map"><span class="std std-ref">Example1-4.map</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>example1-5</p></td>
<td><p><a class="reference internal" href="../tutorial/example1-5.html#example1-5"><span class="std std-ref">Example 1.5</span></a></p></td>
</tr>
<tr class="row-even"><td><p>example1-5-map</p></td>
<td><p><a class="reference internal" href="../tutorial/example1-5-map.html#example1-5-map"><span class="std std-ref">Example1-5.map</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>example1-6</p></td>
<td><p><a class="reference internal" href="../tutorial/example1-6.html#example1-6"><span class="std std-ref">Example 1.6</span></a></p></td>
</tr>
<tr class="row-even"><td><p>example1-6-map</p></td>
<td><p><a class="reference internal" href="../tutorial/example1-6-map.html#example1-6-map"><span class="std std-ref">Example1-6.map</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>example1-7</p></td>
<td><p><a class="reference internal" href="../tutorial/example1-7.html#example1-7"><span class="std std-ref">Example 1.7</span></a></p></td>
</tr>
<tr class="row-even"><td><p>example1-7-map</p></td>
<td><p><a class="reference internal" href="../tutorial/example1-7-map.html#example1-7-map"><span class="std std-ref">Example1-7.map</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>example1-8</p></td>
<td><p><a class="reference internal" href="../tutorial/example1-8.html#example1-8"><span class="std std-ref">Example 1.8</span></a></p></td>
</tr>
<tr class="row-even"><td><p>example1-8-map</p></td>
<td><p><a class="reference internal" href="../tutorial/example1-8-map.html#example1-8-map"><span class="std std-ref">Example1-8.map</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>expressions</p></td>
<td><p><a class="reference internal" href="../mapfile/expressions.html#expressions"><span class="std std-ref">Expressions</span></a></p></td>
</tr>
<tr class="row-even"><td><p>faq</p></td>
<td><p><a class="reference internal" href="../faq.html#faq"><span class="std std-ref">FAQ</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>fastcgi</p></td>
<td><p><a class="reference internal" href="../optimization/fastcgi.html#fastcgi"><span class="std std-ref">FastCGI</span></a></p></td>
</tr>
<tr class="row-even"><td><p>feature</p></td>
<td><p><a class="reference internal" href="../mapfile/feature.html#feature"><span class="std std-ref">FEATURE</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>filter_encoding</p></td>
<td><p><a class="reference internal" href="../ogc/filter_encoding.html#filter-encoding"><span class="std std-ref">WFS Filter Encoding</span></a></p></td>
</tr>
<tr class="row-even"><td><p>flash</p></td>
<td><p><a class="reference internal" href="../output/flash.html#flash"><span class="std std-ref">Flash Output</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>fontset</p></td>
<td><p><a class="reference internal" href="../mapfile/fontset.html#fontset"><span class="std std-ref">FONTSET</span></a></p></td>
</tr>
<tr class="row-even"><td><p>format_types</p></td>
<td><p><a class="reference internal" href="../input/vector/format_types.html#format-types"><span class="std std-ref">Data Format Types</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>genindex</p></td>
<td><p><a class="reference internal" href="../genindex.html"><span class="std std-ref">Index</span></a></p></td>
</tr>
<tr class="row-even"><td><p>git</p></td>
<td><p><a class="reference internal" href="git.html#git"><span class="std std-ref">GitHub</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>gloss</p></td>
<td><p><a class="reference internal" href="../glossary.html#gloss"><span class="std std-ref">Glossary</span></a></p></td>
</tr>
<tr class="row-even"><td><p>gml</p></td>
<td><p><a class="reference internal" href="../input/vector/gml.html#gml"><span class="std std-ref">GML</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>gpx</p></td>
<td><p><a class="reference internal" href="../input/vector/gpx.html#gpx"><span class="std std-ref">GPS Exchange Format (GPX)</span></a></p></td>
</tr>
<tr class="row-even"><td><p>grid</p></td>
<td><p><a class="reference internal" href="../mapfile/grid.html#grid"><span class="std std-ref">GRID</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>html_legend</p></td>
<td><p><a class="reference internal" href="../output/html_legend.html#html-legend"><span class="std std-ref">HTML Legends with MapServer</span></a></p></td>
</tr>
<tr class="row-even"><td><p>iis</p></td>
<td><p><a class="reference internal" href="../installation/iis.html#iis"><span class="std std-ref">IIS Setup for MapServer</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>imagemaps</p></td>
<td><p><a class="reference internal" href="../output/imagemaps.html#imagemaps"><span class="std std-ref">HTML Imagemaps</span></a></p></td>
</tr>
<tr class="row-even"><td><p>include</p></td>
<td><p><a class="reference internal" href="../mapfile/include.html#include"><span class="std std-ref">INCLUDE</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>inline</p></td>
<td><p><a class="reference internal" href="../input/vector/inline.html#inline"><span class="std std-ref">Inline</span></a></p></td>
</tr>
<tr class="row-even"><td><p>input</p></td>
<td><p><a class="reference internal" href="../input/index.html#input"><span class="std std-ref">Data Input</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>input_postgis</p></td>
<td><p><a class="reference internal" href="../input/vector/postgis.html#input-postgis"><span class="std std-ref">PostGIS/PostgreSQL</span></a></p></td>
</tr>
<tr class="row-even"><td><p>installation</p></td>
<td><p><a class="reference internal" href="../installation/index.html#installation"><span class="std std-ref">Installation</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>introduction</p></td>
<td><p><a class="reference internal" href="../introduction.html#introduction"><span class="std std-ref">An Introduction to MapServer</span></a></p></td>
</tr>
<tr class="row-even"><td><p>join</p></td>
<td><p><a class="reference internal" href="../mapfile/join.html#join"><span class="std std-ref">JOIN</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>kml</p></td>
<td><p><a class="reference internal" href="../input/vector/kml.html#kml"><span class="std std-ref">KML - Keyhole Markup Language</span></a></p></td>
</tr>
<tr class="row-even"><td><p>label</p></td>
<td><p><a class="reference internal" href="../mapfile/label.html#label"><span class="std std-ref">LABEL</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>layer</p></td>
<td><p><a class="reference internal" href="../mapfile/layer.html#layer"><span class="std std-ref">LAYER</span></a></p></td>
</tr>
<tr class="row-even"><td><p>legend</p></td>
<td><p><a class="reference internal" href="../mapfile/legend.html#legend"><span class="std std-ref">LEGEND</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>legend_utility</p></td>
<td><p><a class="reference internal" href="../utilities/legend.html#legend-utility"><span class="std std-ref">legend</span></a></p></td>
</tr>
<tr class="row-even"><td><p>license</p></td>
<td><p><a class="reference internal" href="../copyright.html#license"><span class="std std-ref">License</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>linux</p></td>
<td><p><a class="reference internal" href="../download.html#linux"><span class="std std-ref">Linux</span></a></p></td>
</tr>
<tr class="row-even"><td><p>lists</p></td>
<td><p><a class="reference internal" href="../community/lists.html#lists"><span class="std std-ref">Mailing Lists</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>management</p></td>
<td><p><a class="reference internal" href="../utilities/manage.html#management"><span class="std std-ref">File Management</span></a></p></td>
</tr>
<tr class="row-even"><td><p>map</p></td>
<td><p><a class="reference internal" href="../mapfile/map.html#map"><span class="std std-ref">MAP</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>map2img</p></td>
<td><p><a class="reference internal" href="../utilities/map2img.html#map2img"><span class="std std-ref">map2img</span></a></p></td>
</tr>
<tr class="row-even"><td><p>map_context</p></td>
<td><p><a class="reference internal" href="../ogc/mapcontext.html#map-context"><span class="std std-ref">Map Context</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>mapcache_formats</p></td>
<td><p><a class="reference internal" href="../mapcache/formats.html#mapcache-formats"><span class="std std-ref">MapCache Image Formats</span></a></p></td>
</tr>
<tr class="row-even"><td><p>mapcache_jpeg_format</p></td>
<td><p><a class="reference internal" href="../mapcache/formats.html#mapcache-jpeg-format"><span class="std std-ref">MapCache JPEG Format</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>mapcache_png_format</p></td>
<td><p><a class="reference internal" href="../mapcache/formats.html#mapcache-png-format"><span class="std std-ref">MapCache PNG Format</span></a></p></td>
</tr>