173 lines
		
	
	
	
		
			5.8 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
			
		
		
	
	
			173 lines
		
	
	
	
		
			5.8 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
| # Pleroma: A lightweight social networking server
 | |
| # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
 | |
| # SPDX-License-Identifier: AGPL-3.0-only
 | |
| 
 | |
| defmodule Pleroma.Web.GettextTest do
 | |
|   use ExUnit.Case
 | |
| 
 | |
|   require Pleroma.Web.Gettext
 | |
| 
 | |
|   test "put_locales/1: set the first in the list to Gettext's locale" do
 | |
|     Pleroma.Web.Gettext.put_locales(["zh_Hans", "en_test"])
 | |
| 
 | |
|     assert "zh_Hans" == Gettext.get_locale(Pleroma.Web.Gettext)
 | |
|   end
 | |
| 
 | |
|   test "with_locales/2: reset locale on exit" do
 | |
|     old_first_locale = Gettext.get_locale(Pleroma.Web.Gettext)
 | |
|     old_locales = Pleroma.Web.Gettext.get_locales()
 | |
| 
 | |
|     Pleroma.Web.Gettext.with_locales ["zh_Hans", "en_test"] do
 | |
|       assert "zh_Hans" == Gettext.get_locale(Pleroma.Web.Gettext)
 | |
|       assert ["zh_Hans", "en_test"] == Pleroma.Web.Gettext.get_locales()
 | |
|     end
 | |
| 
 | |
|     assert old_first_locale == Gettext.get_locale(Pleroma.Web.Gettext)
 | |
|     assert old_locales == Pleroma.Web.Gettext.get_locales()
 | |
|   end
 | |
| 
 | |
|   describe "handle_missing_translation/5" do
 | |
|     test "fallback to next locale if some translation is not available" do
 | |
|       Pleroma.Web.Gettext.with_locales ["x_unsupported", "en_test"] do
 | |
|         assert "xxYour account is awaiting approvalxx" ==
 | |
|                  Pleroma.Web.Gettext.dpgettext(
 | |
|                    "static_pages",
 | |
|                    "approval pending email subject",
 | |
|                    "Your account is awaiting approval"
 | |
|                  )
 | |
|       end
 | |
|     end
 | |
| 
 | |
|     test "putting en locale at the front should not make gettext fallback unexpectedly" do
 | |
|       Pleroma.Web.Gettext.with_locales ["en", "en_test"] do
 | |
|         assert "Your account is awaiting approval" ==
 | |
|                  Pleroma.Web.Gettext.dpgettext(
 | |
|                    "static_pages",
 | |
|                    "approval pending email subject",
 | |
|                    "Your account is awaiting approval"
 | |
|                  )
 | |
|       end
 | |
|     end
 | |
| 
 | |
|     test "duplicated locale in list should not result in infinite loops" do
 | |
|       Pleroma.Web.Gettext.with_locales ["x_unsupported", "x_unsupported", "en_test"] do
 | |
|         assert "xxYour account is awaiting approvalxx" ==
 | |
|                  Pleroma.Web.Gettext.dpgettext(
 | |
|                    "static_pages",
 | |
|                    "approval pending email subject",
 | |
|                    "Your account is awaiting approval"
 | |
|                  )
 | |
|       end
 | |
|     end
 | |
| 
 | |
|     test "direct interpolation" do
 | |
|       Pleroma.Web.Gettext.with_locales ["en_test"] do
 | |
|         assert "xxYour digest from some instancexx" ==
 | |
|                  Pleroma.Web.Gettext.dpgettext(
 | |
|                    "static_pages",
 | |
|                    "digest email subject",
 | |
|                    "Your digest from %{instance_name}",
 | |
|                    instance_name: "some instance"
 | |
|                  )
 | |
|       end
 | |
|     end
 | |
| 
 | |
|     test "fallback with interpolation" do
 | |
|       Pleroma.Web.Gettext.with_locales ["x_unsupported", "en_test"] do
 | |
|         assert "xxYour digest from some instancexx" ==
 | |
|                  Pleroma.Web.Gettext.dpgettext(
 | |
|                    "static_pages",
 | |
|                    "digest email subject",
 | |
|                    "Your digest from %{instance_name}",
 | |
|                    instance_name: "some instance"
 | |
|                  )
 | |
|       end
 | |
|     end
 | |
| 
 | |
|     test "fallback to msgid" do
 | |
|       Pleroma.Web.Gettext.with_locales ["x_unsupported"] do
 | |
|         assert "Your digest from some instance" ==
 | |
|                  Pleroma.Web.Gettext.dpgettext(
 | |
|                    "static_pages",
 | |
|                    "digest email subject",
 | |
|                    "Your digest from %{instance_name}",
 | |
|                    instance_name: "some instance"
 | |
|                  )
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   describe "handle_missing_plural_translation/7" do
 | |
|     test "direct interpolation" do
 | |
|       Pleroma.Web.Gettext.with_locales ["en_test"] do
 | |
|         assert "xx1 New Followerxx" ==
 | |
|                  Pleroma.Web.Gettext.dpngettext(
 | |
|                    "static_pages",
 | |
|                    "new followers count header",
 | |
|                    "%{count} New Follower",
 | |
|                    "%{count} New Followers",
 | |
|                    1,
 | |
|                    count: 1
 | |
|                  )
 | |
| 
 | |
|         assert "xx5 New Followersxx" ==
 | |
|                  Pleroma.Web.Gettext.dpngettext(
 | |
|                    "static_pages",
 | |
|                    "new followers count header",
 | |
|                    "%{count} New Follower",
 | |
|                    "%{count} New Followers",
 | |
|                    5,
 | |
|                    count: 5
 | |
|                  )
 | |
|       end
 | |
|     end
 | |
| 
 | |
|     test "fallback with interpolation" do
 | |
|       Pleroma.Web.Gettext.with_locales ["x_unsupported", "en_test"] do
 | |
|         assert "xx1 New Followerxx" ==
 | |
|                  Pleroma.Web.Gettext.dpngettext(
 | |
|                    "static_pages",
 | |
|                    "new followers count header",
 | |
|                    "%{count} New Follower",
 | |
|                    "%{count} New Followers",
 | |
|                    1,
 | |
|                    count: 1
 | |
|                  )
 | |
| 
 | |
|         assert "xx5 New Followersxx" ==
 | |
|                  Pleroma.Web.Gettext.dpngettext(
 | |
|                    "static_pages",
 | |
|                    "new followers count header",
 | |
|                    "%{count} New Follower",
 | |
|                    "%{count} New Followers",
 | |
|                    5,
 | |
|                    count: 5
 | |
|                  )
 | |
|       end
 | |
|     end
 | |
| 
 | |
|     test "fallback to msgid" do
 | |
|       Pleroma.Web.Gettext.with_locales ["x_unsupported"] do
 | |
|         assert "1 New Follower" ==
 | |
|                  Pleroma.Web.Gettext.dpngettext(
 | |
|                    "static_pages",
 | |
|                    "new followers count header",
 | |
|                    "%{count} New Follower",
 | |
|                    "%{count} New Followers",
 | |
|                    1,
 | |
|                    count: 1
 | |
|                  )
 | |
| 
 | |
|         assert "5 New Followers" ==
 | |
|                  Pleroma.Web.Gettext.dpngettext(
 | |
|                    "static_pages",
 | |
|                    "new followers count header",
 | |
|                    "%{count} New Follower",
 | |
|                    "%{count} New Followers",
 | |
|                    5,
 | |
|                    count: 5
 | |
|                  )
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| end
 | 
