Skip to content

Fix French localization errors#172

Merged
schuyler merged 1 commit intomainfrom
claude/fix-french-localization-107-01QA4RbG7T4dT1jH7ARJjDJs
Nov 24, 2025
Merged

Fix French localization errors#172
schuyler merged 1 commit intomainfrom
claude/fix-french-localization-107-01QA4RbG7T4dT1jH7ARJjDJs

Conversation

@schuyler
Copy link
Copy Markdown
Owner

Summary

Fixes multiple French localization errors discovered during comprehensive review of French language files. Includes the original typo fix from MacDownApp/macdown PR #1274 plus additional grammar and consistency improvements.

Changes Made

1. MacDown/Localization/fr.lproj/Localizable.strings (2 fixes)

  • Line 11: Fixed spelling "charactère" → "caractère" in CHARACTERS_NO_SPACES_PLURAL_STRING
  • Line 14: Fixed spelling "charactère" → "caractère" in CHARACTERS_PLURAL_STRING

2. MacDown/Localization/fr.lproj/MainMenu.strings (4 fixes)

  • Line 146: Fixed mixed language "Gauche 1:1 Right" → "Gauche 1:1 Droite"
  • Line 182: Fixed verb form "Contribue à MacDown 3000" → "Contribuer à MacDown 3000" (imperative → infinitive)
  • Line 224: Added missing article "Arrêter Dictée" → "Arrêter la dictée"
  • Line 347: Added missing article "Démarrer Dictée" → "Démarrer la dictée"

Related Issue

Related to #107

Manual Testing Plan

Setup

Configure macOS to use French locale:

  1. Open System Preferences → Language & Region
  2. Add "Français" and move to top of preferred languages
  3. Restart MacDown 3000

Or launch MacDown in French without changing system language:

open -a "MacDown 3000" --args -AppleLanguages "(fr)"

Test Cases

1. Character Count Display (Status Bar)

  • Type text in editor and verify status bar shows:
    • Single character: "1 caractère" (not "charactère")
    • Multiple: "X caractères" (not "charactères")
    • With spaces: "X caractère (sans espaces)" variant

2. Layout Menu (Présentation → View)

  • Verify menu item shows "Gauche 1:1 Droite" (fully French)
  • NOT "Gauche 1:1 Right" (mixed language)

3. Help Menu (Aide)

  • Verify "Contributing to MacDown" shows as "Contribuer à MacDown 3000"
  • Infinitive form, not imperative "Contribue"

4. Speech Menu (Édition → Dicter)

  • Verify "Start Speaking" shows as "Démarrer la dictée" (with article "la")
  • Verify "Stop Speaking" shows as "Arrêter la dictée" (with article "la")

Edge Cases

  • Test character counts with accented characters (café, école)
  • Test with emojis and mixed content
  • Verify large numbers format correctly (1,000+ characters)
  • Ensure menu items fit without truncation
  • Verify English locale still works: open -a "MacDown 3000" --args -AppleLanguages "(en)"

Review Notes

Code Review (Chico)

APPROVED - All changes correct and ready to merge

  • UTF-8 encoding properly preserved
  • .strings file syntax valid
  • French grammar and spelling correct
  • Follows project conventions
  • No critical issues found

Note: Chico identified a pre-existing semantic issue (unrelated to this PR): "Speech" is translated as "Dictée" (dictation) but typically means text-to-speech in macOS. Standard French term would be "Parole" or "Élocution". This is NOT a blocker and could be addressed in a separate issue if desired.

Documentation Review (Harpo)

No documentation updates needed - Changes are localization-only and don't affect documented processes, testing procedures, or architecture.

Testing Plan (Zeppo)

Comprehensive manual testing plan provided (see Manual Testing Plan section above)

Why These Fixes Matter

  • "charactère" - Spelling error that appears unprofessional
  • "Gauche 1:1 Right" - Mixed language is jarring for French users
  • "Contribue" vs "Contribuer" - Grammatically incorrect verb form in menu context
  • Missing "la" - Makes French sound unnatural/robotic without the article

These corrections improve the user experience and professionalism of MacDown 3000 for French-speaking users.

Files Modified

  • MacDown/Localization/fr.lproj/Localizable.strings
  • MacDown/Localization/fr.lproj/MainMenu.strings

Commit: efa082c

Corrects multiple French localization issues in character count strings
and menu items:

1. Localizable.strings:
   - Fix typo "charactère" → "caractère" (lines 11, 14)
   - Based on MacDownApp/macdown PR #1274 by @benel

2. MainMenu.strings:
   - Fix mixed language "Gauche 1:1 Right" → "Gauche 1:1 Droite"
   - Fix verb form "Contribue à" → "Contribuer à" (infinitive)
   - Add missing articles "Arrêter Dictée" → "Arrêter la dictée"
   - Add missing articles "Démarrer Dictée" → "Démarrer la dictée"

These changes improve the quality and consistency of the French
localization for French-speaking users.

Related to #107
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Nov 23, 2025

Code Coverage Report

Current Coverage: 41.32%

Coverage Details (Summary)
Name                                                                                                                                   Coverage            
-------------------------------------------------------------------------------------------------------------------------------------- ------------------- 
MASPreferences.bundle                                                                                                                  0.00% (0/0)         
MacDown 3000.app                                                                                                                       54.24% (6800/12537) 
    /Users/runner/work/macdown3000/macdown3000/MacDown/Code/Extension/DOMNode+Text.m                                                   0.00% (0/94)        
        -[NSString(WordCount) numberOfWords]                                                                                           0.00% (0/11)        
        __36-[NSString(WordCount) numberOfWords]_block_invoke                                                                          0.00% (0/3)         
        -[NSString(WordCount) lengthWithoutNewlines]                                                                                   0.00% (0/11)        
        __44-[NSString(WordCount) lengthWithoutNewlines]_block_invoke                                                                  0.00% (0/3)         
        -[NSString(WordCount) lengthWithoutWhitespacesAndNewlines]                                                                     0.00% (0/11)        
        __58-[NSString(WordCount) lengthWithoutWhitespacesAndNewlines]_block_invoke                                                    0.00% (0/3)         
        MPGetChildrenNodetextCount                                                                                                     0.00% (0/6)         
        MPGetNodeTextCount                                                                                                             0.00% (0/38)        
        -[DOMNode(Text) textCount]                                                                                                     0.00% (0/8)         
    /Users/runner/work/macdown3000/macdown3000/MacDown/Code/Document/MPAsset.m                                                         91.96% (103/112)    
        -[MPAsset typeName]                                                                                                            100.00% (3/3)       
        -[MPAsset defaultTypeName]                                                                                                     100.00% (3/3)       
        +[MPAsset assetWithURL:andType:]                                                                                               100.00% (3/3)       
        -[MPAsset initWithURL:andType:]                                                                                                87.50% (7/8)        
        -[MPAsset init]                                                                                                                100.00% (3/3)       
        -[MPAsset templateForOption:]                                                                                                  0.00% (0/7)         
        -[MPAsset htmlForOption:]                                                                                                      96.43% (27/28)      
        -[MPStyleSheet defaultTypeName]                                                                                                100.00% (3/3)       
        +[MPStyleSheet CSSWithURL:]                                                                                                    100.00% (3/3)       
        -[MPStyleSheet templateForOption:]                                                                                             100.00% (20/20)     
        -[MPScript defaultTypeName]                                                                                                    100.00% (3/3)       
        +[MPScript javaScriptWithURL:]                                                                                                 100.00% (3/3)       
        -[MPScript templateForOption:]                                                                                                 100.00% (20/20)     
        -[MPEmbeddedScript htmlForOption:]                                                                                             100.00% (5/5)       
    /Users/runner/work/macdown3000/macdown3000/Dependency/peg-markdown-highlight/HGMarkdownHighlightingStyle.m                         87.69% (57/65)      
        +[HGMarkdownHighlightingStyle colorFromARGBColor:]                                                                             100.00% (6/6)       
        -[HGMarkdownHighlightingStyle initWithType:attributesToAdd:toRemove:fontTraitsToAdd:]                                          88.89% (8/9)        
        -[HGMarkdownHighlightingStyle initWithStyleAttributes:baseFont:]                                                               86.00% (43/50)      
    /Users/runner/work/macdown3000/macdown3000/MacDown/Code/Utility/MPPlugIn.m                                                         0.00% (0/36)        
        -[MPPlugIn setName:]                                                                                                           0.00% (0/3)         
        -[MPPlugIn initWithBundle:]                                                                                                    0.00% (0/24)        
        -[MPPlugIn plugInDidInitialize]                                                                                                0.00% (0/4)         
        -[MPPlugIn run:]                                                                                                               0.00% (0/5)         
    /Users/runner/work/macdown3000/macdown3000/MacDown/Code/Extension/hoedown_html_patch.c                                             70.99% (93/131)     
        hoedown_patch_render_blockcode                                                                                                 87.27% (48/55)      
        hoedown_patch_render_listitem                                                                                                  95.74% (45/47)      
        hoedown_patch_render_toc_header                                                                                                0.00% (0/29)        
    /Users/runner/work/macdown3000/macdown3000/MacDown/Code/Application/MPMainController.m                                             40.98% (100/244)    
        MPOpenBundledFile                                                                                                              95.45% (21/22)      
        __MPOpenBundledFile_block_invoke                                                                                               85.71% (6/7)        
        treat                                                                                                                          20.00% (6/30)       
        __treat_block_invoke                                                                                                           0.00% (0/4)         
        -[MPMainController applicationDidFinishLaunching:]                                                                             100.00% (6/6)       
        -[MPMainController openUrlSchemeAppleEvent:withReplyEvent:]                                                                    0.00% (0/45)        
        __59-[MPMainController openUrlSchemeAppleEvent:withReplyEvent:]_block_invoke                                                   0.00% (0/7)         

... (2056 more lines truncated)

📊 **Full coverage report available in workflow artifacts**

@schuyler
Copy link
Copy Markdown
Owner Author

@benel please have a look at this PR and confirm that it's correct? Thank you!

@schuyler schuyler merged commit 1f55952 into main Nov 24, 2025
3 checks passed
@schuyler schuyler deleted the claude/fix-french-localization-107-01QA4RbG7T4dT1jH7ARJjDJs branch November 24, 2025 00:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants