VIEW THIS AS

Auto mode follows the Route Engine until you choose a viewpoint.

YOU ARE HERE

ROUTE CHECK

CONNECTED TO

WHAT NEXT

Use the canonical route for this room, or HELP if you are unsure.

Translate Like a Pro | 8740 — Fortran M_CLI2 Localization, Prototype Options, SET_ARGS, Help Text and Unicode QA

Three learners review open books together at a classroom table, with stacks of textbooks, stationery and a whiteboard in the bright room.

Fortran M_CLI2 localization means writing and testing multilingual command-line help, option descriptions, error recovery and examples around the Fortran module’s prototype-based argument parser. M_CLI2 defines a command interface using a prototype string passed to set_args, then retrieves typed values through routines such as sget, iget, rget and lget. The module can present application-supplied help and version text, but its parser is not a substitute for a translation strategy, Unicode testing or application-specific validation.

Imagine a scientific utility named BasinScan that calculates harmless summary settings for local observations. Researchers in Spain, Japan and France use the same binary, but they read documentation in different languages and may have filenames or titles containing accented or non-Latin characters. A translated example must not accidentally rename --title, change a numeric default or turn a Boolean switch into a string option. Readers searching for Fortran M_CLI2 help localization, set_args prototypes, help_text translation, response-file behavior or Unicode CLI QA need to understand the parser’s actual contract before copying commands.

The dependable method is to freeze the prototype syntax; distinguish typed scalar retrieval from arrays and unnamed arguments; translate readable help without changing executable keyword identity; validate required values and ranges in application code; and test display, paths and arguments across relevant compilers and operating systems. This guide moves from a minimal program through practical troubleshooting, multilingual review, safe sample data and a repeatable release checklist.

  • Prototype keywords and default markers are executable syntax.
  • Use the correct typed getter and show exact accepted value forms.
  • Translate supplied help text without changing flags or user data.
  • Test response-file policy, compilers, Unicode, scientific validity and error recovery.

Chapter 1 — The command contract behind the words

1. A prototype defines the command’s grammar

Unlike a parser configured through many separate flag objects, M_CLI2 can receive one descriptive string through set_args. The string includes option names and default values. For example, --title:T "sample" -n 5 -q F describes a title with short alias, an integer default and a Boolean switch. The punctuation and default markers are executable design, not words for translators to improvise. Record the prototype verbatim and explain it in ordinary language outside the code.

The quickest way to expose a hidden assumption here is to put the prototype or getter beside a single working command and one deliberately incorrect invocation. Ask which text is a literal parser token, which text is a description and which value comes from the user. Then compare those answers with the compiled program, not just with a language dictionary. In scientific software the consequences of a misunderstood number or unit can extend beyond inconvenience, so accurate documentation is part of the quality of the result.

2. The family of typed retrieval functions

After parsing, sget retrieves character values, iget integers, rget single-precision reals and lget logical values; additional routines include double-precision and complex variants. Array-returning *gets routines are available for list-style values. When localizing help, say which kinds of input the program accepts. A word such as ‘number’ is not enough if a flag must be an integer or a comma-separated list; show a tested literal representation.

The quickest way to expose a hidden assumption here is to put the prototype or getter beside a single working command and one deliberately incorrect invocation. Ask which text is a literal parser token, which text is a description and which value comes from the user. Then compare those answers with the compiled program, not just with a language dictionary. In scientific software the consequences of a misunderstood number or unit can extend beyond inconvenience, so accurate documentation is part of the quality of the result.

3. The difference between a default and an explicit choice

A prototype contains defaults, so a user who omits an option may still obtain a meaningful value from iget or sget. The specified routine allows the application to ask whether the user actually provided a particular keyword. That distinction is vital for warnings and required-input checks. A translated message should not accuse the user of supplying a default they never typed, and it should explain when omission is acceptable.

The quickest way to expose a hidden assumption here is to put the prototype or getter beside a single working command and one deliberately incorrect invocation. Ask which text is a literal parser token, which text is a description and which value comes from the user. Then compare those answers with the compiled program, not just with a language dictionary. In scientific software the consequences of a misunderstood number or unit can extend beyond inconvenience, so accurate documentation is part of the quality of the result.

4. Help and version text are application content

M_CLI2 offers mechanisms for help_text and version_text supplied to set_args, alongside automatically available switches such as --help, --usage, --version and --verbose. The application can provide human-readable messages, but translation quality is its responsibility. Keep headings, examples and recovery instructions synchronized with the executable prototype. Version text is especially easy to leave stale after changing a release.

The quickest way to expose a hidden assumption here is to put the prototype or getter beside a single working command and one deliberately incorrect invocation. Ask which text is a literal parser token, which text is a description and which value comes from the user. Then compare those answers with the compiled program, not just with a language dictionary. In scientific software the consequences of a misunderstood number or unit can extend beyond inconvenience, so accurate documentation is part of the quality of the result.

5. Boolean and short-name conventions

The prototype convention uses unquoted F to designate a Boolean option, and :LETTER can associate a long option with a short equivalent. A translation team should not replace these markers with a local word for false or a capitalized letter that looks similar. These are parser syntax. Teach the logic of the option in prose, and test the actual short and long invocations before publishing them.

The quickest way to expose a hidden assumption here is to put the prototype or getter beside a single working command and one deliberately incorrect invocation. Ask which text is a literal parser token, which text is a description and which value comes from the user. Then compare those answers with the compiled program, not just with a language dictionary. In scientific software the consequences of a misunderstood number or unit can extend beyond inconvenience, so accurate documentation is part of the quality of the result.

6. Lists, unnamed values and remaining words

Many scientific tools receive several input files, lists of parameters or subcommands. M_CLI2 provides interfaces for arrays, unnamed values and remaining arguments, and also supports special subcommand facilities. A document that calls every input an ‘option’ obscures how the command really works. Explain named options separately from positional filenames, show where an input list begins and test comma-delimited values with the exact intended data type.

The quickest way to expose a hidden assumption here is to put the prototype or getter beside a single working command and one deliberately incorrect invocation. Ask which text is a literal parser token, which text is a description and which value comes from the user. Then compare those answers with the compiled program, not just with a language dictionary. In scientific software the consequences of a misunderstood number or unit can extend beyond inconvenience, so accurate documentation is part of the quality of the result.

7. Validation remains a scientific responsibility

The upstream documentation explains that M_CLI2 intentionally leaves value checks beyond type to application code. A numeric flag may have an allowed physical range, a mode may permit only certain keywords and mutually exclusive options may not be combined. Translation must report those rules accurately, not imply the parser enforces every one. Use specified or appropriate application logic to check requirements, and provide clear messages about the actual rejection.

The quickest way to expose a hidden assumption here is to put the prototype or getter beside a single working command and one deliberately incorrect invocation. Ask which text is a literal parser token, which text is a description and which value comes from the user. Then compare those answers with the compiled program, not just with a language dictionary. In scientific software the consequences of a misunderstood number or unit can extend beyond inconvenience, so accurate documentation is part of the quality of the result.

8. Response files are an additional trust boundary

The module supports a response-file mode for abbreviating complex command sequences, and its documented mechanism is not the same as every compiler’s response-file syntax. A localized guide must say when response files are enabled, how the application finds them and whether supplied paths are trusted. Avoid publishing examples that load unknown remote input or silently override a user-controlled choice. Treat response-file content as command arguments with the same validation requirements as ordinary shell input.

The quickest way to expose a hidden assumption here is to put the prototype or getter beside a single working command and one deliberately incorrect invocation. Ask which text is a literal parser token, which text is a description and which value comes from the user. Then compare those answers with the compiled program, not just with a language dictionary. In scientific software the consequences of a misunderstood number or unit can extend beyond inconvenience, so accurate documentation is part of the quality of the result.

9. Compiler and operating-system differences matter

A Fortran program may be built with GNU Fortran, Intel Fortran or another supported compiler. Conversion of incoming command arguments, filename encodings, console display and character lengths can differ across the deployed environment. A Unicode example is only reliable if the program is compiled and exercised in the target configuration. Make release claims as specific as the evidence and use conservative fallbacks when a platform’s text representation is uncertain.

The quickest way to expose a hidden assumption here is to put the prototype or getter beside a single working command and one deliberately incorrect invocation. Ask which text is a literal parser token, which text is a description and which value comes from the user. Then compare those answers with the compiled program, not just with a language dictionary. In scientific software the consequences of a misunderstood number or unit can extend beyond inconvenience, so accurate documentation is part of the quality of the result.

10. The reference program should have no side effects

A pedagogical CLI can print parsed values and stop. That is preferable to testing a translation through a program that overwrites scientific data. Establish a harmless fixture that can run in an isolated directory. Once parsing is correct, add separate tests for real application validation and file I/O. This isolates language defects from scientific correctness and makes regressions easier to reproduce for researchers who are not professional software engineers.

The quickest way to expose a hidden assumption here is to put the prototype or getter beside a single working command and one deliberately incorrect invocation. Ask which text is a literal parser token, which text is a description and which value comes from the user. Then compare those answers with the compiled program, not just with a language dictionary. In scientific software the consequences of a misunderstood number or unit can extend beyond inconvenience, so accurate documentation is part of the quality of the result.

Chapter 2 — A compact Fortran diagnostic program

program basin_scan_example
   use M_CLI2, only : set_args, sget, iget, lget
   implicit none
   call set_args('--title:T "sample" -n 5 -q F')
   print *, 'Title: ', sget('title')
   print *, 'Count: ', iget('n')
   print *, 'Quiet: ', lget('q')
end program basin_scan_example

! Example after compiling and linking M_CLI2:
! ./basin_scan_example --title "café study" -n 12 -q

The program is deliberately limited to printing parsed settings, not opening or modifying scientific data. It uses the documented prototype and typed getter approach to give readers an observable baseline. The exact compiler and link command depend on the installed M_CLI2 configuration. Before recommending any local build command, follow the upstream build instructions and confirm that the module file and library are accessible to the selected compiler.

Run an ordinary ASCII title, a multiword title in quotes and a title with accented characters. Try omission of the count to see its default, then an explicit override. Intentionally supply an invalid integer and capture the resulting diagnostic. If a Unicode sample fails on one platform, investigate character handling without claiming the parser itself translates or normalizes file paths. The goal is a reproducible explanation of what the program actually accepts.

Chapter 3 — Thirty-two field investigations for multilingual scientific CLIs

Investigation 1: A translator edits the prototype’s option spelling

The source defines --title, but a translated tutorial writes a different long option to sound natural. The binary has not changed and rejects that spelling.

Leave executable names and aliases unchanged. Translate the surrounding explanation, including what the title value affects.

Copy the localized command into the released executable and check that sget('title') returns the chosen value.

For this investigation, retain the exact M_CLI2 version, Fortran compiler, prototype string, command invocation, target locale, observed output and expected correction. A fluent technical reviewer should be able to decide what to type next from the translated message alone. If the decision would fail, identify whether the defect comes from parser configuration, downstream validation, shell interpretation, character encoding or wording. Repair that layer and repeat the original test; an attractive translation that still misdirects the reader does not pass quality assurance.

Investigation 2: The Boolean F becomes a translated word

A helper edits -q F in the set_args prototype to use a word meaning ‘false’. That changes parser syntax rather than user guidance.

Keep the unquoted F convention in the prototype and explain its purpose in a translated sentence.

Test the default logical value and the flag’s effect through lget using the actual compiled program.

For this investigation, retain the exact M_CLI2 version, Fortran compiler, prototype string, command invocation, target locale, observed output and expected correction. A fluent technical reviewer should be able to decide what to type next from the translated message alone. If the decision would fail, identify whether the defect comes from parser configuration, downstream validation, shell interpretation, character encoding or wording. Repair that layer and repeat the original test; an attractive translation that still misdirects the reader does not pass quality assurance.

Investigation 3: A short alias is silently capitalized

The prototype uses a short alias after a colon, but the localized example prints a different case. A reader encounters an unknown option or surprising collision.

Treat the alias letter as a literal part of the interface and check it against the prototype every time documentation changes.

Run the short and long forms and compare the retrieved value, then test the suspicious capitalized form.

For this investigation, retain the exact M_CLI2 version, Fortran compiler, prototype string, command invocation, target locale, observed output and expected correction. A fluent technical reviewer should be able to decide what to type next from the translated message alone. If the decision would fail, identify whether the defect comes from parser configuration, downstream validation, shell interpretation, character encoding or wording. Repair that layer and repeat the original test; an attractive translation that still misdirects the reader does not pass quality assurance.

Investigation 4: A default value is described as mandatory input

The program has a prototype default, yet the localized guide says the user must specify the option on every invocation.

Explain when omission is valid and when application-level policy requires an explicit value. Use specified when that difference matters.

Run an omitted option and an explicit override, verifying the retrieved values and any required-input warning.

For this investigation, retain the exact M_CLI2 version, Fortran compiler, prototype string, command invocation, target locale, observed output and expected correction. A fluent technical reviewer should be able to decide what to type next from the translated message alone. If the decision would fail, identify whether the defect comes from parser configuration, downstream validation, shell interpretation, character encoding or wording. Repair that layer and repeat the original test; an attractive translation that still misdirects the reader does not pass quality assurance.

Investigation 5: The program confuses omitted and explicitly supplied defaults

A user types the exact default value but the application assumes no option was entered because it compares values rather than checking presence.

Use specified when behavior depends on whether the option appeared. Do not infer intent from equality to a default.

Compare no flag, explicit default and explicit nondefault inputs under the same locale.

For this investigation, retain the exact M_CLI2 version, Fortran compiler, prototype string, command invocation, target locale, observed output and expected correction. A fluent technical reviewer should be able to decide what to type next from the translated message alone. If the decision would fail, identify whether the defect comes from parser configuration, downstream validation, shell interpretation, character encoding or wording. Repair that layer and repeat the original test; an attractive translation that still misdirects the reader does not pass quality assurance.

Investigation 6: A whole number is passed to a real-only description

The help mentions a ‘number’ but never says whether the value must be integer, real or double precision. Some readers infer a forbidden decimal form.

Name the expected type and show a valid literal matching the actual retrieval routine such as iget or rget.

Test an integer, a real and an invalid string against the implemented option and error behavior.

For this investigation, retain the exact M_CLI2 version, Fortran compiler, prototype string, command invocation, target locale, observed output and expected correction. A fluent technical reviewer should be able to decide what to type next from the translated message alone. If the decision would fail, identify whether the defect comes from parser configuration, downstream validation, shell interpretation, character encoding or wording. Repair that layer and repeat the original test; an attractive translation that still misdirects the reader does not pass quality assurance.

Investigation 7: A decimal separator is localized without testing

An example changes the dot in a machine-readable numeric value to a comma because that is familiar in the target language. The parser or later conversion may interpret it as a list separator.

Explain the accepted numeric representation and distinguish display formatting from argument formatting. Do not assume locale-aware parsing.

Run dot and comma forms on the supported compiler and compare the resulting value or rejection.

For this investigation, retain the exact M_CLI2 version, Fortran compiler, prototype string, command invocation, target locale, observed output and expected correction. A fluent technical reviewer should be able to decide what to type next from the translated message alone. If the decision would fail, identify whether the defect comes from parser configuration, downstream validation, shell interpretation, character encoding or wording. Repair that layer and repeat the original test; an attractive translation that still misdirects the reader does not pass quality assurance.

Investigation 8: A list uses the wrong delimiter

The prototype accepts a comma-separated list and the guide shows semicolons or translated punctuation. The array getter receives a different shape.

Keep the documented list separator and show exact examples for the relevant *gets routine.

Test a two-element list and a one-element list, verifying array length, element values and conversion.

For this investigation, retain the exact M_CLI2 version, Fortran compiler, prototype string, command invocation, target locale, observed output and expected correction. A fluent technical reviewer should be able to decide what to type next from the translated message alone. If the decision would fail, identify whether the defect comes from parser configuration, downstream validation, shell interpretation, character encoding or wording. Repair that layer and repeat the original test; an attractive translation that still misdirects the reader does not pass quality assurance.

Investigation 9: Array and scalar retrieval are mixed

The application expects multiple observations but the guide teaches iget where a list getter is used in code, or vice versa.

Explain whether the flag represents one scalar or several values and demonstrate the correct form without inventing semantics.

Supply one and several values, comparing the parsed array or scalar to the documentation.

For this investigation, retain the exact M_CLI2 version, Fortran compiler, prototype string, command invocation, target locale, observed output and expected correction. A fluent technical reviewer should be able to decide what to type next from the translated message alone. If the decision would fail, identify whether the defect comes from parser configuration, downstream validation, shell interpretation, character encoding or wording. Repair that layer and repeat the original test; an attractive translation that still misdirects the reader does not pass quality assurance.

Investigation 10: A negative value is read as a flag

The program accepts negative numeric values, but the way the keyword and value are separated makes a leading dash ambiguous.

Use the documented prototype conventions for values that may begin with a dash and test the exact assignment syntax used in the application.

Run negative and positive values, verifying the sign is preserved rather than consumed as an option.

For this investigation, retain the exact M_CLI2 version, Fortran compiler, prototype string, command invocation, target locale, observed output and expected correction. A fluent technical reviewer should be able to decide what to type next from the translated message alone. If the decision would fail, identify whether the defect comes from parser configuration, downstream validation, shell interpretation, character encoding or wording. Repair that layer and repeat the original test; an attractive translation that still misdirects the reader does not pass quality assurance.

Investigation 11: Help text is truncated by fixed character length

A translated help_text array contains longer lines than the declared character length, so important words are cut off before they reach the terminal.

Allocate adequate character length or explicitly wrap lines without changing their meaning. Review the Fortran character declaration as well as the translation.

Compile the localized build and inspect the complete help output at normal and narrow widths.

For this investigation, retain the exact M_CLI2 version, Fortran compiler, prototype string, command invocation, target locale, observed output and expected correction. A fluent technical reviewer should be able to decide what to type next from the translated message alone. If the decision would fail, identify whether the defect comes from parser configuration, downstream validation, shell interpretation, character encoding or wording. Repair that layer and repeat the original test; an attractive translation that still misdirects the reader does not pass quality assurance.

Investigation 12: A version_text field remains in the old language

The binary is updated but the displayed --version text still contains a previous release date and stale translation.

Generate version metadata from the release configuration where practical and inspect the entire text block during QA.

Run --version for every shipped locale and compare against the actual build identifier.

For this investigation, retain the exact M_CLI2 version, Fortran compiler, prototype string, command invocation, target locale, observed output and expected correction. A fluent technical reviewer should be able to decide what to type next from the translated message alone. If the decision would fail, identify whether the defect comes from parser configuration, downstream validation, shell interpretation, character encoding or wording. Repair that layer and repeat the original test; an attractive translation that still misdirects the reader does not pass quality assurance.

Investigation 13: The user thinks –usage and –help are identical

The module provides both recognized switches, but the application may supply richer help content while concise usage has a different role.

Explain the difference as actually observed in the released program. Do not assume one screen contains everything the other does.

Invoke both and compare information needed for a first successful command and an error recovery.

For this investigation, retain the exact M_CLI2 version, Fortran compiler, prototype string, command invocation, target locale, observed output and expected correction. A fluent technical reviewer should be able to decide what to type next from the translated message alone. If the decision would fail, identify whether the defect comes from parser configuration, downstream validation, shell interpretation, character encoding or wording. Repair that layer and repeat the original test; an attractive translation that still misdirects the reader does not pass quality assurance.

Investigation 14: An error does not identify the offending keyword

The user enters an unsupported flag and the translated diagnostic merely says ‘invalid input’. This makes the next action a guess.

Preserve the option name, show its recognized alternatives and distinguish grammar failure from application-specific validation.

Trigger a misspelled keyword and ask a new reader to correct it using only the target-language message.

For this investigation, retain the exact M_CLI2 version, Fortran compiler, prototype string, command invocation, target locale, observed output and expected correction. A fluent technical reviewer should be able to decide what to type next from the translated message alone. If the decision would fail, identify whether the defect comes from parser configuration, downstream validation, shell interpretation, character encoding or wording. Repair that layer and repeat the original test; an attractive translation that still misdirects the reader does not pass quality assurance.

Investigation 15: Validation of scientific ranges is omitted

The parser can retrieve an integer without proving it is physically sensible. A value below an allowed threshold proceeds into later calculations.

Implement range checks in application code and document the limits clearly, including units and consequences.

Test just below, at and just above each boundary, verifying that the translated error points to the rejected range.

For this investigation, retain the exact M_CLI2 version, Fortran compiler, prototype string, command invocation, target locale, observed output and expected correction. A fluent technical reviewer should be able to decide what to type next from the translated message alone. If the decision would fail, identify whether the defect comes from parser configuration, downstream validation, shell interpretation, character encoding or wording. Repair that layer and repeat the original test; an attractive translation that still misdirects the reader does not pass quality assurance.

Investigation 16: Mutually exclusive options are accepted together

Two switches make sense individually but conflict semantically. The guide assumes M_CLI2 will enforce exclusivity automatically beyond type parsing.

Use explicit application validation, for example presence checks, and explain which single option the reader should choose.

Run each switch alone and the pair together; confirm that the conflict is rejected safely with a clear message.

For this investigation, retain the exact M_CLI2 version, Fortran compiler, prototype string, command invocation, target locale, observed output and expected correction. A fluent technical reviewer should be able to decide what to type next from the translated message alone. If the decision would fail, identify whether the defect comes from parser configuration, downstream validation, shell interpretation, character encoding or wording. Repair that layer and repeat the original test; an attractive translation that still misdirects the reader does not pass quality assurance.

Investigation 17: A title with spaces is split by the shell

A researcher passes a multiword title without quoting. The shell delivers extra arguments before sget can see the intended value.

Show shell-appropriate quoting and explain that title content is user data, not a string the translator should rewrite.

Run quoted and unquoted samples and compare the parsed title and unnamed arguments.

For this investigation, retain the exact M_CLI2 version, Fortran compiler, prototype string, command invocation, target locale, observed output and expected correction. A fluent technical reviewer should be able to decide what to type next from the translated message alone. If the decision would fail, identify whether the defect comes from parser configuration, downstream validation, shell interpretation, character encoding or wording. Repair that layer and repeat the original test; an attractive translation that still misdirects the reader does not pass quality assurance.

Investigation 18: Unicode file names fail on one compiler

A Japanese path is accepted in a documentation screenshot but cannot be opened by the compiled program on another platform.

Separate argument parsing from compiler runtime, filesystem conversion and Fortran file I/O. State the supported configurations and fallback behavior.

Build and test the same file fixture on each advertised operating system and compiler version.

For this investigation, retain the exact M_CLI2 version, Fortran compiler, prototype string, command invocation, target locale, observed output and expected correction. A fluent technical reviewer should be able to decide what to type next from the translated message alone. If the decision would fail, identify whether the defect comes from parser configuration, downstream validation, shell interpretation, character encoding or wording. Repair that layer and repeat the original test; an attractive translation that still misdirects the reader does not pass quality assurance.

Investigation 19: A right-to-left help line reverses visible punctuation

An Arabic help paragraph places --title:T, slashes and numeric values inside RTL text, making them difficult to copy correctly.

Keep executable strings in isolated code blocks and review their rendered and pasted order separately.

Test copied commands, console screenshots and a narrow terminal in a bidi environment.

For this investigation, retain the exact M_CLI2 version, Fortran compiler, prototype string, command invocation, target locale, observed output and expected correction. A fluent technical reviewer should be able to decide what to type next from the translated message alone. If the decision would fail, identify whether the defect comes from parser configuration, downstream validation, shell interpretation, character encoding or wording. Repair that layer and repeat the original test; an attractive translation that still misdirects the reader does not pass quality assurance.

Investigation 20: A nonbreaking space corrupts an example

An editor replaces plain spaces or quotes in a command with typographic equivalents. The article still looks elegant, but a copied invocation no longer behaves as shown.

Protect command snippets from automatic typography and test code blocks extracted from the final web page.

Paste the published example into the supported shell and compare the returned options with a golden fixture.

For this investigation, retain the exact M_CLI2 version, Fortran compiler, prototype string, command invocation, target locale, observed output and expected correction. A fluent technical reviewer should be able to decide what to type next from the translated message alone. If the decision would fail, identify whether the defect comes from parser configuration, downstream validation, shell interpretation, character encoding or wording. Repair that layer and repeat the original test; an attractive translation that still misdirects the reader does not pass quality assurance.

Investigation 21: A subcommand word is mistaken for a named flag

The tool uses M_CLI2’s subcommand-related facilities, but the translation refers to the subcommand as if it were a switch with leading dashes.

Write an explicit grammar diagram showing program, subcommand, named options and positional arguments.

Run the documented subcommand and its help form, verifying the correct stage owns every argument.

For this investigation, retain the exact M_CLI2 version, Fortran compiler, prototype string, command invocation, target locale, observed output and expected correction. A fluent technical reviewer should be able to decide what to type next from the translated message alone. If the decision would fail, identify whether the defect comes from parser configuration, downstream validation, shell interpretation, character encoding or wording. Repair that layer and repeat the original test; an attractive translation that still misdirects the reader does not pass quality assurance.

Investigation 22: The strict mode is misunderstood

The application’s selected parsing mode changes accepted short-option bundling or the treatment of long option prefixes. The guide imports assumptions from a different mode.

Document the actual set_mode policy and its impact on accepted commands. A translation cannot make an incompatible form valid.

Run bundled and separate short switches under the configured mode, and compare both results.

For this investigation, retain the exact M_CLI2 version, Fortran compiler, prototype string, command invocation, target locale, observed output and expected correction. A fluent technical reviewer should be able to decide what to type next from the translated message alone. If the decision would fail, identify whether the defect comes from parser configuration, downstream validation, shell interpretation, character encoding or wording. Repair that layer and repeat the original test; an attractive translation that still misdirects the reader does not pass quality assurance.

Investigation 23: Dash and underscore names are assumed interchangeable

A reader sees a long option with a dash and tries an underscore spelling. That equivalence depends on a specific parser mode or application choice.

State whether the relevant mode is enabled and keep the published canonical form consistent across languages.

Test both spellings against the exact build and report only observed supported aliases.

For this investigation, retain the exact M_CLI2 version, Fortran compiler, prototype string, command invocation, target locale, observed output and expected correction. A fluent technical reviewer should be able to decide what to type next from the translated message alone. If the decision would fail, identify whether the defect comes from parser configuration, downstream validation, shell interpretation, character encoding or wording. Repair that layer and repeat the original test; an attractive translation that still misdirects the reader does not pass quality assurance.

Investigation 24: Case-insensitive long keys are assumed by default

A help page prints different capitalization for long keys across language versions. The application has not enabled a case-insensitive mode.

Preserve the canonical spelling or explicitly configure and test that mode. Do not infer casing policy from typography.

Run the lower-case, upper-case and mixed-case forms, recording the selected option.

For this investigation, retain the exact M_CLI2 version, Fortran compiler, prototype string, command invocation, target locale, observed output and expected correction. A fluent technical reviewer should be able to decide what to type next from the translated message alone. If the decision would fail, identify whether the defect comes from parser configuration, downstream validation, shell interpretation, character encoding or wording. Repair that layer and repeat the original test; an attractive translation that still misdirects the reader does not pass quality assurance.

Investigation 25: A response file contains unexpected arguments

A researcher enables response-file mode and loads a local file that silently specifies a flag differing from the visible command.

Explain that response-file content becomes command input. Require trusted local fixtures, document precedence and avoid examples that load unknown sources.

Inspect the resolved arguments, verify options and use a controlled response file with no side effects.

For this investigation, retain the exact M_CLI2 version, Fortran compiler, prototype string, command invocation, target locale, observed output and expected correction. A fluent technical reviewer should be able to decide what to type next from the translated message alone. If the decision would fail, identify whether the defect comes from parser configuration, downstream validation, shell interpretation, character encoding or wording. Repair that layer and repeat the original test; an attractive translation that still misdirects the reader does not pass quality assurance.

Investigation 26: Response-file behavior is confused with a shell alias

The guide treats @name syntax as universally interchangeable with a shell alias, even though M_CLI2 has its own documented response-file search and format rules.

Teach only the enabled M_CLI2 response-file mode and identify its file format, location and selection behavior.

Run with a known test response file and then with the mode disabled, recording the difference.

For this investigation, retain the exact M_CLI2 version, Fortran compiler, prototype string, command invocation, target locale, observed output and expected correction. A fluent technical reviewer should be able to decide what to type next from the translated message alone. If the decision would fail, identify whether the defect comes from parser configuration, downstream validation, shell interpretation, character encoding or wording. Repair that layer and repeat the original test; an attractive translation that still misdirects the reader does not pass quality assurance.

Investigation 27: The package’s automatic switches are shadowed

A new application option uses a name reserved by the module’s automatic help, usage, verbose or version behavior.

Audit keyword collisions before adding options and keep documented controls in one consistent place.

Check all four automatic switches and any newly proposed option under the compiled release.

For this investigation, retain the exact M_CLI2 version, Fortran compiler, prototype string, command invocation, target locale, observed output and expected correction. A fluent technical reviewer should be able to decide what to type next from the translated message alone. If the decision would fail, identify whether the defect comes from parser configuration, downstream validation, shell interpretation, character encoding or wording. Repair that layer and repeat the original test; an attractive translation that still misdirects the reader does not pass quality assurance.

Investigation 28: A long translated sentence exceeds terminal width

The English help fits on one line but a translated explanation wraps into the next option’s label, confusing readers about what each flag does.

Use clear headings, intentional wrapping and reasonable character lengths; test output without relying on color or wide terminals.

Capture the same help at 50 and 100 columns, including multibyte characters if supported.

For this investigation, retain the exact M_CLI2 version, Fortran compiler, prototype string, command invocation, target locale, observed output and expected correction. A fluent technical reviewer should be able to decide what to type next from the translated message alone. If the decision would fail, identify whether the defect comes from parser configuration, downstream validation, shell interpretation, character encoding or wording. Repair that layer and repeat the original test; an attractive translation that still misdirects the reader does not pass quality assurance.

Investigation 29: Scientific units are translated inconsistently

A value is reported in one unit but the translated description uses another, turning a correct numeric input into a potentially incorrect scientific choice.

Maintain a controlled unit glossary and keep literal unit symbols next to numeric examples. Converting units requires actual program logic and verified mathematics.

Check a boundary value with the displayed unit, compare against computation code and obtain domain review.

For this investigation, retain the exact M_CLI2 version, Fortran compiler, prototype string, command invocation, target locale, observed output and expected correction. A fluent technical reviewer should be able to decide what to type next from the translated message alone. If the decision would fail, identify whether the defect comes from parser configuration, downstream validation, shell interpretation, character encoding or wording. Repair that layer and repeat the original test; an attractive translation that still misdirects the reader does not pass quality assurance.

Investigation 30: A compiler release changes observable input behavior

A laboratory moves from one Fortran compiler to another and assumes Unicode paths, numeric conversion and default character handling will remain identical.

Re-run the same CLI fixture matrix on the new compiler before claiming support. Update the limitations section if behavior differs.

Compile and execute on the supported platforms, recording actual accepted values and output.

For this investigation, retain the exact M_CLI2 version, Fortran compiler, prototype string, command invocation, target locale, observed output and expected correction. A fluent technical reviewer should be able to decide what to type next from the translated message alone. If the decision would fail, identify whether the defect comes from parser configuration, downstream validation, shell interpretation, character encoding or wording. Repair that layer and repeat the original test; an attractive translation that still misdirects the reader does not pass quality assurance.

Investigation 31: A help translation is correct but the log leaks data

A public support transcript includes the researcher’s home directory, sample name or confidential record title merely to demonstrate a parsing error.

Use fabricated fixtures in educational articles and redact private values from shared logs while keeping the error category and command shape intelligible.

Check stdout, stderr, screenshots and saved files for confidential strings before publication.

For this investigation, retain the exact M_CLI2 version, Fortran compiler, prototype string, command invocation, target locale, observed output and expected correction. A fluent technical reviewer should be able to decide what to type next from the translated message alone. If the decision would fail, identify whether the defect comes from parser configuration, downstream validation, shell interpretation, character encoding or wording. Repair that layer and repeat the original test; an attractive translation that still misdirects the reader does not pass quality assurance.

Investigation 32: A defect report cannot be reproduced

An issue says a Spanish error is wrong but omits compiler, M_CLI2 version, prototype string, executable command and expected result.

Require those fields and a harmless fixture. Include captured output, whether response-file mode was enabled and the translator’s intended meaning.

Ask a second engineer to reproduce it from the report alone and document any ambiguity.

For this investigation, retain the exact M_CLI2 version, Fortran compiler, prototype string, command invocation, target locale, observed output and expected correction. A fluent technical reviewer should be able to decide what to type next from the translated message alone. If the decision would fail, identify whether the defect comes from parser configuration, downstream validation, shell interpretation, character encoding or wording. Repair that layer and repeat the original test; an attractive translation that still misdirects the reader does not pass quality assurance.

Investigation 33: A fallback language hides missing coverage

The application falls back to English for help labels or diagnostics but its translated landing page promises a fully localized CLI.

Declare the fallback behavior clearly, track untranslated messages and prioritize failures that block recovery.

Force a missing-language test and inspect help, usage, numeric conversion and application errors independently.

For this investigation, retain the exact M_CLI2 version, Fortran compiler, prototype string, command invocation, target locale, observed output and expected correction. A fluent technical reviewer should be able to decide what to type next from the translated message alone. If the decision would fail, identify whether the defect comes from parser configuration, downstream validation, shell interpretation, character encoding or wording. Repair that layer and repeat the original test; an attractive translation that still misdirects the reader does not pass quality assurance.

Chapter 4 — Three applied cases in international research

Reproducible hydrology settings

An international basin-analysis team passes a sampling count and a user-chosen title to one Fortran executable. The English and Spanish help must show the same -n integer requirement, the same default and the same units. A researcher who omits the option should receive the documented value; a researcher who supplies a negative count outside the valid range should get an application-level validation message, not a vague type error. Both examples should be tested after compilation on the laboratory’s actual compiler. Translation review includes a domain specialist who can check scientific units and not just grammar.

Close the scenario with a reproducibility sheet: record the exact binary, compiler, version, command, expected input values and observed results. Keep fabricated names in any public transcript. The purpose is to make a multilingual instruction reliable enough that a colleague in another country can reproduce the action without needing private explanations from the original author.

A mixed-platform archive

A lab archives observations under filenames containing French accents and Japanese characters. The tutorial separates the value returned by sget from a later Fortran file-opening operation. It shows a quoted path with spaces and explains that terminal and filesystem support can differ across operating systems. Test the same real fixture on the deployed Windows and Unix-like environments, capture the exact filename on input and verify file existence before discussing whether the localized error text was helpful. Avoid silently romanizing user data, which can change file identity.

Close the scenario with a reproducibility sheet: record the exact binary, compiler, version, command, expected input values and observed results. Keep fabricated names in any public transcript. The purpose is to make a multilingual instruction reliable enough that a colleague in another country can reproduce the action without needing private explanations from the original author.

A trusted response-file workflow

A research group enables M_CLI2 response files for a long, repeatable simulation command. The saved arguments become an additional input source and must remain inspectable. Documentation needs to say what the file contains, when the mode is enabled and how to reproduce the effective settings without running a destructive workload. Ask a reviewer to read the translated guide, enable the mode with a harmless fixture and explain which options came from the response file. The accepted result is a transparent, reproducible command, not merely a shorter one.

Close the scenario with a reproducibility sheet: record the exact binary, compiler, version, command, expected input values and observed results. Keep fabricated names in any public transcript. The purpose is to make a multilingual instruction reliable enough that a colleague in another country can reproduce the action without needing private explanations from the original author.

Chapter 5 — Common questions

What is the distinctive M_CLI2 idea?

A prototype string describes defaults and option syntax, and typed getter functions retrieve parsed values. That is different from libraries organized primarily around annotations or builders.

Confirm the answer using the configuration and build your project actually distributes. Different M_CLI2 modes and compiler environments can make superficially similar examples behave differently, so treat tested commands as the authority.

Does the module automatically internationalize help?

No. An application can supply help and version text, but selecting languages, translating messages and reviewing terminal rendering require additional work.

Confirm the answer using the configuration and build your project actually distributes. Different M_CLI2 modes and compiler environments can make superficially similar examples behave differently, so treat tested commands as the authority.

What is the purpose of specified?

It distinguishes a keyword explicitly supplied by the user from a value merely present because a prototype default exists.

Confirm the answer using the configuration and build your project actually distributes. Different M_CLI2 modes and compiler environments can make superficially similar examples behave differently, so treat tested commands as the authority.

Which getter handles filenames?

A filename is character data, so sget is a typical scalar path. The application must still verify that the file exists and can be opened.

Confirm the answer using the configuration and build your project actually distributes. Different M_CLI2 modes and compiler environments can make superficially similar examples behave differently, so treat tested commands as the authority.

Can the parser check scientific bounds by itself?

It focuses on argument parsing and types. The application must enforce ranges, membership and mutually exclusive semantics where needed.

Confirm the answer using the configuration and build your project actually distributes. Different M_CLI2 modes and compiler environments can make superficially similar examples behave differently, so treat tested commands as the authority.

What are response files?

An optional M_CLI2 mechanism for expressing complex command arguments through configured files. They require explicit mode policy and trusted inputs.

Confirm the answer using the configuration and build your project actually distributes. Different M_CLI2 modes and compiler environments can make superficially similar examples behave differently, so treat tested commands as the authority.

Is every UTF-8 filename portable in Fortran?

Do not assume it. Validate the actual compiler runtime, operating system, terminal and filesystem path handling before promising support.

Confirm the answer using the configuration and build your project actually distributes. Different M_CLI2 modes and compiler environments can make superficially similar examples behave differently, so treat tested commands as the authority.

What makes a translated example dependable?

It uses stable executable tokens, a valid value representation, the actual release syntax and a successful copy-paste test in the supported environment.

Confirm the answer using the configuration and build your project actually distributes. Different M_CLI2 modes and compiler environments can make superficially similar examples behave differently, so treat tested commands as the authority.

Chapter 6 — Four weeks to a reliable release

Week 1

Week one inventories the prototype, typed getters, defaults, special switches and mode settings. Compile a safe diagnostic executable and save valid and invalid invocation transcripts. Include one case with omitted options, one with explicit values and one with an invalid type. Record the compiler version and M_CLI2 source revision before translating explanations.

Success is observable rather than rhetorical: the reader reaches the intended parsed value, identifies which failure occurred and can correct the command using only the localized page. Store those observations with the release so future maintainers can detect when the documentation and binary diverge.

Week 2

Week two builds the language layer. Translate complete help and version text, explain option values precisely and confirm that executable short and long names remain unchanged. Have language reviewers with subject knowledge inspect numeric units and permitted ranges. Use one clean worked command per important task, with fictional local paths rather than private research data.

Success is observable rather than rhetorical: the reader reaches the intended parsed value, identifies which failure occurred and can correct the command using only the localized page. Store those observations with the release so future maintainers can detect when the documentation and binary diverge.

Week 3

Week three exercises real deployment boundaries. Test accented and non-Latin titles, quoted filenames with spaces, strict-mode settings if enabled, arrays, list delimiters, unknown flags, range rejection and response-file modes. Compare output at narrow terminal widths and across supported compilers. When behavior differs, document a limitation or fix the program and rerun the same fixture.

Success is observable rather than rhetorical: the reader reaches the intended parsed value, identifies which failure occurred and can correct the command using only the localized page. Store those observations with the release so future maintainers can detect when the documentation and binary diverge.

Week 4

Week four is an independent-reader release check. Ask a researcher unfamiliar with the English version to use the translated guide to choose values, run a valid command and repair two predictable errors. Paste-test examples from published HTML. Archive the resulting transcripts and add an explicit review trigger whenever prototypes, defaults, modes, help strings or compiler targets change.

Success is observable rather than rhetorical: the reader reaches the intended parsed value, identifies which failure occurred and can correct the command using only the localized page. Store those observations with the release so future maintainers can detect when the documentation and binary diverge.

Chapter 7 — Translating a command without changing the science

Fortran M_CLI2 rewards a disciplined separation of syntax, values and meaning. A prototype keyword is not a phrase for free translation, a default is not necessarily something the user entered, and a successfully parsed number is not proof that the value makes scientific sense. Good multilingual documentation teaches each boundary directly. It lets readers identify what to type, what the software will accept, why an input failed and how to recover without modifying experimental records or relying on an English manual.

A durable reference is maintained with the application. When a prototype changes, recheck every translated example. When a compiler changes, rerun Unicode and numeric fixtures. When a new country starts using the utility, ask actual users to complete a simple task before declaring the help accessible. The aim is not merely to produce more words, but to preserve reproducibility as knowledge moves between languages and computing environments.

Primary documentation and related learning