Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make language mappings deterministic #241

Merged
merged 1 commit into from
Sep 4, 2024

Commits on Sep 4, 2024

  1. Make language mappings deterministic

    Consider this scenario: Someone has in their config file:
    
    ```ini
    [main]
    lang_map = it: it-IT
    
    [RESOURCE_ID]
    lang_map = it: it_IT
    ```
    
    Before we created a local-to-remote map that looked like this:
    
    ```json
    {"it-IT": "it", "it_IT", "it"}
    ```
    
    And then, to create the remote-to-local map, we reversed it. The problem
    was that, since both values are the same, the key that ended up being
    selected was random, so it could either be:
    
    ```json
    {"it": "it-IT"}
    ```
    
    or
    
    ```json
    {"it": "it_IT"}
    ```
    
    To fix the issue, we now create remote-to-local first, going over the
    global configuration first and the resource-level configuration second
    so that the resource-level will prevail and thus take preference, and
    then we create the local-to-remote by reversing. So,
    
    First, we will consume the global configuration:
    
    ```json
    {"it": "it-IT"}
    ```
    
    Then, as the resource-level configuration is consumed, it will replace
    the old key:
    
    ```json
    {"it": "it_IT"}
    ```
    
    And then, the local-to-remote will end up being:
    
    ```json
    {"it_IT": "it"}
    ```
    
    This is the deterministic and the intended behaviour, since
    resource-level configuration should take precedence.
    kbairak committed Sep 4, 2024
    Configuration menu
    Copy the full SHA
    847d44a View commit details
    Browse the repository at this point in the history