Author: Fakhri Azzouz

  • Documenting my i10n FOSS contribution and beyond

    Documenting my i10n FOSS contribution and beyond

    I quite happy that I grew from a translation editor and PTE to Arabic GTE and language manager in the WordPress ecosystem. I have been working hard as a translation contributor for the Arabic locale for around 1 year. When I applied the Arabic language team was semi-dormant, nearly all my l10n contributions were not validated, fortunately my request to be a GTE was accepted.

    I am enjoying the experience as I have in fact been happy to see that some managers whether in the polyglot team or core-test team are particularly active and helpful. They are responsive and even get in touch with me during the weekend, they rekindled my enthusiasm for FOSS and WordPress. These managers are also mentors and guiding me towards a more impactful contributions.

    How I became a GTE

    First of all I take my FOSS contribution seriously, even though it is volunteer work, I offer the best work possible and I keep fine tuning my l10n process.

    I have been building and maintaining a glossary for WordPress terminology. Moreover, improved my workflow using AI as well. This sped up my l10n work.

    You can see my GTE request in the following link here

    And my simple tip to speed up l10n task on WordPress.

    Working on automation and scripting


    I studied and working on regex and grep for this purpose.

    This basic command finds all uses of WordPress translation functions, to find any i18n issue:

    grep -r "__|_e|_x|_ex|_n|_nx" . --include=*.php --exclude-dir={vendor,node_modules,.git}
    

    This essential command detects hardcoded strings output via echo that should likely be translatable:

    grep -rn "echo\s['\"][^'\";][a-zA-Z]" . --include=*.php --exclude-dir={vendor,node_modules,.git} > i18n_issues.txt
    


    This will create a .txt file with potential i18n issues with the name of the file and line of the hardcoded strings. It will display the lines of the detected potential issues.

    Using VScode task

    First we should change this:

    grep -rn "echo\s['\"][^'\";][a-zA-Z]" . --include=*.php --exclude-dir={vendor,node_modules,.git} > i18n_issues.txt
    

    to this:

    grep -rn \"echo\s['\\"][^'\\";][a-zA-Z]\" . --include=*.php --exclude-dir=vendor --exclude-dir=node_modules --exclude-dir=.git > i18nvs_issues.txt
    

    As:
    You must escape the inner double quotes with backslashes so JSON treats them as part of the command, not the end of the command.

    However, the “Best Practice” Fix (Using Args)
    VS Code tasks work best when you separate the command from its arguments. This prevents “Quote Hell” and is much more reliable across different operating systems.

    {
        "version": "2.0.0",
        "tasks": [
            {
                "label": "Audit i18n",
                "type": "shell",
                "command": "grep",
                "args": [
                    "-rn",
                    "\"echo\\\\s*['\\\"][^'\\\";]*[a-zA-Z]\"",
                    ".",
                    "--include=*.php",
                    "--exclude-dir=vendor",
                    "--exclude-dir=node_modules",
                    "--exclude-dir=.git",
                    "|",
                    "tee",
                    "i18vsc02_issues.txt"
                ],
                "presentation": {
                    "reveal": "always",
                    "panel": "new"
                },
                "problemMatcher": []
            }
        ]
    }
    
    


    We could get deeper with automation adding the following:

    wp i18n make-pot []
    

    This commands scans the project files (.php, .js etc) for translatable strings and generate a .pot file.

    The PHP linting command:

    find -name '*.php' -type f -exec -l '{}' \;
    

    As used in wpvip an Automattic project.

    A PHP online book


    As recommended by a wp core-test team manager I read PHP: the right way online book. It is not a a long ebook, it is 100% free and always updated.

    I use koofr browser extension to save important text, even take screenshots and revise and check later. This extension is useful to bookmark your progress in you are reading a long text or a book as mentioned above.

    WordPress courses

    Just less than 2 months ago I discovered there are free online WP courses on an official WP subdomain. I was glad and I finished 3 courses and working on finishing a 4th course.

    The courses I finish get displayed on my profile as you can see here:

    Conclusion

    Learning essential grep, bash, php, and taking WordPress courses is a fun and a nurturing experience. However, when contributing to core-test I understood that what I lack the most is a knowledge about the architecture of WP and deep technical knowledge related to WP.

    WP is made of many projects and components, there are even components maintainer who have specialized knowledge and skills about one or two components only.

    As they say start small grow big, I will keep doing what I started and get more knowledge about FSE such as block, patterns… reading official documentations and experimenting.



  • Career Development and Personal Growth: 2025–2026

    Career Development and Personal Growth: 2025–2026

    A quick summary of work highlights 2025:


    – Contributed regularly to WordPress test-core

    – Contributed regularly to l10n from English to Arabic and a couple of projects from English to French

    – Streamlined and optimized my l10n work especially when related to software. Learned basic SED and Gettext.

    – Earned a few extra WordPress badges
    – Obtained three l10n certificates from Lokalise

    2026 career objectives:

    – Continue my contributions to WordPress l10n & test core

    – Finish WordPress lessons, at https://learn.wordpress.org/, that aligns with my objectives

    – Learn and study more PHP, JS and WordPress codebase

    – Advance my SED, gettext skills and learn new tools.

    – Advance my Bash skills to create scripts that automate Gnu/Linux OS maintenance and back ups

    Personal projects for 2026

    – Keep using the bicycle as my means of transportation and to exercise as well

    – Doing regular strengthening exercises to become fitter

    – Learn more healthy recipes

    – Go to the beach more often to fish, and learn more fishing techniques

    – Read non-fiction ebooks on the weekends

    – Blog more often

    Conclusion

    The 2026 goals represent the continuation of my past projects, which require maintenance and upgrades.

    It is worth noting that I’m committed to strategic planning with the agility to pivot as needed these goals provide direction but allow for course correction.


    Bonus: Early Morning Fishing Adventures Image.
    One of my favorite ways to spend time outdoors—early morning fishing trips. These quiet moments before sunrise are where I practice patience and learn new fishing techniques.

    Picture taken at sunrise, November 2025

  • Late 2025 Update: My Localization Work and Key Tips for Aspiring Linguists

    Late 2025 Update: My Localization Work and Key Tips for Aspiring Linguists

    Starting from January 2025, I contributed regularly to many FOSS projects as a localization specialist.

    I translated the whole AppFlowy app into Arabic and reported many language issues on GitHub related to its documentation.

    Besides, I worked extensively on many WordPress plugins and themes. I enjoyed it and gained more hands-on experience by becoming faster and more precise.


    Main tips to build a successful career as a linguist/l10n specialist

    I already work with multiple translation companies in life sciences as a master reviewer and language validator consultant, which is considered a respectable position in the language industry. In theory, it is not that complicated to become top-rated and be a master reviewer or an LVC (language validator consultant).

    • In your free time, read books and articles about your niche as a language professional.
    • Listen to podcasts in the languages you use.
    • When expanding your knowledge in your free time, look up technical words you encounter. This is essential if you want to be efficient when you do paid work. As they say, “If you fail to prepare, prepare to fail.”
    • Review your work multiple times even if it takes 20–30% more time. This will help you find patterns in your common inaccuracies; as a consequence, you will do a better job in the future and become faster.
    • Write comments and take notes when working on a language project. Try to go the extra mile; I even review the English source text for typos and punctuation issues and report them to the project manager or direct client.
    • Even if some projects are financially very rewarding, but you do not have time to deliver high-quality work, do not accept the job. You will hurt your client, damage your reputation, and may even be blacklisted. Always remember that clients pay you to help them deliver great work, so you should care about their success.
    • Be responsive and answer quickly to email requests—preferably within 20 minutes. If you are out of the office, be sure to have a 4G or 5G connection on your smartphone and check email or Slack notifications.
    • Use a timer to measure how much time is needed for each type of project. Assess the complexity of potential projects by scanning the documents and seeing how many complicated words appear per page. These difficult words will require extra time to translate accurately. If you keep doing this, after a couple of years you will know with great precision the time needed for each project.

    Other possibilities for growth as a linguist

    Take your time to write a detailed LinkedIn profile and create a short video to introduce yourself, as visitors often find it easier to watch a 1–2 minute video.

    Have a professional website and email. Avoid using Gmail, Yahoo, or Hotmail addresses, and take your time to use online tools to build a respectable email signature.

    Avoid having a Facebook account that could hurt your reputation as a freelance translator/linguist. In fact, most recruiters do a quick internet search and check your social media profiles to get an idea about who you are.

    Finally, it is worth noting that deliberate practice is key if you want to be more efficient, gain experience, and make more money.

    I mean, when you do volunteer or paid work, always think:

    • How can I make fewer mistakes and be more accurate?
    • Are there other software tools I can use?
    • How can I grow as a faster freelancer and be more accurate?
    • How can I advance my research skills?
    • How can I find more clients?
    • Can I add another specialism?
    • Are there tools that make generating and organizing invoices faster and hassle-free? (I personally use WaveApps.)
    • In my free time, is it a good idea to learn the basics of open-source, free CAT tools like OmegaT, for example? A one- to two-hour basic training on OmegaT may land you a USD 1,000 project and help you acquire new clients with recurring projects. Moreover, keep your professional profile on your résumé, LinkedIn, or website updated with the new tools or skills you learn, as some clients will only contact you if they are sure you know OmegaT. In short, if you learned how to use OmegaT but did not update your profile, it is self-sabotage.

    Let me know if you found ideas that were helpful in this blog post, you can also share your tips with us on a comment

  • Behind the Scenes: Localizing AppFlowy to Arabic and Perfecting Its Documentation

    Why I Chose to Contribute to AppFlowy: Localization, and Documentation Review

    Among the many open-source projects available, I selected AppFlowy for my contributions—specifically, translating its content from English to Arabic and reviewing its documentation. My decision was based on several key factors:

    1. Open-Source Alternative to Notion: AppFlowy provides a powerful, privacy-focused alternative to Notion.
    2. Personal Knowledge Management: As someone well-versed in Personal Knowledge Management (PKM) and a lifelong learner I attest it serves as an effective tool for building a “second brain” to organize information.
    3. Technology Stack: Built with Dart, Flutter, and Rust, it aligns with modern development practices.
    4. Growing Popularity: The project is gaining traction in the productivity space.
    5. Accessible Team: The AppFlowy team is relatively small, making collaboration straightforward via GitHub and Discord. I’ve even had the opportunity to interact directly with one of the co-founders multiple times.

    Localization Work for AppFlowy

    For these reasons, I dedicated 25 hours to localizing AppFlowy into Arabic, completing the translation of all UI strings. Now, maintaining the translation requires only 15 minutes per week to update new strings as they’re added.

    To ensure consistency, I maintained a glossary throughout the localization process. However, since localization is an ongoing effort, I’ve implemented a monthly review cycle to refine translations and address any inconsistencies.

    Documentation Proofreading and Review

    As both a linguist and a tech enthusiast, I understand the critical role documentation plays in a project’s success. To ensure accuracy in AppFlowy’s documentation, I employ a structured review process using the following tools and techniques:

    • GitHub: Download the entire documentation repository.
    • Bash Script: Merge all Markdown files into a single document for streamlined review:
       find . -type f -name "*.md" -exec cat {} >> mergedfiles.md \;
    
    1. find: Recursively searches directories.
    2. -type f -name "*.md": Targets only Markdown files.
    3. -exec cat {} >> mergedfiles.md: Combines all files into mergedfiles.md.
    • Grammarly: Initial grammar and spelling checks.
    • AI Tools: Cross-validation using multiple AI models to ensure semantic accuracy and general language consistency.
    • Manual Review: Final refinement before submitting GitHub issues for corrections.

    Limitations of Grammarly and the Role of AI

    While Grammarly is useful for catching grammatical errors, it occasionally misses semantic inaccuracies. For example, in this GitHub issue, I identified an error that Grammarly overlooked but AI tools detected. Moving forward, I plan to rely more on AI-powered review to improve precision, supplementing Grammarly’s output with deeper contextual analysis.

    This hybrid approach—combining automated tools with manual oversight—ensures the highest quality in AppFlowy’s documentation while optimizing efficiency.

    The following is an example of an AI prompt that provides structure to your review:

    Is there any language or grammar issue on the attached file, suggest edits & improvements in a list with a original vs improved version, give a title to each inaccuracy you find.

    The output is something like:

    1. Idiom Error: “tits and bits”

    • Original: “Using these tits and bits you can combine and create your own perfect workspace.”
    • Improved: “Using these bits and pieces you can combine and create your own perfect workspace.”

    2. Word Choice: “workplace” vs “workspace”

    • Original: “While having all these features is excellent, creating your ideal workplace from scratch every time can be cumbersome.”
    • Improved: “While having all these features is excellent, creating your ideal workspace from scratch every time can be cumbersome.”

    Conclusion

    Contributing to AppFlowy has been a rewarding intersection of linguistics, technology, and open-source collaboration. By localizing the app into Arabic and refining its documentation through a hybrid approach—leveraging both automated tools and manual review—I’ve helped make the project more accessible while ensuring technical accuracy. Moving forward, I aim to further optimize the process by integrating advanced AI review techniques, minimizing human oversight gaps, and supporting AppFlowy’s global growth.

  • My Journey in Technical Translations, Localization, and Open-Source Contributions

    Introduction

    As someone passionate about technical translations, I have always been drawn to two fields: life sciences and technology. While both areas interest me, technology has become my primary focus due to its accessibility and the numerous opportunities it offers. Within the realm of technology, I have developed a strong interest in localization and internationalization, which enable people from diverse linguistic and cultural backgrounds to access and engage with technology. I believe that localization and internationalization are essential components of creating inclusive and user-friendly technology.

    Getting Started with Coding and Open-Source Contributions

    In 2017, I began contributing to free and open-source software (FOSS) projects as a translator. My initial projects included translating WordPress themes and plugins, as well as the VLC media player. This experience led to my recruitment by a French company as an Arabic software localization specialist. Although my contributions eventually became sponsored, I continued to work on various projects in my free time. Contributing to FOSS projects has not only helped me develop my technical skills but also given me the opportunity to connect with other developers and enthusiasts from around the world.

    Personal Projects and Learning Experiences

    In addition to my professional work, I have been investing time in learning Japanese and reading non-fiction books. I have also been working on improving my software engineering skills, with a focus on creating mobile apps and WordPress themes. One of my personal projects involved building a Flutter app, which taught me a great deal about practical coding and debugging. Although I faced numerous challenges and setbacks during the development process, I was able to gain valuable insights into the app development process. After investing over 250 hours in coding and debugging, I was able to fix most of the errors, but I still encountered a runtime error. Despite this setback, I was able to learn more about debugging and troubleshooting, which has been invaluable in my future projects.

    Revisiting FOSS Contributions

    Recently, I received emails from WordPress reminding me to update my profile and highlight my contributions. This prompted me to re-evaluate the importance of FOSS contributions and how they can enhance my skills as a localization engineer. To further develop my expertise, I obtained three new certificates from Lokalise related to software localization. These certificates have given me a deeper understanding of the localization process and have equipped me with the skills necessary to tackle complex localization projects.

    Benefits of FOSS Contributions

    Contributing to FOSS projects has numerous benefits. For instance, it allows me to practice my localization skills, gain in-depth knowledge of various software projects, and connect with other enthusiasts and translation managers. Moreover, contributing to FOSS projects enables me to give back to the community and develop my skills in using different tools and technologies. By contributing to FOSS projects, I am not only improving my own skills but also helping to create technology that is more accessible and inclusive.

    WordPress Contributions

    My contributions to WordPress have been particularly rewarding. By translating plugins and themes, I have been able to create a comprehensive glossary of technical terms. This glossary has not only improved my own knowledge but also helped others in the WordPress community. Furthermore, my contributions have been publicly recognized, allowing me to connect with other WordPress enthusiasts and receive feedback on my work. I believe that contributing to WordPress has been an invaluable experience, as it has given me the opportunity to develop my skills, connect with others, and give back to the community.

    H5P Contributions

    One of the most fulfilling projects I have contributed to is H5P, a free and open-source learning management system (LMS). As the translator editor for the Arabic language, I have been able to translate the entire app. This contribution has not only helped me develop my localization skills but also enabled Arabic-speaking users to access and utilize the H5P platform. I believe that contributing to projects like H5P is essential, as it promotes digital inclusivity and bridges the gap between technology and diverse linguistic communities. By contributing to H5P, I have been able to make a positive impact on the lives of others and help create a more inclusive and equitable technological landscape.

    AppFlowy Contributions

    In addition to my work on WordPress and H5P, I have also contributed to AppFlowy, a free and open-source note-taking and knowledge management app. By translating the app and contributing to its documentation, I have been able to develop my skills in using new tools and technologies, such as Weblate and inlang. Moreover, contributing to AppFlowy has allowed me to connect with other business owners, developers and enthusiasts, further expanding my network and knowledge. I am excited to continue contributing to AppFlowy and help create a more inclusive and user-friendly app.

    Conclusion

    In conclusion, my journey in technical translations, localization, and open-source contributions has been incredibly rewarding. Through my experiences, I have been able to acquire practical knowledge, develop my skills, and connect with like-minded individuals. As I continue on this path, I am excited to see where it will lead and how I can further contribute to the FOSS community, promoting digital inclusivity and bridging the gap between technology and diverse linguistic communities. I believe that my experiences have not only helped me grow as a professional but also given me a sense of purpose and fulfillment.

    Future Plans and Goals

    As I move forward, I plan to continue contributing to FOSS projects, expanding my skills and knowledge in localization, internationalization, and software development. I also hope to mentor others who are interested in pursuing careers in technical translations and localization. Furthermore, I aim to create my own open-source projects, leveraging my skills and expertise to create technology that is accessible and inclusive.

    Final Thoughts

    In closing, I would like to emphasize the importance of community involvement and giving back to the FOSS community. By contributing to FOSS projects, we not only improve our own skills and knowledge but also help create technology that is more accessible, inclusive, and equitable. I encourage others to join me on this journey, and together, let’s create a more inclusive and technologically advanced world.