# Localization/Bug Management
### General workflows

Bug management typically comes in a bug tracking system such as Pivotal or Jira. Typically the system will be accessible by all stakeholders, including project managers, linguists, QC teams and engineers. This way, bugs can be monitored from time of being reported to the time they are verified as fixed and closed by all parties. This promotes an agile bug management system that can result in faster fixes.
A typically bug management process could be as follows:
* A new language is launched of an already-existing webpage or product
* During QC, if an error is found, they can broadly be categorized into one of two types: Linguistic or Functional
* A functional issue means that something is affecting the interface of the page in some way. For example, the Arabic version of a site has right to left issues where the Arabic is incorrectly displayed.
* A linguistic issue could range from minor (preferential change or spelling issue) to major (mistranslation).
* An issue is logged in the bug tracking system of choice. If it is a functional error, an engineer could be tagged to make the fix. If it is a linguistic issue, the language specialist or vendor for the language would be notified and the change would be made to the translation memory.
* After the fix goes live on the site during the next release, the fix is verified by the creator of the bug and is resolved. If the fix was not resolved, then it can stay open.

### Bug management systems

There are several bug management systems available, such as:
* Jira
* Pivotal
* Trello
* Basecamp
* Asana
* GitHub
These systems can range from more technical/engineer focused to less, and could even be used for general project management in some cases.

### Bug triage

Bug triaging is the process of reviewing bugs to prioritize which bugs need to be resolved or fixed before a localization project release. Bugs are triaged because bugs exist in any software development project. It is crucial that bugs be prioritized because there is not enough time or money to fix all of the bugs. Bug fixes can also be risks because of the possibility that the fixes could spawn unforeseen issues. The main teams that are involved in the bug triage process are localization project managers, engineering/development teams, and testing teams. These groups all participate in routine meetings to make decisions to address each bug appropriately. The first step in the triage process is to review each bug. Each bug must be evaluated to ensure there is enough information to reproduce the bug, resolve the bug, and test the bug fix. The three main types of bugs are issues that affect functionality, user interface (UI), and language. The next step would be to quantify the bug according to priority and severity. This categorization could be done in a bug bar, which is a set of criteria that a bug must meet to be fixed at a certain stage in the project. For example, bugs that affect functionality will have a higher priority level, while minor issues may not be fixed if there is not enough resources or time before the release. Once these steps are complete, the teams must decide which bugs will be resolved or fixed, and then assign the bugs that need to be fixed to the corresponding team/member. Resolving a bug and fixing a bug do not have the same meaning. Resolving a bug could refer to simply deciding not to fix a bug because of low priority, whereas fixing a bug actually means finding a solution to the issue and implementing it. The teams should hold periodic meetings throughout the project cycle to re-prioritize bugs based on the stage of the product.

### Bug fixing

As mentioned in the previous section about general workflows in bug testing, once it is decided to fix a bug one must also decide who to assign the bug to. Depending on what must be fixed, either the engineering team or localization team will be assigned the bug to fix.
Bugs that typically require code to fix or do not necessarily require language skills would be handled by the engineering team. This includes bugs in any software or code as well as user interface issues that may affect usability or aesthetic quality or even functionality.
Linguistic issues would be assigned to the localization team to fix. This includes any issues in language, typography, grammar, and terminology.
In order to not tamper with any code, localizers are generally instructed not to fix anything that involves code. There may be occasions where a bug may seem easy to fix if a localizer knows what to do, such as a simple truncation or change of a hotkey, but the general guideline is that if code is involved, it should be up to the engineering team to fix. This would prevent any accidental tampering with the code which may potentially have a larger consequence on the whole project.