15 Apr 2026
Planet Mozilla
Mozilla Localization (L10N): Localizer Spotlight: Baurzhan
About you
My name is Baurzhan Muftakhidinov. I'm from Kazakhstan. I speak Kazakh, Russian, English and I have been contributing to Mozilla localization for more than 18 years.
From Linux Curiosity to Mozilla Localization
Q: How did you get involved in localization, and what drew you to Mozilla?
A: I came to Mozilla through Linux during my student years. I became interested in Linux at university, and very quickly I noticed how closely the open source world was connected: where there was Linux, Firefox was usually nearby.
When installing Linux distributions, one of the first things I noticed was language support. Many languages were available, but Kazakh was often missing or only partially supported. That made me ask a simple question: why is that, and what can be done about it?
Through Ubuntu's CD distribution program, I discovered Launchpad and began translating Firefox there. Around the same time, through a local Linux forum, I connected with Timur Timirkhanov, who already had experience with Mozilla localization. He helped me understand Mozilla's processes, pointed me to packages that needed translation, and opened a locale registration ticket for Kazakh in Bugzilla.
Soon after, Dauren Sarsenov joined, and in the beginning it was mainly the two of us working on Firefox. When Kazakh first appeared in a Firefox beta in spring 2009, we were extremely proud. It felt like a real milestone - not just translating isolated strings, but seeing a major global product appear in Kazakh.
For me, that was bigger than one browser. At the time, we were dreaming about a fully usable open source desktop in Kazakh, and Mozilla localization became one important part of that larger goal. What started as curiosity became a long-term commitment: making technology more accessible in Kazakh and proving that our language belongs in modern software.
Q: Which Mozilla products are closest to you? Do you use them regularly?
A: Firefox is definitely the product closest to me because I use it every day - both desktop and mobile. It never feels like I am translating something distant from my real life. I see the interface, the wording choices, and the practical impact of localization almost daily.
What makes Firefox especially meaningful is that it is both symbolic and practical. Symbolically, it showed that Kazakh could be present in one of the most important pieces of everyday software. Practically, it gave users a browser they could use in their own language. A browser is the gateway to the internet, so localizing Firefox means much more than translating one application.
I also use Thunderbird from time to time and visit MDN quite often. Even when I am not translating, I interact with Mozilla products as a user, so there is always a natural connection between volunteer work and daily habits.
People around me know me through Firefox localization more than through anything else. Very often I am simply "the person who translated Firefox into Kazakh." That says a lot about how visible Firefox has been.
Promoting Kazakh Localization and Building an Ecosystem
Q: How have you promoted Kazakh-localized software?
A: Most of my promotion work has been grassroots. In earlier years, I shared updates on Linux and open source forums, especially communities already interested in free software. Even when people were not personally interested in contributing, many showed strong support and encouragement. That confirmed that localization mattered beyond just the translation team.
One of my bigger efforts was creating a Debian-based Linux distribution from 2012 to 2015 called Kazsid. I built it partly to test how Kazakh localization worked across multiple applications in a real desktop environment. I included programs that already had Kazakh translations - Firefox, LibreOffice, desktop environments, and other tools - set Kazakh as the default language, and tested how everything worked together.
I shared the builds on forums, and some people downloaded and tried them. It was one of the most practical ways I encouraged interest in Linux and localized software.
Later, as translations matured upstream, maintaining a separate distribution was no longer necessary. That was actually a positive sign - users could install standard distributions and get the same localized experience.
Today I post updates on LinkedIn. It helps maintain visibility, even if it does not often bring in new contributors.
Working Independently - and Working Systematically
Q: What does the Kazakh localization community look like today?
A: At the moment, I am effectively the only active contributor across several major open source localization efforts in Kazakh, including Mozilla products, LibreOffice, GNOME, Xfce, and others.
In the early years, several people made meaningful contributions, but most eventually moved on. Timur helped significantly, especially in the earlier stages and in understanding Mozilla's processes, and I still occasionally consult trusted people when I need a second opinion.
The challenge for smaller languages is not only starting a translation but maintaining it over the long term. From early on, I was not thinking about one application. My goal was broader: to help create a real open source desktop experience in Kazakh. A browser translated into Kazakh is important, but a full ecosystem is even more meaningful. Sustainability is the hardest part.
Q: How do you approach quality when you are the main translator?
A: Direct user feedback is rare. So QA depends largely on my own testing, judgment, and systems.
I test software in real use, especially Firefox. In earlier years, I also used Nightly builds. Before settling on new terminology, I check dictionaries and reference materials. I consult fluent speakers when needed, and sometimes I discuss wording with my wife to see how natural it sounds.
My principle is that translations should feel clear and alive, not mechanically imported. I studied in Kazakh and remember the terms we were actually taught in IT-related subjects, and that background matters to me.
Because of my scripting background, I have written small tools in Python to help verify translations, track terminology, and maintain consistency. QA is not just "reading it once and hoping for the best." It is a combination of linguistic judgment, real usage, consultation, and automated checking.
More recently, I have been exploring how AI can assist localization. By testing translations through tools like the Google Gemini API and guiding terminology carefully, I have been able to close significant translation gaps. For Kazakh, newer models understand context much better than traditional machine translation systems. AI does not replace judgment, but it can make the work faster and more effective.
Professional Background
Q: How does your professional background influence your localization work?
A: My background is partly technical and partly analytical. I studied IT, worked as a Linux system administrator, and later moved into data analysis and GIS.
Those technical skills helped significantly. Automation makes a long-term localization effort much more manageable, especially when one person is doing most of the work.
Localization has strengthened my discipline and consistency. It requires patience and regular effort. Over time, I developed an instinct for terminology and phrasing - whether a term feels natural or artificial in context.
A Few Personal Notes
I have loved reading since I was four years old. My favorite genres are science fiction and popular science. Reading is still how I recharge.
I have lived in several cities in Kazakhstan, so I sometimes joke that I am a true nomad.
My family has always been supportive of my open source work. And when I run into a particularly difficult translation, I can still discuss it with my wife and get a fresh perspective.
15 Apr 2026 10:38pm GMT
Firefox Tooling Announcements: Happy BMO Push Day! (20260415.1)
The following changes have been pushed to bugzilla.mozilla.org:
- Bug 2023761 - [GITHUB] Allow use of individual api keys for pull requests and push comments instead of single share secret
- Bug 2012634 - "Phabricator Revisions" table overflows on X axis on mobile
- Bug 2028222 - Pasting multi-line text after selecting multi-line text does not overwrite, but applies markup for link
- Bug 2029522 - CI workflow uses deprecated docker-compose v1 and actions/checkout@v3
- Bug 2031520 - Missing space in "Throw away my changes, andrevisit bug NNN" message (when marking a bug as a duplicate of a hidden bug)
- Bug 2030581 - REST API: PUT /rest/bug/attachment/{id} does not pass is_markdown when adding comment
- Bug 2018260 - "Fields You Can Search On" is blocking people from making it through quicksearch.html doc
- Bug 2028240 - Cloned security bugs should default to being secure
- Bug 2031007 - When linking a Github pull request to a BMO bug, the attachment filename should contain the repository name in addition to the pull request ID
Discuss these changes in the BMO Matrix Room
1 post - 1 participant
15 Apr 2026 9:29pm GMT
Firefox Nightly: QR Codes, Speed Calculators, Better RAM Usage – These Weeks in Firefox: Issue 199
Highlights
- Thanks to overholt, macOS Nightly now has support for sharing the current tab's URL via QR Code (Right-click tab, Share > Generate QR Code). This is held to Nightly for now.
- Scott Downe fixed an issue where newtab background GIFs could max out RAM while idle in the background by throttling animated background decoding on backgrounded tabs. This fix is going out in Firefox 150.
- Special thanks to volunteer contributor 1justinpeter who just added speed unit conversion support to the AwesomeBar!
- New Tab Sections have been enabled by default in Canada!
Friends of the Firefox team
Resolved bugs (excluding employees)
Volunteers that fixed more than one bug
- Chris Vander Linden
- Itiel
- Justin Peter
- Khalid AlHaddad
- Mauro V [:cheff]
- Sam Johnson
- Sebastian Zartner [:sebo]
New contributors (🌟 = first patch)
- Mohammed Abdullah: screenshot command crops image after 10000px height
- Jocsan: Profile delete page title should enclose profile name in quotes
- 🌟 karan68: [dialog] 'X' icon buttons are missing labels
- Knot False: Replace KeywordUtils use of nsIScriptableUnicodeConverter with Services.textToSubURI.ConvertAndEscape
- 🌟 Pushkar Singh: Remove unused devtools.inspector.remote pref
- 🌟 MUTHUSRIHEMADHARSHINI: Card images do not have an alt attribute
- Sukhmeet[:sukh]: firefox forgets open tabs depending on window close order
- 🌟 Alex Reisner: Create a preference to disable the drag-and-drop method of creating tab groups
- 🌟 torrenceb90: Remove unused devtools.target-switching.server.enabled pref
- 🌟 baris: Button does not programmatically indicate that it opens a dialog (Customize button)
Project Updates
Add-ons / Web Extensions
WebExtensions Framework
- Fixed a structuredClone regression in the MV2 userScripts sandbox, bringing it in line with the fix already applied to content scripts and MV3 userScripts sandboxes, fix applied in Nightly 150 and uplifted to Beta 149 - Bug 2020773
- Fixed a tab crash triggered by calling Document.parseHTMLUnsafe() from a browser extension content script (due to an assertion failure hit because parseHTMLUnsafe was wrongly trying to create a document that belongs to the expanded privileged principal that originated the call). The changes applied is now making sure parseHTMLUnsafe will use the webpage document's principal (and prevent the crash as a side effect of that) - Bug 1912587
- Fixed a regression where the load event on about:blank iframes would not fire when a content script injected a style element (regressed in Firefox 148 as a side effect of the changes applied by Bug 543435, fix landed in Nightly 140 and uplifted to Beta 149 and Release 148) - Bug 2020300
- Thanks to Vincent Villa for promptly investigating and fixing this regression!
WebExtension APIs
- As part of followups related to the work to allow action.openPopup calls without user activation, action.openPopup() will reject the requests when another panel, context menu, doorhanger, or notification is already open in the window - Bug 2022281
- As part of followups to the work in support of the splitView mode support introduced in the tabs API, tabs.move() has been tweaked to correctly return all specified tabs moved in a split view - Bug 2022372
Addon Manager & about:addons
- Fixed a rendering regression where the context menu on about:addons cards would appear with a transparent background at non-default zoom levels - Bug 2006926
- Thanks to Botond Ballo for investigating and fixing this small rendering regression!
DevTools
- Chris Vander Linden moved the SearchInFileBar component to a shared folder in (#2019256, #2020518)
- Chris Vander Linden made a few Netmonitor file use proper private properties (#2021639, #2021640, #2021641, #2021642, #2021643, #2021644, #2021645)
- Mohammed Abdullah refactored screenshot dimension handling to use shared logic from ScreenshotsUtils.sys.mjs (#1942439)
- Lorenz A fixed an issue in the Flexbox Layout pane regarding base size when flex-basis was set from the flex shorthand (#1939289)
- Oriol Brufau [:Oriol] improved one of our object test (#2021445)
- Sebastian Zartner [:sebo] added a new Element-specific pseudo-classes section in the pseudo-class panel and added support for the new :open pseudo class (#2014442)
- Simon Farre [:sfarre] made it so Reporting API requests are now visible in Netmonitor (#2013043)
- Leo McArdle [:leo] fixed the Network request panel so it would show POST data even before the request was finished (#2014623)
- Leo McArdle [:leo] fixed a couple issues with the Inspector Fonts panel inputs (#2013910, #2013904)
- Julian Descottes [:jdescottes] updated the device list in Responsive Device Mode to include recent phones and tablets (#1982802)
WebDriver
- Khalid AlHaddad contributed over the past two weeks by adding a test for correct viewport dimensions on new top-level browsing contexts, improving WebDriver tests with global asyncio markers and a timeout multiplier for a better stability of slow running builds, and introducing a fixture to remove webextensions installed during a test. Thank's a lot!
- James Teh added Marionette-prefixed commands to query extended accessibility properties and traverse the accessibility tree using UUID-identified nodes.
- Jonathan Moss updated the marionette-integration test manifest files so all tests now run as part of the OS integration CI jobs.
- Alexandra Borovova fixed a regression when prompts opened with WebDriver Classic were automatically closed by default when the `moz:debuggerAddress` capability was passed, which is still a common pattern for Selenium.
- Alexandra Borovova fixed the download events that were triggered by the requests with the `Content-Dispostion` header opened in the new tab to be linked to a navigation.
- Alexandra Borovova updated the logic to not send the "log.entryAdded" events for console APIs that don't use the printer (e.g., `console.time` or `console.clear`).
- Henrik Skupin fixed an issue in the browsingContext.locateNodes command where the root element was not returned when using a CSS selector.
- Henrik Skupin simplified the logic for Marionette commands managing window state, size, and position to improve stability.
- Julian Descottes fixed the support of non-utf8 headers for various network module commands.
- Julian Descottes fixed a bug with keepalive requests which could still be sent after setting the network conditions to "offline".
- Julian Descottes fixed a race condition which could lead parallel calls to browsingContext.setViewport to timeout.
Lint, Docs and Workflow
- Mossop has replaced most instances of ContentTask.spawn with SpecialPowers.spawn.
- There is a lint rule to prevent further uses.
- Feel free to help clean up existing uses if you have any.
- https://arewemozsrcyet.com/ is live and in the middle of being moved to a mozilla repo, bugs / comments can go to https://bugzilla.mozilla.org/show_bug.cgi?id=2014746
New Tab Page
- Luca Greco fixed an issue where the new tab page was broken for users who had moved their profile to a new directory. Special shout-out to Scott for driving that one over the line and getting the fix uplifted to Beta!
- baris updated a button so that it indicated that it opens a dialog (Customize button) by adding aria-haspopup="dialog" and focus management so screen readers announce the Personalize dialog correctly.
- Maxx Crawford added the first version of a refined grid system for Nova, introducing column-based container queries and CSS tokens for more consistent responsive New Tab layouts. This is currently off by default.
- Maxx Crawford updated Widgets components to use parent grid columns so cards align to the new Nova grid across breakpoints without layout jumps.
- Mike Conley enabled the pref to communicate with MARS over OHTTP by default so New Tab network calls use OHTTP by default, reducing IP exposure for all channels. This was already enabled on Beta and Release via Nimbus, but this patch is the pref flip that will ride the trains.
- Mike Conley added a train-hoppable asrouter-newtab-message external component for inline messaging to let us update New Tab inline messages via Remote Settings without a full Firefox update. The OMC team will take over building out the actual UI for the new message surface.
- Nathan Barrett landed sections layout support for Nova, to refine section spacing and ordering using the new grid for a cleaner, denser above-the-fold.
- Maxx Crawford fixed "Weather data is not available right now message" begin shown on the Weather widget by correcting gating so the Weather widget fetches and renders data reliably on v150.
- Maxx Crawford resolved an issue where experiments could accidentally override weather preferences set by the user
- Nina Pypchenko [:nina-py] aligned the newtab devtools button to match the Personalize button to improve visual consistency and discoverability of the DevTools toggle.
Search
- Marco worked on replacing ContentTask.spawn in various tests @ 2023131, 2023134
- Dale worked on several TrustPanel UX fixes @ 2017369, 2017376
- Daisuke fixed issue with SwitchTab results with no title @ 2020341
- Moritz worked on several telemetry issues relating to the new search bar 2021927
- Moritz fixed the unified search button having no focus border @ 2023656
- Dao added support for middle clicking to search in the unified search menu @ 2011220
Smart Window
- "Beta" badges 2017667
- Added AI Controls integration, supporting the blocked state (2010599)
- Added more user choice with split memory generation (2017428)
- Added chat search in Firefox View (2009070)
- Follow-up prompts now persist across tab switches (2019696)
- Conversation starter prompts now update with the foregrounded tab (2013657)
- Current tab context is now removable (2018802)
- Keyboard fixes for smartbar input (2019556 2017939 2015090)
- Show sign in button in chat if signed out (2015720)
Storybook/Reusable Components/Acorn Design System
- Tim Giles fixed some issues with panel-list using popover:
- A macOS issue where keyboard events went to the wrong <moz-select>Bug 2017668
- Scrolling now dismisses an open panel-listBug 2018563
- akulyk updated the panel-list variant of moz-select to use role="combobox", improving screen reader semantics and keyboard navigation consistency.
- Dustin Whisman updated the moz- widgets CSS to pass use-design-tokens:
- Dustin Whisman updated some design token names for consistency (Bug 2013342):
- -font-size-heading-* now a font-size variant (was -heading-font-size)
- -card-border-color, -card-box-shadow, -card-box-shadow-hover, -popup-box-shadow, -tab-box-shadow (were nested as variants previously and now are under their component name)
UX Fundamentals
- Added keyboard autofocus to the "Try Again" button in Felt Privacy error pages so users who land on an error page can immediately press enter to retry. (2021447)
- Added keyboard access keys to the three primary error page buttons: G (Go Back), T (Try Again), and P (Proceed to Site). (404501)
- In progress: refactoring net error illustrations into a shared object and adding alt text so assistive technology can read out meaningful descriptions. (2022033)
- In progress: adding improved messaging to the file-not-found error page. (2018850)
- In progress: restoring the error page for Work Offline mode so users see messaging that accurately reflects that they're in Offline mode, not that there's a network problem. (
15 Apr 2026 8:44pm GMT








