Skip to content

Fix three confirmed Farsi translation issues#612

Open
Blackspirits wants to merge 5 commits into
jrsoftware:mainfrom
Blackspirits:patch-4
Open

Fix three confirmed Farsi translation issues#612
Blackspirits wants to merge 5 commits into
jrsoftware:mainfrom
Blackspirits:patch-4

Conversation

@Blackspirits

@Blackspirits Blackspirits commented Jul 11, 2026

Copy link
Copy Markdown
Contributor

This pull request now contains only three focused changes confirmed by the native Farsi translation maintainer:

  • changes LanguageName from Farsi to فارسی, matching the naming style used by other translations;
  • restores the omitted Setup reference in SetupAppRunningError;
  • restores the missing %1 placeholder in ErrorFileSize.

All disputed stylistic changes, including the systematic half-space changes and other wording changes, have been reverted. The translation remains under Files/Languages/Unofficial as intended by its maintainer.

Validation:

  • only Files/Languages/Unofficial/Farsi.isl is changed;
  • the final pull request diff contains 3 additions and 3 deletions;
  • UTF-8 without BOM and CRLF line endings are preserved.

@Blackspirits Blackspirits changed the title Fix missing placeholder in Farsi translation Update and review Farsi translation for Inno Setup 6.5.0+ Jul 11, 2026
@Blackspirits

Copy link
Copy Markdown
Contributor Author

I have also contacted Peyman Mohammadi, the original translator listed in the file, by email and asked him to review the proposed changes.

I will update this PR if I receive any corrections or confirmation from him.

@peymanr34

Copy link
Copy Markdown

This is the response I sent to your email @Blackspirits:

Hi BlackSpirits,

Thank you for contacting me, I'll review your PR later today.

By the way, the Farsi (Persian) translation project has a dedicated repository on my own GitHub account:

https://github.com/peymanr34/inno-setup-translations

I was waiting for the next release to include the repository link since I didn't want to submit unnecessary changes.

Another note is that this translation is unofficial by design, because:

As an official translator you will be required to quickly update translations once a change is announced to the istrans mailing list, otherwise your translation might lose official status without notice.

Since I might not make these deadlines, this translation will remain unofficial as long as I'm the maintainer.

Best wishes,
Peyman Mohammadi

@peymanr34 peymanr34 left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for:

  • Changing the LanguageName to match the other translations.
  • Catching the missing %1 on line 225
  • Catching the missing "setup" translation on line 74.
  • And other improvements.

But a lot of the proposed changes are opinionated, especially the excessive use of the half-spaces. The half-spaces are technically correct however I deliberately didn't used them because on non-native fonts like "Segue UI" and previously "Tahoma", they arguably make the messages harder to read.

If @martijnlaan aggress with me, please submit the requested changes to my repo. If not I'll go ahead and make the changes on your behalf (with proper attributions of course).

Comment thread Files/Languages/Unofficial/Farsi.isl
Comment thread Files/Languages/Unofficial/Farsi.isl Outdated
Comment thread Files/Languages/Unofficial/Farsi.isl Outdated
Comment thread Files/Languages/Unofficial/Farsi.isl Outdated
Comment thread Files/Languages/Unofficial/Farsi.isl Outdated
Comment thread Files/Languages/Unofficial/Farsi.isl Outdated
Comment thread Files/Languages/Unofficial/Farsi.isl Outdated
Comment thread Files/Languages/Unofficial/Farsi.isl Outdated
Comment thread Files/Languages/Unofficial/Farsi.isl Outdated
Comment thread Files/Languages/Unofficial/Farsi.isl Outdated
@Blackspirits

Copy link
Copy Markdown
Contributor Author

Thank you very much for the detailed native review.

I agree that the disputed stylistic changes, including the systematic use of
half-spaces, should be left to you as the translation maintainer.

I will keep only the objective technical and linguistic fixes that you
confirmed, such as the missing placeholder and the omitted Setup reference,
and revert the changes you identified as incorrect or unnecessary.

I will wait for @martijnlaan to confirm the preferred workflow. If the Persian
translation should be maintained through your repository, I will submit a
small focused pull request there containing only the mutually accepted fixes.
Otherwise, I will reduce this pull request to those same confirmed corrections.

Thank you again for taking the time to review everything.

@peymanr34

Copy link
Copy Markdown

@Blackspirits No worries, thanks for your contribution.

@martijnlaan

Copy link
Copy Markdown
Member

I have no preference for the workflow.

@Blackspirits Blackspirits changed the title Update and review Farsi translation for Inno Setup 6.5.0+ Fix three confirmed Farsi translation issues Jul 12, 2026
@Blackspirits

Copy link
Copy Markdown
Contributor Author

I have reduced this pull request to the three changes confirmed in the native review:

  • LanguageName=فارسی;
  • the omitted Setup reference in SetupAppRunningError;
  • the missing %1 placeholder in ErrorFileSize.

All disputed stylistic, half-space, punctuation, and wording changes have been reverted. The previous review threads are now outdated because those changes are no longer part of the pull request.

@peymanr34

peymanr34 commented Jul 12, 2026

Copy link
Copy Markdown

Looks good to me.

@martijnlaan

Copy link
Copy Markdown
Member

Here are my findings for the Farsi.isl from this branch:

  1. Line 36 (UninstallAppFullTitle): "%1 حذف کننده" copies the English noun order. In
    Persian the head noun has to precede the name (for example "حذف کننده %1"). The
    English is "%1 Uninstall".
  2. Lines 45 and 46 (LdrCannotCreateTemp, LdrCannotExecTemp): "Setup" is rendered
    "برنامه نصب" here, but "نصب کننده" in every other message. In the same two messages
    "aborted" is rendered "لغو شد", while "aborted" in ErrorDownloadAborted (line 219) and
    ErrorExtractionAborted (line 229) is "متوقف شد", which is also the word used for
    "stop" in ButtonStopDownload and StopDownload.
  3. Line 69 (PrivilegesRequiredOverrideTitle): "انتخاب نحوه نصب توسط نصب کننده" adds
    "توسط" ("by"), so it reads as the install mode being selected by Setup. The English is
    "Select Setup Install Mode".
  4. Line 72 (PrivilegesRequiredOverrideText2): the verb "نصب کرد" is missing and the
    sentence ends in "است", which cannot follow "را می‌توان". As written the message no
    longer says the program can be installed. Compare line 71, which ends correctly with
    "نصب کرد". The English is "%1 can be installed for you only, or for all users
    (requires administrative privileges)."
  5. Line 79 (ErrorCreatingDir): the "%1" is placed after the verb "نبود", so the sentence
    reads "...قادر به ایجاد پوشه نبود "%1"". Compare line 80, where the quoted name is
    placed before the verb. The English is "Setup was unable to create the directory "%1"".
  6. Line 84 (ExitSetupMessage): "Setup" is dropped from the final question, which becomes
    "آیا مایل به خروج هستید؟" ("Do you wish to exit?"). The English is "Exit Setup?".
  7. Line 87 (AboutSetupMessage): "نسخه" ("version") is added between %1 and %2, and "home
    page" is rendered "وب سایت" ("web site"). The English is "%1 %2%n%3%n%n%1 home
    page:%n%4".
  8. Lines 98 and 100 (ButtonYesToAll, ButtonNoToAll): both accelerators are on "ه"
    ("بله برای &همه" and "ن&ه برای همه"). These buttons appear in the same message box, so
    the two accelerators collide. In English they are on different letters ("Yes to &All"
    and "N&o to All").
  9. Lines 99, 100 and 262 (ButtonNo, ButtonNoToAll, NoRadio): "No" is "خیر" in ButtonNo but
    "نه" in ButtonNoToAll and NoRadio. ButtonYes and ButtonYesToAll do share "بله".
  10. Line 108 (SelectLanguageLabel): the object marker "را" appears twice
    ("زبانی را که ... را انتخاب کنید"), which is ungrammatical, and "می‌خواهید" ("you
    want") is added. The English is "Select the language to use during the installation."
  11. Line 111 (ClickNext): the "or" is dropped, so the message becomes two comma-spliced
    commands. The English is "Click Next to continue, or Cancel to exit Setup."
  12. Line 119 (WelcomeLabel2): there is a trailing space at the end of the value.
  13. Line 123 (PasswordLabel1): "This installation" is rendered "این نصب کننده" ("this
    installer"). The English is "This installation is password protected."
  14. Line 124 (PasswordLabel3): "to continue" is dropped. The English is "Please provide
    the password, then click Next to continue. Passwords are case-sensitive."
  15. Lines 129 and 131 (WizardLicense, LicenseLabel3): "License" is not rendered. Line 129
    is "توافقنامه استفاده" ("use agreement") and line 131 drops the qualifier entirely.
    Line 131 also adds "برنامه" to "the installation". The English is "License Agreement"
    and "Please read the following License Agreement. You must accept the terms of this
    agreement before continuing with the installation."
  16. Lines 138 and 141 (InfoBeforeClickLabel, InfoAfterClickLabel): the English value is
    identical for both ("When you are ready to continue with Setup, click Next."), but
    line 138 has "ادامه نصب" and line 141 has "ادامه‌ی نصب".
  17. Lines 155 and 196 (SelectDirBrowseLabel, SelectStartMenuFolderBrowseLabel): the
    English value is identical for both ("To continue, click Next. If you would like to
    select a different folder, click Browse."), but the second clause is worded
    differently ("اگر مایل به انتخاب پوشه دیگری هستید" versus "در صورتی که تمایل به انتخاب
    پوشه دیگری دارید").
  18. Line 159 (CannotInstallToUNCPath): "UNC path" is left in English. Line 160 does
    translate it, as "مسیر UNC". The English is "Setup cannot install to a UNC path."
  19. Line 160 (InvalidPath): three points. "drive letter" is rendered "اسم درایو" ("drive
    name"); the literal example "C:\App" was changed to "C:\APP"; and "path" is "آدرس" in
    the first clause but "مسیر" in the second clause of the same message (it is "مسیر"
    everywhere else, for example PathLabel on line 271). The English is "You must enter a
    full path with drive letter; for example:%n%nC:\App%n%nor a UNC path in the
    form:%n%n\server\share".
  20. Line 161 (InvalidDrive): "UNC share" is left in English, and "Please select another."
    is rendered "لطفاً یک مسیر دیگر را انتخاب کنید" ("please select another path"), which
    adds "path". In the English, "another" refers back to the drive or UNC share. The
    English is "The drive or UNC share you selected does not exist or is not accessible.
    Please select another."
  21. Line 163 (DiskSpaceWarning): "anyway" is dropped. The Default.isl header lists it
    among the words not to remove. The English ends with "Do you want to continue anyway?"
  22. Lines 164 and 198 (DirNameTooLong, GroupNameTooLong): the English value is identical
    for both ("The folder name or path is too long."), but the two are worded differently
    ("نام پوشه یا مسیر" versus "نام پوشه و یا مسیر آن").
  23. Line 166 (BadDirName32): "any of" is dropped, and "following" is rendered "مقابل"
    ("opposite") rather than "زیر" ("below"). The parallel message BadGroupName (line 200)
    does keep both. The English is "Folder names cannot include any of the following
    characters:%n%n%1".
  24. Line 175 (SelectComponentsLabel2): the second clause carries the object marker "را"
    twice ("اجزایی را که نمی‌خواهید نصب کنید را از حالت انتخاب بردارید"), which is
    ungrammatical.
  25. Line 181 (NoUninstallWarning): "the following components" is rendered "اجزای فوق"
    ("the components above"), but the list (%1) is printed after the sentence. In the same
    message "anyway" is dropped from the final question. The English is "Setup has
    detected that the following components are already installed on your
    computer:%n%n%1%n%nDeselecting these components will not uninstall
    them.%n%nWould you like to continue anyway?"
  26. Lines 184 and 185 (ComponentsDiskSpaceGBLabel, ComponentsDiskSpaceMBLabel): "خالی"
    ("free") is added. The English says "disk space" here, not "free disk space" (unlike
    DiskSpaceGBLabel and DiskSpaceMBLabel, which do say "free"). The English is "Current
    selection requires at least [gb] GB of disk space."
  27. Line 190 (SelectTasksLabel2): the agent "Setup" is dropped (the Persian uses a passive
    "انجام داده شود"), and the object marker "را" appears twice ("وظایف اضافی را که ... را
    انتخاب کرده"). The English is "Select the additional tasks you would like Setup to
    perform while installing [name], then click Next."
  28. Line 194 (SelectStartMenuFolderDesc): there is a trailing space at the end of the
    value.
  29. Line 197 (MustEnterGroupName): "folder name" is rendered "اسم پوشه"; every other
    folder-name message uses "نام پوشه" (lines 164, 165, 166, 198, 199, 200).
  30. Line 205 (ReadyLabel1): "now" is dropped. The Default.isl header lists it among the
    words not to remove. The English is "Setup is now ready to begin installing [name] on
    your computer."
  31. Lines 230, 301, 302 and 303 (ErrorExtractionFailed, ErrorFunctionFailedNoCode,
    ErrorFunctionFailed, ErrorFunctionFailedWithMessage): "failed" is rendered as the bare
    adjective "ناموفق" with no verb, while the parallel messages ErrorDownloadFailed (220),
    ErrorDownloadSizeFailed (221) and SourceVerificationFailed (319) use "ناموفق بود".
  32. Line 240 (PreviousInstallNotCompleted): "that installation" is rendered as just "the
    installation", so it can be read as the current installation rather than the previous
    program's. The English is "The installation/removal of a previous program was not
    completed. You will need to restart your computer to complete that installation."
  33. Line 246 (ErrorCloseApplications): the relative clause has no predicate. The Persian
    reads "تمام اپلیکیشن هایی که از فایل هایی که نیاز به بروزرسانی توسط نصب کننده را دارند
    را قبل از ادامه ببندید": the verb for "using" is missing after "از فایل هایی", "را"
    cannot mark the complement of "نیاز به ... داشتن", and "را" then appears twice. Lines
    242 and 243 express the same idea correctly with "در حال استفاده از فایل هایی هستند
    که". The English is "Setup was unable to automatically close all applications. It is
    recommended that you close all applications using files that need to be updated by
    Setup before continuing."
  34. Line 247 (PrepareToInstallNeedsRestart): "now" is dropped from the final question
    ("آیا مایل به راه‌اندازی مجدد هستید؟"), and "your computer" becomes "the computer"
    ("کامپیوتر را"). Lines 258 and 259 do keep both. The English ends with "Would you like
    to restart now?"
  35. Lines 255 and 256 (FinishedLabelNoIcons, FinishedLabel): the object marker "را" is
    attached to "کامپیوتر شما" instead of to the direct object, so the sentence reads
    "Setup finished your computer on the installation of [name]". The English is "Setup
    has finished installing [name] on your computer."
  36. Line 258 (FinishedRestartLabel): "کامپیوتر شما راه مجدداً راه‌اندازی کند" contains a
    stray "راه" where "را" was intended. Line 259 has the correct wording.
  37. Line 260 (ShowReadmeCheck): a period was added at the end. The English message has no
    period, and the Default.isl header says not to add periods to messages that did not
    have them already.
  38. Lines 261, 335 and 340 (YesRadio, FileExistsOverwriteOrKeepAll,
    ExistingFileNewerOverwriteOrKeepAll): these use the informal singular imperative
    ("راه‌اندازی کن", "انجام بده"), while the rest of the file addresses the user with the
    formal plural.
  39. Line 270 (SelectDiskLabel2): "below" is dropped ("پوشه نمایش داده شده" = "the
    displayed folder"). The English is "If the files on this disk can be found in a folder
    other than the one displayed below, enter the correct path or click Browse."
  40. Line 273 (SelectDirectoryLabel): "location" is rendered "آدرس" ("address"), while
    "location" is "محل" elsewhere (lines 152, 209, 386). The English is "Please specify the
    location of the next disk."
  41. Line 281 (RetryCancelSelectAction): "انتخاب عملیات" ("select operation"), while the
    identical English "Select action" is "انتخاب عمل" at lines 277, 331 and 336.
  42. Lines 286 and 297 (StatusClosingApplications, StatusRollback): "درحال" is written as
    one word; the other status messages (287 to 296) use "در حال".
  43. Lines 293, 350 and 352 (StatusRegisterFiles, ErrorRegisterServer, ErrorRegisterTypeLib):
    the verb "register" is rendered as the transliteration "ریجستر". The standard Persian
    term is "ثبت". (The noun "registry" as a loanword is a separate matter; note that it is
    spelled "ریجستری" here where Microsoft Persian uses "رجیستری".)
  44. Lines 307 and 365 (ErrorRegOpenKey, ErrorOpeningReadme): "بازکردن" is written as one
    word; line 370 uses "باز کردن".
  45. Lines 279 and 316 (AbortRetryIgnoreIgnore, FileAbortRetryIgnoreIgnoreNotRecommended):
    the same English phrase "&Ignore the error and continue" is rendered "صرف نظر از خطا و
    ادامه" in one and "نادیده گرفتن خطا و ادامه" in the other.
  46. Lines 329, 334 and 339 (ExistingFileReadOnlyKeepExisting, FileExistsKeepExisting,
    ExistingFileNewerKeepExisting): "&Keep the existing file" is "نگه داشتن" on 329 and 339
    but "نگه‌داشتن" on 334.
  47. Lines 335 and 340 (FileExistsOverwriteOrKeepAll, ExistingFileNewerOverwriteOrKeepAll):
    the same English "&Do this for the next conflicts" is "تداخل های بعد" on 335 and
    "تداخل های بعدی" on 340.
  48. Line 343 (ErrorReadingSource): "source file" is rendered "فایل مبداء", while lines 317,
    318 and 319 use "فایل منبع". "مبداء" is also a nonstandard spelling of "مبدأ".
  49. Lines 350 and 352 (ErrorRegisterServer, ErrorRegisterTypeLib): line 350 has a stray
    "برای" ("for") before the colon, and the two messages use different constructions for
    the same English pattern ("خطا در ..." versus "قادر به ... نبود"). The English is
    "Unable to register the DLL/OCX: %1" and "Unable to register the type library: %1".
  50. Line 351 (ErrorRegSvr32Failed): "exit code" is rendered "کد خطا" ("error code"), and
    the "%1" is placed after the verb at the end of the sentence, which leaves the ezafe
    in "کد خطای" without its noun. The English is "RegSvr32 failed with exit code %1".
  51. Line 370 (UninstallOpenError): there is no space between "فایل" and the opening quote
    ("فایل"%1""). Every other quoted-%1 message in the file has the space.
  52. Lines 371 and 372 (UninstallUnsupportedVer, UninstallUnknownEntry): "uninstall log" is
    rendered "فایل لاگ حذف کننده" on 371 and "فایل لاگ حذف" on 372.
  53. Line 372 (UninstallUnknownEntry): there is a trailing space at the end of the value.
  54. Line 373 (ConfirmUninstall): "completely" is dropped. The English is "Are you sure you
    want to completely remove %1 and all of its components?"
  55. Line 378 (UninstalledMost): "manually" is rendered "به صورت جداگانه" ("separately");
    the file uses the correct "به صورت دستی" on line 366. Also, "%1 حذف تکمیل شد" copies
    the English noun order and needs the head noun first (for example "حذف %1 تکمیل شد").
    The English is "%1 uninstall complete.%n%nSome elements could not be removed. These can
    be removed manually."
  56. Line 380 (UninstallDataCorrupted): "corrupted" is rendered "ناقص" ("incomplete"), while
    "corrupted" is "آسیب دیده" everywhere else (lines 52, 53, 234, 317). Also, ""%1" فایل"
    copies the English noun order; Persian needs "فایل "%1"". The English is ""%1" file is
    corrupted. Cannot uninstall".
  57. Line 384 (ConfirmDeleteSharedFile2): the first sentence ends with a doubled question
    mark, a Persian "؟" followed by an ASCII "?". The same sentence also adds "دیگری"
    ("other"): the English is "The system indicates that the following shared file is no
    longer in use by any programs."
  58. Line 386 (SharedFileLocationLabel): "محل فایل" adds "file". The English is "Location:".
  59. Line 400 (AdditionalIcons): "Additional" is rendered "جانبی" ("auxiliary"), while
    "additional" is "اضافی" in WizardSelectTasks (188) and ReadyMemoTasks (213).
  60. Lines 406 and 407 (AssocFileExtension, AssocingFileExtension): "اختصاص دادن" is
    followed by "با", but it governs "به". Line 406 also has a trailing space at the end of
    the value.
  61. Line 408 (AutoStartProgramGroupDescription): "شروع همراه با ویندوز" adds "with
    Windows". The English is "Startup:".
  62. Terminology, across the file: "restart" is rendered both "راه‌اندازی مجدد" and the
    loanword "ری‌استارت", sometimes within one message (for example lines 258 and 259);
    and "administrative privileges" is "دسترسی مدیر سیستم" on lines 71 and 72 but
    "دسترسی مدیر" on line 375.
  63. Spelling, across the file: "بدلیل" (327) and "بهرحال" (168, 410) should be written
    "به دلیل" and "به هر حال", and "بروزرسانی" (242, 243, 246) should be "به‌روزرسانی"
    ("بروز" is a different word). The half-space (ZWNJ) is also applied inconsistently: for
    example "پوشه‌ها" and "کاراکتر ها" in the same message on line 166, and "هم‌اکنون" on
    line 379 versus "هم اکنون" on lines 65, 66, 258 and 259.
  64. Right-to-left marks (U+200F), across the file: they appear at the end of about 30 of
    the roughly 290 values and not on the rest, including on only one of two messages that
    are otherwise identical (line 165 but not 199, line 164 but not 198, line 155 but not
    196, line 103 but not 102). Line 137 ends with two of them, and lines 138 and 141 place
    one before the final period rather than after it. It would be best to either drop them
    all or apply them uniformly.

@peymanr34

Copy link
Copy Markdown

Thanks @martijnlaan,

If it's OK, I'll review and submit these changes separately.

peymanr34 added a commit to peymanr34/inno-setup-translations that referenced this pull request Jul 18, 2026
From: jrsoftware/issrc#612
Co-Authored-By: BlackSpirits <11444904+blackspirits@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

3 participants